From 2b10814b2eb560642ae2b8cdec05c9d4108a2c2f Mon Sep 17 00:00:00 2001 From: Ewald <129623145+MajoorWaldi@users.noreply.github.com> Date: Fri, 24 Apr 2026 23:47:27 +0200 Subject: [PATCH] feat(mfv): ImageOps live preview crop + node panel selection sync - ImageOps preview bridge: stream cropped contain-fit rect of __imageops_state.canvas (removes square scope/letterbox); fall back to full canvas when user pan/zoom is active. Signature-cached encode (WeakMap) avoids re-encoding on every poll tick. - Floating viewer: skip metadata enrichment for imageops-live-preview source; preserve user pan/zoom across stream frames of the same node; remove inline CSS overrides that blocked the MFV transform. - Workflow Nodes panel: graph-selected node is auto-expanded, promoted to first position in its container, scrolled into view, and gets a subtle blue highlight (is-selected-from-graph). --- docs/DOCUMENTATION_INDEX.md | 97 +- docs/HOTKEYS_SHORTCUTS.md | 332 +- docs/SETTINGS_CONFIGURATION.md | 179 +- docs/VIEWER_FEATURE_TUTORIAL.md | 415 +- docs/node-stream-reactivation.md | 79 +- js/app/i18n.js | 31 +- js/entry.js | 13 + js/features/panel/messages/messageCenter.js | 2 +- js/features/panel/messages/shortcutGuide.js | 6 +- js/features/viewer/FloatingViewer.impl.js | 62 +- js/features/viewer/LiveStreamTracker.js | 387 +- js/features/viewer/floatingViewerLoader.js | 24 +- js/features/viewer/floatingViewerManager.js | 19 + js/features/viewer/floatingViewerMode.js | 28 +- js/features/viewer/floatingViewerUi.js | 85 +- .../viewer/nodeStream/NodeStreamController.js | 16 +- .../nodeStream/imageOpsPreviewBridge.js | 150 + .../nodeStream/nodeStreamFeatureFlag.js | 9 +- .../workflowSidebar/WorkflowNodesTab.js | 28 +- js/tests/node_stream_controller.vitest.mjs | 86 +- js/theme/theme-comfy.css | 29 + js_dist/chunks/BaseAdapter-Dv004G6c.js | 12 + ...B4CeRtJO.js => FloatingViewer-BwCzqSX7.js} | 880 +- ...6-3VG.js => KnownNodesAdapter-_fJO77oP.js} | 209 +- js_dist/chunks/LiveStreamTracker-B9lDuesB.js | 96 + js_dist/chunks/LiveStreamTracker-C1ocbDb0.js | 254 - .../chunks/NodeStreamController-CiwFCJmY.js | 476 + .../{entry-CYuJ97dP.js => entry-9KVS850S.js} | 18986 ++++++++-------- ...enInfo-qe73846m.js => genInfo-BEf6-irD.js} | 2 +- ...Gz6iswo.js => model3dRenderer-D-R5NMFF.js} | 2 +- ...{scopes-BvtFrvIc.js => scopes-CnKJmtzx.js} | 2 +- ...ide-CGr_e0F-.js => sideBySide-Dh3Z9TG4.js} | 2 +- js_dist/entry.js | 2 +- 33 files changed, 11822 insertions(+), 11178 deletions(-) create mode 100644 js/features/viewer/nodeStream/imageOpsPreviewBridge.js create mode 100644 js_dist/chunks/BaseAdapter-Dv004G6c.js rename js_dist/chunks/{FloatingViewer-B4CeRtJO.js => FloatingViewer-BwCzqSX7.js} (87%) rename js_dist/chunks/{NodeStreamController-CLm6-3VG.js => KnownNodesAdapter-_fJO77oP.js} (54%) create mode 100644 js_dist/chunks/LiveStreamTracker-B9lDuesB.js delete mode 100644 js_dist/chunks/LiveStreamTracker-C1ocbDb0.js create mode 100644 js_dist/chunks/NodeStreamController-CiwFCJmY.js rename js_dist/chunks/{entry-CYuJ97dP.js => entry-9KVS850S.js} (91%) rename js_dist/chunks/{genInfo-qe73846m.js => genInfo-BEf6-irD.js} (99%) rename js_dist/chunks/{model3dRenderer-BGz6iswo.js => model3dRenderer-D-R5NMFF.js} (87%) rename js_dist/chunks/{scopes-BvtFrvIc.js => scopes-CnKJmtzx.js} (99%) rename js_dist/chunks/{sideBySide-CGr_e0F-.js => sideBySide-Dh3Z9TG4.js} (99%) diff --git a/docs/DOCUMENTATION_INDEX.md b/docs/DOCUMENTATION_INDEX.md index 5cf68665..444a8489 100644 --- a/docs/DOCUMENTATION_INDEX.md +++ b/docs/DOCUMENTATION_INDEX.md @@ -8,18 +8,21 @@ Welcome to the documentation hub for **Majoor Assets Manager** for ComfyUI. ## Quick Start ### New users + 1. **[Installation Guide](INSTALLATION.md)** - Install and set up the extension 2. **[User Guide (HTML)](../user_guide.html)** - Visual walkthrough with screenshots 3. **[Hotkeys & Shortcuts](HOTKEYS_SHORTCUTS.md)** - Essential keyboard shortcuts 4. **[Basic Search](SEARCH_FILTERING.md)** - Find assets quickly ### Returning users + - **[AI Features Guide](AI_FEATURES.md)** - AI-assisted search and enrichment features - **[Viewer Feature Tutorial](VIEWER_FEATURE_TUTORIAL.md)** - Floating viewer and analysis tools - **[Changelog](../CHANGELOG.md)** - Recent releases and fixes - **[Architecture Map](ARCHITECTURE_MAP.md)** - Backend boundaries and refactor guide ### Privacy And Offline Use + - **[PRIVACY_OFFLINE.md](PRIVACY_OFFLINE.md)** - Dedicated privacy, offline, and token explanation page - **[AI_FEATURES.md](AI_FEATURES.md)** - Local AI processing, model downloads, offline behavior, and token clarification - **[SECURITY_ENV_VARS.md](SECURITY_ENV_VARS.md)** - Remote access security, API token behavior, and safe defaults @@ -28,62 +31,69 @@ Welcome to the documentation hub for **Majoor Assets Manager** for ComfyUI. ## Documentation Categories ### Getting Started -| Document | Description | -|----------|-------------| -| **[INSTALLATION.md](INSTALLATION.md)** | Detailed installation and network-drive guidance | -| **[user_guide.html](../user_guide.html)** | Full visual user guide | -| **[HOTKEYS_SHORTCUTS.md](HOTKEYS_SHORTCUTS.md)** | Keyboard shortcuts | -| **[SHORTCUTS.md](SHORTCUTS.md)** | Extra gestures and shortcuts | + +| Document | Description | +| ------------------------------------------------ | ------------------------------------------------ | +| **[INSTALLATION.md](INSTALLATION.md)** | Detailed installation and network-drive guidance | +| **[user_guide.html](../user_guide.html)** | Full visual user guide | +| **[HOTKEYS_SHORTCUTS.md](HOTKEYS_SHORTCUTS.md)** | Keyboard shortcuts | +| **[SHORTCUTS.md](SHORTCUTS.md)** | Extra gestures and shortcuts | ### Core Features -| Document | Description | -|----------|-------------| -| **[SEARCH_FILTERING.md](SEARCH_FILTERING.md)** | Full-text search, filters, and sorting | -| **[VIEWER_FEATURE_TUTORIAL.md](VIEWER_FEATURE_TUTORIAL.md)** | Viewer, MFV, and analysis tools | -| **[FLOATING_VIEWER_WORKFLOW_SIDEBAR.md](FLOATING_VIEWER_WORKFLOW_SIDEBAR.md)** | Node Parameters sidebar in Floating Viewer | -| **[RATINGS_TAGS_COLLECTIONS.md](RATINGS_TAGS_COLLECTIONS.md)** | Ratings, tags, and collections | -| **[DRAG_DROP.md](DRAG_DROP.md)** | Drag and drop behavior | -| **[AI_FEATURES.md](AI_FEATURES.md)** | Semantic search, auto-tags, and enrichment | -| **[CUSTOM_NODES.md](CUSTOM_NODES.md)** | MajoorSaveImage & MajoorSaveVideo node reference | + +| Document | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------ | +| **[SEARCH_FILTERING.md](SEARCH_FILTERING.md)** | Full-text search, filters, and sorting | +| **[VIEWER_FEATURE_TUTORIAL.md](VIEWER_FEATURE_TUTORIAL.md)** | Viewer, MFV, and analysis tools | +| **[FLOATING_VIEWER_WORKFLOW_SIDEBAR.md](FLOATING_VIEWER_WORKFLOW_SIDEBAR.md)** | Node Parameters sidebar in Floating Viewer | +| **[RATINGS_TAGS_COLLECTIONS.md](RATINGS_TAGS_COLLECTIONS.md)** | Ratings, tags, and collections | +| **[DRAG_DROP.md](DRAG_DROP.md)** | Drag and drop behavior | +| **[AI_FEATURES.md](AI_FEATURES.md)** | Semantic search, auto-tags, and enrichment | +| **[CUSTOM_NODES.md](CUSTOM_NODES.md)** | MajoorSaveImage & MajoorSaveVideo node reference | ### Plugin System -| Document | Description | -|----------|-------------| -| **[PLUGIN_QUICK_REFERENCE.md](PLUGIN_QUICK_REFERENCE.md)** | Quick start for plugin development | -| **[PLUGIN_SYSTEM_DESIGN.md](PLUGIN_SYSTEM_DESIGN.md)** | Full plugin architecture design | -| **[PLUGIN_SYSTEM_IMPLEMENTATION_SUMMARY.md](PLUGIN_SYSTEM_IMPLEMENTATION_SUMMARY.md)** | Implementation status and details | + +| Document | Description | +| -------------------------------------------------------------------------------------- | ---------------------------------- | +| **[PLUGIN_QUICK_REFERENCE.md](PLUGIN_QUICK_REFERENCE.md)** | Quick start for plugin development | +| **[PLUGIN_SYSTEM_DESIGN.md](PLUGIN_SYSTEM_DESIGN.md)** | Full plugin architecture design | +| **[PLUGIN_SYSTEM_IMPLEMENTATION_SUMMARY.md](PLUGIN_SYSTEM_IMPLEMENTATION_SUMMARY.md)** | Implementation status and details | ### Configuration And Security -| Document | Description | -|----------|-------------| -| **[PRIVACY_OFFLINE.md](PRIVACY_OFFLINE.md)** | Dedicated privacy, offline behavior, and token clarification guide | -| **[SETTINGS_CONFIGURATION.md](SETTINGS_CONFIGURATION.md)** | UI and runtime settings, index DB path, env vars | -| **[SECURITY_ENV_VARS.md](SECURITY_ENV_VARS.md)** | Environment variables and security model | -| **[THREAT_MODEL.md](THREAT_MODEL.md)** | Threats, mitigations, and residual risk | -| **[ARCHITECTURE_MAP.md](ARCHITECTURE_MAP.md)** | Package responsibilities and internal boundaries | + +| Document | Description | +| ---------------------------------------------------------- | ------------------------------------------------------------------ | +| **[PRIVACY_OFFLINE.md](PRIVACY_OFFLINE.md)** | Dedicated privacy, offline behavior, and token clarification guide | +| **[SETTINGS_CONFIGURATION.md](SETTINGS_CONFIGURATION.md)** | UI and runtime settings, index DB path, env vars | +| **[SECURITY_ENV_VARS.md](SECURITY_ENV_VARS.md)** | Environment variables and security model | +| **[THREAT_MODEL.md](THREAT_MODEL.md)** | Threats, mitigations, and residual risk | +| **[ARCHITECTURE_MAP.md](ARCHITECTURE_MAP.md)** | Package responsibilities and internal boundaries | ### Maintenance And Development -| Document | Description | -|----------|-------------| + +| Document | Description | +| ------------------------------------------ | ---------------------------------------------------------------- | | **[DB_MAINTENANCE.md](DB_MAINTENANCE.md)** | Database maintenance, recovery, and configurable index directory | -| **[TESTING.md](TESTING.md)** | Tests, reports, and quality gate | -| **[API_REFERENCE.md](API_REFERENCE.md)** | Backend endpoint reference | -| **[CONTRIBUTING.md](CONTRIBUTING.md)** | Developer onboarding and contribution guidelines | -| **[adr/](adr/)** | Architecture Decision Records | +| **[TESTING.md](TESTING.md)** | Tests, reports, and quality gate | +| **[API_REFERENCE.md](API_REFERENCE.md)** | Backend endpoint reference | +| **[CONTRIBUTING.md](CONTRIBUTING.md)** | Developer onboarding and contribution guidelines | +| **[adr/](adr/)** | Architecture Decision Records | ### Frontend Architecture -| Document | Description | -|----------|-------------| -| **[FRONTEND_IMPERATIVE_DESIGN.md](FRONTEND_IMPERATIVE_DESIGN.md)** | Design rationale for imperative modules | -| **[FRONTEND_LIFECYCLE_CONVENTIONS.md](FRONTEND_LIFECYCLE_CONVENTIONS.md)** | Component lifecycle conventions | -| **[VUE_MIGRATION_PLAN.md](VUE_MIGRATION_PLAN.md)** | Vue 3 migration plan (archival) | -| **[node-stream-reactivation.md](node-stream-reactivation.md)** | Node Stream feature reactivation guide | + +| Document | Description | +| -------------------------------------------------------------------------- | --------------------------------------- | +| **[FRONTEND_IMPERATIVE_DESIGN.md](FRONTEND_IMPERATIVE_DESIGN.md)** | Design rationale for imperative modules | +| **[FRONTEND_LIFECYCLE_CONVENTIONS.md](FRONTEND_LIFECYCLE_CONVENTIONS.md)** | Component lifecycle conventions | +| **[VUE_MIGRATION_PLAN.md](VUE_MIGRATION_PLAN.md)** | Vue 3 migration plan (archival) | +| **[node-stream-reactivation.md](node-stream-reactivation.md)** | Node Stream and MFV stream boundaries | ### Historical Documents -| Document | Description | -|----------|-------------| + +| Document | Description | +| -------------------------------------------------------------------------------------------------- | ----------------------------------------- | | **[PLAN_REFACTO_COMPLET_MAJOOR_ASSETS_MANAGER.md](PLAN_REFACTO_COMPLET_MAJOOR_ASSETS_MANAGER.md)** | V1 refactoring completion plan (archival) | -| **[PLAN_REFACTO_V2_LONG_TERME.md](PLAN_REFACTO_V2_LONG_TERME.md)** | V2 long-term refactoring plan (archival) | +| **[PLAN_REFACTO_V2_LONG_TERME.md](PLAN_REFACTO_V2_LONG_TERME.md)** | V2 long-term refactoring plan (archival) | ## Quality And Verification @@ -102,6 +112,7 @@ npm run test:js ``` The quality gate enforces: + - UTF-8 text files without BOM - `ruff` linting on changed Python files during the migration window - `mypy` @@ -115,11 +126,13 @@ The quality gate enforces: ## Security Note The backend keeps a compatibility-first local security model: + - loopback writes remain allowed by default - remote writes are denied unless explicitly authorized - `MAJOOR_REQUIRE_AUTH=1` switches to strict token-auth for local writes too Current releases also support a Settings-first remote setup flow: + - `Recommended Remote LAN Setup` is the preferred one-click LAN path - the current browser session exposes its state through the runtime `Write auth:` indicator inside Assets Manager diff --git a/docs/HOTKEYS_SHORTCUTS.md b/docs/HOTKEYS_SHORTCUTS.md index b69ab87e..e26411ff 100644 --- a/docs/HOTKEYS_SHORTCUTS.md +++ b/docs/HOTKEYS_SHORTCUTS.md @@ -4,11 +4,13 @@ **Last Updated**: April 14, 2026 ## Overview + This guide covers all active keyboard shortcuts for the Majoor Assets Manager, including the new **Majoor Floating Viewer (MFV)**. --- ## Table of Contents + - [Global / Panel Hotkeys](#global--panel-hotkeys) - [Grid View Hotkeys](#grid-view-hotkeys) - [Standard Viewer Hotkeys](#standard-viewer-hotkeys) @@ -22,13 +24,13 @@ This guide covers all active keyboard shortcuts for the Majoor Assets Manager, i These shortcuts work globally in the Assets Manager panel. -| Shortcut | Action | Scope | -|----------|--------|-------| -| **Ctrl+S** / **Cmd+S** | Trigger Index Scan | Global (Panel Focused) | -| **Ctrl+F** / **Ctrl+K** | Focus Search Input | Global | -| **Ctrl+H** | Clear Search Input | Global | -| **D** | Toggle Sidebar (Details) | Grid / Panel | -| **Ctrl+V** / **Cmd+V** | Toggle Floating Viewer | Grid / Panel | +| Shortcut | Action | Scope | +| ----------------------- | ------------------------ | ---------------------- | +| **Ctrl+S** / **Cmd+S** | Trigger Index Scan | Global (Panel Focused) | +| **Ctrl+F** / **Ctrl+K** | Focus Search Input | Global | +| **Ctrl+H** | Clear Search Input | Global | +| **D** | Toggle Sidebar (Details) | Grid / Panel | +| **Ctrl+V** / **Cmd+V** | Toggle Floating Viewer | Grid / Panel | --- @@ -37,35 +39,38 @@ These shortcuts work globally in the Assets Manager panel. These shortcuts apply when the asset grid has focus. ### Navigation & Selection -| Shortcut | Action | -|----------|--------| -| **Arrow Keys** (↑↓←→) | Navigate selection | -| **Enter** / **Space** | Open Viewer | -| **Ctrl+A** / **Cmd+A** | Select All | -| **Ctrl+D** / **Cmd+D** | Deselect All | -| **Ctrl+Click** / **Cmd+Click** | Toggle Selection | -| **Shift+Click** | Range Selection | -| **Home** | Go to first asset | -| **End** | Go to last asset | -| **Page Up** | Scroll up one page | -| **Page Down** | Scroll down one page | + +| Shortcut | Action | +| ------------------------------ | -------------------- | +| **Arrow Keys** (↑↓←→) | Navigate selection | +| **Enter** / **Space** | Open Viewer | +| **Ctrl+A** / **Cmd+A** | Select All | +| **Ctrl+D** / **Cmd+D** | Deselect All | +| **Ctrl+Click** / **Cmd+Click** | Toggle Selection | +| **Shift+Click** | Range Selection | +| **Home** | Go to first asset | +| **End** | Go to last asset | +| **Page Up** | Scroll up one page | +| **Page Down** | Scroll down one page | ### Organization & Rating -| Shortcut | Action | -|----------|--------| -| **0** | Reset Rating (0 stars) | -| **1** - **5** | Set Rating (1-5 stars) | -| **T** | Edit Tags | -| **B** | Add to Collection (Bookmark) | -| **Shift+B** | Remove from Collection | + +| Shortcut | Action | +| ------------- | ---------------------------- | +| **0** | Reset Rating (0 stars) | +| **1** - **5** | Set Rating (1-5 stars) | +| **T** | Edit Tags | +| **B** | Add to Collection (Bookmark) | +| **Shift+B** | Remove from Collection | ### File Operations -| Shortcut | Action | -|----------|--------| -| **F2** | Rename File | -| **Delete** | Delete File (with confirmation) | -| **Ctrl+Shift+C** / **Cmd+Shift+C** | Copy File Path | -| **Ctrl+Shift+E** / **Cmd+Shift+E** | Open in Explorer/Finder | + +| Shortcut | Action | +| ---------------------------------- | ------------------------------- | +| **F2** | Rename File | +| **Delete** | Delete File (with confirmation) | +| **Ctrl+Shift+C** / **Cmd+Shift+C** | Copy File Path | +| **Ctrl+Shift+E** / **Cmd+Shift+E** | Open in Explorer/Finder | --- @@ -74,51 +79,56 @@ These shortcuts apply when the asset grid has focus. These shortcuts apply when the **Standard Viewer** overlay is open (double-click on asset). ### General -| Shortcut | Action | -|----------|--------| -| **Esc** | Close Viewer | -| **F** | Toggle Fullscreen | -| **D** | Toggle Info Panel (Generation Data) | -| **Space** | Play/Pause Video | + +| Shortcut | Action | +| --------- | ----------------------------------- | +| **Esc** | Close Viewer | +| **F** | Toggle Fullscreen | +| **D** | Toggle Info Panel (Generation Data) | +| **Space** | Play/Pause Video | ### Navigation -| Shortcut | Action | Notes | -|----------|--------|-------| -| **Left Arrow** | Previous Asset | Default behavior | -| **Right Arrow** | Next Asset | Default behavior | -| **Left Arrow** | Step Frame (-1) | **Only when Video Player bar is focused** | + +| Shortcut | Action | Notes | +| --------------- | --------------- | ----------------------------------------- | +| **Left Arrow** | Previous Asset | Default behavior | +| **Right Arrow** | Next Asset | Default behavior | +| **Left Arrow** | Step Frame (-1) | **Only when Video Player bar is focused** | | **Right Arrow** | Step Frame (+1) | **Only when Video Player bar is focused** | -| **Mouse Wheel** | Zoom In/Out | | -| **Click+Drag** | Pan Image | When zoomed in | +| **Mouse Wheel** | Zoom In/Out | | +| **Click+Drag** | Pan Image | When zoomed in | ### Tools & Analysis -| Shortcut | Action | Notes | -|----------|--------|-------| -| **I** | Set In Point (video) / Toggle Pixel Probe (image) | Context-sensitive | -| **O** | Set Out Point | Video only | -| **C** | Copy Probed Color (Hex) | | -| **L** | Toggle Loupe | | -| **Z** | Toggle Zebra (Exposure) | | -| **G** | Cycle Grid Overlays | | -| **Alt+1** | Toggle 1:1 Pixel View | | -| **+** / **-** | Zoom In / Out | | + +| Shortcut | Action | Notes | +| ------------- | ------------------------------------------------- | ----------------- | +| **I** | Set In Point (video) / Toggle Pixel Probe (image) | Context-sensitive | +| **O** | Set Out Point | Video only | +| **C** | Copy Probed Color (Hex) | | +| **L** | Toggle Loupe | | +| **Z** | Toggle Zebra (Exposure) | | +| **G** | Cycle Grid Overlays | | +| **Alt+1** | Toggle 1:1 Pixel View | | +| **+** / **-** | Zoom In / Out | | ### Enhancement Tools -| Shortcut | Action | -|----------|--------| -| **E** | Toggle Exposure (EV) Control | -| **M** | Toggle Gamma Correction | -| **1** / **2** / **3** | Isolate R/G/B Channel | -| **0** | Reset to RGB (all channels) | -| **A** | Toggle Alpha Channel View | -| **Y** | Toggle Luma (Y) View | + +| Shortcut | Action | +| --------------------- | ---------------------------- | +| **E** | Toggle Exposure (EV) Control | +| **M** | Toggle Gamma Correction | +| **1** / **2** / **3** | Isolate R/G/B Channel | +| **0** | Reset to RGB (all channels) | +| **A** | Toggle Alpha Channel View | +| **Y** | Toggle Luma (Y) View | ### Analysis Overlays -| Shortcut | Action | -|----------|--------| + +| Shortcut | Action | +| ----------- | ------------------ | | **Shift+Z** | Toggle False Color | -| **Shift+H** | Toggle Histogram | -| **Shift+W** | Toggle Waveform | +| **Shift+H** | Toggle Histogram | +| **Shift+W** | Toggle Waveform | | **Shift+V** | Toggle Vectorscope | --- @@ -128,56 +138,62 @@ These shortcuts apply when the **Standard Viewer** overlay is open (double-click These shortcuts apply when the **Majoor Floating Viewer** panel is open. ### General Controls -| Shortcut | Action | -|----------|--------| -| **Esc** | Close Floating Viewer | -| **C** | Cycle compare modes: A/B, Side-by-side, Off (Simple mode) | -| **K** | Toggle KSampler preview on or off | -| **L** | Toggle Live Stream on or off | + +| Shortcut | Action | +| -------- | --------------------------------------------------------- | +| **Esc** | Close Floating Viewer | +| **C** | Cycle compare modes: A/B, Side-by-side, Off (Simple mode) | +| **K** | Toggle KSampler denoising preview on or off | +| **L** | Toggle Live Stream final-output following on or off | ### Navigation -| Shortcut | Action | -|----------|--------| -| **Left Arrow** | Previous Asset | -| **Right Arrow** | Next Asset | -| **Up Arrow** | Zoom In | -| **Down Arrow** | Zoom Out | -| **0** | Reset Zoom (Fit to Screen) | -| **1** | Actual Size (1:1 Pixel) | -| **Click+Drag** | Pan Image (when zoomed) | -| **Mouse Wheel** | Zoom In/Out | -### Node Tracking -| Shortcut | Action | -|----------|--------| -| **N** | Toggle Node Tracking | -| **Shift+N** | Follow Selected Node | +| Shortcut | Action | +| --------------- | -------------------------- | +| **Left Arrow** | Previous Asset | +| **Right Arrow** | Next Asset | +| **Up Arrow** | Zoom In | +| **Down Arrow** | Zoom Out | +| **0** | Reset Zoom (Fit to Screen) | +| **1** | Actual Size (1:1 Pixel) | +| **Click+Drag** | Pan Image (when zoomed) | +| **Mouse Wheel** | Zoom In/Out | + +### Node Stream + +| Shortcut | Action | +| ----------- | -------------------------------------- | +| **N** | Toggle selected-node preview streaming | +| **Shift+N** | Follow selected node, when available | ### Info Overlay -| Shortcut | Action | -|----------|--------| -| **I** | Toggle Gen Info Overlay | -| **O** | Toggle Overlays (all) | -| **P** | Show Prompt Only | -| **S** | Show Settings Only | + +| Shortcut | Action | +| -------- | ----------------------- | +| **I** | Toggle Gen Info Overlay | +| **O** | Toggle Overlays (all) | +| **P** | Show Prompt Only | +| **S** | Show Settings Only | > In MFV, Gen Info stays as an overlay and automatically moves above the inline player controls when those controls are visible. ### Video Controls (MFV) -| Shortcut | Action | -|----------|--------| -| **Space** | Play/Pause the focused MFV player | -| **Left Arrow** | Step backward one frame | -| **Right Arrow** | Step forward one frame | + +| Shortcut | Action | +| --------------- | --------------------------------- | +| **Space** | Play/Pause the focused MFV player | +| **Left Arrow** | Step backward one frame | +| **Right Arrow** | Step forward one frame | > Click once on the inline player surface to give it focus before using the playback shortcuts above. ### Compare Mode (MFV) -| Shortcut | Action | -|----------|--------| -| **Tab** | Swap A/B Images | -| **\\** | Toggle Split View (vertical/horizontal) | -| **Shift+S** | Save Comparison Snapshot | + +| Shortcut | Action | +| ----------- | --------------------------------------- | +| **Tab** | Swap A/B Images | +| **\\** | Toggle Split View (vertical/horizontal) | +| **Shift+S** | Save Comparison Snapshot | --- @@ -186,33 +202,38 @@ These shortcuts apply when the **Majoor Floating Viewer** panel is open. These shortcuts apply when playing video content in the viewer. ### Playback Control -| Shortcut | Action | -|----------|--------| -| **Space** | Play/Pause | + +| Shortcut | Action | +| ------------------ | ---------- | +| **Space** | Play/Pause | | **Click on video** | Play/Pause | ### Frame Navigation -| Shortcut | Action | Notes | -|----------|--------|-------| -| **Left Arrow** | Previous Frame | When player bar is focused | -| **Right Arrow** | Next Frame | When player bar is focused | -| **Home** | Go to In Point | | -| **End** | Go to Out Point | | + +| Shortcut | Action | Notes | +| --------------- | --------------- | -------------------------- | +| **Left Arrow** | Previous Frame | When player bar is focused | +| **Right Arrow** | Next Frame | When player bar is focused | +| **Home** | Go to In Point | | +| **End** | Go to Out Point | | ### In/Out Points (Edit Marks) -| Shortcut | Action | -|----------|--------| -| **I** | Set In Point at current frame | -| **O** | Set Out Point at current frame | + +| Shortcut | Action | +| -------- | ------------------------------ | +| **I** | Set In Point at current frame | +| **O** | Set Out Point at current frame | ### Speed Control -| Shortcut | Action | -|----------|--------| -| **[** | Decrease Playback Speed (-0.25x) | -| **]** | Increase Playback Speed (+0.25x) | -| **\\** | Reset Speed to Normal (1x) | + +| Shortcut | Action | +| -------- | -------------------------------- | +| **[** | Decrease Playback Speed (-0.25x) | +| **]** | Increase Playback Speed (+0.25x) | +| **\\** | Reset Speed to Normal (1x) | ### Audio + Video audio is automatically unmuted after first user interaction (play, seek, or frame step). --- @@ -220,38 +241,42 @@ Video audio is automatically unmuted after first user interaction (play, seek, o ## Mouse Shortcuts ### Grid View -| Action | Result | -|--------|--------| -| **Click** | Select asset | -| **Double-Click** | Open in Viewer | -| **Ctrl+Click** / **Cmd+Click** | Toggle selection | -| **Shift+Click** | Range selection | -| **Right-Click** | Open context menu | -| **Drag** | Initiate drag & drop | + +| Action | Result | +| ------------------------------ | -------------------- | +| **Click** | Select asset | +| **Double-Click** | Open in Viewer | +| **Ctrl+Click** / **Cmd+Click** | Toggle selection | +| **Shift+Click** | Range selection | +| **Right-Click** | Open context menu | +| **Drag** | Initiate drag & drop | ### Viewer -| Action | Result | -|--------|--------| -| **Mouse Wheel** | Zoom in/out | -| **Click+Drag** (zoomed) | Pan image | -| **Double-Click** | Toggle 1:1 zoom | -| **Right-Click** | Open context menu | -| **Middle-Click** | Reset zoom and pan | + +| Action | Result | +| ----------------------- | ------------------ | +| **Mouse Wheel** | Zoom in/out | +| **Click+Drag** (zoomed) | Pan image | +| **Double-Click** | Toggle 1:1 zoom | +| **Right-Click** | Open context menu | +| **Middle-Click** | Reset zoom and pan | ### Floating Viewer -| Action | Result | -|--------|--------| -| **Drag Header** | Move panel | -| **Drag Edges** | Resize panel | -| **Click Outside** | Close panel (optional) | -| **Mouse Wheel** | Zoom in/out | -| **Click+Drag** (zoomed) | Pan image | + +| Action | Result | +| ----------------------- | ---------------------- | +| **Drag Header** | Move panel | +| **Drag Edges** | Resize panel | +| **Click Outside** | Close panel (optional) | +| **Mouse Wheel** | Zoom in/out | +| **Click+Drag** (zoomed) | Pan image | --- ## Quick Reference Card ### Most Used Shortcuts + ``` Grid Navigation: Arrow keys Open Viewer: Enter / Double-click @@ -266,6 +291,7 @@ Pan: Click+drag ``` ### Viewer Essentials + ``` Fullscreen: F Info Panel: D @@ -277,10 +303,11 @@ Grid: G ``` ### MFV Essentials + ``` Compare Mode: M -Live Stream: Shift+M -Node Track: N +Live Stream: L +Node Stream: N Gen Info: I Play/Pause: Space ``` @@ -290,13 +317,17 @@ Play/Pause: Space ## Customization ### Remapping Shortcuts + Currently, shortcuts are hardcoded. Future versions may support customization via: + - Browser extensions - ComfyUI keymap settings - Configuration file ### Conflicts with ComfyUI + The following shortcuts may conflict with ComfyUI globals: + - **Ctrl+S**: Also triggers ComfyUI workflow save - **Delete**: Also deletes ComfyUI nodes - **Ctrl+Z**: ComfyUI undo (not overridden) @@ -308,19 +339,22 @@ When the Assets Manager panel has focus, its shortcuts take precedence. ## Accessibility ### Keyboard-Only Navigation + All features are accessible via keyboard: + - Tab through UI elements - Enter/Space to activate - Arrow keys to navigate - Esc to close dialogs ### Screen Reader Support + - ARIA labels on interactive elements - Status announcements for operations - Alt text on thumbnails --- -*Hotkeys & Shortcuts Guide Version: 2.4.5* -*Last Updated: April 14, 2026* -*Compatible with Majoor Assets Manager v2.4.4+* +_Hotkeys & Shortcuts Guide Version: 2.4.5_ +_Last Updated: April 14, 2026_ +_Compatible with Majoor Assets Manager v2.4.4+_ diff --git a/docs/SETTINGS_CONFIGURATION.md b/docs/SETTINGS_CONFIGURATION.md index 9eef274b..ac8d175b 100644 --- a/docs/SETTINGS_CONFIGURATION.md +++ b/docs/SETTINGS_CONFIGURATION.md @@ -4,6 +4,7 @@ **Last Updated**: April 15, 2026 ## Overview + The Majoor Assets Manager offers extensive configuration options to customize the interface, performance, and functionality to match your workflow. This guide covers all available settings and configuration options. **Recent highlights**: Floating Viewer settings, output path configuration from the UI, a fully Settings-driven remote write security flow, and a configurable Index DB directory for users on network drives or NAS storage. @@ -11,20 +12,25 @@ The Majoor Assets Manager offers extensive configuration options to customize th ## Browser-Based Settings ### Storage Location + Browser-based settings are stored in `localStorage` under the `mjrSettings` key: + - Settings persist between browser sessions - Settings are specific to each browser/computer - Settings don't sync across different browsers or devices - Settings are tied to the specific domain where ComfyUI is hosted ### Accessing Settings + Settings are primarily adjusted through the user interface: + 1. Open the Assets Manager in ComfyUI 2. Look for settings icons or configuration panels 3. Adjust settings as needed 4. Settings are saved automatically ### Security Settings In The UI + Majoor now exposes the main remote write controls directly in Settings, including: - `Recommended Remote LAN Setup` @@ -45,6 +51,7 @@ There are two unrelated token concepts in the UI: The HuggingFace token is **not** a cloud inference API key. Its presence does not mean prompts or images are sent to an external hosted AI service. ### Browser Session Vs Server Token State + Not all security values live in the same place: - browser settings in `localStorage` keep UI preferences and non-secret token state such as `tokenConfigured` and `tokenHint` @@ -54,6 +61,7 @@ Not all security values live in the same place: This means a browser can show that a token exists on the server without storing the plaintext token permanently in browser local storage. ### Visual Write Authorization Status + When the Assets Manager panel is open, the runtime status widget in the lower-right corner now includes a `Write auth:` line. Examples: @@ -67,6 +75,7 @@ Use that line as the quickest confirmation that the current browser session can ## Display Settings ### Page Size + - **Purpose**: Controls how many assets are loaded per request - **Default**: Usually 50-100 assets per page - **Range**: Typically 10-500 assets per page @@ -74,6 +83,7 @@ Use that line as the quickest confirmation that the current browser session can - **Recommendation**: Adjust based on your system resources and usage patterns ### Sidebar Position + - **Options**: Left or Right - **Default**: Usually Right - **Purpose**: Controls where the details sidebar appears @@ -81,6 +91,7 @@ Use that line as the quickest confirmation that the current browser session can - **Recommendation**: Choose based on your screen setup and preferences ### Hide PNG Siblings + - **Purpose**: Hide PNG files when video previews exist - **Default**: Usually Off/Disabled - **Function**: Reduces clutter from duplicate content in different formats @@ -90,12 +101,14 @@ Use that line as the quickest confirmation that the current browser session can ## Performance Settings ### Auto-Scan on Startup + - **Auto-scan on Startup**: Automatically scan when ComfyUI starts - **Default**: Usually Disabled to save resources - **Impact**: Ensures fresh index but uses system resources - **Recommendation**: Enable for frequently updated directories ### Status Poll Interval + - **Purpose**: How often to check background tasks and status - **Default**: Usually 1-5 seconds - **Range**: 0.5-30 seconds @@ -103,6 +116,7 @@ Use that line as the quickest confirmation that the current browser session can - **Recommendation**: 1-2 seconds for good balance of responsiveness and resource usage ### Tags Cache TTL + - **Purpose**: Time-to-live for tag caching in milliseconds - **Default**: Usually 30,000ms (30 seconds) - **Range**: 1,000ms to 300,000ms (1 second to 5 minutes) @@ -112,17 +126,19 @@ Use that line as the quickest confirmation that the current browser session can ## Metadata & Viewer Settings ### Floating Viewer Default Toggles + - **UI location**: Settings → Majoor Assets Manager › Viewer - **Majoor: MFV Live Stream Enabled by Default** - - **Setting key**: `viewer.mfvLiveDefault` - - **Default**: Enabled / On - - **Purpose**: Controls whether Live Stream starts enabled when the Floating Viewer opens, initializes, or resets + - **Setting key**: `viewer.mfvLiveDefault` + - **Default**: Enabled / On + - **Purpose**: Controls whether Live Stream starts enabled when the Floating Viewer opens, initializes, or resets. Live Stream follows final generation outputs after execution; selected-node previews are handled by Node Stream. - **Majoor: MFV KSampler Preview Enabled by Default** - - **Setting key**: `viewer.mfvPreviewDefault` - - **Default**: Enabled / On - - **Purpose**: Controls whether the KSampler denoising preview starts enabled when the Floating Viewer opens, initializes, or resets + - **Setting key**: `viewer.mfvPreviewDefault` + - **Default**: Enabled / On + - **Purpose**: Controls whether the KSampler denoising preview starts enabled when the Floating Viewer opens, initializes, or resets. This stream shows sampler preview blobs during execution, not selected-node media. ### Media Probe Backend + - **Auto**: Automatically choose the best available backend - **ExifTool**: Use ExifTool exclusively for metadata extraction - **FFprobe**: Use FFprobe exclusively (especially for video) @@ -132,6 +148,7 @@ Use that line as the quickest confirmation that the current browser session can - **Recommendation**: Keep as Auto unless troubleshooting specific issues ### Workflow Minimap Display + - **Show Node Labels**: Display text labels on workflow minimap - **Show Connection Lines**: Display connections between nodes - **Show Parameter Values**: Display parameter values on nodes @@ -141,6 +158,7 @@ Use that line as the quickest confirmation that the current browser session can - **Recommendation**: Enable based on your need for workflow detail ### Observability + - **Request Logging**: Enable detailed logging of API requests - **Performance Metrics**: Track timing and performance data - **Debug Information**: Enable additional debugging output @@ -151,6 +169,7 @@ Use that line as the quickest confirmation that the current browser session can ## File System Settings ### Index Directory + - **Purpose**: Override where the SQLite index database and related index files are stored. - **Default**: `/_mjr_index/` (next to your assets) - **Why change it**: If your output directory lives on a network share (NAS, SMB, CIFS) or a slow/remote disk, SQLite may suffer file-locking issues. Moving the index to a fast local disk (e.g. `C:\mjr_index` on Windows) solves that without touching your asset files. @@ -159,6 +178,7 @@ Use that line as the quickest confirmation that the current browser session can - **Clear the override**: Leave the field empty and save to revert to the default (`/_mjr_index/`). ### Custom Roots + - **Adding Custom Directories**: Add additional directories to browse - **Path Validation**: Ensures paths are valid and accessible - **Symlink Support**: Allow symbolic links in custom roots (if enabled) @@ -170,6 +190,7 @@ Use that line as the quickest confirmation that the current browser session can ## Database Settings ### Connection Management + - **Max Connections**: Maximum simultaneous database connections - **Connection Timeout**: Time to wait for database operations - **Query Timeout**: Maximum time for individual queries @@ -178,6 +199,7 @@ Use that line as the quickest confirmation that the current browser session can - **Recommendation**: Adjust based on system resources and usage patterns ### Optimization + - **Auto-Optimize**: Automatically optimize database periodically - **Manual Optimization**: Run optimization tools manually - **Maintenance Schedule**: When optimization occurs @@ -197,104 +219,113 @@ Use that line as the quickest confirmation that the current browser session can ### Environment Variables (Backend) #### Directory Configuration + - **MAJOOR_OUTPUT_DIRECTORY** / **MJR_AM_OUTPUT_DIRECTORY**: Override default output directory - - Default: ComfyUI's output directory - - Format: Full path to directory - - Impact: Changes where the indexer looks for assets - - Example: `MAJOOR_OUTPUT_DIRECTORY=/path/to/my/output` + - Default: ComfyUI's output directory + - Format: Full path to directory + - Impact: Changes where the indexer looks for assets + - Example: `MAJOOR_OUTPUT_DIRECTORY=/path/to/my/output` - **MJR_AM_INDEX_DIRECTORY** / **MAJOOR_INDEX_DIRECTORY**: Override the directory where the SQLite index database is stored - - Default: `/_mjr_index/` - - Format: Full absolute path to an existing or creatable directory - - Impact: Moves the index DB (and vectors DB) to a different disk or path; assets themselves stay in the output directory - - Takes effect: at ComfyUI startup (or restart after saving from the UI) - - Example: `MJR_AM_INDEX_DIRECTORY=C:\mjr_index` - - Example: `MJR_AM_INDEX_DIRECTORY=/var/local/mjr_index` - - Priority: env var → sidecar file (`.mjr_index_directory_override`) → default - - Also configurable from: Settings → Paths → Majoor: Index Directory (persists to the sidecar file) + - Default: `/_mjr_index/` + - Format: Full absolute path to an existing or creatable directory + - Impact: Moves the index DB (and vectors DB) to a different disk or path; assets themselves stay in the output directory + - Takes effect: at ComfyUI startup (or restart after saving from the UI) + - Example: `MJR_AM_INDEX_DIRECTORY=C:\mjr_index` + - Example: `MJR_AM_INDEX_DIRECTORY=/var/local/mjr_index` + - Priority: env var → sidecar file (`.mjr_index_directory_override`) → default + - Also configurable from: Settings → Paths → Majoor: Index Directory (persists to the sidecar file) #### External Tool Paths + - **MAJOOR_EXIFTOOL_PATH** / **MAJOOR_EXIFTOOL_BIN**: Path to ExifTool executable - - Default: `exiftool` (assumes in PATH) - - Format: Full path to exiftool executable - - Impact: Used for metadata extraction and file tagging - - Example: `MAJOOR_EXIFTOOL_PATH=/usr/local/bin/exiftool` + - Default: `exiftool` (assumes in PATH) + - Format: Full path to exiftool executable + - Impact: Used for metadata extraction and file tagging + - Example: `MAJOOR_EXIFTOOL_PATH=/usr/local/bin/exiftool` - **MAJOOR_FFPROBE_PATH** / **MAJOOR_FFPROBE_BIN**: Path to FFprobe executable - - Default: `ffprobe` (assumes in PATH) - - Format: Full path to ffprobe executable - - Impact: Used for video/audio metadata extraction - - Example: `MAJOOR_FFPROBE_PATH=/usr/local/bin/ffprobe` + - Default: `ffprobe` (assumes in PATH) + - Format: Full path to ffprobe executable + - Impact: Used for video/audio metadata extraction + - Example: `MAJOOR_FFPROBE_PATH=/usr/local/bin/ffprobe` #### Media Processing + - **MAJOOR_MEDIA_PROBE_BACKEND**: Media extraction backend selection - - Options: `auto`, `exiftool`, `ffprobe`, `both` - - Default: `auto` - - Impact: Determines which tools are used for metadata extraction - - Example: `MAJOOR_MEDIA_PROBE_BACKEND=both` + - Options: `auto`, `exiftool`, `ffprobe`, `both` + - Default: `auto` + - Impact: Determines which tools are used for metadata extraction + - Example: `MAJOOR_MEDIA_PROBE_BACKEND=both` #### Database Tuning + - **MAJOOR_DB_TIMEOUT**: Database operation timeout in seconds - - Default: 30.0 - - Range: 1.0 to 300.0 - - Impact: Maximum time to wait for database operations - - Example: `MAJOOR_DB_TIMEOUT=60.0` + - Default: 30.0 + - Range: 1.0 to 300.0 + - Impact: Maximum time to wait for database operations + - Example: `MAJOOR_DB_TIMEOUT=60.0` - **MAJOOR_DB_MAX_CONNECTIONS**: Maximum database connections - - Default: 8 - - Range: 1 to 50 - - Impact: Concurrency level for database operations - - Example: `MAJOOR_DB_MAX_CONNECTIONS=12` + - Default: 8 + - Range: 1 to 50 + - Impact: Concurrency level for database operations + - Example: `MAJOOR_DB_MAX_CONNECTIONS=12` - **MAJOOR_DB_QUERY_TIMEOUT**: Maximum query execution time - - Default: 60.0 seconds - - Range: 1.0 to 300.0 - - Impact: Prevents long-running queries from blocking - - Example: `MAJOOR_DB_QUERY_TIMEOUT=45.0` + - Default: 60.0 seconds + - Range: 1.0 to 300.0 + - Impact: Prevents long-running queries from blocking + - Example: `MAJOOR_DB_QUERY_TIMEOUT=45.0` #### Performance Tuning + - **MAJOOR_TO_THREAD_TIMEOUT**: Timeout for background thread operations - - Default: 30 seconds - - Range: 10 to 600 seconds - - Impact: Maximum time for background operations - - Example: `MAJOOR_TO_THREAD_TIMEOUT=60` + - Default: 30 seconds + - Range: 10 to 600 seconds + - Impact: Maximum time for background operations + - Example: `MAJOOR_TO_THREAD_TIMEOUT=60` - **MAJOOR_MAX_METADATA_JSON_BYTES**: Maximum metadata JSON size - - Default: 2097152 (2MB) - - Range: 1024 to 104857600 (100MB) - - Impact: Limits memory usage for metadata storage - - Example: `MAJOOR_MAX_METADATA_JSON_BYTES=4194304` + - Default: 2097152 (2MB) + - Range: 1024 to 104857600 (100MB) + - Impact: Limits memory usage for metadata storage + - Example: `MAJOOR_MAX_METADATA_JSON_BYTES=4194304` #### Collection Management + - **MJR_COLLECTION_MAX_ITEMS**: Maximum items per collection - - Default: 50000 - - Range: 1000 to 1000000 - - Impact: Prevents extremely large collections from impacting performance - - Example: `MJR_COLLECTION_MAX_ITEMS=100000` + - Default: 50000 + - Range: 1000 to 1000000 + - Impact: Prevents extremely large collections from impacting performance + - Example: `MJR_COLLECTION_MAX_ITEMS=100000` #### Security & Networking + - **MJR_ALLOW_SYMLINKS**: Allow symbolic links in custom roots - - Options: `on`, `off`, `true`, `false` - - Default: `off` - - Impact: Enables browsing of linked directories - - Example: `MJR_ALLOW_SYMLINKS=on` + - Options: `on`, `off`, `true`, `false` + - Default: `off` + - Impact: Enables browsing of linked directories + - Example: `MJR_ALLOW_SYMLINKS=on` - **MAJOOR_TRUSTED_PROXIES**: IPs/CIDRs allowed for forwarded headers - - Default: `127.0.0.1,::1` - - Format: Comma-separated IP addresses or CIDR blocks - - Impact: Security setting for proxy environments - - Example: `MAJOOR_TRUSTED_PROXIES=127.0.0.1,192.168.1.0/24` + - Default: `127.0.0.1,::1` + - Format: Comma-separated IP addresses or CIDR blocks + - Impact: Security setting for proxy environments + - Example: `MAJOOR_TRUSTED_PROXIES=127.0.0.1,192.168.1.0/24` #### Dependency Management + - **MJR_AM_NO_AUTO_PIP**: Disable automatic dependency installation - - Options: `1`, `true`, `yes`, `on` to disable - - Default: Automatic installation enabled - - Impact: Prevents automatic pip installs at startup - - Example: `MJR_AM_NO_AUTO_PIP=1` + - Options: `1`, `true`, `yes`, `on` to disable + - Default: Automatic installation enabled + - Impact: Prevents automatic pip installs at startup + - Example: `MJR_AM_NO_AUTO_PIP=1` ## Setting Up Environment Variables ### Windows + Create a batch file to set environment variables: ```batch @@ -309,6 +340,7 @@ pause ``` ### Unix/Linux/macOS + Create a shell script to set environment variables: ```bash @@ -331,23 +363,27 @@ export MAJOOR_DB_TIMEOUT=60.0 ## Configuration Best Practices ### Performance Optimization + - Adjust page size based on your system's RAM - Set appropriate timeouts based on your storage speed - Monitor database performance and adjust connections as needed ### Security Considerations + - Keep default security settings unless you have specific requirements - Only enable symlink support if you trust the linked directories - Configure trusted proxies appropriately in networked environments - Regularly update external tools (ExifTool, FFprobe) for security ### Resource Management + - Monitor memory usage with large collections - Adjust cache settings based on available RAM - Set appropriate timeouts for your storage system - Consider SSD storage for better database performance ### Backup and Recovery + - Regularly backup the index database (`assets.sqlite`) - Backup custom root configurations - Maintain copies of important collections @@ -358,24 +394,28 @@ export MAJOOR_DB_TIMEOUT=60.0 ### Common Problems #### Settings Not Saving + - Clear browser cache and cookies - Check browser localStorage quota - Verify no browser extensions are interfering - Try a different browser #### Performance Issues + - Reduce page size if experiencing slowdowns - Disable auto-scan if not needed - Adjust database connection settings - Check system resources (RAM, disk space) #### External Tool Issues + - Verify tools are in PATH or set explicit paths - Check tool permissions and access rights - Ensure tools are properly installed - Test tools independently before using with Assets Manager ### Diagnostic Steps + 1. Check ComfyUI console for error messages 2. Verify all required dependencies are installed 3. Test external tools independently @@ -385,17 +425,20 @@ export MAJOOR_DB_TIMEOUT=60.0 ## Migration and Updates ### Settings Preservation + - Browser settings are preserved across updates - Environment variables need to be reapplied after system restarts - Custom root configurations are stored in the index directory - Collections are preserved as JSON files ### Configuration Updates + - New settings are added with sensible defaults - Old settings remain unchanged during updates - Review new settings after updates to optimize functionality - Check release notes for configuration changes --- -*Settings & Configuration Guide Version: 1.0* -*Last Updated: April 5, 2026* + +_Settings & Configuration Guide Version: 1.0_ +_Last Updated: April 5, 2026_ diff --git a/docs/VIEWER_FEATURE_TUTORIAL.md b/docs/VIEWER_FEATURE_TUTORIAL.md index 1daf16da..fb3050f5 100644 --- a/docs/VIEWER_FEATURE_TUTORIAL.md +++ b/docs/VIEWER_FEATURE_TUTORIAL.md @@ -4,24 +4,29 @@ **Last Updated**: April 15, 2026 ## Overview + The Majoor Assets Manager provides **two viewer experiences**: ### 1. Majoor Floating Viewer (MFV) — NEW! 🎉 + A lightweight, draggable floating panel for **real-time generation comparison**: -- **Live Stream Mode**: Automatically follows new generations and is **enabled by default** -- **KSampler Preview**: Streams denoising-step previews in the MFV and is **enabled by default** + +- **Live Stream Mode**: Automatically follows final generation outputs and is **enabled by default** +- **KSampler Preview**: Streams denoising-step previews during execution and is **enabled by default** - **Compare Modes**: Simple, A/B Compare, Side-by-Side, Grid Compare (up to 4 assets) - **Multi-Pin References (A/B/C/D)**: Pin up to 4 images simultaneously for comparison - **Node Parameters Sidebar**: Edit workflow node widgets directly in the viewer - **Run Button**: Queue prompt from viewer toolbar without switching to canvas -- **Node Tracking**: Click nodes to preview their content +- **Node Stream**: Click nodes to preview available frontend media, including ImageOps live previews - **Real-time Updates**: Watch generations as they complete - **Portable**: Move anywhere on screen, resize, dock **Best for**: Real-time workflow monitoring, quick comparisons, node preview, parameter tweaking ### 2. Standard Viewer + A full-featured overlay viewer with **advanced analysis tools**: + - **Enhancement Tools**: Exposure, gamma, channel isolation - **Analysis Tools**: False color, zebra, histogram, waveform, vectorscope - **Visual Overlays**: Grid, pixel probe, loupe @@ -34,17 +39,19 @@ A full-featured overlay viewer with **advanced analysis tools**: ## Table of Contents ### Majoor Floating Viewer (MFV) + - [Opening the Floating Viewer](#opening-the-floating-viewer) - [Live Stream Mode](#live-stream-mode) - [Compare Modes](#compare-modes) - [Multi-Pin References (A/B/C/D)](#multi-pin-references-abcd) - [Node Parameters Sidebar](#node-parameters-sidebar) - [Sidebar Position Setting](#sidebar-position-setting) -- [Node Tracking](#node-tracking) +- [Node Stream](#node-stream) - [MFV Controls](#mfv-controls) - [MFV Keyboard Shortcuts](#mfv-keyboard-shortcuts) ### Standard Viewer + - [Opening the Standard Viewer](#opening-the-standard-viewer) - [Viewer Layout](#viewer-layout) - [Viewer Navigation](#viewer-navigation) @@ -57,6 +64,7 @@ A full-featured overlay viewer with **advanced analysis tools**: - [Standard Viewer Hotkeys](#standard-viewer-hotkeys) ### Both Viewers + - [Troubleshooting](#troubleshooting-viewer-issues) - [Best Practices](#best-practices) @@ -69,54 +77,63 @@ A full-featured overlay viewer with **advanced analysis tools**: There are several ways to open the Majoor Floating Viewer: #### Method 1: Toolbar Button + 1. Open the Assets Manager panel 2. Click the **Floating Viewer** button in the toolbar (icon: overlapping rectangles) 3. The MFV panel appears on screen #### Method 2: Context Menu + 1. Right-click on any asset in the grid 2. Select **"Open in Floating Viewer"** 3. The MFV panel opens with that asset -#### Method 3: Node Tracking -1. Click on any **LoadImage** or **SaveImage** node in ComfyUI -2. The MFV automatically opens (if enabled in settings) -3. Shows the node's current content +#### Method 3: Node Stream + +1. Open the MFV +2. Enable **Node Stream** or press **N** +3. Click a node in ComfyUI to show its available preview media #### Method 4: Keyboard Shortcut + - Press **Ctrl+V** (or **Cmd+V** on macOS) while the Assets Manager panel is hovered or focused to toggle the Floating Viewer ### Live Stream Mode -**Live Stream Mode** automatically tracks new generations in real-time. +**Live Stream Mode** tracks final generation outputs after workflow execution. **Default behavior**: + - **Live Stream** starts **enabled by default** - **KSampler Preview** also starts **enabled by default** - You can change both in **Settings → Majoor Assets Manager › Viewer** #### Enabling Live Stream + 1. Open the Floating Viewer 2. Click the **Live Stream** button (icon: broadcast tower) 3. Or press **L** to toggle #### How It Works -- Monitors ComfyUI execution events -- Automatically switches to newly generated images -- Follows SaveImage/LoadImage node outputs -- No manual refresh needed + +- Monitors ComfyUI generation output events +- Automatically switches to newly generated output files +- Does not follow canvas node selection; use **Node Stream** for selected nodes +- No manual refresh needed after execution completes #### Use Cases -- **Workflow Development**: Watch intermediate results + +- **Workflow Development**: Watch final outputs as runs complete - **Batch Generation**: Monitor progress across multiple prompts -- **Parameter Tuning**: See changes in real-time -- **Node Debugging**: Track data flow through workflow +- **Parameter Tuning**: Compare completed runs +- **Queue Monitoring**: Keep the latest output visible while prompts execute ### Compare Modes The MFV supports three comparison modes: #### Simple Mode (Default) + - Single image display - Full resolution preview - Standard navigation @@ -124,33 +141,39 @@ The MFV supports three comparison modes: **Shortcut**: Press **M** until Simple mode is active #### A/B Compare Mode + - Toggle between two images rapidly - Click asset to set as A or B - Useful for subtle difference detection **How to Use**: + 1. Enable A/B Compare mode (press **M**) 2. Click first asset → Set as A 3. Click second asset → Set as B 4. Click or press **Tab** to toggle between them **Use Cases**: + - Compare different sampler results - Check before/after edits - Evaluate parameter changes #### Side-by-Side Mode + - Display both images simultaneously - Split view (vertical or horizontal) - Synchronized zoom and pan **How to Use**: + 1. Enable Side-by-Side mode (press **M**) 2. Select two assets 3. Both display side by side 4. Use **\\** to toggle split orientation **Use Cases**: + - Direct visual comparison - Composition analysis - Color grading comparison @@ -160,6 +183,7 @@ The MFV supports three comparison modes: The Multi-Pin system lets you pin up to **4 reference images** simultaneously for comparison. #### How It Works + 1. Open the Floating Viewer 2. In the toolbar, locate the **A B C D** toggle buttons next to the mode button 3. Click a letter to **pin** the currently displayed image to that slot @@ -167,11 +191,13 @@ The Multi-Pin system lets you pin up to **4 reference images** simultaneously fo 5. Multiple slots can be active at the same time #### Pin Behavior + - **Pinned slots are locked**: When Live Stream brings in a new generation, pinned slots keep their content while unpinned slots update automatically - **Compare with pins**: In A/B or Side-by-Side mode, pin A as a reference and let B follow live generations to compare every new result against a fixed baseline - **Multi-pin in Grid Compare**: Pin A, B, C, and D to lock 4 images for simultaneous comparison in Grid Compare mode #### Use Cases + - **Baseline comparison**: Pin your best result in slot A and iterate freely - **Parameter sweep**: Pin 4 different sampler results and compare visually - **Before/after editing**: Pin the original in A, the edited version in B @@ -183,31 +209,36 @@ The Multi-Pin system lets you pin up to **4 reference images** simultaneously fo The **Node Parameters** sidebar displays and lets you edit the ComfyUI node widgets directly inside the Floating Viewer. #### Opening the Sidebar + 1. Open the Floating Viewer 2. Click the **Node Parameters** button (sliders icon) in the toolbar — it is located at the far right of the toolbar 3. The sidebar slides open on the right (default position) #### What It Shows + - All widgets from the workflow node that produced the current image - Grouped by node: each node section has a colored header showing the node title - Widget types supported: text fields, number inputs, combo/dropdown selectors, toggles #### Editing Widgets + - **Text fields**: Click and type. Long text (prompts) use a resizable text area - - Click the **expand** button (↕) to toggle between collapsed (80px) and expanded (680px) height - - Text labels appear above the text area for better readability + - Click the **expand** button (↕) to toggle between collapsed (80px) and expanded (680px) height + - Text labels appear above the text area for better readability - **Numbers**: Type a value or use the stepper - **Combos**: Select from the dropdown list - Changes are applied back to the ComfyUI graph in real time #### Run Button + The **Run** (▶) button at the far right of the toolbar queues the current workflow, allowing you to iterate without switching back to the ComfyUI canvas. #### Use Cases + - **Prompt iteration**: Edit the positive/negative prompt and re-run without leaving the viewer - **Seed tweaking**: Change the seed value and queue immediately - **Sampler comparison**: Switch samplers from the sidebar and compare outputs -- **CFG tuning**: Adjust CFG scale and see results in real time via Live Stream +- **CFG tuning**: Adjust CFG scale, run, and compare final outputs via Live Stream --- @@ -216,38 +247,50 @@ The **Run** (▶) button at the far right of the toolbar queues the current work You can change where the Node Parameters sidebar appears inside the Floating Viewer. #### Changing the Position + 1. Go to **Settings → Majoor Assets Manager › Viewer** 2. Find **Node Parameters sidebar position** 3. Select one of: - - **right** (default) — sidebar opens on the right side - - **left** — sidebar opens on the left side - - **bottom** — sidebar opens at the bottom as a horizontal panel + - **right** (default) — sidebar opens on the right side + - **left** — sidebar opens on the left side + - **bottom** — sidebar opens at the bottom as a horizontal panel 4. The change applies **immediately** — no page reload required #### Recommendations + - **Right** works best for most layouts and screen sizes - **Left** is useful when your ComfyUI canvas is on the right - **Bottom** is ideal for wide screens or when you prefer a short, wide parameter panel --- -### Node Tracking +### Node Stream -**Node Tracking** lets you preview node content instantly: +**Node Stream** lets you preview selected node content when the frontend already has media for that node. + +#### Enabling Node Stream -#### Enabling Node Tracking 1. Open the Floating Viewer -2. Click the **Node Tracking** button (icon: node graph) +2. Click the **Node Stream** button (icon: node graph) 3. Or press **N** to toggle #### How It Works -- Click any **LoadImage** node → Preview that image -- Click any **SaveImage** node → Preview generated output -- Click intermediate nodes → See their current state -- Automatically updates when node content changes + +- Click **LoadImage** / loader nodes -> preview the loaded media +- Click **SaveImage** / preview nodes -> preview an existing generated preview/output +- Click ImageOps nodes -> preview the embedded live canvas when available +- Click other intermediate nodes -> preview only if they expose `node.imgs`, widget media, or a downstream preview/save node + +#### Limitations + +- Node Stream cannot read raw backend tensors (`IMAGE`, `MASK`, `LATENT`) before execution. +- Python node outputs become available only after ComfyUI executes the node. +- ImageOps live previews are frontend canvases, so they can update without queueing but are not the backend tensor itself. +- If no frontend media exists for the selected node or downstream path, the MFV has nothing to display. #### Use Cases -- **Debugging**: Check intermediate tensor values + +- **Debugging**: Check available intermediate previews - **Workflow Building**: Verify node connections - **Quality Control**: Inspect outputs at each stage - **Teaching**: Show workflow data flow @@ -255,12 +298,14 @@ You can change where the Node Parameters sidebar appears inside the Floating Vie ### MFV Controls #### Panel Controls + - **Move**: Drag from panel header - **Resize**: Drag panel edges or corners - **Close**: Click X button or press **Esc** - **Minimize**: Click minimize button (optional) #### Zoom & Pan + - **Zoom In**: Mouse wheel up or **Up Arrow** - **Zoom Out**: Mouse wheel down or **Down Arrow** - **Reset Zoom**: Press **0** (fit to screen) @@ -268,6 +313,7 @@ You can change where the Node Parameters sidebar appears inside the Floating Vie - **Pan**: Click and drag when zoomed in #### Navigation + - **Previous Asset**: **Left Arrow** when the inline player is not focused - **Next Asset**: **Right Arrow** when the inline player is not focused - **First Asset**: **Home** @@ -276,26 +322,29 @@ You can change where the Node Parameters sidebar appears inside the Floating Vie ### MFV Keyboard Shortcuts #### General -| Shortcut | Action | -|----------|--------| -| **Esc** | Close Floating Viewer | -| **C** | Cycle compare modes: A/B, Side-by-side, Off (Simple mode) | -| **K** | Toggle KSampler preview on or off | -| **L** | Toggle Live Stream on or off | -| **N** | Toggle Node Tracking | + +| Shortcut | Action | +| -------- | --------------------------------------------------------- | +| **Esc** | Close Floating Viewer | +| **C** | Cycle compare modes: A/B, Side-by-side, Off (Simple mode) | +| **K** | Toggle KSampler denoising preview on or off | +| **L** | Toggle Live Stream final-output following on or off | +| **N** | Toggle Node Stream selected-node previewing | #### Compare Mode -| Shortcut | Action | -|----------|--------| -| **Tab** | Swap A/B Images | -| **\\** | Toggle Split Orientation | + +| Shortcut | Action | +| -------- | ------------------------ | +| **Tab** | Swap A/B Images | +| **\\** | Toggle Split Orientation | #### Video Controls -| Shortcut | Action | -|----------|--------| -| **Space** | Play/Pause the focused inline player | -| **Left Arrow** | Step backward one frame | -| **Right Arrow** | Step forward one frame | + +| Shortcut | Action | +| --------------- | ------------------------------------ | +| **Space** | Play/Pause the focused inline player | +| **Left Arrow** | Step backward one frame | +| **Right Arrow** | Step forward one frame | > Tip: click once on the MFV media player to focus it, then use the playback keys above. The Gen Info overlay remains visible and automatically sits above the player controls when they are present. @@ -308,12 +357,14 @@ See [HOTKEYS_SHORTCUTS.md](HOTKEYS_SHORTCUTS.md) for complete shortcut list. ## Viewer Navigation ### Basic Navigation + - **Zoom**: Use mouse wheel to zoom in/out - **Pan**: Click and drag to move around the image - **Fit to Screen**: Automatically scales image to fit window - **Actual Size**: View image at 1:1 pixel ratio (Alt+1) ### Asset Navigation + - **Next/Previous**: Navigate between assets in the current set - **Keyboard Arrows**: Use arrow keys to move between assets - **Direct Selection**: Click on thumbnails if available @@ -321,274 +372,294 @@ See [HOTKEYS_SHORTCUTS.md](HOTKEYS_SHORTCUTS.md) for complete shortcut list. ## Image Enhancement Tools ### Exposure Adjustment (EV) + The exposure adjustment tool allows you to modify the brightness of your image: 1. **Accessing the Tool**: - - Locate the exposure control in the toolbar - - Usually represented by a sun or EV icon + - Locate the exposure control in the toolbar + - Usually represented by a sun or EV icon 2. **Adjusting Exposure**: - - Adjust exposure compensation from -5 to +5 EV - - Real-time preview shows changes immediately - - Use to evaluate details in shadows/highlights - - Preserves color relationships while adjusting brightness + - Adjust exposure compensation from -5 to +5 EV + - Real-time preview shows changes immediately + - Use to evaluate details in shadows/highlights + - Preserves color relationships while adjusting brightness 3. **Use Cases**: - - Revealing details in underexposed areas - - Recovering highlights in overexposed regions - - Comparing exposure differences between assets - - Evaluating dynamic range + - Revealing details in underexposed areas + - Recovering highlights in overexposed regions + - Comparing exposure differences between assets + - Evaluating dynamic range ### Gamma Correction + Gamma correction adjusts the midtone brightness: 1. **Accessing the Tool**: - - Find the gamma control in the toolbar - - Usually labeled with γ or gamma symbol + - Find the gamma control in the toolbar + - Usually labeled with γ or gamma symbol 2. **Adjusting Gamma**: - - Adjust gamma curve from 0.25 to 4.0 - - Alters midtone brightness without affecting highlights/shadows as much - - Real-time application with live preview - - Useful for fine-tuning contrast in specific tonal ranges + - Adjust gamma curve from 0.25 to 4.0 + - Alters midtone brightness without affecting highlights/shadows as much + - Real-time application with live preview + - Useful for fine-tuning contrast in specific tonal ranges 3. **Use Cases**: - - Enhancing midtone contrast - - Adjusting overall tonal balance - - Fine-tuning for display characteristics - - Preparing for different output conditions + - Enhancing midtone contrast + - Adjusting overall tonal balance + - Fine-tuning for display characteristics + - Preparing for different output conditions ### Channel Isolation + The viewer allows you to isolate different color channels: 1. **Available Channels**: - - **RGB**: View all color channels combined - - **R**: View only red channel information - - **G**: View only green channel information - - **B**: View only blue channel information - - **Alpha**: View transparency/alpha channel - - **Luma**: View luminance information only + - **RGB**: View all color channels combined + - **R**: View only red channel information + - **G**: View only green channel information + - **B**: View only blue channel information + - **Alpha**: View transparency/alpha channel + - **Luma**: View luminance information only 2. **Using Channel Isolation**: - - Select the desired channel from the toolbar - - Observe the isolated channel information - - Compare between different channels - - Identify channel-specific issues + - Select the desired channel from the toolbar + - Observe the isolated channel information + - Compare between different channels + - Identify channel-specific issues 3. **Use Cases**: - - Identifying color channel imbalances - - Detecting channel-specific noise - - Analyzing alpha channel transparency - - Evaluating luminance distribution + - Identifying color channel imbalances + - Detecting channel-specific noise + - Analyzing alpha channel transparency + - Evaluating luminance distribution ## Analysis Tools ### False Color Mode + False color mode helps identify exposure issues: 1. **Activating False Color**: - - Enable false color mode from the toolbar - - Usually represented by a color palette icon + - Enable false color mode from the toolbar + - Usually represented by a color palette icon 2. **Interpreting Results**: - - Identifies overexposed and underexposed areas - - Highlights clipped highlights (typically white/magenta) - - Shows blocked shadows (typically blue/black) - - Helps evaluate dynamic range and exposure + - Identifies overexposed and underexposed areas + - Highlights clipped highlights (typically white/magenta) + - Shows blocked shadows (typically blue/black) + - Helps evaluate dynamic range and exposure 3. **Use Cases**: - - Checking for highlight clipping - - Identifying shadow detail loss - - Evaluating overall exposure balance - - Comparing exposure between different assets + - Checking for highlight clipping + - Identifying shadow detail loss + - Evaluating overall exposure balance + - Comparing exposure between different assets ### Zebra Patterns (Z) + Zebra patterns indicate areas approaching clipping: 1. **Enabling Zebra**: - - Activate zebra patterns from the toolbar - - Usually labeled with "Z" or zebra icon + - Activate zebra patterns from the toolbar + - Usually labeled with "Z" or zebra icon 2. **Understanding Zebra**: - - Displays 100% IRE (95% for Rec.2020) areas as zebra stripes - - Helps identify areas approaching clipping - - Adjustable threshold levels - - Useful for maintaining highlight detail + - Displays 100% IRE (95% for Rec.2020) areas as zebra stripes + - Helps identify areas approaching clipping + - Adjustable threshold levels + - Useful for maintaining highlight detail 3. **Use Cases**: - - Protecting highlight detail - - Setting optimal exposure levels - - Comparing exposure between shots - - Quality control for consistent exposure + - Protecting highlight detail + - Setting optimal exposure levels + - Comparing exposure between shots + - Quality control for consistent exposure ## Visual Overlays ### Grid Overlays (G) + Grid overlays assist with composition: 1. **Available Grid Types**: - - **Off**: No grid overlay - - **Thirds**: Rule of thirds grid lines - - **Center**: Center crosshair - - **Safe Area**: TV broadcast safe area guides - - **Golden Ratio**: Golden ratio composition guides + - **Off**: No grid overlay + - **Thirds**: Rule of thirds grid lines + - **Center**: Center crosshair + - **Safe Area**: TV broadcast safe area guides + - **Golden Ratio**: Golden ratio composition guides 2. **Using Grid Overlays**: - - Cycle through grid types using "G" key - - Assess compositional balance - - Align elements to grid lines - - Compare compositions between assets + - Cycle through grid types using "G" key + - Assess compositional balance + - Align elements to grid lines + - Compare compositions between assets 3. **Use Cases**: - - Composition analysis - - Alignment verification - - Rule of thirds evaluation - - Broadcast compliance checking + - Composition analysis + - Alignment verification + - Rule of thirds evaluation + - Broadcast compliance checking ### Pixel Probe (I) + Pixel probe provides detailed pixel information: 1. **Activating Pixel Probe**: - - Enable pixel probe from toolbar or press "I" - - Hover over image to see information + - Enable pixel probe from toolbar or press "I" + - Hover over image to see information 2. **Information Provided**: - - Exact pixel coordinates - - RGB/RGBA values at cursor position - - Hex color code - - Luminance value information + - Exact pixel coordinates + - RGB/RGBA values at cursor position + - Hex color code + - Luminance value information 3. **Use Cases**: - - Color accuracy verification - - Detail inspection - - Color sampling - - Quality assessment at pixel level + - Color accuracy verification + - Detail inspection + - Color sampling + - Quality assessment at pixel level ### Loupe Magnification (L) + Loupe provides magnified view of specific areas: 1. **Using Loupe**: - - Activate loupe from toolbar or press "L" - - Hover over area of interest - - View magnified representation + - Activate loupe from toolbar or press "L" + - Hover over area of interest + - View magnified representation 2. **Features**: - - Adjustable magnification level - - Shows fine detail at pixel level - - Helpful for quality assessment - - Real-time magnification + - Adjustable magnification level + - Shows fine detail at pixel level + - Helpful for quality assessment + - Real-time magnification 3. **Use Cases**: - - Quality inspection - - Artifact detection - - Detail analysis - - Sharpness evaluation + - Quality inspection + - Artifact detection + - Detail analysis + - Sharpness evaluation ## Professional Analysis Tools (Scopes) ### Histogram + The histogram shows tonal distribution: 1. **Accessing Histogram**: - - Enable from scopes section - - Shows RGB channel distribution + - Enable from scopes section + - Shows RGB channel distribution 2. **Interpretation**: - - X-axis represents tonal range (shadows to highlights) - - Y-axis represents pixel count - - Separate curves for R, G, B channels - - Identifies tonal distribution patterns + - X-axis represents tonal range (shadows to highlights) + - Y-axis represents pixel count + - Separate curves for R, G, B channels + - Identifies tonal distribution patterns 3. **Use Cases**: - - Exposure evaluation - - Contrast analysis - - Color balance assessment - - Dynamic range evaluation + - Exposure evaluation + - Contrast analysis + - Color balance assessment + - Dynamic range evaluation ### Waveform + The waveform shows luminance distribution: 1. **Accessing Waveform**: - - Enable from scopes section - - Shows luminance across image + - Enable from scopes section + - Shows luminance across image 2. **Interpretation**: - - Horizontal axis represents image width - - Vertical axis represents luminance levels - - Brighter areas appear higher in the display - - Darker areas appear lower in the display + - Horizontal axis represents image width + - Vertical axis represents luminance levels + - Brighter areas appear higher in the display + - Darker areas appear lower in the display 3. **Use Cases**: - - Exposure evaluation - - Luminance distribution analysis - - Highlight/shadow placement - - Consistency checking + - Exposure evaluation + - Luminance distribution analysis + - Highlight/shadow placement + - Consistency checking ### Vectorscope + The vectorscope shows color information: 1. **Accessing Vectorscope**: - - Enable from scopes section - - Shows color information in chromaticity diagram + - Enable from scopes section + - Shows color information in chromaticity diagram 2. **Interpretation**: - - Shows color saturation and hue - - Identifies color distribution - - Reveals color casts or imbalances - - Shows skin tone placement + - Shows color saturation and hue + - Identifies color distribution + - Reveals color casts or imbalances + - Shows skin tone placement 3. **Use Cases**: - - Color balance correction - - Skin tone evaluation - - Saturation assessment - - Color cast identification + - Color balance correction + - Skin tone evaluation + - Saturation assessment + - Color cast identification ## Video-Specific Features ### Video Playback Controls + - **Play/Pause**: Standard play/pause functionality - **Loop/Once**: Toggle between continuous and single playback - **Speed Control**: Adjustable playback speed (0.25x to 4x) - **Frame Stepping**: Precise frame-by-frame navigation (Left/Right Arrow keys when player bar is focused) ### Timeline Features + - **Seek Bar**: Drag to jump to specific points in video - **Current Time**: Display of current playback position - **Duration**: Total video duration display - **Frame Counter**: Current frame number display ### In/Out Points + - **Set In Point**: Mark start of desired segment (I key) - **Set Out Point**: Mark end of desired segment (O key) - **Segment Playback**: Play only the marked segment - **Clear Points**: Remove In/Out markers ### Hardware Acceleration (WebGL) + The viewer automatically detects WebGL support to enable GPU-accelerated video rendering: + - **Benefits**: Real-time Exposure, Gamma, and Zebra analysis on 4K videos without CPU load - **Fallback**: If WebGL is unavailable, it automatically switches to a robust CPU-based renderer (Canvas 2D) ## Export Capabilities ### Save Current Frame + - Capture current video frame as PNG - Preserves full resolution and quality - Saves to default output directory - Includes generation metadata if available ### Copy to Clipboard + - Copy current view to system clipboard - Best-effort format selection - May not work on all platforms - Useful for quick sharing ### Download Original + - Download the original asset file - Maintains original format and quality - Preserves embedded metadata - Safe file transfer protocol ## Viewer Hotkeys + All viewer hotkeys are captured and don't affect ComfyUI or browser: - **Esc**: Close viewer @@ -603,7 +674,9 @@ All viewer hotkeys are captured and don't affect ComfyUI or browser: - **Alt+1**: Toggle 1:1 zoom ## Comparison Integration + The viewer seamlessly integrates with the comparison feature: + - Switch between single view and comparison modes - Maintain analysis tools during comparison - Apply enhancements to both compared assets @@ -612,18 +685,21 @@ The viewer seamlessly integrates with the comparison feature: ## Troubleshooting Viewer Issues ### Performance Problems + - **Slow Rendering**: Reduce enhancement effects or close other applications - **Memory Issues**: Close viewer tabs when not actively using them - **Codec Problems**: Install appropriate codecs for video files - **Browser Compatibility**: Ensure using supported browsers ### Tool Malfunctions + - **Missing Tools**: Verify WebGL support in your browser - **Unresponsive Controls**: Refresh the viewer or browser - **Display Issues**: Check browser zoom level and display settings - **Audio Problems**: Check system audio settings for video files ### File-Specific Issues + - **Unsupported Formats**: Convert to supported formats if needed - **Corrupted Files**: Verify file integrity - **Large Files**: Be patient with initial loading of large files @@ -632,29 +708,34 @@ The viewer seamlessly integrates with the comparison feature: ## Best Practices ### Efficient Viewing + - Use keyboard shortcuts for faster navigation - Apply analysis tools systematically - Take advantage of export features for sharing - Use comparison modes for parameter evaluation ### Quality Assessment + - Use pixel probe for detailed inspection - Apply false color to check exposure - Use zebra patterns to protect highlights - Employ scopes for professional analysis ### Workflow Integration + - Combine viewer tools with rating system - Use export features for review workflows - Integrate with collection management - Apply consistent analysis methodology ### Performance Optimization + - Close viewers when not actively using them - Use lower resolution previews when possible - Organize assets into collections to reduce load times - Keep frequently accessed assets in smaller collections --- -*Viewer Feature Tutorial Version: 2.4.5* -*Last Updated: April 14, 2026* + +_Viewer Feature Tutorial Version: 2.4.5_ +_Last Updated: April 14, 2026_ diff --git a/docs/node-stream-reactivation.md b/docs/node-stream-reactivation.md index 8c93f718..db7fed0a 100644 --- a/docs/node-stream-reactivation.md +++ b/docs/node-stream-reactivation.md @@ -1,14 +1,22 @@ -# Node Stream Reactivation +# Node Stream Notes -## Current status +## Current Status -`Node Stream` is intentionally disabled for now. - -The single source of truth is: +`Node Stream` is enabled. The single source of truth is: - `js/features/viewer/nodeStream/nodeStreamFeatureFlag.js` -As long as `NODE_STREAM_FEATURE_ENABLED` stays `false`: +The active implementation is selection-only: when the MFV Node Stream button is +on, selecting a ComfyUI canvas node streams the best available preview into the +Floating Viewer. It supports standard ComfyUI node previews, downstream preview +nodes, load widgets, and ImageOps live-preview canvases exposed through +`node.__imageops_state.canvas`. + +Node Stream is the only MFV feature that follows canvas node selection. Live +Stream is reserved for final generation outputs, and KSampler Preview is +reserved for denoising-step blobs from the ComfyUI API. + +If `NODE_STREAM_FEATURE_ENABLED` is set to `false`: - the Floating Viewer toolbar does not show the Node Stream button, - the `N` shortcut does nothing, @@ -16,48 +24,63 @@ As long as `NODE_STREAM_FEATURE_ENABLED` stays `false`: - `entry.js` does not initialize the controller or expose `window.MajoorNodeStream`, - `NodeStreamController` stays inert even if called directly. -## Why it was disabled - -The feature is being paused until the selection-only behavior is stable enough to -ship again without confusing MFV behavior. - -The implementation was kept in the repo on purpose so the next reactivation does -not require rebuilding the feature from scratch. - -## Files touched by the temporary shutdown +## Files Involved - `js/features/viewer/nodeStream/nodeStreamFeatureFlag.js` - `js/features/viewer/nodeStream/NodeStreamController.js` +- `js/features/viewer/nodeStream/imageOpsPreviewBridge.js` - `js/features/viewer/FloatingViewer.js` - `js/features/viewer/floatingViewerManager.js` - `js/entry.js` - `js/app/events.js` - `js/tests/node_stream_controller.vitest.mjs` -## Reactivation checklist - -1. Set `NODE_STREAM_FEATURE_ENABLED = true` in `js/features/viewer/nodeStream/nodeStreamFeatureFlag.js`. -2. Confirm the Node Stream toolbar button reappears in the MFV. -3. Confirm the `N` shortcut and `mjr:mfv-nodestream-toggle` event are re-enabled. -4. Confirm `entry.js` initializes the controller and re-exposes `window.MajoorNodeStream`. -5. Replace the current disabled-state tests in `js/tests/node_stream_controller.vitest.mjs` with active behavior tests again. - -## Minimum manual smoke tests after reactivation +## Smoke Tests Use the real local stack and verify these cases from the ComfyUI canvas: - Core `LoadImage` - Core `LoadImageMask` +- `ImageOpsPreview` +- Any ImageOps processing node with an embedded live preview - `LayerUtility: ImageBlend` - `LayerUtility: ImageBlendAdvance` - `LayerMask: MaskPreview` - `MaskPreview+` from `comfyui_essentials` - `PreviewImageOrMask` and `ImageAndMaskPreview` from `comfyui-kjnodes` -- at least one WAS Suite image node if present locally at that time +- at least one WAS Suite image node if present locally -## Expected behavior when reactivated +## Expected Behavior -- Selection-only behavior: previews should follow node clicks, not execution events. +- Selection-only behavior: previews follow node clicks, not execution events. - If a selected node has no direct preview, downstream preview/save nodes may be used as the preview source. -- The feature should stay compatible with MFV lifecycle teardown/hot-reload. +- ImageOps live preview canvases update in the MFV when their render signature changes. +- The feature stays compatible with MFV lifecycle teardown and hot-reload. + +## Stream Feature Boundaries + +### Live Stream + +- Source: `NEW_GENERATION_OUTPUT` events. +- Trigger: workflow execution finishes and ComfyUI reports output files. +- Displays: final generated files only. +- Does not follow selected canvas nodes. +- Limitation: no raw tensor access and no no-queue preview. + +### KSampler Preview + +- Source: ComfyUI API `b_preview_with_metadata` or legacy `b_preview` events. +- Trigger: sampler denoising during workflow execution. +- Displays: transient preview blobs, usually JPEG/PNG frames. +- Limitation: only available while ComfyUI emits sampler previews. + +### Node Stream + +- Source: selected ComfyUI canvas node. +- Trigger: user selects a node while Node Stream is active. +- Displays: frontend-observable media such as `node.imgs`, widget ``/`