- Remove absolute positioning from rightArea, use flex:1 1 0 flow layout
- Move titleLine (filename+badges) to leftArea in compare mode for 3-column layout
- Mirror paddingLeft=84px to match paddingRight in compare mode for symmetry
- centerArea flex:0 0 auto in compare so mode buttons stay centered
- Export leftArea, centerArea, titleLine, titleWrap, modeButtons from toolbar
- Add overflow:hidden to left/right meta and areas for text truncation
- Add dynamic theming with radial gradients and blurred effects
- Refine layout and spacing for various components
- Enhance filmstrip appearance and behavior
- Improve info panel styling and positioning
- Update general styling for buttons, tooltips, and other elements
- Add keyboard shortcuts for video in-point (I), out-point (O), and navigation (Home/End)
- Implement swipe gesture for navigating between assets in the viewer
- Add option to copy prompt to clipboard (Ctrl/Cmd+C)
- Improve stack group card functionality and representative selection
- Optimize image preloading for smoother navigation
- Enhance audio visualizer with WebGL support and mode switching
- Refine feed card appearance and interaction
- Implemented useGridState to manage grid state, including asset selection and loading states.
- Created useVirtualGrid to centralize virtualization helpers for improved performance.
- Added createVueApp for isolated Vue 3 + Pinia application instances.
- Introduced Vite configuration for building the ComfyUI-Majoor-AssetsManager with external dependencies.
- Added coverage reporting for Vitest with configuration in vitest.config.mjs
- Updated package.json to include new scripts for JS coverage, linting, and formatting
- Modified run_quality_gate.py to allow skipping ESLint and Prettier checks
- Introduced .prettierrc for consistent code formatting
- Created .prettierignore to exclude specific files and directories from formatting
- Implement basic 3D model thumbnail rendering with fallback icon
- Update viewer mode selection logic to handle 3D models
- Add checks for 3D model interactions in the viewer
- Extend drag & drop support to include 3D model assets
- Update .gitignore to prevent tracking of local directories and accidental files.
- Improve installation instructions in INSTALLATION.md for faster dependency resolution using `uv`.
- Replace regex-based string replacement with safer `replaceAll` in i18n.js to mitigate ReDoS risks.
- Add documentation for global state key registry in runtimeState.js.
- Prevent timer leaks in toast.js by stopping the cleaner timer when no active toasts remain.
- Use replaceChildren instead of innerHTML for safer DOM manipulation in Viewer_impl.js.
- Update FloatingViewer.js to improve icon handling and enhance generation time display.
- Implement JSON sanitization for NaN/Infinity values in utils.py to ensure valid JSON output.
- Adjust mypy configuration to target Python 3.10.
- Update requirements.txt to specify compatible versions for pywin32.
- Add comprehensive tests for environment variable helpers in test_config.py.
- Updated WebGL context creation to preserve the drawing buffer for frame export functionality.
- Added new CSS styles for sampler, scheduler, CFG, step, and genTime fields in the theme-comfy stylesheet.
- Implemented output directory override restoration on startup in the settings service.
- Introduced functions to collect distinct sampler configurations and checkpoints from multiple sinks and chained sampler passes.
- Enhanced prompt tracing and sampler name resolution to handle advanced sampler configurations.
- Added support for filtering by tags in the search functionality, including validation and sanitization of tag inputs.
- Updated search query sanitization to include tag handling and adjusted valid sort keys.
- Improved filesystem listing handlers to accommodate new workflow type filters and ensure proper filtering logic.
- Enhanced health check routes to manage output directory settings and cache invalidation.
- Added tests to verify new filtering capabilities and ensure functionality remains intact.
- Added FloatingViewer.js to create a lightweight floating panel for media viewing with drag, resize, and multiple modes (Simple, A/B, Side-by-Side).
- Implemented LiveStreamTracker.js to bridge ComfyUI generation and graph events to the Floating Viewer, allowing real-time updates based on node selections and generation outputs.
- Created floatingViewerManager.js to manage the FloatingViewer instance, handle global events, and synchronize with the asset grid selection.
- Updated error handling in videoProcessor.js, videoProcessorWebGL.js, videoSync.js, viewerInstanceManager.js, and various utility files to log caught exceptions using console.debug.
- Introduced a new script to automate the replacement of silent catch blocks with logging statements.
- Enhanced safety checks in the database schema and transaction manager to prevent SQL injection vulnerabilities.
- Added regex patterns for validating column definitions and executable names in the ExifTool adapter.
- Improved error handling in health and filesystem routes to ensure better feedback on invalid inputs.
- Added tests to cover new error handling and validation logic.
- Add lazy-loading and playback functionality for video thumbnails
- Implement smooth animations and scaling effects for active and compare items
- Introduce audio thumbnail support with distinct visual styling
- Refine side-by-side view layout and toolbar aesthetics
- Optimize performance with reduced motion support and resource management
- Move token from local to session storage on client side
- Set httpOnly cookie for server-side token on bootstrap/rotate
- Add token validation and auto-sanitization
- Implement retry logic for failed operations
- Add input validation for collection names
- Update toast durations and error handling
- Remove specific exports from SettingsPanel.js
- Add new exports from settingsRuntime.js and settingsCore.js
- Update module documentation to reflect current structure
- Added InfiniteScroll.js to handle fetching pages, loading next pages, and managing asset insertion.
- Introduced RatingTagsHydrator.js for managing rating and tag badges on asset cards.
- Created VirtualScroller.js to manage virtual scrolling behavior and scroll container detection.
- Added ViewerCanvas.js, ViewerKeyboard.js, ViewerState.js, and ViewerToolbar.js to modularize viewer functionalities.
- Implemented functions for loading and saving viewer preferences in ViewerState.js.