This commit is contained in:
Andras Schmelczer 2026-06-28 11:59:44 +01:00
parent f1601257c7
commit c2070693fb
68 changed files with 2305 additions and 212 deletions

View file

@ -115,7 +115,7 @@ async function runCue(
`Trim a during step, lengthen the cue text, or move work into tail.`
);
}
// Time the during block as a whole individual steps may overrun their
// Time the during block as a whole: individual steps may overrun their
// budgets, but what matters at the cue boundary is total wall-clock.
const duringStart = Date.now();
for (const step of during) {
@ -393,7 +393,7 @@ async function runActivity(ctx: ScriptCtx, step: Activity): Promise<void> {
case 'dragSheet': {
const sheet = ctx.page.locator('section[class*="rounded-t-2xl"]').first();
const sheetBox = await sheet.boundingBox().catch(() => null);
if (!sheetBox) return; // desktop layout nothing to drag
if (!sheetBox) return; // desktop layout: nothing to drag
const handle = ctx.page
.locator('section[class*="rounded-t-2xl"] [class*="touch-none"]')
.first();
@ -427,7 +427,7 @@ async function runActivity(ctx: ScriptCtx, step: Activity): Promise<void> {
}
case 'openFilterGroup':
// Click is idempotent: if the group is already expanded, the click
// would collapse it which we don't want. Detect via aria-expanded
// would collapse it, which we don't want. Detect via aria-expanded
// (Radix Accordion sets it on the trigger) and skip the click when
// the group is already open.
await ctx.page.evaluate((selector) => {
@ -493,7 +493,7 @@ async function tryResolveTarget(
/**
* Load synth's measured cue durations. Falls back to a worst-case estimate
* if the manifest is missing that path is only used for ``--no-audio``
* if the manifest is missing: that path is only used for ``--no-audio``
* runs, where the visual flow needs to play even without speech to time
* against.
*/
@ -516,7 +516,7 @@ function loadSynthIndex(storyboard: Storyboard): SynthCue[] {
});
}
console.log(
`[runner] no ${path} found — using worst-case fallback durations (${FALLBACK_MS_PER_WORD}ms/word + ${FALLBACK_TAIL_BUFFER_MS}ms buffer). Audio will be missing.`
`[runner] no ${path} found. Using worst-case fallback durations (${FALLBACK_MS_PER_WORD}ms/word + ${FALLBACK_TAIL_BUFFER_MS}ms buffer). Audio will be missing.`
);
return storyboard.cues.map((cue, cueIndex) => ({
cueIndex,