Files
MilkyShots/Butter/Settings/Settings.cs
REDCODE 96f431fb41 feat: add PreviewJob and upgrade thumbnails to WebP
- Add PreviewJob (WebP) — same master/sub-job pattern as ThumbnailJob
- Convert ThumbnailJob from JPEG to WebP with configurable quality
- Add ThumbnailQuality/PreviewQuality settings (configurable in settings UI)
- Add PreviewSize, ThumbnailFormat, PreviewFormat fields to Asset model
- Add format-aware repo queries for auto-regeneration of stale JPEGs
- Fix MIME types in MediaRepository/MediaController to return image/webp
- Wire PreviewJob into JobScheduler, JobMapper, JobsController
- Expose quality settings on Settings page (Jobs group, range sliders)
- Add 'Make Previews' button on Jobs page, reorder to scan/metadata/thumb/preview/phash/integrity
2026-07-07 19:41:51 +02:00

66 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace Butter.Settings;
/// <summary>
/// Defines the available application settings keys.
/// </summary>
public enum Settings {
/// <summary>Enable or disable self user registration.</summary>
UserRegistrationEnabled,
/// <summary>Enable or disable folder scanning.</summary>
FolderScanEnabled,
/// <summary>Interval in minutes for folder scanning.</summary>
FolderScanInterval,
/// <summary>Enable or disable file upload.</summary>
FileUploadEnabled,
/// <summary>Maximum file size for uploads in bytes.</summary>
FileUploadMaxSize,
/// <summary>Path to store thumbnails.</summary>
ThumbnailPath,
/// <summary>Path to store previews.</summary>
PreviewPath,
/// <summary>Longest side size for thumbnails.</summary>
ThumbnailSize,
/// <summary>Longest side size for previews.</summary>
PreviewSize,
/// <summary>Maximum number of concurrent jobs.</summary>
MaxConcurrentJobs,
/// <summary>Number of days to keep completed/failed/canceled jobs.</summary>
JobRetentionDays,
/// <summary>Number of assets to process per sub-job batch.</summary>
JobBatchSize,
/// <summary>Quality setting (1100) for WebP thumbnail encoding.</summary>
ThumbnailQuality,
/// <summary>Quality setting (1100) for WebP preview encoding.</summary>
PreviewQuality
}
/// <summary>
/// Provides extension methods for the <see cref="Settings"/> enum.
/// </summary>
public static class SettingsExtensions {
/// <summary>
/// Converts a <see cref="Settings"/> value to its human-readable display string.
/// </summary>
/// <param name="setting">The setting to convert.</param>
/// <returns>A human-readable string representation of the setting.</returns>
public static string AsString(this Settings setting) {
return setting switch {
Settings.UserRegistrationEnabled => "User Registration Enabled",
Settings.FolderScanEnabled => "Folder Scan Enabled",
Settings.FolderScanInterval => "Folder Scan Interval",
Settings.FileUploadEnabled => "File Upload Enabled",
Settings.FileUploadMaxSize => "File Upload MaxSize",
Settings.ThumbnailPath => "Thumbnail Path",
Settings.PreviewPath => "Preview Path",
Settings.ThumbnailSize => "Thumbnail Size",
Settings.PreviewSize => "Preview Size",
Settings.MaxConcurrentJobs => "Max Concurrent Jobs",
Settings.JobRetentionDays => "Job Retention Days",
Settings.JobBatchSize => "Job Batch Size",
Settings.ThumbnailQuality => "Thumbnail Quality",
Settings.PreviewQuality => "Preview Quality",
_ => setting.ToString() // Fallback to the enum name
};
}
}