run(Base, view, NoteSource, Env) with base and view filters (and/or/not), stable multi-key sort evaluating only the sort keys, groupBy and groupOrder (null group, hidden groups), limit across groups, built-in and custom summaries (Average, Min, Max, Sum, Range, Median, Stddev, Earliest, Latest, Checked, Unchecked, Empty, Filled, Unique, expressions over values), lazily memoised cells, dependency tracking so unused properties are never read; list methods sum, mean, median, min, max. 15000 rows with one filter and one sort run in well under the 500 ms bound. Bases task 7 (Claude Sonnet). Known gap: an empty groupOrder shows all groups (needs Option<Vec> in the model). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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 for what is done and SPEC.md for the contract.
Screenshots
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Regenerate with the offscreen renderer: cargo run -p notescraft-ui-egui --example snapshot -- --vault <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
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):
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. notescraft with no argument reopens the last vault, or asks for a folder.
Develop
cargo xtask ci # fmt --check, clippy -D warnings, tests, layer check
cargo xtask layers # crate dependency layering only
Read AGENTS.md first (rules for people and AI agents), then 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.







