Skip to content

Hold Home on a first launch until its conversation is in - #23704

Merged
teamleaderleo merged 10 commits into
feat-cmux-nextfrom
launch-frame/home-reveal
Oct 26, 2026
Merged

teamleaderleo merged 10 commits into
feat-cmux-nextfrom
launch-frame/home-reveal

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Part of Leo's never-blank first launch frame. A cold launch recording (DEV build of the feat tip, 60 fps) showed Home arriving in pieces: the home workspace's "Start something new" title at 3049 ms, then the second column and import cards, then the header, first-run actions and message box at about 4978 ms. Home is made over several daemon replies (ensure_home, the dock's page tab, then the Chief conversation), and no launch region held it.

Change

  • New launch region .home (Home's conversation's first page). markAllReady and the 1.5 s deadline cover it like the others.
  • WorkspaceContentController holds a Home that has no pane yet until .home is ready. A Home restored with its dock is not held, nor is any other workspace.
  • HomeHostView marks .home ready when its first page is in (the same point the first-run panel stops waiting). An offline or refused owner ends that wait too, so Home shows its notice instead of staying clear.

Test

HomeLaunchRevealTests, red on the test-only head and green with the fix:

  • a Home with no pane stays clear until .home, then draws;
  • a normal workspace with no pane is not held;
  • HomeHostView marks .home ready once its first page is in.

No capture: this holds Home clear until its first page is in during a cold launch; a capture tour shows the settled Home, which looks the same before and after. HomeLaunchRevealTests pins the hold and release.

Agent session: huge-blue

🤖 Generated with Claude Code


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


Summary by cubic

Holds a first-launch Home until its conversation's first page is in, so the launch frame no longer shows Home arriving in pieces (the empty-workspace title at ~3 s, then the header and message box at ~5 s).

  • Adds a .home launch region that markAllReady covers like the other regions.
  • WorkspaceContentController holds a Home that has no pane yet until .home is ready; other workspaces and a Home restored with its dock are not held.
  • HomeHostView marks .home ready when its first page is in, or when an offline or refused owner ends the wait so Home shows its notice instead of staying clear. A Home released before its page came no longer marks .home, so it can't reveal the Home that replaced it.
  • A Home held after the launch deadline has fired is not released by it; .home waits its own deadline from its first hold.
  • The startup benchmark now records .home reveal timing.

Tests

  • HomeLaunchRevealTests covers a pane-less Home staying hidden until .home, a pane-less non-Home workspace not being held, HomeHostView marking .home ready on first page arrival, and a later-held Home waiting its own deadline.

Written for commit 52ffa8c. Summary will update on new commits.

View guided diff Turn on auto-fix

A cold launch showed Home in pieces (the empty-workspace title, then the
second column and cards, then the header, actions and message box over
about 1.9 s). Adds the `.home` launch region (markAllReady covers it) and
tests that a Home with no pane yet stays clear until its conversation's
first page is in. Fails until the fix.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c78-27ca-7140-a6c7-95f0db83b18c&host=huge-blue
@teamleaderleo teamleaderleo added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 21, 2026
@github-actions

github-actions Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

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

Review 52ffa8c: 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=pr23704 -f ref=launch-frame/home-reveal -f platform=macos -f backend_mode=local

Passes: CI passes on 52ffa8c8e6.

CI passes on 52ffa8c8e6 (run 39841021650 attempt 1).

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 44fc3d3 to compare; do not merge until green; see lane-rules

Tour of 18c5ef9b66 (run)

Path-selected interactions

Interaction Changed paths
chief-settings Packages/macOS/CmuxNext/Sources/CmuxNextApp/Home/HomeHostView.swift
core Packages/macOS/CmuxNext/Sources/CmuxNextApp/WorkspaceContentController.swift
Packages/macOS/CmuxNext/Sources/CmuxNextDesign/Launch/LaunchRegion.swift
Packages/macOS/CmuxNext/Tests/CmuxNextAppTests/HomeLaunchRevealTests.swift

Chief front page and settings (before): DEGRADED — 4 ok, 2 unavailable

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 Home with the Chief: its front page while the conversation is empty ok cmux action run home.show
3 Dark ok
4 Back to the system appearance ok
5 Chief settings under the name pill unavailable: exited 1 (the settings open only over a Chief conversation) cmux action run home.toggleChiefSettings
6 Closed again unavailable: exited 1 (the settings open only over a Chief conversation) cmux action run home.toggleChiefSettings
Screenshots (5)

1. Launch
Launch

2. Home with the Chief: its front page while the conversation is empty
Home with the Chief: its front page while the conversation is empty

3. Dark
Dark

5. Chief settings under the name pill
Chief settings under the name pill

6. Closed again
Closed again

### Chief front page and settings \(after\): DEGRADED — 4 ok, 2 unavailable

tour

Video (mp4)

# Step Result Command
1 Launch ok
2 Home with the Chief: its front page while the conversation is empty ok cmux action run home.show
3 Dark ok
4 Back to the system appearance ok
5 Chief settings under the name pill unavailable: exited 1 (the settings open only over a Chief conversation) cmux action run home.toggleChiefSettings
6 Closed again unavailable: exited 1 (the settings open only over a Chief conversation) cmux action run home.toggleChiefSettings
Screenshots (5)

1. Launch
Launch

2. Home with the Chief: its front page while the conversation is empty
Home with the Chief: its front page while the conversation is empty

3. Dark
Dark

5. Chief settings under the name pill
Chief settings under the name pill

6. Closed again
Closed again

### 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.

@teamleaderleo

teamleaderleo commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next / cmux-next checks (god files, concurrency, crash safety, l10n) › Tier routing is red on 7 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.

A Home with no pane yet is still being made (its dock's page tab, then the
Chief conversation, over several daemon replies). Its workspace content
now stays clear until HomeHostView's first page is in, so a cold launch
shows Home settled instead of the empty-workspace title, then the second
column and cards, then the header and message box. A restored Home and
other workspaces are not held; the launch deadline still caps the wait.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c78-27ca-7140-a6c7-95f0db83b18c&host=huge-blue
Review of the fix: the 1.5 s launch deadline is armed by the first hold
(the sidebar's, at the window) and releases every region, so a Home made
at 3049 ms was already ready and its hold did nothing. Fails until Home
gets a deadline of its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c78-27ca-7140-a6c7-95f0db83b18c&host=huge-blue
@cursor

cursor Bot commented Oct 21, 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 and others added 2 commits October 22, 2026 03:59
The launch deadline is armed by the window's first hold and releases every
region at once, so a Home held after it had fired was never released by it.
LaunchRegion.hasOwnDeadline marks .home; its deadline runs from its own first
hold, and markAllReady cancels it with the others.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c78-27ca-7140-a6c7-95f0db83b18c&host=huge-blue
The first-page task marked .home ready even after its view was gone, so a
Home torn down while its page was pending could reveal a new Home before
that Home's own page arrived. The task now returns when the view is gone or
the task was cancelled (deinit cancels it).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c78-27ca-7140-a6c7-95f0db83b18c&host=huge-blue
@blacksmith-sh

blacksmith-sh Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Found 7 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp57jomd2k/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmp9yrta6ha/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
convention violations found (ERROR lines above)./
convention violations found (ERROR lines above).
View Logs

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

@cursor

cursor Bot commented Oct 22, 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

Copy link
Copy Markdown
Collaborator Author

Orphaned: no activity for 15 h, and no lane holds a lease on it. Adopted by the orphan sweep: merged feat-cmux-next in at 52ffa8c. A later pass queues it for the merge hub if it is reviewed, small and red only on base reds.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

high-signal review link / link is red on 14 of 18 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.

A Home held alone restarts .home's deadline instead of joining the one a
closed Home armed, and a torn-down workspace leaves the held views.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-b3e7ee61a5723b96272a
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

cmux-next fast gates / post cmux-next/fast-gates is red on 13 of 19 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

Review (codex gpt-6-astra xhigh): SHIP at a627c8a

Independent different-model review (Codex gpt-6-astra, xhigh, read-only in a checkout of this head, on the PR's own three-dot diff). The review at e40e653 returned FIX FIRST: a Home that replaced a closed one joined the closed Home's .home deadline and could show before its page came. a627c8a fixes it: a Home held alone restarts .home's deadline, and teardown releases the workspace's content view. aHomeThatReplacesAClosedOneWaitsItsOwnDeadline covers the fix. This review found no blocking defects. It did not run Swift (Linux host), so CI's compile and swift test cover that.

Adopted from the gone window-focus-opacity lane. Earlier commits on this head: one clean merge of feat-cmux-next, and the missing CmuxNextWakeupsTestSupport import in HomeLaunchRevealTests.

@teamleaderleo
teamleaderleo merged commit 711695f into feat-cmux-next Oct 26, 2026
126 of 134 checks passed
@teamleaderleo
teamleaderleo deleted the launch-frame/home-reveal branch October 26, 2026 07:08
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

base-red-watch: cmux-next web / web lint (fast) went red on feat-cmux-next in https://github.com/manaflow-ai/cmux/actions/runs/40283940567 (first red at 711695f, last green at 68b7877). Suspect: #23704 (commit 711695f). If it is yours, fix forward on feat-cmux-next.

@github-actions

github-actions Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

This branch was previously deployed

1 inactive deployment
ci-routing-agent — a627c8a7 Deployed Oct 26, 2026 by teamleaderleo via namespace autofix #3077
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