- 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
- 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.
- Added support for fetching nightly release markers and checking for updates.
- Introduced a notice for AI features in local builds.
- Improved version badge display logic in the header view.
- Refactored caption normalization logic in vector indexing.
- Enhanced floating viewer with edge resizing capabilities.
- Updated styles for pop-in mode and resizing state.
- Added tests for enhanced prompt generation and X-CLIP embedding handling.
- 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.
feat(viewer): enhance FloatingViewer with pan/zoom functionality and metadata display
refactor: streamline database maintenance status emission and improve error handling
- 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
- Introduced unit tests for SQLite facade helpers, including schema validation, query building, and async operations.
- Added integration tests for basic SQLite queries and transaction handling.
- Implemented additional tests for metadata extraction functions, focusing on dimension handling, EXIF data, and video metadata.
- Created tests for security core helpers, covering environment variable checks, IP validation, and CSRF protection.
- Included compatibility tests for route exports to ensure proper functionality.
- 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.
- 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.
- 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.
- Added ExifTool and FFmpeg installation in CI workflow for audio processing.
- Implemented robust JSON parsing for workflow and prompt extraction in audio metadata.
- Introduced TTS-specific metadata extraction and fallback handling in geninfo parser.
- Updated sidebar components to display TTS-related metadata including voice, language, and parameters.
- Enhanced status dot feature to include database health checks and indexing status.
- Improved unit tests for ExifTool and FFProbe with mock responses.
- Added integration tests for TTS audio workflows to validate metadata extraction.