Skip to content

fix: import CmuxFoundation process identities - #13236

Merged
austinywang merged 1 commit into
mainfrom
fix/import-cmux-foundation-process-identity
Sep 20, 2026
Merged

austinywang merged 1 commit into
mainfrom
fix/import-cmux-foundation-process-identity

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The macOS compile admission job fails while emitting cmux_DEV because AgentPIDProcessIdentity was moved into CmuxFoundation, but five app source files still reference it without importing that package. This blocks the same check across open macOS PRs.

Fix

Import CmuxFoundation in the affected process identity consumers.

Validation

  • git diff --check
  • Confirmed every Sources file referencing AgentPIDProcessIdentity imports CmuxFoundation
  • No local Xcode build run

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


Summary by cubic

Fixes the macOS compile admission job by importing CmuxFoundation in the five source files that reference AgentPIDProcessIdentity. The type moved into CmuxFoundation, so these consumers no longer saw it and the build failed.

Written for commit fdee0f9. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Updated internal components to use shared foundation functionality.
    • No user-visible behavior changes.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: b24abcdc-9675-4836-b630-fd66d5e570dc

📥 Commits

Reviewing files that changed from the base of the PR and between 6d43ea6 and fdee0f9.

📒 Files selected for processing (5)
  • Sources/CmuxTopProcessArguments.swift
  • Sources/CmuxTopProcessInfo.swift
  • Sources/DockSplitStore+AgentResumeOwnership.swift
  • Sources/RestoredAgentForegroundProcess.swift
  • Sources/Workspace+AgentResumeOwnership.swift

Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Five Swift source files now import CmuxFoundation. No declarations or other code changed.

Changes

CmuxFoundation imports

Layer / File(s) Summary
Module import declarations
Sources/CmuxTopProcessArguments.swift, Sources/CmuxTopProcessInfo.swift, Sources/DockSplitStore+AgentResumeOwnership.swift, Sources/RestoredAgentForegroundProcess.swift, Sources/Workspace+AgentResumeOwnership.swift
Each file adds import CmuxFoundation alongside its existing imports.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 5…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input ✅ Passed PASS. The authoritative diff contains five additions only, each import CmuxFoundation, in process identity source files. It changes no Cloud terminal creation, transport, renderer, readiness, input …
Cmux Swift Actor Isolation ✅ Passed PASS. The pull request adds only import CmuxFoundation to five production files. It does not add or change actors, @MainActor annotations, Sendable reference types, service protocols, stores, or b…
Cmux Swift Blocking Runtime ✅ Passed PASS. The authoritative PR diff contains only five added import CmuxFoundation lines. It adds no semaphores, blocking waits, sleeps, delayed dispatch, polling, main-queue sync, or manual locks. The …
Cmux Browser Automation Off-Main ✅ Passed PASS: The pull request changes only five Sources files, and each change adds import CmuxFoundation. No browser automation command, WebKit/AppKit access, worker routing, or policy test changes are …
Cmux Expensive Synchronous Load ✅ Passed PASS: The authoritative pull-request diff changes five Swift files by adding only import CmuxFoundation in each file. It adds or moves no synchronous agent-history load, directory scan, JSON/JSONL p…
Cmux Cache Substitution Correctness ✅ Passed PASS: The pull request adds only import CmuxFoundation to five Swift files. The authoritative diff shows no changed reads, caches, persistence, history, undo, or snapshot logic. Therefore, it does n…
Cmux No Hacky Sleeps ✅ Passed PASS: The authoritative diff changes only five Swift source files. Each change adds import CmuxFoundation; no sleeps, timers, polling, delayed dispatch, or wall-clock waits are introduced or expande…
Cmux Algorithmic Complexity ✅ Passed PASS. The authoritative diff changes five Swift files by adding only import CmuxFoundation in each file. The patch adds no loops, collection scans, sorting, filtering, joins, or other algorithmic lo…
Cmux Swift Concurrency ✅ Passed PASS: The authoritative PR diff changes only five import lists. Each file adds import CmuxFoundation; no DispatchQueue, DispatchGroup, Combine state, completion-handler API, or fire-and-forget `…
Cmux Swift @Concurrent ✅ Passed PASS. The authoritative PR diff contains five additions only, each import CmuxFoundation; it changes no functions, call sites, actor isolation, or execution cost. The changed files contain no `@conc…
Cmux Swift Package Boundaries ✅ Passed PASS. The authoritative diff changes only five import lists, with five insertions and no new or expanded feature logic. Each added import exposes the existing public AgentPIDProcessIdentity API from…
Cmux Swiftpm Lockfiles ✅ Passed PASS. The authoritative PR diff contains only five Sources/*.swift files, each adding import CmuxFoundation. It changes no Package.swift, Package.resolved, .gitignore, workflow, or `.xcodepr…
Cmux Swift Logging ✅ Passed PASS. The pull request adds only import CmuxFoundation in five Swift source files. The exact diff contains no added or materially changed logging statements, and no print, debugPrint, dump, `N…
Cmux User-Facing Error Privacy ✅ Passed PASS. The authoritative diff changes five Swift files by adding only import CmuxFoundation lines. It adds no user-facing errors, alerts, command output, API error bodies, recovery copy, or diagnosti…
Cmux Full Internationalization ✅ Passed PASS. The authoritative diff changes only five Swift source files, and each added line is import CmuxFoundation. No user-facing text, localization key, catalog, plist, web message, or locale data ch…
Cmux Swiftui State Layout ✅ Passed PASS: The reviewed diff changes only five import lists by adding import CmuxFoundation. It introduces no SwiftUI views, ObservableObject, @Published, @Observable, GeometryReader, lazy/list r…
Cmux Architecture Rethink ✅ Passed PASS. The authoritative diff contains five additions only: import CmuxFoundation, with no behavioral, state, lifecycle, timing, polling, locking, observer, side-channel, or entrypoint changes. The i…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The reviewed range changes only five import headers by adding import CmuxFoundation. The diff introduces no NSWindow, NSPanel, NSWindowController, Window, WindowGroup, window identif…
Cmux Source Artifacts ✅ Passed The diff changes only five existing Swift source files under Sources/. Each change adds the intentional import CmuxFoundation declaration. No logs, caches, build output, scratch directories, depen…
Cmux No Test Or Debug Seam In Production Source ✅ Passed PASS. The authoritative PR diff changes only five production Sources/*.swift files, each by adding import CmuxFoundation. No added #if DEBUG or test-build guard, debug/test seam member, widened …
Title check ✅ Passed The title clearly and concisely describes the main change: importing CmuxFoundation for process identity consumers.
Description check ✅ Passed The description explains the problem, fix, and validation. It omits the template headings, checklist, and review trigger, but it provides the required core context and testing information. A demo vide…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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.

@greptile-apps

greptile-apps Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

The PR appears safe to merge because it only adds valid imports for a module already linked by the affected target.

Summary

This PR restores access to AgentPIDProcessIdentity after its move into CmuxFoundation.

  • Adds the required CmuxFoundation import to five process-identity consumers.
  • Makes no runtime behavior, data-flow, dependency-version, or security changes.
  • The cmux target already directly depends on CmuxFoundation.

Reviews (1) · Last reviewed commit: "fix: import CmuxFoundation process ident..."

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 20, 2026 12:36
@austinywang
austinywang merged commit 968cef2 into main Sep 20, 2026
35 of 38 checks passed
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 20, 2026
2a1d8d3 Merge pull request manaflow-ai#13165 from manaflow-ai/fix-ci-notification-duplicate-build
892ecbb ci: forward notification test runner tool paths
7345e27 test: give the package gate harness the selector inputs the step needs
27bd717 ci: run notification semantics once using compile admission products
752aa1e test: exercise notification gates against shared build products
968cef2 fix: import CmuxFoundation process identities (manaflow-ai#13236)
6d43ea6 Fix optimistic Cloud workspace creation in both sidebars (manaflow-ai#13155)
9da9a71 ci: refresh GhosttyKit checksum for c5c31ce8 (manaflow-ai#13231)

# Conflicts:
#	.github/workflows/ci.yml
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Applies upstream 968cef2 to unblock this PR's app-host compilation.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Applies upstream 968cef2 to unblock this PR's app-host compilation.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Applies upstream 968cef2 to unblock this PR's app-host compilation.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 20, 2026
* feat(localization): add one-command contributor workflow

* test(localization): reproduce six workflow review findings

* fix(localization): address workflow review findings

* test(localization): reproduce localize-changes review failures

Failing coverage for the confirmed review findings:

- a changed default that conflicts with an unchanged call site (same
  diff or untouched file) is silently written to the catalog
- a same-file default conflict still prepares the first default
- repeated calls with one key and one default raise permanent attention
- locale-only deletions of list-valued web messages pass parity
- a translation confirmed unchanged through the packet is marked
  needs_review again on every run
- prepare_macos and extract_changed reparse the catalog once per key

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix(localization): close localize-changes review findings

- Conflicting defaults: a changed key is compared with every other call
  site (unchanged calls in the diff and untouched files found with one
  git grep). Disagreeing defaults become a human-attention item and the
  key is left unprepared; a same-file conflict no longer prepares the
  first default.
- Repeated calls with one key and one default no longer raise the
  "cannot safely prepare" attention item; matched calls are counted
  instead of unique keys.
- Web parity treats list-valued messages as leaves, so a locale-only
  deletion, an extra key, or an untouched list after an English change
  is reported.
- A translation completed through the packet is remembered under
  "confirmed" and is not marked needs_review again while it still holds
  the confirmed text, so a translation that stays correct can finish.
- prepare_macos batches inserts and English edits per catalog and
  extract_changed parses each catalog once. 40 keys against the 16 MB
  app catalog: 150 s before, 3 s after.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* test(localization): cover partial and cross-call import failures

* fix(localization): validate imports and track each changed message

* fix: include upstream process identity imports (#13236)

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 21, 2026
Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 21, 2026
Applies upstream 968cef2 to unblock this PR's app-host compilation.
teamleaderleo added a commit that referenced this pull request Sep 21, 2026
Applies upstream 968cef2 to unblock this PR's app-host compilation.
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* test: reproduce missed socket path recovery and ownership drift

* fix: recover socket paths lost before monitoring or reconfiguration

* fix(socket): bind initial path check to monitor registration

* test: reproduce socket chmod replacement race through transport seam

* fix: pin socket inode while applying file permissions

* fix: sync upstream CmuxFoundation import repair (#13236)

Applies upstream 968cef2 to unblock this PR's app-host compilation.

* fix: preserve bare relative socket permission paths

* refactor: give socket permissions an owned inode lifetime

Remove the production race-injection callback and static-only namespace.
Tests replace public paths between real pin/apply operations.

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* Expose Settings in the sidebar Help menu

* test: wait for Settings shortcut transition

* fix: import CmuxFoundation process identities

Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* Bundle custom sidebar onboarding assets

* Add custom sidebar onboarding asset catalog

* Add custom sidebar starter template

* Bundle Focus custom sidebar example

* Bundle Activity custom sidebar example

* Add custom sidebar settings host actions

* Add custom sidebar onboarding file helpers

* Implement custom sidebar onboarding host actions

* Add native custom sidebar onboarding controls

* Inject custom sidebar host actions into Settings

* Test custom sidebar onboarding file behavior

* Tighten custom sidebar onboarding copy

* Add Settings onboarding localization resource

* Add custom sidebar onboarding translations

* Use Settings bundle for onboarding strings

* Localize bundled sidebar example names

* Keep custom sidebar strings in the app catalog

* Use example filenames in onboarding menu

* Unique starter sidebar filenames

* Use existing app-localized onboarding labels

* Remove package-local onboarding catalog

* Document custom sidebar onboarding package API

* Use custom sidebar asset loader value

* Use custom sidebar onboarding asset loader

* Update onboarding tests for asset loader value

* Use documented starter sidebar syntax

* Reuse shipped compact sidebar as starter

* Add custom sidebar template value

* Add custom sidebar onboarding result

* Keep onboarding asset loader focused

* Test bundled custom sidebar onboarding assets

* Narrow custom sidebar create host action

* Keep create sidebar naming host-owned

* Keep onboarding result surface minimal

* Use zero-argument custom sidebar create action

* Render example filenames as invariant text

* Strip checkout-only example install hints

* Verify installed examples omit checkout hints

* Link onboarding assets to canonical examples

* test: cover sidebar case collisions and external discovery changes

* fix: preserve sidebar files and observe external discovery changes

* fix: harden custom sidebar discovery cancellation and writes

* fix: unwrap the directory listing before compactMap

`try? a ?? b` applies try? to the whole expression, so the listing was
[URL]? and compile admission failed on Xcode 26.3 with "value of optional
type '[URL]?' must be unwrapped". Parenthesize the try? so ?? supplies the
empty fallback.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix: explain custom sidebar onboarding failures and complete translations

* fix: sync upstream CmuxFoundation import repair (#13236)

Applies upstream 968cef2 to unblock this PR's app-host compilation.

* test(sidebar): avoid a shared-runner wall-clock ceiling

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* refactor: extract configured shortcut matcher

* fix: import CmuxFoundation process identities

Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* refactor: extract UI test infrastructure from AppDelegate

* fix: import CmuxFoundation process identities

Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.

* fix: isolate main-queue UI test diagnostics callback

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* feat(settings): add automation rules host actions

* feat(settings): bridge existing automation rules

* feat(settings): expose automation rules card

* test(settings): cover automation rules status

* test(ui): cover automation rules settings card

* fix(settings): keep automation status errors product-safe

* fix(settings): sanitize automation config errors

* fix(settings): bind automation refresh to view lifecycle

* test(settings): assert product-safe automation errors

* test(ui): document automation rules coverage

* fix(i18n): bundle automation settings strings

* fix(i18n): resolve automation strings from package bundle

* fix(i18n): add automation rules translations

* test(settings): exercise automation edit failure before editor launch

* fix(settings): surface automation file creation errors

* fix(settings): remove dangling tasks and declare automation locale

* fix: include upstream process identity imports (#13236)

* fix(settings): give actionable automation creation error guidance

* fix(settings): translate automation alerts in every catalog locale

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* tools: make cmuxTests wiring deterministic

* chore: normalize synchronized test wiring

* test: sync-test-wiring must keep blank lines where the normalizer puts them

The cmuxTests Sources list on main carries blank lines, and
normalize-pbxproj.py sorts them ahead of the entries. sync-test-wiring
moves them behind the entries, so its output fails check-pbxproj.sh. The
fixture had no blank lines, so the existing normalization test passed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix: sync-test-wiring orders blank lines like the pbxproj normalizer

_sort_list_entries re-emitted a build phase files list as entries then
blank lines. normalize-pbxproj.py sorts every line of that list, so blank
lines come first, and the synced project failed check-pbxproj.sh in
workflow-guard-tests. Emit blank lines first and regenerate the project,
which now matches main's ordering in the cmuxTests Sources phase.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix: import CmuxFoundation process identities

Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.

* test: preserve source identities across partial wiring edits

* fix: reconcile test wiring by object identity

* test: retain the live neighbor in duplicate-wiring fixtures

* fix: preserve shared sources owned by another project group

* perf(test-wiring): index group children once and explain normalization drift

* test(cloud): migrate newly wired notification checks to current owners

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 22, 2026
* Preserve JSONC authoring in cmux settings writes

* fix: align JSONC editor construction and UTF-8 reads

* fix: preserve effective duplicate JSONC keys

* test(settings): cover duplicate-ancestor resets and source encodings

* fix(settings): reset duplicate paths and preserve JSONC encoding

* fix: include upstream process identity imports (#13236)

* test(settings): compare duplicate-path writes with Foundation reads

* fix(settings): edit the duplicate member Foundation actually reads

* test(settings): cover persisted cache shape and hidden duplicate resets

* fix(settings): publish parsed writes and reset all Python duplicate ancestors

* test: install JSONC helper in settings skill fixtures

* fix: serialize lossless config writers

* feat: add shared config writer lock

* fix: share config writer lock with helper

* test: refuse helper writes under shared lock

* test: enforce native config writer lock

* fix: wait briefly for concurrent config writers

* fix: publish config with atomic compare-and-swap

* test brief concurrent settings writes serialize

* settings helper: serialize and CAS config writes

* test settings helper write serialization

* test: harden settings helper lock fixtures

* fix(settings): publish JSONC edits with atomic CAS

* fix(settings): close helper compare-replace race

* test(settings): cover helper CAS race

* settings: keep atomic publish failures coherent

* settings: invalidate cache on publish failure

* fix: wait on config writer lock without polling

* fix: guard atomic config recovery exchange

* test: isolate JSONC mutation regressions from CLI validation

* settings helper: infer project scope from target

* test target-relative settings scope

* test: align writer-lock coverage with blocking flock

* test: expose settings recovery and CRLF races

* fix: preserve authored bytes and recovery winners

* fix: keep blocking config locks off cooperative executor

* fix: retain conflict identity when rollback fails

* test: cover rollback failure without fixed lock sleeps

* test: require retained recovery after exchange race

* fix: retain recovery instead of racing swap-back

* fix: unify post-swap settings rollback

* Infer settings scope from the working directory, not the target file

The custom-global block of tests/test_cli_config_doctor.py started failing
with "custom global cmux.json was misclassified as project-local: error:
$.app: is only supported in the global cmux.json".

semantic_scope_for() decides project-local by asking whether the target is
the config an enclosing project would load. Seeding that search at the
target's own directory made the check tautological: the walk's first
candidate is <target dir>/cmux.json, which is the target itself, so
discovered_project_config(resolved.parent) == resolved held for every
cmux.json outside the hardcoded global paths. A custom global config such
as ~/custom-global/cmux.json was therefore validated as project-local and
its global-only keys ($.app) were rejected.

The same rewrite also turned the walk's `while current != home` guard into
a post-check, so $HOME/cmux.json was newly treated as a project config for
any descendant directory.

Seed the walk from the working directory again, as SKILL.md documents, and
restore the pre-home loop bound. Explicit --scope still overrides, .cmux/
configs stay project-local, and the JSONC authoring preservation this
branch exists for is untouched.

Replace the unit test that pinned the target-relative behavior with
coverage of the contract: a config is project-local when the current
directory would actually load it, and a custom global config outside any
project stays global.

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 25, 2026
* settings: add local tmux host action surface

* settings: route local tmux actions through bundled CLI

* settings: expose local session persistence

* settings: index local tmux persistence

* test: cover local tmux settings session parsing

* test: cover local tmux settings discovery

* docs: describe local tmux settings entry

* refactor: isolate local tmux settings card

* settings: add local tmux persistence card

* settings: keep local tmux attach semantics explicit

* settings: drain local tmux CLI output safely

* settings: resolve local tmux start cwd from active workspace

* settings: make local tmux card dependencies explicit

* test: add local tmux settings tests to project

* Validate local tmux session list responses

* fix(settings): harden local tmux process boundary

* fix(settings): make local tmux refresh lifecycle-bound

* test(settings): exercise local tmux decoder off-main

* fix(i18n): bundle local tmux settings strings

* fix(i18n): centralize local tmux host copy

* fix(i18n): use package-local local tmux messages

* fix(i18n): localize local tmux settings from package bundle

* fix(i18n): translate local tmux settings

* refactor: package local tmux settings state

* fix: localize local tmux count phrases

* fix: localize local tmux search metadata

* test: reproduce cancelled local tmux Settings command completing

* fix: cancel and reap local tmux Settings commands through shared runner

* chore: normalize local tmux test project entries

* fix(localization): translate local tmux labels

* refactor(settings): isolate local tmux session rows

* fix: import CmuxFoundation process identities

Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.

* test: pin the workspace when starting session persistence

* fix: keep local session targets and recovery guidance consistent

* test(settings): cover finite local session CLI deadlines

* fix(settings): bound local session CLI actions to thirty seconds

* fix(settings): keep local session value models nonisolated

* fix(settings): preserve Swift 6.0 syntax at value model boundary

* test(settings): register the session persistence row anchor

* test: capture kill errno before asserting in local tmux cancel test

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

* local tmux settings: keep start/attach running when the view goes away; pass names with --name

Leaving Settings cancelled the shared request lane, which SIGTERMs the
bundled CLI mid start/attach and can leave a created but unrecorded
tmux session. Start and attach now run in their own lane that only
refresh reads share with cancel(). Session names go through --name so
names beginning with '-' are not parsed as flags.

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

* local tmux settings: never let a second action replace a running one

cancel() resets phase to idle while a start/attach keeps running, so a
returning card could re-enable Start/Attach and replace the live action
task, killing the CLI again. Track the running action separately and
gate both buttons and both entry points on it.

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

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Sep 30, 2026
* feat: surface configured actions and launchers

* fix(actions): preserve surface button action identity

* fix(actions): report exact placements and global edit target

* test(actions): pin exact surface placement identity

* test(config): preserve surface action references

* fix(actions): drop hidden surface action references

* test(config): drop references for hidden surface buttons

* fix: localize configured actions empty state

* fix: sync upstream CmuxFoundation import repair (#13236)

Applies upstream 968cef2 to unblock this PR's app-host compilation.

* fix(actions): localize discovery metadata labels

* fix: localize actions discovery titles and open button

Give the Actions menu item and dialog their own whole-string keys instead of
borrowing the titlebar-layout debug label and concatenating, and label the
open button with the existing Open cmux.json key rather than a raw path.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: document French identity for the actions discovery titles

"Actions" is spelled the same in French, and cmux.json is a file name.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
teamleaderleo added a commit that referenced this pull request Oct 1, 2026
* refactor: extract session persistence and autosave lifecycle

* fix: import CmuxFoundation process identities

Apply upstream 968cef2 (#13236) to unblock native compile admission without merging unrelated main changes.

* fix: expose autosave initializer dependency types within the app

* fix(session): infer void autosave task result

* test(session): require shutdown writes on autosave executor

* fix(session): serialize shutdown persistence behind pending autosaves

* refactor: inject UserDefaults into the session snapshot writer

The persistence test now passes an isolated defaults suite so the
empty-snapshot path cannot clear the crash-only marker or legacy
geometry keys in the shared standard defaults.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore: normalize project.pbxproj after the main merge

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Preserve scrollback checkpoints through extracted autosave coordinator

Co-Authored-By: Codex <noreply@openai.com>

* fix: close session persistence review findings

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

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Codex <noreply@openai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants