diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-18 04:32:39 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-18 04:32:39 -0500 |
| commit | de49a56c078de5d62b45e17d3cd54937e7303c7f (patch) | |
| tree | 99c574c9f8b8a6506779edd0d08b0b08331c42a0 /scripts/testing | |
| parent | 5a227b2047b94b58e982773a9bbc187f2a02a0ac (diff) | |
| download | archsetup-de49a56c078de5d62b45e17d3cd54937e7303c7f.tar.gz archsetup-de49a56c078de5d62b45e17d3cd54937e7303c7f.zip | |
feat(gallery): make the N20 split-flap an honest Solari mechanism
The card's flip was a 0.3s drop-fade that teleported each cell straight to its target character — a suggestion of a split-flap, not one. Since the gallery card is the spec the ports get measured against, the fake would have propagated.
Three behaviors replace it, studied from the HotFX split-flap component and re-derived (its repo carries no license, so no code was copied). The charset is the drum: opts.chars declares the flap order and a changed cell steps one flap at a time through intermediates, never jumping, so cells arrive staggered by travel distance. A set() mid-cascade re-aims the running cells at the new target. The fold is real: two half-panel animations per flip — the current top falls, the next bottom lands — over four clipped layers with backfaces hidden, replacing the drop-fade keyframe.
animate:false (the reduced-motion gate) collapses every move to an instant jump. The handle grows setText, chars, and reading() so probes can sample the displayed state mid-cascade; the default width goes 3 to 4 cells, which stops truncating every demo word. Probe checks were written red first: cascade arrival, intermediate readings, one-flap-at-a-time stepping in charset order, mid-cascade retarget, and the instant animate:false path.
Diffstat (limited to 'scripts/testing')
0 files changed, 0 insertions, 0 deletions
