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 | b4d3a6076b569c4e95f1362d23a9b279e5a5c5f9 (patch) | |
| tree | 99c574c9f8b8a6506779edd0d08b0b08331c42a0 /tests/hypr-live-update-guard | |
| parent | 115cb7b5f19797b0fab9afa0328186a0c89ce05f (diff) | |
| download | archsetup-b4d3a6076b569c4e95f1362d23a9b279e5a5c5f9.tar.gz archsetup-b4d3a6076b569c4e95f1362d23a9b279e5a5c5f9.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 'tests/hypr-live-update-guard')
0 files changed, 0 insertions, 0 deletions
