Throw-to-remove goal with score/miss celebrations

Featurekamo-internal
Shipped
April 30, 2026 at 12:23 AM UTC
Author
kamo
Commit
36564a5

A 132×132 goal frame appears in the upper-left whenever a head is in solo-drag or active-throw, offset 56px from the corner so heads can miss past or behind it. Three solid walls (top, left, bottom) act as elastic bounce surfaces (0.65 restitution); the right side is the open entry. A bold red X in the back panel makes the "remove" intent unmistakable, and a pulsing entry indicator marks the open side. When a thrown head's center crosses into the score zone, it's removed from the throw map, the underlying tool window is closed via tool:close, and the head is removed via removeHead. A green radial flash, 18-particle gold/orange burst, and a bouncing GOAL! overlay fire on score. When a thrown head merely bounces off any goal wall (debounced by 350ms so a single fail doesn't spam events), the goal shakes red and a MISS! overlay punches in. Stability: goal collision lives entirely inside the throw RAF loop (no spring-system contention), and HexHeadGoalZone owns all celebration state internally — the engine only fires events. Pure additive feature; non-throw drag/drop paths are unchanged.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing