Skip to content

iCloud sync of the Library through CloudKit (phase 2, ADR-0017) - #71

Open
ChaliceForAuri wants to merge 1 commit into
practicefrom
icloud-sync
Open

ChaliceForAuri wants to merge 1 commit into
practicefrom
icloud-sync

Conversation

@ChaliceForAuri

Copy link
Copy Markdown
Owner

Stacked on #70. Phase 2's second half: the Library through the user's own iCloud.

TimbreCloud

CKSyncEngine over one custom zone of the private database. Three record types (ADR-0017): Event, immutable and saved once, named by the event's id; Entry, replaced whole on edit, later edited wins; Profile, one record. The Library's own merge does the merging; a server-changed conflict takes the server's copy, merges, and sends ours again over its system fields. Deletions are forgot events, never deleted records. A state file beside the Library keeps the engine's serialization and what the server has; nothing in it is a word.

Surfaces

Off by default everywhere. Mac: Settings › Library › iCloud, with status, Sync Now and the Advanced Data Protection link. iPhone: You › iCloud. Watch: a toggle. The iCloud entitlements (iCloud.dev.hugopretorius.Timbre, CloudKit) join all three apps; a build without a team runs with the toggle off.

The claim

GDR-0010 said the headline changes when sync ships. It does: "Dictation that never leaves your devices", with the sync explained beside it; the FAQ and /network say what moves, by whom, and that dictation never does.

Verified

  • TimbreCloud: 6 tests, offline: every record type round-trips through CKRecord; system fields round-trip; the state persists.
  • The Mac app, the companion and the site build; lint clean; sync:docs regenerated.
  • Not verified here: the engine against a real container. That needs your Apple ID and the container to exist in your developer account, which Xcode's automatic signing registers on the first signed build. First item for the joint test: teach a word on one Mac, see it on the other, nettop -p Timbre empty throughout.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
timbre Ignored Ignored Preview Oct 21, 2026 8:59pm UTC

Request Review

…-0017)

TimbreCloud: CKSyncEngine over one custom zone of the private database.
Events are immutable records named by their id and saved once; entries
are replaced whole on edit with the later edit winning; the profile is
one record; the Library's own merge does the merging, and a server-changed
conflict takes the server's copy, merges, and sends again over its system
fields. A small state file beside the Library remembers the engine's
state and what the server has; nothing in it is a word. ADR-0017 records
the schema, which can only ever grow.

Off by default on every device: Settings › Library on the Mac, You on
the iPhone, a toggle on the Watch, each with the copy GDR-0010 asked for.
The binary still makes no request; the iCloud entitlements join all three
apps. The Library gains several save observers so the card and the sync
both follow it.

The site keeps GDR-0010's promise: the headline becomes "never leaves
your devices", the FAQ and the network page say exactly what moves, by
whom, and that dictation never does.

TimbreCloud: 6 offline tests (every record type round-trips; the state
persists). The two-device proof is the joint test.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant