Hermes Agent commited on
Commit
964e7f6
·
1 Parent(s): bcf7f1a

fix(ui): revert settings and dashboard UI to default Jellyfin layout

Browse files
apex/combined-entrypoint.sh CHANGED
@@ -220,6 +220,14 @@ PY
220
  echo "[JELLYFIN] Configured server name as Apex in $SYSTEM_XML"
221
  fi
222
 
 
 
 
 
 
 
 
 
223
  echo "[HEALTH] Jellyfin starting in background (local datadir)..."
224
  launch_jellyfin
225
 
 
220
  echo "[JELLYFIN] Configured server name as Apex in $SYSTEM_XML"
221
  fi
222
 
223
+ # Ensure custom CSS in branding.xml does not force theme into admin pages
224
+ for bcfg in "$LOCAL_ROOT/config/branding.xml" "/data/jellyfin/config/branding.xml"; do
225
+ if [ -f "$bcfg" ]; then
226
+ sed -i 's|<CustomCss>[^<]*abyss[^<]*</CustomCss>|<CustomCss></CustomCss>|g' "$bcfg" 2>/dev/null || true
227
+ sed -i 's|<CustomCss>[^<]*ElegantFin[^<]*</CustomCss>|<CustomCss></CustomCss>|g' "$bcfg" 2>/dev/null || true
228
+ fi
229
+ done
230
+
231
  echo "[HEALTH] Jellyfin starting in background (local datadir)..."
232
  launch_jellyfin
233
 
apex/ui/abyss.css CHANGED
@@ -655,21 +655,7 @@ html[data-theme="dark"] .MuiDialog-paper {
655
  backdrop-filter: blur(var(--abyss-glass-blur));
656
  }
657
 
658
- html[data-theme="dark"] .MuiDrawer-paper {
659
- background-color: #141416 !important;
660
- border-radius: 20px !important;
661
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6) !important;
662
- border: solid 1px rgba(255, 255, 255, 0.12) !important;
663
- left: 16px;
664
- top: 16px;
665
- bottom: 16px;
666
- padding: 16px 0;
667
- max-height: calc(100vh - 32px);
668
- width: 280px !important;
669
- max-width: 85vw !important;
670
- -webkit-backdrop-filter: blur(20px);
671
- backdrop-filter: blur(20px);
672
- }
673
 
674
  html[data-theme="dark"] .MuiDrawer-paper .MuiDivider-root {
675
  display: none;
@@ -801,21 +787,7 @@ html.abyss-spotlight-visible[data-theme="dark"] .MuiAppBar-root+div[aria-hidden=
801
 
802
 
803
 
804
- /* Navigation / drawer */
805
- .editPageSidebar,
806
- .mainDrawer {
807
- background-color: #141416 !important;
808
- margin: 16px 0;
809
- border-radius: 20px !important;
810
- box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6);
811
- border: solid 1px rgba(255, 255, 255, 0.12) !important;
812
- width: 280px !important;
813
- max-width: 85vw !important;
814
- }
815
 
816
- .mainDrawer.drawer-open {
817
- margin: 24px;
818
- }
819
 
820
  .sidebarHeader {
821
  margin: 0.9em 0 0.2em;
@@ -2012,30 +1984,7 @@ body:has(#videoOsdPage) .skinHeader .MuiTypography-root.MuiTypography-body1 {
2012
  }
2013
 
2014
 
2015
- /* 9. DASHBOARD & ADMIN */
2016
 
2017
- .dashboardSection h3 {
2018
- margin: .5em 0em .5em .5em;
2019
- }
2020
-
2021
- .dashboardSection .sectionTitleTextButton>.material-icons.material-icons {
2022
- margin-top: .5em;
2023
- margin-bottom: .5em;
2024
- margin-right: .2em;
2025
- }
2026
-
2027
- #dashboardPage .playbackProgress>div {
2028
- background-color: rgba(var(--abyss-accent), 0.75) !important;
2029
- }
2030
-
2031
- #dashboardPage .transcodingProgress>div {
2032
- background-color: rgba(var(--abyss-accent), 0.35) !important;
2033
- }
2034
-
2035
- .navMenuOption-selected {
2036
- background: rgb(var(--abyss-accent)) !important;
2037
- color: #121212 !important;
2038
- }
2039
 
2040
 
2041
  /* 10. ITEM DETAIL PAGE */
@@ -2538,10 +2487,7 @@ body:has(#videoOsdPage) .skinHeader .MuiTypography-root.MuiTypography-body1 {
2538
  font-size: 2em;
2539
  }
2540
 
2541
- .MuiDrawer-paper {
2542
- width: 280px !important;
2543
- max-width: 85vw !important;
2544
- }
2545
  }
2546
 
2547
  @media screen and (max-height: 26em) and (orientation: landscape) {
 
655
  backdrop-filter: blur(var(--abyss-glass-blur));
656
  }
657
 
658
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
659
 
660
  html[data-theme="dark"] .MuiDrawer-paper .MuiDivider-root {
661
  display: none;
 
787
 
788
 
789
 
 
 
 
 
 
 
 
 
 
 
 
790
 
 
 
 
791
 
792
  .sidebarHeader {
793
  margin: 0.9em 0 0.2em;
 
1984
  }
1985
 
1986
 
 
1987
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1988
 
1989
 
1990
  /* 10. ITEM DETAIL PAGE */
 
2487
  font-size: 2em;
2488
  }
2489
 
2490
+
 
 
 
2491
  }
2492
 
2493
  @media screen and (max-height: 26em) and (orientation: landscape) {
apex/ui/spotlight-loader.js CHANGED
@@ -407,9 +407,71 @@
407
  } catch (e) {}
408
  }
409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  var installScheduled = false;
411
 
412
  var scheduleInstall = function () {
 
 
 
 
 
413
  ensureDarkTheme();
414
  replaceServerNameText();
415
  var alreadyGood =
@@ -435,12 +497,17 @@
435
  }
436
  };
437
 
 
438
  ensureDarkTheme();
439
  replaceServerNameText();
 
440
  if (typeof MutationObserver === "function") {
441
  safe(function () {
442
  if (document.documentElement) {
443
- var themeObserver = new MutationObserver(ensureDarkTheme);
 
 
 
444
  themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ["data-theme"] });
445
  }
446
  if (document.body) {
@@ -456,6 +523,7 @@
456
  // visibility sync every 2s, so stale SPA navigation state self-corrects
457
  // without needing a hard refresh.
458
  setInterval(function () {
 
459
  scheduleInstall();
460
  replaceServerNameText();
461
  if (currentSync) safe(currentSync);
 
407
  } catch (e) {}
408
  }
409
 
410
+ function isSettingsRoute() {
411
+ var hash = (window.location.hash || "").toLowerCase();
412
+ if (
413
+ hash === "" ||
414
+ hash === "#/" ||
415
+ hash.startsWith("#/home") ||
416
+ hash.startsWith("#/movies") ||
417
+ hash.startsWith("#/tv") ||
418
+ hash.startsWith("#/music") ||
419
+ hash.startsWith("#/item") ||
420
+ hash.startsWith("#/details") ||
421
+ hash.startsWith("#/search") ||
422
+ hash.startsWith("#/video") ||
423
+ hash.startsWith("#/favorites")
424
+ ) {
425
+ return false;
426
+ }
427
+ return (
428
+ hash.includes("dashboard") ||
429
+ hash.includes("settings") ||
430
+ hash.includes("preference") ||
431
+ hash.includes("configuration") ||
432
+ hash.includes("wizard") ||
433
+ hash.includes("userprofile") ||
434
+ hash.includes("useredit") ||
435
+ hash.includes("devices") ||
436
+ hash.includes("apikeys") ||
437
+ hash.includes("notifications") ||
438
+ hash.includes("activity") ||
439
+ hash.includes("logs") ||
440
+ Boolean(document.querySelector("#dashboardPage, .pageWithSidebar, .adminDrawerLogo, .dashboardSection"))
441
+ );
442
+ }
443
+
444
+ function syncSettingsTheme() {
445
+ var isSettings = isSettingsRoute();
446
+ var themeLink = document.querySelector('link[data-abyss-theme]');
447
+ if (themeLink && themeLink.disabled !== isSettings) {
448
+ themeLink.disabled = isSettings;
449
+ }
450
+ var customCss = document.getElementById("customCss");
451
+ if (customCss && customCss.disabled !== isSettings) {
452
+ customCss.disabled = isSettings;
453
+ }
454
+ if (isSettings) {
455
+ document.documentElement.classList.add("jellyfin-default-settings");
456
+ document.documentElement.classList.remove("abyss-theme-active");
457
+ clearSpotlightBackdrop();
458
+ if (currentIframe) {
459
+ currentIframe.style.display = "none";
460
+ }
461
+ } else {
462
+ document.documentElement.classList.remove("jellyfin-default-settings");
463
+ document.documentElement.classList.add("abyss-theme-active");
464
+ }
465
+ }
466
+
467
  var installScheduled = false;
468
 
469
  var scheduleInstall = function () {
470
+ syncSettingsTheme();
471
+ if (isSettingsRoute()) {
472
+ replaceServerNameText();
473
+ return;
474
+ }
475
  ensureDarkTheme();
476
  replaceServerNameText();
477
  var alreadyGood =
 
497
  }
498
  };
499
 
500
+ syncSettingsTheme();
501
  ensureDarkTheme();
502
  replaceServerNameText();
503
+ window.addEventListener("hashchange", syncSettingsTheme);
504
  if (typeof MutationObserver === "function") {
505
  safe(function () {
506
  if (document.documentElement) {
507
+ var themeObserver = new MutationObserver(function () {
508
+ syncSettingsTheme();
509
+ if (!isSettingsRoute()) ensureDarkTheme();
510
+ });
511
  themeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ["data-theme"] });
512
  }
513
  if (document.body) {
 
523
  // visibility sync every 2s, so stale SPA navigation state self-corrects
524
  // without needing a hard refresh.
525
  setInterval(function () {
526
+ syncSettingsTheme();
527
  scheduleInstall();
528
  replaceServerNameText();
529
  if (currentSync) safe(currentSync);