Commit Graph
39 Commits
Author SHA1 Message Date
Ewald ba272531ef feat(viewer): enhance player bar manager with active video asset tracking
- Added `_activeVideoAssetId` to track the currently active video asset in `playerBarManager.js`.
- Updated sync logic to ensure controls are remounted only when the asset changes.
- Improved handling of video synchronization and FPS settings.

feat(sideBySide): sanitize prompts for display

- Introduced `sanitizePromptForDisplay` to clean up prompts before displaying.
- Updated `_extractGridGenInfo` to use the new sanitization function for prompts.

feat(sidebar): enhance workflow section with size options and stats

- Added size options for the minimap in `SidebarWorkflowSection.vue`.
- Implemented workflow statistics display, including nodes, links, and groups.
- Persisted size and label settings for the minimap.

fix(generation): prevent filepath prompts from being displayed

- Updated prompt handling in `generationSectionState.js` to sanitize prompts.
- Added tests to ensure filepath-like prompts do not affect UI behavior.

feat(gridLoader): implement adaptive paging for grid loader

- Introduced `getAdaptivePageLimit` to dynamically adjust page size based on empty append batches.
- Updated `useGridLoader` to utilize adaptive paging logic.

feat(vectorIndexer): add regex for path-like prompts

- Implemented `_looks_like_path_prompt` to identify and handle path-like prompts in `vector_indexer.py`.

test: add unit tests for prompt sanitization and grid loader

- Created tests for prompt sanitization logic in `generation_prompt_sanitization.vitest.mjs`.
- Added tests for adaptive paging behavior in `grid_loader_adaptive_paging.vitest.mjs`.
- Implemented tests for sidebar workflow section functionality in `sidebar_workflow_section.vitest.mjs`.
- Added tests for player bar FPS synchronization in `viewer_player_bar_fps_sync.vitest.mjs`.

docs: update user guide and add privacy/offline documentation

- Added a privacy and offline usage guide in `PRIVACY_OFFLINE.md`.
- Updated user guide to reference new privacy documentation.
2026-04-07 10:35:43 +02:00
MajoorWaldi df96cac6ac feat(settings): add verbose logging options for route registration and startup
- Add new API endpoints for route logging settings
- Implement new settings in the advanced settings page
- Update installation instructions to reflect the correct WinGet package ID for ExifTool
2026-04-06 18:07:19 +02:00
MajoorWaldi 977179de90 feat(security): implement settings-first remote setup flow and improve documentation
- Add Recommended Remote LAN Setup option in Settings for trusted LAN configurations
- Implement loopback recovery bootstrap for local browser sessions
- Automatically rotate legacy token hashes to new plaintext tokens
- Update documentation to reflect new remote setup process and security features
- Add runtime write authorization status indicators in Assets Manager
- Improve client-side token handling and session management
- Update environment variables guide with new bootstrap capabilities
2026-04-06 16:59:18 +02:00
MajoorWaldi 4f8f6307df feat: add remote access security settings and enhance initial setup experience for ComfyUI users 2026-04-06 12:01:15 +02:00
MajoorWaldi 07262353f4 feat: add remote access write permissions and bootstrap token handling; enhance error messaging for write access issues 2026-04-06 10:26:23 +02:00
MajoorWaldi d03b8705d6 chore: release 2.4.4 2026-04-05 20:37:19 +02:00
MajoorWaldi 7b0e5769db fix: correct header formatting in Vue migration plan documentation 2026-04-03 22:25:09 +02:00
MajoorWaldi 2fa41a0e76 feat: add useGridState and useVirtualGrid composables for asset management
- 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.
2026-04-03 11:04:55 +02:00
MajoorWaldi cd5a581e4f Bump version to v2.4.3 2026-03-29 23:44:39 +02:00
Ewald 44c0c57f6e feat: Add asset management and real-time listener functionalities
- Implemented entry UI registration for the Assets Manager, including sidebar and bottom panel integration.
- Created real-time listeners for execution events, asset updates, and enrichment status.
- Developed execution runtime controller to manage job tracking, asset buffering, and indexing.
- Introduced lazy initialization for vector services to optimize resource usage.
- Added HTTP handlers for plugin management, enabling listing, enabling, and reloading of plugins.
2026-03-29 01:03:49 +01:00
MajoorWaldi 0124a8f6d5 feat: enhance asset management with job finalization logic, improve coverage thresholds, and update documentation for AI/vector features 2026-03-28 15:35:28 +01:00
MajoorWaldi e198c46e0d feat: Implement asset stacks service and API endpoints
- Added StacksService to manage asset stacks, including CRUD operations and automatic stacking based on job_id and workflow_hash.
- Created API routes for stacks, including listing, retrieving by job_id, managing stack members, setting cover assets, dissolving stacks, merging stacks, and triggering automatic stacking.
- Introduced new ColorSpaces and Volume classes in the three.js addon for enhanced color management and volume rendering capabilities.
2026-03-27 15:06:41 +01:00
MajoorWaldi cb171e826d feat: Add runtime bootstrap helpers and search request normalization
- Introduced runtime bootstrap helpers in `mjr_am_backend.features.runtime` for dependency initialization.
- Implemented `apply_startup_settings` to handle various startup configurations.
- Added search request normalization helpers in `mjr_am_backend.features.search` including `SearchRequestContext` and `parse_search_request` for better query handling.
- Created audit logging helpers in `mjr_am_backend.routes.core.audit_log` for state-changing route handlers.
- Developed a quality gate script in `scripts/run_quality_gate.py` to enforce code quality checks.
- Added comprehensive tests for audit routes, scan consistency, vendor routes, and code quality metrics.
2026-03-26 20:42:51 +01:00
MajoorWaldi bd8b540160 feat(nodeStream): introduce Node Stream system with adapter registry
- Implement NodeStreamRegistry for managing adapters that handle ComfyUI node outputs.
- Create BaseAdapter interface for defining adapter structure and behavior.
- Add DefaultImageAdapter for standard image output handling.
- Implement KnownNodesAdapter for well-known ComfyUI nodes with specific output formats.
- Introduce VideoAdapter for handling video output from nodes.
- Establish NodeStream feature flag for controlled rollout.
- Add tests for NodeStreamController to ensure proper behavior when feature is disabled.
2026-03-17 22:30:56 +01:00
MajoorWaldi 459b12ac39 feat(viewer): add 3D model viewing support
- 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
2026-03-16 23:47:08 +01:00
MajoorWaldi fecfa0eb56 feat(panel): add shortcut guide tab to message popover
- Implement new tabbed interface in message popover
- Add shortcut guide tab alongside messages tab
- Update MFV toggle button to use new tooltip format
- Enhance scroll handling for open popovers
- Adjust search input to display keyboard shortcuts
- Update Floating Viewer buttons with new tooltip format
- Add keyboard shortcut for toggling MFV (Ctrl/Cmd+V)
2026-03-06 19:21:51 +01:00
MajoorWaldi 834ef1fef3 feat(docs): comprehensive AI features guide and new documentation
- Added new AI_FEATURES.md guide covering all AI-powered capabilities
- Updated DOCUMENTATION_INDEX.md to include new AI features guide
- Added AI Features section to README.md with overview and models used
- Improved backfill warning information in README.md
- Updated reset index / delete DB procedures in DB_MAINTENANCE.md
- Added configuration options for AI features in README.md
2026-03-06 12:43:46 +01:00
MajoorWaldi f6c0765205 Refactor and enhance various components and backend features
- 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.
2026-03-01 21:59:44 +01:00
MajoorWaldi 623cc346d5 Update documentation and enhance features for version 2.3.3
- Added versioning and last updated dates to multiple documentation files.
- Introduced new features in the Drag & Drop Guide, Hotkeys & Shortcuts Guide, Installation Guide, Ratings, Tags & Collections Guide, Search & Filtering Guide, Security Model & Environment Variables Guide, Settings & Configuration Guide, and Viewer Feature Tutorial.
- Enhanced the Hotkeys & Shortcuts Guide with new shortcuts for the Majoor Floating Viewer (MFV) and improved organization.
- Updated installation prerequisites to include full Linux support and clarified Python version compatibility.
- Improved the Testing documentation with detailed test coverage sections for both backend and frontend.
- Modified API client to ensure proper authentication token handling.
- Updated health route handlers to improve logging for token operations.
- Created a backup README file with comprehensive project information and installation instructions.
2026-02-28 18:51:24 +01:00
MajoorWaldi c8fb47b77d refactor: modularize and reduce codebase size
- Remove duplicate code in parser_impl.py
- Split scan.py into multiple modules
- Refactor SettingsPanel.js into smaller components
- Extract subsystems from Viewer_impl.js

This refactoring reduces code duplication, improves modularity, and prepares the codebase for further improvements. No new functionality was added or changed.
2026-02-28 10:25:51 +01:00
MajoorWaldi 42ff0fc748 fix(security): address high/low severity findings from browser deep-audit
- Implement safe URL validation and opener/noreferrer flags in ViewerContextMenu
- Add event listener management and disposal in customRootsController
- Fix removeEventListener options inconsistency in filtersController
- Update list URL construction for custom scope in endpoints.js
- Add disposal of customRootsController bindings in AssetsManagerPanel
2026-02-27 16:14:39 +01:00
MajoorWaldi e7c2443670 fix(security): improve API token handling and add server-side bootstrapping
- 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
2026-02-27 10:09:44 +01:00
MajoorWaldi c8dd3d11d8 refactor(settings): update module exports and documentation
- Remove specific exports from SettingsPanel.js
- Add new exports from settingsRuntime.js and settingsCore.js
- Update module documentation to reflect current structure
2026-02-26 21:29:39 +01:00
Ewald b700149b2d feat: Enhance metadata handling and fallback mechanisms
- Introduced fallback readers for metadata extraction when ExifTool/ffprobe are unavailable, utilizing Pillow and hachoir for images and media files respectively.
- Added settings for metadata fallback preferences, allowing users to toggle image and media fallback options.
- Implemented route collision logging to prevent overlapping API paths.
- Added middleware for authentication on sensitive routes, ensuring secure access.
- Updated API documentation to reflect new endpoints and settings.
- Enhanced unit tests for metadata handling, case sensitivity in file paths, and fallback mechanisms.
- Removed compatibility shims for shared modules, consolidating imports under mjr_am_shared.
2026-02-13 16:37:44 +01:00
Your Name 5747000562 feat(config): increase DB query timeout to 60 seconds
feat(config): extend watcher debounce time to 3000 ms and add backward-compatible aliases for file size settings

feat(enricher): modify enrichment queue to support priority and add method to get queue length

feat(scanner): adjust batch size logic to incorporate initial and minimum batch sizes

feat(service): add runtime status method to expose enrichment queue length

feat(watcher): implement methods to flush pending files and get pending count

feat(watcher_scope): restrict watcher scope to output only for safety

feat(health): add runtime status endpoint for diagnostics including DB connections and watcher status

feat(scan): create endpoint to flush watcher pending queue and ensure scope is output only

docs: update DB query timeout documentation to reflect new default of 60 seconds

docs: revise security and settings documentation for updated DB query timeout

feat(api): add runtime status API client method and endpoint

feat(settings): introduce runtime status dashboard in the UI for monitoring DB and watcher metrics

fix(grid): enhance error messaging for asset loading failures and attach grid metrics display

test: add tests for watcher scope enforcement and flush functionality
2026-02-12 07:29:24 +01:00
Ewald c1b1c92576 Untrack restored files and ignore them (AGENTS, ROADMAP, VERSION, eslint.config.js) 2026-02-10 11:11:53 +01:00
Your Name 1646e2171b feat: Implement duplicate detection and similarity analysis features
- Added DuplicatesService for background duplicate analysis and similarity detection.
- Introduced endpoints for analyzing duplicates, checking status, and merging tags.
- Created utility functions for file hashing and perceptual hashing.
- Implemented watcher settings for runtime tuning of debounce and deduplication.
- Added database maintenance tools for resetting and deleting the database.
- Enhanced error handling with sanitization for client responses.
- Added tests for duplicates service and error handling.
- Updated ESLint configuration for better code quality checks.
- Introduced filename validation and logging utilities.
2026-02-08 15:11:17 +01:00
Your Name 182ba1a795 Fixed bugs and UI improvements 2026-02-08 15:09:47 +01:00
Your Name 4c38513a1e feat: add API token setup and storage for write authorization; enhance settings and localization 2026-02-07 11:20:58 +01:00
Your Name 6d85fa7aa2 feat: update Python support to 3.10–3.12 and enhance CI workflows; improve database error handling and asset preloading in viewer 2026-02-07 02:48:53 +01:00
Your Name e40e7af774 feat: update CI workflows to use ubuntu-22.04 and enhance nightly release process 2026-02-07 01:32:19 +01:00
Ewald 640eccf422 chore: save workspace changes 2026-02-06 21:17:46 +01:00
Ewald f4b6bc80af Refactor and enhance UI text localization across various components
- Updated Card.js to improve generation time handling and display logic.
- Simplified SidebarView.js by removing unnecessary timeout logic and added event dispatching on close.
- Enhanced collectionsController.js with localized strings for collection management dialogs and messages.
- Removed auto scan trigger from AssetsManagerPanel.js and improved scroll restoration logic.
- Added localization support in customRootsController.js for folder management prompts and messages.
- Updated gridController.js to include localized messages for grid interactions.
- Enhanced sidebarController.js to persist sidebar open/close state.
- Improved sortController.js to use localized sort option labels.
- Added sidebar open state management in panelState.js.
- Enhanced customPopoverView.js and filterPopoverView.js with localized labels and button texts.
- Updated headerView.js to include version information and link to GitHub repository.
- Improved statusDot.js with localized tool capabilities and status messages.
2026-02-04 14:59:13 +01:00
Your Name b234e239d3 Enhance metadata parsing and service functionality
- Added a safe zlib decompression function to handle large compressed data in parsing_utils.py, ensuring it respects a maximum decompressed size limit.
- Refactored the MetadataService class in service.py to improve file grouping logic and reduce redundancy by introducing helper functions for grouping existing paths and fetching EXIF/FFprobe data.
- Updated the Windows rating mapping in sync.py to clarify the mapping of star ratings to Windows-style percent fields for better compatibility.
- Improved error handling and logging in viewer/info.py for safer extraction of media info and file stats.
- Enhanced JSON parsing in scan.py to catch specific JSON decoding errors.
- Streamlined hotkeys documentation in HOTKEYS_SHORTCUTS.md and SHORTCUTS.md for clarity and conciseness.
- Improved keyboard shortcut handling in GridKeyboard.js and GridView.js to ensure proper focus management and keyboard shortcut installation.
2026-02-04 00:29:49 +01:00
Your Name 8d33b99e80 feat: enhance keyboard shortcuts and context menus for asset management
- Added keyboard shortcuts for grid view actions including opening viewer, showing metadata, comparing assets, and side-by-side viewing.
- Integrated shortcut displays in context menus for grid and viewer actions.
- Implemented search focus and clear functionalities with keyboard shortcuts in the Assets Manager panel.
- Improved asset rating handling with debounce logic for better performance.
- Created a comprehensive shortcuts documentation file for user reference.
- Refactored context menu cleanup and session management for better reliability.
2026-02-03 23:52:38 +01:00
Your Name 39a6d6c2b8 Refactor viewer buttons and update gitignore
- Create js/components/buttons.js specific for shared UI elements

- Refactor toolbar.js and Viewer.js to use shared buttons

- Fix viewer overlay theme variable inheritance

- specific ignore patterns added to .gitignore
2026-02-01 22:47:59 +01:00
Your Name 26c5260feb add minor security fixes and exiftool update 2026-01-26 14:50:47 +01:00
Your Name d01585a5b1 Add error handling with Result type and document architecture decisions 2026-01-26 11:35:20 +01:00
Your Name 8ed51fbf39 make assets manager docs, license, and code improvements 2026-01-24 19:28:33 +01:00