feat(web): images and videos sent with text sit above the bubble as their own shape#27306
Stacked on #27305.
Images and videos sent with words were squeezed into the text bubble as small 4:3 thumbnails, while the same media sent alone now shows as its own rounded shape (https://git.cafe/pingdotgg/t3code/pulls/26769). Media with text now matches, chat-app style:
- Images and videos sit above the text bubble as their own shape: a lone image at a fixed 192px height in its own aspect ratio, several images as one rounded collage split by hairlines, a lone video at 320px wide.
- The text bubble's top-right corner tightens to 6px where it meets the media above.
- Videos use the same 16px corners and inner edge as images, alone or with text.
- Files are unchanged: they already show as inline chips inside the text.
Verified in the web dev app by sending image + text, two images + text, video + text, file + text, and an image alone through the real composer (before left, after right). check:changed passes.
Not covered: mobile still shows media inside the bubble when the message has text.
Reviewed with sol-loop: 3 rounds, gpt-6.1-sol at xhigh plus Opus 5.5 at high (sol hit a rate limit). Verdicts: merge-ready, merge-ready.
Opus 5.5 via Claude Code in T3 Code
Checks
Approvability
Verdict: Approved at aaae62d
Macroscope's review found this PR approvable — Images and videos accompanying user messages now appear as separate shapes above the text bubble. The change is confined to presentation and preserves existing attachment loading and preview actions.
You can add or adjust custom eligibility rules. Learn more.
Thread transfer impact
⚠️ The latest CI run did not produce a thread transfer result for c829cb1.
This comment will update automatically after the next completed run.
No actionable comments were generated in the recent review.
External image Recent review info
-
External image Run configuration
- Source mode: Auto
- Repository: pingdotgg/t3code
- Branch: t3/user-message-attachments
- File: .coderabbit.config.ts
- Commit: c829cb1
- Layers: Repository TS config
- Review profile: CHILL
- Plan: Advanced
- Run ID:
7654a4b8-286f-48dd-b3bb-49e07696645b
External image Commits
Reviewing files that changed from the base of the PR and between f012fa210dbf464a5ea68fe9071ee377682f8d66 and c829cb1b9d8760258cd6d98d7ccd515216653890.
External image Files selected for processing: 4
apps/web/src/components/chat/MessagesTimeline.logic.test.tsapps/web/src/components/chat/MessagesTimeline.logic.tsapps/web/src/components/chat/MessagesTimeline.tsxapps/web/src/components/chat/TimelineUserMessageRow.tsx
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.
Walkthrough
The timeline now groups adjacent own user messages and identifies continued steer bursts. User message rendering changes how media, bubbles, and metadata appear for grouped messages and messages with media alongside text.
Changes: Timeline user messages
Layer / File(s) Summary User message grouping
apps/web/src/components/chat/MessagesTimeline.logic.ts,apps/web/src/components/chat/MessagesTimeline.logic.test.tsRows now include grouping and steer-continuation metadata for adjacent own user messages. Stable row comparison checks the new fields. A regression test covers two consecutive steers. Grouped messages and media presentation
apps/web/src/components/chat/TimelineUserMessageRow.tsx,apps/web/src/components/chat/MessagesTimeline.tsxMessages with text and media render media above the bubble. Grouped messages use adjusted bubble and metadata layouts, and continued steers omit the steer marker. Standalone video attachments use different framing. The row-padding conditional was reformatted without changing its conditions or values. Priority: External image Low
Estimated code review effort: 3 (Moderate) | ~25 minutes
Change: Feature
Suggested reviewers:
juliusmarminge
Merge Risk: External image Minimal · up to c829c
No identified issue prevents merging after normal checks.
Pre-merge checks: Passed 4
Check name Status Explanation Title check Passed The title clearly and concisely describes the primary change: images and videos sent with text now appear above the text bubble as separate shapes. Description check Passed The description clearly covers the problem, implemented behavior, verification steps, screenshots, and known mobile limitations. It does not use the template headings and does not explicitly document … Linked Issues check Passed Check skipped because no linked issues were found for this pull request. Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request. Full details: Description check
Explanation
The description clearly covers the problem, implemented behavior, verification steps, screenshots, and known mobile limitations. It does not use the template headings and does not explicitly document maintainer approval, but the core required information is present.
Finishing Touches: 💡 2
-
⚔️ Resolve merge conflicts: 💡
- Resolve merge conflict in branch
t3/user-message-attachments
- Resolve merge conflict in branch
🛠️ Fix failing CI checks: 💡
- Commit to this branch
- Create a new PR
📝 Generate docstrings
- Commit to this branch
- Create a new PR
🧪 Generate unit tests (beta)
- Commit to this branch
- Create a new PR
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.