Repository navigation
Sync polish round 3: conditional removes, settlement atomicity, mobile ribbon, large-vault responsiveness - #22
Merged
Merged
Conversation
# Conflicts: # src/connectSync.ts
# Conflicts: # src/connectSync.ts # test/connectSync.transport.test.ts
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.
Integrates round 3 of the overnight campaign. Every fix comes with a regression test that failed first.
Integration resolutions:
ObsidianMirrorFileSystem.removekeeps reliability's expected-content fence and uses merge's cached entry lookup.The two independent quadratic-copy fixes in
BinaryPartReaderkeep 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:
npm ci: the multi-agent SDK patch applies.npm test: 383 pass, plus 10 lossless round trips.npm run lintandnpm run check:mobilepass.