intuiTUIve demo loop: where things stand¶
Status: handoff note, updated when a session ends mid-round. The loop and its rules are in the demo gaps.
Where things stand (2026-11-03, night)¶
- 0.0.24 is published (21 crates from
mainatc2d65880by one release run,release-0.0.24, on 2026-11-03,rs-rich-acpandcornacaifor the first time;rs-rich0.0.12 on PyPI,python-v0.0.12; see the 0.0.24 release notes). The release PR merged as #844 (9a02fdb1), whichdocs-versions.tomlnames for the 0.0.24 docs. - The 0.0.25 versions are open (every package one patch past 0.0.24),
on
claude/next-priority-items-3c5p8e-wip-published, stacked on #847 (the stylesheet fuzz fix). - After the publication: Trusted Publishing entries for
rs-rich-acpandcornacai; the marketplace lists the 0.0.24 crates (mermaid 0.0.10, dot 0.0.7, lumis 0.0.8) and movesRS_RICH_CLI_REFtorelease-0.0.24. - 0.0.25 is planned (the plan): the last release before 0.1.0, released with release-kit v1.2.0. Wave 1 is its workstreams 1 to 5.
Where things stood (2026-11-03, evening)¶
- 0.0.24 was tagged (
release-0.0.24,python-v0.0.12, onc2d65880) and publishing.
Where things stood (2026-11-03)¶
- 0.0.24 is in release. Every wave is merged (#828, #829, #830, #839,
#841), with the Dependabot updates (#826, #827, #842) and three flaky
test fixes (#843, #844). The release PR prepares the cohort from
mainwith the release notes; after it merges, the maintainer tags it withpython3 scripts/release_cohort.py tag. - After the tag: list the new crate versions in the marketplace with
add_crate_version.py, move itsRS_RICH_CLI_REFtorelease-0.0.24, and retire the signer's deploy key once the GitHub App has signed. - Waiting on the maintainer: Memo's reference pictures; lumis 0.17 (its minimum Rust is 1.95); one run of Cornacai with a real agent.
Where things stood (2026-11-02)¶
- Wave 0 is merged (#828, the plan; #829, edition 2024).
- Wave 1 is integrated on
claude/next-priority-items-3c5p8e-wip-wave1and goes up as one pull request: WS1 phases 1–2 (docs/design/cornacai.md,rs-rich-acp), WS2 (below), WS4 (#[derive(Inspect)],rich_inspect!), WS5 (Noctiluca's fixes, opt-in AVIF), WS8 (the signer's GitHub App, in the mirror), WS9 (the threat model,SECURITY.md), WS12 (Zensical, modern design), and Noctiluca's mouse, 30 fps video, start page and lanternfish with the animated banner. - Next: wave 2 (the plan's Order of work), once wave 1 merges.
- Wave 2, W2a is done on
claude/next-priority-items-3c5p8e-wip-w2a: #799widgets::diff_view(hunks, folds, decisions,accepted_text), #801PaletteandTheme::from_palette/named(Textual's 21 themes, shades checked against Textual 8.2.8), #806 user keymaps (bind_id,App::keymap,keymap_file,cx.set_keymap), #802Log::write. Left for later: the Theme and Keys commands of the palette (#803, wave 3), the parity audit's rows, a tape of a review (no media recorded). - Wave 2b (branch
024-w2b, backupclaude/next-priority-items-3c5p8e-wip-w2b): #807 maximize, #808 modes and screen results, #810 Pilot helpers, #809 screenshots (rs-rich-ext'sScreen::to_svgtoo), #811list_of, #813 the six small widgets and #815 the log console (rich consolein the CLI) are done. #814 is in part: easings andfiles::dir_treedone;freeze_rowsandmatch_brackets/EditorThemeleft. Also left:list_of_virtual(#811's variant onscroll_virtual), the key panel's help sections (#813), and #815's Windows named pipe. - Wave 3a (branch
024-w3a, backupclaude/next-priority-items-3c5p8e-wip-w3a): Cornacai (#794) phase 3 and most of phase 4. The newcornacaicrate (binary and library): sessions as tabs on one connection, streamed Markdown that follows the end, folded tool-call cards, permission prompts, writes reviewed as a diff hunk by hunk, commands asked about,@mentions as resource links, the shell pane onPtyHost, the guide page and a checked tape over a fake agent. rs-rich-acp'sreplay(the fake agent) is public; intuiTUIve core is unchanged. Left: the marketplace'sagentkind (not a small change: a kind with no artifact,requires.acp, the schema, validator, client and CLI), resume and a session store, agent terminals on a PTY, "send to the agent" from the shell. -
Wave 3b (branch
024-w3b, backupclaude/next-priority-items-3c5p8e-wip-w3b): #803 palette providers (Provider,Hit,HitSinkwith background searches cancelled by the next query,Themes,SystemCommands,App::provider,cx.palette_of) and #805 the Markdown viewer (markdown_viewer,MarkdownViewer,files::markdown_loader) are done. #812 is in part: slice 1 (>,*,&nesting,$var: value;), slice 2 (structural, theme and focus pseudo-classes) and slice 3 (margin,visibility,scrollbar-color/-background) are done; left:offset,opacity,tint,outline,hatch,keyline,layer,scrollbar-color-hoverand the scrollbar's size,:inline, and states that change layout. -
Wave 3c (branch
024-w3c, backupclaude/next-priority-items-3c5p8e-wip-w3c): Noctiluca's #816 and #818 are done. #816:rich_interact::control(featurecontrol, Unix only),--control/--read-only,noctiluca ls/action,Ctrl+G(agent.send) and the guide page "Scripts and coding agents". #818:rich_art::tiles, intuiTUIve'stiles_of, and the pixel view (--pixels,Alt+X) with its benchmark. Left: the Windows named pipe, CSS selectors asclicktargets, an action log, tapes for both, and the pixel view in a real Kitty and against live Chrome. -
Wave 3d (branch
024-w3d, backupclaude/next-priority-items-3c5p8e-wip-w3d): wave 2b's leftovers are done:freeze_rows(tables and lists),match_bracketsandEditorTheme(#814),list_of_virtual(#811), the key panel's sections (#813); #815's console is Unix only for now (the Windows named pipe stays a follow-up). DIVERGENCES §51 to §53 record the CLI's three meaning differences. Hardening round: the console's socket, Noctiluca's tunnel port, and aterminal_hostfuzz target (threat model §8).
Where things stood (2026-11-01)¶
- 0.0.24 is planned (plan), with the maintainer's calls of 2026-11-01: everything ready on the apps track, lumis 0.17 waiting, edition 2024 first, and the docs moving to Zensical.
- Wave 0 is in flight: the plan's pull request (with the live Chrome test's fix), then edition 2024 in a pull request of its own. Waves 1 to 3 branch from the 2024 tree.
- Wave 1, WS2 (Cornacai's parity items) is done on
claude/next-priority-items-3c5p8e-wip-ws2: #798follow_end, #804collapsible_withwith a status and a summary, #800 the prompt editor (grow,submit_on,complete_at,history;files::path_completerin the plugin), #797markdown(doc)andMarkdownStream. Left for a later round: a tape of a streamed answer (no media recorded), atimedemomeasurement of 10 000 appends, andscroll's viewport reporting its whole view as damaged when anything inside changes. - Waiting on the maintainer:
- approving the marketplace's signing run for the 0.0.23 listings;
- moving
RS_RICH_CLI_REFtorelease-0.0.23; - Memo's reference pictures.
Where things stood (2026-10-27, evening)¶
- 0.0.23 is published (19 crates from
mainat2624ce5by one release run,release-0.0.23, on 2026-10-27, every one through Trusted Publishing;rs-rich0.0.11 on PyPI,python-v0.0.11; see the 0.0.23 release notes). The release PR merged as #824. - The marketplace is live since 2026-10-26 (index serial 1), with
its own site.
Its follow-up: the 0.0.23 crates (mermaid 0.0.9, dot 0.0.6, lumis 0.0.7)
listed with
add_crate_version.py, andRS_RICH_CLI_REFmoved torelease-0.0.23, through a pull request there. - 0.0.24 is next (plan): the first of the two tracks to 0.0.28 set on 2026-10-27 (the 1.0 plan's decisions 9 to 14): Cornacai, Textual parity and Noctiluca's improvements; the stable set's preparation. Its versions are open (every package one patch past 0.0.23).
- Waiting on the maintainer: Memo's reference pictures; lumis 0.17
(its minimum Rust is 1.95), on
claude/next-priority-items-3c5p8e-wip-deps-023-lumis.
Where things stood (2026-10-25, evening)¶
- 0.0.22 is published (19 crates from
mainat6e8e82eby one release run,release-0.0.22, on 2026-10-25;rs-rich0.0.10 on PyPI,python-v0.0.10; see the 0.0.22 release notes). The waves merged as #768 and #770, the release PR as #771. - The maintainer adds crates.io Trusted Publishing entries for the two
new crates,
rs-rich-marketplaceandnoctiluca; their first versions went up with the environment's token. - 0.0.23 is started (plan): what 0.0.22 handed on, filled in now that 0.0.22 is tagged. Its versions are open (every package one patch past 0.0.22).
Where things stood (2026-10-25, morning)¶
- 0.0.21 is published (17 crates from
mainat29084d4by one release run,release-0.0.21, on 2026-10-21;rs-rich0.0.9 on PyPI,python-v0.0.9; see the 0.0.21 release notes). The second wave below merged as #764 and the release PR as #765. - 0.0.22 is planned (plan, PR #767, tracker
#766); its versions are open (every package one patch past 0.0.21;
rs-rich-marketplacejoins at 0.0.1 with its own branch). - Wave 1's six workstreams are done, each on a backup branch,
claude/next-priority-items-3c5p8e-wip-{core,widgets,live,docs,mkt,rec}, and are being integrated. - Next: merge the six into one branch, run every gate on the merged tree, then the next wave of the plan.
Where things stood (2026-10-20, evening)¶
- 0.0.20 is published (17 crates from
56c6c97;rs-rich0.0.8 on PyPI). - 0.0.21's first wave merged as #763: round 7's bugs, the marketplace's
listing format, the DevTools pipe on Unix, form controls, the log pane and
tracing, new charts and QR codes, Huh-style forms andrich spin, effect presets, the icons and mascots, theno_stdnote. - The second wave is one branch,
claude/next-priority-items-3c5p8e(cut from main at1683100; built as021-integ2), with every gate run on the merged tree: - text editing (kill ring, search, wrap, Emacs and Vim presets);
- the docs playground, tiers 1 to 3 (renderers, the CLI on WASI, apps);
#[must_use]on builders in every crate but the mirror, handle setters included;- for ODS: Markdown export, plain-text cells, the
sqlhighlighter, core'scodefeature (Divergences #39), read-only getters onTable/Panel/Rule/Markdown, ext forwardingcode; - Mermaid sequence and ER diagrams as text, line-end labels;
- docs identity: Memo and Tui on the pages, 101 widget icons, intuiTUIve's hero and sub-site, rs-rich's own mark, icons and hero, the Python site;
- Python bindings for all of the above (not the new intuiTUIve widgets);
- the Doom review note (
docs/design/doom-review.md, for later). - 0.0.22 workstream 2 is on
claude/next-priority-items-3c5p8e-wip-ws2(worktree branch022-ws2), not yet merged. Part B covers the browser's controls C1 to C4: reactive labels,CheckState, keyedSelectOptions and a live action list. Part A covers round 7's shared gaps:title_flushand plain-text titles,tree_table,min_size_withandmin_size_forms, andfocus_scope_reveal. Still open from that gap row: directional-focus binding descriptions andneighbour's ties. - Next: drive that PR to merged. Then the plan's parity workstreams (3 to 6) and the marketplace crate; the Doom review's follow-ups (a public custom-palette Sixel encoder; check the live image node; measure the style table on a long run; four adapter fixes); Python bindings for the new intuiTUIve widgets (asked for later); the 0.0.21 release test.
- Open decisions: the minisign keys, APNG as a default tape output,
the text-box key rule, the filter benchmark in CI, the DevTools caller
--remote-debugging-*switch,fx's reduced-motion switch (RICH_A11Y=motion), whethersplashsits behindart, and the getters'get_names (kept for now).
The sections below are the loop's history, kept as they were written.
Done and on this branch¶
- Rounds 1–4: Yazi (
examples/files.rs) and scope-tui (examples/scope.rs) rebuilt each round; round 4 added the runtime, widgets, files plugin, sound/charts and thevizplugin (meter, sparkline, spectrogram and bar spectrum views out of core). - Round 5 core (
r5-core, merged): autofocus through wrappers, help wrapping and/filter, scaled/modifier-blind/fall-through/hidden bindings,Ctx::now, played feeds with state,Latest::wait_for,recent_of/recent_timed,falling, Miller overlay,marks_by,next_from,tabs_for_indexed,StatusSegment::when,factsvalue styles,cx.edit_text, thestatemodule,FrecencyStore,Jobs::run_process. - Round 5 clones (round 1 of each; reports in
gaps/): gitui (git), bottom (top), slumber (http), rata-tetris (blocks), csvlens (csv), diskonaut (disk), termusic (music), taskwarrior-tui (tasks, testtaskwarrior), and a Doom-style raycaster (raycast). Sprites (Sprite,stage,pixels, sprite sheets, micro assets) merged. All ten clone suites pass on the merged branch; the gap note's "Round 5: nine new apps" section lists the shared gaps.
In flight when this note was written¶
Each on its own local branch; pushed as a backup branch named
claude/next-priority-items-3c5p8e-wip-<name> where noted.
| Work | Branch | State |
|---|---|---|
Round 5 plugins: files rebuilt on round-5 core, per-tab selection, Miller navigation, links, file picker, external previewers; one audio source type, Pcm errors, optional stall_after, tuner, viz persistence, audio output + player on a core transport, images from bytes, Kitty/Sixel |
r5-plugins (wip-plugins) |
merged (065f0f5) |
| Real Doom (GPL, separate repo) | rs-rich-doom claude/doom-frontend (62008c2) |
working: half/Braille/Kitty/Sixel/iTerm2 at 33–35 fps, SFX; not seen in a real Kitty/Sixel terminal yet; no PR |
Next¶
- Finish and merge the in-flight branches (check each one's commit
message and status notes; run the gate in
scriptsstyle: fmt, clippy--all-features, the intuiTUIve/ext/interact/art tests, each clone's test with its features, the tapes check). - Round 6: the shared gaps of round 5 (panel titles and borders from
state,
shown_when/size_with, focus scopes,keyed(key, build), reactive tables, keyed tree, input completion/history/command line, query language, timers with a handle, key repeat and releases, spatial focus, treemap layout, natural dates,App::min_size) and the bugs it found; then rebuild all eleven clones on them. - Release bumps owed on main once the 0.0.19 cohort is out: web, data and cli changed since 2fc9772.
All three done: the branches merged, round 6 ran (below), and the bumps went into the 0.0.20 cohort.
Round 6 (fix round)¶
Brief: /home/user/apps/R6BRIEF.md in the session (its rules: regression
test first, generic core, stay in your area).
| Agent | Branch | Area | State |
|---|---|---|---|
| A | r6-render |
style table compaction, Fx interning, put_rgb pixel cells, DrawCx::rect() |
merged |
| B | r6-input |
input drained per frame, start-up keys, Shift+arrows, Driver::send; key state and releases, every key, DAS/ARR repeat, Timer handles, fixed_step, max_fps, stats |
merged |
| C | r6-react |
.auto() switches, layers that composite, keep_last, titles/borders from state, shown_when/size_with, focus scopes and direction, keyed, treemap, App::min_size, fitted text, key_hints_with, whole-app help |
merged; layers then made single-pass (05305b7: each layer draws once per change, no second pass) |
| D | r6-tables |
reactive tables and columns, markers, keyed cursor, offset across, widths and priorities, row heights, keyed/lazy trees, list ranges, TableSource and view_of |
merged |
| E | r6-inputs |
completion, history, command line, query language, natural dates, calendar options | merged (e4bc67c; full gate green) |
| F | r6-parity |
Text.markup port with goldens; template manifest |
merged |
| G | r6-record |
rich-record graphics capture, every frame at a set fps, held keys, APNG; raycaster and Doom videos | merged; Doom videos on rs-rich-doom claude/doom-frontend (114c39a) |
Found by G for the rebuild: the raycaster's Kitty mode draws its image under cells with the root's background, so nothing shows (give the view the default background, or place at z below -2^30); its held arrow keys count as held only after a release was seen.
Round 7: the clones rebuilt on round 6¶
Brief: /home/user/apps/R7BRIEF.md in the session (clones use components only; no library edits;
each clone's gap report gets a "Round 2" section). From e4bc67c:
| Agent | Branch | Clones | State |
|---|---|---|---|
| A | r7-a |
git, tasks (taskwarrior), http | merged |
| B | r7-b |
disk, top, csv | merged |
| C | r7-c |
blocks, raycast (with its Kitty-mode and held-key fixes), music | merged |
Merged, and folded into the gap note's "Round 7" section (bugs, csv's filter
regression, shared gaps). The PR is rs-rich-cli #757; rs-rich-doom #1 is
merged. Core went to 0.0.10 with its published dependents (d35d906), since
the Text.markup port changed a published file.
Next: the round 7 gaps (round 8 of the loop): the four bugs first, then the
shared gaps, then rebuild again. rs-rich-doom is pinned to
866b897 (before round 6); moving it onto pixel cells, held keys, fixed_step and stats is open.
The 0.0.21 plan took these up: the four bugs, csv's
filter and rs-rich-doom in workstream 1, the gaps three clones share in
workstream 2; the rest waits for a round 8, if it runs.
When all of it has landed and the full gate passes: open two PRs (the
user asked for this): rs-rich-cli claude/next-priority-items-3c5p8e →
main (PR template, release handoff comment, drive CI and review), and
rs-rich-doom claude/doom-frontend → main. Done: rs-rich-cli #757 and
rs-rich-doom #1 are merged, and 0.0.20 is published (see the top of this
note).