Search page improvements (#709)

## Description

Improves how search results are displayed:

- Reorders search categories to Movies → TV Shows → Episodes →
Collections, surfacing the most commonly searched content types at the
top.
- Adds a new "Combined search results" preference in Advanced settings →
Search. When enabled, shows all results in a single list instead of
separate categories.
- When Seerr is active, adds Library/Discover tabs to switch between
local library results and Seerr discovery results.
- Hides empty result categories instead of showing "No results"
placeholders.

### Screenshots

<img width="1935" height="1100" alt="Screenshot_20260116_113656"
src="https://github.com/user-attachments/assets/1e29aa3a-3ba2-4f86-ab61-fed683490474"
/>

<img width="1934" height="1095" alt="image"
src="https://github.com/user-attachments/assets/8b93fa38-d4c9-4e72-a997-caa82b4949f0"
/>

<img width="1921" height="1094" alt="image"
src="https://github.com/user-attachments/assets/82aed1a5-810c-413f-a266-6d78490a1534"
/>

### AI/LLM usage
Code auditing and PR description drafting with Claude Code. Also used
Claude Code for the regex.
This commit is contained in:
Justin Caveda 2026-05-13 09:02:33 -05:00 • committed by GitHub
parent f364ef9708
commit 98ffaf51ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 798 additions and 274 deletions

View file

@ -66,7 +66,8 @@ class AppPreferencesSerializer
directPlayPgs = AppPreference.DirectPlayPgs.defaultValue
mediaExtensionsEnabled =
AppPreference.FfmpegPreference.defaultValue
assPlaybackMode = AppPreference.AssSubtitleMode.defaultValue
assPlaybackMode =
AppPreference.AssSubtitleMode.defaultValue
}.build()
mpvOptions =
@ -99,6 +100,13 @@ class AppPreferencesSerializer
backdropStyle = AppPreference.BackdropStylePref.defaultValue
showLogos = AppPreference.ShowLogos.defaultValue
searchPreferences =
SearchPreferences
.newBuilder()
.apply {
combinedSearchResults = false
}.build()
subtitlesPreferences =
SubtitlePreferences
.newBuilder()
@ -207,6 +215,11 @@ inline fun AppPreferences.updateInterfacePreferences(block: InterfacePreferences
interfacePreferences = interfacePreferences.toBuilder().apply(block).build()
}
inline fun AppPreferences.updateSearchPreferences(block: SearchPreferences.Builder.() -> Unit): AppPreferences =
updateInterfacePreferences {
searchPreferences = searchPreferences.toBuilder().apply(block).build()
}
inline fun AppPreferences.updateSubtitlePreferences(block: SubtitlePreferences.Builder.() -> Unit): AppPreferences =
updateInterfacePreferences {
subtitlesPreferences = subtitlesPreferences.toBuilder().apply(block).build()