# Inventory: Obsidian core plugins vs NotesCraft (2026-10-21) Sources: `docs/CODE-MAP.md`, crate rustdoc, `ROADMAP.md`, the engine command ids (`CommandSpec::new`), `views/`, `panels/`, `views/settings_view/categories.rs` (`core_plugins()` shows only Calendar, Templates, Diagrams, Whiteboard as toggleable cards; the rest are always-on features). DONE = usable end to end; PARTIAL = part exists; MISSING = nothing. | # | Obsidian core plugin | Status | Where in NotesCraft / gap | |---|---|---|---| | 1 | Audio recorder | MISSING | SPEC 6.1 defers it. Playback exists (`views/media_view`); no capture (needs a mic crate: owner approval). | | 2 | Backlinks | DONE | `crates/backlinks`, `panels/right/backlinks_panel.rs`, `links.backlinks`, unlinked mentions | | 3 | Bases | MISSING | Deferred in SPEC 6.1. `query` embeds (obsidian-basics 19) and the Properties view are the nearest. See `bases/spec.md` | | 4 | Bookmarks | DONE | `bookmarks.add/list/remove`, `panels/bookmarks_view.rs`, `vault/bookmarks.rs` | | 5 | Canvas | DONE | `crates/canvas`, `views/canvas_view`, `slash.canvas` | | 6 | Command palette | DONE | `widgets/palette.rs`; everything is an engine command (SPEC 10) | | 7 | Daily notes | DONE | `vault/daily.rs`, `crates/templates` (`daily_note_path`), calendar crate, sidebar mini calendar | | 8 | File recovery | DONE | `engine/vault/snapshots`, `history.list/read`, `views/versions_view`, git history | | 9 | Format converter | MISSING | No importer (Roam/Notion/Evernote/Bear/HTML). Roadmap R7 | | 10 | Graph view | DONE | `crates/graph`, `views/graph_view` (forces, colour groups, timelapse, 6.5k notes) | | 11 | Note composer | DONE | `note.extract`, `note.merge`, toolbar button, Explorer "Merge into..." | | 12 | Outgoing links | DONE | `links.outgoing`, `links.unresolved` | | 13 | Outline | DONE | `panels/right/outline.rs` (count, filter, folding, active heading) | | 14 | Page preview | DONE | link hover card (`driven_features.rs`), heading/block links | | 15 | Properties view | PARTIAL | Per-note editor `views/properties_view` + `note.property_*` done. No vault-wide "All properties" pane (keys, types, counts, rename everywhere): `base.properties` of the Bases spec provides the data | | 16 | Publish | DONE (own) | `publish.*` + `apps/notescraft-sync-server/src/publish` (our server, not Obsidian Publish) | | 17 | Quick switcher | DONE | palette, headings and blocks | | 18 | Random note | DONE | `note.random` | | 19 | Search | DONE | `crates/index/search` (BM25, operators, `/regex/`), `search_panel`, vault-wide replace | | 20 | Slash commands | DONE | `slash.*`, `builtin/slash_commands.rs`, slash menu with preview | | 21 | Slides | MISSING | SPEC 6.1. Roadmap R9 | | 22 | Sync | DONE (own) | `crates/sync`, `engine/sync`, `apps/notescraft-sync-server` (not Obsidian Sync) | | 23 | Tags view | DONE | `panels/tags_panel.rs`, `tags.list`. No rename/merge (see Tag Wrangler) | | 24 | Templates | DONE | `crates/templates`, `template.list`, `slash.template`, `{{title}}/{{date:FMT}}/{{time}}` | | 25 | Unique note creator | DONE | obsidian-basics (`note.create` with timestamp name) | | 26 | Web viewer | MISSING | No webview by design (AGENTS.md: no Tauri/Electron/webview). A "reader mode" fetch-and-convert is the only honest variant (Web Clipper deferred) | | 27 | Word count | DONE | `shell/statusbar.rs` (words, characters, approximate tokens); selection counts partial | | 28 | Workspaces | DONE | `workspace.save/load/list/delete`, `engine/vault/workspaces` | | 29 | Footnotes view | PARTIAL | Footnote rendering/refs done (`note_view/blocks/footnotes.rs`); no sidebar pane listing a note's footnotes | **Counts: 29 plugins. DONE 22 (two of them own-server equivalents), PARTIAL 2, MISSING 5** (Audio recorder, Bases, Format converter, Slides, Web viewer). Also built beyond the Obsidian core list: Calendar (events, recurrence, ICS/Google), Diagrams (Mermaid subset), Whiteboard (Excalidraw-compatible `.draw/.excalidraw`), Vault knowledge (RAG), in-app AI assistant + MCP, Lint + batch formatter, Git (`git.*`: commit/log/diff/stage, no remotes), Live co-editing, Comments/suggestions/mentions/activity, Vim mode, Pop-out windows, Split view. ## What plugins can do today (`crates/plugins`, SPEC 7) Wasm (wasmi) modules in `/.notescraft/plugins//` with `manifest.json` (commands, permissions `vault.read`, `vault.write`, `editor`). Host calls: `log vault_read vault_write vault_list search links backlinks active_note insert_text notice now`. Limits: fuel, memory cap, deadline, result size, rate; 3 failures auto-disable. **No UI contribution (no panel, view, widget, settings), no network, no clock but `now`, no selection/cursor API, no event hooks.** Consequences for this roadmap: 1. Only *command-style* plugins fit today (run on demand, read notes, write notes or insert text). 2. Anything with a view (Kanban, Map, Heatmap, Charts, Mind map) is an in-tree feature, optionally behind a core-plugin card, until a UI-contribution ABI exists (roadmap P-ABI). 3. No first-party wasm plugin ships yet; the first one (roadmap item 6) doubles as the SDK proof.