89 lines
9.7 KiB
Markdown
89 lines
9.7 KiB
Markdown
# Plugin parity roadmap (ranked, 2026-10-21)
|
||
|
||
Inputs: `inventory.md` (core plugins), `community.md` (top 60 by downloads). Effort S = one agent, under
|
||
a day; M = 2 to 5 tasks; L = a spec of its own. Value = how many of the top-60 users it serves and how much
|
||
of the daily workflow it changes. "Brief" = ready to run in `briefs/`.
|
||
|
||
| Rank | Item | Replaces (downloads) | Effort | Value | Depends on | Brief |
|
||
|---|---|---|---|---|---|---|
|
||
| 1 | **Bases: parser, evaluator, Table, Cards, List, embed** (`bases/spec.md`, tasks 1-19) | Dataview 5.2M, Metadata Menu, make.md, TaskNotes, core Bases | L | very high | index properties (task 9) | `bases/tasks.md` |
|
||
| 2 | **Bases Map view + Maps card** (tasks 8, 12, 20) | Maps, Map View, Leaflet 0.56M | M | high (owner asked) | 1 | `bases/tasks.md` |
|
||
| 3 | Tag rename and merge (`tags.rename`, `tags.merge`) | Tag Wrangler 1.1M | S | high | none | 01 |
|
||
| 4 | Outliner list-item moves (`list` ops in the editor) | Outliner 1.5M | S | high | none | 02 |
|
||
| 5 | Paste URL over a selection | Paste URL 0.5M | S | medium | none | 03 |
|
||
| 6 | `notescraft://` links (open file/heading/line, run command) | Advanced URI 0.7M | S | medium | none | 04 |
|
||
| 7 | Periodic notes (weekly, monthly, quarterly, yearly) | Periodic Notes 0.8M | S | high | none | 05 |
|
||
| 8 | `export.pandoc` (DOCX, ePub, HTML, LaTeX via installed pandoc) | Pandoc 0.56M, Enhancing Export | S | medium | none | 06 |
|
||
| 9 | Property maintenance: rename a key vault-wide, list values | Properties core, Metadata Menu | S | medium | none | 07 |
|
||
| 10 | First wasm plugin + SDK sample: Dice roller (then Citations) | Dice Roller 0.29M, Citations 0.24M | S | proof of ABI | owner step | 08 |
|
||
| 11 | Task index + Tasks view (query by due/status/path, recurrence on check) | Tasks 4.5M, Checklist | M | very high | 1 | after 1 |
|
||
| 12 | Templater subset (`<% %>` on the Bases expression language, prompts, cursor) | Templater 6.0M | M | very high | 1 (expression crate) | after 1 |
|
||
| 13 | Kanban board note (`kanban-plugin: board`), then Bases Kanban view | Kanban 2.8M | M | high | none (own view), Bases for the view | after 1 |
|
||
| 14 | Recent files panel + `go.recent` | Recent Files 1.2M | S | medium | none | - |
|
||
| 15 | Homepage: open a note/base/workspace on start | Homepage 1.4M | S | medium | Bases (for bases) | - |
|
||
| 16 | Icons and banners from properties (`icon`, `color`, `banner`) in Explorer, tabs, note top | Iconize 2.3M, Banners, Pretty Properties | M | high | 1 (shares property cell code) | - |
|
||
| 17 | Importer / Format converter (Notion zip, Evernote ENEX, Bear, HTML, Roam JSON) | Importer 1.8M, core Format converter | L | high (adoption) | none | spec first |
|
||
| 18 | Git remotes and auto-commit timer (shell out to `git`) | Git 3.3M | M | high | none | - |
|
||
| 19 | Slides view (superseded by scoped spec/tasks at rank 41) | Advanced Slides 0.84M, core Slides | L | medium | none | spec first |
|
||
| 20 | Charts block and Calendar heatmap | Charts 0.33M, Heatmap Calendar | M | medium | 1 (summaries) | - |
|
||
| 21 | Mind map diagram kind + "outline as mind map" | Mind Map 0.9M | M | medium | none | - |
|
||
| 22 | Latex Suite snippets for `$..$` | Latex Suite 0.68M | M | medium | none | - |
|
||
| 23 | Spaced repetition (cards, SM-2, review view) | Spaced Repetition 0.62M | L | medium | none | spec first |
|
||
| 24 | Omnisearch gap: index PDF text | Omnisearch 2.0M | M | medium | `pdf` crate text layer | - |
|
||
| 25 | UI-contribution ABI for wasm plugins (panel, view, settings, events) | unlocks community-style plugins | L | strategic | owner decision | spec first |
|
||
| 26 | Smart folders: saved Bases queries as virtual Explorer folders (`smart-folders/`) | Apple Notes smart folders (Bear has saved searches only) | M | high | 1 (`base.query`) | 13 |
|
||
| 27 | Note visual diff and time-machine slider over local snapshots (`version-diff/`, new crate `textdiff`) | File Recovery diff plugins (Snapshot Diff, Time Machine), Google Docs history | M | medium-high | none | 14 |
|
||
| 28 | Media timestamp links `[[rec.mp3#t=04:12]]`, seek on click, copy/insert link (`media-timestamps/`) | Media Extended | S | medium | none | 15 |
|
||
| 29 | Clean paste: HTML (Word, Docs, web) to GFM Markdown (`clean-paste/`, new crate `htmlmd`) | Paste Reformatter, Smart Paste (Obsidian converts basic HTML already) | M | high | none | 16 |
|
||
| 30 | Link bookmark cards from OpenGraph, cached under `.notescraft/cache/web/`, opt-in network (`link-cards/`) | Notion, Capacities, Craft; Obsidian card plugins | M | medium (privacy-gated) | 29 task 1 (tokenizer) | 17 |
|
||
| 31 | Spaced repetition: cards in notes, SM-2, review tab (`spaced-repetition/`, new crate `srs`; replaces row 23) | Spaced Repetition 0.5M (listing 498k), Logseq/RemNote | L | medium | none | 18 |
|
||
|
||
|
||
| 32 | PDF deep annotations, stable links and visual excerpts (`pdf-annotations/`) | PDF annotation workflows; native text capability gated | L | high | existing pdf export + viewer backend; owner backend decision | [19](briefs/19-pdf-annotation-model.md) |
|
||
| 33 | Web clipper: scoped local HTTP capture bridge, local assets and bookmarklet/extension contract (`web-clipper/`) | Official Obsidian Clipper workflow | M | high | existing engine capture/control; external adapter contract | [20](briefs/20-web-capture-envelope.md) |
|
||
| 34 | Per-note and secret-folder encryption **design only** (`note-encryption/`) | Local at-rest lock; distinct from sync E2EE | L | high (privacy) | owner threat/format/key/dependency/security review; no implementation authorized | [21](briefs/21-encryption-threat-model.md) |
|
||
| 35 | Supertags/object types over Bases properties (`object-types/`) | Tana-inspired typed notes; plain frontmatter retained | M | high | 1; owner membership/validation policy | [22](briefs/22-object-type-model.md) |
|
||
| 36 | Synced blocks: editable `![[note#^id]]` source transclusion (`synced-blocks/`) | Notion-style source-owned edits | M | high | existing blocks + embed resolver + Session undo | [23](briefs/23-synced-block-target.md) |
|
||
| 37 | Offline attachment OCR and typed search hits (`attachment-ocr/`) | Joplin-style attachment search | L | high | owner safe Vision/Windows bindings + packaging; 32 text backend optional | [24](briefs/24-ocr-contract.md) |
|
||
| 38 | Global quick-capture hotkey and compact window (`global-quick-capture/`) | Apple Quick Note workflow | M | high | existing note.capture; owner native hotkey dependency/OS scope | [25](briefs/25-quick-capture-model.md) |
|
||
| 39 | Zotero/BibTeX citation picker, local export refresh and optional CSL export (`citations/`) | Academic citation workflow; no bidirectional Zotero sync | M | medium-high | local bibliography; 8 for optional approved Pandoc CSL backend | [26](briefs/26-citation-model.md) |
|
||
| 40 | Opt-in formulas inside Markdown pipe tables (`table-formulas/`) | Small spreadsheet workflow; own syntax, not Advanced Tables compatibility | M | medium | existing blocks/Markdown table ranges | [27](briefs/27-table-formula-model.md) |
|
||
| 41 | Markdown slides and native presentation mode (`markdown-slides/`; replaces row 19) | Obsidian core Slides workflow | M | medium | existing Markdown parser and note renderer | [28](briefs/28-slide-model.md) |
|
||
|
||
## Reasoning
|
||
|
||
- **Bases first, and its pieces are reused**: the expression language is the engine of Templater (12),
|
||
Tasks (11), Charts (20) and the filter bar of the Explorer; the index property store (task 9) is what the
|
||
properties pane, Iconize and Metadata Menu need. Doing Bases once pays four items.
|
||
- **Items 3 to 9 are small, independent, pure-Rust work** that do not touch the Bases files. Eight agents
|
||
can run in parallel on disjoint folders; each ends at a library or engine command with tests, leaving the
|
||
one-line UI hook to the lead (listed in each brief as "NOT in this brief").
|
||
- **Wasm plugin reality**: only item 10 (and Citations) fit the current ABI. Item 25 is the honest price of
|
||
"community-style" plugins: without views and events a plugin cannot be a Kanban or a Map. Do it only if the
|
||
owner wants third parties; first-party features stay in-tree behind core-plugin cards, which ships faster
|
||
and safer.
|
||
- **Skipped on purpose** (see `community.md`): Style Settings, BRAT, Buttons, Shell commands, Commander macros
|
||
(JS or shell execution), Remotely Save (cloud adapters). OCR now has approval-gated design at rank 37; no dependency is approved by this roadmap.
|
||
- **Mismatch to fix in the docs**: SPEC 6.1 still lists Bases, Dataview-style queries and Slides as deferred;
|
||
update it when items 1, 11 and 41 (superseding 19) start.
|
||
|
||
## Network policy reminder
|
||
|
||
Network access remains explicit and opt-in: Maps tiles (2, Bases D13), link cards
|
||
(30, `link-cards/spec.md` D1, setting off by default) and Git remotes (18, user's own remote).
|
||
Web clipper (33) adds an off-by-default **loopback-only** HTTP bridge on the control lifecycle,
|
||
with capture-only credentials; browser adapter fetches assets only after explicit browser permission.
|
||
The app does not scrape source URLs or fetch remote images. Clipboard bookmarklet import works without
|
||
HTTP. Citations (39) refreshes local exports only; Zotero cloud API is a future owner decision.
|
||
OCR (37) and slides (41) add no remote service. Other new fetching needs its own specification and switch.
|
||
|
||
## Gap-research follow-up (ranks 32–41)
|
||
|
||
Each linked spec records verified primary sources, corrections/dropped Gemini claims, acceptance
|
||
criteria, owner questions and researched feature ideas. No research estimate implies approval or
|
||
shipped status. All new rows remain planned. Encryption is a document-only review phase; OCR, PDF
|
||
text extraction and native global shortcuts have explicit platform/dependency gates. These plans
|
||
reuse existing crates; any later new crate requires a revised task owning root `Cargo.toml` and
|
||
`xtask/src/layers.rs` registration before use. Briefs 19–28 are first-task handoffs, not authorization
|
||
to execute implementation during this documentation-only request.
|