Skip to content

fix(desktop): hold the launch logo until a surface commits ready content - #5571

Merged
Astro-Han merged 3 commits into
mainfrom
fix/desktop-launch-hold-until-ready
Sep 21, 2026
Merged

Astro-Han merged 3 commits into
mainfrom
fix/desktop-launch-hold-until-ready

Conversation

@Astro-Han

@Astro-Han Astro-Han commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Summary

#5494 removed the pre-mount onboarding prefetch, so AppShell's first commit now lands before any data resolves. The .maka-preload logo dismissed on that commit (body:has(#root > *)), and the shell then rendered the .maka-onboarding-loading skeleton card while onboarding:getSnapshot waited behind the Host boot gate — two loading surfaces over the same gap, visible as logo → skeleton card → app.

Collapse them into one. The overlay now fades only when a surface commits data-maka-content-ready:

  • .appFrame sets it once isOnboardingLoading clears — the exact boundary where the skeleton used to disappear (first snapshot settled, sessions found, or load-error fallback).
  • WorkHub's composer sets it at mount (no equivalent data gap).
  • The handoff attention dialog and the error surface set it immediately — they cannot wait on the data they gate.

With the overlay covering the gap, .maka-onboarding-loading is deleted along with its styles, prop, and smoke-diagnostic selector. The 8s wedged-bundle timeout is unchanged. notifyRendererReady's comments are corrected: its live job is the crash-recovery reload, not first paint.

Refs #5494

Verification

Real Electron launch, CDP screencast on a fresh profile — BEFORE: the logo fades on first commit and a bare skeleton card sits in the chat area until the snapshot lands; AFTER: the logo holds until the settled hero is committed, then fades. The .maka-onboarding-loading card never appears.

BEFORE — logo dismisses on first commit, bare skeleton card shows:

launch-before.mp4

AFTER — logo holds until the settled hero commits:

launch-after.mp4

DOM timeline sampled every ~80ms confirms the ordering: .appFrame mounts at ~300ms with the overlay still at opacity 1; data-maka-content-ready commits with the hero at ~980ms; the overlay is hidden by ~1.1s.

  • build:workspace-deps, build (renderer + main + overlay), typecheck — pass
  • node --test dist/main/__tests__ — 2770/2770, including a new contract test pinning the selector↔emitter pair and the skeleton's removal
  • npm run format, npm run lint — clean
  • Not run: full npm test, Playwright e2e (no native-boundary behavior changed)

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Devin — diagnosis, implementation, regression test, and launch recordings.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

#5494 removed the pre-mount onboarding prefetch, so AppShell's first commit
lands before any data resolves. The launch overlay dismissed on that commit
(`#root > *`), then the shell rendered the `.maka-onboarding-loading`
skeleton card while the snapshot pull waited on the Host boot gate — the
logo and the skeleton were two loading surfaces over the same gap, and the
user saw logo → skeleton → app.

Collapse them into one: the overlay now fades only when a surface commits
`data-maka-content-ready`. The shell sets it once the first snapshot settles
(the exact boundary where the skeleton used to disappear), the WorkHub
composer sets it at mount, and the handoff dialog and error surface set it
immediately since they cannot wait on the data they gate. With the overlay
covering the gap, the skeleton card is deleted along with its styles, prop,
and smoke-diagnostic selector. The 8s wedged-bundle timeout is unchanged.

Generated-by: Devin

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

@jackwener jackwener left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed 4024c13a770a0a802fd10ca480b1631471851f7d.

No P0–P2.

The launch overlay now fades only when a surface commits data-maka-content-ready. AppShell sets that once isOnboardingLoading clears; WorkHubRoot only mounts on the WorkHub surface, so it cannot dismiss the desktop logo early. The handoff attention dialog and the error surface mark ready immediately. The second skeleton (.maka-onboarding-loading) is gone. The 8s wedged-bundle timeout is unchanged.

Hosted test was still queued at this review. I approved on the code, not on that check.

简体中文

我审查了 4024c13a770a0a802fd10ca480b1631471851f7d。没有 P0–P2。

启动 overlay 等到表面写上 data-maka-content-ready 才褪。AppShell 在 onboarding 加载结束时写;WorkHub 只在自己的 surface 挂载,不会提前关掉桌面 logo。第二个 skeleton 删了。8 秒超时还在。本审查时 hosted test 仍在排队,是按代码批的。


Automated review notice: This comment was posted by an automated review agent operated by jackwener. It is not an independent human review and does not replace one.

@github-actions github-actions Bot added the effort/M Under 500 readable lines label Sep 21, 2026
The readiness attribute grew a ratcheted file by three tokens; the two
`x ? true : undefined` inert props collapse to `x || undefined` for the same
value domain, and the ledger is regenerated.

Generated-by: Devin

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@Astro-Han
Astro-Han marked this pull request as ready for review September 21, 2026 14:35
chat-message-surface no longer imports Skeleton after the launch loading
surface collapsed into the launch overlay.

Generated-by: Devin

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@Astro-Han
Astro-Han merged commit 01df8b1 into main Sep 21, 2026
2 checks passed
@Astro-Han
Astro-Han deleted the fix/desktop-launch-hold-until-ready branch September 21, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants