feat(noise-removal): SOTA noise removal with 4 quality tiers (#57)

* feat(noise-removal): register tool in shared constants and i18n

* feat(noise-removal): add SCUNet and NAFNet model architectures

* feat(noise-removal): add Python denoising engine with 4 quality tiers

* feat(noise-removal): add TypeScript bridge for Python sidecar

* feat(noise-removal): add frontend settings with 4-tier selector

* feat(noise-removal): register in tool registry and pipeline

* feat(noise-removal): add Fastify API route with Zod validation

* feat(noise-removal): add SCUNet and NAFNet model downloads to Docker build

* test(noise-removal): add to e2e tool page rendering tests

* test(noise-removal): add integration tests for API endpoint

* style: fix biome formatting and import ordering

* fix(noise-removal): use correct model download URLs

NAFNet model is hosted on HuggingFace, not GitHub releases.
Also align SCUNet URL to use the KAIR releases (same as Docker build).

* fix(noise-removal): remove emojis from tier selector, simplify labels

Drop emoji icons from Quick/Balanced/Quality/Maximum buttons. Replace
technical algorithm names with plain descriptions users can understand.

---------

Co-authored-by: stirling-image <stirling-image@users.noreply.github.com>
This commit is contained in:
stirling-image
2026-04-13 19:50:23 +08:00
committed by GitHub
co-authored by stirling-image
parent 61794dca2d
commit dfffc0a8cc
16 changed files with 1804 additions and 0 deletions
+9
View File
@@ -185,6 +185,14 @@ export const TOOLS: Tool[] = [
icon: "Palette",
route: "/colorize",
},
{
id: "noise-removal",
name: "Noise Removal",
description: "AI-powered noise and grain removal",
category: "ai",
icon: "Sparkles",
route: "/noise-removal",
},
// Watermark & Overlay
{
id: "watermark-text",
@@ -405,4 +413,5 @@ export const PYTHON_SIDECAR_TOOLS = [
"erase-object",
"ocr",
"colorize",
"noise-removal",
] as const;
+4
View File
@@ -80,6 +80,10 @@ export const en = {
description:
"One-click auto-improve with smart exposure, contrast, color, and sharpness correction",
},
"noise-removal": {
name: "Noise Removal",
description: "AI-powered noise and grain removal",
},
"content-aware-resize": {
name: "Content-Aware Resize",
description: "Intelligently resize images while preserving important content",