Commit Graph
264 Commits
Author SHA1 Message Date
Æ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
AEmotionStudio 6ff4f2712c feat(ui): Implement custom dropdown system and High Contrast mode
- Replaced native select elements with a viewport-aware 'CustomDropdown' for better reliability and positioning.
- Added 'High Contrast Text' mode for improved legibility in inputs and values.
- Implemented parameter value deduplication in 'NodeDataExtractor' to reduce panel clutter.
- Expanded Google Font selection with 10+ new styles.
- Switched UI dimensions to relative units (em) for consistent scaling.
- Fixed layout 'bouncing' in sticky mode by removing hover transforms.
2026-01-16 16:13:35 -08:00
AEmotionStudio 1a5d7eab43 feat(ui): Add copy-to-clipboard functionality and improve dropdown stability
- Added a copy-to-clipboard button for 'Category' and 'Path' node details in the Inspector panel.
- Enhanced dropdown interaction stability by using 'mousedown' capture phase and broad event propagation prevention in 'InlineControlFactory'.
- Updated 'build' script to ensure CSS files are correctly synchronized from 'css/' to 'web/'.
- Standardized copy icon and styling, including a subtle checkmark feedback on success.
- Fixed an issue where the Inspector panel would 'bounce' due to hover transforms while in sticky mode.
- Improved dropdown closure logic to handle clicks both outside and within the panel content area.
2026-01-16 15:01:36 -08:00
AEmotionStudio dd6b787ad6 style(ui): Refine sticky mode layout and inline control interactions
- Optimized 'persist-active' mode to use viewport-based height limits and proper flex scrolling.
- Enhanced event propagation handling in 'InlineControlFactory' for better dropdown stability.
- Standardized panel font sizes and updated inline dropdowns to match the green theme.
- Added theme-specific CSS overrides for Light and GitHub themes in widget editors.
- Simplified copy-to-clipboard UI feedback.
2026-01-16 12:41:33 -08:00
AEmotionStudio 9a039f8549 style(ui): Update widget editor select styling to match green theme
- Changed accent color to #a0d468 for select inputs.
- Updated background colors, borders, and box-shadows to align with the green-themed info panel.
- Refined the custom dropdown arrow color to match the new accent.
- Standardized font-family and spacing for a more consistent look.
2026-01-16 11:36:15 -08:00
AEmotionStudio d2ea6d965f feat(ui): Implement inline widget controls and drag value adjustments
- Added 'InlineControlFactory' to create inline toggle switches and combo boxes for supported widget types, replacing the click-to-edit modal for these types.
- Added 'DragValueController' to enable adjusting numeric values by dragging on the value display.
- Updated 'UIManager' to integrate these new controls, manage their lifecycle, and properly clean them up.
- Enhanced 'WidgetEditorFactory' to handle Enter key for confirming edits.
- Removed the copy button from string values to reduce clutter.
- Updated 'index.ts' to export the new components.
2026-01-16 04:19:29 -08:00
AEmotionStudio fc8b685bef style(ui): Refine focus button interactions and fix input appearance
- Removed 'popout' scaling and transform animations from '.focus-node-btn' hover/active states for a more stable, subtle UI feel.
- Reduced box-shadow intensity on focus buttons to align with the flatter design.
- Removed icon scaling on hover for focus buttons.
- Added 'appearance: textfield' to number inputs to standardize rendering across browsers.
- Minor whitespace cleanup in toggle slider CSS.
2026-01-16 02:22:06 -08:00
AEmotionStudio 51ad38bfb6 feat: Add video playback support and settings validation
- Implemented a continuous animation loop in 'MagnifyGlass' that activates automatically when video widgets are detected, ensuring smooth playback for standard videos and VHS previews.
- Added robust validation to 'StateManager' for loading settings, including bounds checking for dimensions/opacity and format verification for colors and enums.
- Updated widget detection logic to correctly identify and handle 'videopreview' and 'audiopreview' widgets.
- Ensured animation loops are properly stopped when the glass is hidden or destroyed to preserve resources.
2026-01-16 02:05:42 -08:00
Æmotion Studio 40c70bdba4 Merge pull request #21 from AEmotionStudio/bolt/optimize-render-overlays-1998194206652878890
⚡ Bolt: Optimize rendering loop by hoisting getBoundingClientRect
2026-01-15 22:28:43 -08:00
Æmotion Studio 9092cfd0ac Merge pull request #20 from AEmotionStudio/sentinel-validation-fix-2381716828487744723
🛡️ Sentinel: [MEDIUM] Add input validation for info panel settings
2026-01-15 22:28:27 -08:00
Æmotion Studio a711c16d64 Merge pull request #19 from AEmotionStudio/palette/accessible-sidebar-labels-10046088899665859415
🎨 Palette: Add accessible labels to sidebar controls
2026-01-15 22:18:36 -08:00
google-labs-jules[bot] 6d5791eb3c perf: hoist getBoundingClientRect out of render loop
- Moves `litegraphCanvas.getBoundingClientRect()` call outside the widget loop in `renderHtmlOverlays`.
- Reuses the `dpr` calculated at the top level.
- Adds regression test `tests/unit/MagnifyGlassRenderOptim.test.ts`.

Improves rendering performance by reducing forced reflows during magnification.
2026-01-16 04:57:01 +00:00
google-labs-jules[bot] fe771ef87e feat(security): implement strict input validation for InfoPanel settings
Add validation for all InfoPanel settings loaded in StateManager to prevent
injection of invalid values (e.g. out-of-bounds numbers, invalid colors).
This mitigates risks of degraded stability or potential injection via
manipulated settings storage.

- Add validateNumber, validateColor, validateStringOption helpers
- Update StateManager.loadSettings to validate all keys
- Add unit tests for validation logic
2026-01-16 04:45:01 +00:00
google-labs-jules[bot] d7f6b99051 feat(a11y): associate labels with form controls in sidebar
- Export form creation helpers for testing
- Add unique ID generation for sliders, selects, and color pickers
- Associate labels with inputs using `htmlFor`
- Add unit tests to verify accessibility attributes
2026-01-16 04:37:17 +00:00
Æmotion Studio bdc5449ef5 Merge pull request #18 from AEmotionStudio/feature/inspector-value-editing
feat: add Inspector Value Editing - inline widget editing from Inspec…
2026-01-15 17:47:09 -08:00
AEmotionStudio 0cf992d528 fix: address final PR review issues 2026-01-15 17:38:38 -08:00
AEmotionStudio 837fe7da87 fix: address additional PR review issues 2026-01-15 17:24:05 -08:00
AEmotionStudio 3c17fc34ff fix: address PR review - add constraints to data attrs and fix boolean coercion 2026-01-15 17:12:48 -08:00
AEmotionStudio 1434e703e0 feat: add Inspector Value Editing - inline widget editing from Inspector Panel 2026-01-15 17:01:58 -08:00
Æmotion Studio 6ce27c62a3 Merge pull request #17 from AEmotionStudio/palette/accessible-toggles-10339516210084959098
feat: make sidebar toggle switches accessible
2026-01-14 21:41:39 -08:00
google-labs-jules[bot] bc872f58f6 fix: ensure keyboard events stop propagation in toggles
- Pass event object to handleToggle from keydown listener
- Ensure stopPropagation() is called for keyboard events
- Maintain consistency between mouse and keyboard interaction behavior
2026-01-15 05:33:39 +00:00