chris 8a784ec641 Pinball: charge-scaled plunger power, fizzle recovery, charge bar
The plunger held no useful power range — any press launched at nearly
full strength and a missed pointerup could leave it stuck.

- Launch speed now scales with hold time end to end: `-(760 + 320*c)`
  with no minimum floor, so a tap lobs the ball in and a full ~900ms
  hold rips it across the top.
- The gate kick that turns a straight-up launch into the playfield now
  fires lower in the lane (y < 300) and scales too, `-(170 + 220*c)`,
  so even a soft launch clears the divider instead of rattling back down.
- A launch that never reaches the gate now clears `b.launching` on the
  way down, and the lane re-arms for any slow ball sitting in it, so a
  ball that dribbles back into the tube can be re-launched.
- Launch button fills with an accent bar as it charges (`--charge`),
  driven by a new `onCharge` callback; `peek()` reports `charge`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Ve7HLspzeG2xDPtJQ8vmu
2026-09-10 15:04:52 -04:00
..
2026-09-10 11:24:31 -04:00