From da732c7eae2fe07b259d7090893282a90723a538 Mon Sep 17 00:00:00 2001 From: Lee Kelly Date: Mon, 17 Aug 2026 02:24:44 +0000 Subject: [PATCH 1/2] refactor(settings): align settings copy and status feedback - Standardize settings labels and helper text - Add inline save and integration test statuses - Remove obsolete sponsor section --- .../SettingsMetadataSponsorSection.jsx | 28 ---- frontend/src/index.css | 53 ++----- frontend/src/pages/ProfilePage.jsx | 9 +- frontend/src/pages/Settings/SettingsPage.jsx | 29 ++-- .../components/CommunityGuideModal.jsx | 9 +- .../components/LidarrSettingsModalContent.jsx | 60 ++++---- .../Settings/components/PathMappingModal.jsx | 6 +- .../components/PlexSelfLinkSection.jsx | 5 +- .../components/QualityProfileModal.jsx | 2 +- .../components/SettingsAccountTab.jsx | 39 ++--- .../components/SettingsConnectTab.jsx | 27 ++-- .../components/SettingsDiscoverTab.jsx | 33 ++--- .../SettingsDownloadClientsSection.jsx | 94 ++++++------ .../components/SettingsIndexersSection.jsx | 46 +++--- .../components/SettingsIntegrationCards.jsx | 40 +++--- .../components/SettingsMetadataTab.jsx | 2 +- .../components/SettingsPlaybackSection.jsx | 55 +++---- .../components/SettingsPlaybackTab.jsx | 4 +- .../components/SettingsRssNewsTab.jsx | 34 ++--- .../components/SettingsStorageSection.jsx | 61 ++++---- .../Settings/components/SettingsTasksTab.jsx | 8 +- .../Settings/components/SettingsUsersTab.jsx | 6 +- .../components/arr/SettingsArrLayout.jsx | 12 +- frontend/src/pages/Settings/settingsArr.css | 134 ++++++++++++++++-- .../src/pages/Settings/settingsTabsConfig.js | 36 ++--- 25 files changed, 450 insertions(+), 382 deletions(-) delete mode 100644 frontend/src/components/SettingsMetadataSponsorSection.jsx diff --git a/frontend/src/components/SettingsMetadataSponsorSection.jsx b/frontend/src/components/SettingsMetadataSponsorSection.jsx deleted file mode 100644 index ed959c45b..000000000 --- a/frontend/src/components/SettingsMetadataSponsorSection.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import { ExternalLink, Heart } from "lucide-react"; - -function SettingsMetadataSponsorSection() { - return ( -
-
-

Support hosted services

-
-

- Aurral's metadata and search backends currently run on personal infrastructure and may - experience occasional downtime. Sponsorship goes directly toward maintaining Aurral, keeping - those services online, and funding cloud capacity when needed. -

- - -
- ); -} - -export default SettingsMetadataSponsorSection; diff --git a/frontend/src/index.css b/frontend/src/index.css index fc75a3b30..d15db93dc 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -9145,16 +9145,6 @@ button.native-library-genre-row:focus-visible { line-height: 1.5; } -.settings-page__modal-reminder { - margin: 0; - padding: 0.5rem 0.75rem; - color: var(--aurral-text-muted); - font-size: 0.75rem; - line-height: 1.45; - background: color-mix(in srgb, var(--aurral-text) 4%, transparent); - border-radius: var(--aurral-radius-sm); -} - .settings-page__advanced-toggle-row { display: flex; justify-content: flex-start; @@ -9605,34 +9595,6 @@ button.native-library-genre-row:focus-visible { height: 0.9rem; } -.settings-page__section--sponsor { - padding: 1rem 1.125rem; - margin-bottom: 2rem; - border-radius: var(--aurral-radius-sm); - background: var(--aurral-surface-raised); -} - -.settings-page__section--sponsor .settings-page__section-header { - margin-bottom: 0.5rem; -} - -.settings-page__sponsor-icon { - width: 1rem; - height: 1rem; - color: var(--aurral-text-muted); -} - -.settings-page__sponsor-copy { - margin: 0 0 0.875rem; - color: var(--aurral-text-muted); - font-size: 0.875rem; - line-height: 1.55; -} - -.settings-page__sponsor-cta { - width: fit-content; -} - .settings-page__link { color: var(--aurral-text-muted); text-decoration: underline; @@ -9685,11 +9647,6 @@ button.native-library-genre-row:focus-visible { padding: 1rem 1.125rem 0; } -.settings-page__modal--integration .settings-page__modal-reminder { - flex-shrink: 0; - margin: 0.625rem 1.125rem 0; -} - .settings-page__modal-body { flex: 1; min-height: 0; @@ -12475,6 +12432,7 @@ button.native-library-genre-row:focus-visible { } .profile-page__header { + position: relative; display: flex; align-items: flex-start; justify-content: space-between; @@ -12489,10 +12447,17 @@ button.native-library-genre-row:focus-visible { } .profile-page__save-state { + position: absolute; + top: 0.25rem; + right: 0; flex-shrink: 0; - padding-top: 0.25rem; color: var(--aurral-text-subtle); font-size: 0.75rem; + visibility: hidden; +} + +.profile-page__save-state.is-saving { + visibility: visible; } .profile-settings { diff --git a/frontend/src/pages/ProfilePage.jsx b/frontend/src/pages/ProfilePage.jsx index 51dcec6c1..252a0be6d 100644 --- a/frontend/src/pages/ProfilePage.jsx +++ b/frontend/src/pages/ProfilePage.jsx @@ -30,8 +30,13 @@ function ProfilePage() {

Profile

Personal listening history and library defaults

- - {account.saving ? "Saving…" : "Saved automatically"} + + {account.saving ? "Saving…" : null} diff --git a/frontend/src/pages/Settings/SettingsPage.jsx b/frontend/src/pages/Settings/SettingsPage.jsx index 19ef53eae..374bab7f6 100644 --- a/frontend/src/pages/Settings/SettingsPage.jsx +++ b/frontend/src/pages/Settings/SettingsPage.jsx @@ -3,7 +3,6 @@ import { Navigate, useParams } from "react-router-dom"; import { useToast } from "../../contexts/ToastContext"; import { useAuth } from "../../contexts/AuthContext"; import { useDocumentTitle } from "../../hooks/useDocumentTitle"; -import SettingsMetadataSponsorSection from "../../components/SettingsMetadataSponsorSection"; import { useSettingsData } from "./hooks/useSettingsData"; import { useSettingsTabs } from "./hooks/useSettingsTabs"; import { useSettingsUsers } from "./hooks/useSettingsUsers"; @@ -207,16 +206,13 @@ function SettingsPage() { ); case "metadata": return ( - <> - - - + ); case "users": return ( @@ -303,6 +299,17 @@ function SettingsPage() { activeTab={tabs.activeTab} onSelectTab={handleTabSelect} /> + {tabs.activeTab !== "tasks" ? ( +
+ {data.saving ? "Saving…" : null} +
+ ) : null} {renderTabContent()} diff --git a/frontend/src/pages/Settings/components/CommunityGuideModal.jsx b/frontend/src/pages/Settings/components/CommunityGuideModal.jsx index 7a990488d..d3d8ed71f 100644 --- a/frontend/src/pages/Settings/components/CommunityGuideModal.jsx +++ b/frontend/src/pages/Settings/components/CommunityGuideModal.jsx @@ -20,10 +20,10 @@ export function CommunityGuideModal({ show, onClose, onApply }) { tabIndex={-1} >

- Apply Davo's Recommended Settings + Apply recommended settings

- This will apply Davo's Community Lidarr Guide settings to your Lidarr instance: + Apply Davo's Community Lidarr Guide settings to your Lidarr instance: