From fecd6022fedf8313b63c58635e6b53acaf3369a1 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sat, 22 Aug 2026 10:29:46 +0200 Subject: [PATCH] chore(traceability): shift this branch's ids clear of master's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- docs/architecture/01-rust-backend.md | 10 +- docs/architecture/02-svelte-frontend.md | 4 +- docs/architecture/03-data-flow.md | 2 +- docs/specs/README.md | 4 +- docs/specs/desktop-native-video.md | 62 +- docs/specs/linux-native-video-spike.md | 4 +- docs/specs/read-through-media-cache.md | 4 +- docs/traceability.md | 10011 +++++++++-------- src-tauri/src/commands/player/mod.rs | 34 +- src-tauri/src/commands/repository.rs | 2 +- src-tauri/src/commands/storage/mod.rs | 2 +- src-tauri/src/lib.rs | 6 +- src-tauri/src/player/media.rs | 2 +- src-tauri/src/player/mod.rs | 2 +- src-tauri/src/player/video_surface.rs | 18 +- src-tauri/src/repository/device_profile.rs | 8 +- src-tauri/src/repository/hybrid.rs | 4 +- src-tauri/src/repository/mod.rs | 2 +- src-tauri/src/repository/online.rs | 56 +- src-tauri/src/repository/stream_selection.rs | 42 +- src-tauri/src/repository/types.rs | 4 +- src/lib/api/bindings.ts | 32 +- src/lib/api/repository-client.ts | 2 +- src/lib/components/player/VideoPlayer.svelte | 34 +- src/lib/player/adapters/html5Adapter.ts | 6 +- src/lib/player/adapters/types.ts | 4 +- src/lib/player/index.ts | 2 +- src/lib/player/streamTransport.test.ts | 2 +- src/lib/player/streamTransport.ts | 6 +- src/routes/player/[id]/+page.svelte | 8 +- 30 files changed, 5309 insertions(+), 5070 deletions(-) diff --git a/docs/architecture/01-rust-backend.md b/docs/architecture/01-rust-backend.md index 04952047..cbd7b93b 100644 --- a/docs/architecture/01-rust-backend.md +++ b/docs/architecture/01-rust-backend.md @@ -675,7 +675,7 @@ source file's own bitrate, and no URL parameter afterwards can reduce it. #### Two levels of ceiling -**Location**: `src-tauri/src/repository/online.rs` (TRACES: UR-074, UR-079 | DR-225) +**Location**: `src-tauri/src/repository/online.rs` (TRACES: UR-074, UR-079 | DR-226) There are two, and they are not the same thing: @@ -703,7 +703,7 @@ to constrain, or the reverse. ### Stream selection **Location**: `src-tauri/src/repository/stream_selection.rs`, -`OnlineRepository::get_stream_selection` (TRACES: UR-070, UR-079 | DR-224, DR-226, DR-227) +`OnlineRepository::get_stream_selection` (TRACES: UR-070, UR-079 | DR-225, DR-227, DR-228) **Rust decides *what stream*. The player decides *how to deliver it*.** That line is the whole design. A backend with genuine adaptive selection (ExoPlayer over a @@ -719,7 +719,7 @@ the bare URL `get_video_stream_url` used to hand out: | `transport` | `Hls` / `Progressive` / `LocalFile` — how to fetch it | | `playback_kind` | `DirectPlay` / `DirectStream` / `Transcode` — what the server is doing to the source | | `rendition` | The negotiated ceiling and codecs; `None` for a direct play, which *is* the source | -| `available` | The quality ladder as it applies to this media source (DR-226) | +| `available` | The quality ladder as it applies to this media source (DR-227) | | `needs_transcoding` | Derived from `playback_kind`, so the rule is answered once | Both enums are serde-tagged (`{"type":"hls"}`) so the frontend matches a @@ -777,7 +777,7 @@ a free passthrough as a server-side re-encode. > in its `MediaCodecList` — no Dolby licence, which is normal for a tablet — so > eac3 content, about a third of the sampled library, correctly transcodes there. > What any given device achieves depends on its own codec list, and on the -> profile being derived from the renderer at all (DR-233), which it was not when +> profile being derived from the renderer at all (DR-234), which it was not when > the figure was taken. > > **The payoff is still overwhelmingly Android**, because that is where a real @@ -801,7 +801,7 @@ they are. #### No adaptive ladder to preserve -**TRACES: UR-079 | DR-228 (Won't Do)** +**TRACES: UR-079 | DR-229 (Won't Do)** Mid-playback re-negotiation on throughput was scoped and dropped on measurement. A master playlist from this server carries exactly **one** `EXT-X-STREAM-INF`: diff --git a/docs/architecture/02-svelte-frontend.md b/docs/architecture/02-svelte-frontend.md index 2e0d5afa..93d2a8e0 100644 --- a/docs/architecture/02-svelte-frontend.md +++ b/docs/architecture/02-svelte-frontend.md @@ -805,7 +805,7 @@ can safely be re-sent on resume. ## Stream Transport **Location**: `src/lib/player/streamTransport.ts` -**TRACES**: UR-079 | DR-224 | UT-213 +**TRACES**: UR-079 | DR-225 | UT-214 `videoLoaderFor(selection, capabilities)` picks the loader for the webview `