Skip to content

Sync polish round 2: settlement serialization, history durability, retired-enrollment fencing, keyboard and narrow layouts - #21

Merged
callumalpass merged 44 commits into
mainfrom
integration/polish-2
Oct 1, 2026
Merged

callumalpass merged 44 commits into
mainfrom
integration/polish-2

Conversation

@callumalpass

Copy link
Copy Markdown
Collaborator

Integrates round 2 of the overnight campaign. Every fix comes with a regression test that failed first.

One merge conflict was resolved: SyncHistoryStore.acknowledge (from ux) is rewritten in the serialized, torn-tail-safe style from reliability.

  • Normalize malformed stored sync policies without discarding enrollment identity
  • Dismiss pinned sync notices without erasing their history
  • Prove merged-resolution retries survive checkpoint failure without copies
  • Vary offline convergence seeds and inject quota errors during settlement
  • Exercise seeded insert/delete mutations and exact kept-both YAML round trips
  • Inspect local projection changes immediately when sync settings change
  • Keep consent reasons ahead of roomy actions and an honest review heading
  • Trim identical bulk so small edits in large notes merge without copies
  • Use conditional Vault.process for invalid UTF-8 receive-only repairs
  • Keep long sync paths and recovery actions usable in narrow panes
  • Keep both when the same new field was placed at incompatible positions
  • Contain rejected host operations inside the scheduler retry boundary
  • Persist merged text before clearing its conflict so restarts cannot lose hosted edits
  • Only reserve a text-write echo after the conditional check succeeds
  • Consume each write echo once so immediate user edits still trigger sync
  • Keep conflict-copy evidence visible and history disclosures stable
  • Exercise offline edit convergence and checkpoint quota-failure recovery
  • Retain the conflict when both merge and recovery-copy writes fail
  • Keep full record and type-impact scans out of Sync and Issues
  • Name the destination of deletions and renames in sync reviews
  • Start the first download after connecting without a redundant review
  • Keep failed or unresolved conflict settlements out of up-to-date results
  • Serialize complete conflict settlements with sync and inspection
  • Preserve sync control focus even for quoted file paths
  • Ignore inspections and status responses from retired mirror enrollments
  • Prove rejected, binary, rename and occupied-path conflicts settle losslessly
  • Serialize desktop HTTP headers in their owning process so multipart uploads retain ETags
  • Make workspace tabs keyboard navigable without losing focus
  • Keep chasing pending work after the bounded sync round limit
  • Yield cached record scans so large collections do not block typing
  • Serialize history snapshots and repair torn tails before append
  • Report settings success only after the sync scope is saved
  • Build history ledgers only when their disclosures are open
  • Port SDK conflict-resolution fencing to prevent snapshot-wait edit loss
  • Keep approval reachable and cancellable when restoring sync
  • Refuse queued text writes through a renamed or replaced TFile
  • Allow storage to reopen after a transient IndexedDB failure

Validation: npm test (332 pass, plus 10 lossless round trips), npm run lint, and npm run check:mobile.

@callumalpass
callumalpass merged commit ea8b40a into main Oct 1, 2026
1 check passed
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