The warp was a width step. Panel and toast are both left-anchored to the
bar, so different widths put a step on the shared right edge, and smin
fillets a step into an S-curve waist.
Toast now takes the open dropdown's drawn width, keyed off its declared
fullWidth so nothing closes a loop through the toast's own height. Below
a 200px floor there is no width worth matching (the power menu is a 64px
icon strip), so those stand off with a gap as before.
The bump was two animations stacked: _dropdownRect is positioned off
chrome.y, so chrome already eased the panel to wherever y resolved, and
the Behavior added last commit put an OutExpo behind an OutExpo.
Panels now land ON the toast rather than a panelGap short of it, buried
half a radius so the shader smins them into one outline with a shared
waist. Cards inside still clear each other by ~14px.
The toast dodging open dropdowns meant it drifted around the column
depending on which menu was open. Invert it: the toast keeps its band
and melts into the frame as before, and a dropdown treats a live toast
as a shortened screen — its clamp ends short of the toast, so a menu
that would collide opens higher instead.
Snapping still tests against the frame, so a panel stopping above a
toast floats clear of it rather than fusing to its edge.
alignTop/alignBottom were per-dropdown flags, so the battery menu pinned
to the bottom wherever its icon sat. Both replaced by a distance test
against Theme.snapDist, which the SDF already used to decide melting —
panels now fuse with a band only when they actually reach it, and a menu
that gains or loses a card re-decides on its own.
Toast steps clear of an open dropdown instead of drawing over it, and
stops melting into the frame band once it has.
Screen recorder was desktop-only, caffeine laptop-only, nightlight in
both places. Cog dropdown now holds recorder + nightlight on every host;
battery dropdown keeps the laptop-only power profile and brightness.
Caffeine stays gated: hypridle is mkIf isMacbook.
base16-fish and stylix's btop theme were only disabled on desktops, so a
login shell on Mediaserver printf'd OSC 4/10/11 back down the SSH pipe and
overwrote the client's wallpaper palette. Off everywhere, server TUIs draw
in the client's 16 ANSI colours instead.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Neither gets per-wallpaper files. Both draw with the 16 ANSI colours, so
they follow ghostty's palette the moment theme-apply reloads it — no
restart and none of the reflow a GTK theme switch causes.
mc uses a -defbg skin (paints on the terminal's own background); yazi gets
an ANSI-named theme and stylix's hex-writing yazi target is disabled.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>