Commit Graph
79 Commits
Author SHA1 Message Date
Ewald 5c31f29ecc Add workflow roots and fix video previews 2026-06-11 20:50:18 +02:00
Ewald a78f4572c8 Align frontend layout with ComfyUI conventions 2026-05-26 10:42:22 +02:00
Ewald 9876e36c22 chore: viewer, context menu, stacks, docs updates 2026-05-21 08:09:38 +02:00
Ewald 5bc7d71a24 Release v2.4.8 2026-05-18 00:25:14 +02:00
Ewald 537332bac7 Fix README sample images 2026-05-18 00:16:39 +02:00
Ewald 0e2c7c9e8e Fix drag drop and viewer regressions 2026-05-18 00:09:30 +02:00
Ewald a1acd919d0 Update viewer icons and gen info layout 2026-05-17 22:43:46 +02:00
Ewald 4e7207a05d feat: update drag drop, docs, and build outputs 2026-05-15 17:13:04 +02:00
Ewald 9501254ddc Improve MFV workflow tools and graph map handling 2026-05-11 11:47:35 +02:00
Ewald b2437259a9 Add MFV guide, Graph Map docs, and viewer integrations 2026-05-10 20:10:48 +02:00
Ewald 0894657274 security: honor UI prefs at runtime + LAN-friendly defaults
The Settings -> Security toggles (Allow Remote Full Access, Allow HTTP Token Transport, Require Token For All Writes) were persisted in the DB but ignored by _check_write_access() and the bootstrap-token endpoint, which only read MAJOOR_* env vars. Remote LAN clients hit 'Write access is blocked' even with all toggles enabled.

- New security_prefs_snapshot module: thread-safe in-memory snapshot of persisted prefs, hydrated at ensure_security_bootstrap() and republished on every set_security_prefs(). Read synchronously by guards.

- security.py::_resolve_security_flag(pref_key, env_var, default): single read site, snapshot-first / env-fallback. Used for allow_remote_write, require_auth, allow_insecure_token_transport.

- _bootstrap_enabled() also returns True when allow_remote_write is set in the snapshot (UI consent for remote bootstrap).

- bootstrap-token / rotate-token accept plain HTTP transport when allow_insecure_token_transport is on.

- Friendlier defaults so first install works zero-config on LAN: allow_remote_write=True, allow_insecure_token_transport=True. Auto-generated API token still gates writes.

- Error messages updated to point users to Settings -> Security instead of only env vars.

- README rewritten to put the UI flow first; env vars as headless fallback.

- pyproject.toml: per-file ignore F401 for routes/core/security.py since it is the single import point that re-exports from sub-modules.
2026-04-24 15:33:15 +02:00
EwaldandClaude Sonnet 4.6 81e13b2b81 Fix presentation video not rendering in README
GitHub silently drops <video> tags in README files. Replace with a
clickable GIF thumbnail that links to the release MP4, which works
in all GitHub renderers. Also removed the duplicate standalone GIF
below the description that was made redundant by the thumbnail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 15:29:07 +02:00
Ewald 7d1dd830b9 Add MFV player shortcuts and docs 2026-04-14 10:15:42 +02:00
Ewald db88ad982a feat: add MajoorSaveImage & MajoorSaveVideo nodes, generation_time_ms extraction, topbar MFV button announcement
- nodes.py: MajoorSaveImage (PNG with generation_time_ms in text chunks) and MajoorSaveVideo (MP4 via PyAV, GIF, WebP with metadata persistence)
- extractors_png.py: read generation_time_ms from PNG text chunks
- extractors.py: extract generation_time_ms from merged EXIF data into metadata dict
- extractors_video.py: extract generation_time_ms from ffprobe format tags
- messageCenter.js: add generation-time-persistence tip and topbar MFV button announcement
- CHANGELOG.md: document topbar MFV button and custom nodes
- README.md: add Custom Nodes section with input tables
- docs/CUSTOM_NODES.md: full node reference and extraction pipeline docs
- docs/DOCUMENTATION_INDEX.md: add CUSTOM_NODES.md entry
2026-04-12 19:16:07 +02:00
Ewald 7e985b8e6d feat(mfv): multi-pin A/B/C/D, node parameters sidebar, sidebar position setting
- Multi-Pin references: toggle buttons A/B/C/D to pin up to 4 images
- Node Parameters sidebar: view/edit workflow node widgets inside MFV
- Run button in viewer toolbar for immediate re-queue
- Expandable text areas for long prompts
- Sidebar position setting (right/left/bottom) via Settings
- Toolbar layout: Run and Node Parameters pushed to far right
- Message Center: 2 new announcements for the features
- Docs: VIEWER_FEATURE_TUTORIAL, FLOATING_VIEWER_WORKFLOW_SIDEBAR
- CHANGELOG v2.4.5, README aligned
2026-04-10 21:47:01 +02:00
Ewald 1982b3ab3c Add local and CI quality gates 2026-04-10 11:05:27 +02:00
Ewald eb5684fbdd docs: update README and architecture map
- Update frontend stack description in README
- Add detailed architecture and module responsibilities in ARCHITECTURE_MAP.md
- Update PLAN_REFACTO_COMPLET_MAJOOR_ASSETS_MANAGER.md with latest changes
2026-04-10 09:32:30 +02:00
Ewald 847fccf087 refactor(mjr_am_backend): complete backend refactoring and update documentation
- Commit DB split, security, registry, and observability lots
- Create missing asset management sub-services
- Extend Vue panel tests and implement teardown
- Update dependency policy and ADRs
- Document refactoring progress and next steps
2026-04-10 06:25:52 +02:00
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 69a680a2a4 fix: update presentation video to embedded format for better accessibility 2026-04-05 20:57:24 +02:00
MajoorWaldi d03b8705d6 chore: release 2.4.4 2026-04-05 20:37:19 +02:00
Ewald 77ed616baa feat: ajouter la prise en charge des fenêtres pop-up pour le visualiseur flottant sur les applications Electron 2026-04-04 18:07:48 +02: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 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 fcbeedd33a Bump version to 2.4.0: update pyproject, README, and CHANGELOG 2026-02-28 21:51:04 +01:00
Ewald 5c3e0e2db8 add samples image 2026-02-28 21:16:21 +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 a6d5095fb9 Add initial test suite and configuration for Vitest
- Created package.json to manage project dependencies and scripts for testing.
- Added test_scan_flow_integration.py to test incremental scanning and file removal functionality.
- Added test_search_flow_integration.py to test indexing and searching capabilities.
- Introduced vitest.config.mjs for Vitest configuration to set up the testing environment.
2026-02-26 11:24:27 +01:00
Your Name 9536636538 feat: enhance toast notifications with new styling and accessibility features 2026-02-18 19:29:20 +01:00
Your Name 62d94940e1 fix: Downgrade pillow dependency to 10.0.0 for compatibility and security patches
refactor: Improve connection handling in Sqlite class with reset checks
feat: Enhance CSRF protection to accept forwarded host from trusted proxies
test: Add tests for CSRF handling with trusted proxies and incremental scan behavior
2026-02-16 07:05:20 +01:00
Your Name 7183c87400 Refactor filtersController to manage event listeners with lifecycle support
- Introduced `addManagedListener` function to handle event listeners with automatic cleanup.
- Updated event listeners for various filter controls to use the new management function.
- Added lifecycle signal support for event listeners to ensure proper disposal.
- Implemented cleanup logic to remove event listeners when no longer needed.

---

Update database schema handling to support async operations

- Changed `db.has_table` to `db.ahas_table` for async compatibility.
- Updated related database checks to use the new async method.

---

Refactor SQLite adapter to prioritize async operations

- Transitioned public API to expose async methods as primary.
- Removed synchronous methods and replaced them with async counterparts.
- Updated internal transaction handling to support async context management.
- Enhanced error handling and logging for async operations.

---

Add async support for FFProbe tool

- Implemented `aread` and `aread_batch` methods for asynchronous metadata reading.
- Utilized asyncio subprocess for non-blocking execution of ffprobe commands.

---

Enhance IndexScanner with I/O throttling

- Introduced `SCAN_IOPS_LIMIT` to control I/O operations during directory scans.
- Implemented pacing logic to manage scan I/O operations effectively.

---

Update MetadataService to utilize async reading methods

- Refactored methods to call async variants of exif and ffprobe reading.
- Improved error handling for async operations.

---

Implement path resolution checks in asset routes

- Added `_is_resolved_path_allowed` function to enforce allowed roots for file paths.
- Updated asset route handlers to validate resolved paths against allowed roots.

---

Refactor database maintenance routes for async handling

- Changed database close operations to use async `aclose` method.
- Updated error handling during database maintenance operations.

---

Update scan routes to utilize async database vacuuming

- Replaced synchronous database vacuum calls with async `avacuum` method.

---

Modify tests to support async database operations

- Updated test examples to use async context management for database interactions.
- Refactored integration tests to ensure proper async cleanup of database connections.
- Adjusted regression tests to count async transaction invocations correctly.
2026-02-16 01:05:48 +01:00
Ewald bf115339d2 Bump version to 2.3.3 2026-02-13 19:45:28 +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
Ewald 00ee7806f7 feat: Add tool detection helpers for ExifTool and FFprobe
- 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.
2026-02-12 17:55:28 +01:00
Ewald ALOEBOETOE 91441ae50f Remove Roadmap link from README
Removed the Roadmap link from the README.
2026-02-10 11:19:07 +01:00
Your Name f585da6f5c chore(release): bump version to 2.3.2 and update changelog 2026-02-09 22:43:48 +01:00
Ewald ALOEBOETOE 80800d1a9a Add features : Audio Extraction , and Improvements
Add features : Audio Extraction , and Improvements
2026-02-08 20:15:04 +01:00
Your Name 6e9320529d Add unit tests for audio metadata extraction and geninfo parsing
- Implement tests for audio classification supporting AIFF and AIF formats.
- Create a test to verify audio metadata extraction from EXIF and FFprobe data.
- Add tests for detecting T2A and A2A workflow types in geninfo parsing.
- Validate extraction of lyrics and sampler widget values in the ace step workflow.
2026-02-08 20:09:25 +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 4b5a0395b7 Release v2.3.1 — UI API token & remote access; update changelog 2026-02-07 12:45:06 +01:00
Your Name b60896f5b6 feat: add Ko-fi badge to README and update version badge link in headerView.js 2026-02-07 12:29:36 +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 6379914e06 Bump version to v2.3.0 and add CHANGELOG.md 2026-02-07 03:18:16 +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
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 2d1adb10ef edit user_guide 2026-01-28 19:31:56 +01:00