From 7c9a25dd91b503e4f2b9e387340e6865c49450c9 Mon Sep 17 00:00:00 2001 From: Bryce Date: Sat, 28 Mar 2026 10:42:27 -0700 Subject: [PATCH] Restructure SAM rough mask workflow for sidebar preview - Add roughMaskThumbnailScale state with $watch to sync with main scale slider - Update sidebar thumbnail to use transform:scale() for consistent zoom between views - Modify openRoughMaskInNewWindow() to create HTML page with matching scale - Add denoise strength slider (10-100%) visible only when rough mask exists - Backend already supports denoise_strength parameter in prepare_mask_workflow_with_start() - Rough mask auto-clears after successful extraction - Add Playwright tests for UI changes and API parameter acceptance --- tools/ora_editor/routes/mask.py | 2 + tools/ora_editor/services/comfyui.py | 4 + .../templates/components/canvas.html | 8 -- .../templates/components/sidebar.html | 86 ++++++++---- tools/ora_editor/templates/editor.html | 124 +++++++++++++----- tools/ora_editor/tests/sam-rough-mask.spec.js | 88 +++++++++++++ 6 files changed, 240 insertions(+), 72 deletions(-) create mode 100644 tools/ora_editor/tests/sam-rough-mask.spec.js diff --git a/tools/ora_editor/routes/mask.py b/tools/ora_editor/routes/mask.py index a718b8f..0c0bf84 100644 --- a/tools/ora_editor/routes/mask.py +++ b/tools/ora_editor/routes/mask.py @@ -116,6 +116,7 @@ def api_mask_extract(): comfy_url = data.get('comfy_url', COMFYUI_BASE_URL) count = min(max(data.get('count', 1), 1), 10) start_mask_path = data.get('start_mask_path', None) + denoise_strength = data.get('denoise_strength', 0.8) logger.info(f"[MASK EXTRACT] Subject: {subject}") logger.info(f"[MASK EXTRACT] Use polygon: {use_polygon}") @@ -195,6 +196,7 @@ def api_mask_extract(): polygon_points=polygon_points, polygon_color=polygon_color, polygon_width=polygon_width, + denoise_strength=denoise_strength, workflow_template=workflow_template ) else: diff --git a/tools/ora_editor/services/comfyui.py b/tools/ora_editor/services/comfyui.py index ad8e4a8..6def3f2 100644 --- a/tools/ora_editor/services/comfyui.py +++ b/tools/ora_editor/services/comfyui.py @@ -279,6 +279,7 @@ class ComfyUIService: polygon_points: list | None = None, polygon_color: str = '#FF0000', polygon_width: int = 2, + denoise_strength: float = 0.8, workflow_template: dict | None = None ) -> dict: """Prepare the mask extraction workflow with a starting mask (lower denoise).""" @@ -319,6 +320,9 @@ class ComfyUIService: if "50" in workflow and 'inputs' in workflow["50"]: workflow["50"]["inputs"]["seed"] = seed + if "1:65" in workflow and 'inputs' in workflow["1:65"]: + workflow["1:65"]["inputs"]["denoise"] = denoise_strength + if "96" in workflow and 'inputs' in workflow["96"]: metadata = f"{batch_id}:{mask_index}" if batch_id else str(mask_index) workflow["96"]["inputs"]["external_uid"] = metadata diff --git a/tools/ora_editor/templates/components/canvas.html b/tools/ora_editor/templates/components/canvas.html index 2349799..bbc8386 100644 --- a/tools/ora_editor/templates/components/canvas.html +++ b/tools/ora_editor/templates/components/canvas.html @@ -43,14 +43,6 @@ - - SAM mask preview -