Skip to content

cmux-next: liquid glass lens primitive and Glass setting - #22815

Merged
teamleaderleo merged 30 commits into
feat-cmux-nextfrom
cmux/glass-lens
Oct 21, 2026
Merged

teamleaderleo merged 30 commits into
feat-cmux-nextfrom
cmux/glass-lens

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

This PR is the primitive, the Debug toggle and the host feed. Adoption on the surfaces (composer, bubbles, queue card, menus and popovers, hover/link/Updated cards, jump pill) follows right after in its own PR; the gallery entry ui.liquid-glass shows them all.

Liquid glass with a real lens: the wallpaper bends at each glass rim, with a thin specular rim and an optional chromatic fringe (Spectrum). One shared web primitive, .ui-glass.

The lens is off by default. Leo (2026-10-21): "the lens thing we just need to see and feel... we can put it as a toggle and later promote to default". Today's glass (Plain Glass) is unchanged for everyone. In DEV and NIGHTLY builds, the Debug Settings choice glass.lens (Glass and Overlays > Liquid Glass: Plain Glass, Lens, Spectrum) turns it on, and Toggle Liquid Glass Lens in the command palette or the Debug menu flips Plain and Lens live. It lives in the build's debug-tunables.json, outside the settings schema, so there is no Settings row and no new default; Release never activates Debug Settings and stays Plain. A Settings > Appearance control comes back when the lens is promoted.

Design: plans/cmux-next/glass-lens-DESIGN.md. WebKit can't refract a backdrop (backdrop-filter: url() parses but renders nothing; probed on macOS 27), and the wallpaper is drawn natively behind transparent web views. So the host sends each page a still of the wallpaper and its rect (cmuxTheme.backdrop), and one WebGL canvas per page lenses that copy under every visible .ui-glass.

  • Web (webviews/src/ui/glass/): tokens --glass-tint, --glass-blur, --glass-frost, --glass-refraction, --glass-rim, --glass-dispersion; class .ui-glass; the lens (lens.ts), which does nothing in Plain, under Reduce Transparency, with no still, or with no glass on screen, and whose rAF loop runs only after scroll, resize, DOM or animation changes. Gallery entry ui.liquid-glass over a generated wallpaper.
  • Host: the Debug choice glass.lens (GlassLensMode.tunable); effective mode is Plain under Reduce Transparency or Low Power Mode, sent as data-glass. GlassBackdropFeed per web view (PageWebView, AgentPaneView, AgentActivityHostView) sends the art as drawn (JPEG, ≤1024 px, off the main thread, cached), its aspect-filled rect, blur and tint; null for video, no art or translucent art.

Media

The PR head built on a fleet mini (cmux-austin-mini-0), the gallery's glass transcript in a cmux NEXT browser tab over a colorful wallpaper:

Lens Plain Glass Spectrum
still lens still plain still spectrum

Video, scrolling under the lens (stepped captures, not real time): lens-scroll-stepped.mp4

Frame time

Same mini (M4, 60 Hz display, no 120 Hz mini in the fleet), PR head app build, 400 turns (402 glass surfaces, 9 on screen), constant 1800 px/s scroll, 6 runs x 6 s per mode:

Mode p50 p95 p99 dropped
Lens 17 ms 18 ms 19 ms 0.14%
Plain 17 ms 17 ms 19 ms 0.09%
Spectrum 17 ms 18 ms 19 ms 0.23%

60.0 fps in every mode; drops are mostly each run's first frame. This counts requestAnimationFrame cadence, not compositor-side misses, at 1x scale.

Changelog

Added: An opt-in Liquid Glass lens for glass surfaces in DEV and NIGHTLY builds (Toggle Liquid Glass Lens in the palette or the Debug menu); the default glass is unchanged.

Observed / Not run

Observed:

  • bun test test/glass-state.test.ts: 13 pass. CMUX_BROWSER_TESTS=1 bun test test/glass-lens.test.ts: 10 pass in Chromium and WebKit (stripes displaced at the rim, not at the center or outside; no canvas in Plain or under Reduce Transparency; one redraw per move, then the loop stops; canvas removed with the last glass).
  • Gallery captures over the fixture wallpaper in all modes, both engines: the rim bends and magnifies the wallpaper; text under the composer and a menu frosts.
  • Scrolling 120 glass bubbles one step per frame, headless WebKit: p50 17 ms, p95 21 ms (plain: p50 17 ms). On a fleet mini in the app: see Frame time.
  • Two independent review passes (heads a885dbe, 55af381).
  • Fleet at the merged head 6acb984 (the final head 048ea3c only adds the regenerated action exports on top): cmux-ci compile-check --app passed; GlassLensTests, GlassBackdropTests, PaletteRankCatalogTests, ActionContractTests, ActionSurfaceParityTests, PaletteMenuVocabularyTests pass (aws-m4pro-7).
  • Settings exports regenerated on the fleet at that head are byte-identical to base; defaults_guard.py check-stamp passes (no new default).
  • Gallery accent/glass invariant scan of the Inspector, Summary card, Updated (changelog update surfaces) and Chief inspector entries: 32 stages, 0 opaque-glass findings.
  • bun run check: one type error in test/editor-find-narrow.test.tsx, unchanged here and red on base (from fix(cmux-next editor): the find pill stays inside a narrow editor #22872).
  • Webview shard reds: each failing file compared head vs base locally; the same counts fail on base (chief-context-copy, composer-history, composer-location-strip, composer-mention, composer-suggested-prompt, quiet-access-chip, settings summaries over 60 chars), the rest pass on both.
  • prepush-gate.py: no new violations.

Not run:

  • The native wallpaper feed in the app (the mini run used the gallery's fixture still), a Retina 2x display and 120 Hz.
  • Flipping the toggle in a running NIGHTLY build (covered by GlassLensTests through the tunable store and by the compile; not clicked by hand).

Leo-ask: ask-0e7ea215d7
Leo-ask: ask-b5bfc7b208

Agent session: cmux16

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 048ea3c: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr22815 -f ref=cmux/glass-lens -f platform=macos -f backend_mode=local

Gallery before/after for 048ea3c: 16 states rendered, 16 images differ, 1484 more touched states not rendered. Images are in the run's artifact, not on this public PR.

gh run download 39679527628 -R manaflow-ai/cmux -n gallery-advisory-22815-048ea3cc4d8db36cfca894cfeb5e4ea549a76ebd (then read gallery-review.json)

States
State Theme Status Diff Picked by
pages.agent-activity/empty Apple System Colors Light unchanged 0% own desktop.css
pages.agent-activity/empty Apple System Colors unchanged 0% own desktop.css
pages.agent-activity/split Apple System Colors Light unchanged 0% own desktop.css
pages.agent-activity/split Apple System Colors unchanged 0% own desktop.css
pages.agent-activity/timeline Apple System Colors Light unchanged 0% own desktop.css
pages.agent-activity/timeline Apple System Colors unchanged 0% own desktop.css
pages.agent-activity/grid Apple System Colors Light unchanged 0% own desktop.css
pages.agent-activity/grid Apple System Colors unchanged 0% own desktop.css
ui.liquid-glass/lens Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/lens Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/plain Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/plain Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/spectrum Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/spectrum Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/lens-light Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/lens-light Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/plain-light Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/plain-light Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/spectrum-light Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/spectrum-light Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/lens-text Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/lens-text Apple System Colors new 0% own Glass.tsx
ui.liquid-glass/plain-text Apple System Colors Light new 0% own Glass.tsx
ui.liquid-glass/plain-text Apple System Colors new 0% own Glass.tsx
agent-pane.composer/new-chat Apple System Colors Light unchanged 0% names README.md
agent-pane.composer/new-chat Apple System Colors unchanged 0% names README.md
agent-pane.composer/side-session Apple System Colors Light unchanged 0% names README.md
agent-pane.composer/side-session Apple System Colors unchanged 0% names README.md
agent-pane.composer/new-chat-suggest-open Apple System Colors Light unchanged 0% names README.md
agent-pane.composer/new-chat-suggest-open Apple System Colors unchanged 0% names README.md
agent-pane.composer/new-chat-suggest-failing Apple System Colors Light unchanged 0% names README.md
agent-pane.composer/new-chat-suggest-failing Apple System Colors unchanged 0% names README.md

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Not verified: macOS jobs did not run: compile and app tests were skipped on 048ea3cc4d; ci-status is green without them.

CI passes on 048ea3cc4d (run 39679876143 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

web and size checks: green

CI fast guards passes on 048ea3cc4d (run). This covers only the fast guards, not CI: CI's result is ci-status.

Tour of 048ea3cc4d (run): no media. The tour job failed before the tour ran (build or setup); the run log has the output.

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…lock

A one-line reply kept the row's 34px floor over its footer, so the
footer sat 16px under it on CI. The reply row above a footer drops
the floor.

The bubble's fill and rim move to one rule block, apart from its
layout, so the shared glass primitive (#22815) can replace it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-eydu9 created for this PR by the cmux coordinator.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

owner: 01a15c40-f076-7583-9fcd-099f2a1deab4

teamleaderleo and others added 2 commits October 20, 2026 20:53
One shared glass surface for every web page and the agent pane:
webviews/src/ui/glass/ adds the .ui-glass class, its tokens
(--glass-tint, --glass-blur, --glass-frost, --glass-refraction,
--glass-rim, --glass-dispersion) and a WebGL lens that bends the
host's wallpaper still at each glass rim. WKWebView can't refract a
backdrop, so the host sends the still through cmuxTheme.backdrop.

Settings > Appearance > Glass: Lens (default), Plain Glass (the blur
glass from before) and Spectrum (lens plus a chromatic rim). Reduce
Transparency and Low Power Mode fall back to Plain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo teamleaderleo changed the title cmux NEXT: liquid glass with a lens rim on composer, messages, menus and cards cmux-next: liquid glass lens primitive and Glass setting Oct 21, 2026
@teamleaderleo
teamleaderleo marked this pull request as ready for review October 21, 2026 03:54
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…#22754)

* test(agent chat): ended runs keep each group's calls listed; MCP calls read in words

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: show each tool call instead of folding runs; humanize MCP tool ids

An opened Worked for no longer folds a run under 'Used tools, ran commands'. Command, read and
search groups open by default with their last 5 calls and '+K more'. Edits stay closed. The
running line, activity line and permission card name an MCP call by server and action
instead of mcp__server__tool; the raw id stays in the tooltip and the opened call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: list a group's commands as Codex does, each 'Ran <command>' with its glyph

Command, read and search groups list flush under their line (no tree guide). Each command row
gets the terminal glyph and the localized 'Ran {command}' around the mono command. Edits keep
the guide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent pane: a running turn lists each call by default (codexToolRuns off)

The app sent codexToolRuns=true, so a running turn still folded each run that text followed into
'Used tools, ran commands' and showed only the newest call of the run in flight. Turn the Debug
tunable off by default; it stays available to compare the folded look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: no tooltip on MCP rows; the raw id stays in the opened call

test/tooltip-rules: an element whose text shows carries no title (Leo 2026-10-13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* test(agent chat): prompt and answer action rows as Claude Code desktop draws them

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: Claude Code desktop's action rows under prompts and answers

A prompt's row under its bubble: its age ('1 hour ago', the time on hover), two ticks once
delivered, Copy, Edit, Fork and Bookmark. The latest prompt shows it always, older ones on hover.
The answer's row moves to the left under its text, time first (turnActionsPlacement defaults to
left; Debug 'right' keeps the old edge).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: a prompt's Fork goes through its own turn; ticks skip unread steers; RTL-safe action rows

Fork under a bubble forks through the prompt's own turn, as its right-click
Fork does. The always-visible row skips failed and queued prompts. Delivered
ticks wait while a steer is unread. Margins are logical so RTL locales mirror.
The visible time drops its tooltip. Gallery plays and the footer browser test
follow the left default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* test(agent chat): a prompt's Fork forks through its own turn

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: a prompt's row has Claude's single Read/Unread check instead of two Delivered ticks

Leo's Claude Code reference (2026-10-20): one check, tooltip Unread while the prompt is being sent or
waits as a steer, Read once the agent has it. The chat-column hover test now expects the prompt row's
Copy (the action row is Claude's); a tool row still shows none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test the transcript's vertical rhythm (red)

A layout test for the agent pane transcript: the steer line under its
bubble, the meta row under a prompt, the band an older prompt's hidden
row leaves, the prompt-to-Worked-for gap, the reply-to-footer gap and
the footer-to-next-prompt gap. It fails on the current CSS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: meta rows hug their message, one transcript rhythm

Four spacing tokens set the transcript's rhythm, as Claude Code
desktop's: --cv-meta-gap (4px, a message to its meta row),
--cv-meta-row (24px, that row's line), --cv-message-gap (8px between
messages) and --cv-turn-gap (24px between turns).

- A steer's read state sits in its prompt's meta row, right under the
  bubble, instead of under the hidden action row.
- A hidden action row keeps only its own 24px line; its buttons fade,
  the row stays, so pointing at a prompt moves nothing.
- A reply's footer sits 4px under the reply, on a 24px line, and the
  turn ends 24px before the next prompt.
- model.ts estimates rows with the same numbers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: user bubbles are translucent tinted glass

The prompt bubble mixed the theme's text into the opaque base, a solid
fill. It is now the text at 12% over transparent, so the window's
backdrop shows through, with the composer's hairline edge kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Gallery: the transcript's rhythm as one fixture

A steered prompt, a reply with its footer, and a Worked for turn in one
transcript, so the spacing between them shows in one capture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: name the prompt's Read/Unread check in comments

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: leave the receipt comments to the message-actions lane

Puts back the two-tick wording in UserBubble.tsx and conversation.css,
which #22773 owns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: leave SteerMark where it was

The steer's read state and the prompt's action-row visibility belong to
#22773, which deletes SteerMark. This puts SteerMark back under the
bubble as on feat-cmux-next, restores the row's own opacity rules, and
drops the steer from the spacing test and the gallery fixture. The
spacing tokens, the row's height and margin, and the estimates stay;
model.ts now counts a steer's status line under the meta row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: a prompt bubble is translucent glass, not solid

The chat-column test held the bubble to an opaque fill (Leo
2026-10-13). Leo now wants tinted glass: the fill is translucent but
present.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: a short reply's footer hugs it too; bubble glass in one block

A one-line reply kept the row's 34px floor over its footer, so the
footer sat 16px under it on CI. The reply row above a footer drops
the floor.

The bubble's fill and rim move to one rule block, apart from its
layout, so the shared glass primitive (#22815) can replace it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: row estimates match the transcript's CSS (red)

A reply right over its footer draws its text and the 4px meta gap with
no 34px floor, and a task's result draws 26px and the 8px message gap;
model.ts still estimates both the old way. The spacing layout test also
gets lower bounds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: row estimates match the transcript's CSS

- A reply right over its turn's footer is estimated as its text and the
  4px meta gap with no 34px floor, as .acpmux-row--before-footer draws
  it; the text-less fallback too. layoutConversation reads the next row,
  as App.tsx does, and places a kept row again when the row after it
  changes that.
- A task's result is 26px and the 8px message gap.
- A Chief's prompt draws no action row, so none is estimated.
- The chat's last footer ends at the 8px message gap instead of the
  24px turn gap (.acpmux-row--last-footer), so no band sits over the
  composer; the estimate follows it.
- Footer buttons use the prompt's compact 5px radius.

The estimate test also covers the last footer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: a footer with its answer's text is estimated as a footer (red)

turnView gives each footer its answer's text for Copy, so the
estimator reads the answer's Markdown instead of the footer's 24px
line. The fixture footers now carry text, one test shapes the rows
through turnView, and a hidden row after the last footer keeps it the
last one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: estimate a footer as its line, whatever text it carries

A footer carries its answer's text for Copy (turns.ts), so the
estimator measured the answer's Markdown and never reached the footer's
24px line and gap. The footer is now estimated before the text path.
The chat's last footer is the last row that draws: a hidden bookkeeping
row after it no longer takes that away, in the estimate (nextDrawnRow)
or in App.tsx's class.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
- A context-lost event from a canvas stop() dropped no longer turns
  off the lens that started after it.
- The page decodes the wallpaper still only once glass is on screen.
- The backdrop blur is sent in CSS px (divided by the page zoom).
- Localizable.xcstrings keeps base's order; only the five Glass keys
  are added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 6 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmpazmrxgtj/summary-missing.json (live):/summary-missing.json (live): View Logs
/tmp/tmpke6b9sml/summary-fail.json (live):/summary-fail.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs

Fix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…ed as drawn (#22910)

* test(agent chat): ended runs keep each group's calls listed; MCP calls read in words

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: show each tool call instead of folding runs; humanize MCP tool ids

An opened Worked for no longer folds a run under 'Used tools, ran commands'. Command, read and
search groups open by default with their last 5 calls and '+K more'. Edits stay closed. The
running line, activity line and permission card name an MCP call by server and action
instead of mcp__server__tool; the raw id stays in the tooltip and the opened call.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: list a group's commands as Codex does, each 'Ran <command>' with its glyph

Command, read and search groups list flush under their line (no tree guide). Each command row
gets the terminal glyph and the localized 'Ran {command}' around the mono command. Edits keep
the guide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent pane: a running turn lists each call by default (codexToolRuns off)

The app sent codexToolRuns=true, so a running turn still folded each run that text followed into
'Used tools, ran commands' and showed only the newest call of the run in flight. Turn the Debug
tunable off by default; it stays available to compare the folded look.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: no tooltip on MCP rows; the raw id stays in the opened call

test/tooltip-rules: an element whose text shows carries no title (Leo 2026-10-13).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* test(agent chat): prompt and answer action rows as Claude Code desktop draws them

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: Claude Code desktop's action rows under prompts and answers

A prompt's row under its bubble: its age ('1 hour ago', the time on hover), two ticks once
delivered, Copy, Edit, Fork and Bookmark. The latest prompt shows it always, older ones on hover.
The answer's row moves to the left under its text, time first (turnActionsPlacement defaults to
left; Debug 'right' keeps the old edge).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: a prompt's Fork goes through its own turn; ticks skip unread steers; RTL-safe action rows

Fork under a bubble forks through the prompt's own turn, as its right-click
Fork does. The always-visible row skips failed and queued prompts. Delivered
ticks wait while a steer is unread. Margins are logical so RTL locales mirror.
The visible time drops its tooltip. Gallery plays and the footer browser test
follow the left default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* test(agent chat): a prompt's Fork forks through its own turn

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: a prompt's row has Claude's single Read/Unread check instead of two Delivered ticks

Leo's Claude Code reference (2026-10-20): one check, tooltip Unread while the prompt is being sent or
waits as a steer, Read once the agent has it. The chat-column hover test now expects the prompt row's
Copy (the action row is Claude's); a tool row still shows none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test the transcript's vertical rhythm (red)

A layout test for the agent pane transcript: the steer line under its
bubble, the meta row under a prompt, the band an older prompt's hidden
row leaves, the prompt-to-Worked-for gap, the reply-to-footer gap and
the footer-to-next-prompt gap. It fails on the current CSS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: meta rows hug their message, one transcript rhythm

Four spacing tokens set the transcript's rhythm, as Claude Code
desktop's: --cv-meta-gap (4px, a message to its meta row),
--cv-meta-row (24px, that row's line), --cv-message-gap (8px between
messages) and --cv-turn-gap (24px between turns).

- A steer's read state sits in its prompt's meta row, right under the
  bubble, instead of under the hidden action row.
- A hidden action row keeps only its own 24px line; its buttons fade,
  the row stays, so pointing at a prompt moves nothing.
- A reply's footer sits 4px under the reply, on a 24px line, and the
  turn ends 24px before the next prompt.
- model.ts estimates rows with the same numbers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: user bubbles are translucent tinted glass

The prompt bubble mixed the theme's text into the opaque base, a solid
fill. It is now the text at 12% over transparent, so the window's
backdrop shows through, with the composer's hairline edge kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Gallery: the transcript's rhythm as one fixture

A steered prompt, a reply with its footer, and a Worked for turn in one
transcript, so the spacing between them shows in one capture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: name the prompt's Read/Unread check in comments

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: leave the receipt comments to the message-actions lane

Puts back the two-tick wording in UserBubble.tsx and conversation.css,
which #22773 owns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: leave SteerMark where it was

The steer's read state and the prompt's action-row visibility belong to
#22773, which deletes SteerMark. This puts SteerMark back under the
bubble as on feat-cmux-next, restores the row's own opacity rules, and
drops the steer from the spacing test and the gallery fixture. The
spacing tokens, the row's height and margin, and the estimates stay;
model.ts now counts a steer's status line under the meta row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: a prompt bubble is translucent glass, not solid

The chat-column test held the bubble to an opaque fill (Leo
2026-10-13). Leo now wants tinted glass: the fill is translucent but
present.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: a short reply's footer hugs it too; bubble glass in one block

A one-line reply kept the row's 34px floor over its footer, so the
footer sat 16px under it on CI. The reply row above a footer drops
the floor.

The bubble's fill and rim move to one rule block, apart from its
layout, so the shared glass primitive (#22815) can replace it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: row estimates match the transcript's CSS (red)

A reply right over its footer draws its text and the 4px meta gap with
no 34px floor, and a task's result draws 26px and the 8px message gap;
model.ts still estimates both the old way. The spacing layout test also
gets lower bounds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: row estimates match the transcript's CSS

- A reply right over its turn's footer is estimated as its text and the
  4px meta gap with no 34px floor, as .acpmux-row--before-footer draws
  it; the text-less fallback too. layoutConversation reads the next row,
  as App.tsx does, and places a kept row again when the row after it
  changes that.
- A task's result is 26px and the 8px message gap.
- A Chief's prompt draws no action row, so none is estimated.
- The chat's last footer ends at the 8px message gap instead of the
  24px turn gap (.acpmux-row--last-footer), so no band sits over the
  composer; the estimate follows it.
- Footer buttons use the prompt's compact 5px radius.

The estimate test also covers the last footer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: a footer with its answer's text is estimated as a footer (red)

turnView gives each footer its answer's text for Copy, so the
estimator reads the answer's Markdown instead of the footer's 24px
line. The fixture footers now carry text, one test shapes the rows
through turnView, and a hidden row after the last footer keeps it the
last one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: estimate a footer as its line, whatever text it carries

A footer carries its answer's text for Copy (turns.ts), so the
estimator measured the answer's Markdown and never reached the footer's
24px line and gap. The footer is now estimated before the text path.
The chat's last footer is the last row that draws: a hidden bookkeeping
row after it no longer takes that away, in the estimate (nextDrawnRow)
or in App.tsx's class.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Test: incoming messages, notices and waiting steers are estimated as drawn (red)

Another agent's message draws 2px margins around its 26px line and the
8px message gap (38px, estimated 30); a task notice draws the tool
rows' 2px top margin (36px, estimated 34); a steer the agent has not
read draws PendingSteer's 20px line, which the estimate leaves out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

* Agent chat: incoming messages, notices and waiting steers are estimated as drawn

- Another agent's message: 26px line, 2px margins and the 8px message gap.
- A task notice: the tool rows' 2px top margin, its 26px line and the gap.
- A steer the agent has not read: PendingSteer's 20px line too.
- App.tsx marks a reply over its footer by the next row that draws, as
  the estimate does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15ba3-d09a-7940-9fd6-158e10477c0e&host=cosmic-gray

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo and others added 3 commits October 20, 2026 22:56
A unit test's light DOM has no MutationObserver, and every page that
loads the desktop layer crashed there (whats-new-by-area and others).
The lens now leaves such a document to CSS glass. Linux WebKit's
headless compositor leaves WebGL out of screenshots, so there the lens
test checks the lens's state instead of pixels.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lens

# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextDesign/Windows/WebTheme.swift
teamleaderleo and others added 2 commits October 21, 2026 00:14
Applied from the cmux-next PR autofix artifact of run 39555592062
(its push job was skipped).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 21, 2026 07:16 — with GitHub Actions Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next crash-class rules / cmux-next crash-class rules is red on 14 of 15 fresh feat-cmux-next PR heads in the last 2:00:00, so it is most likely a base red, not this PR's. The base-reds lane has it; a base merge picks up the fix once it lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (independent review subagent): SHIP at 800de14

Delta since the reviewed 6126d33: a base merge of feat-cmux-next (89078c9, which brings in #23478) and the settings exports regenerated on the fleet (800de14, cmux-ci step 488cb6a08483a6ed97777436).

  • PR lines unchanged: for all 38 PR files, the added and removed lines are identical before and after the merge (AgentPaneView, PageWebView, WebTheme, AppServices, AppDelegate, desktop.ts, lens.ts among them).
  • Strings: Localizable.xcstrings is valid, and each of the 5 glass keys appears once.
  • Generated files: check-stamp passes, and the schema and MDM diff adds only the Glass setting.
  • Base and glass: base adds no new .ui-glass or --glass-* uses that this PR would double-apply.

Evidence at this head:

  • Fleet compile-check --app passed (job d3385607dcf3e70a4f828018, 74 s).
  • SidebarPinnedRowWidthTests passes (step 5fc52a01ede4f27a676108bd, aws-m4pro-7). It was red at the old base e6fb991 and is fixed by cmux-next sidebar: pinned rows end where the other rows do (row trim) #23478.
  • At the merge commit 89078c9, HiddenPageHibernationTests and SidebarIncrementalMatchesRebuildTests pass on the same worker (step acaa83998697d89929e38fd6).
  • bun run check is clean, and the glass and desktop tests pass.

The defaults call is still needed: the new appearance.glass default ("lens") needs an approving review on this head from a call owner.

@teamleaderleo teamleaderleo added ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds and removed ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds labels Oct 21, 2026
@teamleaderleo teamleaderleo added the needs a call Finished and held for a team design or product decision (see #13742 and the gallery in #15427) label Oct 21, 2026
teamleaderleo and others added 2 commits October 21, 2026 13:23
…default

Leo 2026-10-21: "the lens thing we just need to see and feel... we can put
it as a toggle and later promote to default". appearance.glass now
defaults to plain, the glass from before the lens, so nobody's look
changes. Lens and Spectrum stay in Settings > Appearance > Glass, and the
palette's Toggle Liquid Glass Lens (appearance.glass.lens.toggle, CLI
`settings toggle-glass-lens`) flips Plain and Lens live and writes the
setting. Pages draw Plain before the host sends its mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c40-f08c-79b2-95af-689409622600&host=cmux16
Leo 2026-10-21: the lens is something to see and feel before it is the
default. It moves out of the settings schema: the Debug Settings choice
`glass.lens` (Glass and Overlays > Liquid Glass; DEV and NIGHTLY) picks
Plain Glass (the default), Lens or Spectrum, and Toggle Liquid Glass Lens
in the palette or the Debug menu flips it live. Release never activates
Debug Settings, so today's glass is unchanged. The Settings > Appearance >
Glass row and its exports are gone until the lens is promoted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c40-f08c-79b2-95af-689409622600&host=cmux16
@teamleaderleo teamleaderleo removed the needs a call Finished and held for a team design or product decision (see #13742 and the gallery in #15427) label Oct 21, 2026
@cursor

cursor Bot commented Oct 21, 2026

Copy link
Copy Markdown

Bugbot needs on-demand usage enabled

Bugbot 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.

@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 21, 2026 21:31 — with GitHub Actions Inactive
@teamleaderleo teamleaderleo removed the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent): SHIP at 048ea3c

Correctness review of the final head. Default unchanged: with no Debug override every page draws Plain glass. The settings schema, docs/mdm and the sources sha256 match base, and defaults_guard passes. The Debug toggle glass.lens is registered and live: GlassModeWatch triggers ThemeStore.repaintAll, then data-glass. The action is debug-only, offered in the palette and the Debug menu, and hidden in Release. No GlassSetting or appearance.glass leftovers. Exports match the catalog. The lens stays inert in Plain: no canvas, no WebGL, no feed. Never-opaque check clean; glass-state and glass-lens tests pass. Fleet at merged head 6acb984: app compile passed; GlassLensTests, GlassBackdropTests, PaletteRankCatalogTests, ActionContractTests, ActionSurfaceParityTests, PaletteMenuVocabularyTests pass.

@teamleaderleo teamleaderleo added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

CI at 048ea3c: 61 passed, 1 red: gallery health agent-pane.url-chip#pull-request-lines-by-kind: play: waitFor did not hold. That is a base red: the same state fails on feat-cmux-next run 39679793310 and on unrelated PRs (composer-look-plain-glyphs, composer-look-model-button, next-project-framework-icons, chat/live-line-rhythm). Fleet cmux-ci compile-check --app at 048ea3c: passed (job 5bff6acbf2b0691edbe8eb3e).

@teamleaderleo
teamleaderleo merged commit 76c82f5 into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the cmux/glass-lens branch October 21, 2026 22:01
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…overs, cards and the Inspector

Rebuilt on feat-cmux-next after #22815 landed (its squash, so the stacked
history is replaced by the surface changes alone). Plain glass is the
default now and the lens a Debug toggle, so the plain-only rules key on
"not lens or spectrum" (a page with no data-glass is plain) and the lens
rules on "lens or spectrum". A glass popup paints the glass tint over a
component's own solid popup surface: the gallery invariant found ten
menus and popovers (changes file and scope menus, needs-you, the new-tab
chats filter) opaque under their blur; all 1645 scanned stages are clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c40-f08c-79b2-95af-689409622600&host=cmux16
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…uid glass (#23477)

* cmux-next glass: adopt the liquid glass on the agent pane, menus, popovers, cards and the Inspector

Rebuilt on feat-cmux-next after #22815 landed (its squash, so the stacked
history is replaced by the surface changes alone). Plain glass is the
default now and the lens a Debug toggle, so the plain-only rules key on
"not lens or spectrum" (a page with no data-glass is plain) and the lens
rules on "lens or spectrum". A glass popup paints the glass tint over a
component's own solid popup surface: the gallery invariant found ten
menus and popovers (changes file and scope menus, needs-you, the new-tab
chats filter) opaque under their blur; all 1645 scanned stages are clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c40-f08c-79b2-95af-689409622600&host=cmux16

* cmux-next glass: the last solid popovers are glass too

The Needs you list and its sticky head, the subagents list, the Changes file, scope,
options and chats-filter menus, the Add project dialog and the icon picker's bars painted
the solid --surface-popup with no blur. They are .ui-glass now, with the glass's own rim
and drop (no box-shadow of their own); only Reduce Transparency makes them solid. The
Needs your input pill takes Jump to latest's glass again (it had lost its blur when the
blur moved onto .ui-glass). The unused .acpmux-handoff-targets sheet is gone, and the
acpmux preview loads glass.css so its popups have a fill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c40-f08c-79b2-95af-689409622600&host=cmux16

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

This branch had an error being deployed

1 failed and 3 inactive deployments
sentry-dsyms — 048ea3cc Deployed Oct 21, 2026 by teamleaderleo
artifacts — 048ea3cc Deployed Oct 21, 2026 by teamleaderleo
ci-routing-agent — 048ea3cc Deployed Oct 21, 2026 by teamleaderleo
cmux-tui-merge-tree — 048ea3cc Deployed Oct 21, 2026 by teamleaderleo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

media-tour Run the cmux-next UI tour (cmux-next-media.yml) on every push ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant