feat(chat): always-Send composer, relocate Interrupt to the header (ADR-0029) #63
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab!63
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "afk/61"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Replaces the chat composer's working-state Send→Interrupt morph (ADR-0022) with an always-available Send, and moves Interrupt to a dedicated live-gated control next to the header Stop. Resolves the operator lockout where a false `working` state (stale transcript tail — #38's confirmed root cause) hid Send and left only a no-op Interrupt.
Closes #61
What changed
Tests
`RunChat.test.tsx` rewritten for the new contract (79 → 83 tests): Send present/enabled/sending while working, ⌘-Enter while working, live-gated header + menu Interrupt (pause vs square, one tap POSTs `/interrupt`, absent on ended runs), menu item ordered above Stop and closing on tap, New conversation available while working, escape-hatch tests re-scoped so they stop accidentally clicking the new header control.
Verification (all green locally)
🤖 Generated with Claude Code
https://claude.ai/code/session_016pJUBAmtjzJfHyZNy3Fuyc