Skip to content

fix(ui): make a leaving composer action inert before its exit animation ends - #448

Merged
iamnbutler merged 2 commits into
mainfrom
stop-exit
Oct 15, 2026
Merged

iamnbutler merged 2 commits into
mainfrom
stop-exit

Conversation

@iamnbutler

Copy link
Copy Markdown
Contributor

Refs #443 (R1 re-check on 0.0.46.52).

After a run ends, the composer's Stop button leaves through a motion AnimatePresence spring. WebKit delivers no animation frames to a hidden or occluded window, and desktop runs bring Chrome or TextEdit to the front over Ace. So the exit stalls, and the button stays mounted and in the accessibility tree as "Stop response" until frames resume. The leaving action is now inert from the moment it starts leaving.

Checked in Playwright WebKit with the real ComposerActions and ComposerSubmit, holding requestAnimationFrame the way a hidden window does, then ending the run:

  • main: "Stop response" stays exposed for the whole 3 s pause and clears only when frames resume.
  • This branch: it's gone at once.

Not fixed: the composer spinner the re-check reported. The submit button's loading icon leaves without waiting for frames in the same test, and the gateway logs show the R1 ask and answer requests returning in 8–85 ms, so its cause is still open on #443.

Built in Ace

No. Built in Claude Code (lane worktree, Playwright WebKit in a scratch directory) because the study lead asked that this Mac's Ace Canary stay untouched while the desktop-tools study runs.

…on ends

Why: packages/ui/src/components/composer/composer-actions.tsx#function Secondary | a leaving secondary action (Stop) must be inert immediately; WebKit pauses animation frames in hidden windows, so exits can last indefinitely
@iamnbutler
iamnbutler merged commit 9ed7b1b into main Oct 15, 2026
1 check passed
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