Add a `schema-sidebar` cast that reveals the ADR-0046 sidebar with
Ctrl-O (the only way to show it at 90 cols) and steps through the
Tables and Relationships panels. Teach the generator the CtrlO/Esc
control codes; quote control codes so `^[`/`^]` stay valid YAML.
- New projects cast: create → save as library → new (fresh) → load → navigate
the picker to the saved project (j, now possible via #24 vi-nav) → Enter
loads it, the table is restored. Runs under an isolated --data-dir so the
picker lists only this cast's projects.
- Turn on the demonstration overlay (--demo, #22 / ADR-0047) for ALL casts,
for a consistent viewer experience: special keys show a badge — e.g.
[ENTER], and [TAB] at the assistive-editor's completion moment, finally
making that keystroke visible. Plain j/k navigation stays unbadged, so the
picker navigation is not surfaced.
- Generator: per-cast `dataDir` (isolated data root) + default-on `--demo`
(opt out with demo:false). All 7 casts regenerated.
Convert projects.md → .mdx and embed. Build clean (26 pages). Visual playback
of all casts pending a tunnel check.
Three more casts on "doing" pages:
- first-project reuses the quickstart cast (the create→insert→show tour)
- modes (new): a simple command, then `mode advanced` where the same command
also prints "Executing SQL: …" (the teaching echo — "learn the SQL underneath")
- undo-redo (new): insert two rows, `undo` (Y-confirm modal) backs one out,
`redo` restores it
Also fix the cast endings (review feedback): scripts ended by typing a `quit`
command, which — once the trim drops the shell exit — left a dangling "quit" in
frame with no payoff. End every cast with Ctrl-C instead (the app's quit key,
KeyCode::Char('c')+CTRL): it types nothing, so the cast ends cleanly on the
last content frame. Generator gains a `CtrlC` key; all six casts regenerated.
Convert the three pages to .mdx and embed. Build clean (26 pages); 6 casts.
Address cast review feedback:
- Trim every cast to the in-app region (generate.mjs): the recording now
starts with the app already running and ends on the last in-app frame —
drops the `$ rdbms-playground` launch and the return-to-shell frame (the
latter was the stray cursor-under-$ artifact). Opt out per cast with
`keepShell: true` for demos that document the CLI launch.
- Landing quickstart cast: autoPlay + loop, with a 2.5s hold on the final
frame so it pauses before restarting.
- Cap the demo at max-width 46rem and centre it, so the player (fit:'width')
no longer scales its font up to the full splash column.
Casts re-recorded via `pnpm casts`. Build clean (25 pages).
Tab-keypress visibility deferred to an in-app overlay primitive (filed as
issue #22 — also serves the planned guided-lesson system); the cast notes
Tab in its caption for now.
Settle the cast toolchain (STYLE.md #9) and build the demo pipeline end to
end. Driver: autocast, chosen by spike — its !Interactive feeds keys to the
running TUI and captures the redraw, the right model for a full-screen
crossterm app. asciinema-automation was rejected (assumes shell echo/\n Enter;
produced a garbled cast against the TUI).
- add asciinema-player; Cast.astro (player island) + Demo.astro (the WASM-swap
seam, ADR-website-001 §3)
- casts-src/: human-readable command-lists (casts.mjs) + generate.mjs, exposed
as `pnpm casts`; expands steps to autocast YAML and records to public/casts/.
Command-lists are the durable source; .cast files are regenerable (final
re-record sweep due once the app is locked).
- quickstart.cast (create -> add columns -> insert -> show data) embedded on
the landing page above the feature cards.
Verified: pnpm build clean (25 pages); player + cast bundled and served;
landing HTML references the cast. Visual playback check pending (no headless
browser here — verify via dev server over the tunnel).