feat(web): play video attachments in chat - #8688
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 Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
There was a problem hiding this comment.
UI consistency review: two findings in the changed web UI. Both are small and self-contained; the video playback path, play/download affordance split, and blob lifetime handling otherwise look consistent with the existing dialog and timeline contracts.
Posted via Macroscope — UI Consistency
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This is a substantial cross-layer feature that adds video playback, blob loading, fallback downloads, server MIME/disposition changes, and desktop CSP changes. It also changes how existing video attachments behave, so the runtime and UX impact should receive human review. You can add or adjust custom eligibility rules. Learn more. |
276494b to
f988a0f
Compare
There was a problem hiding this comment.
One new finding on the timeline video tile. Two earlier findings (video element accessible name in ExpandedImageDialog.tsx, dropped CSP rationale in PullRequestMarkdown.tsx) are still open on this head and are not re-posted here.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One new finding on the video playback path; the unresolved caption gap from the previous run is noted in the check summary rather than re-commented.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One accessibility finding on the new video play tile in the timeline. Everything else in the web UI scope (composer video tiles, expanded dialog video branch, preview builder) matches the sibling image-tile patterns.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding: the new composer video tile repeats the disable-while-loading pattern, which drops keyboard focus. Same issue as the timeline tile flagged earlier — fixing both keeps the play affordance keyboard-usable.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding in the new composer video tile: the filename caption overlays the tile's upload chrome.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding on the inline-video path: routing every video/* attachment to the player removes the only download affordance for formats the browser cannot decode.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding on the new unplayable-video fallback in ExpandedImageDialog.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding on the new video download fallback: the object URL is revoked on the next macrotask, which the repo's own download helper documents as unsafe.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding on the new composer video tile: a restored (uploaded, no local bytes) video renders with neither a thumbnail nor its name, unlike its sibling tiles.
Posted via Macroscope — UI Consistency
What changed
Why
#8235 and #8236 made generic attachments uploadable and downloadable, but videos still looked like files and opened as downloads. This adds playback without a new attachment type or player dependency.
Verification
Limitation
Playback depends on the formats and codecs supported by the client browser. Unsupported codecs keep the original download fallback.
Demo
CleanShot.2026-08-30.at.5.16.14.mp4
Note
Add inline video playback for chat attachments
ExpandedImageDialogplays uploaded videos fetched into a blob URL with a download fallback.Content-Typeheaders. Desktop CSP adds amedia-srcdirective allowingblob:URLs. Composer draft store normalizes MIME types and replacesneeds-reattachmarkers when repicking videos.onFileDownloadwithonFileOpeninTimelineRowSharedStateandMessagesTimelineProps. Video assets in AssetAccess.ts are now served inline withoutdownload: trueand receive a strippedContent-Type.Macroscope summarized 19a2c66.