feat: goose2 message bubble + action tray#8720
Merged
Conversation
Move the message actions into a reserved tray under each bubble so the\nhover target matches the bubble width and the controls no longer rely\non a portaled hover card or full-row hover state.\n\nKeep the copied checkmark visible until the clipboard confirmation\nexpires, and extend the MessageBubble tests to cover the muted user\nbubble shell, the reserved action tray, and the copy confirmation\nlifecycle. Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Tighten the visual details of the message action row in Goose 2. Switch the tray actions to the shared ghost-light pill buttons, keep the copy action highlighted while the confirmation checkmark is shown, and pin the timestamp to the inside edge of each row. This also trims the reserved gutter so the tray sits closer to the bubble. Add focused assertions for timestamp wrapping, per-side action order, and the copied-state styling so these presentation details stay stable. Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Fix the action-row DOM assertion after rebasing the message bubble tray work onto main. The tray structure is unchanged for users, but the test now needs to inspect the inner row wrapper rather than the outer positioning container. Add a narrow MessageBubble file-size exception as well so the repo's Goose 2 pre-commit checks continue to pass while this presenter still owns the bubble, attachments, tool output, and action tray markup. Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
f7e21f4 to
b976ed0
Compare
spikewang
pushed a commit
to spikewang/goose
that referenced
this pull request
Apr 22, 2026
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
lifeizhou-ap
added a commit
that referenced
this pull request
Apr 22, 2026
* main: feat: extend goose2 context window ux with auto-compaction (#8721) improve goose2 agent management flows (#8737) alexhancock/tui-improvements (#8736) fix: add strict:false to Responses API tools and gpt-5.4 to known models (#8636) persist and reliably apply chat model selection (#8734) merge goose-acp crate into goose (#8726) docs: AGENTS.md section on goose2 desktop backend architecture (#8732) feat: goose2 message bubble + action tray (#8720) consolidate provider ACP methods onto inventory (#8710) ci: declare and enforce MSRV of 1.91.1 (#8670) fix(ui): correct grammar in apps view description (#8668) (#8679) Stop load openai fast model for openapi compatible custom endpoint (#8644)
lifeizhou-ap
added a commit
that referenced
this pull request
Apr 22, 2026
* main: (41 commits) removed the specific code owner for documentation change (#8749) fix(providers): handle missing delta field in streaming chunks (#8700) refactor(providers): extract http_status module and rename handle_status_openai_compat (#8620) fix(providers/openai): accept streaming chunks with both reasoning fields (#8715) feat: associate threads with projects (#8745) upgrade goose sdk and tui to be compatible with the latest agentclientprotocol/sdk package (#8667) feat: extend goose2 context window ux with auto-compaction (#8721) improve goose2 agent management flows (#8737) alexhancock/tui-improvements (#8736) fix: add strict:false to Responses API tools and gpt-5.4 to known models (#8636) persist and reliably apply chat model selection (#8734) merge goose-acp crate into goose (#8726) docs: AGENTS.md section on goose2 desktop backend architecture (#8732) feat: goose2 message bubble + action tray (#8720) consolidate provider ACP methods onto inventory (#8710) ci: declare and enforce MSRV of 1.91.1 (#8670) fix(ui): correct grammar in apps view description (#8668) (#8679) Stop load openai fast model for openapi compatible custom endpoint (#8644) feat(hooks): add Husky git hooks for ui/goose2 (#8577) fix: links in chat could not be opened (#8544) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Category: improvement
User Impact: Goose 2 chat messages now show a bubble-scoped actions tray with a small downward reveal, and copy confirmation stays visible until it clears.
Problem: Message actions were tied to the full message row, so the hover target felt broader than the visible bubble. Copy confirmation was also easy to miss because the tray disappeared as soon as hover ended.
Solution: This update mostly refreshes the message presentation: the actions tray is visually attached to each bubble, reveals just beneath the message, and uses a subtle motion treatment that keeps the layout steady. It also keeps copy confirmation visible for the full timeout so the feedback reads clearly.
File changes
ui/goose2/src/features/chat/ui/MessageBubble.tsx
Reworked the message actions presentation from a row-level hover treatment into a bubble-scoped tray with reserved space below each message. The copy action now uses the shared clipboard hook so the tray stays visible while the copied checkmark is active.
ui/goose2/src/features/chat/ui/tests/MessageBubble.test.tsx
Expanded the focused UI coverage to assert the muted user bubble shell, the reserved actions tray structure, and the copy confirmation lifecycle. Added clipboard mocking and timer control so the new behavior is exercised deterministically.
Reproduction Steps
Demo