jellytau/docs/TRACEABILITY.md
Duncan Tourolle 3a9c126dfe
Some checks failed
🏗️ Build and Test JellyTau / Run Tests (push) Failing after 14s
🏗️ Build and Test JellyTau / Build Android APK (push) Has been skipped
Traceability Validation / Check Requirement Traces (push) Failing after 1s
Fix warnings and update tracability
2026-02-28 20:54:25 +01:00

2047 lines
66 KiB
Markdown

# Code Traceability Matrix
**Generated:** 2/28/2026, 8:39:19 PM
## Summary
- **Total Files Scanned:** 208
- **Total TRACES Found:** 117
- **Requirements Covered:**
- User Requirements (UR): 32
- Integration Requirements (IR): 8
- Development Requirements (DR): 40
- Jellyfin API Requirements (JA): 19
## Requirements by Type
### User Requirements (UR)
```
UR-002, UR-003, UR-004, UR-005, UR-007, UR-008, UR-009, UR-010, UR-011, UR-012, UR-013, UR-015, UR-016, UR-017, UR-018, UR-019, UR-020, UR-021, UR-023, UR-024, UR-025, UR-026, UR-028, UR-029, UR-030, UR-031, UR-032, UR-033, UR-034, UR-035, UR-036, UR-039
```
### Integration Requirements (IR)
```
IR-003, IR-004, 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-023, DR-024, DR-026, DR-027, DR-028, DR-029, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-044, DR-045, DR-047, DR-048, DR-050
```
### Jellyfin API Requirements (JA)
```
JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-017, JA-021, JA-022, JA-023, JA-024, JA-025, JA-026, JA-029, JA-030, JA-031
```
## Detailed Mapping
### IR-003
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L39)
- **Line:** 39
- **Context:** `pub fn playback_failed<S: Into<String>>(message: S) -> Self {`
- **File:** [`src-tauri/src/player/mpv_backend_test.rs`](src-tauri/src/player/mpv_backend_test.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
### IR-004
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L39)
- **Line:** 39
- **Context:** `pub fn playback_failed<S: Into<String>>(message: S) -> Self {`
### IR-009
**Locations:** 5 file(s)
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L269)
- **Line:** 269
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L296)
- **Line:** 296
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.test.ts`](src/lib/stores/auth.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### IR-010
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### IR-011
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### IR-012
**Locations:** 1 file(s)
- **File:** [`src/lib/stores/playbackMode.ts`](src/lib/stores/playbackMode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
### IR-013
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/storage/schema.rs`](src-tauri/src/storage/schema.rs#L3)
- **Line:** 3
- **Context:** `Unknown`
### IR-014
**Locations:** 5 file(s)
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L296)
- **Line:** 296
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L466)
- **Line:** 466
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.test.ts`](src/lib/stores/auth.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/credentials.rs`](src-tauri/src/credentials.rs#L10)
- **Line:** 10
- **Context:** `Unknown`
### DR-001
**Locations:** 11 file(s)
- **File:** [`src/lib/stores/player.ts`](src/lib/stores/player.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/stores/player.ts`](src/lib/stores/player.ts#L29)
- **Line:** 29
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L170)
- **Line:** 170
- **Context:** `function handlePositionUpdate(position: number, duration: number): voi...`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/state.rs`](src-tauri/src/player/state.rs#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/state.rs`](src-tauri/src/player/state.rs#L25)
- **Line:** 25
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-002
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L42)
- **Line:** 42
- **Context:** `Unknown`
### DR-003
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L116)
- **Line:** 116
- **Context:** `pub enum MediaType {`
### DR-004
**Locations:** 3 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L39)
- **Line:** 39
- **Context:** `pub fn playback_failed<S: Into<String>>(message: S) -> Self {`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L241)
- **Line:** 241
- **Context:** `Unknown`
### DR-005
**Locations:** 11 file(s)
- **File:** [`src/lib/stores/appState.ts`](src/lib/stores/appState.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.test.ts`](src/lib/stores/queue.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L106)
- **Line:** 106
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L111)
- **Line:** 111
- **Context:** `async function next() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L116)
- **Line:** 116
- **Context:** `async function previous() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L121)
- **Line:** 121
- **Context:** `async function skipTo(index: number) {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L126)
- **Line:** 126
- **Context:** `async function toggleShuffle() {`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L20)
- **Line:** 20
- **Context:** `pub enum RepeatMode {`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L508)
- **Line:** 508
- **Context:** `pub enum AddPosition {`
### DR-006
**Locations:** 2 file(s)
- **File:** [`src/lib/services/preload.ts`](src/lib/services/preload.ts#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.test.ts`](src/lib/services/preload.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
### DR-007
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/GenericMediaListPage.svelte`](src/lib/components/library/GenericMediaListPage.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-009
**Locations:** 5 file(s)
- **File:** [`src/lib/components/player/AudioPlayer.svelte`](src/lib/components/player/AudioPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/MiniPlayer.svelte`](src/lib/components/player/MiniPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/Controls.svelte`](src/lib/components/player/Controls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/appState.ts`](src/lib/stores/appState.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/player.ts`](src/lib/stores/player.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
### DR-010
**Locations:** 1 file(s)
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-011
**Locations:** 7 file(s)
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/deviceId.ts`](src/lib/services/deviceId.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/deviceId.ts`](src/lib/services/deviceId.ts#L23)
- **Line:** 23
- **Context:** `Unknown`
- **File:** [`src/lib/services/deviceId.test.ts`](src/lib/services/deviceId.test.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/device.rs`](src-tauri/src/commands/device.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/device.rs`](src-tauri/src/commands/device.rs#L24)
- **Line:** 24
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/device.rs`](src-tauri/src/commands/device.rs#L80)
- **Line:** 80
- **Context:** `Unknown`
### DR-012
**Locations:** 3 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
- **File:** [`src-tauri/src/storage/schema.rs`](src-tauri/src/storage/schema.rs#L3)
- **Line:** 3
- **Context:** `Unknown`
### DR-013
**Locations:** 2 file(s)
- **File:** [`src/lib/stores/connectivity.ts`](src/lib/stores/connectivity.ts#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-014
**Locations:** 4 file(s)
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L58)
- **Line:** 58
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L170)
- **Line:** 170
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sync.rs`](src-tauri/src/commands/sync.rs#L5)
- **Line:** 5
- **Context:** `Unknown`
### DR-015
**Locations:** 6 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/downloads.ts`](src/lib/stores/downloads.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/utils/validation.test.ts`](src/lib/utils/validation.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.ts`](src/lib/services/preload.ts#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.test.ts`](src/lib/services/preload.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/download.rs`](src-tauri/src/commands/download.rs#L1552)
- **Line:** 1552
- **Context:** `Unknown`
### DR-016
**Locations:** 2 file(s)
- **File:** [`src/lib/services/imageCache.ts`](src/lib/services/imageCache.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/imageCache.test.ts`](src/lib/services/imageCache.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
### DR-017
**Locations:** 3 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/downloads.ts`](src/lib/stores/downloads.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/offline.rs`](src-tauri/src/commands/offline.rs#L133)
- **Line:** 133
- **Context:** `Unknown`
### DR-018
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/commands/download.rs`](src-tauri/src/commands/download.rs#L1552)
- **Line:** 1552
- **Context:** `Unknown`
### DR-020
**Locations:** 7 file(s)
- **File:** [`src/lib/stores/queue.test.ts`](src/lib/stores/queue.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L116)
- **Line:** 116
- **Context:** `async function previous() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L131)
- **Line:** 131
- **Context:** `async function cycleRepeat() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L136)
- **Line:** 136
- **Context:** `async function removeFromQueue(index: number) {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L141)
- **Line:** 141
- **Context:** `async function moveInQueue(fromIndex: number, toIndex: number) {`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L20)
- **Line:** 20
- **Context:** `pub enum RepeatMode {`
### DR-021
**Locations:** 2 file(s)
- **File:** [`src/lib/services/favorites.ts`](src/lib/services/favorites.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/favorites.test.ts`](src/lib/services/favorites.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
### DR-023
**Locations:** 1 file(s)
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-024
**Locations:** 1 file(s)
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-026
**Locations:** 2 file(s)
- **File:** [`src/lib/stores/nextEpisode.ts`](src/lib/stores/nextEpisode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-027
**Locations:** 1 file(s)
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-028
**Locations:** 13 file(s)
- **File:** [`src/lib/utils/duration.test.ts`](src/lib/utils/duration.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L21)
- **Line:** 21
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L64)
- **Line:** 64
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L99)
- **Line:** 99
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L136)
- **Line:** 136
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.test.ts`](src/lib/services/playbackReporting.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L160)
- **Line:** 160
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
### DR-029
**Locations:** 7 file(s)
- **File:** [`src/lib/components/player/SleepTimerModal.svelte`](src/lib/components/player/SleepTimerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/sleepTimer.ts`](src/lib/stores/sleepTimer.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L263)
- **Line:** 263
- **Context:** `function handleMediaLoaded(duration: number): void {`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L300)
- **Line:** 300
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/sleep_timer.rs`](src-tauri/src/player/sleep_timer.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
- **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/autoplay.rs`](src-tauri/src/player/autoplay.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-032
**Locations:** 1 file(s)
- **File:** [`src/lib/components/library/GenericMediaListPage.svelte`](src/lib/components/library/GenericMediaListPage.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-033
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/GenericMediaListPage.svelte`](src/lib/components/library/GenericMediaListPage.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-034
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-035
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-036
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-037
**Locations:** 10 file(s)
- **File:** [`src/lib/components/sessions/SessionsList.svelte`](src/lib/components/sessions/SessionsList.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/RemoteControls.svelte`](src/lib/components/sessions/RemoteControls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/CastButton.svelte`](src/lib/components/sessions/CastButton.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/SessionPickerModal.svelte`](src/lib/components/sessions/SessionPickerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/SessionCard.svelte`](src/lib/components/sessions/SessionCard.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/sessions.test.ts`](src/lib/stores/sessions.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/playbackMode.test.ts`](src/lib/stores/playbackMode.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/playbackMode.ts`](src/lib/stores/playbackMode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
- **File:** [`src/lib/stores/sessions.ts`](src/lib/stores/sessions.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sessions.rs`](src-tauri/src/commands/sessions.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-038
**Locations:** 2 file(s)
- **File:** [`src/lib/components/home/HeroBanner.svelte`](src/lib/components/home/HeroBanner.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-039
**Locations:** 2 file(s)
- **File:** [`src/lib/components/home/Carousel.svelte`](src/lib/components/home/Carousel.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-040
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/CastSection.svelte`](src/lib/components/library/CastSection.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/library/CrewLinks.svelte`](src/lib/components/library/CrewLinks.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-041
**Locations:** 1 file(s)
- **File:** [`src/lib/components/library/PersonDetailView.svelte`](src/lib/components/library/PersonDetailView.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-044
**Locations:** 1 file(s)
- **File:** [`src/lib/components/library/CastSection.svelte`](src/lib/components/library/CastSection.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-045
**Locations:** 1 file(s)
- **File:** [`src/lib/components/BottomNav.svelte`](src/lib/components/BottomNav.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-047
**Locations:** 12 file(s)
- **File:** [`src/lib/stores/nextEpisode.ts`](src/lib/stores/nextEpisode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
- **File:** [`src/lib/services/nextEpisodeService.ts`](src/lib/services/nextEpisodeService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.test.ts`](src/lib/services/playbackReporting.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L263)
- **Line:** 263
- **Context:** `function handleMediaLoaded(duration: number): void {`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L309)
- **Line:** 309
- **Context:** `function handleSleepTimerChanged(mode: SleepTimerMode, remainingSecond...`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/autoplay.rs`](src-tauri/src/player/autoplay.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
### DR-048
**Locations:** 6 file(s)
- **File:** [`src/routes/settings/+page.svelte`](src/routes/settings/+page.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/nextEpisode.ts`](src/lib/stores/nextEpisode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
- **File:** [`src/lib/services/nextEpisodeService.ts`](src/lib/services/nextEpisodeService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L309)
- **Line:** 309
- **Context:** `function handleSleepTimerChanged(mode: SleepTimerMode, remainingSecond...`
- **File:** [`src-tauri/src/player/autoplay.rs`](src-tauri/src/player/autoplay.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### DR-050
**Locations:** 1 file(s)
- **File:** [`src/lib/components/player/SleepTimerModal.svelte`](src/lib/components/player/SleepTimerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-001
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-002
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-003
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-004
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-005
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
### JA-007
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-010
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-011
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-012
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-017
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-021
**Locations:** 5 file(s)
- **File:** [`src/lib/components/sessions/SessionsList.svelte`](src/lib/components/sessions/SessionsList.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/SessionPickerModal.svelte`](src/lib/components/sessions/SessionPickerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sessions.rs`](src-tauri/src/commands/sessions.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/session_poller/mod.rs`](src-tauri/src/session_poller/mod.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
### JA-022
**Locations:** 2 file(s)
- **File:** [`src/lib/components/sessions/RemoteControls.svelte`](src/lib/components/sessions/RemoteControls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-023
**Locations:** 2 file(s)
- **File:** [`src/lib/components/sessions/RemoteControls.svelte`](src/lib/components/sessions/RemoteControls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-024
**Locations:** 2 file(s)
- **File:** [`src/lib/components/sessions/RemoteControls.svelte`](src/lib/components/sessions/RemoteControls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-025
**Locations:** 2 file(s)
- **File:** [`src/lib/components/sessions/SessionPickerModal.svelte`](src/lib/components/sessions/SessionPickerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-026
**Locations:** 2 file(s)
- **File:** [`src/lib/components/sessions/RemoteControls.svelte`](src/lib/components/sessions/RemoteControls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### JA-029
**Locations:** 3 file(s)
- **File:** [`src/lib/components/library/CastSection.svelte`](src/lib/components/library/CastSection.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/library/CrewLinks.svelte`](src/lib/components/library/CrewLinks.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
### JA-030
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/PersonDetailView.svelte`](src/lib/components/library/PersonDetailView.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
### JA-031
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/PersonDetailView.svelte`](src/lib/components/library/PersonDetailView.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
### UR-002
**Locations:** 10 file(s)
- **File:** [`src/lib/stores/connectivity.ts`](src/lib/stores/connectivity.ts#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L116)
- **Line:** 116
- **Context:** `pub enum MediaType {`
- **File:** [`src-tauri/src/commands/offline.rs`](src-tauri/src/commands/offline.rs#L133)
- **Line:** 133
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sync.rs`](src-tauri/src/commands/sync.rs#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
- **File:** [`src-tauri/src/storage/schema.rs`](src-tauri/src/storage/schema.rs#L3)
- **Line:** 3
- **Context:** `Unknown`
- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-003
**Locations:** 9 file(s)
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L39)
- **Line:** 39
- **Context:** `pub fn playback_failed<S: Into<String>>(message: S) -> Self {`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/mpv_backend_test.rs`](src-tauri/src/player/mpv_backend_test.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L42)
- **Line:** 42
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L116)
- **Line:** 116
- **Context:** `pub enum MediaType {`
- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-004
**Locations:** 11 file(s)
- **File:** [`src/lib/components/player/AudioPlayer.svelte`](src/lib/components/player/AudioPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.ts`](src/lib/services/preload.ts#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.test.ts`](src/lib/services/preload.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L39)
- **Line:** 39
- **Context:** `pub fn playback_failed<S: Into<String>>(message: S) -> Self {`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/mpv_backend_test.rs`](src-tauri/src/player/mpv_backend_test.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L42)
- **Line:** 42
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L116)
- **Line:** 116
- **Context:** `pub enum MediaType {`
- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-005
**Locations:** 40 file(s)
- **File:** [`src/lib/components/player/AudioPlayer.svelte`](src/lib/components/player/AudioPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/MiniPlayer.svelte`](src/lib/components/player/MiniPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/Controls.svelte`](src/lib/components/player/Controls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/appState.ts`](src/lib/stores/appState.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.test.ts`](src/lib/stores/queue.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/stores/player.ts`](src/lib/stores/player.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/stores/player.ts`](src/lib/stores/player.ts#L29)
- **Line:** 29
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L106)
- **Line:** 106
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L111)
- **Line:** 111
- **Context:** `async function next() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L116)
- **Line:** 116
- **Context:** `async function previous() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L121)
- **Line:** 121
- **Context:** `async function skipTo(index: number) {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L126)
- **Line:** 126
- **Context:** `async function toggleShuffle() {`
- **File:** [`src/lib/utils/duration.test.ts`](src/lib/utils/duration.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L21)
- **Line:** 21
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L64)
- **Line:** 64
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L99)
- **Line:** 99
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.test.ts`](src/lib/services/playbackReporting.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L160)
- **Line:** 160
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L170)
- **Line:** 170
- **Context:** `function handlePositionUpdate(position: number, duration: number): voi...`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L20)
- **Line:** 20
- **Context:** `pub enum RepeatMode {`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L508)
- **Line:** 508
- **Context:** `pub enum AddPosition {`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L42)
- **Line:** 42
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L46)
- **Line:** 46
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L50)
- **Line:** 50
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L54)
- **Line:** 54
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L58)
- **Line:** 58
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/state.rs`](src-tauri/src/player/state.rs#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/state.rs`](src-tauri/src/player/state.rs#L25)
- **Line:** 25
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-007
**Locations:** 6 file(s)
- **File:** [`src/lib/components/library/GenericMediaListPage.svelte`](src/lib/components/library/GenericMediaListPage.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/imageCache.ts`](src/lib/services/imageCache.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/imageCache.test.ts`](src/lib/services/imageCache.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/repository/online.rs`](src-tauri/src/repository/online.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-008
**Locations:** 1 file(s)
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-009
**Locations:** 13 file(s)
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L269)
- **Line:** 269
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L296)
- **Line:** 296
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.test.ts`](src/lib/stores/auth.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/utils/validation.test.ts`](src/lib/utils/validation.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/deviceId.ts`](src/lib/services/deviceId.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/deviceId.ts`](src/lib/services/deviceId.ts#L23)
- **Line:** 23
- **Context:** `Unknown`
- **File:** [`src/lib/services/deviceId.test.ts`](src/lib/services/deviceId.test.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/device.rs`](src-tauri/src/commands/device.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/device.rs`](src-tauri/src/commands/device.rs#L24)
- **Line:** 24
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/device.rs`](src-tauri/src/commands/device.rs#L80)
- **Line:** 80
- **Context:** `Unknown`
- **File:** [`src-tauri/src/jellyfin/client.rs`](src-tauri/src/jellyfin/client.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-010
**Locations:** 12 file(s)
- **File:** [`src/lib/components/sessions/SessionsList.svelte`](src/lib/components/sessions/SessionsList.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/RemoteControls.svelte`](src/lib/components/sessions/RemoteControls.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/CastButton.svelte`](src/lib/components/sessions/CastButton.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/SessionPickerModal.svelte`](src/lib/components/sessions/SessionPickerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/sessions/SessionCard.svelte`](src/lib/components/sessions/SessionCard.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/sessions.test.ts`](src/lib/stores/sessions.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/playbackMode.test.ts`](src/lib/stores/playbackMode.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/playbackMode.ts`](src/lib/stores/playbackMode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
- **File:** [`src/lib/stores/sessions.ts`](src/lib/stores/sessions.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sessions.rs`](src-tauri/src/commands/sessions.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/session_poller/mod.rs`](src-tauri/src/session_poller/mod.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
### UR-011
**Locations:** 8 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/downloads.ts`](src/lib/stores/downloads.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.ts`](src/lib/services/preload.ts#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src/lib/services/preload.test.ts`](src/lib/services/preload.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/media.rs`](src-tauri/src/player/media.rs#L116)
- **Line:** 116
- **Context:** `pub enum MediaType {`
- **File:** [`src-tauri/src/commands/offline.rs`](src-tauri/src/commands/offline.rs#L133)
- **Line:** 133
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/download.rs`](src-tauri/src/commands/download.rs#L1552)
- **Line:** 1552
- **Context:** `Unknown`
### UR-012
**Locations:** 8 file(s)
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L296)
- **Line:** 296
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.ts`](src/lib/stores/auth.ts#L466)
- **Line:** 466
- **Context:** `Unknown`
- **File:** [`src/lib/stores/auth.test.ts`](src/lib/stores/auth.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
- **File:** [`src-tauri/src/credentials.rs`](src-tauri/src/credentials.rs#L10)
- **Line:** 10
- **Context:** `Unknown`
### UR-013
**Locations:** 2 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/downloads.ts`](src/lib/stores/downloads.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-015
**Locations:** 12 file(s)
- **File:** [`src/lib/stores/queue.test.ts`](src/lib/stores/queue.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L106)
- **Line:** 106
- **Context:** `Unknown`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L111)
- **Line:** 111
- **Context:** `async function next() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L116)
- **Line:** 116
- **Context:** `async function previous() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L121)
- **Line:** 121
- **Context:** `async function skipTo(index: number) {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L126)
- **Line:** 126
- **Context:** `async function toggleShuffle() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L131)
- **Line:** 131
- **Context:** `async function cycleRepeat() {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L136)
- **Line:** 136
- **Context:** `async function removeFromQueue(index: number) {`
- **File:** [`src/lib/stores/queue.ts`](src/lib/stores/queue.ts#L141)
- **Line:** 141
- **Context:** `async function moveInQueue(fromIndex: number, toIndex: number) {`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L20)
- **Line:** 20
- **Context:** `pub enum RepeatMode {`
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L508)
- **Line:** 508
- **Context:** `pub enum AddPosition {`
### UR-016
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L62)
- **Line:** 62
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L241)
- **Line:** 241
- **Context:** `Unknown`
### UR-017
**Locations:** 8 file(s)
- **File:** [`src/lib/components/player/MiniPlayer.svelte`](src/lib/components/player/MiniPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/services/favorites.ts`](src/lib/services/favorites.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/favorites.test.ts`](src/lib/services/favorites.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L58)
- **Line:** 58
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L170)
- **Line:** 170
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sync.rs`](src-tauri/src/commands/sync.rs#L5)
- **Line:** 5
- **Context:** `Unknown`
### UR-018
**Locations:** 3 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/stores/downloads.ts`](src/lib/stores/downloads.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/download.rs`](src-tauri/src/commands/download.rs#L1552)
- **Line:** 1552
- **Context:** `Unknown`
### UR-019
**Locations:** 10 file(s)
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.test.ts`](src/lib/services/playbackReporting.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UR-020
**Locations:** 2 file(s)
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-021
**Locations:** 2 file(s)
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/player.rs`](src-tauri/src/commands/player.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-023
**Locations:** 14 file(s)
- **File:** [`src/routes/settings/+page.svelte`](src/routes/settings/+page.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/nextEpisode.ts`](src/lib/stores/nextEpisode.ts#L9)
- **Line:** 9
- **Context:** `Unknown`
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src/lib/services/nextEpisodeService.ts`](src/lib/services/nextEpisodeService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L263)
- **Line:** 263
- **Context:** `function handleMediaLoaded(duration: number): void {`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L309)
- **Line:** 309
- **Context:** `function handleSleepTimerChanged(mode: SleepTimerMode, remainingSecond...`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/autoplay.rs`](src-tauri/src/player/autoplay.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-024
**Locations:** 1 file(s)
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-025
**Locations:** 12 file(s)
- **File:** [`src/lib/utils/validation.test.ts`](src/lib/utils/validation.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L21)
- **Line:** 21
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L99)
- **Line:** 99
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.ts`](src/lib/services/playbackReporting.ts#L136)
- **Line:** 136
- **Context:** `Unknown`
- **File:** [`src/lib/services/playbackReporting.test.ts`](src/lib/services/playbackReporting.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L160)
- **Line:** 160
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L7)
- **Line:** 7
- **Context:** `Unknown`
- **File:** [`src/lib/services/syncService.ts`](src/lib/services/syncService.ts#L58)
- **Line:** 58
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/mod.rs`](src-tauri/src/commands/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/sync.rs`](src-tauri/src/commands/sync.rs#L5)
- **Line:** 5
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UR-026
**Locations:** 14 file(s)
- **File:** [`src/lib/components/player/SleepTimerModal.svelte`](src/lib/components/player/SleepTimerModal.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/sleepTimer.ts`](src/lib/stores/sleepTimer.ts#L10)
- **Line:** 10
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.test.ts`](src/lib/services/playerEvents.test.ts#L4)
- **Line:** 4
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L8)
- **Line:** 8
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L26)
- **Line:** 26
- **Context:** `Unknown`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L263)
- **Line:** 263
- **Context:** `function handleMediaLoaded(duration: number): void {`
- **File:** [`src/lib/services/playerEvents.ts`](src/lib/services/playerEvents.ts#L300)
- **Line:** 300
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L6)
- **Line:** 6
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/events.rs`](src-tauri/src/player/events.rs#L20)
- **Line:** 20
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/sleep_timer.rs`](src-tauri/src/player/sleep_timer.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
- **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/autoplay.rs`](src-tauri/src/player/autoplay.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/mod.rs`](src-tauri/src/player/mod.rs#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-028
**Locations:** 2 file(s)
- **File:** [`src/lib/components/player/AudioPlayer.svelte`](src/lib/components/player/AudioPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/player/MiniPlayer.svelte`](src/lib/components/player/MiniPlayer.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-029
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/GenericMediaListPage.svelte`](src/lib/components/library/GenericMediaListPage.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-030
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/GenericMediaListPage.svelte`](src/lib/components/library/GenericMediaListPage.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/library.ts`](src/lib/stores/library.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-034
**Locations:** 3 file(s)
- **File:** [`src/lib/components/home/HeroBanner.svelte`](src/lib/components/home/HeroBanner.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/home/Carousel.svelte`](src/lib/components/home/Carousel.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/stores/home.ts`](src/lib/stores/home.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UR-035
**Locations:** 3 file(s)
- **File:** [`src/lib/components/library/CastSection.svelte`](src/lib/components/library/CastSection.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src/lib/components/library/CrewLinks.svelte`](src/lib/components/library/CrewLinks.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
### UR-036
**Locations:** 2 file(s)
- **File:** [`src/lib/components/library/PersonDetailView.svelte`](src/lib/components/library/PersonDetailView.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
- **Line:** 4
- **Context:** `Unknown`
### UR-039
**Locations:** 1 file(s)
- **File:** [`src/lib/components/BottomNav.svelte`](src/lib/components/BottomNav.svelte#L1)
- **Line:** 1
- **Context:** `Unknown`
### IT-003
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/mpv_backend_test.rs`](src-tauri/src/player/mpv_backend_test.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
### IT-004
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/mpv_backend_test.rs`](src-tauri/src/player/mpv_backend_test.rs#L8)
- **Line:** 8
- **Context:** `Unknown`
### UT-003
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L508)
- **Line:** 508
- **Context:** `pub enum AddPosition {`
### UT-004
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L508)
- **Line:** 508
- **Context:** `pub enum AddPosition {`
### UT-005
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/queue.rs`](src-tauri/src/player/queue.rs#L508)
- **Line:** 508
- **Context:** `pub enum AddPosition {`
### UT-010
**Locations:** 1 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **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)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-015
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-016
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-017
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-018
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-019
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-020
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-021
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-022
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-023
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-024
**Locations:** 1 file(s)
- **File:** [`src/lib/stores/downloads.test.ts`](src/lib/stores/downloads.test.ts#L2)
- **Line:** 2
- **Context:** `Unknown`
### UT-025
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/storage/db_service.rs`](src-tauri/src/storage/db_service.rs#L288)
- **Line:** 288
- **Context:** `Unknown`
- **File:** [`src-tauri/src/storage/mod.rs`](src-tauri/src/storage/mod.rs#L159)
- **Line:** 159
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
### UT-026
**Locations:** 2 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L241)
- **Line:** 241
- **Context:** `Unknown`
### UT-027
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-028
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-029
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-030
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-031
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-032
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-033
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L235)
- **Line:** 235
- **Context:** `Unknown`
### UT-042
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/commands/download.rs`](src-tauri/src/commands/download.rs#L1552)
- **Line:** 1552
- **Context:** `Unknown`
### UT-043
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/commands/download.rs`](src-tauri/src/commands/download.rs#L1552)
- **Line:** 1552
- **Context:** `Unknown`
### UT-044
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/commands/offline.rs`](src-tauri/src/commands/offline.rs#L133)
- **Line:** 133
- **Context:** `Unknown`
### UR-031
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-032
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`
### UR-033
**Locations:** 1 file(s)
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
- **Line:** 1
- **Context:** `Unknown`