Skip to content

fix(prompt-input): unify steer/queue composer into a codex-style morphing button - #115

Merged
astyfx merged 2 commits into
mainfrom
fix/queue-steer-ux
Jul 8, 2026
Merged

fix(prompt-input): unify steer/queue composer into a codex-style morphing button#115
astyfx merged 2 commits into
mainfrom
fix/queue-steer-ux

Conversation

@astyfx

@astyfx astyfx commented Jul 7, 2026

Copy link
Copy Markdown
Member

Summary

Redesign the Steer/Queue composer UX to match the Codex app / beui agent-chat-input style: one morphing Send/Stop button, no floating dual-key chrome, and prettier floating queued-turn cards.

Changes

Fixes

  • prompt-input: replace the separate abort (OctagonX) button and the primary Send button with a single button that morphs to a filled Stop square when a turn is running and the composer is empty, and back to Send/Queue once text is present
  • prompt-input: remove the floating "Adjust current work" secondary button and its verbose dual-key tooltips/placeholders; keep the steerQueueEnterAction setting and the Enter/Tab shortcut behavior fully intact
  • prompt-input: add Esc-to-stop while composing, so the turn can always be interrupted even when the composer has text and the button face shows Send
  • prompt-input: restyle queued-turn cards into lighter floating cards (rounded, soft shadow, backdrop blur, hover-revealed edit/delete controls, highlighted "Next to send" card) using semantic theme tokens for light/dark

Refactors / Chores

  • Remove now-unused steerQueueSecondary* locals and the CornerUpLeft/OctagonX imports; add Square

Test Evidence

  • bun run typecheck passes clean
  • Manually verified via a throwaway Vite harness mounting the real PromptInput component (removed after verification), driving real DOM/keyboard events:
    • Idle: Send disabled when empty, enabled with text
    • Running + empty composer: Stop button appears (destructive styling, filled square icon), clicking calls onAbort
    • Running + text: button flips back to Send/Queue; Esc still calls onAbort even with a draft present (draft preserved)
    • Enter/Tab still submit with the correct queue/steer intent per the configured steerQueueEnterAction
    • Queued cards: edit, delete, clear-all, and "Next to send" marker all work; dark mode toggle produced no console errors (semantic tokens only)

Notes

Pure renderer UI/interaction change — steering/queue backend (sendUserMessage intents, steerTurn env gating, auto-flush) is untouched.

…hing button

Replace the separate abort button and floating "Adjust current work"
dual-key chrome with a single Send/Stop button that morphs based on
turn state, add Esc-to-stop while composing, and restyle queued-turn
cards as floating, hover-revealed cards. The steerQueueEnterAction
shortcut and queue/steer backend behavior are unchanged.
@astyfx
astyfx enabled auto-merge (squash) July 8, 2026 03:13
# Conflicts:
#	src/components/ai-elements/prompt-input.tsx
@astyfx
astyfx merged commit cca1265 into main Jul 8, 2026
2 of 3 checks passed
@astyfx
astyfx deleted the fix/queue-steer-ux branch July 8, 2026 03:28
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.

2 participants