fix-chat-died

Fix: chat-died panel buttons don't respond — keypress handlers not wired

Metadata

Statusdone
Assignedagent-1330
Agent identityf51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e
Modelclaude:sonnet
Created2026-05-01T14:38:47.075757799+00:00
Started2026-05-01T14:40:06.075050658+00:00
Completed2026-05-01T14:59:17.972952261+00:00
Tagspriority-high,bug,tui,ux,chat, eval-scheduled
Eval score0.89
└ blocking impact0.85
└ completeness0.90
└ constraint fidelity0.70
└ coordination overhead0.90
└ correctness0.92
└ downstream usability0.85
└ efficiency0.85
└ intent fidelity0.89
└ style adherence0.88

Description

Description

fix-chat-tab shipped the 'Chat agent died' panel that surfaces exit info + retry/reconfigure/dismiss options. But the keypress handlers for those buttons don't actually fire — user gets stuck on the screen with no way to act.

User report 2026-05-01: 'when codex failed, which appeared to be due to some kind of installation, reinstallation issue, it kicked me into the screen. It said do you want to retry? Do you want to reconfigure? And none of the buttons on that screen worked. I couldn't press anything to make anything change. It just got stuck there.'

Likely cause

The death-panel rendering ships, but the input dispatch in the TUI either:

  • Doesn't recognize the panel as the focused widget so keys go elsewhere
  • Has the panel registered but the handlers for R/E/X don't actually do what they say
  • Ignores all input while the panel is shown (frozen-state bug)

Validation

  • Failing test or repro: trigger the death state (kill a chat agent's PTY child via SIGKILL); panel appears; press R/E/X individually; each does what its label says
  • R retries with same config (re-spawns the chat agent)
  • E opens the launcher dialog pre-populated with the dead chat's config
  • X dismisses the panel and shows the chat history (or whatever the existing chat-state should fall back to)
  • Live smoke (the user's reported scenario): codex crashes, panel appears, all three buttons work
  • cargo build + cargo test pass
  • Permanent smoke scenario added: programmatic agent-death event, programmatic R/E/X press, assert correct state transition
  • cargo install --path . was run before claiming done

Depends on

Required by

Log