feat(sim): Dev Mode — pool clip picker + live analysis under one toggle #20

Open
benstull wants to merge 0 commits from feature/simulator-dev-mode into main
Owner

A single Dev Mode toggle at the bottom of the simulator control panel (off by default, persisted in localStorage). When on, a panel appears below it with all dev controls + data; off = just the experience + the three control fieldsets.

Dev panel

  • Pool picker<select> of the current altitude's pool members; pick any clip to override the random landing pick. 🎲 Re-roll random re-runs the server-canonical pick. Rebuilds on each landing.
  • Active clip — id, title, source, license, base_file.
  • Annotations & affect — keys with salience / time-window / tier counts (read-only; editing stays in /author.html).
  • RenderPlan JSON — relocated here from the always-visible panel.
  • Cache & playback — preload status (N/total), memory-vs-network for the active clip, live resolution / duration / loop position.

Frontend only — no API changes. pickRandomMember() factored out of landScale() so the initial landing, ring advances, and re-roll share one pick.

Verification

  • 269 passed, 2 skipped; node --check clean; server smoke confirms all dev elements serve.
  • Frontend behavior to be verified by-eye by the operator (no headless browser in repo yet) before merge.

Design: docs/superpowers/specs/2026-06-25-simulator-dev-mode-design.md

🤖 Generated with Claude Code

A single **Dev Mode** toggle at the bottom of the simulator control panel (off by default, persisted in `localStorage`). When on, a panel appears below it with all dev controls + data; off = just the experience + the three control fieldsets. ## Dev panel - **Pool picker** — `<select>` of the current altitude's pool members; pick any clip to override the random landing pick. `🎲 Re-roll random` re-runs the server-canonical pick. Rebuilds on each landing. - **Active clip** — id, title, source, license, base_file. - **Annotations & affect** — keys with salience / time-window / tier counts (read-only; editing stays in `/author.html`). - **RenderPlan JSON** — relocated here from the always-visible panel. - **Cache & playback** — preload status (N/total), memory-vs-network for the active clip, live resolution / duration / loop position. Frontend only — no API changes. `pickRandomMember()` factored out of `landScale()` so the initial landing, ring advances, and re-roll share one pick. ## Verification - `269 passed, 2 skipped`; `node --check` clean; server smoke confirms all dev elements serve. - **Frontend behavior to be verified by-eye by the operator** (no headless browser in repo yet) before merge. Design: `docs/superpowers/specs/2026-06-25-simulator-dev-mode-design.md` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
benstull added 1 commit 2026-06-25 15:20:05 +00:00
Adds a single "Dev Mode" switch at the bottom of the control panel (off by
default, persisted in localStorage). When on, a panel appears below it with all
dev controls and data; when off the default view is just the experience + the
three control fieldsets.

Dev panel:
- Pool picker: a <select> of the current altitude's pool members — choose any
  clip to override the random landing pick; a "Re-roll random" button re-runs
  the server-canonical pick. Rebuilds on each landing.
- Active clip metadata (id, title, source, license, base_file).
- Annotations & affect: keys with salience/window/tier counts (read-only;
  editing stays in /author.html).
- RenderPlan JSON — relocated here from the always-visible panel.
- Cache & playback: preload status (N/total), memory-vs-network for the active
  clip, live resolution/duration/loop position.

Frontend only — no API changes; everything is read from data the renderer
already has. Factored pickRandomMember() out of landScale() so the initial
landing, ring advances, and the re-roll button share one pick.

Design: docs/superpowers/specs/2026-06-25-simulator-dev-mode-design.md
269 passed, 2 skipped; node --check + server smoke clean. Frontend behavior
to be verified by-eye by the operator (no headless browser in repo yet).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
benstull added 1 commit 2026-06-25 15:26:15 +00:00
The generic .hidden { display:none } is defined earlier in the stylesheet than
.dev-panel { display:flex }; equal specificity meant source order won and the
panel stayed visible with the toggle off. A two-class .dev-panel.hidden rule
wins, so all dev controls/data truly hide when Dev Mode is disabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/simulator-dev-mode:feature/simulator-dev-mode
git checkout feature/simulator-dev-mode
Sign in to join this conversation.