A local-first desktop writing app for long-form fiction. Write normally; a deterministic Integrity Engine quietly checks your story's continuity — catching real contradictions with receipts, never crying wolf, never making you maintain a database.
Stack: Tauri (Linux/Windows/Mac) · Svelte 5 · TipTap on ProseMirror · local-first (manuscript on disk) · SQLite for facts · an opt-in AI Suggester behind a pluggable IExtractor.
This repo is the specification + build workspace. The design is complete; the build is beginning.
spec/AUTHORITY.md— read first. Binding principles, reading order, the audit mandate.spec/00-first-task-editor-shell.md— the first build slice.spec/01-integrity-engine.md— foundational: the four-layer engine + data model.spec/02-editor-integration.md— TipTap/ProseMirror on Svelte; the editor↔engine boundary.spec/03-seams.md— mentions, story-time bar, responsive right surface, thread wall.spec/04-mirror-world-panes.md— the Relationship & World Mirror View contents.spec/05-export-pipeline.md— sterile, manifest-ordered export (HTML/ePub/PDF).spec/06-decisions.md— the binding "why" behind every decision (CP1–CP6, PI1–PI5, D1–D40).design/shell-mockup.html— the aesthetic/layout target.design/mockup-deltas.md— where the build deviates from the mockup (read before reproducing the mockup).WORKFLOW.md— the build/review loop and role separation.AGENTS.md/CLAUDE.md— entry points for the review and build agents.
Truth exists in one place (the engine). Views own nothing. Writing stays primary. Missing things is acceptable; obligations are forbidden. Complexity is summoned, not present. Screens answer questions, not data. If any surface teaches the writer they are maintaining the system, it is wrong.
Prereqs: Node 20+, Rust (stable) with a platform toolchain (MSVC on Windows; WebView2 ships with Windows 11), and the Tauri system dependencies.
npm install # frontend deps (Tauri CLI is a local devDependency)
npm run app:dev # launch the desktop app (Vite + Tauri dev window)
npm run check # svelte-check (types)
npm run lint # eslint + prettier --check
npm run app:build # bundle the desktop appA manuscript is a single local .nvlst JSON file you choose the location for; settings live in the OS app-config dir. Nothing leaves the machine.