| Commit message (Collapse) | Author | Age |
| | |
|
| |
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
| |
The multiplayer patch proved the repo takes patches; say so where
people can see it, and give the not-yet-an-issue conversations
somewhere to happen.
|
| | |
|
| |
|
|
|
|
|
| |
Parentheses for the asides, colons for the explanations, commas and
semicolons for the joins, (none) for the empty table cells. Same
treatment the landing page got, across README, docs/, and both
manpages (\(em included).
|
| |
|
|
|
|
| |
Colons, commas and semicolons where twelve of them stood. People
read an em dash as the house style of a language model, and the
landing page is not the place to argue.
|
| | |
|
| |
|
|
|
|
| |
Every shipped theme names attach_fg explicitly, reusing its own
minbar colour -- the default gray suits the dark themes and nothing
else, and paper's light ground proved it.
|
| |
|
|
|
|
|
| |
The +x+y offset goes -- 'N clients' says the thing that matters. The
inverse-video chip goes with it: the tag now draws in attach_fg /
attach_bg from the theme, defaulting to gray ink on the terminal's
own background. Standing information, not an announcement.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
A small tag in each client's own top-right corner when several
terminals share the session: the viewer count, and on a view that is
a crop being panned by somebody else's cursor, the crop's offset into
the shared screen ("2 clients +12+4") -- which is exactly the moment
a screen moving on its own needs explaining. Stamped per client after
projection, because every terminal has its own count of others and
its own offset; the shared status bar is composed once and can be
cropped out of a panned view anyway. attach_indicator false hides
it.
|
| |\
| |
| |
| |
| |
| |
| |
| |
| | |
Several terminals can attach to one session at once: the canonical
screen becomes a model projected into every client's own size, with
per-client diff history, input parsing and kitty graphics state. The
active client (newest attach, then last input) sizes the canvas by
default; multi_attach and size_follows in the config control both
halves of the policy.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The patch made shared attach unconditional; these make it a policy.
multi_attach false restores the classic displacing attach
(EXIT_REPLACED, which old clients already understand). size_follows
picks whose size the shared screen takes: active (the patch's rule),
smallest (the tmux rule: filler, never a crop), or largest. The size
fold lives in apply_canvas, so any attach, resize or departure can
move the canvas under the folding policies -- including a non-active
client leaving, which under smallest may have been the very client
holding the floor down. A config reload re-applies both knobs to the
running session.
|
| |/
|
|
| |
Last input wins, canvas size is adjusted to active connection.
|
| |
|
|
|
|
|
|
|
|
| |
The demo's Makefile said VERSION := 0.1.0 by hand, so the in-browser
slosh announced a release two tags old no matter what was built into
it. It now derives from contrib/version like every other artifact,
suffixed +webdemo so the guest build names itself. And ship gains a
website step: the site (demo included) is rebuilt from the tag
checkout and published as part of a release, so the demo cannot fall
behind again.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The static musl release builds cannot dlopen -- musl compiles it out
-- so loadable shader plugins were a feature most shipped binaries
could not use. Nothing we ship used it either: every shader in
contrib/shaders is an expression. Gone: the dlopen/glob loader in
shader.c, shader_dir in the config, the plugin ABI table and entry
macro, the Windows dl*/glob shims that existed only for it, the
contrib/shader-plugin skeleton, its tests, and every doc mention.
shader_abi.h stays as the shader model (cell_t, shade_ctx_t,
shader_t) with a note about what it used to be.
|
| |
|
|
|
|
|
|
| |
The coming-soon gate (FULL=1) and its page go: the site is finished
enough to be the default. web/publish (make www-publish) builds,
refuses to sync a tree that does not look like the site, and rsyncs
to /opt/slosh -- around /arch, which contrib/ship owns, and around
the served demo when a NO_DEMO build has none to offer.
|
| | |
|
| |
|
|
|
|
|
| |
GitHub releases host the binaries now; installing is a package
manager (brew, pacman) or a manual download from the releases page.
The curl|sh script and slosh.foo/dist are gone -- one less channel
to keep in sync, one less thing to trust.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
contrib/release cuts the tag and stops -- publishing is on purpose.
ship is that purpose: push, artifacts (linux/windows here, macOS on
the builder), the GitHub release, the brew tap, the arch repo, the
paperwork commit. Each step skips when its result already exists, so
a run that died mid-way resumes instead of rebuilding artifacts whose
checksums are already published. Preflight checks every credential
and machine before anything is cut, because half-published is the
failure mode this exists to remove (v0.1.2 shipped while the arch
repo still served v0.1.1).
|
| | |
|
| |
|
|
|
|
| |
The three commands were a link away in contrib/arch; a repo whose
packages refuse to install without the key should hand them over
where the repo is advertised.
|
| |
|
|
|
|
|
|
| |
GitHub is the public interaction point now. The formula and PKGBUILD
fetch GitHub's /archive/ tarballs (same git-archive bytes, per-ref
stable); the PKGBUILD is bumped to 0.1.2 while at it, and its cd's
drop the v -- GitHub tag archives extract to slosh-X.Y.Z/. The cgit
remote stays for pushing; only published URLs change.
|
| | |
|
| |
|
|
|
|
|
| |
The landing page now shows the releases page for direct downloads and
only lists package manager tabs (homebrew, arch, source). The linux
installer script and the windows curl recipe are gone — the releases
page is the single place for prebuilt binaries.
|
| | |
|
| | |
|
| |
|
|
|
| |
brew auto-resolves GitHub taps, so the explicit URL is no longer
needed: 'brew tap sl0p-foo/slosh' is all users type.
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Android reports arrived of the logo rendering shattered, and the cause
is the ascii itself: the default monospace there has no block glyphs,
so every ▀▄█ falls back to whatever font volunteers, each with its own
metrics, and the grid comes apart. No font stack fixes a missing
glyph, and shipping a font is against the house rules.
So the logo stops being text: web/gen-logo-mask turns logo.txt into an
SVG of merged rects, inlined into site.css as a data URI and used as a
CSS mask on an empty element. The animated background layers show
through the mask exactly as they showed through background-clip: text,
so every effect survives -- gradient slide, shine, hue, glow -- and
two old hacks retire with the fonts: the letter-spacing pinstripe fix,
and (after one round of seams at fractional mask scales) a vertical
overlap baked into the rects. Same 318x84 box, same placement math,
and a hero that reads as role=img with a label instead of seven rows
of block glyphs.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Proximity snapping, even with the doorway steps freed, still catches
some people's scrolling in ways worth no tour polish -- input devices
and browsers disagree too much about what proximity means. The
clickable steps and the smooth scrolling stay; a reader's wheel is
theirs again, everywhere.
|
| | |
| |
| |
| |
| |
| | |
The page gets its colophon back, at a fraction of the old footer's
size: one centred mono line in the floor's own greys, the link a shade
brighter and pink under the pointer.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
The floating logo's dress on the big one, cut to the brand: no hue
rotation -- that is what walks the little one off into blues -- just a
4s slide through the palette's own pinks and orchid and --dead's
sunset orange, the most retrowave colour the theme already owns, with
the shine crossing once a loop and a soft pink glow underneath.
Reduced motion gets the gradient standing still.
|
| | |
| |
| |
| |
| |
| |
| | |
The body gradient's ground passes --panel by, and a box darker than
its floor reads as a hole. The poster steps up to --code-bg -- the
same raised step the install boxes beside it use -- and its border
moves to --faint, since the old border colour is now the fill.
|
| | |
| |
| |
| |
| |
| |
| |
| | |
A gradient on the body, whose box is the whole document, so the fade
maps to scroll distance: near-black held through the hero and the tour,
then a slow climb to a grey that stops shy of the panels' own colour --
the floor lightens, the boxes on it stay boxes. html keeps the solid
top colour, so over-scroll rubber-banding stays dark.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
A band of light sweeping the glyphs once a loop -- the logo running
slosh's own shine preset, which is a better advertisement than a
signal fault. The band is a second background layer on the same
text clip, parked off the ink for 86% of the loop and crossing in the
closing 0.7s; one set of keyframes drives both layers, the colour
slide holding its linear pace through every stop. The glitch keyframes
go, and reduced motion still keeps only the hue.
|
| |/
|
|
|
|
|
|
|
|
|
| |
A signal that is fine, fine, fine, and then for a third of a second is
not: torn into bands by clip-path, shoved and sheared by transform --
the two properties the other animations left free, filter being the
hue's and background the slide's. Doubled keyframe percentages make
the cuts hard instead of smeared, and 7s against the 5s slide and 4s
hue lands the burst somewhere new in the colour every time. Reduced
motion never sees it: the glitch is nothing but motion, and the
reduced lane already keeps only the hue.
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
Proximity snapping traps at the edges: between steps, adjacent fields
hand you from magnet to magnet, but at the first and last there is no
next field -- a wheel tick toward the hero or past the final demo ends
inside the boundary step's radius and is pulled straight back, forever.
The interior steps keep their snap-align; the doorways go without,
because a doorway that grabs is worse than a step that does not snap.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
scroll-snap-type: y proximity on the root, snap-align: center on the
steps and nothing else: a scroll that ends near a step is settled onto
its centre -- the exact spot the tour activates it, so the rest
position and the lit step agree -- and momentum, half-reads and every
snapless section are left alone, by spec. Proximity, never mandatory:
the mandatory kind on a page that also has prose is a trap, and the
JS kind is worse. Off in the one-column layout, where the sticky
stage covers the upper viewport and a centred step would sit half
beneath it.
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
| |
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.
|