fix(core): remove 1800s hard cap on timeline duration that silently truncated long compositions (#1114)

The runtime had a maxTimelineDurationSeconds field defaulting to 1800
(30 minutes) that clamped the TransportClock duration. Any seek beyond
this cap was silently clamped, so GSAP tweens starting past ~1700s
never received their totalTime() call and stayed at their pre-tween
state (e.g. opacity:0).

The data-duration attribute is the authored source of truth. The loop-
inflation guard (timelineLooksLoopInflated) already handles the infinite
repeat:-1 case this cap was meant to protect against.

Closes #1107
This commit is contained in:
Miguel Ángel
2026-05-28 16:26:40 -04:00
committed by GitHub
parent 5245e19062
commit e0cb8fcee3
5 changed files with 7 additions and 25 deletions
+1 -3
View File
@@ -538,8 +538,7 @@ export function initSandboxRuntimeModular(): void {
} else {
safeDuration = fallbackDuration;
}
const hardDurationCap = Math.max(1, Number(state.maxTimelineDurationSeconds) || 1800);
return safeDuration > 0 ? Math.max(0, Math.min(safeDuration, hardDurationCap)) : 0;
return safeDuration > 0 ? Math.max(0, safeDuration) : 0;
};
const resolveRootTimelineFromDocument = (): TimelineResolution => {
@@ -1423,7 +1422,6 @@ export function initSandboxRuntimeModular(): void {
bindRootTimelineIfAvailable();
const payload = collectRuntimeTimelinePayload({
canonicalFps: state.canonicalFps,
maxTimelineDurationSeconds: state.maxTimelineDurationSeconds,
});
window.__clipManifest = payload;
postRuntimeMessage(payload);