From 009a37f0a70fc1314a653a2b301f6ed677a77bd9 Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Thu, 4 Dec 2025 14:38:24 -0500 Subject: [PATCH] feat: system settings --- .../lib/components/SystemSettingsCard.svelte | 30 ++ .../admin-settings/AuthSettings.svelte | 291 --------------- .../admin-settings/BackupSettings.svelte | 83 ----- .../admin-settings/ImageSettings.svelte | 180 ---------- .../admin-settings/JobSettings.svelte | 68 ---- .../admin-settings/LoggingSettings.svelte | 46 --- .../MachineLearningSettings.svelte | 331 ------------------ .../admin-settings/MaintenanceSettings.svelte | 35 -- .../admin-settings/MapSettings.svelte | 82 ----- .../admin-settings/MetadataSettings.svelte | 28 -- .../NewVersionCheckSettings.svelte | 27 -- .../NightlyTasksSettings.svelte | 64 ---- .../admin-settings/ServerSettings.svelte | 49 --- .../admin-settings/ThemeSettings.svelte | 30 -- .../admin-settings/TrashSettings.svelte | 42 --- .../admin-settings/UserSettings.svelte | 35 -- .../settings/SystemConfigButtonRow.svelte | 7 +- .../settings/setting-checkboxes.svelte | 2 +- .../settings/setting-input-field.svelte | 2 +- .../settings/setting-select.svelte | 2 +- .../settings/setting-switch.svelte | 6 +- .../settings/setting-textarea.svelte | 2 +- web/src/lib/modals/SystemSettingsModal.svelte | 69 ++++ web/src/lib/services/system-config.service.ts | 145 +++++++- web/src/lib/types.ts | 4 +- web/src/routes/+layout.svelte | 1 + .../admin/system-settings/+layout.svelte | 62 ++++ .../system-settings/{+page.ts => +layout.ts} | 5 - .../routes/admin/system-settings/+page.svelte | 237 ------------- .../authentication/+page.svelte | 257 ++++++++++++++ .../admin/system-settings/backup/+page.svelte | 70 ++++ .../admin/system-settings/image/+page.svelte | 146 ++++++++ .../admin/system-settings/job/+page.svelte | 58 +++ .../system-settings/library/+page.svelte | 20 ++ .../system-settings/location/+page.svelte | 58 +++ .../system-settings/logging/+page.svelte | 33 ++ .../machine-learning/+page.svelte | 294 ++++++++++++++++ .../system-settings/metadata/+page.svelte | 16 + .../nightly-tasks/+page.svelte | 53 +++ .../notifications/+page.svelte | 20 ++ .../admin/system-settings/server/+page.svelte | 34 ++ .../storage-template/+page.svelte | 20 ++ .../admin/system-settings/theme/+page.svelte | 17 + .../admin/system-settings/trash/+page.svelte | 29 ++ .../admin/system-settings/user/+page.svelte | 20 ++ .../version-check/+page.svelte | 16 + .../video-transcoding/+page.svelte | 20 ++ 47 files changed, 1498 insertions(+), 1648 deletions(-) create mode 100644 web/src/lib/components/SystemSettingsCard.svelte delete mode 100644 web/src/lib/components/admin-settings/AuthSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/BackupSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/ImageSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/JobSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/LoggingSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/MachineLearningSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/MaintenanceSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/MapSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/MetadataSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/NewVersionCheckSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/NightlyTasksSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/ServerSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/ThemeSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/TrashSettings.svelte delete mode 100644 web/src/lib/components/admin-settings/UserSettings.svelte create mode 100644 web/src/lib/modals/SystemSettingsModal.svelte create mode 100644 web/src/routes/admin/system-settings/+layout.svelte rename web/src/routes/admin/system-settings/{+page.ts => +layout.ts} (66%) create mode 100644 web/src/routes/admin/system-settings/authentication/+page.svelte create mode 100644 web/src/routes/admin/system-settings/backup/+page.svelte create mode 100644 web/src/routes/admin/system-settings/image/+page.svelte create mode 100644 web/src/routes/admin/system-settings/job/+page.svelte create mode 100644 web/src/routes/admin/system-settings/library/+page.svelte create mode 100644 web/src/routes/admin/system-settings/location/+page.svelte create mode 100644 web/src/routes/admin/system-settings/logging/+page.svelte create mode 100644 web/src/routes/admin/system-settings/machine-learning/+page.svelte create mode 100644 web/src/routes/admin/system-settings/metadata/+page.svelte create mode 100644 web/src/routes/admin/system-settings/nightly-tasks/+page.svelte create mode 100644 web/src/routes/admin/system-settings/notifications/+page.svelte create mode 100644 web/src/routes/admin/system-settings/server/+page.svelte create mode 100644 web/src/routes/admin/system-settings/storage-template/+page.svelte create mode 100644 web/src/routes/admin/system-settings/theme/+page.svelte create mode 100644 web/src/routes/admin/system-settings/trash/+page.svelte create mode 100644 web/src/routes/admin/system-settings/user/+page.svelte create mode 100644 web/src/routes/admin/system-settings/version-check/+page.svelte create mode 100644 web/src/routes/admin/system-settings/video-transcoding/+page.svelte diff --git a/web/src/lib/components/SystemSettingsCard.svelte b/web/src/lib/components/SystemSettingsCard.svelte new file mode 100644 index 0000000000..629cfee8e0 --- /dev/null +++ b/web/src/lib/components/SystemSettingsCard.svelte @@ -0,0 +1,30 @@ + + + + + {title} + + {#if typeof subtitle === 'string'} + {subtitle} + {:else} + {@render subtitle?.()} + {/if} + + + +
+ {@render children?.()} +
+
+
diff --git a/web/src/lib/components/admin-settings/AuthSettings.svelte b/web/src/lib/components/admin-settings/AuthSettings.svelte deleted file mode 100644 index c53060706e..0000000000 --- a/web/src/lib/components/admin-settings/AuthSettings.svelte +++ /dev/null @@ -1,291 +0,0 @@ - - -
-
-
e.preventDefault()}> -
- -
- - - {#snippet children({ message })} - - {message} - - {/snippet} - - - - - - {#if configToEdit.oauth.enabled} -
- -
- {$t('admin.unlink_all_oauth_accounts_description')} - -
- - - - - - - - {#if configToEdit.oauth.clientSecret} - - {/if} - - - - - - - - - - - - - - - - - - - - - - - - handleToggleOverride()} - bind:checked={configToEdit.oauth.mobileOverrideEnabled} - /> - - {#if configToEdit.oauth.mobileOverrideEnabled} - - {/if} - {/if} -
-
- - -
-
- -
-
-
- - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/BackupSettings.svelte b/web/src/lib/components/admin-settings/BackupSettings.svelte deleted file mode 100644 index fc374ddd6f..0000000000 --- a/web/src/lib/components/admin-settings/BackupSettings.svelte +++ /dev/null @@ -1,83 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - - - - - {#snippet descriptionSnippet()} -

- - {#snippet children({ message })} - - {message} -
-
- {/snippet} -
-

- {/snippet} -
- - - - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/ImageSettings.svelte b/web/src/lib/components/admin-settings/ImageSettings.svelte deleted file mode 100644 index afed6b3738..0000000000 --- a/web/src/lib/components/admin-settings/ImageSettings.svelte +++ /dev/null @@ -1,180 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - - - - - - - - - - - - - - - - - (configToEdit.image.fullsize.enabled = isChecked)} - isEdited={configToEdit.image.fullsize.enabled !== config.image.fullsize.enabled} - {disabled} - /> - -
- - - - -
- -
- (configToEdit.image.colorspace = isChecked ? Colorspace.P3 : Colorspace.Srgb)} - isEdited={configToEdit.image.colorspace !== config.image.colorspace} - {disabled} - /> -
- -
- (configToEdit.image.extractEmbedded = !configToEdit.image.extractEmbedded)} - isEdited={configToEdit.image.extractEmbedded !== config.image.extractEmbedded} - {disabled} - /> -
-
- -
- -
-
-
-
diff --git a/web/src/lib/components/admin-settings/JobSettings.svelte b/web/src/lib/components/admin-settings/JobSettings.svelte deleted file mode 100644 index 94b4426dbb..0000000000 --- a/web/src/lib/components/admin-settings/JobSettings.svelte +++ /dev/null @@ -1,68 +0,0 @@ - - -
-
-
event.preventDefault()}> - {#each queueNames as queueName (queueName)} -
- {#if isSystemConfigJobDto(queueName)} - - {:else} - - {/if} -
- {/each} - -
- -
-
-
-
diff --git a/web/src/lib/components/admin-settings/LoggingSettings.svelte b/web/src/lib/components/admin-settings/LoggingSettings.svelte deleted file mode 100644 index 6052b8ea9f..0000000000 --- a/web/src/lib/components/admin-settings/LoggingSettings.svelte +++ /dev/null @@ -1,46 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - - - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/MachineLearningSettings.svelte b/web/src/lib/components/admin-settings/MachineLearningSettings.svelte deleted file mode 100644 index 579efef916..0000000000 --- a/web/src/lib/components/admin-settings/MachineLearningSettings.svelte +++ /dev/null @@ -1,331 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - -
- -
- {#each configToEdit.machineLearning.urls as _, i (i)} - - {#snippet trailingSnippet()} - {#if configToEdit.machineLearning.urls.length > 1} - configToEdit.machineLearning.urls.splice(i, 1)} - icon={mdiTrashCanOutline} - color="danger" - /> - {/if} - {/snippet} - - {/each} -
- -
- -
-
- - -
- - -
- - - - -
-
- - -
- - -
- - - {#snippet descriptionSnippet()} -

- - {#snippet children({ message })} - {message} - {/snippet} - -

- {/snippet} -
-
-
- - -
- - -
- - -
-
- - -
- - -
- - - - - - - - -
-
- - -
- - -
- - - - - - - - -
-
- - -
-
diff --git a/web/src/lib/components/admin-settings/MaintenanceSettings.svelte b/web/src/lib/components/admin-settings/MaintenanceSettings.svelte deleted file mode 100644 index 592091c62a..0000000000 --- a/web/src/lib/components/admin-settings/MaintenanceSettings.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - -
-
-
- -
-
-
diff --git a/web/src/lib/components/admin-settings/MapSettings.svelte b/web/src/lib/components/admin-settings/MapSettings.svelte deleted file mode 100644 index 692a5cfcf5..0000000000 --- a/web/src/lib/components/admin-settings/MapSettings.svelte +++ /dev/null @@ -1,82 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- -
- - -
- - - -
- - - {#snippet subtitleSnippet()} -

- - {#snippet children({ message })} - - {message} - - {/snippet} - -

- {/snippet} -
- -
- - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/MetadataSettings.svelte b/web/src/lib/components/admin-settings/MetadataSettings.svelte deleted file mode 100644 index 0db36e0e82..0000000000 --- a/web/src/lib/components/admin-settings/MetadataSettings.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- -
- - - -
-
diff --git a/web/src/lib/components/admin-settings/NewVersionCheckSettings.svelte b/web/src/lib/components/admin-settings/NewVersionCheckSettings.svelte deleted file mode 100644 index d8a79d6236..0000000000 --- a/web/src/lib/components/admin-settings/NewVersionCheckSettings.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/NightlyTasksSettings.svelte b/web/src/lib/components/admin-settings/NightlyTasksSettings.svelte deleted file mode 100644 index 9647f0c7c3..0000000000 --- a/web/src/lib/components/admin-settings/NightlyTasksSettings.svelte +++ /dev/null @@ -1,64 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - - - - - -
- - - -
-
diff --git a/web/src/lib/components/admin-settings/ServerSettings.svelte b/web/src/lib/components/admin-settings/ServerSettings.svelte deleted file mode 100644 index 936c4f406e..0000000000 --- a/web/src/lib/components/admin-settings/ServerSettings.svelte +++ /dev/null @@ -1,49 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - - - - - -
- -
-
-
-
-
diff --git a/web/src/lib/components/admin-settings/ThemeSettings.svelte b/web/src/lib/components/admin-settings/ThemeSettings.svelte deleted file mode 100644 index f2e9b51f11..0000000000 --- a/web/src/lib/components/admin-settings/ThemeSettings.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/TrashSettings.svelte b/web/src/lib/components/admin-settings/TrashSettings.svelte deleted file mode 100644 index 9e71d0abc1..0000000000 --- a/web/src/lib/components/admin-settings/TrashSettings.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - -
-
-
event.preventDefault()}> -
- - -
- - - - -
-
-
-
diff --git a/web/src/lib/components/admin-settings/UserSettings.svelte b/web/src/lib/components/admin-settings/UserSettings.svelte deleted file mode 100644 index 23ea052b52..0000000000 --- a/web/src/lib/components/admin-settings/UserSettings.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - -
-
-
e.preventDefault()}> -
- -
- -
- -
-
-
-
diff --git a/web/src/lib/components/shared-components/settings/SystemConfigButtonRow.svelte b/web/src/lib/components/shared-components/settings/SystemConfigButtonRow.svelte index da58d779e9..0f2d0d2b16 100644 --- a/web/src/lib/components/shared-components/settings/SystemConfigButtonRow.svelte +++ b/web/src/lib/components/shared-components/settings/SystemConfigButtonRow.svelte @@ -19,11 +19,6 @@ !isEqual(pick(systemConfigManager.value, keys), pick(systemConfigManager.defaultValue, keys)), ); - const handleReset = () => { - configToEdit = systemConfigManager.cloneValue(); - toastManager.info($t('admin.reset_settings_to_recent_saved')); - }; - const handleResetToDefault = () => { const defaultConfig = systemConfigManager.cloneDefaultValue(); @@ -51,7 +46,7 @@
- +
diff --git a/web/src/lib/components/shared-components/settings/setting-checkboxes.svelte b/web/src/lib/components/shared-components/settings/setting-checkboxes.svelte index 3ec8509411..b2c900748a 100644 --- a/web/src/lib/components/shared-components/settings/setting-checkboxes.svelte +++ b/web/src/lib/components/shared-components/settings/setting-checkboxes.svelte @@ -29,7 +29,7 @@ } -
+