-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Generating preview...
-
-
-
-
-
-
![Color grading preview]()
-
-
-
-
-
-
-
-
-
-
- {{ formatTime(previewTimestamp) }}
-
-
- {{ formatTime(effectiveTimestampRange.start) }} - {{ formatTime(effectiveTimestampRange.end) }}
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copy Filter
-
-
-
- Paste Filter
-
-
-
-
-
-
- Copy to All Clips
-
-
-
- Reset
-
-
-
-
-
-
-
+
emit('copy-to-all-clips', f)"
+ />
diff --git a/src/gui-frontend/src/components/SettingsPanel.vue b/src/gui-frontend/src/components/SettingsPanel.vue
index cc373d4..8c625be 100644
--- a/src/gui-frontend/src/components/SettingsPanel.vue
+++ b/src/gui-frontend/src/components/SettingsPanel.vue
@@ -138,7 +138,7 @@
handleNumberChange('target_fps', value)"
:min="1"
:max="300"
@@ -150,7 +150,7 @@
handleNumberChange('crf', value)"
:min="0"
:max="51"
diff --git a/src/gui-frontend/src/composables/useFileHandler.ts b/src/gui-frontend/src/composables/useFileHandler.ts
index 29336e2..08a33dc 100644
--- a/src/gui-frontend/src/composables/useFileHandler.ts
+++ b/src/gui-frontend/src/composables/useFileHandler.ts
@@ -146,7 +146,7 @@ export function useFileHandler(
selectionOpId++
clipperStore.setVideoFile(null)
clearVideoState()
- resetMarkupState()
+ // Do NOT reset markup state; allow color grading with markup-only
}
/**
diff --git a/src/gui-frontend/src/utils/debounce.ts b/src/gui-frontend/src/utils/debounce.ts
new file mode 100644
index 0000000..295d2a0
--- /dev/null
+++ b/src/gui-frontend/src/utils/debounce.ts
@@ -0,0 +1,7 @@
+export function debounce(fn: (...args: A) => void, wait = 200) {
+ let t: ReturnType
+ return (...args: A): void => {
+ clearTimeout(t)
+ t = setTimeout(() => fn(...args), wait)
+ }
+}