From 62026fefbec073da87e7389bb8c996fa576439ca Mon Sep 17 00:00:00 2001 From: mattsigal Date: Tue, 4 Aug 2026 21:00:49 -0700 Subject: [PATCH 1/3] Add Action Buttons and Seerr Discovery row order default pickers - Add interactive re-ordering and visibility toggles for Action Buttons (all 16 options) and Seerr Discovery Rows (all 12 options) across Jellyfin and Emby admin pages. - Add SeerrRowOrder and HiddenSeerrRows to backend profile models. - Remove legacy "Leave all unchecked to use each user's own choice" text from picker field descriptions. - Remove Default Excluded Genres picker. - Fix UI script null safety and static subtabs binding. --- .../Models/MoonfinSettingsProfile.cs | 6 + .../Pages/configPage.html | 1119 +++++++---- Emby/Emby.Plugins.Moonfin/Pages/moonfin.js | 427 ++++- .../backend/Models/MoonfinSettingsProfile.cs | 18 + Jellyfin/backend/Pages/configPage.html | 1688 +++++++++++------ 5 files changed, 2207 insertions(+), 1051 deletions(-) diff --git a/Emby/Emby.Plugins.Moonfin/Models/MoonfinSettingsProfile.cs b/Emby/Emby.Plugins.Moonfin/Models/MoonfinSettingsProfile.cs index bd56d59..acf652b 100644 --- a/Emby/Emby.Plugins.Moonfin/Models/MoonfinSettingsProfile.cs +++ b/Emby/Emby.Plugins.Moonfin/Models/MoonfinSettingsProfile.cs @@ -42,6 +42,7 @@ public class MoonfinSettingsProfile [JsonPropertyName("mergeContinueWatchingNextUp")] public bool? MergeContinueWatchingNextUp { get; set; } [JsonPropertyName("nextUpMaxDays")] public int? NextUpMaxDays { get; set; } [JsonPropertyName("enableMultiServerLibraries")] public bool? EnableMultiServerLibraries { get; set; } + [JsonPropertyName("mergeRecentRowsByType")] public bool? MergeRecentRowsByType { get; set; } [JsonPropertyName("enableFolderView")] public bool? EnableFolderView { get; set; } [JsonPropertyName("useDetailedSubHeadings")] public bool? UseDetailedSubHeadings { get; set; } [JsonPropertyName("confirmExit")] public bool? ConfirmExit { get; set; } @@ -89,8 +90,13 @@ public class MoonfinSettingsProfile [JsonPropertyName("genresRowSortBy")] public string? GenresRowSortBy { get; set; } [JsonPropertyName("genresRowItemFilter")] public string? GenresRowItemFilter { get; set; } [JsonPropertyName("navbarAlwaysExpanded")] public bool? NavbarAlwaysExpanded { get; set; } + [JsonPropertyName("mediaBarTrailerCaptions")] public bool? MediaBarTrailerCaptions { get; set; } [JsonPropertyName("detailScreenStyle")] public string? DetailScreenStyle { get; set; } [JsonPropertyName("detailExpandedTabs")] public bool? DetailExpandedTabs { get; set; } + [JsonPropertyName("detailButtonOrder")] public List? DetailButtonOrder { get; set; } + [JsonPropertyName("hiddenDetailButtons")] public List? HiddenDetailButtons { get; set; } + [JsonPropertyName("seerrRowOrder")] public List? SeerrRowOrder { get; set; } + [JsonPropertyName("hiddenSeerrRows")] public List? HiddenSeerrRows { get; set; } [JsonPropertyName("themeMusicLoop")] public bool? ThemeMusicLoop { get; set; } [JsonPropertyName("displaySinceYouWatchedRows")] public bool? DisplaySinceYouWatchedRows { get; set; } [JsonPropertyName("sinceYouWatchedSource")] public string? SinceYouWatchedSource { get; set; } diff --git a/Emby/Emby.Plugins.Moonfin/Pages/configPage.html b/Emby/Emby.Plugins.Moonfin/Pages/configPage.html index b0c4de9..80dd2a4 100644 --- a/Emby/Emby.Plugins.Moonfin/Pages/configPage.html +++ b/Emby/Emby.Plugins.Moonfin/Pages/configPage.html @@ -528,6 +528,49 @@ color: inherit; } + #MoonfinConfigPage .defaultsSubnavBar { + display: flex; + gap: 8px; + flex-wrap: wrap; + margin-top: 1em; + margin-bottom: 1.5em; + border-bottom: 1px solid rgba(128, 128, 128, 0.28); + padding-bottom: 12px; + } + + #MoonfinConfigPage .defaultsSubtabBtn { + background: rgba(128, 128, 128, 0.08); + border: 1px solid rgba(128, 128, 128, 0.28); + color: rgba(255, 255, 255, 0.75); + border-radius: 20px; + padding: 6px 16px; + font-size: 0.9em; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + } + + #MoonfinConfigPage .defaultsSubtabBtn:hover { + background: rgba(128, 128, 128, 0.16); + color: #fff; + } + + #MoonfinConfigPage .defaultsSubtabBtn.active { + background: #00a4dc; + border-color: #00a4dc; + color: #fff; + font-weight: 600; + box-shadow: 0 2px 8px rgba(0, 164, 220, 0.4); + } + + #MoonfinConfigPage .defaultsSubtabPanel { + display: none; + } + + #MoonfinConfigPage .defaultsSubtabPanel.active { + display: block; + } + #MoonfinConfigPage .homeLayoutEmpty { padding: 12px 8px; color: rgba(128, 128, 128, 0.8); @@ -860,316 +903,408 @@

Default User Settings

Not set means "do not force this value" so users keep their own choice. -

Appearance

-
- - -
Default overall app style. Keep Not set to let users choose.
-
-
- - -
Default layout for item detail pages. Keep Not set to let users choose.
-
-
- - -
When on, detail screen tabs start expanded and moving focus between them reveals their content without pressing select. When off, tabs start collapsed and open on press. Keep Not set to let users choose.
-
-
- - -
Color used for focused cards and controls.
-
-
- - -
-
- - -
-
- - -
-

Navigation

-
- - -
-
- - -
-
- - +
+ + + + + + + +
-

Media Bar

-
- - -
Default content source for the media bar. Users can override this.
-
-
- - -
Visual style/mode for the media bar.
-
-
- - -
-