diff --git a/CLAUDE.md b/CLAUDE.md index c951e393..e92bb7b0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -266,6 +266,23 @@ tagged responses keep the Rust field names as-is (e.g. `new_url`, not `newUrl`). ## Testing +### 🔴 Bug fixes: failing test FIRST, then the fix + +When fixing a bug, **write a test that reproduces it and watch it fail before +touching the fix.** Red → green, in that order: + +1. Write a test that exercises the broken behavior and **run it — it must fail**, + proving the test actually catches the bug (a test that passes before the fix + proves nothing). +2. Apply the fix. +3. Re-run — the test now passes, and so does the rest of the suite. + +Never fix first and backfill the test afterward: a test written against +already-fixed code can pass for the wrong reason and silently fails to guard the +regression. If the logic is buried in a component, extract the pure part into a +plain `.ts` module (e.g. `episodeStrip.ts`) so it can be unit-tested — the same +pattern as `TrackList.logic.test.ts`. + ```bash # Rust cd src-tauri && cargo test diff --git a/docs/traceability.md b/docs/traceability.md index 0cad89fe..80e3cfee 100644 --- a/docs/traceability.md +++ b/docs/traceability.md @@ -1,22 +1,22 @@ # Code Traceability Matrix -**Generated:** 7/24/2026, 10:45:36 PM +**Generated:** 7/25/2026, 9:21:22 AM ## Summary -- **Total Files Scanned:** 287 -- **Total TRACES Found:** 294 +- **Total Files Scanned:** 293 +- **Total TRACES Found:** 301 - **Requirements Covered:** - - User Requirements (UR): 55 + - User Requirements (UR): 56 - Integration Requirements (IR): 15 - - Development Requirements (DR): 79 + - Development Requirements (DR): 81 - Jellyfin API Requirements (JA): 24 ## Requirements by Type ### User Requirements (UR) ``` -UR-002, UR-003, UR-004, UR-005, UR-007, UR-008, UR-009, UR-010, UR-011, UR-012, UR-013, UR-014, UR-015, UR-016, UR-017, UR-018, UR-019, UR-020, UR-021, UR-022, UR-023, UR-024, UR-025, UR-026, UR-027, UR-028, UR-029, UR-030, UR-031, UR-032, UR-033, UR-034, UR-035, UR-036, UR-038, UR-039, UR-040, UR-041, UR-042, UR-043, UR-044, UR-045, UR-046, UR-047, UR-048, UR-049, UR-050, UR-051, UR-052, UR-053, UR-054, UR-055, UR-056, UR-057, UR-058 +UR-002, UR-003, UR-004, UR-005, UR-007, UR-008, UR-009, UR-010, UR-011, UR-012, UR-013, UR-014, UR-015, UR-016, UR-017, UR-018, UR-019, UR-020, UR-021, UR-022, UR-023, UR-024, UR-025, UR-026, UR-027, UR-028, UR-029, UR-030, UR-031, UR-032, UR-033, UR-034, UR-035, UR-036, UR-038, UR-039, UR-040, UR-041, UR-042, UR-043, UR-044, UR-045, UR-046, UR-047, UR-048, UR-049, UR-050, UR-051, UR-052, UR-053, UR-054, UR-055, UR-056, UR-057, UR-058, UR-059 ``` ### Integration Requirements (IR) @@ -26,7 +26,7 @@ IR-003, IR-004, IR-009, IR-010, IR-011, IR-012, IR-013, IR-014, IR-015, IR-020, ### Development Requirements (DR) ``` -DR-001, DR-002, DR-003, DR-004, DR-005, DR-006, DR-007, DR-009, DR-010, DR-011, DR-012, DR-013, DR-014, DR-015, DR-016, DR-017, DR-018, DR-020, DR-021, DR-022, DR-023, DR-024, DR-025, DR-026, DR-027, DR-028, DR-029, DR-030, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-043, DR-044, DR-045, DR-047, DR-048, DR-049, DR-050, DR-051, DR-052, DR-053, DR-054, DR-055, DR-056, DR-057, DR-058, DR-059, DR-060, DR-061, DR-062, DR-063, DR-064, DR-065, DR-066, DR-067, DR-068, DR-069, DR-070, DR-074, DR-075, DR-076, DR-077, DR-078, DR-079, DR-080, DR-081, DR-082, DR-083, DR-084, DR-085, DR-086, DR-087 +DR-001, DR-002, DR-003, DR-004, DR-005, DR-006, DR-007, DR-009, DR-010, DR-011, DR-012, DR-013, DR-014, DR-015, DR-016, DR-017, DR-018, DR-020, DR-021, DR-022, DR-023, DR-024, DR-025, DR-026, DR-027, DR-028, DR-029, DR-030, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-043, DR-044, DR-045, DR-047, DR-048, DR-049, DR-050, DR-051, DR-052, DR-053, DR-054, DR-055, DR-056, DR-057, DR-058, DR-059, DR-060, DR-061, DR-062, DR-063, DR-064, DR-065, DR-066, DR-067, DR-068, DR-069, DR-070, DR-074, DR-075, DR-076, DR-077, DR-078, DR-079, DR-080, DR-081, DR-082, DR-083, DR-084, DR-085, DR-086, DR-087, DR-088, DR-089 ``` ### Jellyfin API Requirements (JA) @@ -226,11 +226,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 17 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2240) - - **Line:** 2240 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2251) + - **Line:** 2251 - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` - **File:** [`src/lib/stores/player.ts`](src/lib/stores/player.ts#L8) - **Line:** 8 @@ -282,8 +282,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 2 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2118) - - **Line:** 2118 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2129) + - **Line:** 2129 - **Context:** `export type PlaybackProgress = { itemId: string;` - **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L42) - **Line:** 42 @@ -293,8 +293,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 2 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2222) - - **Line:** 2222 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2233) + - **Line:** 2233 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L124) - **Line:** 124 @@ -336,8 +336,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 13 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2494) - - **Line:** 2494 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2505) + - **Line:** 2505 - **Context:** `export type RemoteSessionStatus = { position: number; duration: number...` - **File:** [`src/lib/stores/queue.test.ts`](src/lib/stores/queue.test.ts#L4) - **Line:** 4 @@ -519,12 +519,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/storage/schema.rs`](src-tauri/src/storage/schema.rs#L3) - **Line:** 3 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) - - **Line:** 8 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) + - **Line:** 8 + - **Context:** `Unknown` ### DR-013 @@ -536,15 +536,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/storage/mod.rs`](src-tauri/src/commands/storage/mod.rs#L3) - **Line:** 3 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) - - **Line:** 8 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L1) - **Line:** 1 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) + - **Line:** 8 + - **Context:** `Unknown` ### DR-014 @@ -735,8 +735,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 18 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` - **File:** [`src/lib/utils/duration.test.ts`](src/lib/utils/duration.test.ts#L4) - **Line:** 4 @@ -794,8 +794,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 9 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2536) - - **Line:** 2536 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2547) + - **Line:** 2547 - **Context:** `export type SessionInfo = { id?: string | null; userId?: string | null...` - **File:** [`src/lib/components/player/SleepTimerModal.svelte`](src/lib/components/player/SleepTimerModal.svelte#L1) - **Line:** 1 @@ -990,15 +990,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/components/home/HeroBanner.svelte`](src/lib/components/home/HeroBanner.svelte#L1) - **Line:** 1 - **Context:** `Unknown` -- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) - - **Line:** 2 - - **Context:** `Unknown` - **File:** [`src/lib/stores/movies.ts`](src/lib/stores/movies.ts#L3) - **Line:** 3 - **Context:** `Unknown` - **File:** [`src/lib/stores/music.ts`](src/lib/stores/music.ts#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` - **File:** [`src/lib/stores/tv.ts`](src/lib/stores/tv.ts#L3) - **Line:** 3 - **Context:** `Unknown` @@ -1022,15 +1022,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/components/home/Carousel.svelte`](src/lib/components/home/Carousel.svelte#L1) - **Line:** 1 - **Context:** `Unknown` -- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) - - **Line:** 2 - - **Context:** `Unknown` - **File:** [`src/lib/stores/movies.ts`](src/lib/stores/movies.ts#L3) - **Line:** 3 - **Context:** `Unknown` - **File:** [`src/lib/stores/music.ts`](src/lib/stores/music.ts#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` - **File:** [`src/lib/stores/tv.ts`](src/lib/stores/tv.ts#L3) - **Line:** 3 - **Context:** `Unknown` @@ -1088,8 +1088,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 13 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` - **File:** [`src/lib/stores/nextEpisode.ts`](src/lib/stores/nextEpisode.ts#L9) - **Line:** 9 @@ -1180,7 +1180,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### DR-052 -**Locations:** 9 file(s) +**Locations:** 10 file(s) - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L38) - **Line:** 38 @@ -1200,14 +1200,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/player/backgroundAudio.commands.test.ts`](src/lib/player/backgroundAudio.commands.test.ts#L7) - **Line:** 7 - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L1079) + - **Line:** 1079 + - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L68) - **Line:** 68 - **Context:** `pub struct VideoSettingsWrapper(pub Mutex);` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L574) - - **Line:** 574 +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L583) + - **Line:** 583 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L664) - - **Line:** 664 +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L675) + - **Line:** 675 - **Context:** `Unknown` ### DR-053 @@ -1287,7 +1290,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### DR-062 -**Locations:** 2 file(s) +**Locations:** 3 file(s) - **File:** [`src/routes/library/[id]/+page.svelte`](src/routes/library/[id]/+page.svelte#L1) - **Line:** 1 @@ -1295,6 +1298,9 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/components/library/EpisodeFocusView.svelte`](src/lib/components/library/EpisodeFocusView.svelte#L1) - **Line:** 1 - **Context:** `Unknown` +- **File:** [`src/lib/components/library/episodeStrip.ts`](src/lib/components/library/episodeStrip.ts#L7) + - **Line:** 7 + - **Context:** `Unknown` ### DR-063 @@ -1498,8 +1504,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L43) - **Line:** 43 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2385) - - **Line:** 2385 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2396) + - **Line:** 2396 - **Context:** `Unknown` ### DR-079 @@ -1517,12 +1523,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 2 file(s) -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) - - **Line:** 8 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L43) - **Line:** 43 - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) + - **Line:** 8 + - **Context:** `Unknown` ### DR-081 @@ -1542,18 +1548,18 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/routes/downloads/+page.svelte`](src/routes/downloads/+page.svelte#L14) - **Line:** 14 - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1221) - - **Line:** 1221 - - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1229) - - **Line:** 1229 - - **Context:** `Unknown` - **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L97) - **Line:** 97 - **Context:** `Unknown` - **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L105) - **Line:** 105 - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1221) + - **Line:** 1221 + - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1229) + - **Line:** 1229 + - **Context:** `Unknown` - **File:** [`src/lib/components/downloads/DownloadedBrowse.svelte`](src/lib/components/downloads/DownloadedBrowse.svelte#L10) - **Line:** 10 - **Context:** `Unknown` @@ -1566,12 +1572,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L218) - **Line:** 218 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L143) - - **Line:** 143 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L154) - - **Line:** 154 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L538) - **Line:** 538 - **Context:** `Unknown` @@ -1581,23 +1581,29 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L669) - **Line:** 669 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2686) - - **Line:** 2686 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2697) + - **Line:** 2697 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2708) - - **Line:** 2708 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2719) + - **Line:** 2719 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2742) - - **Line:** 2742 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2753) + - **Line:** 2753 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2788) - - **Line:** 2788 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2799) + - **Line:** 2799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2809) - - **Line:** 2809 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2820) + - **Line:** 2820 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2828) - - **Line:** 2828 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2839) + - **Line:** 2839 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L143) + - **Line:** 143 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L154) + - **Line:** 154 - **Context:** `Unknown` ### DR-083 @@ -1607,15 +1613,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/routes/downloads/+page.svelte`](src/routes/downloads/+page.svelte#L14) - **Line:** 14 - **Context:** `Unknown` +- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L105) + - **Line:** 105 + - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L805) - **Line:** 805 - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1229) - **Line:** 1229 - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L105) - - **Line:** 105 - - **Context:** `Unknown` - **File:** [`src/lib/components/library/MediaCard.svelte`](src/lib/components/library/MediaCard.svelte#L24) - **Line:** 24 - **Context:** `Unknown` @@ -1637,29 +1643,29 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L218) - **Line:** 218 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L143) - - **Line:** 143 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L538) - **Line:** 538 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L565) - **Line:** 565 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2686) - - **Line:** 2686 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2697) + - **Line:** 2697 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2708) - - **Line:** 2708 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2719) + - **Line:** 2719 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2742) - - **Line:** 2742 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2753) + - **Line:** 2753 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2788) - - **Line:** 2788 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2799) + - **Line:** 2799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2889) - - **Line:** 2889 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2900) + - **Line:** 2900 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L143) + - **Line:** 143 - **Context:** `Unknown` ### DR-084 @@ -1680,15 +1686,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/routes/downloads/+page.svelte`](src/routes/downloads/+page.svelte#L14) - **Line:** 14 - **Context:** `Unknown` +- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L113) + - **Line:** 113 + - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1237) - **Line:** 1237 - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1718) - **Line:** 1718 - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L113) - - **Line:** 113 - - **Context:** `Unknown` - **File:** [`src/lib/components/library/LibraryGrid.svelte`](src/lib/components/library/LibraryGrid.svelte#L17) - **Line:** 17 - **Context:** `Unknown` @@ -1710,17 +1716,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L235) - **Line:** 235 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L161) - - **Line:** 161 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/types.rs`](src-tauri/src/repository/types.rs#L259) - **Line:** 259 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L720) - **Line:** 720 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2850) - - **Line:** 2850 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2861) + - **Line:** 2861 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L161) + - **Line:** 161 - **Context:** `Unknown` ### DR-086 @@ -1735,8 +1741,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 4 file(s) -- **File:** [`src/routes/library/[id]/+page.svelte`](src/routes/library/[id]/+page.svelte#L386) - - **Line:** 386 +- **File:** [`src/routes/library/[id]/+page.svelte`](src/routes/library/[id]/+page.svelte#L414) + - **Line:** 414 - **Context:** `Unknown` - **File:** [`src/routes/+page.svelte`](src/routes/+page.svelte#L62) - **Line:** 62 @@ -1748,6 +1754,34 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 37 - **Context:** `Unknown` +### DR-088 + +**Locations:** 2 file(s) + +- **File:** [`src/lib/services/skipReporting.ts`](src/lib/services/skipReporting.ts#L14) + - **Line:** 14 + - **Context:** `Unknown` +- **File:** [`src/lib/services/skipReporting.test.ts`](src/lib/services/skipReporting.test.ts#L9) + - **Line:** 9 + - **Context:** `Unknown` + +### DR-089 + +**Locations:** 4 file(s) + +- **File:** [`src/lib/stores/continueWatchingFilter.ts`](src/lib/stores/continueWatchingFilter.ts#L12) + - **Line:** 12 + - **Context:** `Unknown` +- **File:** [`src/lib/stores/continueWatchingFilter.test.ts`](src/lib/stores/continueWatchingFilter.test.ts#L9) + - **Line:** 9 + - **Context:** `Unknown` +- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` +- **File:** [`src/lib/stores/tv.ts`](src/lib/stores/tv.ts#L3) + - **Line:** 3 + - **Context:** `Unknown` + ### JA-001 **Locations:** 1 file(s) @@ -2009,11 +2043,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### JA-032 -**Locations:** 9 file(s) +**Locations:** 10 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319) - - **Line:** 1319 - - **Context:** `Unknown` - **File:** [`src/lib/api/repository-client.test.ts`](src/lib/api/repository-client.test.ts#L434) - **Line:** 434 - **Context:** `Unknown` @@ -2023,28 +2054,34 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L203) - **Line:** 203 - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319) + - **Line:** 1319 + - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494) - **Line:** 494 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L82) - - **Line:** 82 +- **File:** [`src-tauri/src/repository/mod.rs`](src-tauri/src/repository/mod.rs#L127) + - **Line:** 127 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L435) - **Line:** 435 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2093) - - **Line:** 2093 +- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2109) + - **Line:** 2109 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2134) - - **Line:** 2134 +- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2150) + - **Line:** 2150 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L82) + - **Line:** 82 - **Context:** `Unknown` ### UR-002 **Locations:** 16 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2222) - - **Line:** 2222 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2233) + - **Line:** 2233 - **Context:** `Unknown` - **File:** [`src/lib/stores/connectivity.ts`](src/lib/stores/connectivity.ts#L10) - **Line:** 10 @@ -2082,25 +2119,25 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/storage/schema.rs`](src-tauri/src/storage/schema.rs#L3) - **Line:** 3 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) - - **Line:** 8 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L1) - **Line:** 1 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) + - **Line:** 8 + - **Context:** `Unknown` ### UR-003 **Locations:** 20 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2118) - - **Line:** 2118 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2129) + - **Line:** 2129 - **Context:** `export type PlaybackProgress = { itemId: string;` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2222) - - **Line:** 2222 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2233) + - **Line:** 2233 - **Context:** `Unknown` - **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1) - **Line:** 1 @@ -2161,11 +2198,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 15 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2118) - - **Line:** 2118 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2129) + - **Line:** 2129 - **Context:** `export type PlaybackProgress = { itemId: string;` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2222) - - **Line:** 2222 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2233) + - **Line:** 2233 - **Context:** `Unknown` - **File:** [`src/lib/components/player/AudioPlayer.svelte`](src/lib/components/player/AudioPlayer.svelte#L1) - **Line:** 1 @@ -2211,14 +2248,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 58 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2240) - - **Line:** 2240 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2251) + - **Line:** 2251 - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2494) - - **Line:** 2494 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2505) + - **Line:** 2505 - **Context:** `export type RemoteSessionStatus = { position: number; duration: number...` - **File:** [`src/lib/components/player/Controls.svelte`](src/lib/components/player/Controls.svelte#L1) - **Line:** 1 @@ -2551,8 +2588,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 11 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2222) - - **Line:** 2222 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2233) + - **Line:** 2233 - **Context:** `Unknown` - **File:** [`src/lib/stores/downloads.ts`](src/lib/stores/downloads.ts#L2) - **Line:** 2 @@ -2722,8 +2759,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 12 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` - **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4) - **Line:** 4 @@ -2798,7 +2835,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### UR-023 -**Locations:** 19 file(s) +**Locations:** 20 file(s) - **File:** [`src/routes/library/movies/+page.svelte`](src/routes/library/movies/+page.svelte#L1) - **Line:** 1 @@ -2809,18 +2846,18 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/routes/settings/+page.svelte`](src/routes/settings/+page.svelte#L1) - **Line:** 1 - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` - **File:** [`src/lib/stores/nextEpisode.ts`](src/lib/stores/nextEpisode.ts#L9) - **Line:** 9 - **Context:** `Unknown` -- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) - - **Line:** 2 - - **Context:** `Unknown` - **File:** [`src/lib/stores/movies.ts`](src/lib/stores/movies.ts#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` - **File:** [`src/lib/stores/tv.ts`](src/lib/stores/tv.ts#L3) - **Line:** 3 - **Context:** `Unknown` @@ -2851,6 +2888,9 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2) - **Line:** 2 - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L1079) + - **Line:** 1079 + - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/player/timers.rs`](src-tauri/src/commands/player/timers.rs#L3) - **Line:** 3 - **Context:** `Unknown` @@ -2871,7 +2911,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### UR-025 -**Locations:** 14 file(s) +**Locations:** 16 file(s) - **File:** [`src/lib/utils/validation.test.ts`](src/lib/utils/validation.test.ts#L4) - **Line:** 4 @@ -2900,6 +2940,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L64) - **Line:** 64 - **Context:** `Unknown` +- **File:** [`src/lib/services/skipReporting.ts`](src/lib/services/skipReporting.ts#L14) + - **Line:** 14 + - **Context:** `Unknown` +- **File:** [`src/lib/services/skipReporting.test.ts`](src/lib/services/skipReporting.test.ts#L9) + - **Line:** 9 + - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/storage/mod.rs`](src-tauri/src/commands/storage/mod.rs#L3) - **Line:** 3 - **Context:** `Unknown` @@ -2920,11 +2966,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 16 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2297) - - **Line:** 2297 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2308) + - **Line:** 2308 - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2536) - - **Line:** 2536 +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2547) + - **Line:** 2547 - **Context:** `export type SessionInfo = { id?: string | null; userId?: string | null...` - **File:** [`src/lib/components/player/SleepTimerModal.svelte`](src/lib/components/player/SleepTimerModal.svelte#L1) - **Line:** 1 @@ -3089,15 +3135,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/components/home/Carousel.svelte`](src/lib/components/home/Carousel.svelte#L1) - **Line:** 1 - **Context:** `Unknown` -- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) - - **Line:** 2 - - **Context:** `Unknown` - **File:** [`src/lib/stores/movies.ts`](src/lib/stores/movies.ts#L3) - **Line:** 3 - **Context:** `Unknown` - **File:** [`src/lib/stores/music.ts`](src/lib/stores/music.ts#L3) - **Line:** 3 - **Context:** `Unknown` +- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` - **File:** [`src/lib/stores/tv.ts`](src/lib/stores/tv.ts#L3) - **Line:** 3 - **Context:** `Unknown` @@ -3157,17 +3203,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### UR-040 -**Locations:** 19 file(s) +**Locations:** 21 file(s) -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L38) - - **Line:** 38 - - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L51) - - **Line:** 51 - - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319) - - **Line:** 1319 - - **Context:** `Unknown` - **File:** [`src/lib/api/repository-client.test.ts`](src/lib/api/repository-client.test.ts#L434) - **Line:** 434 - **Context:** `Unknown` @@ -3177,6 +3214,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L203) - **Line:** 203 - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L38) + - **Line:** 38 + - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L51) + - **Line:** 51 + - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319) + - **Line:** 1319 + - **Context:** `Unknown` - **File:** [`src/lib/components/player/backgroundAudioHandoff.test.ts`](src/lib/components/player/backgroundAudioHandoff.test.ts#L10) - **Line:** 10 - **Context:** `Unknown` @@ -3192,29 +3238,35 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/player/backgroundAudio.commands.test.ts`](src/lib/player/backgroundAudio.commands.test.ts#L7) - **Line:** 7 - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L1079) + - **Line:** 1079 + - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L68) - **Line:** 68 - **Context:** `pub struct VideoSettingsWrapper(pub Mutex);` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L574) - - **Line:** 574 +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L583) + - **Line:** 583 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L664) - - **Line:** 664 +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L675) + - **Line:** 675 - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494) - **Line:** 494 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L82) - - **Line:** 82 +- **File:** [`src-tauri/src/repository/mod.rs`](src-tauri/src/repository/mod.rs#L127) + - **Line:** 127 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L435) - **Line:** 435 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2093) - - **Line:** 2093 +- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2109) + - **Line:** 2109 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2134) - - **Line:** 2134 +- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2150) + - **Line:** 2150 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L82) + - **Line:** 82 - **Context:** `Unknown` ### UR-041 @@ -3238,7 +3290,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, ### UR-048 -**Locations:** 2 file(s) +**Locations:** 3 file(s) - **File:** [`src/routes/library/[id]/+page.svelte`](src/routes/library/[id]/+page.svelte#L1) - **Line:** 1 @@ -3246,6 +3298,9 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/components/library/EpisodeFocusView.svelte`](src/lib/components/library/EpisodeFocusView.svelte#L1) - **Line:** 1 - **Context:** `Unknown` +- **File:** [`src/lib/components/library/episodeStrip.ts`](src/lib/components/library/episodeStrip.ts#L7) + - **Line:** 7 + - **Context:** `Unknown` ### UR-049 @@ -3332,9 +3387,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/catalog.rs`](src-tauri/src/commands/catalog.rs#L441) - **Line:** 441 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) - - **Line:** 8 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L3) - **Line:** 3 - **Context:** `Unknown` @@ -3344,8 +3396,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L43) - **Line:** 43 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2385) - - **Line:** 2385 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2396) + - **Line:** 2396 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L8) + - **Line:** 8 - **Context:** `Unknown` ### UR-053 @@ -3425,6 +3480,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/routes/downloads/+page.svelte`](src/routes/downloads/+page.svelte#L14) - **Line:** 14 - **Context:** `Unknown` +- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L97) + - **Line:** 97 + - **Context:** `Unknown` +- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L105) + - **Line:** 105 + - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L805) - **Line:** 805 - **Context:** `Unknown` @@ -3434,12 +3495,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1229) - **Line:** 1229 - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L97) - - **Line:** 97 - - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L105) - - **Line:** 105 - - **Context:** `Unknown` - **File:** [`src/lib/components/library/MediaCard.svelte`](src/lib/components/library/MediaCard.svelte#L24) - **Line:** 24 - **Context:** `Unknown` @@ -3467,12 +3522,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L218) - **Line:** 218 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L143) - - **Line:** 143 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L154) - - **Line:** 154 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L538) - **Line:** 538 - **Context:** `Unknown` @@ -3482,26 +3531,32 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L669) - **Line:** 669 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2686) - - **Line:** 2686 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2697) + - **Line:** 2697 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2708) - - **Line:** 2708 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2719) + - **Line:** 2719 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2742) - - **Line:** 2742 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2753) + - **Line:** 2753 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2788) - - **Line:** 2788 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2799) + - **Line:** 2799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2809) - - **Line:** 2809 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2820) + - **Line:** 2820 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2828) - - **Line:** 2828 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2839) + - **Line:** 2839 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2889) - - **Line:** 2889 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2900) + - **Line:** 2900 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L143) + - **Line:** 143 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L154) + - **Line:** 154 - **Context:** `Unknown` ### UR-056 @@ -3511,15 +3566,15 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/routes/downloads/+page.svelte`](src/routes/downloads/+page.svelte#L14) - **Line:** 14 - **Context:** `Unknown` +- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L113) + - **Line:** 113 + - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1237) - **Line:** 1237 - **Context:** `Unknown` - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1718) - **Line:** 1718 - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.ts`](src/lib/api/repository-client.ts#L113) - - **Line:** 113 - - **Context:** `Unknown` - **File:** [`src/lib/components/library/LibraryGrid.svelte`](src/lib/components/library/LibraryGrid.svelte#L17) - **Line:** 17 - **Context:** `Unknown` @@ -3547,17 +3602,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L235) - **Line:** 235 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L161) - - **Line:** 161 - - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/types.rs`](src-tauri/src/repository/types.rs#L259) - **Line:** 259 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L720) - **Line:** 720 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2850) - - **Line:** 2850 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2861) + - **Line:** 2861 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/hybrid.rs`](src-tauri/src/repository/hybrid.rs#L161) + - **Line:** 161 - **Context:** `Unknown` ### UR-057 @@ -3572,8 +3627,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, **Locations:** 4 file(s) -- **File:** [`src/routes/library/[id]/+page.svelte`](src/routes/library/[id]/+page.svelte#L386) - - **Line:** 386 +- **File:** [`src/routes/library/[id]/+page.svelte`](src/routes/library/[id]/+page.svelte#L414) + - **Line:** 414 - **Context:** `Unknown` - **File:** [`src/routes/+page.svelte`](src/routes/+page.svelte#L62) - **Line:** 62 @@ -3611,27 +3666,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L51) - **Line:** 51 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L574) - - **Line:** 574 +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L583) + - **Line:** 583 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L664) - - **Line:** 664 - - **Context:** `Unknown` - -### IT-016 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2385) - - **Line:** 2385 - - **Context:** `Unknown` - -### IT-017 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/commands/catalog.rs`](src-tauri/src/commands/catalog.rs#L441) - - **Line:** 441 +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L675) + - **Line:** 675 - **Context:** `Unknown` ### UT-003 @@ -3674,6 +3713,243 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 81 - **Context:** `pub fn cancel(&mut self) {` +### UT-024 + +**Locations:** 1 file(s) + +- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` + +### UT-026 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L251) + - **Line:** 251 + - **Context:** `Unknown` + +### UT-027 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-028 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-029 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-030 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-031 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-032 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-033 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) + - **Line:** 245 + - **Context:** `Unknown` + +### UT-052 + +**Locations:** 1 file(s) + +- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L315) + - **Line:** 315 + - **Context:** `Unknown` + +### UT-060 + +**Locations:** 2 file(s) + +- **File:** [`src/lib/components/player/backgroundAudioHandoff.test.ts`](src/lib/components/player/backgroundAudioHandoff.test.ts#L10) + - **Line:** 10 + - **Context:** `Unknown` +- **File:** [`src/lib/components/player/backgroundAudioHandoff.ts`](src/lib/components/player/backgroundAudioHandoff.ts#L4) + - **Line:** 4 + - **Context:** `Unknown` + +### UT-061 + +**Locations:** 9 file(s) + +- **File:** [`src/lib/api/repository-client.test.ts`](src/lib/api/repository-client.test.ts#L434) + - **Line:** 434 + - **Context:** `Unknown` +- **File:** [`src/lib/api/repository-client.test.ts`](src/lib/api/repository-client.test.ts#L451) + - **Line:** 451 + - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L38) + - **Line:** 38 + - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L51) + - **Line:** 51 + - **Context:** `Unknown` +- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319) + - **Line:** 1319 + - **Context:** `Unknown` +- **File:** [`src/lib/player/backgroundAudio.commands.test.ts`](src/lib/player/backgroundAudio.commands.test.ts#L7) + - **Line:** 7 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L583) + - **Line:** 583 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L675) + - **Line:** 675 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494) + - **Line:** 494 + - **Context:** `Unknown` + +### UR-059 + +**Locations:** 6 file(s) + +- **File:** [`src/lib/stores/continueWatchingFilter.ts`](src/lib/stores/continueWatchingFilter.ts#L12) + - **Line:** 12 + - **Context:** `Unknown` +- **File:** [`src/lib/stores/continueWatchingFilter.test.ts`](src/lib/stores/continueWatchingFilter.test.ts#L9) + - **Line:** 9 + - **Context:** `Unknown` +- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2) + - **Line:** 2 + - **Context:** `Unknown` +- **File:** [`src/lib/stores/tv.ts`](src/lib/stores/tv.ts#L3) + - **Line:** 3 + - **Context:** `Unknown` +- **File:** [`src/lib/services/skipReporting.ts`](src/lib/services/skipReporting.ts#L14) + - **Line:** 14 + - **Context:** `Unknown` +- **File:** [`src/lib/services/skipReporting.test.ts`](src/lib/services/skipReporting.test.ts#L9) + - **Line:** 9 + - **Context:** `Unknown` + +### UT-066 + +**Locations:** 1 file(s) + +- **File:** [`src/lib/services/networkType.test.ts`](src/lib/services/networkType.test.ts#L4) + - **Line:** 4 + - **Context:** `Unknown` + +### UT-071 + +**Locations:** 1 file(s) + +- **File:** [`src/lib/utils/formatBytes.test.ts`](src/lib/utils/formatBytes.test.ts#L4) + - **Line:** 4 + - **Context:** `Unknown` + +### UR-014 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/commands/playlist.rs`](src-tauri/src/commands/playlist.rs#L4) + - **Line:** 4 + - **Context:** `Unknown` + +### UR-016 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L62) + - **Line:** 62 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L251) + - **Line:** 251 + - **Context:** `Unknown` + +### UR-032 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3) + - **Line:** 3 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1) + - **Line:** 1 + - **Context:** `Unknown` + +### UR-033 + +**Locations:** 7 file(s) + +- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L584) + - **Line:** 584 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L638) + - **Line:** 638 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L704) + - **Line:** 704 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L714) + - **Line:** 714 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L759) + - **Line:** 759 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3) + - **Line:** 3 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1) + - **Line:** 1 + - **Context:** `Unknown` + +### IT-016 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2396) + - **Line:** 2396 + - **Context:** `Unknown` + +### IT-017 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/commands/catalog.rs`](src-tauri/src/commands/catalog.rs#L441) + - **Line:** 441 + - **Context:** `Unknown` + ### UT-014 **Locations:** 2 file(s) @@ -3784,14 +4060,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 157 - **Context:** `pub fn file_size(&self) -> Option {` -### UT-024 - -**Locations:** 1 file(s) - -- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2) - - **Line:** 2 - - **Context:** `Unknown` - ### UT-025 **Locations:** 2 file(s) @@ -3803,60 +4071,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 157 - **Context:** `pub fn file_size(&self) -> Option {` -### UT-027 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - -### UT-028 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - -### UT-030 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - -### UT-031 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - -### UT-032 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - ### UT-051 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2889) - - **Line:** 2889 - - **Context:** `Unknown` - -### UT-052 - -**Locations:** 1 file(s) - -- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L315) - - **Line:** 315 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2900) + - **Line:** 2900 - **Context:** `Unknown` ### UT-059 @@ -3866,252 +4086,75 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L435) - **Line:** 435 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2093) - - **Line:** 2093 +- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2109) + - **Line:** 2109 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2134) - - **Line:** 2134 - - **Context:** `Unknown` - -### UT-060 - -**Locations:** 2 file(s) - -- **File:** [`src/lib/components/player/backgroundAudioHandoff.test.ts`](src/lib/components/player/backgroundAudioHandoff.test.ts#L10) - - **Line:** 10 - - **Context:** `Unknown` -- **File:** [`src/lib/components/player/backgroundAudioHandoff.ts`](src/lib/components/player/backgroundAudioHandoff.ts#L4) - - **Line:** 4 - - **Context:** `Unknown` - -### UT-061 - -**Locations:** 9 file(s) - -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L38) - - **Line:** 38 - - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L51) - - **Line:** 51 - - **Context:** `Unknown` -- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319) - - **Line:** 1319 - - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.test.ts`](src/lib/api/repository-client.test.ts#L434) - - **Line:** 434 - - **Context:** `Unknown` -- **File:** [`src/lib/api/repository-client.test.ts`](src/lib/api/repository-client.test.ts#L451) - - **Line:** 451 - - **Context:** `Unknown` -- **File:** [`src/lib/player/backgroundAudio.commands.test.ts`](src/lib/player/backgroundAudio.commands.test.ts#L7) - - **Line:** 7 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L574) - - **Line:** 574 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L664) - - **Line:** 664 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494) - - **Line:** 494 - - **Context:** `Unknown` - -### UT-066 - -**Locations:** 1 file(s) - -- **File:** [`src/lib/services/networkType.test.ts`](src/lib/services/networkType.test.ts#L4) - - **Line:** 4 - - **Context:** `Unknown` - -### UT-071 - -**Locations:** 1 file(s) - -- **File:** [`src/lib/utils/formatBytes.test.ts`](src/lib/utils/formatBytes.test.ts#L4) - - **Line:** 4 - - **Context:** `Unknown` - -### UR-016 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L62) - - **Line:** 62 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L251) - - **Line:** 251 - - **Context:** `Unknown` - -### UT-026 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L251) - - **Line:** 251 - - **Context:** `Unknown` - -### UT-029 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - -### UT-033 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245) - - **Line:** 245 - - **Context:** `Unknown` - -### UR-014 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/commands/playlist.rs`](src-tauri/src/commands/playlist.rs#L4) - - **Line:** 4 - - **Context:** `Unknown` - -### UR-031 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3) - - **Line:** 3 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1) - - **Line:** 1 - - **Context:** `Unknown` - -### UR-032 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3) - - **Line:** 3 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1) - - **Line:** 1 - - **Context:** `Unknown` - -### UR-033 - -**Locations:** 7 file(s) - -- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L584) - - **Line:** 584 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L638) - - **Line:** 638 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L704) - - **Line:** 704 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L714) - - **Line:** 714 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L759) - - **Line:** 759 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3) - - **Line:** 3 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1) - - **Line:** 1 - - **Context:** `Unknown` - -### UT-042 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027) - - **Line:** 2027 - - **Context:** `Unknown` - -### UT-043 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027) - - **Line:** 2027 - - **Context:** `Unknown` - -### UT-044 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/commands/offline.rs`](src-tauri/src/commands/offline.rs#L136) - - **Line:** 136 +- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L2150) + - **Line:** 2150 - **Context:** `Unknown` ### UT-067 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2385) - - **Line:** 2385 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2396) + - **Line:** 2396 - **Context:** `Unknown` ### UT-072 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2686) - - **Line:** 2686 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2697) + - **Line:** 2697 - **Context:** `Unknown` ### UT-073 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2809) - - **Line:** 2809 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2820) + - **Line:** 2820 - **Context:** `Unknown` ### UT-074 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2828) - - **Line:** 2828 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2839) + - **Line:** 2839 - **Context:** `Unknown` ### UT-075 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2850) - - **Line:** 2850 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2861) + - **Line:** 2861 - **Context:** `Unknown` ### UT-076 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2708) - - **Line:** 2708 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2719) + - **Line:** 2719 - **Context:** `Unknown` ### UT-077 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2742) - - **Line:** 2742 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2753) + - **Line:** 2753 - **Context:** `Unknown` ### UT-078 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2788) - - **Line:** 2788 +- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L2799) + - **Line:** 2799 - **Context:** `Unknown` ### UT-079 @@ -4194,6 +4237,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 3 - **Context:** `Unknown` +### UR-031 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3) + - **Line:** 3 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1) + - **Line:** 1 + - **Context:** `Unknown` + ### UR-042 **Locations:** 1 file(s) @@ -4226,6 +4280,22 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 3 - **Context:** `Unknown` +### UT-042 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027) + - **Line:** 2027 + - **Context:** `Unknown` + +### UT-043 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027) + - **Line:** 2027 + - **Context:** `Unknown` + ### UR-047 **Locations:** 1 file(s) @@ -4234,4 +4304,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016, - **Line:** 3 - **Context:** `Unknown` +### UT-044 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/commands/offline.rs`](src-tauri/src/commands/offline.rs#L136) + - **Line:** 136 + - **Context:** `Unknown` +