Skip to content

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 main at c2d65880 by one release run, release-0.0.24, on 2026-11-03, rs-rich-acp and cornacai for the first time; rs-rich 0.0.12 on PyPI, python-v0.0.12; see the 0.0.24 release notes). The release PR merged as #844 (9a02fdb1), which docs-versions.toml names 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-acp and cornacai; the marketplace lists the 0.0.24 crates (mermaid 0.0.10, dot 0.0.7, lumis 0.0.8) and moves RS_RICH_CLI_REF to release-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, on c2d65880) 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 main with the release notes; after it merges, the maintainer tags it with python3 scripts/release_cohort.py tag.
  • After the tag: list the new crate versions in the marketplace with add_crate_version.py, move its RS_RICH_CLI_REF to release-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-wave1 and 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: #799 widgets::diff_view (hunks, folds, decisions, accepted_text), #801 Palette and Theme::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), #802 Log::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, backup claude/next-priority-items-3c5p8e-wip-w2b): #807 maximize, #808 modes and screen results, #810 Pilot helpers, #809 screenshots (rs-rich-ext's Screen::to_svg too), #811 list_of, #813 the six small widgets and #815 the log console (rich console in the CLI) are done. #814 is in part: easings and files::dir_tree done; freeze_rows and match_brackets/EditorTheme left. Also left: list_of_virtual (#811's variant on scroll_virtual), the key panel's help sections (#813), and #815's Windows named pipe.
  • Wave 3a (branch 024-w3a, backup claude/next-priority-items-3c5p8e-wip-w3a): Cornacai (#794) phase 3 and most of phase 4. The new cornacai crate (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 on PtyHost, the guide page and a checked tape over a fake agent. rs-rich-acp's replay (the fake agent) is public; intuiTUIve core is unchanged. Left: the marketplace's agent kind (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, backup claude/next-priority-items-3c5p8e-wip-w3b): #803 palette providers (Provider, Hit, HitSink with 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-hover and the scrollbar's size, :inline, and states that change layout.

  • Wave 3c (branch 024-w3c, backup claude/next-priority-items-3c5p8e-wip-w3c): Noctiluca's #816 and #818 are done. #816: rich_interact::control (feature control, 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's tiles_of, and the pixel view (--pixels, Alt+X) with its benchmark. Left: the Windows named pipe, CSS selectors as click targets, an action log, tapes for both, and the pixel view in a real Kitty and against live Chrome.

  • Wave 3d (branch 024-w3d, backup claude/next-priority-items-3c5p8e-wip-w3d): wave 2b's leftovers are done: freeze_rows (tables and lists), match_brackets and EditorTheme (#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 a terminal_host fuzz 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: #798 follow_end, #804 collapsible_with with a status and a summary, #800 the prompt editor (grow, submit_on, complete_at, history; files::path_completer in the plugin), #797 markdown(doc) and MarkdownStream. Left for a later round: a tape of a streamed answer (no media recorded), a timedemo measurement of 10 000 appends, and scroll'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_REF to release-0.0.23;
  • Memo's reference pictures.

Where things stood (2026-10-27, evening)

  • 0.0.23 is published (19 crates from main at 2624ce5 by one release run, release-0.0.23, on 2026-10-27, every one through Trusted Publishing; rs-rich 0.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, and RS_RICH_CLI_REF moved to release-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 main at 6e8e82e by one release run, release-0.0.22, on 2026-10-25; rs-rich 0.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-marketplace and noctiluca; 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 main at 29084d4 by one release run, release-0.0.21, on 2026-10-21; rs-rich 0.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-marketplace joins 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-rich 0.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 and rich spin, effect presets, the icons and mascots, the no_std note.
  • The second wave is one branch, claude/next-priority-items-3c5p8e (cut from main at 1683100; built as 021-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 sql highlighter, core's code feature (Divergences #39), read-only getters on Table/Panel/Rule/Markdown, ext forwarding code;
  • 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 branch 022-ws2), not yet merged. Part B covers the browser's controls C1 to C4: reactive labels, CheckState, keyed SelectOptions and a live action list. Part A covers round 7's shared gaps: title_flush and plain-text titles, tree_table, min_size_with and min_size_forms, and focus_scope_reveal. Still open from that gap row: directional-focus binding descriptions and neighbour'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), whether splash sits behind art, 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 the viz plugin (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, facts value styles, cx.edit_text, the state module, 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, test taskwarrior), 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

  1. Finish and merge the in-flight branches (check each one's commit message and status notes; run the gate in scripts style: fmt, clippy --all-features, the intuiTUIve/ext/interact/art tests, each clone's test with its features, the tapes check).
  2. 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.
  3. 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).