- Tray top now clears the HUD at full zoom-out so an entire piece
(base cell + tabs + shadow headroom) stays below the bar.
- Win camera centers the board in the area below the HUD rather than
the whole screen, giving the framed picture room under the bar.
- Add AGENTS.md noting the user handles their own commits/pushes.
- piecesBig counter guard used .parent (always undefined on container
children in this Phaser build — they get .parentContainer), so the
'PIECES' count-up never rendered; drop the dead guard.
- buttonHit() had the same .parent assumption; use .parentContainer.
- Add tools/smokeJigsaw.mjs: headless-Chromium smoke test driving
menu -> play -> win showcase (camera settle, counter, confetti,
frame/shine) -> Play Again -> Menu -> play again, asserting zero JS
errors. Verified pass in browser.
- Frame the completed puzzle large on the right while parking stats/actions in a left-hand panel, easing the camera into place
- Add staggered slide-in choreography for title, time, stats (with piece counter), and action buttons
- Fire confetti burst + falling curtain, a shine sweep, and a pulsing gold frame when the win camera lands
- Introduce exitWin() so restart/menu pull the camera back and slide the panel out before rebuilding state
- Simplify pinHUD() now that HUD/win overlay render through the fixed hudCam