Commit Graph

3 Commits

Author SHA1 Message Date
swipelab
3a2a9f1980 P19.2: integration — refresh goldens for the merged organic motion + finalize docs
Final golden sweep + doc finalization for the organic-animation pass. No .sx
logic/render change; goldens + README only (CLAUDE.md is local-only/gitignored).

Refreshed 8 stale goldens to the SHIPPED render (each verified deterministic):
- p6_anim_swap/clear/fall, p6_fx, p6_inputlock_board (M3TE_FX=3 at swap/clear/fall
  segment phases): last captured at P13.1, so they still showed the PRE-organic
  flat tweens; now show the merged overshoot / pop-ripple / gravity-accel motion.
- p17_fall, p17_stagger, p17_land (M3TE_FX=11 deep cascade): captured incrementally
  at P17.1/.2/.3 and never updated as later steps changed the shared cascade frame
  (P17.2 stagger, P17.3 squash, P18.2 burst ripple), so the committed PNGs no longer
  matched the shipped code (12-20% board-region diff). Re-captured to the final,
  fully-merged fall motion at their documented phases.

README:
- Added the previously-undocumented move-timeline frame recipes (swap/clear/fall/
  after segment phases + the resting-board goldens), filling the doc gap.
- Fixed the now-false P17 prose: p17_fall was described as a "pre-stagger lockstep
  reference" and p17_stagger as carrying "no squash" — both untrue once the full
  fall motion shipped. Now describes all three as the final combined motion, each
  pinned to foreground a different tell (accel / staircase / squash wave).

Verified all 28 goldens: 8 refreshed, 20 unchanged (board+HUD region byte-identical
over a status-bar/home-indicator crop), 0 removed. t=0 rest, win/lose, HUD, select,
idle, FPS, p16/p18 and p11_combo_deep all reproduce. Gate green (ios-sim build +
22/22 logic tests; tests/gem_pose.sx + tests/easing.sx pin the t=0 rest invariant).
2026-06-06 14:13:05 +03:00
swipelab
2f5d60b9e1 P13.1: final vibe integration — playthrough validation, full golden sweep, finalized docs
Integration-only (no logic changes). Validated the full candy vibe in the booted
iPhone sim and brought every artifact in line with the shipped candy palette +
Triple Treat SFX bank.

Goldens — swept all 23:
- Refreshed 15 that predated the candy palette (P12): p6_idle_t0, p6_idle_mid,
  p6_select, p7_restart, p5_swap_before/after, p6_anim_swap/clear/fall/after,
  p6_fx, p6_fx_after, p6_fx_match, p6_inputlock_board, p11_combo_deep — re-captured
  via the documented M3TE_* hooks.
- Left 5 unchanged (board+HUD region byte-identical to the current build, verified
  by cropped-region hash): p4_board, p4_hud, p9_polish, p7_win, p7_lose.
- Removed 3 obsolete pre-board orange-quad goldens (app no longer renders them):
  p0_quad, p0_input_before, p0_input_after.

Docs — README.md:
- Section 2 now describes the candy board (not the old orange quad) and points at
  goldens/p6_idle_t0.png; dropped the removed p0_* references.
- Added the final audio model: Triple Treat SFX provenance + per-cue mapping, the
  per-round ascending cascade (one combo cue per round, clamped at combo5), the
  WAVE/mono/44100/Int16 @ -15 dBFS format spec, and the cue-log capture commands.
- Added image-art asset regeneration (codex imagegen via codex exec + sips
  normalize to exact per-asset dims/format).

Gate: ios-sim build links (exit 0); 21/21 pure-sx logic tests pass. Playthrough
evidence (cue NSLog ascending combo1..combo5 + win/lose stingers, screenshots)
captured in the worker report.
2026-06-06 08:57:26 +03:00
swipelab
c2548aa854 P6.2: score popups & match FX (sx, iOS sim)
Add a purely-visual, transient juice layer over a committed move — score
popups + a tinted particle/flash burst at the clears — with no change to the
model, score, moves, or settled board.

- assets/fx/particle.png: key the painted transparency checkerboard out of the
  provided particle art to real alpha (8-connected border flood fill +
  smooth luminance falloff that preserves the soft glow), downscaled to a
  256x256 RGBA white sparkle. tools/key_particle.sx is the reproducible tool.
- board_fx.sx: BoardFx (live particle bursts + one "+points" popup) and
  BoardFxAssets. The engine image path samples texture*white (no draw-time
  tint), so the white sprite is tinted per gem colour at LOAD time into one
  texture per colour; a burst animates by scale (grow -> shrink) and the soft
  texture edges carry the fade. Combos (cascade depth > 1) burst bigger and the
  popup is larger + gold. All driven by delta_time and self-pruning.
- board_anim.sx: AnimMove carries the model's cascade.awarded so the popup
  shows the real payout without re-deriving any scoring in the view.
- board_view.sx / main.sx: wire BoardFx + the tinted assets, tick each frame,
  spawn on a legal commit, and render bursts (clipped to the grid) under the
  popups (drawn on top). Input-lock (BoardAnim.active) is untouched; FX never
  gate input and may outlast the move slightly before vanishing.

Goldens (iPhone-17-class sim, iOS 26): p6_fx.png (combo: gold "+480" + bursts
mid-cascade), p6_fx_match.png (single match: "+30" + red burst), p6_fx_after.png
(settled board, FX fully gone). Gate: ios-sim build links, 15/15 logic tests
green (scoring/cascade goldens unchanged).
2026-06-05 02:18:55 +03:00