aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/common/.config/calibre/metadata-sources-cache.json
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-18 07:51:43 -0500
committerCraig Jennings <c@cjennings.net>2026-07-18 07:51:43 -0500
commit4d8e8f5fc88fb09cb498b1a0a3e572aaa6e771ab (patch)
tree96b992eaf7443050b5e932e66662b74223c257c5 /dotfiles/common/.config/calibre/metadata-sources-cache.json
parent872813892e98d9cc7b8253b02cf9a595b144325a (diff)
downloadarchsetup-4d8e8f5fc88fb09cb498b1a0a3e572aaa6e771ab.tar.gz
archsetup-4d8e8f5fc88fb09cb498b1a0a3e572aaa6e771ab.zip
feat(gallery): grow the split-flap into a randomized multi-row board with skins, faces and a flap-rate slider
The N20 card becomes a three-row, six-cell departure board. Every advance sends each row to a completely different word, drawn at random from a 24-word pool with rows kept mutually distinct, and each cell runs at its own mechanical rate (a fixed 0.8x-1.35x of the base flap time), so letters and whole words finish at genuinely different times. A slider on the card sets the base rate (setFlapMs on the handle). The board advances only after it has settled and dwelt two seconds on the reading: the builder announces settle once per command (onSettle) and the page schedules the next advance from that signal, since a fixed-interval ticker would retarget mid-cascade and the panel would never rest. The chain stays gated off under reduced motion, where the board paints once and rests. Customization lands as two construction axes on the chip rig: skin (cream-on-black default, true-white ink, the ivory board, or white cards with dark lettering) and face (Berkeley Mono or Helvetica, the grotesque real boards wore). The skin chips are miniature flap cells, a letter in the skin's real ink on its real board colour, and the font chips letter themselves in their actual face, so every choice previews itself. The flap-rate slider rides in the chips row, and the card's amber word readout is gone: the board is the display. The deterministic seam for callers and tests is setText; randomness lives only in the demo path (next/scramble), which re-aims against the last commanded grid rather than in-flight glyphs. The settle work caught a real ordering bug: setText assigned each cell's target and ran it in one pass, so a cell finishing synchronously saw its neighbours' stale, already-satisfied targets and announced a partial board as settled. Targets now all land before any cell runs. Review caught two more: the dwell chain had escaped the reduced-motion gate (the board self-advanced every two seconds forever under reduced motion), and the skin chips rendered blank because the STYLES entries were strings where the rig paints an object's dot swatch. Since this is heading for extraction as a regular component, the builder got the full refactor pass: a contract comment covering every opt and the handle surface, small named helpers, no page globals, and all CSS in the one split-flap block. The same bar is filed as a sweep task for every other builder. Probe coverage grows to 78 checks: the reduced-motion rest, the live dwell measurement, the scramble contract, both style axes, the speed api and the swatch legibility.
Diffstat (limited to 'dotfiles/common/.config/calibre/metadata-sources-cache.json')
0 files changed, 0 insertions, 0 deletions