docs: add UR-060 search relevance requirement; regenerate matrix
Records the search relevance and grouping behaviour as UR-060, with DR-090 (Rust relevance ranking) and DR-091 (Shows/Episodes split, People group, stored-order migration). DR-066 now points at DR-091 for the current group set instead of restating a default order that has since changed.
This commit is contained in:
@@ -70,6 +70,7 @@ For a narrative overview of the system design, see
|
||||
| UR-057 | Settings apply the instant a control is changed — no "Save" button and no save/dirty state — so leaving the page never loses a change; sliders show a live readout while dragging but persist on release (see [ux-flows.md §8.1](ux-flows.md)) | Medium | Done |
|
||||
| UR-058 | On the home screen, a tap on a media card opens the item (movie/episode detail page, or the series Episode Focus View for episodes) rather than starting playback; a long-press starts "play now" after a confirm; an episode detail/focus page links back to its parent series and season (see [ux-flows.md §5B.5](ux-flows.md) and [§5B.1](ux-flows.md)) | Medium | Done |
|
||||
| UR-059 | Skipping to the next episode records the episode left behind as **fully watched** rather than saving a mid-episode resume point — skipping means "done with this one", not "stopped here" — and Continue Watching hides episodes the viewer has already moved past (a partial position behind that series' next-up episode), so the row only ever offers genuinely unfinished media | Medium | Done |
|
||||
| UR-060 | Search results are ordered by how well they match: a name that *starts* with the query outranks one matching mid-word (typing "parks" finds "Parks and Recreation" before "Sparks of Love"), and at equal match quality a container outranks its contents (a series before its episodes). Results are grouped into distinct categories — TV Shows, Episodes, Movies, Songs, Albums, Artists and People — so a show never competes with its own episodes for the same slot, and searching an actor's name reaches their bio | High | Done |
|
||||
|
||||
---
|
||||
|
||||
@@ -221,7 +222,7 @@ Internal architecture, components, and application logic.
|
||||
| DR-063 | Search scope resolver mapping the originating route to an `includeItemTypes` set (All / Music / Movies / TV), defaulting to All for Home, `/library`, and the search tab | UI | UR-049 | Implemented |
|
||||
| DR-064 | Scope chip row rendered under the search bar on both the search page and the in-library header search: preselected from context, horizontally scrollable, re-runs the search preserving the query on change | UI | UR-049 | Implemented |
|
||||
| DR-065 | Thread `SearchOptions.includeItemTypes` through `library.search()` so the global/header search honours scope (backend online + offline paths already support it) | UI | UR-049 | Implemented |
|
||||
| DR-066 | Persisted search result group order with a drag-and-drop settings list, keyboard-accessible reordering, a shipped default (Songs → Albums → Artists → Movies → TV Shows), and empty-group omission | Settings | UR-050 | Implemented |
|
||||
| DR-066 | Persisted search result group order with a drag-and-drop settings list, keyboard-accessible reordering, a shipped default (see DR-091 for the current group set and order), and empty-group omission | Settings | UR-050 | Implemented |
|
||||
| DR-067 | `SearchResults` renders groups in the user-configured order rather than hardcoded markup order, without altering intra-group ranking | UI | UR-050 | Implemented |
|
||||
| DR-068 | Library card shape by media type: 1:1 square for music (circular mask for artists), 2:3 poster for movies/series/seasons, 16:9 for episodes and collection folders | UI | UR-051 | Done |
|
||||
| DR-069 | Responsive library grid (2/3/4/5/6 columns across base→xl) with two-line truncated card text and artwork-overlay progress/watched state | UI | UR-051 | Done |
|
||||
@@ -242,6 +243,8 @@ Internal architecture, components, and application logic.
|
||||
| DR-087 | `MediaCard` gains an `onLongPress` prop with pointer-based long-press detection (~500 ms hold, cancelled on >10 px move so carousel scroll is unaffected, trailing click suppressed); home carousels wire tap→detail/focus routing and long-press→confirm→player; episode taps route to `/library/<seriesId>?episode=<id>`; the bare-episode detail page links to its parent series/season | UI | UR-058 | Done |
|
||||
| DR-088 | Skip-to-next-episode marks the outgoing episode played (`markAsPlayed`) instead of reporting a stop position, and arms a one-shot suppression consumed by the player's stop handler so `VideoPlayer`'s post-navigation unmount stop report cannot overwrite the 100% progress with the partial position | UI | UR-059 | Done |
|
||||
| DR-089 | Continue Watching suppresses resume entries superseded by Next Up: an in-progress episode whose series has a next-up entry strictly later in series order (season, then episode) is dropped from the Home and TV rows; movies, series without a next-up entry, and items with unknown/mixed episode ordering are always kept | UI | UR-059 | Done |
|
||||
| DR-090 | Relevance ranking in Rust (`domain/search_rank.rs`): results sort by match position (prefix → word-start → mid-word substring → no name match) then by media kind (containers before their contents), stably so the backend's own relevance breaks ties. Applied in `repository_search` to both the instant cache result and the merged cache+server union, so the list does not reshuffle when server results land | Backend | UR-060 | Done |
|
||||
| DR-091 | Search result groups split TV into separate Shows and Episodes groups and add a People group (default order: Shows → Episodes → Movies → Songs → Albums → Artists → People); a stored `tvShows` order from before the split expands in place to shows+episodes so an upgrading user keeps their arrangement | UI | UR-060 | Done |
|
||||
|
||||
---
|
||||
|
||||
@@ -309,6 +312,7 @@ Internal architecture, components, and application logic.
|
||||
| UR-056 | - | DR-085 |
|
||||
| UR-057 | - | DR-086 |
|
||||
| UR-058 | - | DR-087 |
|
||||
| UR-060 | - | DR-090, DR-091 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
+168
-102
@@ -1,22 +1,22 @@
|
||||
# Code Traceability Matrix
|
||||
|
||||
**Generated:** 7/25/2026, 9:21:22 AM
|
||||
**Generated:** 7/25/2026, 3:13:47 PM
|
||||
|
||||
## Summary
|
||||
|
||||
- **Total Files Scanned:** 293
|
||||
- **Total TRACES Found:** 301
|
||||
- **Total Files Scanned:** 296
|
||||
- **Total TRACES Found:** 310
|
||||
- **Requirements Covered:**
|
||||
- User Requirements (UR): 56
|
||||
- User Requirements (UR): 57
|
||||
- Integration Requirements (IR): 15
|
||||
- Development Requirements (DR): 81
|
||||
- Development Requirements (DR): 83
|
||||
- Jellyfin API Requirements (JA): 24
|
||||
|
||||
## Requirements by Type
|
||||
|
||||
### User Requirements (UR)
|
||||
```
|
||||
UR-002, UR-003, UR-004, UR-005, UR-007, UR-008, UR-009, UR-010, UR-011, UR-012, UR-013, UR-014, UR-015, UR-016, UR-017, UR-018, UR-019, UR-020, UR-021, UR-022, UR-023, UR-024, UR-025, UR-026, UR-027, UR-028, UR-029, UR-030, UR-031, UR-032, UR-033, UR-034, UR-035, UR-036, UR-038, UR-039, UR-040, UR-041, UR-042, UR-043, UR-044, UR-045, UR-046, UR-047, UR-048, UR-049, UR-050, UR-051, UR-052, UR-053, UR-054, UR-055, UR-056, UR-057, UR-058, UR-059
|
||||
UR-002, UR-003, UR-004, UR-005, UR-007, UR-008, UR-009, UR-010, UR-011, UR-012, UR-013, UR-014, UR-015, UR-016, UR-017, UR-018, UR-019, UR-020, UR-021, UR-022, UR-023, UR-024, UR-025, UR-026, UR-027, UR-028, UR-029, UR-030, UR-031, UR-032, UR-033, UR-034, UR-035, UR-036, UR-038, UR-039, UR-040, UR-041, UR-042, UR-043, UR-044, UR-045, UR-046, UR-047, UR-048, UR-049, UR-050, UR-051, UR-052, UR-053, UR-054, UR-055, UR-056, UR-057, UR-058, UR-059, UR-060
|
||||
```
|
||||
|
||||
### Integration Requirements (IR)
|
||||
@@ -26,7 +26,7 @@ IR-003, IR-004, IR-009, IR-010, IR-011, IR-012, IR-013, IR-014, IR-015, IR-020,
|
||||
|
||||
### Development Requirements (DR)
|
||||
```
|
||||
DR-001, DR-002, DR-003, DR-004, DR-005, DR-006, DR-007, DR-009, DR-010, DR-011, DR-012, DR-013, DR-014, DR-015, DR-016, DR-017, DR-018, DR-020, DR-021, DR-022, DR-023, DR-024, DR-025, DR-026, DR-027, DR-028, DR-029, DR-030, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-043, DR-044, DR-045, DR-047, DR-048, DR-049, DR-050, DR-051, DR-052, DR-053, DR-054, DR-055, DR-056, DR-057, DR-058, DR-059, DR-060, DR-061, DR-062, DR-063, DR-064, DR-065, DR-066, DR-067, DR-068, DR-069, DR-070, DR-074, DR-075, DR-076, DR-077, DR-078, DR-079, DR-080, DR-081, DR-082, DR-083, DR-084, DR-085, DR-086, DR-087, DR-088, DR-089
|
||||
DR-001, DR-002, DR-003, DR-004, DR-005, DR-006, DR-007, DR-009, DR-010, DR-011, DR-012, DR-013, DR-014, DR-015, DR-016, DR-017, DR-018, DR-020, DR-021, DR-022, DR-023, DR-024, DR-025, DR-026, DR-027, DR-028, DR-029, DR-030, DR-032, DR-033, DR-034, DR-035, DR-036, DR-037, DR-038, DR-039, DR-040, DR-041, DR-043, DR-044, DR-045, DR-047, DR-048, DR-049, DR-050, DR-051, DR-052, DR-053, DR-054, DR-055, DR-056, DR-057, DR-058, DR-059, DR-060, DR-061, DR-062, DR-063, DR-064, DR-065, DR-066, DR-067, DR-068, DR-069, DR-070, DR-074, DR-075, DR-076, DR-077, DR-078, DR-079, DR-080, DR-081, DR-082, DR-083, DR-084, DR-085, DR-086, DR-087, DR-088, DR-089, DR-090, DR-091
|
||||
```
|
||||
|
||||
### Jellyfin API Requirements (JA)
|
||||
@@ -1304,8 +1304,17 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
|
||||
### DR-063
|
||||
|
||||
**Locations:** 3 file(s)
|
||||
**Locations:** 8 file(s)
|
||||
|
||||
- **File:** [`src/routes/library/+layout.svelte`](src/routes/library/+layout.svelte#L60)
|
||||
- **Line:** 60
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/library/+page.svelte`](src/routes/library/+page.svelte#L17)
|
||||
- **Line:** 17
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/search/+page.svelte`](src/routes/search/+page.svelte#L14)
|
||||
- **Line:** 14
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L9)
|
||||
- **Line:** 9
|
||||
- **Context:** `Unknown`
|
||||
@@ -1315,16 +1324,22 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L50)
|
||||
- **Line:** 50
|
||||
- **Context:** `export function scopeItemTypes(scope: SearchScope): string[] | undefin...`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L73)
|
||||
- **Line:** 73
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L93)
|
||||
- **Line:** 93
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### DR-064
|
||||
|
||||
**Locations:** 3 file(s)
|
||||
|
||||
- **File:** [`src/routes/library/+layout.svelte`](src/routes/library/+layout.svelte#L41)
|
||||
- **Line:** 41
|
||||
- **File:** [`src/routes/library/+layout.svelte`](src/routes/library/+layout.svelte#L45)
|
||||
- **Line:** 45
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/search/+page.svelte`](src/routes/search/+page.svelte#L15)
|
||||
- **Line:** 15
|
||||
- **File:** [`src/routes/search/+page.svelte`](src/routes/search/+page.svelte#L22)
|
||||
- **Line:** 22
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/components/search/SearchScopeChips.svelte`](src/lib/components/search/SearchScopeChips.svelte#L7)
|
||||
- **Line:** 7
|
||||
@@ -1357,8 +1372,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L9)
|
||||
- **Line:** 9
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L117)
|
||||
- **Line:** 117
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L202)
|
||||
- **Line:** 202
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### DR-067
|
||||
@@ -1371,8 +1386,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L9)
|
||||
- **Line:** 9
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L161)
|
||||
- **Line:** 161
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L252)
|
||||
- **Line:** 252
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### DR-068
|
||||
@@ -1566,11 +1581,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/services/downloadedCatalog.ts`](src/lib/services/downloadedCatalog.ts#L12)
|
||||
- **Line:** 12
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L203)
|
||||
- **Line:** 203
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L204)
|
||||
- **Line:** 204
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L218)
|
||||
- **Line:** 218
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L219)
|
||||
- **Line:** 219
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L538)
|
||||
- **Line:** 538
|
||||
@@ -1640,8 +1655,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L1925)
|
||||
- **Line:** 1925
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L218)
|
||||
- **Line:** 218
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L219)
|
||||
- **Line:** 219
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L538)
|
||||
- **Line:** 538
|
||||
@@ -1713,8 +1728,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/services/downloadedCatalog.ts`](src/lib/services/downloadedCatalog.ts#L12)
|
||||
- **Line:** 12
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L235)
|
||||
- **Line:** 235
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L236)
|
||||
- **Line:** 236
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/types.rs`](src-tauri/src/repository/types.rs#L259)
|
||||
- **Line:** 259
|
||||
@@ -1782,6 +1797,25 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### DR-090
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/domain/search_rank.rs`](src-tauri/src/domain/search_rank.rs#L106)
|
||||
- **Line:** 106
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### DR-091
|
||||
|
||||
**Locations:** 2 file(s)
|
||||
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L117)
|
||||
- **Line:** 117
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L183)
|
||||
- **Line:** 183
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### JA-001
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
@@ -1813,12 +1847,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
|
||||
**Locations:** 3 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
|
||||
- **Line:** 4
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/catalog.rs`](src-tauri/src/commands/catalog.rs#L3)
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
- **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`
|
||||
@@ -2057,8 +2091,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L1319)
|
||||
- **Line:** 1319
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494)
|
||||
- **Line:** 494
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L505)
|
||||
- **Line:** 505
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/mod.rs`](src-tauri/src/repository/mod.rs#L127)
|
||||
- **Line:** 127
|
||||
@@ -2246,7 +2280,7 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
|
||||
### UR-005
|
||||
|
||||
**Locations:** 58 file(s)
|
||||
**Locations:** 59 file(s)
|
||||
|
||||
- **File:** [`src/lib/api/bindings.ts`](src/lib/api/bindings.ts#L2251)
|
||||
- **Line:** 2251
|
||||
@@ -2266,6 +2300,9 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/components/player/MiniPlayer.svelte`](src/lib/components/player/MiniPlayer.svelte#L1)
|
||||
- **Line:** 1
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/components/player/videoFit.ts`](src/lib/components/player/videoFit.ts#L7)
|
||||
- **Line:** 7
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/components/player/VideoPlayer.svelte`](src/lib/components/player/VideoPlayer.svelte#L1)
|
||||
- **Line:** 1
|
||||
- **Context:** `Unknown`
|
||||
@@ -2463,12 +2500,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src-tauri/src/commands/storage/thumbnails.rs`](src-tauri/src/commands/storage/thumbnails.rs#L3)
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L4)
|
||||
- **Line:** 4
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/catalog.rs`](src-tauri/src/commands/catalog.rs#L3)
|
||||
- **Line:** 3
|
||||
- **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`
|
||||
@@ -3250,8 +3287,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L675)
|
||||
- **Line:** 675
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494)
|
||||
- **Line:** 494
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L505)
|
||||
- **Line:** 505
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/mod.rs`](src-tauri/src/repository/mod.rs#L127)
|
||||
- **Line:** 127
|
||||
@@ -3304,13 +3341,22 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
|
||||
### UR-049
|
||||
|
||||
**Locations:** 8 file(s)
|
||||
**Locations:** 13 file(s)
|
||||
|
||||
- **File:** [`src/routes/library/+layout.svelte`](src/routes/library/+layout.svelte#L41)
|
||||
- **Line:** 41
|
||||
- **File:** [`src/routes/library/+layout.svelte`](src/routes/library/+layout.svelte#L45)
|
||||
- **Line:** 45
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/search/+page.svelte`](src/routes/search/+page.svelte#L15)
|
||||
- **Line:** 15
|
||||
- **File:** [`src/routes/library/+layout.svelte`](src/routes/library/+layout.svelte#L60)
|
||||
- **Line:** 60
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/library/+page.svelte`](src/routes/library/+page.svelte#L17)
|
||||
- **Line:** 17
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/search/+page.svelte`](src/routes/search/+page.svelte#L14)
|
||||
- **Line:** 14
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/routes/search/+page.svelte`](src/routes/search/+page.svelte#L22)
|
||||
- **Line:** 22
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/components/search/SearchScopeChips.svelte`](src/lib/components/search/SearchScopeChips.svelte#L7)
|
||||
- **Line:** 7
|
||||
@@ -3330,6 +3376,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L50)
|
||||
- **Line:** 50
|
||||
- **Context:** `export function scopeItemTypes(scope: SearchScope): string[] | undefin...`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L73)
|
||||
- **Line:** 73
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L93)
|
||||
- **Line:** 93
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-050
|
||||
|
||||
@@ -3350,11 +3402,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L9)
|
||||
- **Line:** 9
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L117)
|
||||
- **Line:** 117
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L202)
|
||||
- **Line:** 202
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L161)
|
||||
- **Line:** 161
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L252)
|
||||
- **Line:** 252
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-051
|
||||
@@ -3516,11 +3568,11 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L1925)
|
||||
- **Line:** 1925
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L203)
|
||||
- **Line:** 203
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L204)
|
||||
- **Line:** 204
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L218)
|
||||
- **Line:** 218
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L219)
|
||||
- **Line:** 219
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/offline.rs`](src-tauri/src/repository/offline.rs#L538)
|
||||
- **Line:** 538
|
||||
@@ -3599,8 +3651,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src/lib/services/downloadedCatalog.ts`](src/lib/services/downloadedCatalog.ts#L95)
|
||||
- **Line:** 95
|
||||
- **Context:** `function sizeOf(itemId: string): number {`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L235)
|
||||
- **Line:** 235
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L236)
|
||||
- **Line:** 236
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/repository/types.rs`](src-tauri/src/repository/types.rs#L259)
|
||||
- **Line:** 259
|
||||
@@ -3768,14 +3820,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245)
|
||||
- **Line:** 245
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UT-032
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245)
|
||||
- **Line:** 245
|
||||
- **Context:** `Unknown`
|
||||
@@ -3835,8 +3879,8 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **File:** [`src-tauri/src/commands/player/mod.rs`](src-tauri/src/commands/player/mod.rs#L675)
|
||||
- **Line:** 675
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L494)
|
||||
- **Line:** 494
|
||||
- **File:** [`src-tauri/src/commands/repository.rs`](src-tauri/src/commands/repository.rs#L505)
|
||||
- **Line:** 505
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-059
|
||||
@@ -3897,41 +3941,18 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **Line:** 251
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-032
|
||||
### UR-060
|
||||
|
||||
**Locations:** 2 file(s)
|
||||
**Locations:** 3 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3)
|
||||
- **Line:** 3
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L117)
|
||||
- **Line:** 117
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
|
||||
- **Line:** 1
|
||||
- **File:** [`src/lib/utils/searchScope.ts`](src/lib/utils/searchScope.ts#L183)
|
||||
- **Line:** 183
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-033
|
||||
|
||||
**Locations:** 7 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L584)
|
||||
- **Line:** 584
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L638)
|
||||
- **Line:** 638
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L704)
|
||||
- **Line:** 704
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L714)
|
||||
- **Line:** 714
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L759)
|
||||
- **Line:** 759
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3)
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
|
||||
- **Line:** 1
|
||||
- **File:** [`src-tauri/src/domain/search_rank.rs`](src-tauri/src/domain/search_rank.rs#L106)
|
||||
- **Line:** 106
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### IT-016
|
||||
@@ -4071,6 +4092,48 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **Line:** 157
|
||||
- **Context:** `pub fn file_size(&self) -> Option<u64> {`
|
||||
|
||||
### UT-032
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/player/backend.rs`](src-tauri/src/player/backend.rs#L245)
|
||||
- **Line:** 245
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-033
|
||||
|
||||
**Locations:** 7 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L584)
|
||||
- **Line:** 584
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L638)
|
||||
- **Line:** 638
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L704)
|
||||
- **Line:** 704
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L714)
|
||||
- **Line:** 714
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/player/mpv_backend.rs`](src-tauri/src/player/mpv_backend.rs#L759)
|
||||
- **Line:** 759
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3)
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
|
||||
- **Line:** 1
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UT-043
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027)
|
||||
- **Line:** 2027
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UT-051
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
@@ -4248,13 +4311,16 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **Line:** 1
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-042
|
||||
### UR-032
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
**Locations:** 2 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/auth.rs`](src-tauri/src/commands/auth.rs#L3)
|
||||
- **File:** [`src-tauri/src/commands/player/settings.rs`](src-tauri/src/commands/player/settings.rs#L3)
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
- **File:** [`src-tauri/src/settings.rs`](src-tauri/src/settings.rs#L1)
|
||||
- **Line:** 1
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-044
|
||||
|
||||
@@ -4284,14 +4350,6 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027)
|
||||
- **Line:** 2027
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UT-043
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/download/mod.rs`](src-tauri/src/commands/download/mod.rs#L2027)
|
||||
- **Line:** 2027
|
||||
- **Context:** `Unknown`
|
||||
@@ -4312,4 +4370,12 @@ JA-001, JA-002, JA-003, JA-004, JA-005, JA-007, JA-010, JA-011, JA-012, JA-016,
|
||||
- **Line:** 136
|
||||
- **Context:** `Unknown`
|
||||
|
||||
### UR-042
|
||||
|
||||
**Locations:** 1 file(s)
|
||||
|
||||
- **File:** [`src-tauri/src/commands/auth.rs`](src-tauri/src/commands/auth.rs#L3)
|
||||
- **Line:** 3
|
||||
- **Context:** `Unknown`
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user