feat: make creator media edits render-safe (#3322)

* feat: make creator media edits render-safe

* fix: align media playback timing

* docs: add creator editing recipes

* docs: expand creator editing guidance

* fix: unify media source offsets

* fix: scale natural media duration

* fix: preserve natural media zero spans

* fix: align compiled natural media timing

* test: classify compiler media test as integration

* fix: drop inactive media windows

* fix: unify literal timing parsing

* fix: keep browser media parsing serializable

* fix: keep page timing readers strict

* fix: close remaining preview timing gaps

* fix(core): preserve Studio voice pitch at playback speed

* chore: keep creator contract source-neutral
This commit is contained in:
Miguel Ángel
2026-08-18 10:17:02 -04:00
committed by GitHub
parent 049f5618d7
commit afafca4b96
42 changed files with 2695 additions and 307 deletions
+2 -4
View File
@@ -1,6 +1,7 @@
import type { RuntimeTimelineLike } from "./types";
import { swallow } from "./diagnostics";
import { readElementPlaybackRate } from "./media";
import { readMediaStart } from "./playbackRate";
import { parseNumeric, parseStartExpression } from "./startExpression";
const AUTHORED_DURATION_ATTR = "data-hf-authored-duration";
@@ -82,10 +83,7 @@ export function createRuntimeStartTimeResolver(params: {
}
}
if ((resolved == null || resolved <= 0) && isMediaElement(element)) {
const playbackStart =
parseNumeric(element.getAttribute("data-playback-start")) ??
parseNumeric(element.getAttribute("data-media-start")) ??
0;
const playbackStart = readMediaStart(element);
if (Number.isFinite(element.duration) && element.duration > playbackStart) {
resolved = (element.duration - playbackStart) / readElementPlaybackRate(element);
}