Skip to content

cmux-next: optional Agent integrations helper in Settings - #21818

Merged
teamleaderleo merged 41 commits into
feat-cmux-nextfrom
claude/agent-integrations-settings
Oct 21, 2026
Merged

teamleaderleo merged 41 commits into
feat-cmux-nextfrom
claude/agent-integrations-settings

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #21813 (hook status reports conflicts); review that first. This PR's diff against feat-cmux-next includes it until it lands.

Settings > Agents gets an optional Agent integrations card for the coding-agent hooks that let cmux show when an agent is working, waiting or done. It lists each provider's hook state and offers Install, Repair or Remove, with the CLI command to copy as a fallback.

It stays out of the way: the card is collapsed, reads nothing until opened, and changes nothing without a click. A deep link (focus=agents.integrations) opens it.

What it does

  • Status comes from the bundled CLI, cmux --json agent hook status. It's read once when the card opens and again on Refresh.
  • Install (state absent) and Repair (partial) run cmux --json agent hook install <id>. Remove (installed or partial) runs agent hook uninstall <id>. Status is read again after each one. A refusal from the CLI shows on that row in the CLI's own words.
  • Blocked (conflict, added in cmux-tui-hooks: status reports conflicting hook targets #21813) means a file cmux didn't create, a symlink, or a non-file is in the way. The row offers no Install. It says what's there, shows the path, and gives cmux agent hook install <id> to copy once the file is moved. Can't read (unavailable) says to check permissions. The host refuses Install over either state too, not just the page.
  • No CLI in the build: the card says so and still shows the command.

The install logic lives only in the Rust CLI (cmux-tui-hooks). Swift (SettingsAgentIntegrations) runs the CLI with ProcessRunner, parses the result, and keeps the row list. It accepts only provider ids the last status listed.

One limit: the app runs the CLI with the app's own environment. A CLAUDE_CONFIG_DIR or CODEX_HOME set only in a shell profile isn't seen, so the card targets the default paths. Each row shows its path so this is visible, and the copyable command is the fallback.

Files

  • New target CmuxNextAgentIntegrations: SettingsAgentIntegrations.swift (+ +Process.swift, split out because CmuxNextDaemon and CmuxNextSettings both export a JSONValue). It is a PageProvider; the App passes it the bundled CLI's location. It lives outside CmuxNextApp because the App target may not grow (check-app-size.sh).
  • SettingsPageProvider routes cmux.settings.integrations.state|run to it, and PageFactory wires it. The provider's nil-host guards now share one helper, so CmuxNextApp ends with fewer source lines than the base.
  • SettingsPageLayout.Card.agentIntegrations sits in the Agents trail. The exported settings-schema.json and its source stamp were updated to match (defaults_guard.py check-stamp passes).
  • React: components/AgentIntegrations.tsx, plus ops, store, mock and gallery variants (agents-integrations, agents-integrations-no-cli).
  • 22 settingsWindow.agentIntegrations.* strings, translated into all 21 catalog locales.

Verification

  • Red first (343228a): bun test src/pages/settings/agentIntegrations.test.tsx at the test-only commit gave 0 pass, 4 fail.
  • After merging feat-cmux-next (c5a1f90, merge c9ed6ee) and trimming two lines of filler copy (2813f17): bun test src/pages/settings src/gallery gave 132 pass at c9ed6ee, and the card, description-length and strings tests passed again at 2813f17.
  • Green (4101d5a): bun test src/pages/settings src/gallery gave 131 pass, including the 60-character description-line check in every locale. bun run typecheck, bun run lint, vp fmt --check and scripts/lint-ios-package-conventions.sh are clean. scripts/localization_catalog.py check reports no errors for the new keys.
  • Swift, on fleet minis via cmux-ci run: red on 343228a (cannot find 'SettingsAgentIntegrations' in scope). Green on a6e702f: package-test-lane.sh suite Packages/macOS/CmuxNext SettingsAgentIntegrationsTests gave 5 tests in 1 suite passed. Two test-only fixups landed in between: an import CmuxNextPages, and moving the fake CLI off the main actor.
  • Not verified: a native tagged build. cmux-ci build cmux can't provision the dev backend from huge-blue (no route to cmux-dev-backend-1), so no tagged app was built or dogfooded. The screenshots below are the React Settings page from the webviews gallery build (agents-integrations* variants against the mock host), rendered in headless Chromium. They are not the native app. The full CmuxNext package build and suites run in this PR's CI.

Screenshots

Collapsed (the default):

agent integrations collapsed

Opened, light and dark: installed, needs repair, blocked by a file cmux didn't create, and not installed:

agent integrations open light

agent integrations open dark

A build without the CLI:

agent integrations no cli

Localization audit

There are 22 new keys in CmuxNextSettingsWindow/Localizable.xcstrings, translated into all 21 locales the catalog carries (the 9 required macOS locales among them), and regenerated into generated/strings.json. Every line is 60 characters or fewer in every locale. There's no bare English in the changed TSX or Swift. The CLI's English detail and refusal text is shown as-is, as other Settings cards do with daemon text.

Changelog

  • Added: An optional Agent integrations card in Settings > Agents that installs, repairs or removes coding-agent hooks and explains when a file cmux didn't create is in the way.

No capture: the card is part of the webview Settings page. The gallery advisory run captures it (agents-integrations, agents-integrations-no-cli). The Swift side is a page provider with no native UI of its own.

🤖 Generated with Claude Code

Agent session: cosmic-gray

teamleaderleo and others added 4 commits October 18, 2026 23:19
A foreign, symlinked, non-file or unreadable hook target reads as
"absent" today, so a caller offers an Install the installer refuses.

Red: cargo test -p cmux-tui-hooks status_reports (2 failed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`agent hook status` now reports `conflict` for a target install refuses
(a symlink, a non-file, or a plugin file cmux-tui did not write) and
`unavailable` for one it cannot inspect, each with a machine-readable
`reason` and a `detail`. Install's refusals are unchanged.

Green: cargo test -p cmux-tui-hooks (44 passed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts only on a click

The card and its Swift model do not exist yet: these fail.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A collapsed "Agent integrations" card lists each coding agent's hook
state from the bundled `cmux --json agent hook status` and offers
Install, Repair or Remove, which run `agent hook install|uninstall <id>`
and read status again. A file cmux did not create in the way
(`conflict`) offers no Install: the row says what is there and gives
the command to copy. The card reads status only once opened and changes
nothing without a click. The CLI keeps every write and refusal.

Green: bun test src/pages/settings (131 pass).

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

cursor Bot commented Oct 18, 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 18, 2026 23:43 — with GitHub Actions Inactive
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: b82fdc09-b0d4-44e7-8b7a-3b517fd2ad34

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…tions title

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 18, 2026 23:49 — with GitHub Actions Inactive
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

…grations tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 18, 2026 23:51 — with GitHub Actions Inactive
teamleaderleo and others added 2 commits October 18, 2026 23:54
The Rust god-file ratchet refuses growth in lib.rs. The conflict checks,
their tests and ensure_replaceable_target (which they mirror) move to
status_conflict.rs; lib.rs ends shorter than its base.

Green: cargo test -p cmux-tui-hooks (44 passed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 18, 2026 23:55 — with GitHub Actions Inactive
@blacksmith-sh

This comment has been minimized.

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

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

Review a048273: 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=pr21818 -f ref=claude/agent-integrations-settings -f platform=macos -f backend_mode=local

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

gh run download 39660879123 -R manaflow-ai/cmux -n gallery-advisory-21818-a048273e40de0a04edaf9fd6f15444c7a03d5803 (then read gallery-review.json)

States
State Theme Status Diff Picked by
pages.settings/agents-integrations Apple System Colors Light new 0% own AgentIntegrations.tsx
pages.settings/agents-integrations Apple System Colors new 0% own AgentIntegrations.tsx
pages.settings/agents-integrations-no-cli Apple System Colors Light new 0% own AgentIntegrations.tsx
pages.settings/agents-integrations-no-cli Apple System Colors new 0% own AgentIntegrations.tsx
pages.settings/general Apple System Colors Light unchanged 0% own AgentIntegrations.tsx
pages.settings/general Apple System Colors unchanged 0% own AgentIntegrations.tsx
pages.settings/general-customized Apple System Colors Light unchanged 0% own AgentIntegrations.tsx
pages.settings/general-customized Apple System Colors unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-1 Apple System Colors Light unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-1 Apple System Colors unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-2 Apple System Colors Light unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-2 Apple System Colors unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-3 Apple System Colors Light unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-3 Apple System Colors unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-4 Apple System Colors Light unchanged 0% own AgentIntegrations.tsx
pages.settings/general-group-4 Apple System Colors unchanged 0% own AgentIntegrations.tsx
pages.settings-motion/play-search Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-search Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-changed-only Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-changed-only Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-override-reset Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-override-reset Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-newtabposition Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-newtabposition Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-fontfamily Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-fontfamily Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-hibernation Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-hibernation Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-hibernationexclusions Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-hibernationexclusions Apple System Colors unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-pinned Apple System Colors Light unchanged 0% imports categories.ts (1 hops)
pages.settings-motion/play-reset-pinned Apple System Colors unchanged 0% imports categories.ts (1 hops)

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

CI passes on a048273e40 (run 39660879292 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.

red: cmux-next checks (god files, concurrency, crash safety, l10n); no finished base run on c425696 to compare; do not merge until green; see lane-rules

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

Tour of a048273e40 (run)

Path-selected interactions

Interaction Changed paths
core Packages/macOS/CmuxNext/Sources/CmuxNextAgentIntegrations/SettingsAgentIntegrations\+Process.swift
Packages/macOS/CmuxNext/Sources/CmuxNextAgentIntegrations/SettingsAgentIntegrations.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/PageFactory.swift
Packages/macOS/CmuxNext/Sources/CmuxNextApp/Pages/SettingsPageProvider.swift
Packages/macOS/CmuxNext/Sources/CmuxNextSettings/Schema/SettingsPageLayout.swift
Packages/macOS/CmuxNext/Sources/CmuxNextSettingsWindow/Localizable.xcstrings
Packages/macOS/CmuxNext/Tests/CmuxNextAgentIntegrationsTests/SettingsAgentIntegrationsTests.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.

@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards failed on 9c1c31f036 (https://github.com/manaflow-ai/cmux/actions/runs/39210449961). It does not block the merge; a red guard merged into main breaks it for every open PR.
The log named no failed step; see the run.

Agents: python3 scripts/ci/guard_attribution.py fix applies the mechanical fixes locally. This comment is updated in place on each push.

Its runCLI closure runs nonisolated; the fixture and recorder must too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 19, 2026 04:32 — with GitHub Actions Inactive
# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextSettingsWindow/Localizable.xcstrings
#	schemas/settings-export/settings-schema.sources.sha256
"Nothing is installed until you click" and the "Optional" tag restated
the card's behavior; the collapsed card already says both.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo temporarily deployed to cmux-tui-merge-tree October 19, 2026 05:15 — with GitHub Actions Inactive
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	Packages/macOS/CmuxNext/Sources/CmuxNextSettingsWindow/Localizable.xcstrings
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (independent-subagent): SHIP at 3425c29

This review covers only the three base merges since the last full SHIP at 7bcc664: d49f845 (update-branch), a2b22dd (merge of feat-cmux-next) and 3425c29 (merge of feat-cmux-next with a hand resolution).

  • PR patch unchanged. I compared git diff $(merge-base OLD base) OLD with the same diff at the new head, file by file, comparing the +/- lines. The lists match: 21 files. The only file that dropped out is the generated schemas/defaults/cmux-next.json. Its entries are now in base, and the PR no longer differs from base in that file. Every non-generated file has identical +/- lines, except CmuxNextSettingsWindow/Localizable.xcstrings, covered below.
  • xcstrings hand resolution is correct. I did a three-way JSON check (merge base, reviewed head, base tip d9ddba2). The expected result is base plus the PR's 24 added settingsWindow.agentIntegrations.* keys. The PR changes and removes no keys. Against that, the result has 0 missing keys, 0 extra keys and 0 changed values. Base's settingsPage.font.recent is kept, the top-level fields equal base's, and the file is valid JSON. Only the hunk position differs.
  • No semantic clash. Base changed 10 of the PR's files: Package.swift, PageFactory, SettingsPageProvider, mockProvider, ops, store, settings.gallery, xcstrings and the generated schema files. The main change is the new required recent_fonts field on Domains. The PR builds no Domains literal, and tsc --noEmit passes at the head. No base-removed declaration appears in the PR's added lines, and base adds no callers of anything the PR removed.
  • Checks run on Linux at 3425c29:
    • tsc --noEmit: clean.
    • bun test src/pages/settings/: 250 pass, 0 fail.
    • gen-settings-sources.py --check: OK.
    • tests/test_cmux_next_route.py: 2 failures, test_a_file_a_test_reads_selects_that_test and test_a_shared_module_selects_its_dependents. Both fail the same way at base tip d9ddba2, so they come from base, not this PR.
  • I did not build Swift.

Agent session: huge-blue

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next crash-class rules / cmux-next crash-class rules is red on 10 of 10 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

cmux-next guards / cmux-next localization debt ratchet is red on 15 of 16 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.

# Conflicts:
#	schemas/settings-export/settings-schema.sources.sha256
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at bfc35ac

Delta review of the base merge (c425696) on top of the SHIP at 3425c29.

  • The PR's own diff against base is the same as at 3425c29, apart from one shifted context line in SettingsPageLayout.swift. The only file that drops out is the generated schemas/settings-export/settings-schema.sources.sha256, which was taken from base. Its SettingsPageLayout.swift hash is now stale, and the PR autofix regenerates it. That is the defaults-snapshot red.
  • Base touched some of the same files (SettingsPageLayout Card enum, categories.ts, SectionView.tsx, ops.ts, settings-schema.json, the CmuxNextSettings xcstrings) for import suggestion cards. The merged result has both sides intact. agentIntegrations sits next to the new importSuggestions card, and no symbol the PR uses was removed or renamed.
  • Local runs at this head: gen-settings-sources.py --check passes, webviews tsc --noEmit is clean, bun test src/pages/settings/ gives 251 pass, 0 fail, and the merged xcstrings and schema JSON parse.
  • The other two reds come from base, not this PR. check-objc-selectors fails on HomeSidebarSplitView+Drop.swift, and the localization debt ratchet fails on ChiefViews.xcstrings. The PR touches neither file.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (subagent, correctness first): SHIP at a048273

The only change since the previous SHIP (bfc35ac) is the PR-autofix regeneration of schemas/settings-export/settings-schema.sources.sha256. It changes one line, for Schema/SettingsPageLayout.swift. I checked every entry in the manifest against sha256sum of the file at a048273. All 272 entries match, and no other file changed.

@teamleaderleo
teamleaderleo merged commit 46a6e47 into feat-cmux-next Oct 21, 2026
@teamleaderleo
teamleaderleo deleted the claude/agent-integrations-settings branch October 21, 2026 20:06
teamleaderleo added a commit that referenced this pull request Oct 21, 2026
Conflict in tests/test_cmux_next_route.py: #21818 added CmuxNextAgentIntegrationsTests
to the schema test's hand-written list. The graph-derived expectation here already
selects it (the graph has the target), so this keeps that version.

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
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

base-red-watch: cmux-next web / web / react-apps-check went red on feat-cmux-next in https://github.com/manaflow-ai/cmux/actions/runs/39667452980 (first red at 46a6e47, last green at 253aed0). Suspect: #21818 (commit 46a6e47). If it is yours, fix forward on feat-cmux-next.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

base-red-watch: cmux-next web / web / react-apps-check (1) went red on feat-cmux-next in https://github.com/manaflow-ai/cmux/actions/runs/39667452980 (first red at 46a6e47, last green at 253aed0). Suspect: #21818 (commit 46a6e47). If it is yours, fix forward on feat-cmux-next.

@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

4 inactive (2 outdated) deployments
ci-routing-agent — a048273e Deployed Oct 21, 2026 by github-actions[bot]
cmux-tui-merge-tree — a048273e Deployed Oct 21, 2026 by teamleaderleo
artifacts — 7bcc6645 Deployed Oct 21, 2026 by teamleaderleo
sentry-dsyms — 7bcc6645 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