<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slosh.git/web/index.html, branch docs-new</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=docs-new</id>
<link rel='self' href='https://git.sl0p.foo/slosh.git/atom/web/index.html?h=docs-new'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/'/>
<updated>2026-08-30T17:30:35Z</updated>
<entry>
<title>web: the hero button says try it, like the section it goes to</title>
<updated>2026-08-30T17:30:35Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:30:35Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=74f30167246738ac1f2a17559755551be075012a'/>
<id>urn:sha1:74f30167246738ac1f2a17559755551be075012a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: the whole step is the road, not just its title</title>
<updated>2026-08-30T17:26:54Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:26:54Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=e7555078282054ed9c02579b37e0d628db599b92'/>
<id>urn:sha1:e7555078282054ed9c02579b37e0d628db599b92</id>
<content type='text'>
Clicking anywhere in a dimmed article glides it to the centre and so,
through the observer, switches the recording. Three guards keep the
click meaning navigation: the active step does not react (clicks there
are for reading and selecting, not going where you already are), a
selection is not a click, and a link is a link. The pointer cursor and
the title's breath of pink now belong to dimmed steps only -- the
active one is just prose.
</content>
</entry>
<entry>
<title>web: a step's title is a road to the step</title>
<updated>2026-08-30T17:16:30Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:16:30Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a3715c1eefb083385c42af8a52484c4b612fffe8'/>
<id>urn:sha1:a3715c1eefb083385c42af8a52484c4b612fffe8</id>
<content type='text'>
Clicking an article's h3 glides it to the middle of the viewport --
the exact spot where the tour's observer activates it, so the click
also switches the recording, through the same door scrolling uses
rather than a second mechanism. The pointer cursor and a breath of
pink on hover say clickable.
</content>
</entry>
<entry>
<title>web: the floating logo yields to the buttons and the rising terminal</title>
<updated>2026-08-30T17:14:10Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T17:14:10Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=b34cab730e986f0558d6626a93b3f03d48076541'/>
<id>urn:sha1:b34cab730e986f0558d6626a93b3f03d48076541</id>
<content type='text'>
Two overlaps the section observers missed. The show opened on the big
logo leaving, but the hero's buttons sit below it, so there was a band
of scroll with the little logo arriving on top of install/try/docs --
observe the whole hero instead. And at the tour's exit the stage
unpins and is dragged up through the logo's air before the try section
crosses its line -- no section boundary says so, but two rects do: a
rAF-throttled collision check against the pinned player's rect, and
whenever the terminal would touch the logo, the logo yields.

Verified by sweeping fifteen scroll positions: shown through the whole
tour, hidden over the buttons, the rising terminal, the demo box and
the install tabs, with zero overlapping frames.
</content>
</entry>
<entry>
<title>web: the casts play at 1.75x -- the owner has watched them enough</title>
<updated>2026-08-30T14:59:01Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:59:01Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a1a6b53987b82ab829194ddaa16f39f4c8438689'/>
<id>urn:sha1:a1a6b53987b82ab829194ddaa16f39f4c8438689</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: one knob to hurry every cast on the page</title>
<updated>2026-08-30T14:54:38Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:54:38Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a1fd6a4e124c0b4e16c31ad6ef7ac5b6f617966d'/>
<id>urn:sha1:a1fd6a4e124c0b4e16c31ad6ef7ac5b6f617966d</id>
<content type='text'>
window.SLOSHCAST_SPEED, multiplied into each mount's own data-speed:
the front page sets 1.25 and every recording plays a quarter faster
than authored, the scripts under demos/ untouched -- their pacing is
theirs, and how much of it a visitor's attention span gets is the
page's call. The clock keeps counting cast-time, so the timestamps
mean the same thing at any speed.
</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: power off is a button, not a cheeky link</title>
<updated>2026-08-30T14:32:03Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:32:03Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=d5023e474f42bc41a2a1d89a130f4fc43842976f'/>
<id>urn:sha1:d5023e474f42bc41a2a1d89a130f4fc43842976f</id>
<content type='text'>
A real ghost button centred under the running machine, in the hero
buttons' own dress -- ghost on purpose: booting stays the loud verb,
stopping the quiet one. The caption drops to a side note beside it.
</content>
</entry>
<entry>
<title>web: the demo machine can be powered off</title>
<updated>2026-08-30T14:29:56Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:29:56Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=17c9fd17c4f0502f3453347c3b0842f3bb4d6ca1'/>
<id>urn:sha1:17c9fd17c4f0502f3453347c3b0842f3bb4d6ca1</id>
<content type='text'>
A caption under the running machine offers the off switch, dressed as
a link inside a sentence. Dropping the iframe out of the DOM tears the
whole VM down -- emulator, kernel, disk cache, the lot -- the stage
shrinks back into the poster (the original nodes come back from a
stash, listeners and all, so the boot button is immediately live
again), and the scroll follows both ways.

Reload always did this; the button does it without taking the rest of
the page with it.
</content>
</entry>
<entry>
<title>web: the demo machine, bootable in the front page</title>
<updated>2026-08-30T14:28:57Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-30T14:28:57Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=a5ce3d56f9ba17acf073b9ca051e658bfd262cae'/>
<id>urn:sha1:a5ce3d56f9ba17acf073b9ca051e658bfd262cae</id>
<content type='text'>
A try section between the tour and the install box: a modest poster
with one button, and the machine only when the button is pushed -- the
front page keeps costing two files, which is the decision the README
recorded when the demo got its own page, still being honoured.

The click grows the stage to most of a viewport *before* the iframe
goes in (the guest reads its geometry from the room exactly once, at
boot), then glides the scroll to land the machine centred. An iframe,
not the demo's scripts inlined: the emulator's emscripten glue owns
its globals by name, and isolation is what keeps this page and that
blob out of each other's namespaces. ?embed=1 makes the demo page
drop its own header and footer inside the frame; standalone it is
unchanged, and phones navigate to it rather than embedding -- wasm
under a soft keyboard in an iframe helps nobody.

The floating logo learns the tour's edges properly while at it: the
try section arriving closes the show (measured with a -45% rootMargin,
because the tour's exit margin lets the section ride high while the
last step is still centred), and a section scrolled past counts as
arrived, not gone.
</content>
</entry>
</feed>
