Skip to content

fix(tui): advertise the esc interrupt in the busy footer - #109

Merged
quickbeard merged 3 commits into
mainfrom
esc-interrupt-footer
Jul 20, 2026
Merged

quickbeard merged 3 commits into
mainfrom
esc-interrupt-footer

Conversation

@quickbeard

@quickbeard quickbeard commented Jul 20, 2026 •

Copy link
Copy Markdown
Owner

Follow-up to #108. That PR made the busy prompt footer lead with ctrl+c interrupt; this puts esc interrupt back in front. escape is the interrupt we advertise — in the footer and in the home screen tip.

Ctrl+C still interrupts. Every behavior from #108 is intact, including the single press, the precedence chain, and the suppressed exit confirm. Only what's on show changes.

ctrl+c prompt has draft prompt empty
busy clears draft aborts immediately
idle clears draft arms exit confirm, second press quits

Changes

  • component/prompt/index.tsx — interruptShortcut resolves session.interrupt (mapping escape → esc) and falls back to the session.interrupt.now label when escape is unbound. That's the mirror of the fallback feat(tui): interrupt the agent with ctrl+c #108 introduced, so a user who unbinds either key still gets a usable hint. The armed state (esc again to interrupt) folds into the same memo, since only session.interrupt can arm it.
  • feature-plugins/home/tips-view.tsx — the "stop the AI mid-response" tip points back at session.interrupt. This file is now byte-identical to its pre-feat(tui): interrupt the agent with ctrl+c #108 state, so it no longer diverges from upstream at all.
  • test/interrupt.view.test.tsx — asserts the footer shows esc interrupt; the ctrl+c draft-clear and single-press abort assertions are unchanged.
  • DIVERGENCES.md — the feat(tui): interrupt the agent with ctrl+c #108 row's footer clause and rationale updated to match.

Changelog

#108 and #109 share one ## Unreleased bullet citing both, rather than a bullet each. They ship in the same version and this PR walks back part of #108, so two entries would contradict each other in the same release. The merged entry describes the net behavior.

Testing

  • bun typecheck clean across all 31 packages.
  • Full tui suite: 232 pass / 1 fail. The failure (app.exit prints the session epilogue after scoped cleanup) is pre-existing and unrelated — it fails identically on an unmodified tree.

🤖 Generated with Claude Code

quickbeard and others added 3 commits July 20, 2026 17:27
#108 made the busy prompt footer lead with "ctrl+c interrupt". Put
"esc interrupt" back in front: escape is the interrupt we advertise, in
the footer and in the home screen tip.

Ctrl+C keeps the single-press interrupt from #108 and every precedence
rule around it — only what is on show changes. The footer shortcut now
resolves session.interrupt (mapping escape -> esc) and falls back to the
session.interrupt.now label when escape is unbound, the mirror of the
fallback #108 introduced.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Restores #108's entry to what merged (plus the PR link it was missing)
and adds a separate bullet for this change, per the convention that
follow-ups get their own entry rather than rewriting the earlier one.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Both PRs land in the same unreleased version, and #109 walks back part of
#108, so two bullets would ship contradicting each other. One entry
describes the net behavior and cites both.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@quickbeard
quickbeard merged commit f4438c2 into main Jul 20, 2026
1 of 5 checks passed
@quickbeard
quickbeard deleted the esc-interrupt-footer branch July 20, 2026 10:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant