[codex] keep completed assistant copy actions visible#4107
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved This is a minor UI adjustment that makes assistant message copy actions always visible instead of requiring hover. The change is limited to CSS classes with proper test coverage and no runtime logic changes. You can customize Macroscope's approvability policy. Learn more. |
Fixes #4046
Problem
The completed assistant-message footer is hidden with
opacity-0until its row is hovered or focused. When someone selects response text and moves outside the row, the footer fades out and the copy action disappears before it can be used. The same hover dependency also makes the action undiscoverable on non-hover inputs.Root cause
AssistantTimelineRowcorrectly limits copy controls to eligible completed assistant messages through the existing copy-state logic, but the containing footer adds a second presentation constraint: hover-only opacity. That constraint hides an otherwise valid action based on pointer position.Fix
Validation
pnpm --filter @t3tools/web test -- src/components/chat/MessagesTimeline.test.tsx— 151 files and 1,318 tests passedvp check— passes with 10 existing warnings outside this diffvp run typecheckgit diff --checkVisual verification
The issue recording demonstrates the before-state: the completed-message footer disappears after the pointer leaves the assistant row.
The after-state below was captured from the full local app with the pointer moved away from the assistant row. The copy action and timestamp remain visible; the footer's computed opacity is
1.Web/shared impact
This changes only the presentation of the completed assistant-message footer in the web/desktop chat timeline. Message state, copy behavior, streaming behavior, server communication, native mobile code, and shared contracts are unchanged.
Migration/deploy impact
None. There are no schema, migration, API, auth, session, realtime transport, or deployment configuration changes.
Post-deploy smoke check
Note
Keep completed assistant message copy actions persistently visible
Previously, the assistant message footer (copy link button and timestamp) was hidden behind hover/focus opacity transitions. The footer in
AssistantTimelineRownow renders with full opacity whenshowAssistantMetais true, removing theopacity-0and hover/focus classes. Adata-assistant-message-footer="persistent"attribute is added to the wrapper div to reflect this behavior change.Macroscope summarized 1479e5d.
Note
Low Risk
UI-only change in the chat timeline footer styling; copy eligibility logic is unchanged.
Overview
Completed assistant message footers (copy link and timestamp) are no longer hidden behind hover/focus opacity. The footer stays visible whenever
showAssistantMetaapplies, without changing when copy controls are shown for streaming or in-progress turns.AssistantTimelineRowdrops theopacity-0/group-hovertransition classes and marks the footer withdata-assistant-message-footer="persistent". A regression test renders a finished assistant message and asserts the copy action is present and not tied toopacity-0.Reviewed by Cursor Bugbot for commit 1479e5d. Bugbot is set up for automated code reviews on this repo. Configure here.