Commit Graph
519 Commits
Author SHA1 Message Date
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
Dariusz L bb93970aec refactor: centralize preview blob loading 2026-08-13 15:46:02 +02:00
Dariusz L 11ba23d384 refactor: centralize matting status responses 2026-08-13 09:48:14 +02:00