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

+10
View File
@@ -1164,6 +1164,16 @@
var(--bg-base) 100%
);
}
/* Dark glass: the banner DISSOLVES at its foot instead of landing on a
repainted tail — a translucent tail color can never match the frost
beneath and drew a hard line at the box edge (Kyle, 2026-08-26). The
mask fades the whole layer (img + scrim together) to nothing, so it
ends on frost at frost's own value — the np wash's move. Solid mode
keeps the gradient's opaque landing against --bg-base. */
:global(:root.glass) .banner {
mask-image: linear-gradient(to bottom, #000 55%, transparent 98%);
-webkit-mask-image: linear-gradient(to bottom, #000 55%, transparent 98%);
}
/* `stretch`, not `flex-end`: the copy column is sized BY the artwork, so
its first line starts at the cover's top edge and its last row ends at
+6
View File
@@ -4584,8 +4584,14 @@
// (defe225) when the new location lands.
</script>
<!-- data-painted: this page paints its ground floor-to-ceiling (hero image
+ the .sheet's opaque tail), so under dark glass the GlassBar keeps its
REAL backdrop-filter here — no band cut, no periscope fog. The frost
never shows through a painted page, and the fog was replacing the
designed hero-under-glass continuity with a blurred imitation. -->
<div
class="artist-page"
data-painted
data-load-stage={pageLoadStage}
data-scroll={heroScrolled ? "1" : "0"}
data-park={extrasParked ? "1" : "0"}
+10 -3
View File
@@ -1503,7 +1503,7 @@
{#snippet cover(a, size)}
{#if a.art_path}
{#if coverUrls[a.id]}
<img class="cover" src={coverUrls[a.id]} alt="" loading="lazy" draggable="false" />
<img class="cover" src={coverUrls[a.id]} alt="" loading="lazy" decoding="async" draggable="false" />
{:else}
<div class="cover gen-pending"></div>
{/if}
@@ -1564,7 +1564,7 @@
<span class="ed-badge">{r.release_date.slice(0, 4)}</span>
{/if}
{#if r.cover}
<img class="cover" src={r.cover} alt="" loading="lazy" draggable="false" />
<img class="cover" src={r.cover} alt="" loading="lazy" decoding="async" draggable="false" />
{:else}
<div class="cover placeholder"><Icon name="disc" size={30} /></div>
{/if}
@@ -2190,7 +2190,7 @@
>
<span class="lb-cell lb-thumb">
{#if a.art_path && coverUrls[a.id]}
<img src={coverUrls[a.id]} alt="" loading="lazy" draggable="false" />
<img src={coverUrls[a.id]} alt="" loading="lazy" decoding="async" draggable="false" />
{:else if !a.art_path}
{@const g = genFor(a)}
<span class="lib-gen mini" data-pat={g.pat} style="--h1:{g.hue};--h2:{g.hue2}"></span>
@@ -2961,6 +2961,13 @@
border-radius: 7px;
font-size: 12.5px;
cursor: pointer;
/* 800+ rows: offscreen ones skip render entirely. The intrinsic
hint matches the fixed 36px height exactly, so scroll geometry
(and every offset-based jump) is unchanged — this took the
library's mount task from ~112ms and its cold-scroll raster
spikes down to screen-sized work (measured 2026-08-26). */
content-visibility: auto;
contain-intrinsic-size: auto 36px;
}
.lib-page[data-cols="all"] .lb-tr {
grid-template-columns: 34px minmax(150px, 1fr) 150px 70px 46px 40px 56px 96px 58px 66px 74px;