Skip to content

fix(desktop): quiet gate for workspace switches instead of boot splash#1449

Open
wesbillman wants to merge 1 commit into
mainfrom
brain/workspace-switch-flash
Open

fix(desktop): quiet gate for workspace switches instead of boot splash#1449
wesbillman wants to merge 1 commit into
mainfrom
brain/workspace-switch-flash

Conversation

@wesbillman

Copy link
Copy Markdown
Collaborator

Problem

With the workspace rail, every workspace switch flashed the full cold-boot splash — "Setting up your workspace..." with its character-rise animation replaying from zero — for the brief moment apply_workspace runs. Fast switches got a jarring full-screen blast.

Fix

App.tsx latches once the composite workspace key deviates from its cold-boot value. From then on, loading phases are in-app switches and render a new quiet WorkspaceSwitchGate: plain themed background, spinner only if the switch takes >300ms. Typical switches are now just a brief neutral blink.

Unchanged:

  • Cold boot still shows the splash.
  • First-run onboarding still shows OnboardingLoadingGate.
  • The remount/clean-slate contract for workspace singletons is untouched — only the gate rendered during the wait changes.

Testing

  • New e2e regression test in workspace-rail.spec.ts: slows apply_workspace via a new applyWorkspaceDelayMs mock knob, asserts cold boot shows the splash, then asserts a switch shows the quiet gate and the splash never reappears.
  • just desktop-typecheck, just desktop-check green.
  • Full smoke suite: 342 passed; 3 failures (channels.spec.ts:867, scroll-history.spec.ts:288, timeline-no-shift.spec.ts:205) are scroll-timing specs that fail identically on unmodified main (verified by stashing this change and rerunning) — pre-existing flakes, unrelated.

Switching workspaces via the rail replayed the full cold-boot splash
("Setting up your workspace..." with its rise animation) for the brief
moment apply_workspace runs, making every switch jarring. Latch once the
workspace key deviates from its cold-boot value and render a quiet gate
(plain background, spinner only after 300ms) for switches. Cold boot and
first-run onboarding keep the existing splash.

Adds an applyWorkspaceDelayMs mock knob so the e2e test can observe the
gate deterministically.

Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant