- 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
- 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.
- 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.
- 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
- Added `splitNameExt` function to separate filename and extension.
- Implemented `normalizeRenameFilename` to preserve extensions during renaming.
fix: improve error handling in search queries
- Added checks for malformed match errors in `IndexSearcher`.
- Enhanced FTS query sanitization to remove reserved tokens and normalize case.
feat: implement security token management
- Introduced API token generation, hashing, and rotation in `AppSettings`.
- Added endpoints for rotating and bootstrapping security tokens.
fix: enforce write access across various routes
- Integrated `_require_write_access` checks in multiple route handlers to ensure proper authorization.
test: add unit tests for search query sanitization
- Created tests for sanitizing FTS queries, ensuring reserved tokens are removed and terms are lowercased.
- Added localization support for button texts in browser navigation.
- Updated context pills view to use localized labels for filters and scopes.
- Localized header view titles and tooltips for better user experience.
- Enhanced summary bar view with internationalized labels for asset counts and filters.
- Updated tabs view to reflect localized tab names and tooltips.
- Localized viewer context menu options and toast messages for file operations.
- Implemented SQL fragment safety checks to prevent injection attacks.
- Improved rate limiting logic to avoid shared overflow buckets.
- Added tests for new security features and localization checks.
- Implemented caching for tool availability and versions.
- Added functions to check for ExifTool and FFprobe availability.
- Included version satisfaction checks against minimum required versions.
- Created utility functions for parsing boolean and float values from environment variables.
- Introduced shared utilities for error message sanitization and logging with emoji indicators.
- Established a Result pattern for error handling without exceptions.
- Added scan throttling helpers to manage background scans efficiently.
- Implemented time utilities for timestamps and performance measurement.
- Defined shared types, enums, and constants for consistent error handling and file classification.
- Created version management utilities to retrieve version information from pyproject.toml.
- Developed installation script for runtime dependencies.
- Added tests for ExifTool batch processing and various configuration scenarios.
- Implemented tests for version route aliases and runtime output root configuration.
- Implemented functions to retrieve all assets and grid columns dynamically.
- Added keyboard navigation support for arrow keys and Home/End keys with Shift for range selection.
- Improved asset selection logic and scrolling to selected asset.
- Integrated selection state management with grid container.
- Updated rating shortcuts to be conditionally active based on hotkey state.
feat(panel): enhance Assets Manager and sidebar functionality
- Introduced summary bar disposal mechanism for better resource management.
- Added sidebar refresh logic to update active asset details.
- Improved settings change handling to selectively refresh grid and sidebar.
- Enhanced grid reload mechanism to prevent concurrent reloads.
feat(viewer): add FPS detection for video assets
- Implemented functions to parse and emit detected FPS from asset metadata.
- Attached FPS detection to video elements during metadata loading and runtime.
style(theme): update theme variables and styles
- Added new CSS variables for card hover, selection, rating, and tag colors.
- Enhanced asset card styles for selection and hover states.
- Improved badge colors for better visibility and consistency.
fix(status): improve status indicator feedback
- Added status highlight function to provide visual feedback based on status tone.
- Updated status dot and section styles to reflect current status accurately.
refactor(context): streamline context controller actions
- Added badge CSS variable application to keep UI consistent with live settings.
- 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.
- 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.
- 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.