wolfskin/app/src/main/proto/WholphinDataStore.proto
Justin Caveda 98ffaf51ac
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.
2026-05-13 10:02:33 -04:00

222 lines
4.8 KiB
Protocol Buffer

syntax = "proto3";
option java_package = "com.github.damontecres.wholphin.preferences";
option java_multiple_files = true;
enum ShowNextUpWhen{
END_OF_PLAYBACK = 0;
DURING_CREDITS = 1;
NEXT_UP_NEVER = 2;
}
enum SkipSegmentBehavior{
IGNORE = 0;
AUTO_SKIP = 1;
ASK_TO_SKIP = 2;
}
enum PrefContentScale{
FIT = 0;
NONE = 1;
CROP = 2;
FILL = 3;
Fill_WIDTH = 4;
FILL_HEIGHT = 5;
}
enum MediaExtensionStatus{
MES_FALLBACK = 0;
MES_PREFERRED = 1;
MES_DISABLED = 2;
}
enum PlayerBackend{
EXO_PLAYER = 0;
MPV = 1;
PREFER_MPV = 2;
EXTERNAL_PLAYER = 3;
}
message MpvOptions{
bool enable_hardware_decoding = 1;
bool use_gpu_next = 2;
}
enum AssPlaybackMode{
ASS_LIBASS = 0;
ASS_EXO_PLAYER = 1;
ASS_TRANSCODE = 2;
}
message PlaybackOverrides{
bool ac3_supported = 1;
bool downmix_stereo = 2;
bool direct_play_ass = 3 [deprecated = true];
bool direct_play_pgs = 4;
MediaExtensionStatus media_extensions_enabled = 5;
bool direct_play_dolby_vision_e_l = 6;
bool decode_av1 = 7;
AssPlaybackMode ass_playback_mode = 8;
}
message PlaybackPreferences {
int64 skip_forward_ms = 1;
int64 skip_back_ms = 2;
int64 controller_timeout_ms = 3;
int32 seek_bar_steps = 4;
bool show_debug_info = 5;
bool auto_play_next = 6;
int64 auto_play_next_delay_seconds = 7;
int64 skip_back_on_resume_seconds = 8;
int64 max_bitrate = 9;
SkipSegmentBehavior skip_intros = 10;
SkipSegmentBehavior skip_outros = 11;
SkipSegmentBehavior skip_commercials = 12;
SkipSegmentBehavior skip_recaps = 13;
SkipSegmentBehavior skip_previews = 14;
PlaybackOverrides overrides = 15;
int64 pass_out_protection_ms = 16;
PrefContentScale global_content_scale = 17;
ShowNextUpWhen show_next_up_when = 18;
bool one_click_pause = 19;
PlayerBackend player_backend = 20;
MpvOptions mpv_options = 21;
bool refresh_rate_switching = 22;
bool resolution_switching = 23;
string external_player = 24;
bool cinema_mode = 25;
}
message HomePagePreferences{
int32 max_items_per_row = 1;
bool enable_rewatching_next_up = 2;
bool combine_continue_next = 3;
int32 max_days_next_up = 4;
}
enum ThemeSongVolume {
DISABLED = 0;
LOWEST = 1;
LOW = 2;
MEDIUM = 3;
HIGH = 4;
HIGHEST = 5;
}
enum AppThemeColors {
PURPLE = 0;
BLUE = 1;
GREEN = 2;
ORANGE = 3;
BOLD_BLUE = 4;
OLED_BLACK = 5;
}
enum EdgeStyle{
EDGE_NONE = 0;
EDGE_SOLID = 1;
EDGE_SHADOW = 2;
}
enum BackgroundStyle{
BG_NONE = 0;
BG_WRAP = 1;
BG_BOXED = 2;
}
message SubtitlePreferences{
int32 font_size = 1;
int32 font_color = 2;
int32 font_opacity = 3;
int32 edge_color = 4;
EdgeStyle edge_style = 5;
int32 background_color = 6;
int32 background_opacity = 7;
BackgroundStyle background_style = 8;
bool font_bold = 9;
bool font_italic = 10;
int32 margin = 11;
int32 edge_thickness = 12;
int32 image_subtitle_opacity = 13;
}
message LiveTvPreferences {
bool show_header = 1;
bool favorite_channels_at_beginning = 2;
bool sort_by_recently_watched = 3;
bool color_code_programs = 4;
}
enum BackdropStyle{
BACKDROP_DYNAMIC_COLOR = 0;
BACKDROP_IMAGE_ONLY = 1;
BACKDROP_NONE = 2;
}
message ScreensaverPreferences{
int64 start_delay = 1;
int64 duration = 2;
bool animate = 3;
int32 max_age_filter = 4;
bool enabled = 5;
repeated string item_types = 6;
bool show_clock = 7;
}
message SearchPreferences {
bool combined_search_results = 1;
}
message InterfacePreferences {
ThemeSongVolume play_theme_songs = 1;
bool remember_selected_tab = 2;
map<string, int32> remembered_tabs = 3;
AppThemeColors app_theme_colors = 4;
bool nav_drawer_switch_on_focus = 5;
bool show_clock = 6;
SubtitlePreferences subtitles_preferences = 7;
LiveTvPreferences live_tv_preferences = 8;
BackdropStyle backdrop_style = 9;
SubtitlePreferences hdr_subtitles_preferences = 10;
ScreensaverPreferences screensaver_preference = 11;
bool enable_media_management = 12;
bool show_logos = 13;
SearchPreferences search_preferences = 14;
}
message AdvancedPreferences {
int64 image_disk_cache_size_bytes = 1;
}
message PhotoPreferences{
int64 slideshow_duration = 1;
bool slideshow_play_videos = 2;
}
message MusicPreferences {
bool show_lyrics = 1;
bool show_visualizer = 2;
bool show_album_Art = 3;
bool show_backdrop = 4;
}
message AppPreferences {
// The currently signed in server and user IDs, mostly for restoring a session
string current_server_id = 1;
string current_user_id = 2;
PlaybackPreferences playback_preferences = 3;
HomePagePreferences home_page_preferences = 4;
InterfacePreferences interface_preferences = 5;
bool auto_check_for_updates = 6;
string update_url = 7;
bool send_crash_reports = 8;
bool debug_logging = 9;
AdvancedPreferences advanced_preferences = 10;
bool sign_in_automatically = 11;
PhotoPreferences photo_preferences = 12;
MusicPreferences music_preferences = 13;
}