Move fleet health into admin settings and tidy landing page
This commit is contained in:
@@ -106,13 +106,13 @@ const SECTION_DESCRIPTIONS: Record<string, string> = {
|
||||
'Notification providers and delivery channel settings used by Magent messaging features.',
|
||||
seerr: 'Connect Seerr where users submit content requests.',
|
||||
jellyseerr: 'Connect Seerr where users submit content requests.',
|
||||
jellyfin: 'Control Jellyfin login and availability checks.',
|
||||
jellyfin: 'Jellyfin connection, public playback links, user sync, and availability checks.',
|
||||
artwork: 'Cache posters/backdrops and review artwork coverage.',
|
||||
cache: 'Manage saved requests cache and refresh behavior.',
|
||||
sonarr: 'TV automation settings.',
|
||||
radarr: 'Movie automation settings.',
|
||||
prowlarr: 'Indexer search settings.',
|
||||
qbittorrent: 'Downloader connection settings.',
|
||||
sonarr: 'Sonarr connection and the default profile and library location for TV requests.',
|
||||
radarr: 'Radarr connection and the default profile and library location for movie requests.',
|
||||
prowlarr: 'Prowlarr connection used by Sonarr and Radarr for release searches.',
|
||||
qbittorrent: 'qBittorrent connection used for collector-owned download progress and diagnostics.',
|
||||
requests: 'Control how often requests are refreshed and cleaned up.',
|
||||
log: 'Activity log for troubleshooting.',
|
||||
site: 'Sitewide banner, login page visibility, and version details. The changelog is generated from git history during release builds.',
|
||||
@@ -639,6 +639,10 @@ export default function SettingsPage({ section }: SettingsPageProps) {
|
||||
const artworkSettingKeys = new Set(['artwork_cache_mode'])
|
||||
const generatedSettingKeys = new Set(['site_changelog'])
|
||||
const hiddenSettingKeys = new Set([...cacheSettingKeys, ...artworkSettingKeys, ...generatedSettingKeys])
|
||||
const obsoleteSettingKeys = new Set([
|
||||
'sonarr_qbittorrent_category',
|
||||
'radarr_qbittorrent_category',
|
||||
])
|
||||
const requestSettingOrder = [
|
||||
'requests_poll_interval_seconds',
|
||||
'requests_delta_sync_interval_minutes',
|
||||
@@ -716,10 +720,13 @@ export default function SettingsPage({ section }: SettingsPageProps) {
|
||||
title: SECTION_LABELS[sectionKey] ?? sectionKey,
|
||||
items: (() => {
|
||||
const sectionItems = groupedSettings[sectionKey] ?? []
|
||||
const filtered =
|
||||
sectionKey === 'requests' || sectionKey === 'artwork' || sectionKey === 'site'
|
||||
? sectionItems.filter((setting) => !hiddenSettingKeys.has(setting.key))
|
||||
: sectionItems
|
||||
const filtered = sectionItems.filter((setting) => {
|
||||
if (obsoleteSettingKeys.has(setting.key)) return false
|
||||
if (sectionKey === 'requests' || sectionKey === 'artwork' || sectionKey === 'site') {
|
||||
return !hiddenSettingKeys.has(setting.key)
|
||||
}
|
||||
return true
|
||||
})
|
||||
if (sectionKey === 'requests') {
|
||||
return sortByOrder(filtered, requestSettingOrder)
|
||||
}
|
||||
@@ -824,12 +831,10 @@ export default function SettingsPage({ section }: SettingsPageProps) {
|
||||
sonarr_api_key: 'API key for Sonarr.',
|
||||
sonarr_quality_profile_id: 'Quality profile used when adding TV shows.',
|
||||
sonarr_root_folder: 'Root folder where Sonarr stores TV shows.',
|
||||
sonarr_qbittorrent_category: 'qBittorrent category for manual Sonarr downloads.',
|
||||
radarr_base_url: 'Radarr server URL for movies (FQDN or IP). Scheme is optional.',
|
||||
radarr_api_key: 'API key for Radarr.',
|
||||
radarr_quality_profile_id: 'Quality profile used when adding movies.',
|
||||
radarr_root_folder: 'Root folder where Radarr stores movies.',
|
||||
radarr_qbittorrent_category: 'qBittorrent category for manual Radarr downloads.',
|
||||
prowlarr_base_url:
|
||||
'Prowlarr server URL for indexer searches (FQDN or IP). Scheme is optional.',
|
||||
prowlarr_api_key: 'API key for Prowlarr.',
|
||||
@@ -2398,7 +2403,7 @@ export default function SettingsPage({ section }: SettingsPageProps) {
|
||||
onClick={() => void saveSettingGroup(sectionGroup)}
|
||||
disabled={sectionSaving[sectionGroup.key] || sectionTesting[sectionGroup.key]}
|
||||
>
|
||||
{sectionSaving[sectionGroup.key] ? 'Saving...' : 'Save section'}
|
||||
{sectionSaving[sectionGroup.key] ? 'Saving...' : `Save ${sectionGroup.title}`}
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user