Repository navigation
C API v2, v1 data migration 015, v1 removal (DEV-1150 part 3c) - #53
Merged
Merged
Conversation
…n only while positions line up); otherwise the server's list is kept and the local one set aside
… both sides touch overlapping indices, so a shifted diff (a remove plus an insert, or a reorder) can no longer read as agreement; also treat an identical result at a colliding root list as clean, not a conflict
…when both sides changed it and ended up different, since a disjoint-looking edit may really be retargeted at the other side's twin
…ic and checks no element is lost or duplicated at a rebase
…res list conflicts to be whole, and checks element order
… another device supersedes it, and edits made before the delete are kept
…a newer version superseded
…ient had not seen
…lient sends in a fixture the server shares
…as sent, instead of re-uploading forever
…a parked document can still be deleted
…or; a refused upload clears its sent marks
…ently revive an element another device removed
… instead of being re-sent
…or fetches the server copy first, and a newer version supersedes it
…the server copy first
…eeps local edits aside
…at raced another process, reports a newer schema, and refuses a server url with a query
… credentials first, and an unreadable credential file is retried, never read as a sign-out
… it visible and read-only, keeping edited content; a Full list policy merges as Atomic
…n first open, after a backup, keeping unreadable rows aside
…nd rename it, keep an existing backup, and leave a busy backup retryable
…pped queue rows are counted
… CI runs every replicant-client test target
…laim signs in, clear signs out, sign-in status comes from state and the user id
…sed config with named fields, take_string frees on bad_alloc, ABI-mismatch and callback docs
…, so a sign-in in another process is picked up within about 3 s
…every credential halt re-reads the stored credentials every 3 s without redialling refused ones
…r loss after it, so connection events keep their order
… 3 s and dials only a different account; the disabled one is never redialled
…rites .v1-backup-<unix seconds>), and an unreadable kept copy is skipped instead of failing the whole list
…ps the copy; header documents thread binding of register calls, migration-failed recovery, the 0.6 email requirement, recovered_at units and destroy_and_wait during a pump
… requests before and after, so it no longer races the follow-up request
…d again are dialled; a new secret for the same key counts as new credentials
…fter a non-credential halt, and every dial cancels it
…restored over it; concurrent and failed launches add no copies
…ion that failed after it
… first get_state is already Halted/NotEnrolled without them and the start halt is sent once
…g-thread call never disturbs the owner's pump; header states that a destroy must not overlap any other call on its handle
… input before contacting the server, and the header lists every result it returns
…gine check, so the first handle's email signs the engine's joins
… that were renamed
…e 3.46.0, which same-binary code must use and which is not part of the replicant ABI
… every key, type and null case of each JSON result, with RFC 3339 UTC timestamps
…Config.title_pointer (none: no titles), it is part of the shared-engine config, and a launch with a different pointer recomputes every title and the search index
…rom it, and without it the library assigns none
…data dir must pass the same pointer
…ryptable, unparseable) count as signed out, so the engine halts NotEnrolled and its 3 s recheck picks up the next sign-in; other read errors keep retrying
…a torn read, since credential writes are atomic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Puts the v2 engine behind the C API, migrates v1 local data, and removes v1. This is the C API that freezes as ABI 1.0 (library 0.7.0 in 3d).
This branch includes #52 (hardening). Merge #52 first, and this diff shrinks to the 61 commits after it.
What changes
include/replicant.h) and checked against the build. The C++ wrapper isinclude/replicant.hpp.struct_size. Callback typedefs and constants carry theReplicantprefix.catch_unwind.load_credentialsandstore_credentialsare gone.enroll_claimstores the credentials and returns only the user id.clearsigns out.get_user_id.createreads the stored credentials before it returns, so the firstget_stateis correct.ReplicantConfig.title_pointer, a JSON Pointer the app sets. With none set, there are no titles.author_nameis gone; documents carryowner_idandauthor_id.id; other records refer to it asdoc_id. The owner isowner_id.Breaking for consumers
This is a new ABI (1.0). Entonal moves to it in Plan 4. Hosts must:
title_pointer;owner_idinstead ofuser_id.Verification
-Werroras C++17 and C++20 under clang++ and g++-14.Follow-ups: replicant-sync/replicant-server#12 (boundary cleanup); 3d (interop, release link check per platform, 0.7.0 release).