chore(traceability): shift this branch's ids clear of master's

Master allocated DR-224 and UT-211 while this branch was in flight — the third
collision on this work. Everything here moves up by one: DR-224..236 become
DR-225..237, UT-211..213 become UT-212..214. UR-079, UR-080 and IR-033 were
still free and are unchanged.

Mechanical, and matched on each row's own text rather than on its number, so a
row cannot be shifted twice or the wrong one caught. Master's DR-224 (the
background-audio toggle) and UT-211 are untouched.
This commit is contained in:
2026-08-22 13:45:04 +02:00
parent 156b9e3684
commit fecd6022fe
30 changed files with 5309 additions and 5070 deletions
+3 -3
View File
@@ -37,7 +37,7 @@ const log = createLogger("Html5PlayerAdapter");
* This is the one place a fallback is tolerable, and it is explicitly a
* fallback: the negotiated path never reaches it.
*
* TRACES: UR-079 | DR-224
* TRACES: UR-079 | DR-225
*/
function selectionForLoad(streamUrl: string, options: PlayerLoadOptions): StreamSelection {
if (options.selection) return options.selection;
@@ -75,9 +75,9 @@ export interface Html5ElementBridge {
*
* Carries the whole [`StreamSelection`], not just the URL: the component's
* effect has to know the transport to choose a loader, and deriving that from
* the URL is the substring check DR-224 removes.
* the URL is the substring check DR-225 removes.
*
* TRACES: UR-079 | DR-224
* TRACES: UR-079 | DR-225
*/
setStreamSelection(selection: StreamSelection): void;
/** Tear down the component-owned hls.js instance (dual-audio prevention). */
+2 -2
View File
@@ -51,7 +51,7 @@ export interface PlayerLoadOptions {
* plugin's direct URL — where the adapter falls back to what the other
* options already say rather than to reading the URL.
*
* TRACES: UR-079 | DR-224
* TRACES: UR-079 | DR-225
*/
selection?: StreamSelection | null;
/** The source is a file on disk (or the loopback server in front of one). */
@@ -127,7 +127,7 @@ export interface PlayerAdapter {
* already decided to reload, and `selection.transport` says how to open it, so
* no adapter has to infer that from the URL.
*
* TRACES: UR-079 | DR-224
* TRACES: UR-079 | DR-225
*/
reloadSource(selection: StreamSelection, offset: number): Promise<void>;
+1 -1
View File
@@ -199,7 +199,7 @@ async function switchAudioTrack(
* actually got, which is not always what was asked for: a ceiling above the
* source bitrate is the source.
*
* TRACES: UR-074, UR-079 | DR-162, DR-225
* TRACES: UR-074, UR-079 | DR-162, DR-226
*/
async function setStreamQuality(
quality: StreamingQuality,
+1 -1
View File
@@ -1,7 +1,7 @@
/**
* The loader is chosen from the backend's `transport` tag, never from the URL.
*
* TRACES: UR-079 | DR-224 | UT-213
* TRACES: UR-079 | DR-225 | UT-214
*/
import { describe, expect, it } from "vitest";
+3 -3
View File
@@ -4,7 +4,7 @@
* Extracted from `VideoPlayer.svelte` so the decision can be unit-tested — the
* same pattern as `episodeStrip.ts` and `TrackList.logic.test.ts`.
*
* TRACES: UR-079 | DR-224 | UT-213
* TRACES: UR-079 | DR-225 | UT-214
*/
import type { StreamSelection, Transport } from "$lib/api/bindings";
@@ -54,11 +54,11 @@ export function videoLoaderFor(
* whenever the selection **object** is replaced — even with an identical URL and
* transport — and the HLS effect's teardown/rebuild is not idempotent: it
* destroys the hls.js instance and reattaches, which leaves the element with no
* video until something forces another cycle. The pre-DR-224 code read a plain
* video until something forces another cycle. The pre-DR-225 code read a plain
* URL *string*, so re-assigning the same value was a no-op and the effect stayed
* put. Passing primitives restores that.
*
* TRACES: UR-079 | DR-224 | UT-213
* TRACES: UR-079 | DR-225 | UT-214
*/
export function loaderForTransport(
transport: Transport["type"],