Turn label sync The tray and the board now share the presented turn. A 3D ring landing updates the label during the effect, without waiting for the animation to finish.
Capture f5186986 · Final head a9bd4eae · Apple M1 / ANGLE Metal · 2026-11-04 Real table and FX with controlled delivery fixtures. The final delta only inlines an equivalent legacy fallback for the isolated board test harness; the captured app path is unchanged. Online/offline clock rules are covered by targeted tests and the full gate. Tap any frame for its original PNG.
390 × 844 1440 × 900 390 × 844 Pass / ordinary handoff Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Recorded frame changes (JSON) Reverse Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: idle Effect playing Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: playing Ring landing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: You · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: You · FX: idle Recorded frame changes (JSON) Redirect Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: idle Effect playing Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: playing Ring landing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Mochi · FX: playing Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Mochi · FX: idle Recorded frame changes (JSON) Market Crash Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: idle Effect playing Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: playing Ring landing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Recorded frame changes (JSON) Reaction window Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Reaction window open Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Recorded frame changes (JSON) 1440 × 900 Pass / ordinary handoff Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Recorded frame changes (JSON) Reverse Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: idle Effect playing Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: playing Ring landing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: You · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: You · FX: idle Recorded frame changes (JSON) Redirect Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: idle Effect playing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Mochi · FX: playing Ring landing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Mochi · FX: playing Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Mochi · FX: idle Recorded frame changes (JSON) Market Crash Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: idle Effect playing Label: Biscuit's turn Live: Mochi · Presented: Biscuit 3D ring: Not parked · FX: playing Ring landing Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Recorded frame changes (JSON) Reaction window Before delivery Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Live turn advanced, card still reading Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Reaction window open Label: Biscuit's turn Live: Biscuit · Presented: Biscuit 3D ring: Not parked · FX: idle Handoff complete Label: Mochi's turn Live: Mochi · Presented: Mochi 3D ring: Not parked · FX: idle Recorded frame changes (JSON)