<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slosh.git/web/index.html, branch master</title>
<subtitle>an opinionated terminal multiplexer in C with programmable pane chrome</subtitle>
<id>https://git.sl0p.foo/slosh.git/atom/web/index.html?h=master</id>
<link rel='self' href='https://git.sl0p.foo/slosh.git/atom/web/index.html?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/'/>
<updated>2026-09-24T10:53:15Z</updated>
<entry>
<title>web: plainer front page copy -- themes, effects, scripting, floats, install</title>
<updated>2026-09-24T10:53:15Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-24T10:53:15Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=3f470e18c7e93d5404e1b86ba5a39995400214b9'/>
<id>urn:sha1:3f470e18c7e93d5404e1b86ba5a39995400214b9</id>
<content type='text'>
</content>
</entry>
<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>sidebar: statuses wear italic instead of an indent, and can wear colour</title>
<updated>2026-09-10T14:32:10Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-10T14:32:10Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a2d08f4876226446c0052f033e8afea2f2ffbbf1'/>
<id>urn:sha1:a2d08f4876226446c0052f033e8afea2f2ffbbf1</id>
<content type='text'>
Three columns of indent is a fifth of a sixteen-column sidebar, spent
saying 'this belongs to the row above'. The slant says it in none: a
status now starts in the same column its tab's name starts in, and is
set in italic. That also survives the monochrome themes in contrib,
where a colour-only distinction would have had nothing to spend.

tab_status_fg / tab_status_bg are there for themes that do have colour
to spend. The fg follows tab_count when a theme does not name it -- the
same declared/derived split apply_scrolled makes -- so the six themes
in contrib get coherent status rows without a line added to any of
them. The bg is unset by default, because a band is opt-in and 'none'
is what a translucent terminal wants; the row is padded so a band that
*is* set covers the row rather than the words on it.

Two things fell out. The padding loop existed three times and is now
pad_cells. And cb_color wrote #000000 for an unset colour, so
 quietly pinned attach_bg -- 'gray
ink on the terminal's own background', says its comment -- to a black
band. Unset colours are now written commented out, the same trick the
states block uses for what it wants re-derived rather than pinned.
</content>
</entry>
<entry>
<title>web: on one column the hero hovers, not a copy of the logo</title>
<updated>2026-09-03T17:19:58Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-03T17:19:58Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=8dab8bd4abf96dd1b05267e0ca853fa07bd377a2'/>
<id>urn:sha1:8dab8bd4abf96dd1b05267e0ca853fa07bd377a2</id>
<content type='text'>
The stage-resident logo copy goes: instead the top section itself --
logo and buttons -- is position: sticky below 54rem, full-bleed, with
the tour's stage tucked under it at --hero-h, which the page script
measures (wrapping buttons make it no fixed number; a ResizeObserver
keeps it honest). The tagline yields the room: with the header on
screen at all times, every line it keeps is a line the tour loses.
Desktop is exactly as before -- the floating logo, its observers and
its collision test untouched.
</content>
</entry>
<entry>
<title>web: the floating logo, on one-column screens too</title>
<updated>2026-09-03T17:16:01Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-03T17:16:01Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=02246aa9542340d5ea62121899432b7ad4273e5e'/>
<id>urn:sha1:02246aa9542340d5ea62121899432b7ad4273e5e</id>
<content type='text'>
Below 54rem the fixed corner the float centres itself in is content, not
air, so the float stays hidden there -- but the logo can ride where the
terminal does: a small copy inside the sticky stage, above the player, on
screen at all times. No observer, no collision test; it sticks with the
stage. Same link back to the top, same wash and shine (the shared rules
now name both), same reduced-motion fallback.
</content>
</entry>
<entry>
<title>web: card</title>
<updated>2026-09-02T18:18:10Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-02T18:18:10Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=dc72a22da1b24ffb835681a1a8e771365020041b'/>
<id>urn:sha1:dc72a22da1b24ffb835681a1a8e771365020041b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: arch install as three copyable steps</title>
<updated>2026-09-02T14:44:54Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-02T14:44:54Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=899b8c9d5753561088512cdb5b5a2b67c6d50704'/>
<id>urn:sha1:899b8c9d5753561088512cdb5b5a2b67c6d50704</id>
<content type='text'>
The pacman.conf section and the install command each get their own
box (one copies config, the other a command; sharing a box made the
copy button copy neither cleanly), and ghostty-terminfo moves from
the aside into the install box as a commented optional line, marked
x86_64-only -- extra does not build it for aarch64, where slosh's
self-installed ~/.terminfo copy is the whole story.
</content>
</entry>
<entry>
<title>arch: point at ghostty-terminfo, the pacman spelling of the entry</title>
<updated>2026-09-02T14:40:32Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-02T14:40:32Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=abc2ee66fac8112c204e1f10df6741b4af25c416'/>
<id>urn:sha1:abc2ee66fac8112c204e1f10df6741b4af25c416</id>
<content type='text'>
optdepends says it at install time, the README and the install tab
say it before. Our package deliberately does not ship the file:
extra/ghostty-terminfo owns that path, and two packages must not.
Without either, slosh's own ~/.terminfo copy covers it. pkgrel=2,
both architectures rebuilt and republished.
</content>
</entry>
<entry>
<title>web: the released version in the hero, linking to the release</title>
<updated>2026-09-02T13:21:52Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-02T13:21:52Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=670add69317750ebc62f92662ea55d2e42439334'/>
<id>urn:sha1:670add69317750ebc62f92662ea55d2e42439334</id>
<content type='text'>
Stamped by build-site from ./VERSION, which the release invariant
keeps equal to the newest tag -- so the page cannot advertise a
version that was never cut, and nothing is bumped by hand.
</content>
</entry>
<entry>
<title>web: contributing section, shorter</title>
<updated>2026-09-02T13:20:50Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-09-02T13:20:50Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=aea3e11f4cfa233db008076365e08a401c0e02a1'/>
<id>urn:sha1:aea3e11f4cfa233db008076365e08a401c0e02a1</id>
<content type='text'>
</content>
</entry>
</feed>
