From 48ec8d4e5a959a42b5656457a2fc709449d03023 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Tue, 30 Jun 2026 17:18:56 -0700 Subject: [PATCH 001/248] [eric] onboarding: Arc-style cinematic intro motion spec + standalone preview (warm palette) --- .../Onboarding/cinematicIntro/MOTION_SPEC.md | 218 ++++++++++++++++++ .../Onboarding/cinematicIntro/preview.html | 209 +++++++++++++++++ 2 files changed, 427 insertions(+) create mode 100644 frontend/src/app/components/Onboarding/cinematicIntro/MOTION_SPEC.md create mode 100644 frontend/src/app/components/Onboarding/cinematicIntro/preview.html diff --git a/frontend/src/app/components/Onboarding/cinematicIntro/MOTION_SPEC.md b/frontend/src/app/components/Onboarding/cinematicIntro/MOTION_SPEC.md new file mode 100644 index 00000000..845fd5ac --- /dev/null +++ b/frontend/src/app/components/Onboarding/cinematicIntro/MOTION_SPEC.md @@ -0,0 +1,218 @@ +# Cinematic Intro: build-ready motion spec + +A first-launch cold-open for OpenSwarm, modeled on Arc's welcome cinematic but in our warm +palette and compressed to respect "quicker is better." Measured from the real Arc Mac Welcome +Intro (digigamer capture `5LcrfMiUvmo`): frame-stepped timings + canvas pixel samples, then +re-skinned to our tokens. This is the reference an engineer (or a later coding pass) implements +directly. No vibe-coding: every duration, easing, and color below is pinned. + +## North star + +The OpenSwarm orb is born on a warm-black field, blooms into a warm ember gradient, becomes our +logo, the headline cascades in word by word, then the whole layer dissolves into the first tile +screen ("Tap one and watch."). It plays ONCE on first launch, is always skippable, and doubles as +cover for the backend + 9router cold boot (it is renderer-only, so it runs while they come up). + +The emotional beat is Arc's. The skin, the timing, and the payoff are ours. Do not copy Arc's blue; +that would read as a clone. + +## Hard constraints (read before building) + +- **In-window, not a desktop overlay.** Arc dims the whole macOS desktop with a borderless + always-on-top transparent window. We do NOT. On first launch our window already fills the screen, + so the cinematic plays inside a warm-black layer in our own renderer. This is the only choice that + works identically on the signed DMG and the EXE, and it sidesteps every transparent-window / + multi-monitor / packaged-build footgun. (A mac-only true desktop-dim is a possible later flourish, + explicitly out of scope for v1.) +- **No new WebGL context.** Our existing `PixelBlast` WebGL2 surface is implicated in the GPU-process + crash class (context churn). Cold launch, while the backend is still booting, is the worst moment + to light up another GL context. The orb and the gradient are CSS (radial-gradients + transform + + filter) or, at most, a cheap `