Plugin API v1.2: design plan (closes #112, #113 design phase)#114
Merged
Conversation
Design plan for the v1.2 plugin API increment that unblocks four features currently blocked on the v1.1 plugin surface ceiling: graph view + backlinks (#71), importer (#73), AI chat / RAG (#70), and properties / tables (#72). Adds a wider VNode set (button, input, list, link, radio, svg, box), a fullscreen view surface, and four new capabilities (vault.read.all, vault.write, vault.events, fs.open-directory), each gated by an explicit permission with revocation support. Out of scope kept tight to avoid scope-creep into v1.3 territory. Closes the design phase of gap issues #112 and #113.
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.
Summary
Design plan for plugin API v1.2 — one coordinated lift that unblocks four features currently stuck on the v1.1 surface ceiling: graph view + backlinks (#71), importer (#73), AI chat / RAG (#70), and properties / tables (#72). Rather than ship any of them in core "temporarily," v1.2 widens the VNode set, adds a fullscreen view surface, and adds four permission-gated capabilities so all four features can land as plugins under the existing Worker isolation model. Closes the design phase of gap issues #112 and #113. No code changes in this PR; implementation follows as PRs A through F per section 12 of the plan.
PR breakdown
vault.read.allcapability (getAllNotes, getNote, stream) + permission line + manifest previewvault.writecapability (createNote, updateNote, deleteNote, createFolder) + permission line + destructive-permission bulletfs.openDirectorycapability +showDirectoryPicker+webkitdirectoryfallback + testsvault.events(onVaultChange / onNoteSaved / onActiveNoteChange) + 250ms debounce + subscription cleanupParallelism: PR A is the foundation. PR B requires A (fullscreen renders VNodes from the new set). PRs C, D, E, F are independent of A, B, and each other and can land in any order. Recommended sequence: land A, merge C / D / E / F in parallel, land B last so its tests can assert against the full VNode set.
New permissions
vault.read.all— read every note's body. Required for backlinks, graph derivation, AI RAG context, properties aggregation.vault.write— create, update, soft-delete notes; create folders. Required for importer, AI summary writes, properties UI. Flagged DESTRUCTIVE in the manifest-preview modal.vault.events— subscribe toonVaultChange,onNoteSaved,onActiveNoteChangewith 250ms host-side debounce. Required for graph / backlinks / AI cache invalidation.fs.open-directory— native directory picker, recursive walk, returns entries. Required for Obsidian / Logseq importers. 50k entries / 500 MiB cap.All four are revocable from Settings → Plugins; revocation rejects subsequent capability calls with
'Permission was revoked.'.References
docs/plugins-v1.2-plan.md(878 lines, 13 sections)docs/plugins-plan.md(v1, LOCKED 2026-06-02) plus the v1.1file-save/file-openincrementTest plan