# NotesCraft A native, Obsidian-compatible notes app for the Craft suite, written in Rust (egui/eframe). Your vault is a folder of plain `.md` files that stay readable by Obsidian: wikilinks, embeds, callouts, tags, frontmatter, backlinks, full-text search, daily notes and templates, a graph view, canvas and whiteboard files, diagrams (Mermaid subset, including UML), a plugin host (WebAssembly), an MCP server and a CLI so agents can work on the vault. **Status: pre-alpha.** The engine and most crates are built and tested; the desktop app opens a vault with a file tree, tabs, a read-only note view, backlinks and outline, a command palette and animations. See [ROADMAP.md](ROADMAP.md) for what is done and [SPEC.md](SPEC.md) for the contract. ## Screenshots | | | |---|---| | ![Workspace](docs/screenshots/workspace.png) | ![Workspace, Catppuccin Latte](docs/screenshots/workspace-light.png) | | ![Search](docs/screenshots/search.png) | ![Source control](docs/screenshots/source-control.png) | | ![LaTeX math](docs/screenshots/math.png) | ![Vim mode in the source editor](docs/screenshots/editor-vim.png) | | ![Settings](docs/screenshots/settings.png) | ![4K](docs/screenshots/4k.png) | Regenerate with the offscreen renderer: `cargo run -p notescraft-ui-egui --example snapshot -- --vault --out x.png --size 1440x900 --open "note.md" [--tab explorer|search|tags|buffers|source] [--theme id] [--vim] [--source]` (set `HOME` to a scratch directory so the run does not touch your settings). ## Try it ```sh export PATH="$HOME/.cargo/bin:$PATH" # use rustup's stable toolchain (1.95 or newer) cargo run -p notescraft -- /path/to/your/vault ``` Without a vault argument, set `NOTESCRAFT_VAULT`. Keys: Cmd/Ctrl+K command palette, Cmd/Ctrl+O quick switcher, Cmd/Ctrl +/-/0 zoom. Render the UI to a PNG without a window (useful for design checks): ```sh cargo run -p notescraft-ui-egui --example snapshot -- --vault /path/to/vault --out ui.png --size 1440x900 --open "folder/note.md" ``` ## Install Release builds: `packaging/macos/package.sh` (DMG), `packaging/windows/package.ps1` (MSI), `packaging/linux/package.sh` (deb, rpm, AppImage); see [packaging/README.md](packaging/README.md). `notescraft` with no argument reopens the last vault, or asks for a folder. ## Develop ```sh cargo xtask ci # fmt --check, clippy -D warnings, tests, layer check cargo xtask layers # crate dependency layering only ``` Read [AGENTS.md](AGENTS.md) first (rules for people and AI agents), then [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) (crate map and APIs). The workspace follows PhotoCraft and VectorCraft conventions; shared crates come from `craft-libs`. ## Design The design lives in a PaperCraft project named `NotesCraft` (tokens for Catppuccin Mocha/Latte, workspace, graph, command palette, slash menu, settings, whiteboard, assistant panel, 4K screen). Rounded floating panels on a `canvas` colour, separated by tone, not borders. ## Licence MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`). Fonts (Inter, JetBrains Mono: SIL OFL 1.1) and icons (Lucide: ISC) keep their own licences, see [ATTRIBUTION.md](ATTRIBUTION.md).