Skip to content

Allow Escape to dismiss wait prompts#46

Merged
Crazytieguy merged 1 commit intomainfrom
claude/issue-45
Feb 21, 2026
Merged

Allow Escape to dismiss wait prompts#46
Crazytieguy merged 1 commit intomainfrom
claude/issue-45

Conversation

@claude
Copy link
Copy Markdown

@claude claude bot commented Feb 21, 2026

Summary

Implements Option C from #45: pressing Escape on an empty input buffer at a wait prompt dismisses the wait and proceeds normally.

  • Ctrl+W waits (ralph/worker): Escape falls through to process special tags (break, wait-for-user, transitions) from the last message — as if Ctrl+W was never pressed
  • Regular follow-up prompts: Escape exits the session cleanly
  • Escape with text in buffer: unchanged — still clears the text and re-shows the prompt

Adds InputAction::Dismiss (distinct from Cancel), WaitResult::Dismissed, and wait_for_dismissable_input to propagate the dismiss/exit distinction through the wait chain. Existing callers of wait_for_interrupt_input are unchanged.

Hint text updated to show Esc skip on follow-up prompts.

Closes #45

Test plan

  • cargo fmt — clean
  • cargo clippy — no warnings
  • cargo test — all 151 tests pass (120 unit + 31 VCR)
  • Manual: run coven ralph "do something", press Ctrl+W during session, then press Escape at the wait prompt — should proceed to next iteration
  • Manual: run coven, let session complete, press Escape at follow-up prompt — should exit

🤖 Generated with Claude Code

When Escape is pressed on an empty input buffer at a wait prompt,
dismiss the wait and proceed as if it was never requested. This lets
users cancel a Ctrl+W wait without sending a dummy follow-up or
killing coven entirely.

For Ctrl+W waits in ralph/worker, dismissing falls through to process
special tags (break, wait-for-user, transitions) from the last message.
For regular follow-up prompts, dismiss exits the session.

Adds `InputAction::Dismiss` (Escape on empty) distinct from `Cancel`
(Escape with text), and `WaitResult::Dismissed` / `WaitInterruptResult`
to propagate the distinction through the wait chain. Existing callers
of `wait_for_interrupt_input` are unchanged; only Ctrl+W paths switch
to `wait_for_dismissable_input`.

Closes #45

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@claude claude bot mentioned this pull request Feb 21, 2026
@Crazytieguy Crazytieguy merged commit f651e74 into main Feb 21, 2026
6 checks passed
@Crazytieguy Crazytieguy deleted the claude/issue-45 branch February 21, 2026 22:48
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.

Wait should be cancelable

1 participant