Skip to content

ADR-006: Implement Level Zero Adaptive Onboarding Flow#30

Closed
Copilot wants to merge 2 commits intomainfrom
copilot/adr-006-implement-onboarding-flow
Closed

ADR-006: Implement Level Zero Adaptive Onboarding Flow#30
Copilot wants to merge 2 commits intomainfrom
copilot/adr-006-implement-onboarding-flow

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 22, 2026

Rewires the existing boot/animation infrastructure into the correct ADR-006 sequence and adds the missing robot-guided onboarding phases. The old flow sent users directly to Stage 1 after boot; the new flow gates progression behind the robot's teaching sequence and Trade Window consent.

Button Differentiation

  • Removed beginPulse glow from .begin-btn (CSS + _postBootReveal JS) — the "Begin Setup →" button is now a static secondary CTA
  • New "Get Started" button lives inside the robot's speech bubble; carries its own getStartedPulse animation that only fires after INACTIVITY_GLOW_DELAY_MS (60s) of inactivity

Robot Onboarding Phases (post-boot)

  • Phase 1body.phase1-speech + _runPillTour(): robot says "Hover over each of the icons", then animates (translateX) toward each of the 3 hero feature pills in sequence, showing tooltip explainers (~1.5s each)
  • Phase 2_startPhase2(): speech updates to "FERROS is free, for you, for life. Click this button to get started." with the Get Started button rendered inside the bubble; 60s inactivity timer starts

Feature Pill Tooltips

Each .feature-pill wrapped in .feature-pill-wrap with a .feature-pill-tooltip child — shows on :hover or via .pill-active class (robot-triggered during tour):

  • 🔒 Cryptographic Seals — explains tamper-evident hash chain
  • 🏆 Achievement System — explains SP and stage unlocks
  • 💻 100% Local / No Servers — explains file://, localStorage, no cloud

Get Started → Trade Window → Achievement Flow

  • handleGetStarted() opens Trade Window; _tradeWindowAccepted flag prevents double-prompt when user later clicks "Begin Setup →"
  • _postGetStartedAccepted() removes body.pre-trade (reveals achievements/profiles), applies .ach-locked (50% opacity + grayscale) to all achievements except Genesis Pioneer and Discover Profiles, then fires _launchRocketFromGetStarted() — rocket arc from Get Started button to Genesis Pioneer card
  • _robotTransitionToAchievements(): robot exits right, enters left with androidBobFast excited bob, switches to body.congrats-speech

Content Gating

body.pre-trade (set in _postBootReveal alongside removing body.boot-sequence) hides .genesis-ach-section, .gallery-preview-section, .alias-entry-section, .recovery-entry-section until Trade Window is accepted.

Second Achievement Path

_unlockDiscoverProfiles() gates on _tradeWindowAccepted || sessionMode (Genesis Pioneer must come first), then unlocks the Discover Profiles card. Triggered by:

  • browseAllProfiles() / startAliasFromGallery() (profile fork)
  • completeStage0() (Begin Setup →)

"Start from Scratch" card in featured profiles now calls scrollToGenesisCard() (smooth scroll to Welcome box) instead of jumping directly to completeStage0().

AGENT_GUIDE.md

Added BUG-007 (Begin Setup glow), BUG-008 (achievement hover tooltip persistence), BUG-009 (scroll gating clipped Begin button) with the canonical button differentiation table.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • example.com
    • Triggering command: /usr/bin/curl curl -s -o /dev/null -w %{http_code} REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Context

This is PR D — the big implementation PR that brings the full corrected onboarding flow per ADR-006 (just merged in PR #29). This builds on top of all previously merged PRs (#22-29) and is the definitive implementation of the Level Zero robot-guided onboarding experience.

CRITICAL: Read docs/AGENT_GUIDE.md AND docs/adr/ADR-006-level-zero-adaptive-onboarding.md (just merged in PR #29) before touching any code. ADR-006 is the binding spec for this PR. All architecture constraints apply:

  • file:// protocol compatibility mandatory — no external deps, no fetch(), no ES modules, no CDN
  • saveProfile() is the ONLY localStorage write point
  • Do not restructure the stage flow (0→1→2→3)
  • Do not modify hashData() or the seal chain
  • Single self-contained HTML file with all CSS/JS embedded
  • Trade Window consent dialog must never be bypassed

Read ALL existing ADRs in docs/adr/ — they are binding.

Current State of Main Branch

PRs already merged that this builds on:

The current code has the boot animation and rocket/fireworks from PRs #25-28 but they were built BEFORE the corrected flow was defined in ADR-006. This PR needs to rewire the existing animations into the correct sequence and add the missing pieces.

What Needs to Change (per ADR-006)

1. Differentiate the Buttons

There are THREE distinct buttons. They are currently confused. Fix them:

Button Location Purpose Glow?
"Get Started" Inside robot's speech bubble dialog Primary CTA — opens Trade Window Yes — after ~60s inactivity
"Begin Setup →" Welcome to Your Progression System box Start from scratch path (scrolls to progression system) NO glow — remove the beginPulse animation from this button entirely
"🍴 Fork this Profile" Featured profile cards Fork a template No glow

The "Begin Setup →" button currently has the beginPulse glow animation from PR #23. Remove that glow entirely. The glow behavior belongs ONLY on the "Get Started" button inside the robot's dialog, and only after ~60 seconds of inactivity.

2. Robot Phase 1 — Teaching the System

After the boot animation completes and the robot is in position:

  1. Robot speech bubble says: "Hover over each of the icons to see more information"
  2. The three hero feature descriptions need hover explainers/tooltips added to them. These are the elements near the hero section that describe FERROS features. Add interactive tooltips to:
    • 🔒 Cryptographic Seals — tooltip explains what seal chains are and why they matter
    • 🏆 Achievement System — tooltip explains how achievements and SP work
    • 💻 100% Local / No Servers — tooltip explains file:// protocol, localStorage, no cloud dependency
  3. The robot animates to hover over each of the 3 feature icons in sequence (quickly, ~1.5s each), which briefly triggers/shows each tooltip. Use CSS transform to move the robot, and add/remove a class to show each tooltip.
  4. Robot returns to home position after the tour (~4.5s total for the tour)

3. Robot Phase 2 — Get Started

  1. Robot speech bubble changes to: "FERROS is free, for you, for life. Click this button to get started."
  2. A "Get Started" button appears INSIDE the robot's speech bubble. Style it prominently — this is the primary CTA.
  3. After ~60 seconds of inactivity (user hasn't clicked anything), the Get Started button starts glowing brighter with a pulse animation. This is the adaptive difficulty hint — if they haven't found it, make it more obvious. (Note: there are only 3 hover explainers to read, so 60s is very generous.)

4. Get Started → Trade Window → Rocket → Achievement

  1. User clicks "Get Started" → Trade Window consent dialog appears (the existing showTradeWindow() or equivalent from PR Add MMO-style Trade Window permission/consent dialog with session mode #7)
  2. User accepts Trade Window → achievements section becomes visible/scrolls into view
  3. 🚀 Rocket animation fires (existing from PR Achievement unlock: rocket animation, screen-wide fireworks, click-to-toggle tooltips #25) — rocket launches up, orbits, lands on Genesis Pioneer
  4. 🎆 Fireworks burst (existing from PR Upgrade fireworks: CSS custom-prop particles, 3-burst cascade, screen-wide coverage #28) — screen-wide celebration
  5. "+25 SP" float-up on Genesis Pioneer card
  6. Robot transition: slides out the RIGHT side of the hero/level-up section, then re-enters from the LEFT side of the achievements section. The robot should look giddy/excited — maybe a faster bob animation or a little bounce.
  7. Robo...

This pull request was created from Copilot chat.


⌨️ Start Copilot coding agent tasks without leaving your editor — available in VS Code, Visual Studio, JetBrains IDEs and Eclipse.

- Remove beginPulse glow from Begin Setup button (glow only on Get Started)
- Add hover tooltip explainers to 3 hero feature pills
- Robot Phase 1: Hover over icons instruction + pill tour animation
- Robot Phase 2: Get Started button in speech bubble + 60s inactivity glow
- Get Started -> Trade Window -> rocket -> fireworks -> Genesis Pioneer
- Achievement gating: all except Discover Profiles locked until Trade Window
- Pre-trade content gating via body.pre-trade class
- Second achievement: Discover Profiles unlock on browse/fork/begin setup
- Robot excited transition to achievements section
- AGENT_GUIDE.md bug log entries BUG-007/008/009"

Co-authored-by: Maangled <108793241+Maangled@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Maangled/ferros/sessions/ed22ea0b-d5e8-4cd9-a93f-20af00714b28
Copilot AI changed the title [WIP] Implement corrected onboarding flow per ADR-006 ADR-006: Implement Level Zero Adaptive Onboarding Flow Mar 22, 2026
Copilot AI requested a review from Maangled March 22, 2026 01:16
@Maangled Maangled closed this Mar 22, 2026
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.

2 participants