Desktop MVP for exploring version control as a narrative medium.
Includes:
- Demo mode mirroring the “branch narrative” layout (intent → session excerpts → files → diff → timeline).
- repo mode:
- pick a local git repo
- index recent commits
- timeline navigation + per-commit files/diff on selection
- caches commit metadata + file-change lists in SQLite
- writes committable narrative metadata into
.narrative/meta/** - supports manual session import into
.narrative/sessions/**(with basic secret scrubbing)
- Node.js + pnpm
- Rust toolchain
- tauri system deps for your OS (see tauri docs)
gitavailable on PATH (repo mode executesgitviatauri-plugin-shell)
-
Install dependencies:
pnpm install
-
Run the app:
pnpm tauri dev
-
Open a repository:
- Click "Open repo..." and select a git repository
- Navigate commits and see files changed
-
Import a session (optional):
- Click "Import session..." and select a JSON session file
- See session excerpts in the right panel
docs/README.md— docs index (start here)docs/agents/development.md— dev prerequisites + run/build commandsdocs/agents/testing.md— lint, Typecheck, and test commandsdocs/agents/tauri.md— tauri permissions + data locationsdocs/agents/repo-structure.md— repo layout overviewdocs/agents/repair-agent.md— autonomous CI repair agent workflowpnpm docs:lint— run Vale + markdownlint for docs
pnpm install
pnpm tauri devtauri v2 requires explicit permissions for plugins.
This MVP enables (see src-tauri/capabilities/default.json):
dialog:allow-open— choose a repo folder / import a session fileshell:allow-execute— scoped to only thegitprogramsql:default+sql:allow-execute— SQLite caching
When you open a repo, the app creates:
.narrative/meta/repo.json.narrative/meta/branches/<branch>.json.narrative/meta/commits/<sha>.jsonfor indexed commits- (lazy)
.narrative/meta/commits/<sha>.files.jsononce you click a commit
These files are committable (shareable narrative layer).
Use Import session… (repo tab) to import a JSON file.
Example schema: examples/session.example.json.
- The importer performs basic secret redaction before writing into
.narrative/sessions/imported/*. - The UI will show the latest imported session in the “Session Excerpts” panel (MVP: branch-level, not commit-linked yet).
SQLite file: sqlite:narrative.db (managed by tauri-plugin-sql)
Schema/migration: src-tauri/migrations/001_init.sql
Do not commit this cache file.
- Parse Claude Code / Codex CLI native logs and auto-link sessions to commits.
- Commit–session linking via trailers, git notes, and timestamp+file overlap heuristics.
- Multi-level abstraction: commit → session → milestone → branch narrative.
- “Speculate” mode: simulate alternative future paths using constraints learned from history.
brAInwav from demo to duty