Commit Graph
521 Commits
Author SHA1 Message Date
Dariusz L 4e660353b9 Re-sync workflow overview selection when moving LayerForge into fullscreen 2026-08-14 23:43:58 +02:00
Dariusz L ad1277d964 sync LayerForge workflow overview with ComfyUI Vue properties panel
Replace the old 1s promise-based wait loops with a single cancelable
requestAnimationFrame sync path so opening the Workflow Overview no
longer races ComfyUI's Vue Nodes 2.0 properties panel.

Access the Vue/Pinia canvas store directly and refresh its selected items
after native selection mutations. Make selection clearing repeatable so
ComfyUI can restore the selection while mounting the panel without
leaving the LayerForge node highlighted, and explicitly sync the final
empty selection state to the properties panel.
2026-08-14 23:39:28 +02:00
Dariusz L 9f1e35aa2b Preserve ComfyUI selection across workflow overview toggle 2026-08-14 22:50:07 +02:00
Dariusz L 99b0b80f1d feat: hide canvas editor DOM widget in panel 2026-08-14 22:33:49 +02:00
Dariusz L cfe2a92f12 feat: add workflow overview toggle to canvas editor modal 2026-08-14 21:58:11 +02:00
Dariusz L 0e636ed99b feat: improve tooltip behavior with persistent and interactive modes
- Convert keyboard shortcuts help button to persistent click-toggle tooltip
- Add interactive, persistent, and onDismiss options to TooltipManager
- Dismiss persistent tooltips on outside pointerdown or Escape key
- Add delayed hide for interactive tooltips when leaving the target
- Update tooltip CSS for scrolling, interactive pointer-events, and text mode
2026-08-14 21:09:13 +02:00
Dariusz L 05c977f342 refactor: centralize tooltip handling into TooltipManager
Replace scattered inline tooltip implementations across canvas_view,
custom_shape_menu, layers_panel, batch_preview_manager, and notifications
with a single shared TooltipManager class.

- New src/utils/tooltip_manager.ts (and compiled js/utils/tooltip_manager.js)
  provides observeRoot/bindTooltips/setTooltip/showTooltip/hideTooltip API
- Migrate title attributes to data-tooltip and normalize via MutationObserver
- Rename tooltip CSS from .lf-painter-tooltip/.lf-layerforge-tooltip to
  .lf-global-tooltip and raise z-index to 1000001
- Remove duplicate matting-specific tooltip styles from canvas_view.css
- Update generated js/ outputs to match src/ changes
2026-08-14 20:16:26 +02:00
Dariusz L 3d860468ac Rewrite README for clarity and conciseness 2026-08-14 19:33:36 +02:00
Dariusz L 0237df9d19 Fix mask tool cursor feedback and update ComfyUI issue template link 2026-08-14 19:18:15 +02:00
Dariusz L 6d3ed9f458 fix: preserve mask brush cursor over image canvas 2026-08-14 19:14:42 +02:00
Dariusz L 7365503fcf refactor: remove stale local API documentation 2026-08-14 18:59:16 +02:00
Dariusz L aa499f8668 fix: improve mask editor panning and cursor behavior
- Resolve mouse button in mask mode so middle-click pans instead of
  inadvertently starting a mask draw, and cleanly end any active mask
  stroke before panning.
- Redraw the mask brush cursor during pan so the brush outline stays
  under the actual mouse position after the viewport transform changes.
- Reset interaction state on pointer up when leaving drawing modes so
  stale interaction state cannot persist across gestures.
- Set the canvas cursor to grabbing when panning begins.
2026-08-14 18:56:47 +02:00
Dariusz L f38402e107 feat: improve mask editor compatibility and state synchronization 2026-08-14 18:24:54 +02:00
Dariusz L 5ea337fb51 refactor: standardize frontend file naming 2026-08-14 16:56:46 +02:00
Dariusz L b5f09e88fb fix: restore python logger package exports 2026-08-14 16:41:19 +02:00
Dariusz L 34a7896fd9 refactor: remove compatibility facades 2026-08-14 16:38:16 +02:00
Dariusz L 84dd15aff5 refactor: remove legacy logger re-exports 2026-08-14 16:23:27 +02:00
Dariusz L fc4292ecb0 ci: enforce generated frontend and coverage 2026-08-14 15:56:31 +02:00
Dariusz L 248810ae87 test: harden async and persistence resilience 2026-08-14 15:51:39 +02:00
Dariusz L 080bd8fb60 docs: document frontend architecture 2026-08-14 12:10:22 +02:00
Dariusz L c56a271cbd test: cover frontend stability boundaries 2026-08-14 12:08:10 +02:00
Dariusz L 3e44835d94 chore: clean frontend lint warnings 2026-08-14 12:04:27 +02:00
Dariusz L 2645c0fa99 test: cover ComfyUI integration contracts 2026-08-14 11:56:05 +02:00
Dariusz L 899b1fd41f refactor: separate mask result processing 2026-08-14 11:52:38 +02:00
Dariusz L b4f14b5774 refactor: move image cache into media domain 2026-08-14 11:49:48 +02:00
Dariusz L 1c5393a47c refactor: unify persistence contracts 2026-08-14 11:43:55 +02:00
Dariusz L 55dcf6617f refactor: isolate canvas history model 2026-08-14 11:38:27 +02:00
Dariusz L f206ff0289 refactor: extract graph integration from CanvasView 2026-08-14 11:29:57 +02:00
Dariusz L abd16b98b5 test: enforce frontend architecture boundaries 2026-08-14 11:20:31 +02:00
Dariusz L 12692a2564 refactor: organize frontend source modules 2026-08-14 11:06:38 +02:00
Dariusz L 32cb0d0674 fix: defer input image loading until after state restore and deduplicate by stable source identity
- Load initial state before checking connected inputs so already-restored
  layers are present and can be skipped.
- Track layerForgeInputImageIdentity on layers and normalize sources to
  ignore cache-busting query parameters.
- Sequence checkForInputData calls through a promise chain to avoid races.
- Route single backend input_image through addBatchImages so dedup applies.
- Update characterization tests for the new CanvasIO paths and Canvas state flags.
2026-08-14 05:13:42 +02:00
Dariusz L 7804f6e3de feat: add Unlink button to disconnect image inputs from LayerForge 2026-08-14 04:56:48 +02:00
Dariusz L abe0ea7ce7 Use stable connectionIndex for multi-image input labels 2026-08-14 04:48:32 +02:00
Dariusz L 1468065210 feat: add Show Inputs menu for connected canvas input images 2026-08-14 04:45:21 +02:00
Dariusz L c8b9e3ccc4 Add ordered multi-image input support via virtual transport links 2026-08-14 04:25:08 +02:00
Dariusz L a942228ef3 Use workflow-scoped canvas state keys and stabilize preview widget sizing 2026-08-13 22:45:27 +02:00
Dariusz L e9813d5016 Improve canvas image preview widget sizing and visibility handling 2026-08-13 22:19:13 +02:00
Dariusz L 37179fd29d Make LayerForge canvas and controls blend with ComfyUI dark theme
Use transparent canvas backgrounds, rgba styling, and CSS custom properties
(--lf-canvas-fill, --lf-surface-border, --lf-controls-surface,
--lf-layers-surface, --lf-surface-shadow) so the editor's native color tints
the node underneath. CanvasRenderer now clears the canvas each frame and
reads the fill from CSS, avoiding alpha buildup and keeping the UI readable.
2026-08-13 21:44:31 +02:00
Dariusz L c9df359ecd Refresh layer panel after matting replaces a layer object 2026-08-13 21:10:58 +02:00
Dariusz L 48cd6c0453 Merge branch 'main' of https://github.com/Azornes/Comfyui-LayerForge 2026-08-13 20:49:56 +02:00
Dariusz L 11d448cdc8 Add matting download progress, interrupt handling, and inverted mask mode 2026-08-13 20:47:10 +02:00
Dariusz L a830da7593 Store Matting settings server-side and support optional Hugging Face token 2026-08-13 18:20:52 +02:00
Dariusz L 91a16edde4 Update CanvasView.js 2026-08-13 18:00:05 +02:00
Dariusz L e4441dc832 feat: improve BRIA RMBG 2.0 transformers compatibility and error handling 2026-08-13 17:57:47 +02:00
Dariusz L 69931a15b4 refactor: split matting module into package and add BRIA RMBG 2.0 backend 2026-08-13 17:48:02 +02:00
Dariusz L 8cc87fb823 refactor: store BiRefNet checkpoints directly under background_removal 2026-08-13 16:58:09 +02:00
Dariusz L c80a1244f7 refactor: share mirror and canvas cloning logic 2026-08-13 15:59:40 +02:00
Dariusz L 486c43cd68 refactor: reuse image references during garbage collection 2026-08-13 15:55:27 +02:00
Dariusz L 03187ce8ed refactor: centralize fit-on-add policy 2026-08-13 15:52:47 +02:00
Dariusz L 23ad04b2de refactor: centralize canvas input identity 2026-08-13 15:48:25 +02:00