Polish reply timeline interactions#477
Conversation
Align the header, timeline, thread panel, composer, and sidebar shells so the reply design branch reads as one consistent visual system. Made-with: Cursor
Made-with: Cursor
Align sticky day headers, thread summaries, and composer offsets so message content stays visible and date transitions happen at the right moment. Soften side-sheet headers and markdown code blocks while keeping thread conversations auto-scrolled as new content arrives. Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Group messages by day so sticky date labels push each other out during scroll instead of overlapping. Co-authored-by: Cursor <cursoragent@cursor.com>
Bring reply-design up to date with origin/main while preserving the composer layout and new mention profile data. Co-authored-by: Cursor <cursoragent@cursor.com>
Render active agent process pills inline with the message timeline so they sit under the latest message text instead of the composer edge. Co-authored-by: Cursor <cursoragent@cursor.com>
Remove redundant fragments and apply formatting so the full desktop Biome check passes before review. Co-authored-by: Cursor <cursoragent@cursor.com>
Design-Fixes.mp4 |
|
@thomaspblock does it feel weird that the agents show below other users? Like when someone messages or joins the channel the bot goes below them.
In this case, Rick is responding to a previous message, but it feels like it's responding to my last message here. For the user it almost implies that "Rick" is responding to tyler here, which is why I think it was docked to the bottom before. Whatcha think!? |
Yes thats very weird. I'll put it back down right above the composer windows. |
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Place working-agent selection beside the send button so activity stays close to message composition, and tighten chat paragraph spacing. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep ChannelPane compatible with callers that only pass session agents while preserving the composer activity selector. Co-authored-by: Cursor <cursoragent@cursor.com>
Restore channel descriptions in the header and make the profile popover smoke test target the profile popover explicitly. Co-authored-by: Cursor <cursoragent@cursor.com>
Use the popover as a hover anchor so clicking an avatar opens the profile panel without toggling the hover card back open. Co-authored-by: Cursor <cursoragent@cursor.com>
agentactivity.mp4All fixed and added new activity. Lets just try it for now we can always change later. |
Show active agent controls in the thread composer and keep channel descriptions available as title hover text without rendering a second header line. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
|
yes I am aware but i didn't want to add yet another change, so rather fix once i have the new version in :) |
|
@codex please review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4877ee2256
ℹ️ 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".
| <MessageRow | ||
| activeReplyTargetId={activeReplyTargetId} | ||
| highlighted={message.id === highlightedMessageId} | ||
| message={message} |
There was a problem hiding this comment.
Preserve search highlighting on thread-head rows
Messages that have a thread summary now take the summary && onReply branch, but that MessageRow no longer applies the find-in-channel active state (searchActiveMessageId) or match highlighting props. As a result, when a search hit lands on a thread-head message, it is not visually highlighted like other matches, which makes keyboard/find navigation inconsistent and easy to miss for users.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Just a heads up here, we might have to fix this in the future too for search
| onBlur={closeWithDelay} | ||
| onClick={() => { | ||
| clearHoverTimer(); | ||
| setOpen((current) => !current); | ||
| }} |
There was a problem hiding this comment.
Keep bot activity popover open for keyboard navigation
The trigger schedules a close on onBlur, while the content disables Radix auto-focus (onOpenAutoFocus with preventDefault) and has no focus-based cancellation path. In practice, keyboard users opening this popover with Enter/Space cannot reliably move focus into its action buttons before the delayed close fires, so selecting an agent session becomes mouse-only.
Useful? React with 👍 / 👎.





Summary
main.Test plan
cd desktop && pnpm run typecheckdesktop-check,desktop-tauri-fmt,mobile-check,rust-fmt,web-checkMade with Cursor