Repository navigation
UI Consistency: All clear
No new UI consistency findings on d84a531. Every previously reported item is now resolved in the code: chat and workspace video previews share the MediaVideoPlayer primitive, chat media geometry derives from the named CHAT_MARKDOWN_MEDIA_* constants, both expanded-dialog failure states share one ExpandedMediaFailure surface with role="alert", ExpandedImageDialog portals to document.body, inline video failures retain Retry / Open original / Expand, and openMarkdownMedia resolves its environment from the explicit threadRef rather than the active environment. The single remaining item from the prior run β removal of the focused MediaVideoPlayer / ExpandedImageDialog coverage in af0ccf35 β is acknowledged as a maintainer-approved test-scope decision and is not re-raised as a UI defect.
Details
Note
Your check run agent prompt is: .macroscope/check-run-agents/ui-consistency.md
More information about how Check Run Agents work can be found in our Help Center.
Scope reviewed (per this check's include patterns): apps/web/src/components/media/MediaVideoPlayer.tsx, apps/web/src/components/media/OpenOriginalMediaLink.tsx, apps/web/src/components/ChatMarkdown.tsx, apps/web/src/components/chat/ExpandedImageDialog.tsx, apps/web/src/components/chat/ExpandedImagePreview.tsx, apps/web/src/components/chat/externalLinkContextMenu.ts, apps/web/src/components/files/FilePreviewPanel.tsx, apps/web/src/components/files/projectFilesQueryState.ts, apps/web/src/assets/assetUrls.ts, apps/web/src/lib/videoFirstFrame.ts, apps/web/src/state/use-atom-query-runner.ts, apps/web/src/pierre-icons.ts. Non-web files (server, mobile, shared packages, docs) were used as context only.
Checks performed:
- Shared controls: failure/retry/expand affordances use
Button(variant="secondary",size="sm"/icon-xs) and the sharedOpenOriginalMediaLinkrender-prop anchor; no locally reconstructed primitives. - Tailwind ownership: video and image embeds both derive layout, bounds, max-width, and frame chrome from the same file-local constants, so a change to the shared 30rem bound moves both media kinds together.
- Duplication:
WorkspaceVideoPreviewinFilePreviewPanel.tsxnow composesMediaVideoPlayerand keeps only contextual sizing at the call site, matching the mobile factoring. - Accessibility:
role="alert"on all three media-failure surfaces,role="status"/aria-labelon loading placeholders,aria-labelon the video element and Expand control. - Environment routing:
openMarkdownMediaandMarkdownFileLink.onOpenMediaare gated on an explicitthreadRef, and the asset resource is built fromthreadRef.environmentId/threadId, with no active-environment fallback. - Latest commit (
d84a531) only reordershandleOpenInFilePreviewso workspace-relative media prefers the file panel over the media preview; the media path remains the fallback and the context-menu item is unchanged.
Not re-raised (already answered in-thread): the retry/error inner panel not inheriting authored style was raised by another reviewer and is being tracked there.
π Agent activity β 6 tool calls
π I'm reviewing the current state of PR head d84a531, checking whether my earlier findings were addressed given the maintainer's note about the test-scope decision, and now looking at the current files for any remaining UI consistency issues.
1. browse_code β apps/web/src/components/media/MediaVideoPlayer.tsx
2. browse_code β apps/web/src/components/media/OpenOriginalMediaLink.tsx
π The head commit hasn't changed since my last review, so this is a rerun on the same code. My only prior finding was about test-coverage removal, which the maintainer already dismissed as an intentional scope decision β I need to think about whether that finding should still stand given the maintainer's explicit pushback. Let me double-check whether anything new appears in ChatMarkdown's media handling or FilePreviewPanel that I haven't already flagged, particularly around video preview consistency.
3. git_tools β CHAT_MARKDOWN_MEDIA|ChatMarkdownVideo|ChatMarkdownImageFallback
π I've resolved the named constants finding and unified the dialog failure card. There's also an unresolved thread from another agent's review about the retry/error inner panel not preserving authored height/width styling at ChatMarkdown.tsx:1353 β that's not mine to address, so I want to avoid duplicating it, though I'm weighing whether it still falls within my UI consistency scope. Since my only actual finding was the test coverage one, which the maintainer already dismissed as intended behavior, I'm left with a conflict: the check instructions say to output exactly "All clear" when there are no active findings, but the system prompt requires a JSON response matching the schema. I need to reconcile this by producing the JSON structure while reflecting that there's no outstanding finding to report. Before finalizing, let me do a bit more diligence and scan for any recently changed web UI files I haven't reviewed yet, particularly what changed in apps/web/src across the recent commits leading up to the workspace-link correction.
4. git_tools β 73776d4..d84a531
5. git_tools β d84a531
π I'm checking whether showing both the "Preview media" menu item and the panel-opening primary action creates a consistency issue in MarkdownFileLink, but concluding it's probably fine since both features coexist. I'm also starting to look at how openMarkdownMedia handles environment routing with its thread reference.
6. browse_code β apps/web/src/components/ChatMarkdown.tsx
π Nothing else stands out beyond the minor menu ordering, which isn't worth flagging. On the earlier test coverage point, the maintainer's dismissal aligns with the rule since this was a visual-only migration without behavioral changes, and the author backed it with real-browser verification, so I'll accept that. Since there are no new findings, I'll conclude with a success state and no comments β just a brief "all clear" summary for the UI consistency check.
Agent Credits: 135 credits
Token usage: 12 uncached input Β· 642,611 cache-read input Β· 136,299 cache-write input Β· 4,211 output
Agent Credits may also include non-token charges from external tools such as web research.