Hold Home on a first launch until its conversation is in

Merged
TE
10d ago
+162-4

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.