<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slosh.git/web/recordings/demos, branch master</title>
<subtitle>an opinionated terminal multiplexer in C with programmable pane chrome</subtitle>
<id>https://git.sl0p.foo/slosh.git/atom/web/recordings/demos?h=master</id>
<link rel='self' href='https://git.sl0p.foo/slosh.git/atom/web/recordings/demos?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/'/>
<updated>2026-09-22T13:52:17Z</updated>
<entry>
<title>web: a recording of the theme picker, and the tour step for it</title>
<updated>2026-09-22T13:52:17Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-22T13:52:17Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=0c51991c12be65856d2e31685b607b12ecd0f4fa'/>
<id>urn:sha1:0c51991c12be65856d2e31685b607b12ecd0f4fa</id>
<content type='text'>
The landing page's feature tour is scripted recordings -- driver scripts
against `slosh --script` on a virtual clock, re-rendered by `make` so a UI
change can never leave a stale demo -- and the picker is exactly the kind of
thing that does not survive being described. "Moving the selection applies the
theme" is a sentence; twenty-six seconds of a session changing colour under a
list is the claim itself.

demos/themes.py: a sidebar session with two tabs and a build pane that says it
is busy (so the spinner is in shot, turning in whatever colour the theme being
tried says it should), `cat config.kdl` showing a config that names a theme and
holds no colours at all, then C-a t -- the list, two themes worn rather than
swatched, `pho` typed to narrow, C-s writing the one line, a second `cat`
proving it wrote that line and nothing else, and finally a browse that ends in
Escape, which puts back what was worn.

Two rules the demo had to obey, both now in PLAN.md beside the other lessons:
only dark themes, because cells slosh does not paint keep the terminal's own
background and the cast header fixes that once -- `paper` would look broken in
the player and fine in a light terminal; and nothing on screen may carry this
machine, so the themes are copied next to the temp config rather than pointed
at with `theme_dir`, leaving a `cat` frame that reads as a name and a
directory nobody has to have.

The step slots after "make it yours, live", which is where a reader has just
been shown a config being edited by hand and is best placed to notice that a
theme is one word of it. Casts are built at publish time, so build-site picks
the new one up with no wiring.
</content>
</entry>
<entry>
<title>web: the config cast zeroes the padding before going compact</title>
<updated>2026-08-30T15:03:55Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T15:03:55Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=4e56615ea2119cfbe3042d578baff06d0fae6110'/>
<id>urn:sha1:4e56615ea2119cfbe3042d578baff06d0fae6110</id>
<content type='text'>
padding 1 2 was still in force when compact arrived, and the dense
school reads best with the panes flush against its dividers. The cast
now takes the padding back first -- cc rewrites the line to padding 0
on camera, one more save applying live -- so the compact beat lands on
the layout it was designed around.
</content>
</entry>
<entry>
<title>web: the config cast edits in colour</title>
<updated>2026-08-30T15:01:45Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T15:01:45Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=1c63cb6aabb181a71ef56df75ccd7f4cd3a1d392'/>
<id>urn:sha1:1c63cb6aabb181a71ef56df75ccd7f4cd3a1d392</id>
<content type='text'>
vim -u NONE kept the render machine's dotfiles out of the cast, but
NONE also switches off filetype detection and syntax -- so the config
demo was editing kdl in monochrome, underselling vim and the file both.
The demo now authors its own six-line vimrc instead: syntax on,
habamax (the webdemo's own look), shortmess for the column. The cast
depends on vim's runtime and nothing personal, which is what NONE was
protecting in the first place.
</content>
</entry>
<entry>
<title>web: the config cast turns the layout before it edits</title>
<updated>2026-08-30T14:58:43Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:58:43Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=f75bd436d03384642fab4176d36f74d410ece76d'/>
<id>urn:sha1:f75bd436d03384642fab4176d36f74d410ece76d</id>
<content type='text'>
C-a e arrived as a strip along the bottom, and a 66-line config in a
twelve-row strip reads like a keyhole. A quarter turn (C-a Space)
right after it opens makes the editor a column with the height the
file deserves -- and shows off the rotate while at it.

The column brought back vim's hit-enter stall (the file-info message
wraps at 49 columns), so the recording's EDITOR gains the same
shortmess the webdemo's vimrc already carries.
</content>
</entry>
<entry>
<title>web: the panes cast shows the drop bands, not just the swap</title>
<updated>2026-08-30T14:51:59Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:51:59Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=c4140555d2d5b45afcc769f1ca182ab872a19a78'/>
<id>urn:sha1:c4140555d2d5b45afcc769f1ca182ab872a19a78</id>
<content type='text'>
The title drag had one beat -- drop in the middle, trade places --
which undersells the feature: carried over a pane, the target
subdivides into a centre and four edge bands, a band meaning "in
beside it, on this side", filling the half it would hand over while
every other candidate greys out. The cast now lingers over the centre,
steers into a band, and drops -- and the drop restacks the whole tab,
a rearrangement no swap could produce, chosen so the release visibly
changes the layout (the first cut dropped a pane beside the neighbour
it already had, and proved nothing).

The band is aimed by its entry in the compositor's hit list, like
every coordinate in these demos: the rect the program promised is the
rect the pointer hits. The panes article's bullet follows suit.
</content>
</entry>
<entry>
<title>web: a seventh cast -- floats, and the cheatsheet</title>
<updated>2026-08-30T12:41:38Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T12:41:38Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=70e3320179b3388f18146d7dcbbd5242453862d3'/>
<id>urn:sha1:70e3320179b3388f18146d7dcbbd5242453862d3</id>
<content type='text'>
C-a F drops a throwaway shell over a working layout; a monitor runs in
it, moves with the keys that move boundaries, grows about its centre.
Then C-a ?, the cheatsheet built from the bindings actually in force,
and exit closes the float with the layout exactly as it was.

The monitor is an htop impression with authored numbers, not htop: a
recording that renders differently every run is a bug here, byte-for-
byte is the contract. Phosphor, because every cast in the tour records
under its own theme so the next step reads as a scene change.
</content>
</entry>
<entry>
<title>web: a whole lot of html/css wrangling</title>
<updated>2026-08-30T12:18:57Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T12:18:57Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a4e1bb12760c2b9768e2917e41ac4600dcdf3156'/>
<id>urn:sha1:a4e1bb12760c2b9768e2917e41ac4600dcdf3156</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: sloshcast</title>
<updated>2026-08-30T10:49:24Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T10:49:24Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a3c5c69d089efd3d778e8b4ef859a6432cd3d07f'/>
<id>urn:sha1:a3c5c69d089efd3d778e8b4ef859a6432cd3d07f</id>
<content type='text'>
</content>
</entry>
</feed>
