Repository navigation
Bump Bonsplit and narrow tab sidebar reads - #15942
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 49 seconds. View limit detailsLimit details: You’ve used all 10 included reviews currently available. Review configuration: ⚙️ Run configurationConfiguration used: Repository: manaflow-ai/cmux/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (3)
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 |
|
All contributors have signed the CLA ✍️ ✅ |
|
Heads up on ordering, because these two PRs both move the
The three pins form a straight line:
#15930 is gitlink-only, has auto-merge on, and its Two things follow:
No action needed on the code here. Just do not resolve that gitlink conflict toward the older pin. 🤖 Generated with Claude Code |
Keep the Bonsplit pin at bf5f0519bd3 after the stale-base restore. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
|
bonsplit main now also carries manaflow-ai/bonsplit#261, merged as
Could this bump pin |
Dogfood tours of
|
CI failure attributionCI failed on
Matched log linesNot re-run automatically: Written by |
|
The bonsplit weak-reference abort is still reaching main's app-host shards. In the #15488 validation full suite, shard 3 of run 36732010954 (cmux14) crashed the app host with: The fix is manaflow-ai/bonsplit#261 (
bonsplit main's head |
Preserve the Bonsplit gitlink at bf5f0519bd3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Merge receipt for
Labeled |
|
@teamleaderleo this merge moved #16094 is merged up to main (58a5f3e) and pins bonsplit main's head, |
The forward-only guard checks submodules out two commits deep. When an old pin sits deeper than that, it asks the GitHub compare API, which fails whenever the repository's shared Actions token is out of quota. The guard then reports "could not determine ancestry". It did so on every run of this PR (bf5f051 -> 7544622, three commits deep) and of #15942, although GitHub's compare says behind_by=10, ahead_by=0. As a last resort after the compare, the guard now fetches the missing history (commits and trees, no blobs) and decides locally. It never runs when the local check or GitHub already answered, so passing and rejected moves keep their current path. A shallow bonsplit clone at 7544622, as CI makes it, now resolves bf5f051 as forward. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… guard fetch history (#16094) * fix: pin bonsplit main with the deallocating-window hint fix main's app-host shards still abort with "objc: Cannot form weak reference to instance ... of class NSKVONotifying_NSWindow" (shard 3 of #15488 validation run 36732010954 on cmux14). manaflow-ai/bonsplit#261 (bb03f7d) fixes it, but main pins bd340ad, the hint-pill branch from #15821, which predates it. Pin bonsplit main's head, 7e5598e: it merges the hint-pill branch over bf5f051 (#268) and bb03f7d (#261), so main keeps #15821's bonsplit changes and gains the fix. The two app edits are #15942's adaptation to the performance changes that come with bf5f051: read pane tab ids through tabIds(inPane:), and correct the title-refresh comment now that bonsplit observes each tab item. Refs #15488 Co-authored-by: Leo Li <cheerleaderleo@outlook.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: say a title frame wakes only its tab's views With bonsplit observing each tab item, a title-only refresh no longer invalidates the whole tab bar subtree; the comment at the call site still said it did, contradicting the doc comment on refreshTabLabel. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(settings): add the missing try and capture that break main's compile #14868 merged 74c3a5f after its compile admission failed, so CmuxSettings, and with it the app, no longer builds on main: JSONConfigAtomicPublisher.swift:74: call can throw but is not marked with 'try' JSONConfigStore.swift:601: reference to property 'fileURL' in closure requires explicit use of 'self' to make capture semantics explicit The post-exchange rollback now uses `if try`, like the publisher's two other rollback call sites, so a failed rollback still reports sourceChangedRollbackFailed. The isTargetCurrent closure captures the store's nonisolated fileURL by value instead of the actor. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test: expect the cancelled-run message from the tests gate The same change as #16168 (108bd10), carried here so this PR's Linux guards pass and its macOS jobs are not declined while main is red. #16150 made the ci.yml tests gate report a cancelled linux-preflight as "cancelled: linux-preflight"; the test kept the old text. Refs #15488 Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * ci: let the submodule guard fetch history when GitHub can't answer The forward-only guard checks submodules out two commits deep. When an old pin sits deeper than that, it asks the GitHub compare API, which fails whenever the repository's shared Actions token is out of quota. The guard then reports "could not determine ancestry". It did so on every run of this PR (bf5f051 -> 7544622, three commits deep) and of #15942, although GitHub's compare says behind_by=10, ahead_by=0. As a last resort after the compare, the guard now fetches the missing history (commits and trees, no blobs) and decides locally. It never runs when the local check or GitHub already answered, so passing and rejected moves keep their current path. A shallow bonsplit clone at 7544622, as CI makes it, now resolves bf5f051 as forward. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): apply migrations the way production does everywhere #15423 added a CREATE INDEX CONCURRENTLY migration and taught the production migrator (migrate-planetscale.mjs) to run it outside a transaction. CI, web-validation and local databases still ran `drizzle-kit migrate`, which wraps every migration in one transaction, so main's web-db-migrations job fails with "CREATE INDEX CONCURRENTLY cannot run inside a transaction block", and `bun run db:migrate` fails for anyone with a fresh local database. The production migrator's loop moves unchanged into scripts/cloud-vm/apply-migrations.mjs, and a new scripts/db-migrate.mjs runs it against DIRECT_DATABASE_URL or DATABASE_URL. Every caller of `drizzle-kit migrate` now uses it: ci-web, web-validation, cloud-vm-guest-install, ios-streamed-validate, db-local.sh, and dev-local.sh through db-local.sh. CI now exercises the code path production runs. Checked on a scratch Postgres 14: all 93 migrations apply, a second run applies none, and cloud_vms_observed_destroy_cleanup_idx is valid. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): use the transaction's json helper in the outbox test main's web typecheck fails since #15423: tests/vm-workflows.test.ts(6219,37): error TS18047: 'sql' is possibly 'null'. The test narrows the file's `let sql` at its start, but TypeScript drops that narrowing inside the `sql.begin` callback. The insert there now uses the transaction's own `tx.json`, which is also the connection that runs the insert. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Document the French Actions discovery titles as invariant The same change as #16175 (ee38771), carried so this PR's static checks pass while main is red. #13232 added actions.discovery.menuTitle and actions.discovery.dialogTitle, whose French text is identical to the English, and the localization parity check fails on main. Refs #15488 Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(web): insert a real JSON null in the malformed cleanup-row test "Cloud VM database schema > rejects malformed transferred cleanup rows" (#15423) never ran on main, because main's migrations failed before the database behavior tests. With migrations fixed it fails: expect((insertError)?.code).toBe("23514") Expected: "23514" Received: "23502" Its first malformed value is `null`, and postgres.js binds `sql.json(null)` as SQL NULL. The NOT NULL column rejects that (23502) before the check constraint the test is about. The row under test is a JSON null document, so that case now inserts `'null'::jsonb`, and the check rejects it with 23514 like the other nine. Checked on a scratch Postgres 14 with postgres.js: sql.json(null) gives 23502, the JSON null gives 23514, all ten malformed values give 23514, and {modelPlane: true} and {homeVolume: "v"} are accepted. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(config): pass actionReferenceID on the setting-action trust path main doesn't compile since #13232 (ef75ca7) and #14868 (10e78b5) merged 13 minutes apart: Sources/CmuxConfig.swift:2816:51: error: missing argument for parameter 'actionReferenceID' in call #13232 added the required actionReferenceID field to ResolvedSurfaceTabBarButtonEntry. #14868 added a new return of that struct for a project button that shows a global setting action, without the field. That button still shows and runs the referenced action, like the ordinary resolved path below it, so it reports the same resolvedIdentifier. Actions & Launchers discovery then lists the action as placed on the tab bar. The argument shares a line to keep the file within its length budget. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(actions): name setting actions in the discovery summary The second compile error from #13232 and #14868 merging 13 minutes apart, hidden behind the first: Sources/AppDelegate+WorkspaceActionSave.swift:126:9: error: switch must be exhaustive #14868 added CmuxSurfaceTabBarButtonAction.setting, and #13232's Actions & Launchers summary switched over the enum without it. The summary's type token follows each action's cmux.json "type", so a setting preset shows "settingPreset" and any other setting change "setting". The switch is now one case per line, which keeps the file within its length budget. Every other exhaustive switch over the enum already handles .setting. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Keep Workspace+TitleOwnership.swift as main has it The title-frame comment tweak is cosmetic and was the only Swift change left in this PR. Without it the PR is web and CI only, so its checks don't wait on main's cmuxTests build. Refs #15488 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(web): pin the seats-follow-membership billing copy The billing panel's over-seat line is asserted here, and this test has been red on main since the dashboard SPA port: it already checks that no add-seats link is offered, and the port brought one back. Widen it to the copy the rule actually calls for, so both halves of the regression are covered. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Leo Li <cheerleaderleo@outlook.com> * fix(web): restore the seats-follow-membership copy the dashboard port dropped The Team subscription quantity follows the member count, so an over-seat line has nothing for an admin to act on: the reconciler updates Stripe on the next membership fact. That was settled in 06f4a7c, which reworded the line in all 20 locales, removed the add-seats link beside it, and dropped the members-page seat nudge. The dashboard SPA port rebuilt the billing panel from the pre-06f4a7c version at a new path, so git saw no conflict and the link came back, and the locale files went back to the soft-seat wording. `web/tests/ dashboard-billing-screen.test.tsx` has been red on main ever since, which fails the required `ci-status` on every web pull request. Restores the wording and drops the link. `seatNudge` and `seatNudgeAction` go too: the nudge they belonged to is gone from the members page and nothing reads them. `docs/team-settings-and-invites.md` already records the rule, and the stale "seats are soft" comment left hanging over an unrelated type in `team-members.tsx` is removed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Leo Li <cheerleaderleo@outlook.com> * test(web): pin the new-team seat copy too The same merge-resolution path that reverted the billing panel's copy also reverted this line, and nothing asserted on it. Pin the sentence and the old wording's absence so a stale merge side fails the shard instead of shipping. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Leo Li <cheerleaderleo@outlook.com> * test(coderouter): close pinned proxy test connections Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> * fix(coderouter): handle pinned proxy body failures without hanging Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> * fix(ci): address follow-up review findings * merge: keep main's current bonsplit pin * fix(ci): harden locale and migration review follow-ups Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> * fix(ci): finish migration and locale follow-ups Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> * fix(web): preserve locale cookies during RSC navigation Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> * test(web): remove duplicate locale race case --------- Co-authored-by: Leo Li <cheerleaderleo@outlook.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com>
Thanks @STRML: the bonsplit performance work in this bump is yours (manaflow-ai/bonsplit#221, manaflow-ai/bonsplit#222, manaflow-ai/bonsplit#233), and the
tabIds(inPane:)swap comes from your #12023 :)Bump the Bonsplit submodule to the merged performance and terminal-sharing updates. Sidebar ordering now reads
tabIds(inPane:), avoiding construction of full tab snapshots, and the title ownership comment reflects Bonsplit's per-tab observation.Changelog
Changed: tab title updates, such as agent spinners, redraw only the changed tab instead of the whole tab bar -- thanks @STRML!
Validation:
python3 scripts/verify-local.py --only swift-syntax --swift-changedpassed. No cmux app build was run locally.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Bumps the
Bonsplitsubmodule to the merged performance and terminal-sharing updates, and narrows sidebar tab reads.tabIds(inPane:), avoiding construction of full tab snapshots.Written for commit 73c0d74. Summary will update on new commits.