From b9de6695a03e02e54c02d14a3a9003498f9b0aa8 Mon Sep 17 00:00:00 2001 From: BenStullsBets Date: Tue, 30 Jun 2026 10:48:43 -0700 Subject: [PATCH] docs(welcome): entry button is 'Launch Simulator' (new welcome.launch key) Co-Authored-By: Claude Opus 4.8 (1M context) --- .../specs/2026-06-30-welcome-screen-design.md | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/docs/superpowers/specs/2026-06-30-welcome-screen-design.md b/docs/superpowers/specs/2026-06-30-welcome-screen-design.md index 861d643..f92277e 100644 --- a/docs/superpowers/specs/2026-06-30-welcome-screen-design.md +++ b/docs/superpowers/specs/2026-06-30-welcome-screen-design.md @@ -9,8 +9,8 @@ Replace the current bare boot flow with a single **Welcome screen**: the universal entry gate the visitor sees on every load. It carries the photosensitivity "Heads up" notice, the four output controls (Video, Reduce -motion, Audio, Language) with welcome-appropriate defaults, a **Continue** -button, and the "Loading Universe" progress. The right control panel is hidden +motion, Audio, Language) with welcome-appropriate defaults, a **Launch +Simulator** button, and the "Loading Universe" progress. The right control panel is hidden until the visitor enters the simulation. ## Why @@ -55,20 +55,21 @@ The overlay contains three blocks: control rather than "the panel"). Structured so additional welcome copy can be added later (see Forward notes). 2. **Controls** — the four output controls (below). -3. **Loading** — the "Loading Universe" title + progress bar. +3. **Launch Simulator** — the single entry button. +4. **Loading** — the "Loading Universe" title + progress bar. ### 2. Two visual states -**State A — Welcome (on load):** welcome messaging + controls + Continue button -shown; the Loading block sits at the **bottom**, its bar filling as phase-1 -preload runs in the background. +**State A — Welcome (on load):** welcome messaging + controls + "Launch +Simulator" button shown; the Loading block sits at the **bottom**, its bar +filling as phase-1 preload runs in the background. -**State B — Loading (after Continue, only if not yet loaded):** the welcome -messaging and Continue button **disappear**; the **controls remain**; the Loading +**State B — Loading (after Launch, only if not yet loaded):** the welcome +messaging and Launch button **disappear**; the **controls remain**; the Loading block moves to **center**. When phase-1 preload completes, auto-enter the simulation. -**Continue when already loaded** → skip State B; enter the simulation directly. +**Launch when already loaded** → skip State B; enter the simulation directly. State is driven by a class on `#welcome` (e.g. `.welcoming` → `.loading`), with the "loaded yet?" decision made from a flag set when phase-1 preload resolves. @@ -88,8 +89,8 @@ default. ### 4. Entry into the simulation -Continue is the user gesture that unlocks audio (the role `#run-sim` had). On -Continue → enter (either immediately when loaded, or at end of State B): +"Launch Simulator" is the user gesture that unlocks audio (the role `#run-sim` +had). On Launch → enter (either immediately when loaded, or at end of State B): 1. Copy the four welcome values into the existing panel inputs (`#visual`, `#reduce-motion`, `#audio`, `#lang-select`). @@ -108,7 +109,7 @@ are not a parallel system: - **Language** routes through the global `setLanguage()`, which sets `activeLang` and runs `applyUiStrings()` over **all** `[data-i18n]` elements — so the - heads-up copy, control labels, and Continue button re-render live, exactly like + heads-up copy, control labels, and Launch button re-render live, exactly like the panel selector does today. The panel `#lang-select` value is synced to `activeLang` on entry. - **Reduce motion** sets the same `reduceMotion` variable + `RM_KEY` localStorage @@ -123,15 +124,15 @@ are not a parallel system: **retired**. - Entry uses the **chosen** Audio level rather than always snapping to 2 (2 is the default, not a forced value). -- `#run-sim` is removed; **Continue** is the single entry button. +- `#run-sim` is removed; **"Launch Simulator"** is the single entry button. ## i18n New / changed `UI_STRINGS` keys in `simulator/static/i18n.js` (all four langs — en/es/fr/ja, matching existing parity): -- A Continue button label (reuse `warn.continue` if suitable, or add - `welcome.continue`). +- A new `welcome.launch` key — **"Launch Simulator"** (the single entry button), + translated in all four languages. - Reworded `warn.body` (point at the on-screen Reduce-motion control). - Welcome-screen control labels reuse the existing `output.video`, `output.audio`, `rm.label` keys (already translated). The language selector @@ -156,10 +157,11 @@ tests. Plan to: `#motion-warning` to the new `#welcome` flow. - **Add** coverage for: - Welcome defaults (Video on, Reduce motion off, Audio 2, English). - - Language switch re-renders welcome text (heads-up + labels + Continue) live. - - Continue **while loading** → State B (messaging gone, controls remain, + - Language switch re-renders welcome text (heads-up + labels + Launch button) + live. + - Launch **while loading** → State B (messaging gone, controls remain, progress centered), then auto-enter when loaded. - - Continue **when already loaded** → straight into the simulation. + - Launch **when already loaded** → straight into the simulation. - `.panel` hidden during welcome + loading; revealed on entry. - Welcome control values carry into the panel inputs on entry.