diff --git a/registry/components/caption-pill-karaoke/caption-pill-karaoke.html b/registry/components/caption-pill-karaoke/caption-pill-karaoke.html index 712823c80..741048027 100644 --- a/registry/components/caption-pill-karaoke/caption-pill-karaoke.html +++ b/registry/components/caption-pill-karaoke/caption-pill-karaoke.html @@ -565,7 +565,11 @@ var layout = hfApplyStageConfig(data, v.durationS); var tl = hfBuild(v.words, layout, v.durationS); tl.set({}, {}, v.durationS); // pin timeline length to the data-derived duration - tl.seek(0); + // GSAP quirk (confirmed 3.14.2): a fresh timeline already reports position 0, + // so seek(0) is treated as a no-op and skips rendering .set() calls scheduled + // at t=0 — the first frame would show pre-timeline CSS defaults (usually + // hidden). render(time, suppressEvents, force) with force=true bypasses that. + tl.render(0, true, true); hfCurrentTimeline = tl; window.__timelines = window.__timelines || {}; window.__timelines[HF_COMPOSITION_ID] = tl; diff --git a/registry/components/caption-weight-shift/caption-weight-shift.html b/registry/components/caption-weight-shift/caption-weight-shift.html index 8bcfbe9fb..2ead4d717 100644 --- a/registry/components/caption-weight-shift/caption-weight-shift.html +++ b/registry/components/caption-weight-shift/caption-weight-shift.html @@ -580,7 +580,11 @@ var layout = hfApplyStageConfig(data, v.durationS); var tl = hfBuild(v.words, layout, v.durationS); tl.set({}, {}, v.durationS); // pin timeline length to the data-derived duration - tl.seek(0); + // GSAP quirk (confirmed 3.14.2): a fresh timeline already reports position 0, + // so seek(0) is treated as a no-op and skips rendering .set() calls scheduled + // at t=0 — the first frame would show pre-timeline CSS defaults (usually + // hidden). render(time, suppressEvents, force) with force=true bypasses that. + tl.render(0, true, true); hfCurrentTimeline = tl; window.__timelines = window.__timelines || {}; window.__timelines[HF_COMPOSITION_ID] = tl;