fix: import CmuxFoundation process identities - #13236
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review. 📝 WalkthroughWalkthroughFive Swift source files now import ChangesCmuxFoundation imports
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~5 minutes Change: Bug fix 🚥 Pre-merge checks | ✅ 25✅ Passed checks (25 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
|
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
Applies upstream 968cef2 to unblock this PR's app-host compilation.
Applies upstream 968cef2 to unblock this PR's app-host compilation.
Applies upstream 968cef2 to unblock this PR's app-host compilation.
* 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>
Applies upstream 968cef2 to unblock this PR's app-host compilation.
Applies upstream 968cef2 to unblock this PR's app-host compilation.
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
* 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>
Problem
The macOS compile admission job fails while emitting
cmux_DEVbecauseAgentPIDProcessIdentitywas moved intoCmuxFoundation, but five app source files still reference it without importing that package. This blocks the same check across open macOS PRs.Fix
Import
CmuxFoundationin the affected process identity consumers.Validation
git diff --checkSourcesfile referencingAgentPIDProcessIdentityimportsCmuxFoundationNeed help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Fixes the macOS compile admission job by importing
CmuxFoundationin the five source files that referenceAgentPIDProcessIdentity. The type moved intoCmuxFoundation, so these consumers no longer saw it and the build failed.Written for commit fdee0f9. Summary will update on new commits.
Summary by CodeRabbit