revert: the player retry fix was based on a wrong root cause

_ensureVideo already registers the url on both the create and reuse paths, so
window-materialized elements always could retry; the added registration was a
no-op and its comment described a bug that does not exist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
digital-garbage
2026-08-22 17:37:46 +03:00
co-authored by Claude Opus 5
parent f601dffce0
commit 7854cb2e95
2 changed files with 1 additions and 16 deletions
-8
View File
@@ -31,14 +31,6 @@
quietly. Latent width and height snap to even, since a patchified model cannot take odd.
### Fixed
- **Timeline playback died partway through a long timeline: play/pause left it on "Loading"
forever.** `_classifyVideoError` drops any element whose url is not registered in
`_urlClips`, and only `_syncPool` registered — which runs on a timeline rebuild, not as the
playhead moves. So every clip the sliding pool window materialized during playback could
never retry a failed load: one transient error (rapid play/pause over the network poisons a
stream) and that clip was stuck until a page reload. The boundary fell wherever the initial
window ended, which on a typical timeline is around the halfway point.
- **A linked input driven by `Project · Prompt (global)` claimed to encode "the same text
Studio would" and did not.** Studio appends the postfix to every scene itself, so the
global prompt is strictly less than what it encodes — and the postfix is usually where
+1 -8
View File
@@ -628,14 +628,7 @@
for (const u of want) {
if (pool.has(u)) continue;
const clip = _clips.find((c) => _clipUrl(c) === u);
if (!clip) continue;
// Register BEFORE materializing: _classifyVideoError drops any element whose url is
// not in _urlClips, so an element created here without one could never retry a failed
// load and sat on "loading" forever. Only _syncPool registered, and it only runs on a
// timeline rebuild — so every clip the sliding window materialized during playback
// (i.e. everything past the first window) was unrecoverable.
_registerUrlClip(u, clip);
_ensureVideo(u, clip);
if (clip) _ensureVideo(u, clip);
}
if (pool.size <= POOL_MAX) return;
for (const [u, v] of [...pool]) { // Map order = insertion order ⇒ oldest first