From 3a0cf26e6c3ab2802a3d899d58314e9fab036dbc Mon Sep 17 00:00:00 2001 From: Dejvino Date: Thu, 20 Aug 2026 09:02:10 +0200 Subject: [PATCH] The filmstrip fills in as it renders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A full build is a couple of minutes of GPU work, and the page spent all of it showing an empty screen and then everything at once. The interesting failure — a strip whose frames could be shuffled without anyone noticing — is visible in the first row, so waiting for the seventeenth to look at the first is a needlessly slow way to find it out. Rows are appended as they land, in bank order, and re-sorted once at the end when there is finally something to sort by. One row renderer handles both raw pixels, which is what exists mid-build, and the compressed blobs the cache holds afterwards, so what you watch appear is what you keep. The song is announced BEFORE its render rather than only after it, too: synthesising and rendering one is tens of seconds, and a page that says nothing until the first one lands looks broken for exactly as long as that takes. Co-Authored-By: Claude Opus 5 --- flow-state/filmstrip.html | 107 ++++++++++++++++++++--------- flow-state/src/checks/filmstrip.js | 11 ++- 2 files changed, 83 insertions(+), 35 deletions(-) diff --git a/flow-state/filmstrip.html b/flow-state/filmstrip.html index 89c78ba..3f11ee3 100644 --- a/flow-state/filmstrip.html +++ b/flow-state/filmstrip.html @@ -45,6 +45,8 @@ .num { color: #9aa3b5; } .num b { color: #d6dae3; font-weight: normal; } .story { color: #a5b4fc; font-size: 11px; } + .watch { font-size: 11px; text-decoration: none; } + .watch:hover { text-decoration: underline; } .err { color: #f87171; } /* The strip scrolls sideways rather than wrapping: a filmstrip that wraps @@ -91,6 +93,8 @@