Third integration-feedback release from building the streaming studio.
- New `Button` — a click-to-fire command button in the panel style, the
non-latching sibling of PushButton. Implemented as PushButton's new
`mode="action"` (never latches, press-down + brief LED flash, `onClick`);
led="dot" (default) matches the corner-dot look, led={false} is plain.
- `fill` on LEDFader (parity with Fader) — faders stretch to fill their
container in resizable panels instead of a fixed pixel length.
- `labelSize` on IndicatorLamp (and LampRow) — shrink the caption below its
10px floor to match dense header rows.
- Docs: a dedicated "Buttons & switches" section with a decision guide
(Button/PushButton/TransportButton/ToggleSwitch/SegmentSwitch) + live demos.
Library + docs typecheck and build; 38 tests pass.
- Nav links scroll horizontally inside the bar on narrow screens
(hidden scrollbar) instead of forcing page-level horizontal scroll;
compact logo/link sizing under 760px
- API prop tables scroll inside their own box (display block +
overflow-x auto) - the last source of horizontal page overflow
- Playground: sticky controls become static in the stacked mobile
layout; grid columns use minmax(0, 1fr) so code blocks cannot blow
out the column; smaller code font on phones
Verified at 390x844 with touch emulation: zero horizontal overflow,
rotary knob touch-drag without page scroll, fader tap-to-jump, XY pad
touch drag, and the full synth flow (power, HOLD, latch/unlatch pads)
all working via touch.
- Modular hardware-style panel: System / Oscillator / Filter / Envelope
/ LFO / Drive / Echo / Output / Keyboard sections with labeled frames
- HOLD switch: pads become latching toggles (switching pads retunes the
held note, unlatching or disabling HOLD releases it)
- Fuller Web Audio voice: waveshaper drive, full ADSR, feedback delay
(time/feedback/mix), LFO target switch (cutoff or pitch via detune),
octave/detune/glide with live retuning of held notes
- More of the library in service: MetalKnob (drive, with value bubble),
VintageKnob (echo time), horizontal LEDFader (echo mix), XYPad
two-way-linked with the cutoff/res knobs (exponential x-axis mapping),
SegmentDisplay live frequency readout, 4 preset buttons that glide
every knob via animateChanges
- Disambiguated synth aria-labels from gallery demos; octave readout
fixed via decimals/format
- SteppedKnob now honors the format prop for numeric readouts
React + TypeScript knob/fader library with a headless interaction core
(rotary, relative-drag and track modes, wheel, keyboard, a11y), SVG
primitives, nine prebuilt skins, seven-segment display engine, and a
Vite showcase with gallery, live playground and API docs.