From ee871dc8eade510479933aeed850349d09edb4c6 Mon Sep 17 00:00:00 2001 From: SnapOtter Date: Sat, 9 May 2026 11:31:36 +0800 Subject: [PATCH] feat: add Deep Enhance toggle to image enhancement UI Toggle sends deepEnhance: true in settings to enable AI-powered noise/artifact cleanup via SCUNet after the Sharp pipeline. --- .../tools/image-enhancement-settings.tsx | 38 +++++++++++++++++-- packages/shared/src/i18n/en.ts | 5 +++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/apps/web/src/components/tools/image-enhancement-settings.tsx b/apps/web/src/components/tools/image-enhancement-settings.tsx index 3a643765..b5e2d509 100644 --- a/apps/web/src/components/tools/image-enhancement-settings.tsx +++ b/apps/web/src/components/tools/image-enhancement-settings.tsx @@ -6,6 +6,7 @@ import { Sparkles, User, UtensilsCrossed, + Wand2, X, } from "lucide-react"; import { useEffect, useRef, useState } from "react"; @@ -156,6 +157,7 @@ export function ImageEnhancementControls({ sharpness: true, denoise: true, }); + const [deepEnhance, setDeepEnhance] = useState(false); const analyzeAbortRef = useRef(null); const onChangeRef = useRef(onChange); @@ -200,8 +202,8 @@ export function ImageEnhancementControls({ // Emit settings when mode/intensity/toggles change useEffect(() => { - onChangeRef.current?.({ mode, intensity, corrections: toggles }); - }, [mode, intensity, toggles]); + onChangeRef.current?.({ mode, intensity, corrections: toggles, deepEnhance }); + }, [mode, intensity, toggles, deepEnhance]); // CSS filter preview useEffect(() => { @@ -319,6 +321,32 @@ export function ImageEnhancementControls({ /> + {/* Deep Enhance toggle */} +
+
+ +
+

Deep Enhance (AI)

+

+ Removes noise and artifacts using AI +

+
+
+ +
+ {/* Analysis badges */} {analyzing && (
@@ -454,7 +482,11 @@ export function ImageEnhancementSettings({ disabled={!hasFile || processing} className="w-full py-2.5 rounded-lg bg-primary text-primary-foreground font-medium disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-center gap-2" > - {files.length > 1 ? `Enhance (${files.length} files)` : "Enhance"} + {files.length > 1 + ? `${settings.deepEnhance ? "Deep Enhance" : "Enhance"} (${files.length} files)` + : settings.deepEnhance + ? "Deep Enhance" + : "Enhance"} )} diff --git a/packages/shared/src/i18n/en.ts b/packages/shared/src/i18n/en.ts index 05e65c42..151647c7 100644 --- a/packages/shared/src/i18n/en.ts +++ b/packages/shared/src/i18n/en.ts @@ -194,6 +194,11 @@ export const en = { }, pipeline: { name: "Pipeline Builder", description: "Chain multiple tools into a workflow" }, }, + imageEnhancement: { + deepEnhance: "Deep Enhance (AI)", + deepEnhanceDescription: "Removes noise and artifacts using AI", + deepEnhanceRequires: "Requires Upscale & Enhance bundle", + }, settings: { title: "Settings", general: "General",