Repository navigation
Show single-agent Stop on the activity bubble - #3140
Conversation
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz> Signed-off-by: klopez4212 <klopez4212@gmail.com>
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 74f6daa396
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
tulsi-builder
left a comment
There was a problem hiding this comment.
🤖 AI-agent review (BasilBot). For a single agent, opening Activity directly and showing Stop inline cuts out a step, which is a nice simplification. I agree with Codex's focus finding (replied on that thread). Two smaller notes are inline.
| } | ||
| @media (hover: hover) and (pointer: fine) { | ||
| .inlineStop { | ||
| opacity: 0; |
There was a problem hiding this comment.
🤖 The hidden Stop still takes up its width when the bubble is at rest. opacity: 0 hides the button but keeps its space, and the bubble is sized to its content. So with one agent working and no hover, the pill seems to end in a blank area about the width of a Stop button. That avoids a jump when Stop appears, which may be the intent. But the screenshots only show the hover and focus states. Could you add a resting-state screenshot so design can decide between the empty tail and a small reflow on hover? (For example, width: 0 / overflow: hidden until revealed, or letting it overlay the trailing edge.)
There was a problem hiding this comment.
🤖 Resolved by 6a9e73f: Stop now overlays the trailing edge, so the resting bubble no longer reserves its width.
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz> Signed-off-by: klopez4212 <klopez4212@gmail.com>
tulsi-builder
left a comment
There was a problem hiding this comment.
🤖 AI-agent re-review (BasilBot) of 6a9e73f. The overlay fixes the blank tail, and thanks for the resting-state screenshots. One new design question is inline. The focus finding and the "Stopping…" announcement from the previous round are both still open at this commit (noted on their threads).
| .overlayContent { | ||
| mask-image: none; | ||
| } | ||
| :hover > .inlineStop, |
There was a problem hiding this comment.
🤖 Design question: Stop now appears right where people click to open Activity. The whole bubble opens Activity, and the right part of it turns into Stop the instant the pointer enters, with no delay or fade. Someone heading for the bubble's right side to open Activity can end up interrupting the agent's run instead. Before, Stop lived in a separate popup row, so this risk didn't exist. Two related notes:
- With a short status (for example, just the avatar and "Working"), the 6rem Stop area plus the fade covers most of the bubble on hover, so the status disappears exactly when you're looking at it.
- Some small options: a short reveal delay or fade-in, so a click that lands right as the pointer arrives still opens Activity; or keeping Stop's container from covering the text when the bubble is narrow.
I'm not calling this a blocker. Flagging it for design sign-off, since accidentally stopping an agent costs the user its in-progress work.
baxen
left a comment
There was a problem hiding this comment.
🤖 AI-agent review (ART, for @baxen). I'm approving on the assumption that the points below get fixed before merge. Opening Activity directly for one agent and putting Stop inline is a good simplification. The shared Stop action also removes the copy that was in the popup.
Please fix
- Focus is lost in both directions of the one-to-several change. This adds to the Codex and BasilBot thread. When going from one agent to two with focus on the inline Stop, the button unmounts and focus falls to the page. Going from two agents to one, the popup closes, and its final focus now points at the new wrapper, which can't take focus. Moving focus to the activity bubble before either swap would fix both cases. A test that focuses "Stop Blossom" before the second agent starts would cover it.
- The spoken label ignores a pending stop. The bubble shows "Stopping…", but the label still announces the normal status. Agrees with the inline note.
- Give the new wrapper its own class. It currently reuses the bubble button's class so it inherits the bubble rules. Three more rules then undo padding and gap on the wrapper and move them onto the inner button. One of those undo rules only wins because it comes later in the file. A wrapper class of its own would remove the overrides and the order dependence. In the same area, the hover rule for showing Stop isn't limited to this component. It should be scoped to the controls container.
- Keep the Stop browser test focused on behavior. It now runs light/dark × two widths and writes screenshots on every run. That's acceptance evidence living inside a regression test. Several checks also find elements by walking up to parent elements, so they break if the page structure changes. Please move the screenshots out and target elements by role or label.
Separately: the earlier note about the hidden Stop leaving an empty tail at rest doesn't apply to the latest commit, because Stop now overlays the text instead of taking space.
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz> Signed-off-by: klopez4212 <klopez4212@gmail.com>
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz> Signed-off-by: klopez4212 <klopez4212@gmail.com>
|
🤖 Addressed all four required items in a23f432 and 6e295bd:
63 component tests and push hooks pass. The two browser files passed 28 cases, with the two Stop cases passing on rerun after correcting their semantic hover target. Full local Vitest also passed: 1,039 files / 20,186 tests (8 files / 23 tests skipped). Hosted CI is running. The two matching inline blocker threads are resolved. The optional hover design question remains separate. — Terp |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6e295bd44f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| alongside current step details when available. With Reduce Motion enabled, | ||
| the dots stay still. Open the live indicator or expand recorded work to view | ||
| the agent’s activity or **Stop** the running request. The live indicator | ||
| the dots stay still. For one agent, click the live activity bubble to open |
There was a problem hiding this comment.
When this commit is submitted in a PR, the hosted DCO check will fail because the commit message has no Signed-off-by trailer. Recreate the commit with the required sign-off before submission.
AGENTS.md reference: AGENTS.md:L272-L278
Useful? React with 👍 / 👎.
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz> Signed-off-by: klopez4212 <klopez4212@gmail.com>
…nt-progress-rows * origin/main: (53 commits) fix(search): make Command F search the Bestie conversation (#3084) fix(plugins): keep failed update checks on the plugin's Settings row instead of a toast (#3088) Show single-agent Stop on the activity bubble (#3140) fix: support explicit hosted browser origins (#3149) fix: keep Codex tool namespace descriptions bounded (#3128) fix(messages): show "New messages" in channels longer than one page (#3071) Keep shared agent guidance generic (#3134) fix(typing): a thread reply also ends the agent's channel-level typing (#3148) Stream protected evidence across agent runtimes (#2882) feat(identity): consolidate key and account controls (#3069) Add portrait-colored foil and animated agent card reveal (#3144) NEXUS-4190: Disclose unavailable saved Solo choices (#2544) docs: mark the plugin API as preview and say which parts are steady (#3129) Open the app with a saved key; check the account's key in the background (#3064) fix(federated-identity): name only communities that require NIP-FI as affected by a switch (#3072) feat(pairing): signed in with Builderlab, say to get the app instead of pairing (#3039) Show Add agent button on shared agent previews (#3131) NEXUS-4224: Preserve peer unread intent during automatic reads (#2641) fix(plugins): review a pinned link to an installed plugin's source as an update (#3024) perf(profiles): resume verified-profile batches after a planned renewal (#2293) ... Signed-off-by: Gil Birman <gil@squareup.com> # Conflicts: # docs/buzz-help.md
…rminal-font-picker * 'main' of https://github.com/block/buzz-app: (168 commits) Unify Membership sharing and live roster updates (#3147) fix(activity): show one working cue per agent request (#3166) Introduce opt-in first-agent setup (#2804) fix(codex): drop the security-review sign-in prompt from harness defaults (#3188) feat(releases): publish desktop download manifest (#3154) fix(mcp): preserve current attachments across edits (#2937) fix(agents): call the Claude and Codex first-run download "the integration" (#3165) chore(goose): bump bundled goose-acp to v1.58.1 (#3161) Revert "ci: use larger GitHub runners for Rust and browser journeys (#3090)" (#3180) Show Goose's unset thinking level as Default, not Off (#3124) ci(release): publish stable and beta desktop releases from v tags (#3150) fix(messages): end the New messages hold when no repair can sample (#3169) fix(search): make Command F search the Bestie conversation (#3084) fix(plugins): keep failed update checks on the plugin's Settings row instead of a toast (#3088) Show single-agent Stop on the activity bubble (#3140) fix: support explicit hosted browser origins (#3149) fix: keep Codex tool namespace descriptions bounded (#3128) fix(messages): show "New messages" in channels longer than one page (#3071) Keep shared agent guidance generic (#3134) fix(typing): a thread reply also ends the agent's channel-level typing (#3148) ... Signed-off-by: damienrj <damien@squareup.com> # Conflicts: # src-tauri/Cargo.toml
A single working agent currently repeats its activity in a hover popup. Its existing bubble now opens Activity directly. Stop overlays the right side on hover or keyboard focus, with the activity text fading out beneath it. The resting text uses the full bubble width and revealing Stop does not resize the bubble. Touch keeps Stop visible. Multiple agents retain their individual activity/Stop rows in the shared popup.
The existing stop handler, pending feedback, error/retry controls and focus handoff remain in use.
Validation: current-head typecheck, design checks, push hooks and 63 activity component tests pass. Focused Stop-to-summary handoffs in both directions and the pending accessible name failed before the fix and pass afterward; focus elsewhere stays unchanged. Browser validation: 28 journeys passed in the two affected Chromium/WebKit files; the two Stop journeys initially failed on a rounded-corner hover target, then passed using the named activity region. Full local Vitest passes: 1,039 files / 20,186 tests (8 files / 23 tests skipped). Hosted CI is running. The WebKit flake check exposed an empty-thread test focus race; 28d8723 waits for the composer focus handoff before keyboard Activity navigation. That journey passed 10 repetitions in each engine (20 total); push hooks pass.
No browser cases added or removed. The Stop regression now checks representative app wiring, keyboard activation, pointer hit testing and stable bubble width with semantic targets. Its screenshot/theme/viewport matrix was removed; the existing attached acceptance screenshots remain separate evidence from the earlier overlay iteration. Other browser journeys retain multi-agent, navigation, density and retirement coverage.
Try one working agent: hover/focus its activity bubble, use Stop, or click the activity text to open Activity. With several agents, verify the hover list still offers individual controls. Native-host, physical touch-device and human visual acceptance remain unverified.
Screenshots from the app with fixture data: