Commit Graph
284 Commits
Author SHA1 Message Date
AEmotionStudio bbac28dd88 fix(popout): broaden action button detection in popout viewer 2026-01-18 21:53:27 -08:00
AEmotionStudio ea2f96b015 perf: optimize magnified view update by caching canvas rect to avoid layout thrashing 2026-01-18 21:37:06 -08:00
Æmotion Studio 6db4b2a576 Merge pull request #29 from AEmotionStudio/bolt/layout-thrashing-fix-5688373778482661560
⚡ Bolt: Prevent layout thrashing in magnifier update loop
2026-01-18 21:20:05 -08:00
Æmotion Studio 089098df90 Merge pull request #30 from AEmotionStudio/sentinel/fix-xss-bypass-uimanager-7199572335326487852
🛡️ Sentinel: [HIGH] Fix XSS vulnerability in UIManager by removing isHtml bypass
2026-01-18 21:19:54 -08:00
Æmotion Studio ad0cc473bb Merge pull request #28 from AEmotionStudio/palette-accessibility-focus-2231388305888170951
🎨 Palette: Improve keyboard accessibility for sidebar settings
2026-01-18 21:13:06 -08:00
google-labs-jules[bot] f6a9e5faa7 security(ui): eliminate XSS vector by replacing isHtml bypass with strict specialType
Removed the `isHtml` flag support in `UIManager`, which allowed bypassing HTML escaping.
Replaced it with a `specialType` mechanism (specifically 'focus-node') to render trusted
HTML structures internally while ensuring dynamic values are always escaped.
Updated `Security.test.ts` to verify the fix and prevent regression.

Fixes: Potential XSS vulnerability via unchecked HTML injection.
2026-01-19 05:05:28 +00:00
google-labs-jules[bot] bb9c545eda perf: prevent layout thrashing in magnifier update loop
Refactors `MagnifyGlass.updateMagnifiedView` and `calculateSourceRegion` to accept an optional cached `DOMRect`. This allows `EventHandler` to pass the canvas dimensions it read before updating the glass position, preventing a forced synchronous reflow (Read-Write-Read cycle) that was previously occurring on every mouse move frame.

Optimizes the hot path for mouse movement and magnifier updates.
2026-01-19 05:00:41 +00:00
google-labs-jules[bot] ac4ba5e5de fix: correct css order for focus-visible on selects
Ensures that the focus-visible outline is not overridden by the generic focus rule.
2026-01-19 04:52:15 +00:00
google-labs-jules[bot] 1fe803d8fb feat: improve keyboard accessibility for sidebar settings
- Add visible focus indicators for interactive elements in the sidebar
- Add aria-valuetext to sliders to announce values with units
- Update journal with accessibility learnings
2026-01-19 04:41:54 +00:00
AEmotionStudio acc96254a6 fix: persist menu toggle button across Vue re-renders using MutationObserver 2026-01-18 20:40:38 -08:00
AEmotionStudio 0522d7e90b feat: add inline slider support to popout viewer 2026-01-18 20:29:04 -08:00
AEmotionStudio 8954d2d44d perf: disable sourcemaps, remove build artifacts, and adjust default glass Y offset 2026-01-18 18:24:00 -08:00
AEmotionStudio c57fe228e0 update known issues in readme 2026-01-18 16:29:59 -08:00
AEmotionStudio 8d50f6744f chore: release version 1.12.0 2026-01-18 13:42:29 -08:00
AEmotionStudio bdc9b31935 docs: update changelog with unreleased changes 2026-01-18 13:35:38 -08:00
AEmotionStudio 2927c140dc feat: sync popout widget edits and improve inspector parameter visibility
- Implemented 'onWidgetEdit' listener in 'InfoPanel' to force refresh when popout widgets change.
- Refactored 'NodeDataExtractor' to display all widgets in the inspector (matching popout behavior) and removed aggressive deduplication.
- Fixed theme update logic in 'UIManager' to correctly handle hyphenated theme names.
- Enhanced combo box editing in 'popout-viewer.html' with better selection and blur handling.
2026-01-18 11:51:41 -08:00
AEmotionStudio 8bdfbedf46 feat: add new themes and enhance popout viewer interaction
- Added 'Obsidian', 'Obsidian Dark', and 'Milk White' themes to Info Panel and PopOut viewer.
- Improved theme detection in 'StateManager' to support new themes.
- Implemented button widget support in PopOut viewer with 'button-click' event handling.
- Enhanced widget options handling in 'PopOutManager' for combo widgets.
- Updated dropdown accessibility tests.
2026-01-18 11:02:06 -08:00
AEmotionStudio cb589761c8 feat: add grid layout support for batch images in OffscreenRenderer
- Updated `drawNodeImages` to render multiple images from `node.imgs[]` in a grid.
- Implemented aspect-ratio-preserving centering for each image within its grid cell.
- Added configurable gap between images in the grid.
2026-01-18 01:24:21 -08:00
AEmotionStudio 6f99468ff7 docs: add click to watch on youtube statement to video links in README 2026-01-18 00:24:52 -08:00
AEmotionStudio 8213a086ab feat: add inline action buttons to inspector and improve widget handling
- Added support for inline action buttons in the inspector panel.
- Implemented `InlineControlFactory.createInlineButton` to execute widget callbacks.
- Enhanced `WidgetSyncManager` to detect 'button' widgets via type or heuristics.
- Updated `UIManager` and `NodeDataExtractor` to process actionable widgets.
- Added styles for inline action buttons.
- Added `Escape` key handler to slider widget editor.
- Refactored canvas coordinate calculations in `MagnifyGlass` for better accuracy.
2026-01-18 00:21:06 -08:00
Æmotion Studio 093bde19e0 Merge pull request #25 from AEmotionStudio/bolt/optimize-render-overlays-9313858051447850514
⚡ Bolt: Optimize renderHtmlOverlays loop
2026-01-17 22:15:16 -08:00
Æmotion Studio 75d6285678 Merge pull request #27 from AEmotionStudio/sentinel-fix-webgl-xss-17500734846144735282
🛡️ Sentinel: [MEDIUM] Fix potential XSS in WebGL error toast
2026-01-17 22:12:13 -08:00
Æmotion Studio 223ea86d45 Merge pull request #26 from AEmotionStudio/palette-sidebar-a11y-7261823567868187712
🎨 Palette: Sidebar A11y Improvements
2026-01-17 22:11:09 -08:00
google-labs-jules[bot] dd4e34df6f fix(security): prevent XSS in WebGL error toast by using DOM API
- Refactor `showWebGLError` to use `document.createElement` instead of `innerHTML`
- Replace inline `onclick` handler with `addEventListener` for CSP compliance
- Add unit test to verify XSS prevention and button functionality
2026-01-18 04:50:44 +00:00
google-labs-jules[bot] 5606a86256 feat(sidebar): improve accessibility of settings and inspector sections
- Add role="button", tabindex="0", and aria-expanded to section headers
- Implement keyboard navigation (Enter/Space) for expanding/collapsing sections
- Generate unique IDs for aria-controls to link headers and content bodies
- Ensure proper accessibility attributes for sidebar inspector panel

This change improves keyboard navigation and screen reader support for the
sidebar settings and inspector panels.
2026-01-18 04:43:22 +00:00
google-labs-jules[bot] 9935ec5077 perf: optimize renderHtmlOverlays by hoisting invariants
- Moves invariant calculations (DPR, scaling, pivot points) out of the widget loop in `renderHtmlOverlays`.
- Reduces redundant property accesses and arithmetic operations per frame.
- Improves performance for workflows with many visible nodes.
2026-01-18 04:43:04 +00:00
AEmotionStudio 371f4b49b7 Moved palette.md folders 2026-01-17 19:56:40 -08:00
AEmotionStudio b069004e7c chore: remove PRD.md from repository and update gitignore 2026-01-17 19:54:30 -08:00
AEmotionStudio 45bc6a4d35 feat(ui): add node navigation hotkeys and update documentation
- Added '*' hotkey to focus the currently inspected node
- Added 'ArrowLeft' and 'ArrowRight' hotkeys to navigate nodes by execution order
- Updated README.md and CHANGELOG.md with the new hotkeys and navigation features
2026-01-17 19:43:07 -08:00
AEmotionStudio 1348b093db docs: move virtual zoom alignment issue from known issues to fixed in v1.11.0 2026-01-17 18:59:09 -08:00
AEmotionStudio 988e100b18 docs: move inflated FPS counter from known issues to fixed in v1.11.0 2026-01-17 18:52:09 -08:00
AEmotionStudio da7c8b17f9 feat(ui): enhance keyboard navigation and hotkeys
- Added full keyboard support (Arrows, Enter, Esc) for all dropdown types
- Implemented global '*' hotkey to center canvas on currently inspected node
- Improved event handling to reliably intercept keys before ComfyUI canvas
- Fixed memory leaks in dropdown event listeners
2026-01-17 18:46:55 -08:00
AEmotionStudio 67df7bb1ca chore: bump version to 1.11.0 and update changelogs 2026-01-17 18:23:47 -08:00
AEmotionStudio f8784432f5 Improve widget editing UX and dropdown behavior
- Allow precise value input by removing automatic step rounding in sync manager
- Standardize stepper button increment to 1 for finer control
- Ensure dropdowns close when clicking the canvas
2026-01-17 18:13:32 -08:00
AEmotionStudio 1a4b6b8a23 fix(widget-editors): update DragValueController logic and build 2026-01-17 17:59:00 -08:00
AEmotionStudio a424abf045 style: update info-panel styles 2026-01-17 17:56:29 -08:00
AEmotionStudio 61a0b9aca6 chore(build): update production build artifacts 2026-01-17 17:51:20 -08:00
AEmotionStudio d1612d702b Merge branch 'main' of https://github.com/AEmotionStudio/ComfyUI-MagnifyGlass 2026-01-17 17:44:03 -08:00
AEmotionStudio 09ce2fb78a WIP: My local changes 2026-01-17 17:38:06 -08:00
Æmotion Studio cf2e97c725 Merge pull request #22 from AEmotionStudio/palette/dropdown-a11y-5973958733429481297
🎨 Palette: Add keyboard accessibility to node selector dropdown
2026-01-17 00:42:36 -08:00
google-labs-jules[bot] 717b823d20 fix(ui): prevent race conditions and focus hijacking in dropdown 2026-01-17 07:42:29 +00:00
google-labs-jules[bot] 3ab3e4a02e fix(ui): fix event listener leak on dropdown re-open 2026-01-17 06:31:06 +00:00
google-labs-jules[bot] 2786436e4a fix(ui): restrict keyboard handler to focused dropdown 2026-01-17 05:56:45 +00:00
Æmotion Studio c1adab023f Merge pull request #23 from AEmotionStudio/bolt-perf-batch-dom-reads-13434560877791740571
⚡ Bolt: Batch DOM reads/writes in renderHtmlOverlays
2026-01-16 21:52:04 -08:00
google-labs-jules[bot] d8ee89ca02 fix(ui): prevent event listener leak in dropdown selection 2026-01-17 05:25:38 +00:00
google-labs-jules[bot] c42b085473 ⚡ Bolt: Fix stale overlays on early return
Ensures `htmlOverlayContainer` is cleared when exiting `renderHtmlOverlays` early (e.g. no nodes or zero scale), preventing stale content from persisting.
2026-01-17 05:23:25 +00:00
Æmotion Studio ce9a9324a1 Merge pull request #24 from AEmotionStudio/sentinel-sidebar-security-62919840115184004
🛡️ Sentinel: Secure sidebar title rendering
2026-01-16 21:21:56 -08:00
google-labs-jules[bot] 5934fbe6b9 chore(security): use textContent for sidebar titles
- Replaced `innerHTML` with `textContent` for dynamic titles in `SidebarSettings.ts` to prevent potential XSS.
- Maintained `innerHTML` usage only for trusted static SVG icons.
- Added defense-in-depth against future changes that might introduce user-controlled titles.
2026-01-17 05:07:08 +00:00
google-labs-jules[bot] 962277c960 ⚡ Bolt: Batch DOM reads/writes in renderHtmlOverlays
Refactors `renderHtmlOverlays` to eliminate layout thrashing by separating DOM read operations (getBoundingClientRect, getComputedStyle) from DOM write operations.

- Creates a `RenderTask` interface to store read data.
- Implements a Read Phase to collect measurements and cull nodes.
- Implements a Write Phase to batch DOM updates using a DocumentFragment.
- Preserves video tracking logic to ensure animation loop continuity.
- Reduces browser reflows from O(n) to O(1) per frame.
2026-01-17 05:02:21 +00:00
google-labs-jules[bot] 55c7114fa0 feat(ui): add keyboard navigation and ARIA to node selector dropdown 2026-01-17 04:43:13 +00:00