Skip to content

Plugin API v1.2: design plan (closes #112, #113 design phase)#114

Merged
thetechjon merged 1 commit into
devfrom
docs/plugin-api-v1.2-plan
Jun 6, 2026
Merged

Plugin API v1.2: design plan (closes #112, #113 design phase)#114
thetechjon merged 1 commit into
devfrom
docs/plugin-api-v1.2-plan

Conversation

@thetechjon
Copy link
Copy Markdown
Collaborator

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

PR Title Depends on
A VNode set extension (button, input, list, link, radio, svg, box) + sanitization + tests none
B Fullscreen view surface + lifecycle + tests A
C vault.read.all capability (getAllNotes, getNote, stream) + permission line + manifest preview none
D vault.write capability (createNote, updateNote, deleteNote, createFolder) + permission line + destructive-permission bullet none
E fs.openDirectory capability + showDirectoryPicker + webkitdirectory fallback + tests none
F vault.events (onVaultChange / onNoteSaved / onActiveNoteChange) + 250ms debounce + subscription cleanup none

Parallelism: 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 to onVaultChange, onNoteSaved, onActiveNoteChange with 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

Test plan

  • Spot-check the plan doc renders cleanly on GitHub (tables, fenced code blocks, headings)
  • Confirm no implementation code changes landed (PR is docs-only)
  • CI green (no app changes; format / typecheck unaffected)
  • Implementation subagents reference this doc by section number when opening PRs A through F

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.
@thetechjon thetechjon merged commit c417e39 into dev Jun 6, 2026
3 checks 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