Changelog
Versioning is x.y.z — major.minor.bugfix, no component above 99. The
workspace Cargo.toml is the single source of the number; the TUI head and
the Yard display it. 1.0.0 lands with the local MVP go-live.
[Unreleased]
- The fleet rename (owner decision 2026-08-26): the AI companion **the
Ghost is now Davy, and the editor engine ProseView** is now
the Helm (crate keel-prose → keel-helm). keel, the Yard,
Plank, and the Ledger keep their names. Renamed throughout both
surfaces; model-routing keys are now davy.draft / davy.continue.
Store::Yard— the TUI reading and writing through the Yard with the
immutable-revision local cache; project setup in the browser reaching
the TUI. 1.0.0 lands with the MVP sign-off.
[0.10.0] — 2026-08-26
The Yard becomes an author's workspace, and the road to keel.pub opens.
The Planner (author-facing book setup)
/planner/— series list, create-a-series (seeds the fullkeel init
object set, instantly usable in planner and TUI), and the one-click
sample-novel builder.
/planner/<series>/— the spine tree: volumes → arcs → movements →
beats → leaves with status glyphs ◌○◐●, word counts and rollups,
inline add-child at every level, id conventions enforced, the write
gate honored for new leaves.
- Card editing per canonical field order; every save is an honest
checkout → checkin revision as yard:<user>; a leaf locked by a TUI
writer shows who holds it and since when — never force-unlocked.
- Python canonical codec with byte-exact parity to the Rust emitters
(fixtures generated by the release binary; 17 parity tests).
- The sample novel ported to Python: 18 objects, blake3-verified
byte-identical to the Rust keel auto-novel --offline output.
The manual and the shell
- 19-chapter documentation system in the Yard at
/docs— graphical
getting-started, hierarchy & glossary with recommended ratios, full
annotated file footprint, and everything between.
- Zero-CLI: the
:console in the palette runs any keel command in
place; a bare keel outside a workspace opens the series picker.
Going online (Fly.io + keel.pub)
- Production hardening: env-driven hosts/CSRF/secret key, gunicorn +
whitenoise, TLS-proxy-aware cookies, ADMIN_PASSWORD secret — the
printed test login shows in local dev only.
fly.tomlfor the keel-yard app; localdocker composeunchanged.
Fixes
- Admin contrast (model-group captions, recent-actions sidebar), footer
with the changelog link, ? help overlay on Windows, seeded password
self-heals on every startup.
[0.9.0] — 2026-08-25
The entire solo tool, built in one run (M0–M7 plus the morning's decisions).
The writing surface
- ProseView: custom prose editor — soft wrap on the printed measure,
typewriter scrolling, focus dimming, decoration spans, vim-lite keys,
undo/redo. ^e hands off to $EDITOR and reloads.
- Plank markup:
@name{…}inline,@name … @endblocks, structural tier
emitted never typed; fmt on save, strip to CommonMark, errors block
check-in. ^m contextual markup palette.
- Spellcheck via the bundled dictionary plus the project's proper nouns.
- Proofreading in the status chain:
keel proofread(AI pass with
accept/reject, --mark-only for human passes), per-revision ✂ marks,
warnings at render/export.
Structure
- The Keel: Series → Volume → Arc → Movement → Beat → Leaf, ids carrying
position; parents required in order; containers hold premise+intent only.
- The write gate: no leaf outside a specified-or-better beat; leaf status
can never outrun its beat.
- Frontier warnings (never blocks),
keel synopsis, frames with real page
budgets, the Map with the tension sparkline.
- The Worldline (view 7): leaves on a horizontal line — chronological or
temporal across five customizable eras (Mythic · Old · Present · Future ·
Far Future); Enter opens a leaf to write.
Memory & change
- Strict RCS store: exclusive locks, immutable monotonic revisions,
stale-base failures are loud, reads never lock.
- The Ledger: facts with story-time validity and reveal positions, promises
with due-bys, quote-anchored refs; the two clocks (true_at / known_at)
and the do-not-reveal list.
- Amendments as changesets:
keel amendcomputes the blast radius, `ci
--changeset reconciles, land` refuses unresolved ⛔ unless waived with
the reason recorded, warnings become tracked ⚠ stale debt; abandon
walks heads back over retained history.
The Ghost
^ginstruct → streamed suggestion → accept/reject; nothing is written
until accepted. ^; inspects the exact context (pinnable sections).
- Raw Messages API client (SSE, cached stable prefix) with an offline mock;
provenance log and the ✎% density; cost meter (keel ai usage).
keel voice seed,keel ai draft, extraction with human triage.
The book
- Preview mode (F5): Typst renders the volume to a true B-format PDF —
running heads, recto/verso, generated contents, sunk openers, the exact
13.6pt line grid (~300 words/page verified on renders).
keel export --tree(the whole series as plain files),--epub/--docx
via pandoc, named snapshots, keel stats burn-down.
Groundwork for M8
keel login/logoutand the TUI login lock (dev mode when no Yard is
configured), versioning surfaced in the TUI head.