Skip to content

Harden plugin stability and verify live Obsidian behavior - #11

Merged
callumalpass merged 3 commits into
mainfrom
fix/plugin-stability
Sep 13, 2026
Merged

callumalpass merged 3 commits into
mainfrom
fix/plugin-stability

Conversation

@callumalpass

Copy link
Copy Markdown
Collaborator

Summary

Harden the Obsidian plugin's local writes, Connect lifecycle, and persistent sync storage.

  • Make nested quick fixes target exact properties, preserve valid siblings and body bytes, and use atomic Vault processing. Reject ambiguous legacy paths and read-only mirror fixes.
  • Reconcile the interrupted transition between saving a retained mirror profile and clearing a completed adoption checkpoint.
  • Cancel lifecycle operations on unload and fence subsequent mirror content writes.
  • Cap binary sync/adoption at 32 MiB per file because Obsidian uses whole-file buffers.
  • Preserve published binary snapshots when old-stage cleanup fails; reuse and close IndexedDB connections.
  • Exercise production IndexedDB adapters, aborted transactions, interrupted snapshots, restart recovery, binary limits, and quick-fix edge cases.
  • Update the vulnerable transitive fast-uri dependency.

Included baseline

This branch deliberately includes the existing uncommitted beta.91 SDK/sync UX changes from the local main checkout, captured separately in e45d401. The stability fixes were developed and tested on that baseline. The original checkout's uncommitted files have not been modified.

Validation

  • 92 automated tests pass.
  • TypeScript, lint, production build, and mobile bundle checks pass.
  • Production dependency audit: no known vulnerabilities.
  • Live Obsidian 1.13.7 acceptance via the obsidian CLI: actual quick-fix and type-save buttons, stale saves, real IndexedDB across plugin and vault reloads, unload during paused binary materialization, byte round-trip and size limits, and adoption reconciliation with isolated injected metadata.
  • Live acceptance found and fixed quick fixes adding trailing blank lines; the corrected production bundle was retested.
  • No captured Obsidian errors; original test-vault plugin/settings restored and fixtures cleaned up.

Detailed evidence and bundle hashes: docs/stability-acceptance.md.

Remaining limits

This is not real-device mobile acceptance or an end-to-end hosted Connect test. Adoption reconciliation uses isolated injected metadata with actual Obsidian storage, not a live server. OS termination, storage exhaustion, and corruption remain outside the live run.

@callumalpass
callumalpass merged commit e1d1a0a into main Sep 13, 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