diff --git a/docs/superpowers/plans/2026-06-27-scrub-driven-altitude-transitions.md b/docs/superpowers/plans/2026-06-27-scrub-driven-altitude-transitions.md new file mode 100644 index 0000000..0cef39d --- /dev/null +++ b/docs/superpowers/plans/2026-06-27-scrub-driven-altitude-transitions.md @@ -0,0 +1,803 @@ +# Scrub-driven Altitude Transitions Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Make the Altitude knob position *continuously* drive the scale transition — dragging the dial scrubs the morph video's `currentTime` and crossfades the two adjacent scale soundtracks by knob angle, holding wherever the knob stops, fully reversible. + +**Architecture:** Introduce a continuous float **position** `pos` (integers = altitudes/detents, fractions = mid-morph blend). A small pure module (`scrub.js`) owns the math (position→segment, frac→currentTime, audio gains, integer-crossing detection); `app.js` becomes the DOM/event glue that drives `pos` from the dial, seeks the morph `