dark glass, the whole app: frost on every pane, and the periscope pattern for every glass bar the frost sits under - backdrop-filter black-flattens over see-through ground (measured 3-vs-40), so bars over frost blur a scroll-synced clone behind a static band cut instead; the bar moved out of the scroller (pane shell, inner .content keeping the closest-contract, the old negative-margin flow replayed by a spacer after the artist page's sticky physics named the scrollport padding sacred); painted pages declare data-painted and keep the real backdrop bar, which is how the artist hero runs under the glass again; np wash rides the scroll away and dissolves to frost like the album banner; perf measured to vsync - 142px blur wraps (27.9ms frames down to 6.9), idle scroll-gated reclones, clip-path band, content-visibility on library rows, async cover decode; mini frosts over the mini:glass channel and the rest-frame flags ride window config because the env-var lane dies on some webview2 runtimes

This commit is contained in:
KeelrLeek committed 2026-08-26 14:55:25 -05:00
1 parent 225c9139aa
commit 6ba1864498
16 files changed
+821 -117

No files matched your search

+13
View File
@@ -69,6 +69,19 @@
background: var(--bg-player);
user-select: none;
}
/* Dark glass, mini edition: unlike the main window (only the canvas
BETWEEN panes thins), the mini is all pane — so the pane itself thins
to the same black tint the main's .app uses (one dial, two files —
keep the alphas in step), over the OS acrylic (window_glass).
global.css already stops html/body painting under .glass; every
shape's own --bg-player fill is overridden in one place here. The
Wash art bleed stays as-is above it. */
:global(:root.glass) .miniroot {
background: transparent;
}
:global(:root.glass) .miniroot :global(.shape) {
background: rgba(0, 0, 0, 0.55);
}
:global(.m-disc) {
border-radius: 50%;
background: var(--accent);
+10
View File
@@ -103,6 +103,16 @@ export function initMini() {
mini.index = p.index ?? -1;
mini.next = p.next ?? null;
});
// Dark glass, the mini's half: the brain streams the one setting
// (glass.js emits on flips, the bridge answers hello); this window
// toggles its own root class and asks the OS for its own acrylic —
// window_glass acts on the calling window. Don't import glass.js here:
// its applier emits mini:glass, which this listener would loop on.
onEvent("mini:glass", (p) => {
const on = !!p?.on;
document.documentElement.classList.toggle("glass", on);
void invoke("window_glass", { on }).catch(() => {});
});
// Ask the brain for a full snapshot; retry briefly in case the mini won
// the race against the bridge's listener registration.
void emit("mini:hello", {});