diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c11208110..38b8c2837 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,10 +24,16 @@ jobs: outputs: code: ${{ steps.filter.outputs.code }} steps: + # Force git-based change detection instead of the pull_request REST API. + # The API path can fail the whole workflow on transient listFiles + # timeouts before any real CI work starts. - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 + with: + fetch-depth: 0 + - uses: dorny/paths-filter@v4 id: filter with: + token: "" filters: | code: - "packages/**" diff --git a/.github/workflows/player-perf.yml b/.github/workflows/player-perf.yml index 4a990bdf2..c22dbe6eb 100644 --- a/.github/workflows/player-perf.yml +++ b/.github/workflows/player-perf.yml @@ -17,10 +17,15 @@ jobs: outputs: perf: ${{ steps.filter.outputs.perf }} steps: + # Force git-based change detection instead of the pull_request REST API. + # The API path can fail the perf workflow on transient listFiles timeouts. - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 + with: + fetch-depth: 0 + - uses: dorny/paths-filter@v4 id: filter with: + token: "" filters: | perf: - "packages/player/**" diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 98045c632..5d52bd702 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -14,10 +14,16 @@ jobs: outputs: code: ${{ steps.filter.outputs.code }} steps: + # Force git-based change detection instead of the pull_request REST API. + # The API path can fail the whole workflow on transient listFiles + # timeouts before any regression shard even starts. - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 + with: + fetch-depth: 0 + - uses: dorny/paths-filter@v4 id: filter with: + token: "" filters: | code: - "packages/core/**" diff --git a/.github/workflows/windows-render.yml b/.github/workflows/windows-render.yml index ea727dfa0..feeeb7925 100644 --- a/.github/workflows/windows-render.yml +++ b/.github/workflows/windows-render.yml @@ -36,10 +36,16 @@ jobs: outputs: code: ${{ steps.filter.outputs.code }} steps: + # Force git-based change detection instead of the pull_request REST API. + # The API path can fail the workflow on transient listFiles timeouts + # before the Windows render jobs even start. - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 + with: + fetch-depth: 0 + - uses: dorny/paths-filter@v4 id: filter with: + token: "" filters: | code: - "packages/**" diff --git a/packages/engine/src/services/audioMixer.ts b/packages/engine/src/services/audioMixer.ts index 726726425..a3ccb804c 100644 --- a/packages/engine/src/services/audioMixer.ts +++ b/packages/engine/src/services/audioMixer.ts @@ -11,6 +11,7 @@ import { extractAudioMetadata } from "../utils/ffprobe.js"; import { downloadToTemp, isHttpUrl } from "../utils/urlDownloader.js"; import { DEFAULT_CONFIG, type EngineConfig } from "../config.js"; import { runFfmpeg } from "../utils/runFfmpeg.js"; +import { unwrapTemplate } from "../utils/htmlTemplate.js"; import type { AudioElement, AudioTrack, MixResult } from "./audioMixer.types.js"; export type { AudioElement, AudioTrack, MixResult } from "./audioMixer.types.js"; @@ -24,7 +25,7 @@ interface ExtractResult { export function parseAudioElements(html: string): AudioElement[] { const elements: AudioElement[] = []; - const { document } = parseHTML(html); + const { document } = parseHTML(unwrapTemplate(html)); // Parse