diff --git a/docs/requirements.md b/docs/requirements.md index 28f646c5..c994dc87 100644 --- a/docs/requirements.md +++ b/docs/requirements.md @@ -739,6 +739,7 @@ Internal architecture, components, and application logic. | UT-213 | The direct-play negotiation, one test per branch, against `PlaybackInfo` fixtures whose shapes were all observed on a live server: a supported source direct-plays; a remuxable one direct-streams and reports itself as *not* transcoding; an unsupported codec transcodes; undecodable audio overrides the server's direct-play offer (silent picture is worse than a transcode); a pinned audio track forces a transcode; a ceiling below the source bitrate transcodes even though the codec is fine, and the ladder agrees that rung constrains it; direct play wins over direct stream when both are offered. Plus the ceiling: a per-playback override governs the stream being opened without disturbing the durable default the Settings screen shows, and dropping it returns to that default | DR-225, DR-227 | Done | | UT-214 | The loader comes from the transport, never the URL. hls.js is attached for `hls` when available and the element's own loader when not; progressive and local files load directly; the element's `src` is emptied only when hls.js drives it. The two cases that fail against a substring check, and the reason the field exists: a `progressive` stream whose URL contains `.m3u8` is *not* given an HLS loader, and an `hls` stream whose URL contains no `.m3u8` *is*. Both failed against the pre-DR-225 implementation before the fix landed | DR-224 | Done | | UT-215 | Waiting for the repository rather than racing it: it resolves immediately when the session is already restored, resolves when the session arrives later (the race the player page lost on mount), still rejects when there genuinely is no session, unsubscribes once settled so a later store change cannot re-settle it, and leaves no armed timer to reject an already-resolved promise | DR-013 | Done | +| UT-216 | The native-video opt-in is read from one place and only explicit truthy values enable it: absent, empty, `0`, `no`, `false` and anything unrecognised all mean off, because a half-set variable that half-enabled the renderer would configure mpv for video with nothing drawing it — audio over a black rectangle | DR-231 | Done | ### Integration Tests diff --git a/docs/traceability.md b/docs/traceability.md index 5e4ea104..6253a6f4 100644 --- a/docs/traceability.md +++ b/docs/traceability.md @@ -1,15 +1,15 @@ # Code Traceability Matrix -**Generated:** 8/22/2026, 11:51:14 AM +**Generated:** 8/22/2026, 1:44:18 PM ## Summary -- **Total Files Scanned:** 395 -- **Total TRACES Found:** 1098 +- **Total Files Scanned:** 396 +- **Total TRACES Found:** 1104 - **Requirements Covered:** - User Requirements (UR): 79 - Integration Requirements (IR): 26 - - Development Requirements (DR): 199 + - Development Requirements (DR): 200 - Jellyfin API Requirements (JA): 35 ## Requirements by Type @@ -26,7 +26,7 @@ IR-003, IR-004, IR-006, IR-008, IR-009, IR-010, IR-011, IR-012, IR-013, IR-014, ### 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-042, 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, DR-090, DR-091, DR-092, DR-093, DR-095, DR-096, DR-097, DR-098, DR-099, DR-100, DR-101, DR-102, DR-103, DR-104, DR-105, DR-106, DR-107, DR-108, DR-109, DR-110, DR-111, DR-112, DR-113, DR-114, DR-115, DR-116, DR-117, DR-118, DR-119, DR-120, DR-121, DR-123, DR-126, DR-127, DR-128, DR-129, DR-130, DR-131, DR-132, DR-133, DR-134, DR-135, DR-136, DR-137, DR-140, DR-141, DR-142, DR-143, DR-147, DR-148, DR-149, DR-150, DR-151, DR-152, DR-153, DR-154, DR-155, DR-156, DR-157, DR-158, DR-159, DR-160, DR-162, DR-167, DR-168, DR-169, DR-170, DR-171, DR-173, DR-174, DR-175, DR-176, DR-177, DR-178, DR-179, DR-180, DR-181, DR-182, DR-183, DR-185, DR-186, DR-188, DR-189, DR-193, DR-195, DR-196, DR-197, DR-198, DR-201, DR-203, DR-204, DR-205, DR-206, DR-207, DR-209, DR-210, DR-211, DR-212, DR-213, DR-215, DR-216, DR-217, DR-218, DR-219, DR-220, DR-221, DR-223, DR-224, DR-225, DR-226, DR-227, DR-228, DR-230, DR-231, DR-232, DR-233, DR-234 +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-042, 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, DR-090, DR-091, DR-092, DR-093, DR-095, DR-096, DR-097, DR-098, DR-099, DR-100, DR-101, DR-102, DR-103, DR-104, DR-105, DR-106, DR-107, DR-108, DR-109, DR-110, DR-111, DR-112, DR-113, DR-114, DR-115, DR-116, DR-117, DR-118, DR-119, DR-120, DR-121, DR-123, DR-126, DR-127, DR-128, DR-129, DR-130, DR-131, DR-132, DR-133, DR-134, DR-135, DR-136, DR-137, DR-140, DR-141, DR-142, DR-143, DR-147, DR-148, DR-149, DR-150, DR-151, DR-152, DR-153, DR-154, DR-155, DR-156, DR-157, DR-158, DR-159, DR-160, DR-162, DR-167, DR-168, DR-169, DR-170, DR-171, DR-173, DR-174, DR-175, DR-176, DR-177, DR-178, DR-179, DR-180, DR-181, DR-182, DR-183, DR-185, DR-186, DR-188, DR-189, DR-193, DR-195, DR-196, DR-197, DR-198, DR-201, DR-203, DR-204, DR-205, DR-206, DR-207, DR-209, DR-210, DR-211, DR-212, DR-213, DR-215, DR-216, DR-217, DR-218, DR-219, DR-220, DR-221, DR-223, DR-224, DR-225, DR-226, DR-227, DR-228, DR-230, DR-231, DR-232, DR-233, DR-234, DR-235 ``` ### Jellyfin API Requirements (JA) @@ -65,11 +65,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/android/mod.rs`](../src-tauri/src/player/android/mod.rs#L1425) - **Line:** 1425 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L160) - - **Line:** 160 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L164) + - **Line:** 164 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L182) - - **Line:** 182 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L186) + - **Line:** 186 - **Context:** `Unknown` ### IR-008 @@ -236,14 +236,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L458) - **Line:** 458 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2993) - - **Line:** 2993 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3000) + - **Line:** 3000 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3050) - - **Line:** 3050 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3057) + - **Line:** 3057 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3082) - - **Line:** 3082 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3089) + - **Line:** 3089 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/media.rs`](../src-tauri/src/player/media.rs#L42) - **Line:** 42 @@ -293,20 +293,20 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/settings.rs`](../src-tauri/src/commands/player/settings.rs#L3) - **Line:** 3 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L691) - - **Line:** 691 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L710) + - **Line:** 710 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L711) - - **Line:** 711 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L730) + - **Line:** 730 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L780) - - **Line:** 780 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L799) + - **Line:** 799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L792) - - **Line:** 792 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L811) + - **Line:** 811 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L866) - - **Line:** 866 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L885) + - **Line:** 885 - **Context:** `Unknown` - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L1) - **Line:** 1 @@ -422,8 +422,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L327) - **Line:** 327 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1619) - - **Line:** 1619 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1624) + - **Line:** 1624 - **Context:** `Unknown` ### IR-031 @@ -1176,8 +1176,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/sleep_timer.rs`](../src-tauri/src/player/sleep_timer.rs#L81) - **Line:** 81 - **Context:** `pub fn cancel(&mut self) {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L442) - - **Line:** 442 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L446) + - **Line:** 446 - **Context:** `Unknown` ### DR-030 @@ -1308,20 +1308,20 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/android/mod.rs`](../src-tauri/src/player/android/mod.rs#L617) - **Line:** 617 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L691) - - **Line:** 691 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L710) + - **Line:** 710 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L745) - - **Line:** 745 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L764) + - **Line:** 764 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L811) - - **Line:** 811 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L830) + - **Line:** 830 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L821) - - **Line:** 821 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L840) + - **Line:** 840 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L866) - - **Line:** 866 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L885) + - **Line:** 885 - **Context:** `Unknown` - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L1) - **Line:** 1 @@ -1656,32 +1656,32 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L929) - **Line:** 929 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L275) - - **Line:** 275 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L279) + - **Line:** 279 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L286) - - **Line:** 286 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L290) + - **Line:** 290 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1587) - - **Line:** 1587 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1591) + - **Line:** 1591 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1601) - - **Line:** 1601 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1605) + - **Line:** 1605 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1617) - - **Line:** 1617 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1621) + - **Line:** 1621 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1626) - - **Line:** 1626 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1630) + - **Line:** 1630 - **Context:** `pub fn exit_background_audio(&self) -> f64 {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1633) - - **Line:** 1633 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1637) + - **Line:** 1637 - **Context:** `pub fn is_background_audio_active(&self) -> bool {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1648) - - **Line:** 1648 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1652) + - **Line:** 1652 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1890) - - **Line:** 1890 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1894) + - **Line:** 1894 - **Context:** `Unknown` ### DR-053 @@ -2413,23 +2413,23 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/lib/services/playerEvents.ts`](../src/lib/services/playerEvents.ts#L8) - **Line:** 8 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L286) - - **Line:** 286 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L290) + - **Line:** 290 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L667) - - **Line:** 667 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L671) + - **Line:** 671 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L675) - - **Line:** 675 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L679) + - **Line:** 679 - **Context:** `pub fn is_html5_active(&self) -> bool {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L719) - - **Line:** 719 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L723) + - **Line:** 723 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1601) - - **Line:** 1601 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1605) + - **Line:** 1605 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1617) - - **Line:** 1617 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1621) + - **Line:** 1621 - **Context:** `Unknown` ### DR-098 @@ -2668,8 +2668,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/repository.rs`](../src-tauri/src/commands/repository.rs#L51) - **Line:** 51 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1619) - - **Line:** 1619 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1624) + - **Line:** 1624 - **Context:** `Unknown` ### DR-110 @@ -3020,8 +3020,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L195) - **Line:** 195 - **Context:** `impl OnlineRepository {` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1626) - - **Line:** 1626 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1631) + - **Line:** 1631 - **Context:** `Unknown` ### DR-121 @@ -3060,8 +3060,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L598) - **Line:** 598 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3200) - - **Line:** 3200 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3207) + - **Line:** 3207 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L2463) - **Line:** 2463 @@ -3111,8 +3111,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L792) - **Line:** 792 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3116) - - **Line:** 3116 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3123) + - **Line:** 3123 - **Context:** `Unknown` ### DR-129 @@ -3131,20 +3131,20 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/stream_end.rs`](../src-tauri/src/player/stream_end.rs#L54) - **Line:** 54 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L295) - - **Line:** 295 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L299) + - **Line:** 299 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1705) - - **Line:** 1705 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1709) + - **Line:** 1709 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1738) - - **Line:** 1738 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1742) + - **Line:** 1742 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1795) - - **Line:** 1795 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1799) + - **Line:** 1799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1826) - - **Line:** 1826 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1830) + - **Line:** 1830 - **Context:** `Unknown` ### DR-130 @@ -3163,14 +3163,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/timers.rs`](../src-tauri/src/commands/player/timers.rs#L299) - **Line:** 299 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L597) - - **Line:** 597 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L616) + - **Line:** 616 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L606) - - **Line:** 606 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L625) + - **Line:** 625 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1795) - - **Line:** 1795 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1799) + - **Line:** 1799 - **Context:** `Unknown` ### DR-131 @@ -3222,8 +3222,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L2690) - **Line:** 2690 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1633) - - **Line:** 1633 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1638) + - **Line:** 1638 - **Context:** `Unknown` ### DR-132 @@ -3378,8 +3378,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1126) - **Line:** 1126 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1536) - - **Line:** 1536 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1541) + - **Line:** 1541 - **Context:** `Unknown` ### DR-140 @@ -3664,14 +3664,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, **Locations:** 3 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L888) - - **Line:** 888 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L892) + - **Line:** 892 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4106) - - **Line:** 4106 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4110) + - **Line:** 4110 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4149) - - **Line:** 4149 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4153) + - **Line:** 4153 - **Context:** `Unknown` ### DR-160 @@ -3800,8 +3800,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L716) - **Line:** 716 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1493) - - **Line:** 1493 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1498) + - **Line:** 1498 - **Context:** `Unknown` ### DR-167 @@ -4125,44 +4125,44 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, **Locations:** 13 file(s) -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2108) - - **Line:** 2108 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2115) + - **Line:** 2115 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L319) - - **Line:** 319 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L323) + - **Line:** 323 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L515) - - **Line:** 515 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L519) + - **Line:** 519 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L960) - - **Line:** 960 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L964) + - **Line:** 964 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L975) - - **Line:** 975 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L979) + - **Line:** 979 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L986) - - **Line:** 986 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L990) + - **Line:** 990 - **Context:** `pub fn observed_duration(&self) -> Option {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1024) - - **Line:** 1024 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1028) + - **Line:** 1028 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4186) - - **Line:** 4186 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4190) + - **Line:** 4190 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4205) - - **Line:** 4205 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4209) + - **Line:** 4209 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4222) - - **Line:** 4222 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4226) + - **Line:** 4226 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4237) - - **Line:** 4237 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4241) + - **Line:** 4241 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4251) - - **Line:** 4251 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4255) + - **Line:** 4255 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4300) - - **Line:** 4300 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4304) + - **Line:** 4304 - **Context:** `Unknown` ### DR-179 @@ -4175,44 +4175,44 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/lib/services/playbackReporting.ts`](../src/lib/services/playbackReporting.ts#L76) - **Line:** 76 - **Context:** `* This function is therefore the *local* half only, which is what its ...` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L83) - - **Line:** 83 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L87) + - **Line:** 87 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L135) - - **Line:** 135 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L139) + - **Line:** 139 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L779) - - **Line:** 779 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L783) + - **Line:** 783 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L994) - - **Line:** 994 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L998) + - **Line:** 998 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1003) - - **Line:** 1003 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1007) + - **Line:** 1007 - **Context:** `pub fn set_report_sink(&self, sink: Arc) {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1322) - - **Line:** 1322 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1326) + - **Line:** 1326 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1566) - - **Line:** 1566 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1570) + - **Line:** 1570 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4273) - - **Line:** 4273 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4277) + - **Line:** 4277 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4300) - - **Line:** 4300 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4304) + - **Line:** 4304 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4338) - - **Line:** 4338 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4342) + - **Line:** 4342 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4366) - - **Line:** 4366 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4370) + - **Line:** 4370 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4395) - - **Line:** 4395 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4399) + - **Line:** 4399 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4413) - - **Line:** 4413 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4417) + - **Line:** 4417 - **Context:** `Unknown` ### DR-180 @@ -4225,17 +4225,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L516) - **Line:** 516 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3164) - - **Line:** 3164 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3171) + - **Line:** 3171 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3184) - - **Line:** 3184 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3191) + - **Line:** 3191 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L893) - - **Line:** 893 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L897) + - **Line:** 897 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4043) - - **Line:** 4043 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4047) + - **Line:** 4047 - **Context:** `Unknown` ### DR-181 @@ -4352,11 +4352,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, **Locations:** 2 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L552) - - **Line:** 552 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L556) + - **Line:** 556 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L3271) - - **Line:** 3271 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L3275) + - **Line:** 3275 - **Context:** `Unknown` ### DR-195 @@ -4638,8 +4638,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L357) - **Line:** 357 - **Context:** `impl LibrarySettings {` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1505) - - **Line:** 1505 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1510) + - **Line:** 1510 - **Context:** `Unknown` ### DR-210 @@ -4716,8 +4716,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1868) - **Line:** 1868 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2949) - - **Line:** 2949 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2956) + - **Line:** 2956 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L1253) - **Line:** 1253 @@ -4778,8 +4778,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/routes/settings/+page.svelte`](../src/routes/settings/+page.svelte#L1299) - **Line:** 1299 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1287) - - **Line:** 1287 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1237) + - **Line:** 1237 - **Context:** `Unknown` ### DR-218 @@ -4831,8 +4831,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1186) - **Line:** 1186 - **Context:** `pub fn run() {` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1279) - - **Line:** 1279 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1229) + - **Line:** 1229 - **Context:** `Unknown` ### DR-219 @@ -4881,8 +4881,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L625) - **Line:** 625 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1349) - - **Line:** 1349 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1299) + - **Line:** 1299 - **Context:** `Unknown` ### DR-224 @@ -5091,8 +5091,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1743) - **Line:** 1743 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2456) - - **Line:** 2456 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2463) + - **Line:** 2463 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/stream_selection.rs`](../src-tauri/src/repository/stream_selection.rs#L88) - **Line:** 88 @@ -5322,7 +5322,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, ### DR-231 -**Locations:** 8 file(s) +**Locations:** 12 file(s) - **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L104) - **Line:** 104 @@ -5330,6 +5330,9 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L110) - **Line:** 110 - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L177) + - **Line:** 177 + - **Context:** `Unknown` - **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L11) - **Line:** 11 - **Context:** `Unknown` @@ -5345,8 +5348,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L124) - **Line:** 124 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1239) - - **Line:** 1239 +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L15) + - **Line:** 15 + - **Context:** `! It is a function rather than three `env::var` checks for the reason ...` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L29) + - **Line:** 29 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L51) + - **Line:** 51 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1383) + - **Line:** 1383 - **Context:** `Unknown` ### DR-232 @@ -5412,6 +5424,26 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 873 - **Context:** `Unknown` +### DR-235 + +**Locations:** 5 file(s) + +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2089) + - **Line:** 2089 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2103) + - **Line:** 2103 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L177) + - **Line:** 177 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L15) + - **Line:** 15 + - **Context:** `! It is a function rather than three `env::var` checks for the reason ...` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L29) + - **Line:** 29 + - **Context:** `Unknown` + ### JA-001 **Locations:** 1 file(s) @@ -5505,8 +5537,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L235) - **Line:** 235 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3082) - - **Line:** 3082 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3089) + - **Line:** 3089 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/media.rs`](../src-tauri/src/player/media.rs#L42) - **Line:** 42 @@ -5969,8 +6001,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/storage/schema.rs`](../src-tauri/src/storage/schema.rs#L3) - **Line:** 3 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1633) - - **Line:** 1633 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1638) + - **Line:** 1638 - **Context:** `Unknown` ### UR-003 @@ -6121,11 +6153,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **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#L552) - - **Line:** 552 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L556) + - **Line:** 556 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L3271) - - **Line:** 3271 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L3275) + - **Line:** 3275 - **Context:** `Unknown` ### UR-004 @@ -6279,14 +6311,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **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#L1705) - - **Line:** 1705 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1709) + - **Line:** 1709 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1795) - - **Line:** 1795 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1799) + - **Line:** 1799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1826) - - **Line:** 1826 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1830) + - **Line:** 1830 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L29) - **Line:** 29 @@ -6575,8 +6607,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2080) - **Line:** 2080 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2108) - - **Line:** 2108 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2115) + - **Line:** 2115 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/events.rs`](../src-tauri/src/player/events.rs#L6) - **Line:** 6 @@ -6584,11 +6616,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/events.rs`](../src-tauri/src/player/events.rs#L23) - **Line:** 23 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L597) - - **Line:** 597 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L616) + - **Line:** 616 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L606) - - **Line:** 606 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L625) + - **Line:** 625 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/webview_audio_backend.rs`](../src-tauri/src/player/webview_audio_backend.rs#L25) - **Line:** 25 @@ -6629,71 +6661,71 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **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#L319) - - **Line:** 319 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L323) + - **Line:** 323 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L515) - - **Line:** 515 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L519) + - **Line:** 519 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L552) - - **Line:** 552 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L556) + - **Line:** 556 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L667) - - **Line:** 667 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L671) + - **Line:** 671 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L675) - - **Line:** 675 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L679) + - **Line:** 679 - **Context:** `pub fn is_html5_active(&self) -> bool {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L719) - - **Line:** 719 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L723) + - **Line:** 723 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L779) - - **Line:** 779 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L783) + - **Line:** 783 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L888) - - **Line:** 888 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L892) + - **Line:** 892 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L960) - - **Line:** 960 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L964) + - **Line:** 964 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L975) - - **Line:** 975 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L979) + - **Line:** 979 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L986) - - **Line:** 986 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L990) + - **Line:** 990 - **Context:** `pub fn observed_duration(&self) -> Option {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1024) - - **Line:** 1024 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1028) + - **Line:** 1028 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1322) - - **Line:** 1322 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1326) + - **Line:** 1326 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1601) - - **Line:** 1601 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1605) + - **Line:** 1605 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1617) - - **Line:** 1617 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1621) + - **Line:** 1621 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L3271) - - **Line:** 3271 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L3275) + - **Line:** 3275 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4106) - - **Line:** 4106 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4110) + - **Line:** 4110 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4149) - - **Line:** 4149 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4153) + - **Line:** 4153 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4222) - - **Line:** 4222 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4226) + - **Line:** 4226 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4237) - - **Line:** 4237 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4241) + - **Line:** 4241 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4395) - - **Line:** 4395 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4399) + - **Line:** 4399 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4413) - - **Line:** 4413 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4417) + - **Line:** 4417 - **Context:** `Unknown` ### UR-007 @@ -7090,14 +7122,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1827) - **Line:** 1827 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2993) - - **Line:** 2993 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3000) + - **Line:** 3000 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3050) - - **Line:** 3050 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3057) + - **Line:** 3057 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3082) - - **Line:** 3082 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3089) + - **Line:** 3089 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/backend.rs`](../src-tauri/src/player/backend.rs#L119) - **Line:** 119 @@ -7403,11 +7435,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L929) - **Line:** 929 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3164) - - **Line:** 3164 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3171) + - **Line:** 3171 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3184) - - **Line:** 3184 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3191) + - **Line:** 3191 - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/repository.rs`](../src-tauri/src/commands/repository.rs#L640) - **Line:** 640 @@ -7445,80 +7477,80 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/stream_end.rs`](../src-tauri/src/player/stream_end.rs#L91) - **Line:** 91 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L135) - - **Line:** 135 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L139) + - **Line:** 139 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L275) - - **Line:** 275 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L279) + - **Line:** 279 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L286) - - **Line:** 286 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L290) + - **Line:** 290 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L295) - - **Line:** 295 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L299) + - **Line:** 299 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L888) - - **Line:** 888 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L892) + - **Line:** 892 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L960) - - **Line:** 960 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L964) + - **Line:** 964 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1566) - - **Line:** 1566 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1570) + - **Line:** 1570 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1587) - - **Line:** 1587 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1591) + - **Line:** 1591 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1601) - - **Line:** 1601 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1605) + - **Line:** 1605 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1617) - - **Line:** 1617 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1621) + - **Line:** 1621 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1626) - - **Line:** 1626 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1630) + - **Line:** 1630 - **Context:** `pub fn exit_background_audio(&self) -> f64 {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1633) - - **Line:** 1633 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1637) + - **Line:** 1637 - **Context:** `pub fn is_background_audio_active(&self) -> bool {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1648) - - **Line:** 1648 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1652) + - **Line:** 1652 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1705) - - **Line:** 1705 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1709) + - **Line:** 1709 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1738) - - **Line:** 1738 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1742) + - **Line:** 1742 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1795) - - **Line:** 1795 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1799) + - **Line:** 1799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1826) - - **Line:** 1826 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1830) + - **Line:** 1830 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1890) - - **Line:** 1890 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1894) + - **Line:** 1894 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4043) - - **Line:** 4043 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4047) + - **Line:** 4047 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4106) - - **Line:** 4106 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4110) + - **Line:** 4110 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4186) - - **Line:** 4186 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4190) + - **Line:** 4190 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4205) - - **Line:** 4205 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4209) + - **Line:** 4209 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4251) - - **Line:** 4251 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4255) + - **Line:** 4255 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4338) - - **Line:** 4338 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4342) + - **Line:** 4342 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4366) - - **Line:** 4366 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4370) + - **Line:** 4370 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/hybrid.rs`](../src-tauri/src/repository/hybrid.rs#L121) - **Line:** 121 @@ -7598,6 +7630,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 2 - **Context:** `Unknown` +### UT-012 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/sleep_timer.rs`](../src-tauri/src/player/sleep_timer.rs#L81) + - **Line:** 81 + - **Context:** `pub fn cancel(&mut self) {` + ### UT-014 **Locations:** 2 file(s) @@ -7754,7 +7794,23 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 251 - **Context:** `Unknown` -### UT-032 +### UT-029 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](../src-tauri/src/player/backend.rs#L251) + - **Line:** 251 + - **Context:** `Unknown` + +### UT-030 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/player/backend.rs`](../src-tauri/src/player/backend.rs#L251) + - **Line:** 251 + - **Context:** `Unknown` + +### UT-031 **Locations:** 1 file(s) @@ -7927,14 +7983,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **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#L442) - - **Line:** 442 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L446) + - **Line:** 446 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1648) - - **Line:** 1648 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1652) + - **Line:** 1652 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1890) - - **Line:** 1890 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1894) + - **Line:** 1894 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L1306) - **Line:** 1306 @@ -8085,50 +8141,50 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/repository.rs`](../src-tauri/src/commands/repository.rs#L764) - **Line:** 764 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L83) - - **Line:** 83 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L87) + - **Line:** 87 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L135) - - **Line:** 135 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L139) + - **Line:** 139 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L319) - - **Line:** 319 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L323) + - **Line:** 323 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L779) - - **Line:** 779 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L783) + - **Line:** 783 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L960) - - **Line:** 960 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L964) + - **Line:** 964 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L994) - - **Line:** 994 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L998) + - **Line:** 998 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1003) - - **Line:** 1003 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1007) + - **Line:** 1007 - **Context:** `pub fn set_report_sink(&self, sink: Arc) {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1322) - - **Line:** 1322 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1326) + - **Line:** 1326 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1566) - - **Line:** 1566 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1570) + - **Line:** 1570 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4222) - - **Line:** 4222 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4226) + - **Line:** 4226 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4273) - - **Line:** 4273 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4277) + - **Line:** 4277 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4300) - - **Line:** 4300 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4304) + - **Line:** 4304 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4338) - - **Line:** 4338 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4342) + - **Line:** 4342 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4366) - - **Line:** 4366 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4370) + - **Line:** 4370 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4395) - - **Line:** 4395 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4399) + - **Line:** 4399 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L688) - **Line:** 688 @@ -8154,8 +8210,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/storage/mod.rs`](../src-tauri/src/storage/mod.rs#L157) - **Line:** 157 - **Context:** `pub fn file_size(&self) -> Option {` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1633) - - **Line:** 1633 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1638) + - **Line:** 1638 - **Context:** `Unknown` ### UR-026 @@ -8216,8 +8272,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **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#L442) - - **Line:** 442 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L446) + - **Line:** 446 - **Context:** `Unknown` ### UR-027 @@ -8245,20 +8301,20 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/android/mod.rs`](../src-tauri/src/player/android/mod.rs#L617) - **Line:** 617 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L691) - - **Line:** 691 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L710) + - **Line:** 710 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L711) - - **Line:** 711 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L730) + - **Line:** 730 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L780) - - **Line:** 780 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L799) + - **Line:** 799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L792) - - **Line:** 792 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L811) + - **Line:** 811 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L866) - - **Line:** 866 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L885) + - **Line:** 885 - **Context:** `Unknown` - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L1) - **Line:** 1 @@ -8806,6 +8862,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 4 - **Context:** `Unknown` +### UT-067 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3026) + - **Line:** 3026 + - **Context:** `Unknown` + ### UT-072 **Locations:** 1 file(s) @@ -8898,16 +8962,16 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, **Locations:** 1 file(s) -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L780) - - **Line:** 780 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L799) + - **Line:** 799 - **Context:** `Unknown` ### UT-084 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L792) - - **Line:** 792 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L811) + - **Line:** 811 - **Context:** `Unknown` ### UT-085 @@ -8917,8 +8981,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/lib/components/player/tapGestures.ts`](../src/lib/components/player/tapGestures.ts#L21) - **Line:** 21 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L811) - - **Line:** 811 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L830) + - **Line:** 830 - **Context:** `Unknown` ### UT-087 @@ -8928,8 +8992,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/lib/components/player/tapGestures.ts`](../src/lib/components/player/tapGestures.ts#L21) - **Line:** 21 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L866) - - **Line:** 866 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L885) + - **Line:** 885 - **Context:** `Unknown` ### UT-089 @@ -8996,6 +9060,34 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 3869 - **Context:** `Unknown` +### UT-101 + +**Locations:** 4 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L2014) + - **Line:** 2014 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4370) + - **Line:** 4370 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4405) + - **Line:** 4405 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/mod.rs`](../src-tauri/src/repository/mod.rs#L238) + - **Line:** 238 + - **Context:** `Unknown` + +### UT-102 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L688) + - **Line:** 688 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4605) + - **Line:** 4605 + - **Context:** `Unknown` + ### UT-103 **Locations:** 6 file(s) @@ -9162,8 +9254,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/lib/api/bindings.ts`](../src/lib/api/bindings.ts#L3453) - **Line:** 3453 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3082) - - **Line:** 3082 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3089) + - **Line:** 3089 - **Context:** `Unknown` - **File:** [`src-tauri/src/player/media.rs`](../src-tauri/src/player/media.rs#L42) - **Line:** 42 @@ -9862,8 +9954,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1186) - **Line:** 1186 - **Context:** `pub fn run() {` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1279) - - **Line:** 1279 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1229) + - **Line:** 1229 - **Context:** `Unknown` ### UR-079 @@ -10008,8 +10100,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1731) - **Line:** 1731 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2456) - - **Line:** 2456 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2463) + - **Line:** 2463 - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/storage/mod.rs`](../src-tauri/src/commands/storage/mod.rs#L117) - **Line:** 117 @@ -10192,8 +10284,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/lib/components/player/tapGestures.ts`](../src/lib/components/player/tapGestures.ts#L21) - **Line:** 21 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L821) - - **Line:** 821 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L840) + - **Line:** 840 - **Context:** `Unknown` ### UT-088 @@ -10296,6 +10388,39 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 3362 - **Context:** `Unknown` +### UT-112 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L501) + - **Line:** 501 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3253) + - **Line:** 3253 + - **Context:** `Unknown` + +### UT-113 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L276) + - **Line:** 276 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3144) + - **Line:** 3144 + - **Context:** `Unknown` + +### UT-114 + +**Locations:** 2 file(s) + +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L333) + - **Line:** 333 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3087) + - **Line:** 3087 + - **Context:** `Unknown` + ### UT-116 **Locations:** 4 file(s) @@ -10309,8 +10434,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L598) - **Line:** 598 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3200) - - **Line:** 3200 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3207) + - **Line:** 3207 - **Context:** `Unknown` ### UT-117 @@ -10329,17 +10454,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/stream_end.rs`](../src-tauri/src/player/stream_end.rs#L54) - **Line:** 54 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1705) - - **Line:** 1705 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1709) + - **Line:** 1709 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1738) - - **Line:** 1738 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1742) + - **Line:** 1742 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1795) - - **Line:** 1795 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1799) + - **Line:** 1799 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1826) - - **Line:** 1826 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1830) + - **Line:** 1830 - **Context:** `Unknown` ### UT-119 @@ -10349,8 +10474,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L475) - **Line:** 475 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3116) - - **Line:** 3116 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3123) + - **Line:** 3123 - **Context:** `Unknown` ### UT-120 @@ -10364,17 +10489,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 428 - **Context:** `Unknown` -### UT-121 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L597) - - **Line:** 597 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L606) - - **Line:** 606 - - **Context:** `Unknown` - ### UT-122 **Locations:** 11 file(s) @@ -10546,11 +10660,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L458) - **Line:** 458 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2993) - - **Line:** 2993 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3000) + - **Line:** 3000 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3050) - - **Line:** 3050 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3057) + - **Line:** 3057 - **Context:** `Unknown` ### UT-147 @@ -10636,6 +10750,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 336 - **Context:** `Unknown` +### UT-164 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/download/worker.rs`](../src-tauri/src/download/worker.rs#L313) + - **Line:** 313 + - **Context:** `Unknown` + ### UT-167 **Locations:** 1 file(s) @@ -10775,17 +10897,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L516) - **Line:** 516 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3164) - - **Line:** 3164 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3171) + - **Line:** 3171 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3184) - - **Line:** 3184 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3191) + - **Line:** 3191 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L893) - - **Line:** 893 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L897) + - **Line:** 897 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4043) - - **Line:** 4043 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4047) + - **Line:** 4047 - **Context:** `Unknown` ### UT-183 @@ -11197,17 +11319,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L792) - **Line:** 792 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3116) - - **Line:** 3116 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3123) + - **Line:** 3123 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3164) - - **Line:** 3164 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3171) + - **Line:** 3171 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3184) - - **Line:** 3184 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3191) + - **Line:** 3191 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3200) - - **Line:** 3200 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L3207) + - **Line:** 3207 - **Context:** `Unknown` - **File:** [`src-tauri/src/commands/storage/mod.rs`](../src-tauri/src/commands/storage/mod.rs#L93) - **Line:** 93 @@ -11272,11 +11394,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/media_server.rs`](../src-tauri/src/media_server.rs#L567) - **Line:** 567 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L893) - - **Line:** 893 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L897) + - **Line:** 897 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4043) - - **Line:** 4043 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4047) + - **Line:** 4047 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/mod.rs`](../src-tauri/src/repository/mod.rs#L215) - **Line:** 215 @@ -11320,8 +11442,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1126) - **Line:** 1126 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1536) - - **Line:** 1536 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1541) + - **Line:** 1541 - **Context:** `Unknown` - **File:** [`scripts/tauri-security-config.test.ts`](../scripts/tauri-security-config.test.ts#L11) - **Line:** 11 @@ -11447,8 +11569,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1743) - **Line:** 1743 - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2456) - - **Line:** 2456 +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2463) + - **Line:** 2463 - **Context:** `Unknown` - **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L30) - **Line:** 30 @@ -11549,8 +11671,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L716) - **Line:** 716 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1493) - - **Line:** 1493 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1498) + - **Line:** 1498 - **Context:** `Unknown` ### UT-170 @@ -11715,8 +11837,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L357) - **Line:** 357 - **Context:** `impl LibrarySettings {` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1505) - - **Line:** 1505 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1510) + - **Line:** 1510 - **Context:** `Unknown` ### UT-185 @@ -11880,8 +12002,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1126) - **Line:** 1126 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1349) - - **Line:** 1349 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1299) + - **Line:** 1299 - **Context:** `Unknown` - **File:** [`scripts/tauri-security-config.test.ts`](../scripts/tauri-security-config.test.ts#L11) - **Line:** 11 @@ -11982,11 +12104,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/seek.rs`](../src-tauri/src/player/seek.rs#L135) - **Line:** 135 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L160) - - **Line:** 160 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L164) + - **Line:** 164 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L182) - - **Line:** 182 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L186) + - **Line:** 186 - **Context:** `Unknown` - **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L477) - **Line:** 477 @@ -12058,20 +12180,20 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/player/android/mod.rs`](../src-tauri/src/player/android/mod.rs#L617) - **Line:** 617 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L691) - - **Line:** 691 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L710) + - **Line:** 710 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L745) - - **Line:** 745 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L764) + - **Line:** 764 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L811) - - **Line:** 811 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L830) + - **Line:** 830 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L821) - - **Line:** 821 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L840) + - **Line:** 840 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L866) - - **Line:** 866 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L885) + - **Line:** 885 - **Context:** `Unknown` - **File:** [`src-tauri/src/settings.rs`](../src-tauri/src/settings.rs#L1) - **Line:** 1 @@ -12239,8 +12361,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/storage/schema.rs`](../src-tauri/src/storage/schema.rs#L769) - **Line:** 769 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1619) - - **Line:** 1619 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1624) + - **Line:** 1624 - **Context:** `Unknown` ### UR-069 @@ -12316,8 +12438,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L4087) - **Line:** 4087 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1626) - - **Line:** 1626 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1631) + - **Line:** 1631 - **Context:** `Unknown` ### UR-072 @@ -12341,170 +12463,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **File:** [`src/routes/settings/+page.svelte`](../src/routes/settings/+page.svelte#L1299) - **Line:** 1299 - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1287) - - **Line:** 1287 +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1237) + - **Line:** 1237 - **Context:** `Unknown` -### UT-115 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L281) - - **Line:** 281 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L764) - - **Line:** 764 - - **Context:** `Unknown` - -### UT-126 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L490) - - **Line:** 490 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L1090) - - **Line:** 1090 - - **Context:** `Unknown` - -### UT-206 - -**Locations:** 9 file(s) - -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1849) - - **Line:** 1849 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1868) - - **Line:** 1868 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2949) - - **Line:** 2949 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L1253) - - **Line:** 1253 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4500) - - **Line:** 4500 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4553) - - **Line:** 4553 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L1210) - - **Line:** 1210 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L3930) - - **Line:** 3930 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L3966) - - **Line:** 3966 - - **Context:** `Unknown` - -### UR-047 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/commands/storage/mod.rs`](../src-tauri/src/commands/storage/mod.rs#L3) - - **Line:** 3 - - **Context:** `Unknown` - -### UT-164 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/download/worker.rs`](../src-tauri/src/download/worker.rs#L313) - - **Line:** 313 - - **Context:** `Unknown` - -### UR-080 - -**Locations:** 20 file(s) - -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L104) - - **Line:** 104 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L110) - - **Line:** 110 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L11) - - **Line:** 11 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L60) - - **Line:** 60 - - **Context:** `/ holding a lazily-resolving function pointer. So the address `dlsym` ...` -- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L160) - - **Line:** 160 - - **Context:** `impl MpvRenderContext {` -- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L217) - - **Line:** 217 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L229) - - **Line:** 229 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L273) - - **Line:** 273 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L29) - - **Line:** 29 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L98) - - **Line:** 98 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L124) - - **Line:** 124 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L198) - - **Line:** 198 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L218) - - **Line:** 218 - - **Context:** `pub fn video_audio_codecs(detected: &str) -> String {` -- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L261) - - **Line:** 261 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L307) - - **Line:** 307 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L351) - - **Line:** 351 - - **Context:** `pub fn audio_forces_transcode(streams: &[(Option<&str>, bool)]) -> boo...` -- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L630) - - **Line:** 630 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L791) - - **Line:** 791 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L873) - - **Line:** 873 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1239) - - **Line:** 1239 - - **Context:** `Unknown` - -### UT-012 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/sleep_timer.rs`](../src-tauri/src/player/sleep_timer.rs#L81) - - **Line:** 81 - - **Context:** `pub fn cancel(&mut self) {` - -### UT-029 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](../src-tauri/src/player/backend.rs#L251) - - **Line:** 251 - - **Context:** `Unknown` - -### UT-030 - -**Locations:** 1 file(s) - -- **File:** [`src-tauri/src/player/backend.rs`](../src-tauri/src/player/backend.rs#L251) - - **Line:** 251 - - **Context:** `Unknown` - -### UT-031 +### UT-032 **Locations:** 1 file(s) @@ -12520,34 +12483,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 251 - **Context:** `Unknown` -### UT-101 - -**Locations:** 4 file(s) - -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L2014) - - **Line:** 2014 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4370) - - **Line:** 4370 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4405) - - **Line:** 4405 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/mod.rs`](../src-tauri/src/repository/mod.rs#L238) - - **Line:** 238 - - **Context:** `Unknown` - -### UT-102 - -**Locations:** 2 file(s) - -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L688) - - **Line:** 688 - - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4605) - - **Line:** 4605 - - **Context:** `Unknown` - ### UT-111 **Locations:** 3 file(s) @@ -12562,37 +12497,37 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 2588 - **Context:** `Unknown` -### UT-112 +### UT-115 **Locations:** 2 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L501) - - **Line:** 501 +- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L281) + - **Line:** 281 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3253) - - **Line:** 3253 +- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L764) + - **Line:** 764 - **Context:** `Unknown` -### UT-113 +### UT-121 **Locations:** 2 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L276) - - **Line:** 276 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L616) + - **Line:** 616 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3144) - - **Line:** 3144 +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L625) + - **Line:** 625 - **Context:** `Unknown` -### UT-114 +### UT-126 **Locations:** 2 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L333) - - **Line:** 333 +- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L490) + - **Line:** 490 - **Context:** `Unknown` -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3087) - - **Line:** 3087 +- **File:** [`src-tauri/src/commands/catalog.rs`](../src-tauri/src/commands/catalog.rs#L1090) + - **Line:** 1090 - **Context:** `Unknown` ### UT-130 @@ -12671,14 +12606,14 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, **Locations:** 3 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L888) - - **Line:** 888 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L892) + - **Line:** 892 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4106) - - **Line:** 4106 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4110) + - **Line:** 4110 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4149) - - **Line:** 4149 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4153) + - **Line:** 4153 - **Context:** `Unknown` ### UT-156 @@ -12787,82 +12722,82 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, **Locations:** 3 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L960) - - **Line:** 960 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L964) + - **Line:** 964 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4186) - - **Line:** 4186 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4190) + - **Line:** 4190 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4205) - - **Line:** 4205 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4209) + - **Line:** 4209 - **Context:** `Unknown` ### UT-177 **Locations:** 6 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L960) - - **Line:** 960 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L964) + - **Line:** 964 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L975) - - **Line:** 975 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L979) + - **Line:** 979 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L986) - - **Line:** 986 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L990) + - **Line:** 990 - **Context:** `pub fn observed_duration(&self) -> Option {` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4222) - - **Line:** 4222 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4226) + - **Line:** 4226 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4237) - - **Line:** 4237 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4241) + - **Line:** 4241 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4251) - - **Line:** 4251 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4255) + - **Line:** 4255 - **Context:** `Unknown` ### UT-178 **Locations:** 3 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L779) - - **Line:** 779 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L783) + - **Line:** 783 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4273) - - **Line:** 4273 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4277) + - **Line:** 4277 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4300) - - **Line:** 4300 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4304) + - **Line:** 4304 - **Context:** `Unknown` ### UT-179 **Locations:** 4 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L135) - - **Line:** 135 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L139) + - **Line:** 139 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1566) - - **Line:** 1566 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1570) + - **Line:** 1570 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4338) - - **Line:** 4338 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4342) + - **Line:** 4342 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4366) - - **Line:** 4366 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4370) + - **Line:** 4370 - **Context:** `Unknown` ### UT-180 **Locations:** 3 file(s) -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1322) - - **Line:** 1322 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L1326) + - **Line:** 1326 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4395) - - **Line:** 4395 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4399) + - **Line:** 4399 - **Context:** `Unknown` -- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4413) - - **Line:** 4413 +- **File:** [`src-tauri/src/player/mod.rs`](../src-tauri/src/player/mod.rs#L4417) + - **Line:** 4417 - **Context:** `Unknown` ### UT-190 @@ -12986,6 +12921,129 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 766 - **Context:** `Unknown` +### UT-206 + +**Locations:** 9 file(s) + +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1849) + - **Line:** 1849 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L1868) + - **Line:** 1868 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2956) + - **Line:** 2956 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L1253) + - **Line:** 1253 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4500) + - **Line:** 4500 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L4553) + - **Line:** 4553 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L1210) + - **Line:** 1210 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L3930) + - **Line:** 3930 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L3966) + - **Line:** 3966 + - **Context:** `Unknown` + +### UR-047 + +**Locations:** 1 file(s) + +- **File:** [`src-tauri/src/commands/storage/mod.rs`](../src-tauri/src/commands/storage/mod.rs#L3) + - **Line:** 3 + - **Context:** `Unknown` + +### UR-080 + +**Locations:** 26 file(s) + +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2089) + - **Line:** 2089 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/commands/player/mod.rs`](../src-tauri/src/commands/player/mod.rs#L2103) + - **Line:** 2103 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L104) + - **Line:** 104 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L110) + - **Line:** 110 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_backend.rs`](../src-tauri/src/player/mpv_backend.rs#L177) + - **Line:** 177 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L11) + - **Line:** 11 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L60) + - **Line:** 60 + - **Context:** `/ holding a lazily-resolving function pointer. So the address `dlsym` ...` +- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L160) + - **Line:** 160 + - **Context:** `impl MpvRenderContext {` +- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L217) + - **Line:** 217 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L229) + - **Line:** 229 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/mpv_render.rs`](../src-tauri/src/player/mpv_render.rs#L273) + - **Line:** 273 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L29) + - **Line:** 29 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L98) + - **Line:** 98 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L124) + - **Line:** 124 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/video_surface.rs`](../src-tauri/src/player/video_surface.rs#L198) + - **Line:** 198 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L15) + - **Line:** 15 + - **Context:** `! It is a function rather than three `env::var` checks for the reason ...` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L29) + - **Line:** 29 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L51) + - **Line:** 51 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L218) + - **Line:** 218 + - **Context:** `pub fn video_audio_codecs(detected: &str) -> String {` +- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L261) + - **Line:** 261 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L307) + - **Line:** 307 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/device_profile.rs`](../src-tauri/src/repository/device_profile.rs#L351) + - **Line:** 351 + - **Context:** `pub fn audio_forces_transcode(streams: &[(Option<&str>, bool)]) -> boo...` +- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L630) + - **Line:** 630 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L791) + - **Line:** 791 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/repository/online.rs`](../src-tauri/src/repository/online.rs#L873) + - **Line:** 873 + - **Context:** `Unknown` +- **File:** [`src-tauri/src/lib.rs`](../src-tauri/src/lib.rs#L1383) + - **Line:** 1383 + - **Context:** `Unknown` + ### UT-210 **Locations:** 1 file(s) @@ -13016,12 +13074,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-006, JA-007, JA-008, JA-009, JA-010, - **Line:** 257 - **Context:** `Unknown` -### UT-067 +### UT-216 **Locations:** 1 file(s) -- **File:** [`src-tauri/src/repository/offline.rs`](../src-tauri/src/repository/offline.rs#L3026) - - **Line:** 3026 +- **File:** [`src-tauri/src/player/native_video.rs`](../src-tauri/src/player/native_video.rs#L51) + - **Line:** 51 - **Context:** `Unknown` diff --git a/src-tauri/src/commands/player/mod.rs b/src-tauri/src/commands/player/mod.rs index 77358499..2bb478f2 100644 --- a/src-tauri/src/commands/player/mod.rs +++ b/src-tauri/src/commands/player/mod.rs @@ -2086,7 +2086,9 @@ pub async fn player_get_capabilities() -> Result { Ok(PlaybackCapabilities { uses_webview_audio: !native_audio, - supports_native_video: cfg!(target_os = "android"), + // TRACES: UR-080 | DR-235 + supports_native_video: cfg!(target_os = "android") + || crate::player::native_video::enabled(), }) } @@ -2095,6 +2097,11 @@ pub(super) fn get_player_status(controller: &PlayerController) -> PlayerStatus { let (backend, use_html5_element) = if cfg!(target_os = "android") { // Android uses ExoPlayer native backend (VideoBackend::Native, false) + } else if crate::player::native_video::enabled() { + // mpv draws the picture on this desktop; the frontend must not also + // load it into a