Repository navigation
agent pane: a gallery stage in a chat loads live, at its own size - #21872
Conversation
When a turn starts or mentions a component gallery stage on loopback (`/gallery/frame.html?entry=<id>` from `bun run dev`, or the live gallery's `/live/frame.html`), its preview card now draws the component at its own size and takes input after Load preview, so the reader tries the component in the chat instead of a quarter-size thumbnail that opens a tab. Any other loopback page keeps the thumbnail. The frame stays sandboxed (scripts, same origin, no forms) and loads nothing until the click. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
|
Receipt for
|
|
Bead |
|
Found 10 test failures on Blacksmith runners: Failures
|
|
red: web / Web status; do not merge until green; see lane-rules |
…ne-gallery-preview
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Unclear: CI failed on
Failures:
Matched log linesNot re-run automatically: Written by
Agents: |
|
Agents: |
|
The red |
…nd loading one keeps its height Red: isGalleryFrame accepts any loopback frame.html?entry=, and there is no gallery-sized placeholder or estimate (previewFrameHeight missing). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d loading it keeps its height isGalleryFrame takes only /gallery/, /live/, /latest/ and /wt/<name>/ frame.html on loopback, since the address comes from reply text. A gallery stage's placeholder and the virtualizer's estimate now take the live frame's 360px, so Load preview no longer moves the transcript; preview rows always use the card's fixed estimate instead of measuring the URL as prose. Ordinary previews keep 180px. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Fix pushed (1c9cdfd): live gallery stages are now limited to the gallery's own mounts (/gallery/, /live/, /latest/, /wt//frame.html) on loopback. A stage's placeholder and the row estimate use the live frame's 360px, so Load preview no longer moves the transcript; ordinary previews stay at 180px. Tests in PreviewCard.test.tsx (red at 7354cbc). |
- regenerated Packages/macOS/CmuxNext/ci-target-graph.json - vp fmt webviews/src/agent-session/acpmux/replyHref.ts - vp fmt webviews/src/pages/markdown/README.md - vp fmt webviews/src/pages/markdown/links.ts - vp fmt webviews/test/markdown-cmux-app-links.test.ts Autofix-Run: https://github.com/manaflow-ai/cmux/actions/runs/39212132724
…8099 # Conflicts: # webviews/src/agent-session/acpmux/replyHref.ts # webviews/src/pages/markdown/links.ts
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Merged by the coord-2 rescue lane at the reviewed head. Every red on this head also fails on feat-cmux-next from the same morning, in unrelated PRs (#21697, #21729, #21623, #21272): cmux-next checks fails on Motion tokens at the base file TabCell+HibernationRing.swift:109, and react-apps-check fails on check-system-blue, composer-footer-plain, theme-colors and agent-pane-mode-keys. |
|
Shipped in:
|
When an agent works on a webview component and points its chat at the component's gallery stage (
http://localhost:5173/gallery/frame.html?entry=…frombun run dev), the chat's preview card drew it as a quarter-size thumbnail that takes no input and opens a tab when clicked. Now a gallery stage loads live in the card, at its own size, after Load preview. You can use the component right there: open its menus, type in it, resize the card. Any other loopback page keeps the thumbnail.isGalleryFrame(previewUrl.ts) recognizes a loopback URL whose path ends in/frame.htmlwith anentryquery. That covers the dev server's/gallery/and the live gallery's/live/mounts. The safety model is unchanged:allow-scripts allow-same-origin, no forms);URL+AgentPanePreview.swiftalready allow them;This is the smallest step toward previews next to a chat. The other half, opening a PR's gallery or feed card beside the chat that made it, already works without app changes:
cmux browser open <url>from an agent lands beside its own chat throughcaller.Before / after
Same gallery stage (
agent-pane.effort-picker) in a preview card, after Load preview:Evidence
bun test src/agent-session/acpmux/conversation/: 24 pass. The newPreviewCard.test.tsxcovers:isGalleryFramecases;aria-hidden, focusable, and a click stays in the chat;vp check --no-fmt --no-lint: no type errors in 1,549 files.vp lint src/agent-session/acpmux/conversation/: clean.bun run devon huge-blue (Linux, headless Chromium through Playwright) using the newgallery-stagevariant. "After" shows a click inside the live frame opening the component's Effort menu. "Before" is the same variant with the card reverted tofeat-cmux-next.No new user-facing strings.
Changelog
🤖 Generated with Claude Code