diff --git a/Cargo.toml b/Cargo.toml
index 5f401d6..92ab29d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -42,6 +42,8 @@ chrono = { version = "0.4", features = ["serde"] }
directories = "5"
bytes = "1"
tokio-util = "0.7"
+async-trait = "0.1"
+dotenvy = "0.15"
[dev-dependencies]
tokio-test = "0.4"
diff --git a/frontend/src/lib/components/SettingsPanel.svelte b/frontend/src/lib/components/SettingsPanel.svelte
index c13ffea..37e9370 100644
--- a/frontend/src/lib/components/SettingsPanel.svelte
+++ b/frontend/src/lib/components/SettingsPanel.svelte
@@ -19,6 +19,7 @@
ear_threshold: 0.2,
max_workers: 4,
keep_intermediates: false,
+ brightness: null,
},
video: {
framerate: 15,
@@ -28,6 +29,17 @@
},
});
+ // Helper to ensure brightness config exists
+ function ensureBrightnessConfig() {
+ if (!config.processing.brightness) {
+ config.processing.brightness = {
+ enabled: false,
+ min_brightness: 0.1,
+ max_brightness: 0.95,
+ };
+ }
+ }
+
async function loadConfig() {
loading = true;
error = null;
@@ -75,6 +87,7 @@
ear_threshold: 0.2,
max_workers: 4,
keep_intermediates: false,
+ brightness: null,
},
video: {
framerate: 15,
@@ -196,6 +209,65 @@
{config.processing.pose_threshold}°
+
+
+
+
+
+ {#if config.processing.brightness?.enabled}
+
+
+
+ {
+ ensureBrightnessConfig();
+ config.processing.brightness.min_brightness = parseFloat(e.target.value);
+ }}
+ min="0"
+ max="0.5"
+ step="0.05"
+ />
+ {(config.processing.brightness?.min_brightness ?? 0.1).toFixed(2)}
+
+
+
+
+
+
+ {
+ ensureBrightnessConfig();
+ config.processing.brightness.max_brightness = parseFloat(e.target.value);
+ }}
+ min="0.5"
+ max="1.0"
+ step="0.05"
+ />
+ {(config.processing.brightness?.max_brightness ?? 0.95).toFixed(2)}
+
+
+ {/if}
+
{:else if activeTab === 'output'}