Files
hyperframes/packages
Miguel Ángel f888db950e fix(core): paint no timed clip until the runtime decides its visibility (#4460)
* fix(core): paint no timed clip until the runtime decides its visibility

Until its first visibility pass, a paused page showed every timed clip at once: an embed without
a loader flashed a later scene before the first, and a player's hidden iframe still decoded every
scene's images. The runtime now hides timed non-media clips from the moment its script runs,
and the first pass that decides them removes that rule, so each clip is shown only by the pass.

* refactor(core): name media with the realm-safe helper in the first-pass check

* fix(core): share the first-pass hide across runtime copies and shader captures

A second evaluation of the runtime (a sub-composition carrying its own runtime tag, or a page that
includes it twice) added a hide rule nothing removed, so the film stayed invisible. The rule and its
flag now live on the page: a copy that finds either, or finds the runtime already initialised, adds
none, and the first pass removes every copy. HyperShader's capture clone forces its scene visible
with !important, so a transition captured before the first pass still shows the scene's clips.
The runtime test now also pins evaluation-time hiding, inline visibility, media, and two copies.

* fix(core): grade media inside a clip once the first pass shows it

Color grading registers only media it can see. Media with no timing of its own inside a timed clip
inherited the first-pass hide, so grading skipped it, and lifting the rule is not a body mutation,
so nothing registered it again: the image or video stayed ungraded. The pass now refreshes grading
when it lifts the rule. The second-copy test now asserts on a paused page, before any seek.

* chore(core): keep the comment share of the first-pass hide files at or under their base

The comment ratchet counts one added comment line each in entry.ts, init.ts and capture.ts, and a
new file above its package's share. The three lines are gone, and the one note that has to stay
(why the hide runs at script evaluation) now lives in the new module's shorter header.
2026-09-24 23:04:23 -04:00
..
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00
2026-09-24 21:51:48 -04:00