feat(gateway): replace the stalled boot bar with a checkpoint ladder - #3376
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
VerificationMounted the real Per-state ladder (driven live through each variant)
Animations confirmed running (not just present in markup)
Slow-boot escalation — waited out the real 45s threshold on the live timer rather than mocking it. At 1m 43s the card correctly showed Also run: typecheck, Not verified visually: the shared- |
The boot takeover showed a progress bar hardcoded to two thirds that only pulsed, so a slow sandbox read as frozen at 66%. It also ran two spinners at once, and Retry appeared only after a hard failure, leaving a slow but healthy boot with nothing to do. Progress is now derived from the status we already poll, so it can never claim more than we can prove: a provisioning sandbox is still being reserved, while a waking or updating one demonstrably exists. Only the active checkpoint animates. At 45s the copy escalates and Retry / Sign out appear. Also fixes the dot ticker, which computed to fully transparent: the --dls-*-rgb tokens are space-separated but the rules used legacy comma rgba(), so the indicator was invisible everywhere it was used, including the composer wait state. Co-authored-by: Cursor <cursoragent@cursor.com>
72936d3 to
4562054
Compare
|
@OmarMcAdam @src-opn re-requesting a look, please. After your approval the single commit on this branch was rewritten to be signed — the default-branch ruleset requires verified signatures and the original commit was unsigned. The new commit was created through GitHub's API so it carries a verified signature, and the PR then auto-merged. The rewrite was content-preserving: Flagging it explicitly so the re-review is a conscious sign-off rather than an inherited one. |
Summary
The gateway boot takeover had a progress bar hardcoded to two thirds that only pulsed:
It never moved and never completed, so a slow sandbox read as frozen at 66%.
provisioningsandbox is still being reserved, while awakingorupdatingone demonstrably exists already.updatinggets its own labels since it isn't a cold boot.Loader2spinner at the same time; now just the active row does.layoutIdwith the corner pill, so it travels into the pill instead of one element vanishing and another appearing. The context tracks whether the takeover is on screen so the two never claim the indicator at once.Drive-by bug fix
The dot ticker computed to fully transparent. The
--dls-*-rgbtokens are space-separated (96 100 108) but these rules used legacy commargba(), which is invalid CSS. The indicator was invisible everywhere it's used, including the composer wait state. Lines 454–458 of the same file already used the correctrgb(var(--x) / a)form; this matches it. Confirmed in-browser: now computes torgba(96, 100, 108, 0.22).Motion
Uses
motionv12, already a dependency.AnimatePresencefor state crossfades,pathLengthfor the check draw,layoutso the card glides, spring for the pill settle,useReducedMotionto degrade to plain crossfades. Infinite loops (ticker, shimmer) stay in CSS so the gateway isn't holding the main thread while it polls.LazyMotionwithdomMax— layout animations requiredomMax, andapp-sidebar.tsxalready loads it, so no new bytes.Test plan
Ran and passing:
npx tsc --noEmit— cleanbun test tests/cloud-workspace-overlay.test.tsx— 21 passbun test(full suite, on the combined branch) — 667 pass; the 6 failures are pre-existing and fail identically on an untouched baselinepnpm build— cleanNew tests cover the stage mapping (exactly one active checkpoint, none once ready), the 45s escalation boundary, elapsed formatting, and render-level assertions that the ladder is present and
w-2/3/animate-pulseare gone.I verified appearance by rendering the takeover against the built stylesheet and screenshotting all three states — that is how the invisible dot ticker was caught, along with pending rings that were too low-contrast. Animation timing and the pill handoff are unverified in motion, since driving the live takeover needs a Den-authenticated gateway runtime. Worth a real boot before this leaves draft.
Open question
The ladder assumes three checkpoints, but
mapCloudWorkspaceStatecollapses everything into single variants. This PR maps variants onto stages, which is honest but coarse. If Den can report a finer-grained boot stage, the ladder would reflect actual progress rather than an inferred position.Made with Cursor