Repository navigation
Map: ctui 0.5.0 live-check fixes #228
Copy link
Copy link
Closed
21 / 2121 of 21 issues completedLabels
wayfinder:mapWayfinder mapWayfinder map
Description
Destination
A decided set of ready-for-agent bugfix tickets for the live-check failures in chore: release 0.5.0, each shipped from its own bugfix/<name> branch cut from release/0.5.0 with its pull request into that branch. Every failure ends with a fix ticket or an explicit decision to defer it to develop/0.6.0 or drop it.
Notes
- Ship bar (human, 2026-10-09): fix everything ctui-side before 0.5.0 ships. One failure, one ticket, one
bugfix/<name>branch. A failure that is a Claude Code engine limit ctui can't work around goes to a grilling ticket where the human decides defer or drop. - Origin: 0.5.0 changed only Todo code and a dock-width helper since
v0.4.0(git diff v0.4.0..release/0.5.0);menu.tsx, Themes,UserMessagerewrites and theagentsplugin are untouched, and 0.4.0 shipped with no live checks run. So every failure is expected to predate 0.5.0; each diagnosis confirms it atv0.4.0. - Live checks only at release (human, 2026-10-10): the fix tickets and any new diagnosis work from the code, the vendored types and tests, with no live repro. The release pull request's full pass rechecks every fix. The "Live reruns" setup below is for that pass.
- Live reruns: Claude Code 2.1.292 (the pinned version),
DISABLE_AUTOUPDATER=1(an earlier run auto-updated npm-global Claude Code to 2.1.295), tmux, a scratchCLAUDE_CONFIG_DIRper session,--plugin-dir ./ctui,CLAUDE_CODE_TMUX_TRUECOLOR=1for color checks. Under--plugin-dirctui's settings key ispluginConfigs["ctui@inline"]. tmux sends mouse clicks and wheel scrolls as raw escape sequences throughtmux send-keys -l. - Reading colors:
tmux capture-pane -ewrites an SGR only on a change and carries it across line ends. Parse the whole capture as one stream, never per line or from the│. A per-line reader made Diagnose: user-prompt rows lose their background under Catppuccin Latte look like a failure. - Read first: MEMORY.md "
/ctuiis one instant menu; it survives each settings reload", "Sidebar colors inherit the Claude Code theme", "Agent and shell events go to toasts…", "Task ends come from notifications…", "A Workflow run is one task row; teammates stay hidden", "UserMessagerewrites draw the person's own prompts only". Some failures contradict what those entries record as checked on 2.1.288/2.1.292; a diagnosis that finds the engine moved updates the entry. - Skills:
diagnosing-bugsfor the diagnosis tasks;grilling+domain-modelingfor grilling tickets. A fix ticket follows the shape of Sidebar glass draws light grey under tmux without truecolor: what happens, why, the ask, the test seam, and the branch.
Decisions so far
- Diagnose: /ctui menu ring lands on the wrong row: ctui bug since v0.4.0. Esc leaves the engine ring at the old index; fix in /ctui Esc leaves the ring on the old row's index. A Theme pick keeping the ring is correct.
- Diagnose: /ctui Themes filter doesn't take focus on open: ctui bug since v0.4.0. Enter on Themes leaves the ring at index 1 (
inherit); fix in /ctui Themes opens with the ring on inherit, not the filter. - Diagnose: Monthly cost cursor stays mid-text after a refused value: ctui bug since v0.4.0. The engine keeps the old field's cursor offset when a refused entry swaps in a new field under the ring; fix in Monthly cost keeps the refused text's cursor offset.
- Diagnose: /ctui Themes screen draws engine grey, not Theme colors: two causes since v0.4.0. The plain ringed
inheritrow is the ring mismatch, folded into /ctui Themes opens with the ring on inherit, not the filter. The grey›and placeholder are engine-drawnButton/Inputwith no color prop, so Decide: /ctui menu's engine-drawn markers and filter ignore the Theme asks the human to defer or drop. - Diagnose: user-prompt rows lose their background under Catppuccin Latte: not a failure. Every row keeps
userMessageBackgroundatrelease/0.5.0andv0.4.0. The check's capture parser reset the background at each line and lost it wherever the row matched the dock above. No fix ticket. - Diagnose: Context and Limits lag and vanish after /clear: ctui bug since v0.4.0.
/clearempties$.stateand only the 1 s tick refills it, so Context, Limits and the footer blank for up to about 1 s. Fix in Sidebar blanks Context, Limits and the footer for up to a second after /clear. The 2.2 s figure and Limits returning first didn't reproduce. - Diagnose: teammates get Agents & shells rows that never end: ctui bug since v0.4.0. On 2.1.292 a teammate fires
agent.spawn(isTeammate: true), which ctui doesn't filter. The list filter and an unmatched TaskStop id leave the row running. Fix in Teammates get Agents & shells rows and toasts from agent.spawn. - Diagnose: Workflow runs draw a stray workflow-subagent row: ctui bug since v0.4.0. On 2.1.292 each workflow agent fires
agent.spawn(e.workflowset). Its row holds the agent's shells and never ends, because no list or notification names it. Fix in Workflow agents get Agents & shells rows and toasts from agent.spawn. - Diagnose: background agent's row fails while it waits on its own shell: ctui bug since v0.4.0. On 2.1.292
$.agent.list()readswaitingwhile an agent waits on its own background shell, andapplyAgentListends the row on any word butrunning.dropEndedthen deletes the row, so the laterrunningandcompletedfind nothing. Fix in Background agent's row ends when the agent list says waiting. - Decide: /ctui menu's engine-drawn markers and filter ignore the Theme: drop. The engine's
›and Input internals keep the/theme's colors. The field labels become ctui Text in /ctui field labels draw the terminal's default color, not the Theme's. The live-check row and MEMORY.md are reworded in /ctui live-check row expects Theme colors on engine-drawn parts. - Decide: 0.5.0's live-check pass once the fixes land: a fresh pass of every section once the fixes land, with no row left not run (the human drops the page cache). Handed off as Run 0.5.0's full live-check pass, blocked by the fix tickets. Its failures start a new map with the same ship bar.
Not yet specified
None.
Out of scope
- New features or redesigns beyond what each failing live-check row asks for.
- Running the full live-check pass and fixing what it finds: this map covers the first pass's failures only. The pass is Run 0.5.0's full live-check pass, and its failures start a new map.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
wayfinder:mapWayfinder mapWayfinder map
Activity
a1exk-dev commentedon Oct 14, 2026
Destination reached. Every live-check failure from the first pass of chore: release 0.5.0 ended in a fix ticket or an explicit decision, all ten child tickets are closed, Not-yet-specified reads None, and the fixes shipped: 0.5.0 merged into
mainas52da5e6and is taggedv0.5.0.The one thing this map handed off rather than decided, Run 0.5.0's full live-check pass, is closed as superseded by that release shipping, and what it never ran is re-cut against the next release.