aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/chrome/standing-wave.kdl (follow)
Commit message (Collapse)AuthorAge
* slosh: rename the project from sl0pptyuser2026-08-18
| | | | | | | | | | | | | | | | | | | | | sl0p + pty was error-prone to type and the zero made it worse; slosh (slop + sh) is one syllable, impossible to typo, and slosh.foo is ours. Mechanical rename everywhere it appears: binary, env vars (SLOSH, SLOSH_SESSION, SLOSH_BIN, SLOSH_CONFIG), socket dir (/tmp/slosh-<uid>, $XDG_RUNTIME_DIR/slosh), config path (~/.config/slosh), header guards, src/sl0ppty.h -> src/slosh.h, contrib/sl0ppty-dev -> contrib/slosh-dev, the driving-slosh skill, docs and tests. The sl0ppi fork references and the sl0p theme stay: one is history, the other is the brand. The rename surfaced a latent bug in test_osc5577: the hello-reply answer always appeared on screen twice (ECHOCTL echo plus cat -v), but a seven-character implementation name happened to wrap the second copy across the 60-column boundary, so counting substrings in wrapped text found one and passed for the wrong reason. A five-character name moved the wrap and exposed it. The loop guard itself is correct -- with echo off before the request there is exactly one reply -- so the test now counts on de-wrapped text and tolerates the pane's own echo.
* sl0ppty: six chrome presets that need the new operatorsuser2026-08-16
sine-comet an arc gliding round, with a sine's shoulders marching-ants two on, two off, stepping -- the selection marquee standing-wave three lobes that do not travel; the pattern breathes bit-drift position XOR clock, three bits: a machine thinking heartbeat lub-dub, then a rest. For a state xor-barcode the top rule as a barcode, sliding a character at a time Each is a thing the old language could not say. `sin` and `TAU` give `sin(TAU * p / perim)` -- this cell's position as an angle round one lap -- which wraps at the corner for free, because so does a sine, and which fits any whole number of lobes to the ring exactly. That last property is what makes a standing wave stand: three lobes and three nodes, in the same places, breathing. `>> 1 & 1` is a two-cell dash pattern in two operators, with no multiply and no table; adding a slice of the clock marches it. `^` gives a motif that reshuffles rather than slides, which is what a machine looks like when it is thinking and not what any ramp looks like. And `abs(sin())` over a full turn is two humps, so a heartbeat is one expression and a window mask. Two techniques worth stealing from these, and now in the README: **overdrive then clip** (`* 14 - 3000` after a sine keeps only the top of the crest, turning a glow over everything into an arc), and the **angle idiom** itself. Every one of them was measured before it was written down -- the perimeter unrolled into an intensity strip, frame by frame, so an effect that "should" travel is seen travelling. Two candidates did not survive that: a Sierpinski `(x & y) == 0`, which on a ring lights the top and left solid and reads as a bug, and a two-sine interference, which read as noise. `tests/test_chrome_presets.py` picks up all six with no change, and asserts of each what it asserts of the other seven: the frame moves, and the pane's own output does not.