Skip to content

cmux NEXT: Chief view gallery, five experimental views beside the Chief - #22683

Merged
teamleaderleo merged 19 commits into
feat-cmux-nextfrom
feat/chief-view-gallery
Oct 21, 2026
Merged

teamleaderleo merged 19 commits into
feat-cmux-nextfrom
feat/chief-view-gallery

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Leo asked (10-20): "where is everybody? … add a sort of plausible glossary of views … We can see what we like". This PR adds the Chief view gallery: a page tab beside the Chief in Home's right column. A dots switcher moves between the views that are turned on. Gallery lists every view with its one-line description, an on/off switch, and Open as Pane, Split or Sidebar. Only the first view is on by default; the others are a click away in the gallery.

The five starter views all read live data:

View What it shows Data
Where is everybody (on by default) Every agent grouped by machine: name, folder, state, task line, time since last output, PR. Agents that need you are listed first. acpmux lanes (this Mac and its peers) plus terminal hook agents on every machine, pushed by an Observation stream (no polling)
Agent board Working / Needs you / Ready to land / Landed today agents plus Landing
Fleet CI machines: load per core, CPU, free memory, busy/online runners, queue, agents per host the CI dashboard's data.json. When it is unset or doesn't answer, the view says "unavailable" and shows a field to enter the address
Landing Open, ready to land (ready-to-land), CI red, merged today, with chips for the agents working on each PR GitHub search (repo:manaflow-ai/cmux base:feat-cmux-next), cached 90 s
Timeline Today's events, newest first: agents started, waiting, failed or finished; PRs opened or merged agents plus Landing

Revived from #20363 (the cx-v9k2f lanes view on Agent Activity, with #21422, #21727 and #21794):

  • The rows use that PR's AgentLaneStore feed and lanes.ts order and durations: failed, then waiting, then the longest idle, then working.
  • Tasks use the masked step from Mask secrets in the lane's title, step and error before they leave the daemon #21794, never a raw prompt.
  • AgentActivityLane now also keeps the summary's cwd, updatedAt and createdAt. (The Agent Activity lanes view these fields once fed is gone from the base; the gallery reads them from AgentLaneStore.)
  • A terminal agent's last prompt is left out on purpose, because it is unmasked.

Registry. webviews/src/pages/chief-views/registry.ts is one list of manifests (id, title, description, glyph, component, default placement, defaultOn, which data it needs). It is shaped like the AppPlatform manifest. Adding a view is one entry.

Gating. Debug Settings > Home > Chief view gallery (home.chiefViewGallery) is on by default in DEV and NIGHTLY and never offered in Release or RC. When it is on, the palette offers Chief View Gallery (chief.openViews).

Fleet address. No address is built in: the internal dashboard host stays out of the source. Set one from the Fleet view's field (stored in the app's defaults) or with CMUX_CHIEF_VIEWS_FLEET_URL. It must be https; plain http is accepted only for localhost and tailnet (*.ts.net) names. The field says when an address is refused.

Clicks only. open, open_url and set_fleet_url run only from a person's click:

  • open reveals a chat with the session deep link, or a terminal tab.
  • open_url opens only this repo's github.com pages (dot segments refused), and opens them in Home's right side.

Code layout. The Swift side is its own target, CmuxNextChiefViews (page, provider, feeds, agent rows, native strings), so CmuxNextApp does not grow: the app keeps a 20-line tab glue (Pages/ChiefViewsPageTab.swift). To offset that glue, a generic Pages/WebPageTab.swift (one React page per tab, closed with its tab) replaces the one-off page-tab classes of Stats, Chief Usage, channels and CodeRouter, with no behavior change. App source lines: +0 against the base.

Honest limits.

  • "CI red" comes from the dashboard's last run per PR. It can't tell a PR's own red from a base red.
  • Landing is unauthenticated, so GitHub's search rate limit applies (two searches per read, cached 90 s). When GitHub doesn't answer, the view says so.
  • There is no web Feed card renderer to share (the Feed is native), so Timeline has its own small card.
  • The layout (which views are on, the pane view and the side view) lives in the page's localStorage.
  • A remote terminal groups under its machine's name, and an acpmux peer's chats under the peer name. When those two names differ for one machine, it shows as two groups.

Testing

  • webviews/test/chief-views-page.test.tsx (12 tests, passed locally with bun before the fleet rule stopped local bun runs) covers:

    • the registry (five views, only the first on)
    • machine grouping and the Lanes order
    • the PR an agent works on (branch, #N, pull/N, pr-N)
    • the landing lanes (a red CI wins over the label; merged today only)
    • the board and the timeline (today only, newest first)
    • fleet totals
    • the store's layout (toggle, pane/split/sidebar swap, localStorage round trip and bad values)
    • reads only for shown views, and the Fleet unset state
    • each view rendered over the mock host
    • every string in all 21 locales
  • CmuxNextChiefViewsTests/ChiefViewsPageTests.swift (Swift Testing) covers:

    • lane mapping, including lost → failed, the new summary fields, and a later updatedAt alone comparing equal
    • the agents reply shape
    • data.json trimming
    • dashboard URL validation (https, private http)
    • GitHub search parsing and the URL allowlist
    • click-only ops refuse without a gesture
    • the Landing cache

    They run in this PR's CI (cmux-next swift test); nothing compiles on the laptop.

  • I checked the gallery entry pages.chief-views (10 variants) in the local gallery dev server in light and dark at 420, 760 and 1180 px. That pass caught and fixed:

    • board columns cut off beside a sidebar
    • the Fleet table overflowing in a split
    • an unreachable machine showing stale zeros
    • the empty state not opening the gallery
  • python3 scripts/cmux-next/prepush-gate.py: no new violations.

  • Not run here: a Mac build or a live tagged app. Nothing has been checked in a running app yet.

Changelog

Added: Chief View Gallery (command palette, nightly) opens views beside the Chief: where every agent is, an agent board, the CI fleet, landing PRs and today's timeline

Proof

Before: none (a new page). After: the gallery advisory run's captures of pages.chief-views at head af3ce0cd (run 39524300829), 420 px wide. The page code is unchanged since. These are Linux Chromium story renders with a fallback font, not the macOS system font; nothing has been captured in a running app yet.

Where is everybody (dark) Agent board (dark) Fleet (light) Landing (dark)
Where is everybody Agent board Fleet Landing
Timeline (dark) Gallery (dark) Split (light) Sidebar (dark)
Timeline Gallery Split Sidebar

Checklist

  • Behavior changes have added or updated tests
  • Localization audited:
    • the page catalog has 71 keys in 21 locales
    • the native table ChiefViews.xcstrings has 7 keys in 21 locales
    • action.chief.openViews is in ActionCatalog.xcstrings in 21 locales
    • the Debug Settings label is English, like every other tunable

No capture: the gallery is a React page (webviews/src/pages/chief-views), shown in the Proof stills above from the Linux gallery run; the Swift files are its data provider, the page-tab glue and a no-behavior-change WebPageTab refactor, with no native drawing of their own, and no tour scene opens this nightly-only page yet.

Originally written by the session above (cosmic-gray, e8f63fd9); adopted by orphan-sweep, which merged feat-cmux-next in at 36ee174 (base had removed the Agent Activity lanes view, so the lane's ranked copy went with it).

Agent session: cosmic-gray

webviews/src/pages/chief-views (cmux-page://cmux.chief-views/): a page tab
in Home's right column with a dots switcher and a gallery of views, each
named by intent with a one-line description, a switch and "Open as" Pane,
Split or Sidebar. Only the first view is on by default. Views register
through one registry (registry.ts: id, title, description, component,
default placement, what data it needs), shaped like the AppPlatform
manifest.

- Where is everybody: every agent by machine (name, folder, state, task,
  time since last output, PR), what needs you first.
- Agent board: Working, Needs you, Ready to land, Landed today.
- Fleet: the CI dashboard's data.json (machines, load per core, runners,
  queue); says when it is unset or unreachable and takes an address.
- Landing: open, ready to land, CI red and merged-today PRs with owner
  chips.
- Timeline: today's events across agents and PRs.

Revives the lanes view of #20363 (lanes.ts order and durations, the
AgentLaneStore feed). AgentActivityLane also keeps the summary's cwd,
updatedAt and createdAt.

The app answers cmux.chief_views.* (ChiefViewsPageProvider): agents from
AgentLaneStore and terminal hook agents on every machine, with an
Observation stream; fleet from the address the person sets
(CMUX_CHIEF_VIEWS_FLEET_URL or the view's field); landing from GitHub
search, kept 90 s; open, open_url and set_fleet_url need a click.
Action chief.openViews (palette). Debug Settings > Home > "Chief view
gallery", on by default; DEV and NIGHTLY only.

Tests: webviews/test/chief-views-page.test.tsx,
CmuxNextAppTests/ChiefViewsPageTests.swift.

Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray
@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 c7b5e87: 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=pr22683 -f ref=feat/chief-view-gallery -f platform=macos -f backend_mode=local

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

gh run download 39628659020 -R manaflow-ai/cmux -n gallery-advisory-22683-c7b5e874956b81963df28ffe6301aadb6aed12a3 (then read gallery-review.json)

States
State Theme Status Diff Picked by
pages.chief-views/where-is-everybody Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/where-is-everybody Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/agent-board Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/agent-board Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/fleet Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/fleet Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/landing Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/landing Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/timeline Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/timeline Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/gallery Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/gallery Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/split Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/split Apple System Colors new 0% own ChiefViewsPage.tsx
pages.chief-views/sidebar Apple System Colors Light new 0% own ChiefViewsPage.tsx
pages.chief-views/sidebar Apple System Colors new 0% own ChiefViewsPage.tsx
agent-pane.chat-inspector/full Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/full Apple System Colors unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/context-connectors-open Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/context-connectors-open Apple System Colors unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/changes-breakdown Apple System Colors changed 0.311% names Fleet.tsx
agent-pane.chat-inspector/changes-breakdown Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/subagents-open Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/subagents-open Apple System Colors unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/tasks-finished Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/tasks-finished Apple System Colors unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/cloud-empty Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/cloud-empty Apple System Colors unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/push Apple System Colors Light unchanged 0% names Fleet.tsx
agent-pane.chat-inspector/push Apple System Colors unchanged 0% names Fleet.tsx
agent-pane.run-board-tournament/top-two Apple System Colors Light unchanged 0% names Timeline.tsx
agent-pane.run-board-tournament/top-two Apple System Colors unchanged 0% names Timeline.tsx

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 c7b5e87495; ci-status is green without them.

CI passes on c7b5e87495 (run 39628659470 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 c7b5e87495 (run). This covers only the fast guards, not CI: CI's result is ci-status.

Tour of c7b5e87495 (run)

Path-selected interactions

Interaction Changed paths
core Packages/macOS/CmuxNext/Sources/CmuxNextActions/ActionCatalog.xcstrings
Packages/macOS/CmuxNext/Sources/CmuxNextActions/Catalog/AgentActionCatalog.swift
Packages/macOS/CmuxNext/Sources/CmuxNextAgentActivity/AgentActivityLane.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/AppActions\+Workspaces.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/AppActions.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Apps/AppsService.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Apps/CodeRouterPageTab.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/ChiefUsagePage.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/ChiefViewsPageTab.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/HomeChannelsPageTab.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/StatsPage.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/WebPageTab.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Settings/DebugSettingsService.swift
Packages/macOS/CmuxNext/Sources/CmuxNextChiefViews/ChiefViewsAgent.swift
Packages/macOS/CmuxNext/Sources/CmuxNextChiefViews/ChiefViewsFeeds.swift
Packages/macOS/CmuxNext/Sources/CmuxNextChiefViews/ChiefViewsPage.swift
Packages/macOS/CmuxNext/Sources/CmuxNextChiefViews/ChiefViewsPageProvider.swift
Packages/macOS/CmuxNext/Sources/CmuxNextChiefViews/Resources/ChiefViews.xcstrings
Packages/macOS/CmuxNext/Sources/CmuxNextPages/PageDevServer.swift
Packages/macOS/CmuxNext/Tests/CmuxNextChiefViewsTests/ChiefViewsPageTests.swift

Core UI (before): DEGRADED — 19 ok, 1 unavailable

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 New workspace ok cmux workspace new --name Tour
3 Type in the terminal ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "echo hello from the cmux-next tour\r"
4 A command reports progress: tab loading spinner ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "clear; printf '\\033]9;4;3\\007'; sleep 900\r"
5 Split right ok cmux action run splitRight
6 Split down ok cmux action run splitDown
7 New terminal tab ok cmux action run newSurface
8 Browser tab ok cmux tab new-browser --url https://example.com
9 Hide the sidebar ok cmux action run toggleSidebar
10 Show the sidebar ok cmux action run toggleSidebar
11 Notification ok cmux notify --title Tour --body "Hello from CI"
12 Notifications panel ok cmux action run showNotifications
13 Agent chat ok cmux agent new-chat
14 Agent workspace ok cmux workspace new --name Agent
15 Agent starts ok cmux workspace name:Agent screen current pane current tab current terminal current write --text "clear; printf '\\033]7501;state=working\\033\\\\'; sleep 8; printf '\\033]7501;state=done\\033\\\\'; sleep 900\r"
16 An agent works: row working spinner ok cmux workspace new --name Notes
17 The agent finishes: done mark in the spinner's place ok
18 Session tree: keycaps on the first rows ok cmux settings set sidebar.sessionTree true
19 Session tree back off for later tours ok cmux settings set sidebar.sessionTree false
20 Profile menu unavailable: exited 1 (the menu shot needs a screen capture route) cmux action run sidebar.profileMenu
Screenshots (15)

1. Launch
Launch

2. New workspace
New workspace

3. Type in the terminal
Type in the terminal

4. A command reports progress: tab loading spinner
A command reports progress: tab loading spinner

5. Split right
Split right

6. Split down
Split down

7. New terminal tab
New terminal tab

8. Browser tab
Browser tab

9. Hide the sidebar
Hide the sidebar

11. Notification
Notification

12. Notifications panel
Notifications panel

13. Agent chat
Agent chat

16. An agent works: row working spinner
An agent works: row working spinner

17. The agent finishes: done mark in the spinner's place
The agent finishes: done mark in the spinner's place

18. Session tree: keycaps on the first rows
Session tree: keycaps on the first rows

### Core UI \(after\): DEGRADED — 19 ok, 1 unavailable

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 New workspace ok cmux workspace new --name Tour
3 Type in the terminal ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "echo hello from the cmux-next tour\r"
4 A command reports progress: tab loading spinner ok cmux workspace name:Tour screen current pane current tab current terminal current write --text "clear; printf '\\033]9;4;3\\007'; sleep 900\r"
5 Split right ok cmux action run splitRight
6 Split down ok cmux action run splitDown
7 New terminal tab ok cmux action run newSurface
8 Browser tab ok cmux tab new-browser --url https://example.com
9 Hide the sidebar ok cmux action run toggleSidebar
10 Show the sidebar ok cmux action run toggleSidebar
11 Notification ok cmux notify --title Tour --body "Hello from CI"
12 Notifications panel ok cmux action run showNotifications
13 Agent chat ok cmux agent new-chat
14 Agent workspace ok cmux workspace new --name Agent
15 Agent starts ok cmux workspace name:Agent screen current pane current tab current terminal current write --text "clear; printf '\\033]7501;state=working\\033\\\\'; sleep 8; printf '\\033]7501;state=done\\033\\\\'; sleep 900\r"
16 An agent works: row working spinner ok cmux workspace new --name Notes
17 The agent finishes: done mark in the spinner's place ok
18 Session tree: keycaps on the first rows ok cmux settings set sidebar.sessionTree true
19 Session tree back off for later tours ok cmux settings set sidebar.sessionTree false
20 Profile menu unavailable: exited 1 (the menu shot needs a screen capture route) cmux action run sidebar.profileMenu
Screenshots (15)

1. Launch
Launch

2. New workspace
New workspace

3. Type in the terminal
Type in the terminal

4. A command reports progress: tab loading spinner
A command reports progress: tab loading spinner

5. Split right
Split right

6. Split down
Split down

7. New terminal tab
New terminal tab

8. Browser tab
Browser tab

9. Hide the sidebar
Hide the sidebar

11. Notification
Notification

12. Notifications panel
Notifications panel

13. Agent chat
Agent chat

16. An agent works: row working spinner
An agent works: row working spinner

17. The agent finishes: done mark in the spinner's place
The agent finishes: done mark in the spinner's place

18. Session tree: keycaps on the first rows
Session tree: keycaps on the first rows

Tours are data in scripts/cmux-next/media/tours: add a step or a tour file to show your feature.

@blacksmith-sh

blacksmith-sh Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Found 3 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp3vcnzx81/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmp7cmqqhc0/summary-missing.json (live):/summary-missing.json (live): View Logs
test/latency-harness.test.ts/latency-harness.test View Logs

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

Move the gallery's Swift (page, provider, feeds, agent rows, strings) out of
CmuxNextApp into a new CmuxNextChiefViews target so the app does not grow.
The app keeps a 20-line tab glue; a generic WebPageTab replaces the
one-off page-tab classes for Stats, Chief Usage, channels and CodeRouter,
which offsets it.

Review fixes:
- AgentActivityLane equality ignores updatedAt, so output alone does not
  re-rank and animate the lanes view.
- The dashboard address must be https; http only for localhost and tailnet
  names. Pull request links reject dot segments.
- Remote terminals group under the machine's name, so they sit with the
  same machine's acpmux chats.
- Fleet's address form says when an address is refused.
- An unavailable read keeps its last reply.
- Tests record through a main-actor class instead of captured vars.

Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray
@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.

…the bot regenerates the graph

The CI target graph is bot-only, so a pull request that adds a SwiftPM target cannot carry it and the coverage test failed on every such PR. A directory the graph lacks now passes when Package.swift declares that target; a stray source directory still fails.

Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray
@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.

- Lanes keep their synthesized equality, so the store still records each new updatedAt; the lanes view compares lanes without it (AgentActivityLane.ranked) before it re-ranks.
- ChiefViewsPage imports Foundation publicly (URL in its public API).
- The tunables list is nonisolated, like the others; the refused-address message says https.

Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=e8f63fd9-94e8-4878-bcd4-704659aba1f2&host=cosmic-gray
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next guards / defaults-snapshot is red on 16 of 20 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.

@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

Copy link
Copy Markdown
Collaborator Author

Owned by orphan-sweep on cosmic-gray · session

Base removed AgentActivityModel.lanes and the Agent Activity lanes view
(859e5cb), so the model takes base's version and the lane's `ranked`
copy (only that view used it) goes. AgentActivityLane keeps base's new
fields (unread, project, spawnedBy, cwd, pullRequests) and adds the
gallery's updatedAt and createdAt. Package.swift keeps the
CmuxNextChiefViews targets beside base's CmuxNextAgentLanes comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=cosmic-gray
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
teamleaderleo and others added 3 commits October 21, 2026 03:34
Base removed webviews/src/agent-activity/lanes.ts with the Agent Activity
lanes view (859e5cb), so the gallery's bundle failed to resolve it.
The page now keeps the two pieces it used, in model.ts: the same order
(failed, waiting, idle longest first, working newest first) over its own
AgentState, and shortDuration.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=cosmic-gray
…ion scale

subtle-elevation.test.ts allows a blurred drop shadow only through
--elevation-1/2; the current-view dot and the switch knob had their own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15cfc-663f-7650-b9f7-64d198c6b88b&host=cosmic-gray
…view-gallery

# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextApp/Settings/DebugSettingsService.swift
@teamleaderleo
teamleaderleo merged commit 8a06461 into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the feat/chief-view-gallery branch October 21, 2026 17:46
@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39647136624 at 106b611 failed: cmux-next checks (god files, concurrency, crash safety, l10n).
Those jobs last passed at 871cab6. This pull request is one of 2 merged since: #22683, #23159.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

base-red-watch: cmux-next / cmux-next checks (god files, concurrency, crash safety, l10n) went red on feat-cmux-next in https://github.com/manaflow-ai/cmux/actions/runs/39647136624 (first red at 106b611, last green at 871cab6). Suspect: #22683 (commit 8a06461, which touches Packages/macOS/CmuxNext/Sources/CmuxNextActions/Catalog/AgentActionCatalog.swift). If it is yours, fix forward on feat-cmux-next.

@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39647231050 at 6b26794 failed: cmux-next checks (god files, concurrency, crash safety, l10n).
Those jobs last passed at 871cab6. This pull request is one of 3 merged since: #22683, #23159, #23601.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

@github-actions

Copy link
Copy Markdown
Contributor

The feat-cmux-next push run https://github.com/manaflow-ai/cmux/actions/runs/39647649905 at d881a7e failed: cmux-next checks (god files, concurrency, crash safety, l10n).
Those jobs last passed at 871cab6. This pull request is one of 4 merged since: #22683, #23159, #23601, #22762.
If the failure is in your change, fix forward on feat-cmux-next. Pull requests run only the tiers their paths reach (docs/ci/cmux-next-tiers.md); label a batch PR full-ci to run them all before merging.

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
From CI's cmux-next-generated-patch artifact (run 39646893133, merge ref
faf4d3a). It also carries chief.openViews, which base #22683 added without
regenerating these files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…atchet base red) (#23629)

#22683 added chiefViews.terminal.untitled with "Terminal" in de, es and fr, which the
parity check reads as copied English. It is the standard word in all three, so it is
documented as an invariant beside argument.appStore.tab instead of raising the debt
baseline (#23463), which only goes down.


Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15d72-348e-7bd1-9c4e-4c3519d0f0fc&host=huge-blue

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

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

teamleaderleo added a commit that referenced this pull request Oct 21, 2026
…uting base red) (#23668)

* test(next): every graph target routes to the tests that reach it, from the graph

The Tier routing step is red on feat-cmux-next: test_a_shared_module_selects_its_dependents
and test_a_file_a_test_reads_selects_that_test compare the router's swift_targets with
hard-coded lists, and #22683's new CmuxNextChiefViewsTests (graph regenerated in
ef427b7) depends on CmuxNextSidebar, CmuxNextPages and CmuxNextSettings, so the
router now selects it and the lists are stale. Those two failing tests are the red.

This adds the oracle they will use: the test targets that are, depend on, or read a
changed target's file, computed straight from ci-target-graph.json. A new test routes a
probe file in every target with a path and checks the router selects exactly that set,
so any target is checked, not only the two hand-picked ones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

* test(next): the two route snapshot tests read their expected targets from the graph (Tier routing base red)

test_a_shared_module_selects_its_dependents and test_a_file_a_test_reads_selects_that_test
listed the selected test targets by hand, so each new dependent target (#23260 for
CmuxNextHomeEngineTests, now #22683's CmuxNextChiefViewsTests) turned Tier routing red on
every pull request until someone edited the list. The router was right both times.

They now expect the graph's dependents of the changed target (or of the bundle-shipping
targets, for the schema) plus its readers, and keep a few fixed anchors: the app and
settings tests are in, the daemon tests are out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

* test(next): pin the bundle targets and the targets behind this red in the route tests

Review follow-up. The schema test pins the four bundle-shipping targets and
CmuxNextPaletteTests, so dropping one from BUNDLE_TARGETS fails it instead of moving
the derived expectation with it. The sidebar test pins CmuxNextChiefViewsTests (this
red), CmuxNextKeepAwakeTests and CmuxNextWorkspaceNamingTests. Each test also pins one
more target that must not be selected (CmuxNextDesignTests, CmuxNextMobileTests), checked
against the graph.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c31-89b3-7d62-8e8c-b116a23ae693&host=cosmic-gray

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 27, 2026
…use non-text, and Clear Space Terminal Defaults… asks first (#23461)

* test(cmux-next): space terminal defaults keep the other field, refuse non-text, and Clear asks first

Failing tests for the #23385 follow-ups:
- a cwd or env that is not text (an in-app bool, or the "true" the socket makes of a bare
  --cwd) is refused and sends nothing;
- --cwd alone keeps the space's env and --env alone keeps its cwd (real daemon);
- Clear Space Terminal Defaults… (space.clearDefaults) asks from the palette and needs
  confirm from automation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray

* fix(cmux-next): space terminal defaults merge named fields, refuse non-text, add Clear Space Terminal Defaults…

Follows #23385.
- space.setDefaults changes only the fields a run names: --cwd X keeps the space's env,
  --env alone keeps its cwd, an empty one clears that field, both empty clear. The palette's
  directory ask no longer copies env into the rerun; the merge keeps it.
- A cwd or env that is not text is refused (rooms.refusal.defaultsMustBeText), and so is a
  relative cwd (rooms.refusal.cwdMustBeAbsolute): the socket turns a bare --cwd into the
  string "true", which used to become a directory named "true".
- New destructive action space.clearDefaults ("Clear Space Terminal Defaults…", CLI
  `space clear-defaults`): the palette asks with the standard confirmation dialog while the
  space has defaults; CLI and MCP pass confirm, as for every destructive action.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray

* test(cmux-tui): an action's --cwd reaches the app absolute, ~ and empty untouched

`cmux space set-defaults --cwd .` sends "." today, which the app now refuses (a space's
directory must be absolute). Also states the Default-space assumption in the Swift
clearDefaults "nothing at stake" test (review nit).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray

* fix(cmux-tui): resolve an action's --cwd against the caller's directory

`cwd` joins `path` and `out` in the caller-path rewrite, so `cmux space set-defaults --cwd .`
(and --cwd on tab new, split, workspace new) reaches the app as an absolute directory instead
of one the app resolves against its own working directory or refuses. `~/…`, an empty
`--cwd=` and a bare `--cwd` are sent unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray

* Regenerate action surfaces for space.clearDefaults

From CI's cmux-next-generated-patch artifact (run 39646893133, merge ref
faf4d3a). It also carries chief.openViews, which base #22683 added without
regenerating these files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray

* Regenerate action surfaces for space.clearDefaults

From CI's cmux-next-generated-patch artifact (run 39656807210, merge ref
63c8844).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15bf1-fdc6-7623-8ee3-fa94b3900ccd&host=cosmic-gray

* cmux NEXT spaces: terminal defaults updates run in order against the daemon's defaults

Review finding: a partial Set Space Terminal Defaults run merged into the
app's mirrored room.defaults and sent the whole object, so two quick runs
(--cwd /a, then --env) both read the old mirror and the second dropped the
first's field. Set and Clear Space Terminal Defaults now run one at a time
per space, each merging its named fields into what list-personal returns
when it runs. The live test sends --cwd and --env back to back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f68ebdd9a3c1704ffb42

* cmux NEXT spaces: nonisolated deinit and a bounded stream for defaults runs

The crash-class gate flagged RoomDefaultsUpdates.Finish's plain deinit (main-actor
isolated in this target, cx-t7hu) and its unbounded AsyncStream. Finish only
finishes a Sendable continuation, so its deinit is nonisolated; the stream never
yields, so it buffers at most one element.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f68ebdd9a3c1704ffb42

* cmux NEXT spaces: Clear asks by the daemon's defaults; remote --cwd is sent as typed

Review findings on c3b37ee:
- Clear Space Terminal Defaults… skipped its question when the app's mirror showed
  no defaults, but the mirror lags a reply: set-then-clear could clear unasked. It
  now also asks while a defaults run for the space is in flight, and otherwise asks
  the daemon (listPersonal); a daemon that does not answer asks.
- The CLI resolved every action's --cwd against the caller's directory, including
  remote, cloud and agent actions whose cwd names a folder on another machine
  (`cmux open-remote HOST --cwd .`). Those now send --cwd as typed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f68ebdd9a3c1704ffb42

* cmux NEXT spaces: the defaults patch is nonisolated, so the daemon-side run can apply it

The Release compile refused RoomDefaultsUpdates' send body calling the main-actor
Patch.applied(to:) off the main actor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-f68ebdd9a3c1704ffb42

---------

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

This branch had an error being deployed

1 failed and 2 inactive deployments
artifacts — c7b5e874 Deployed Oct 21, 2026 by teamleaderleo
sentry-dsyms — c7b5e874 Deployed Oct 21, 2026 by teamleaderleo
ci-routing-agent — c7b5e874 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

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant