Repository navigation
cmux NEXT agent engine bench: WebKit modes stay WebKit, and --shots captures each engine over the window glass - #24160
Conversation
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
red: cmux-next checks (god files, concurrency, crash safety, l10n); NEW: |
|
Found 11 test failures on Blacksmith runners: Failures
...and 1 more test failures. View all on Blacksmith
|
|
Bead |
…dow glass; WebKit modes stay WebKit `--shots DIR` takes light and dark screen captures of the open chat in each mode with the window glass on (background-opacity 0.7, macos-glass-regular): an empty Ghostty config is an opaque window, which hides what a page does over the glass. The screen, not the app's snapshot, since only the window server composites a Chromium page window over the glass. The own and page modes pin agent.chromium off: it is on by default since 69a51bf, so the WebKit baseline was loading in Chromium. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e397eec to
d583e5d
Compare
|
Owned by orphan-sweep on air-blue · session |
Agent-Session: orphan-sweep lander (air-blue, session 01a15cfc-663f-7650-b9f7-64d198c6b88b)
|
Review (codex xhigh via acpmux on cmux16, correctness first): SHIP at ce66008 Reviewer verdict, quoted: no blocking findings. The Non-blocking follow-up: restore the appearance in a Compile:
|
#24269) * docs(next): a Chromium page is see-through, and the gap is backdrop-filter The "Known gap" paragraph said a Chromium page is an opaque child window that cannot show a see-through backdrop. 8e36a5b fixed that the same day the chat moved to Chromium, by binding the fork's cmux_tab_set_transparent_background through the shim, and PageWebView+Chromium applies it to every cmux page; the paragraph was never updated. Leo asked today whether we can show the background and style pages like AppKit, and this is the line someone reads to answer that. The real remaining gap goes in its place: backdrop-filter does not draw over a see-through Chromium page, so a glass panel over one reads as tint without the frost it has over WebKit (#24160 measured it). Leo-ask: ask-665f9ad8ba Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cb8-bbf0-7010-8d04-f9f2c0cb55df&host=big-red * docs(next): drop the backdrop-filter gap claim, which was backwards An independent review blocked the gap sentence this PR had added: "backdrop-filter does not draw over a see-through Chromium page, so a glass panel over one reads as tint without the frost it has over WebKit." The repo's only probe of that says the opposite. glass-lens-DESIGN.md (macOS 27, Playwright WebKit, 2026-10-20): WKWebView "parses `backdrop-filter: url(#svg-filter)` but renders nothing for it ... where Chromium bent them." #24024 separately frosts a glass card over the Chromium agent chat. Replacing one false claim with another unverified one is the thing this PR exists to stop, so the sentence goes rather than gets narrowed. What stays is what the review verified hop by hop: the shim binding (`shim_process.mm`, `shim_background.mm`), `CEFTab.pageSeeThrough`, the single unconditional `setSeeThrough(true)` on the one Chromium start path in `PageWebView+Chromium`, and a browser site staying opaque because `pageSeeThrough` defaults false. Two additions, both cited in the tree: a browser tab on the New Tab or blank page is see-through in both engines, Chromium's by masking the page out (`PageBackground`, `CEFTab.applyOcclusion`, Lawrence 2026-10-10); and the engine-agnostic reason a `backdrop-filter` has nothing to bend over a transparent region, which is why the lens hands each page a still of the wallpaper (glass-lens-DESIGN.md). "web pages" became "a site in a browser tab": the One backdrop rule twenty lines up uses "web pages" for cmux's own surfaces, so the two read as a contradiction. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cb8-bbf0-7010-8d04-f9f2c0cb55df&host=big-red * docs(next): make the see-through paragraph say exactly what each engine does Three precision findings from the second review, all of them wording this doc exists to get right. The New Tab sentence said "see-through in both engines too", which the source it paraphrases (`PageBackground`) also says unqualified — but the two mechanisms are not the same and they diverge. WebKit re-reads the URL every time (`WebKitTab+LoadingBackground.pageDidFinish`: `guard !PageBackground.isBlank`), while Chromium holes the page out only until the first real page and latches it (`CEFTab+LoadingBackground.reachedFirstRealPage`: `guard !pastFirstRealPage`, then `pastFirstRealPage = true`, with no reset in Sources). So a tab that visits a real page and returns to the New Tab page is see-through in WebKit and not in Chromium. The paragraph now names both mechanisms and that consequence. The wallpaper still is the host's, not the lens's: glass-lens-DESIGN.md says "the host gives each page a still of the wallpaper as it is drawn, and the page lenses its own copy of it", and the lens is the in-page canvas that consumes it. The see-through hop is gated on fork API 17 (`CEFShimLibrary`: "0 when the fork lacks it"), which the text stated flatly; it now names the API, as the sentence this PR deleted once named the fork. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cb8-bbf0-7010-8d04-f9f2c0cb55df&host=big-red --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
|
Shipped in:
|
|
Shipped in:
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo: "lawrence wants to do chromium... well how could we do glass through chromium?"
Scope now: the engine bench only. This PR first added a Debug toggle (
agent.chromiumGlass, off) that made the Chromium agent chat see-through. That part was dropped from the branch (force-push at 04:56Z, beforee397eec→d583e5d) because 8e36a5b (lawrencecchen, "cmux pages in Chromium are see-through like their WebKit pages") landed the same fork binding (cmux_tab_set_transparent_background, API 17) for every cmux page, with no toggle. No Swift, no tunable and no default change is left here.What it does (
scripts/cmux-next/agent-engine-bench.py, +27/-2)agent.chromiumis on by default since 69a51bf, so the bench'sownandpagebaselines were loading the chat in Chromium. They now pinagent.chromium: false;chromiummode pins it true.--shots DIR: light and dark screen captures (screencapture, one file per display) of the open chat in each mode, plusdebug.window_list, restoringdebug.appearancetosystemafterwards.--shots, the scratch Ghostty config turns the window glass on (background-opacity = 0.7,background-blur = macos-glass-regular); an empty config is an opaque window, which hides what a page does over the glass. Without--shotsthe config stays empty, as before.Bench numbers (same harness, cmux-mac-mini-cua, window glass on, 10 chats; taken before the Swift part was dropped)
See-through costs nothing measurable over opaque Chromium on these numbers.
No capture: the diff is a bench script on the fleet, with no app UI change. The private side-by-side is in the design references repo as
cmux-next-chromium-glass-side-by-side.Agent session: cosmic-gray
Agent session: Air-Blue
🤖 Generated with Claude Code