Skip to content

Sync polish round 3: conditional removes, settlement atomicity, mobile ribbon, large-vault responsiveness - #22

Merged
callumalpass merged 34 commits into
mainfrom
integration/polish-3
Oct 1, 2026
Merged

callumalpass merged 34 commits into
mainfrom
integration/polish-3

Conversation

@callumalpass

Copy link
Copy Markdown
Collaborator

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

Integration resolutions:

  • ObsidianMirrorFileSystem.remove keeps reliability's expected-content fence and uses merge's cached entry lookup.

  • The two independent quadratic-copy fixes in BinaryPartReader keep perf's version, which also releases the exhausted buffer. Both regression tests are kept.

  • Duplicate Obsidian mock classes added by two agents are reduced to one set.

  • Retire connections under the same lease that protects SDK mirror operations

  • Coordinate mirror leases across renderer windows with Web Locks

  • Prove tiny probe summaries see writes from other state adapters

  • Bind hosted-deletion conflict resolution to the inspected local bytes

  • Expose pending sync on the mobile ribbon when no status bar is available

  • Pass inspected bytes through managed-file removal before trashing

  • Reuse owned chunk tails instead of copying them for each upload part

  • Rebase debounce and safety-net timestamps when the wall clock moves backwards

  • Report unavailable diagnostics clipboard access without losing keyboard focus

  • Read a tiny atomic checkpoint summary for background change probes

  • Expose sync problems in workspace navigation when the status bar is unavailable

  • Prove mobile late receipts, long freezes and suspended blob streams recover safely

  • Enforce elapsed request deadlines when mobile timers resume late

  • Keep the status bar paused when automatic sync is deliberately stopped

  • Normalize sync migration markers and honor only boolean auto-sync choices

  • Let an explicit pause suppress polling despite a previous offline problem

  • Schedule sync and invalidate descendants for folder-only vault events

  • Resolve proven physical path aliases without overwriting colliding files

  • Avoid reserializing intact large history logs at startup

  • Carry SDK binary preflight expectations into conditional materialization

  • Treat a removed conflict copy source as a changed review, not a sync defect

  • Bound portable glob matching instead of recursively exploding on wildcards

  • Keep excluded scopes and file-issue actions readable in narrow sync panes

  • Avoid quadratic attachment tail copies during mobile multipart uploads

  • Reopen IndexedDB connections closed while mobile Obsidian was suspended

  • Exercise restored destination state in the background badge focus test

  • Name deletions in conflict choices and never copy an absent local version

  • Restore the requested pane before scanning on workspace open

Validation:

  • Clean npm ci: the multi-agent SDK patch applies.
  • npm test: 383 pass, plus 10 lossless round trips.
  • npm run lint and npm run check:mobile pass.

@callumalpass
callumalpass merged commit c1ccbb8 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