6.1 KiB
NotesCraft roadmap
Stage: pre-alpha · spec approved 2026-10-13 · phase 0 done · pure crates for phases 1, 2, 6, 7, 8, 9 built; engine in progress
Last updated: 2026-10-14 (after views-wire merge: typed tabs, canvas/whiteboard/graph/settings views, Windows/Linux title bar, redesigned sidebar panels) · Target: Obsidian-compatible vault, native egui, see SPEC.md
One-page summary of where NotesCraft stands. The contract is SPEC.md; the definition of done per feature is its section 12. One PR per phase, each reviewed before merge.
Phases
| # | Phase | Crates | Status |
|---|---|---|---|
| 0 | Foundation | workspace, xtask, AGENTS.md, architecture doc |
done (CI workflow 0.9 and craftrules 0.10 pending) |
| 1 | Vault + markdown | vault, markdown, testkit |
vault and markdown done; testkit empty |
| 2 | Index + links | index, backlinks, diagrams, whiteboard parsers |
whiteboard done; diagrams done (all 7 kinds, 102 tests); index done (links, tags, search); backlinks done (L2) |
| 3 | Engine + app shell | engine, ui-egui shell, i18n |
app shell and read-only views built and the app window opens; engine registry, Session, buffers, 25 commands, search, daily notes, themes and config done (88 tests); craft-settings, plugins and control channel wiring pending; i18n done (47 tests); app shell done (first cut) |
| 4 | Editor | editor, properties panel, slash menu, image paste, recovery |
editing, save, autosave, recovery, autocomplete wired; properties panel, slash menu, image paste pending |
| 5 | Search, tags, palette | search UI, tag tree, command palette, outline, bookmarks, breadcrumbs | search tab, tags tab, palette, outline, breadcrumbs done; bookmarks pending; git versioning (Source tab) done |
| 6 | Graph | graph + renderer |
graph layout done (525 ms for 5000 nodes); renderer not started |
| 7 | Daily notes, calendar, templates, themes | templates, themes |
both crates done; UI not started |
| 8 | Canvas, whiteboard, diagrams UI | canvas, renderers |
canvas model done; renderers not started |
| 9 | Plugins | plugins (wasmi host) |
host crate and engine bridge done; settings UI lists them; plugin-tool toggles pending |
| 10 | MCP, CLI, control channel, assistant panel | mcp, notescraft-cli |
mcp, notescraft-cli and its mcp subcommand done; control channel and assistant panel pending |
| 11 | PDF export, packaging, i18n coverage, hardening | packaging/, release |
not started |
Implemented so far
15 crates plus the CLI have real code (about 30 000 source lines, about 800 tests): mcp, i18n, engine, backlinks, vault, markdown, index, plugins, canvas, templates, themes, graph, whiteboard, diagrams (flowchart). cargo xtask ci is green on develop. Per-crate API and numbers: docs/ARCHITECTURE.md.
Next up
diagramsER/gantt/pie part.- Wire the finished views (note view, palette, backlinks, outline) into
NotesApp; switch the app to wgpu; then theeditorwidget (phase 4). engine: plugins andcraft-settingswiring, control channel;mcpandnotescraft-clifront ends; then theeditorwidget, graph and canvas renderers.- Housekeeping:
Index::remove_file, README (0.7), CI (0.9),craftrules(0.10), regex dependency decision for search.
Known issues and review findings
craft-atomicis the only write path;canvas/whiteboardonly produce strings so far (writing is the engine's job).vault:\is treated as a path separator on every OS, so a file literally nameda\b.mdcannot be addressed on unix.themes: several Latte colours deviate from stock Catppuccin for contrast (SPEC 8.2 to be updated).- Disk: each agent's
target/agent-*is about 600 MB; the volume hit 100% once and broke a build (a corrupted incremental cache neededcargo clean -p). Delete agent target dirs after merging.
Phase 0: foundation (ordered tasks)
Goal: an empty but green workspace that enforces the rules in SPEC section 3 before any feature code exists.
| # | Task | Done when | Status |
|---|---|---|---|
| 0.1 | Root Cargo.toml: resolver 3, edition 2024, [workspace.dependencies] with the pinned craft-libs rev and every notescraft-* crate, workspace lints (unsafe_code = "forbid", clippy pedantic) |
cargo metadata succeeds |
done |
| 0.2 | 16 stub crates under crates/ plus apps/notescraft and apps/notescraft-cli, each with package metadata, module doc, #![deny(...)] never-crash lints, one TODO(phase N) and one test |
cargo test --workspace passes |
done |
| 0.3 | clippy.toml, rustfmt.toml, .cargo/config.toml (xtask alias), .gitignore, licence files |
cargo fmt --check passes |
done |
| 0.4 | cargo xtask verify: fmt check, clippy -D warnings, test, stops at the first failure |
green on the empty workspace | done |
| 0.5 | cargo xtask layers: the L0–L5 dependency rules, no egui below L5, unregistered crate is an error, with unit tests |
green; rejects a deliberate upward dependency in its tests | done |
| 0.6 | cargo xtask ci = verify + layers |
green | done |
| 0.7 | AGENTS.md and README.md for contributors (never-crash rules, how to add a crate, how to add a command) |
reviewed | done (AGENTS.md, docs/ARCHITECTURE.md, README.md) |
| 0.8 | Design reference recorded: PaperCraft project NotesCraft (tokens, 9 screens) linked from the README |
link present | done (README Design section) |
| 0.9 | CI workflow running cargo xtask ci on macOS, Linux and Windows |
green on all three | workflow written (.github/workflows/ci.yml), not run: needs the remote, a runner and the CRAFT_LIBS_TOKEN secret |
| 0.10 | Reconcile with craftrules standards once the repository is available |
open question in SPEC section 14 closed | pending (craftrules not on disk) |
Tasks 0.1–0.6 are committed on phase-0/foundation and merged work continues on develop. 0.9 and 0.10 wait on the owner (remote, CI host, craftrules).
Not started, deliberately deferred
Sync, mobile, publish, version-history diff UI, Bases, built-in model hosting, JS plugin compatibility, web build, TeX rendering, Web Clipper, additional languages. See SPEC section 6.1.