KeelrLeek a6b585303e album page: the record's own shape while it loads, and prose that waits its turn
The loading state was one line of grey text, then the whole page at once.
It is now the page with its words removed — the same hero, identity, cover
and copy elements, so the artwork does not move when the fetch lands. The
cover is real from the first frame: `albumSeed` carries what the card you
clicked already knew, painted in 10ms, and the skeleton row count comes from
the seed's track count so the tracklist grows 370 -> 377px instead of
296 -> 377.

Three bugs found by measuring the handoff frame by frame:

- Every dealt part rendered once at full opacity and then snapped to zero.
  `element.animate()` returns a PENDING animation whose start time is not
  resolved until the next frame, so `fill: backwards` never covered the first
  paint. Hiding each part inline is synchronous and closes it.
- The deal was animating the SKELETON. `openCatalogAlbum` assigns `albumPage`
  and clears `albumLoading` only in its `finally`, so for one flush the new
  record was live while the placeholder was still on screen — and it has a
  `.tracklist` of its own.
- The artwork could blink on a cold cache: the skeleton seeds the 500px grid
  cover and the page asks for the master. The seed now sits underneath as a
  background until the master decodes, on the banner too, where the blur
  applies to it and the colour wash survives the swap.

The deal also only ran once, against a snapshot, so `.about`, `.eds`,
`.stats` and `.credits` — all gated on network data — were never animated at
all. Parts now record which generation dealt them and a later pass picks up
whatever was missing.

The description moves BELOW the tracklist. Above it, it pushed the tracks
~180px down and re-flowed them on arrival, measured at 81.5px; nothing above
that point depends on `info` now, so the tracklist cannot move (measured 0).
It gains the page's own `.disc-head` idiom, a promoted lede, and the bottom
credits block becomes pills plus who said so.
2026-07-29 18:46:16 -05:00
S
Description
SoulSeek Streaming app.
9.5 MiB
1 Stars 2 Watchers 1 Forks
Languages
Rust 48.3%
Svelte 38.1%
JavaScript 13.4%
CSS 0.2%