feat(sim): turnable Altitude knob (replaces ring buttons) #18

Merged
benstull merged 1 commits from feature/altitude-knob into main 2026-06-25 04:45:10 +00:00
Owner

Replaces the scale ring's ⊖ out / in ⊕ buttons with a circular Altitude knob — the same endless rotary encoder, now drawn as a dial.

  • cosmos (highest) at the top; turning clockwise descends cosmos → orbit → coast → reef → abyss, and past the deepest it wraps back up to cosmos (the endless ring the server already models — advance + wrap unchanged).
  • Built dynamically from ring.scales: a label + tick per scale, a needle pointing at the current scale, an ALTITUDE caption, the active scale highlighted.
  • Drag to turn — the rotation accumulates and commits whole detents on release, so a big spin collapses to one fast blended pass (reuses the proven wheel/detent path). Scroll the knob to step. Tap a label to jump the shortest way around.
  • Pure simulator-frontend change (index.html / app.js / style.css) — no engine or API change.

Verification: JS syntax-checked; 23 sim-API tests green; live server probed (assets serve, dial present + old buttons gone, abyss→cosmos wrap intact). By-eye visual review deferred to the operator (no Chrome on this box).

🤖 Generated with Claude Code

Replaces the scale ring's **⊖ out / in ⊕** buttons with a circular **Altitude** knob — the same endless rotary encoder, now drawn as a dial. - **cosmos (highest) at the top**; turning **clockwise descends** cosmos → orbit → coast → reef → abyss, and past the deepest it **wraps back up to cosmos** (the endless ring the server already models — `advance` + wrap unchanged). - Built dynamically from `ring.scales`: a label + tick per scale, a needle pointing at the current scale, an `ALTITUDE` caption, the active scale highlighted. - **Drag to turn** — the rotation accumulates and commits whole detents on release, so a big spin collapses to one fast blended pass (reuses the proven wheel/detent path). **Scroll** the knob to step. **Tap a label** to jump the shortest way around. - Pure simulator-frontend change (index.html / app.js / style.css) — no engine or API change. **Verification:** JS syntax-checked; 23 sim-API tests green; live server probed (assets serve, dial present + old buttons gone, abyss→cosmos wrap intact). **By-eye visual review deferred to the operator** (no Chrome on this box). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
benstull added 1 commit 2026-06-25 04:45:09 +00:00
The scale ring's ⊖ out / in ⊕ buttons are replaced by a circular **Altitude**
knob (the endless rotary encoder, drawn as a dial). cosmos (highest) sits at the
top; turning clockwise descends cosmos → orbit → coast → reef → abyss and past
the deepest **wraps back to the top** — the same endless ring the server already
models (advance + wrap unchanged).

- Built dynamically from `ring.scales` (labels + ticks per scale, a needle that
  points at the current scale, an ALTITUDE caption).
- Drag to turn: the rotation accumulates and commits whole detents on release, so
  a big spin becomes one fast blended pass (reuses the proven wheel/detent path);
  scroll the knob to step; tap a label to jump the shortest way around.
- Pure frontend — no engine/API change. JS syntax-checked; live server probed
  (assets serve, dial present, abyss→cosmos wrap intact). 23 sim-API tests green.
  By-eye review deferred to the operator (no Chrome on this box).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
benstull merged commit 7a32ff1acc into main 2026-06-25 04:45:10 +00:00
Sign in to join this conversation.