Repository navigation
cmux NEXT: defer first Cmd-N until cold sidebar anchor is realized - #27014
Conversation
a6f4815 to
0ae497c
Compare
|
Review (codex gpt-6-astra high, next-review): BLOCK at 290df63
|
|
Owned by an agent session · session |
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7d538a3fe147c325f822 (cherry picked from commit 8129dea)
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7d538a3fe147c325f822 (cherry picked from commit 9ab7ef4)
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7d538a3fe147c325f822 (cherry picked from commit f3df4bd)
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7d538a3fe147c325f822 (cherry picked from commit c6cfa9c)
Agent-Session: https://cmux.com/deeplink/agent?id=aid-7d538a3fe147c325f822 (cherry picked from commit 290df63)
290df63 to
a0211a5
Compare
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by web and size checks: green Default changesThis pull request changes 2 defaults at
Signed off on this commit by Merge receipt: merged as Regenerate the snapshot with Shipped in:
|
|
Found 5 test failures on Blacksmith runners: Failures
|
|
Review (codex gpt-6-astra high, next-review): BLOCK at a0211a5
|
… placement The list leaves pinned, top-region and custom-section workspaces out on purpose, so their absence is not a stale cold layout: the press records no current machine for them, and the placement pass stops waiting once the current workspace has been pinned since the press. afterCurrent then falls back to top, as documented. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0cf32b32a03b27dcdf4d
# Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextApp/Windows/WindowManager+Placement.swift
Bugbot needs on-demand usage enabledBugbot 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. |
|
Review (codex gpt-6.1-sol high, review-router): SHIP at a154472. No P1/P2 findings. Fixes the two P2s of the d199d41 review with red tests at 393195c: freshness of the cold layout is now per window (each window records the projection its rows were built from), and a placement waits only when this window lists the current workspace, bounded at 3 s. Fleet at this head: ColdCmdNWindowRowsTests, NewWorkspaceBandRoomTests, PlacementStaleRowsTests, ChiefWorkspaceRowsTests pass; ColdCmdNRowSlotTests fails only firstColdCmdNWithRestoredFollowingRowsStaysAfterCurrent, which fails the same way on base 7a70781. |
# Conflicts: # Packages/macOS/CmuxNext/Sources/CmuxNextApp/SidebarBridge+Intents.swift
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0cf32b32a03b27dcdf4d
…pace is gone Sidebar-Look: no visual change Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-0cf32b32a03b27dcdf4d
|
Review (codex gpt-6.1-sol high, review-router): SHIP at ba200c3. No P1/P2 findings. Since the a154472 SHIP: a base merge (one conflict in SidebarBridge+Intents.swift resync, both sides kept) and the fix for the a4bd66e review P2 (a placement waiting on its anchor whose workspace closes is dropped), red test at 273f097. Fleet at this head: ColdCmdNWindowRowsTests, NewWorkspaceBandRoomTests, PlacementStaleRowsTests, ChiefWorkspaceRowsTests, ColdCmdNRowSlotTests all pass. |
|
Review (codex gpt-6.1-sol high, review-router): SHIP at 378f4e0 |
… rows pass runs (#31069) CmdNRowSlotTests, CmdNInGroupRowSlotTests (3 of 4 cases) and ColdCmdNRowSlotTests (intermittent, 3 of 5) were red on feat-cmux-next. Austin's report: a new workspace row draws at the end of the list, then moves to its slot. Event order in the failing runs (SLOTDBG trace, job c8b7e3ff4e954c8e515b260c): 1. The press draws the pending row at its slot. 2. Reconcile: the daemon's workspace is live in the store; applyPendingPlacements takes its entry and clears it. 3. The placement's own refresh (placementSections, sameTurn.syncNow) runs a rows pass before the move is sent. The sidebar document does not place the item yet and does not lag (version == shownVersion), so PendingWorkspaceRows.listing listed the workspace's own row at the daemon's place (the end) and forget dropped the pending row. That frame was drawn. 4. bridge.place sends the move; the next frame has the row at its slot. A passing run is one where the store still showed the stand-in at step 3. The race is old (red at 58af48e, #27014, and at every later point tried), not a recent regression. Fix: a workspace whose slot WindowManager.pendingPlacements holds keeps its pending row at that slot until the placement is sent. The entry is cleared after the refresh, right before the move, and the observed PendingWorkspaceRows.unsentSlots (kept per id from pendingPlacements' didSet, so two apps in one process do not overwrite each other) re-runs the rows pass when it goes, also for a placement that sends no move. An anchor wait now updates its entry in place instead of clearing and setting it again. No wait, retry or delay. Line-neutral in CmuxNextApp (arch-ratchet app_lines).
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Stacked follow-up to #25654 for the first Cmd-N after a cold/update layout.
When the sidebar projection is stale and the current workspace row has not been realized,
afterCurrentnow keeps the placement pending and draws no temporary bottom frame. Once the fresh sidebar pass realizes the anchor, the pending create is retried and inserted immediately after the current workspace. The default rule captures the current machine so omission on another machine does not defer unrelated placement.Changelog
Validation
9578cd596c0d192ee8db1dcbf0858bda5a6466e5): cmux-ci step7a6e1ad7a7a0184eefcb9128(running; expected failure).4934f43cdecc4be8a49466a4on8129deaa308961fdaaad663f30802e2152348c7b: suite passed, showing the original integration test did not catch the stale empty projection.No changes to Lawrence #21914 or Austin #23071. No visual styling or motion changes; matched the Codex quiet sidebar reference (
apps/codex/live/sidebar-active-work-projects-recents.png,Sidebar-Look: no visual change). #25654 still has no usable NIGHTLY display-rate recording; this regression uses an explicit stale-projection state.No capture: this changes when a new workspace's row is placed on a cold launch, not how anything looks; ColdCmdNRowSlotTests records every drawn sidebar frame and checks the new row sits right after the current one in each.
Agent session: agent session