{"id":31177753,"url":"https://github.com/biagiomaf/smart-comfyui-gallery","last_synced_at":"2026-04-28T16:35:21.107Z","repository":{"id":313144974,"uuid":"1049911276","full_name":"biagiomaf/smart-comfyui-gallery","owner":"biagiomaf","description":"SmartGallery DAM is a local-first, browser-based Digital Asset Manager for ComfyUI and any media folder. Runs independently from ComfyUI. Advanced file manager, search by prompt, model, LoRA and comment. Color-coded status tags, Ratings, Comments, Virtual Collections, share curated work with clients. Mobile-friendly, cross-platform, Docker-ready.","archived":false,"fork":false,"pushed_at":"2026-04-08T18:14:24.000Z","size":22026,"stargazers_count":274,"open_issues_count":2,"forks_count":25,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-08T20:11:58.795Z","etag":null,"topics":["comfyui","comfyui-gallery","comfyui-workflow","flask","image-management","mobile","python","stable-diffusion"],"latest_commit_sha":null,"homepage":"https://smartgallerydam.com","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/biagiomaf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T17:13:03.000Z","updated_at":"2026-04-08T19:15:38.000Z","dependencies_parsed_at":"2025-09-04T07:18:48.727Z","dependency_job_id":"a2b1ded3-c1c2-4018-b21e-070e890707f1","html_url":"https://github.com/biagiomaf/smart-comfyui-gallery","commit_stats":null,"previous_names":["biagiomaf/smart-comfyui-gallery"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/biagiomaf/smart-comfyui-gallery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biagiomaf%2Fsmart-comfyui-gallery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biagiomaf%2Fsmart-comfyui-gallery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biagiomaf%2Fsmart-comfyui-gallery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biagiomaf%2Fsmart-comfyui-gallery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/biagiomaf","download_url":"https://codeload.github.com/biagiomaf/smart-comfyui-gallery/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/biagiomaf%2Fsmart-comfyui-gallery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32390048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T14:34:11.604Z","status":"ssl_error","status_checked_at":"2026-04-28T14:32:37.009Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["comfyui","comfyui-gallery","comfyui-workflow","flask","image-management","mobile","python","stable-diffusion"],"created_at":"2025-09-19T14:07:39.870Z","updated_at":"2026-04-28T16:35:21.097Z","avatar_url":"https://github.com/biagiomaf.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" width=\"100\" alt=\"SmartGallery DAM logo\"\u003e\u003cbr\u003e\u003cbr\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/biagiomaf/smart-comfyui-gallery?color=yellow\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3.9+-blue.svg\" alt=\"Python\"\u003e\n  \u003ca href=\"https://hub.docker.com/r/mmartial/smart-comfyui-gallery\"\u003e\u003cimg src=\"https://img.shields.io/docker/pulls/mmartial/smart-comfyui-gallery?color=099cec\u0026logo=docker\u0026logoColor=white\" alt=\"Docker Pulls\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/biagiomaf/smart-comfyui-gallery/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/biagiomaf/smart-comfyui-gallery\" alt=\"Stars\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n# SmartGallery DAM\n\n**The local-first Digital Asset Manager that works with ComfyUI, and survives without it.**\n\nSearch 50,000 generations by prompt, model, LoRA, or comments in milliseconds.  \nOrganize your gallery seamlessly across physical folders and virtual collections.  \nShare curated work with clients without exposing a single node, and let them rate and comment on your creations.  \nCompare two generations side-by-side with an automatic parameter diff.  \nCull batches from your laptop or also from your phone while ComfyUI is still generating.  \n\n[**smartgallerydam.com**](https://smartgallerydam.com) · full documentation, wiki and feature reference\n\n---\n\n![SmartGallery DAM — main workspace](assets/infographic.png)\n\n---\n\n## ComfyUI-Aware. ComfyUI-Independent.\n\nSmartGallery DAM runs as a fully independent process, outside ComfyUI's environment. It keeps indexing and organizing your library whether ComfyUI is up, down, updating, or completely uninstalled. No custom node, no shared dependencies.\n\nSmartGallery DAM is *ComfyUI-aware* (it reads workflows, extracts prompts, understands models and LoRAs) but *ComfyUI-independent* by design. Your DAM outlives any tool it connects to.\n\n**What this means in practice:**\n\n- ComfyUI is broken after a Python update? SmartGallery keeps running.\n- Run it alongside ComfyUI on the same machine on a different port. Or install it on a separate machine or laptop and just link the output folder over the network.\n- You switched tools entirely? SmartGallery works on *any* folder of media. It was never ComfyUI-only to begin with.\n\n---\n\n## The Best Mobile Experience in Its Class\n\n\u003e **We are not aware of any other self-hosted media manager with a mobile interface this good.**\n\nSmartGallery DAM was built responsive from day one, not as an afterthought. \n\nThis is cross-platform in the full sense: **Windows, macOS, Linux, Docker**, accessible from any browser on any device on your network, including tablets and smartphones.\n\n---\n\n## Why SmartGallery?\n| | |\n|---|---|\n| 🔍 **Find anything instantly** | Search by prompt keyword, checkpoint, LoRA, date or comment across tens of thousands of files | \n| 🗂️ **Powerful file manager** | Rename, move, copy, delete files and create folders directly from the browser |\n| 🔗 **Works on any folder** | Point it at any ComfyUI output, photo archive, NAS volume or network path. Mix and match as many folders as you want |\n| 👥 **Built for teams too** | Role-based access, per-image comments with visibility control, 1 to 5 star ratings |\n| 🗃️ **Virtual collections** | Group files from different folders into albums without moving anything on disk. Mark as private or ready for client sharing |\n| 🏷️ **Color-coded status tags** | Mark files as Approved, Review, To Edit, Rejected or Select. Browse any status across your entire library at once, standard DAM pipeline workflow |\n| 🛡 **Share without exposing your process** | Clients access a dedicated Exhibition portal you launch only when needed. They see curated collections only. Workflows, prompts and models are always hidden |\n| ⚖️ **Compare generations** | A/B slider with synchronized zoom and an automatic parameter diff table | \n| 🎬 **Full video support** | Thumbnails, storyboard preview, and on-the-fly transcoding via FFmpeg. Handles ProRes and other professional formats |\n| 🌐 **Truly cross-platform** | Windows, macOS, Linux, Docker. Same interface, same features, every OS and device | \n| 📱 **Best-in-class mobile UI** | Full DAM features on your phone. Rate, tag, cull and comment from any device on your network |  \n| ⚡ **Simple installation** | Zero-config Portable App for Windows (just unzip and run) and official Docker image for Linux/Unraid |  \n\n---\n\n## Table of Contents\n\n1.  [**OVERVIEW \u0026 CONCEPTS**](#1-overview--concepts)\n    *   [1.1 What is SmartGallery DAM?](#11-what-is-smartgallery-dam)\n    *   [1.2 What's New in v2](#12-whats-new-in-v2)\n    *   [1.3 Core Features](#13-core-features)\n    *   [1.4 Use Case Scenarios](#14-use-case-scenarios)\n2.  [**SETUP \u0026 CONFIGURATION**](#2-setup--configuration)\n    *   [2.1 Installation](#21-installation)\n    *   [2.2 Launch Parameters](#22-launch-parameters)\n    *   [2.3 FFmpeg Integration](#23-ffmpeg-integration)\n3.  [**INTERFACE WALKTHROUGH**](#3-interface-walkthrough)\n    *   [3.1 The Main Workspace (Creator Hub)](#31-the-main-workspace-creator-hub)\n    *   [3.2 Advanced Media Inspection](#32-advanced-media-inspection)\n    *   [3.3 Digital Asset Management (DAM) \u0026 Communication](#33-digital-asset-management-dam--communication)\n    *   [3.4 User Management \u0026 Access Control](#34-user-management--access-control)\n    *   [3.5 The Exhibition Portal (Client Hub)](#35-the-exhibition-portal-client-hub)\n4.  [**ADVANCED TOPICS \u0026 REFERENCE**](#4-advanced-topics--reference)\n    *   [4.1 Sharing Online](#41-sharing-online)\n    *   [4.2 Keyboard Shortcuts Reference](#42-keyboard-shortcuts-reference)\n    *   [4.3 Experimental Features](#43-experimental-features)\n    *   [4.4 Philosophy, Feedback \u0026 License](#44-philosophy-feedback--license)\n\n---\n\n## 1. OVERVIEW \u0026 CONCEPTS\n\n### 1.1 What is SmartGallery DAM?\n\n**SmartGallery DAM** is the evolution of *SmartGallery for ComfyUI*, a project that started as a fast local gallery for browsing ComfyUI outputs and has grown into a powerful and easy to use **Digital Asset Management system**, suitable for AI artists, digital creators and creative studios.\n\n**Who is this for?**\n\n**The AI Artist.** You run ComfyUI all day. Your output folder has tens of thousands of files and you can never find anything. SmartGallery lives outside that chaos. It indexes every generation with its full workflow, lets you search by prompt, model or LoRA, and lets you cull while batches are still running. When ComfyUI breaks, SmartGallery doesn't even blink.\n\n**The Creative Pro or Team.** You deliver AI visuals to clients. Sharing via Google Drive or Dropbox feels unprofessional. SmartGallery gives you an optional Exhibition portal where clients rate and comment on images in real time, while your prompts and workflows stay completely invisible to them. Launch it only when you have a delivery to share.\n\n**Everyone else.** You just want to organize photos, videos, or art and share them nicely. SmartGallery works with any folder on your system.  \n\n**The Remote or Multi-Machine User.** You want your gallery on a dedicated machine (a laptop, a NAS, a home server) without installing ComfyUI there. Install SmartGallery on that machine, link your ComfyUI output folder over the network, and access the full DAM from any browser, on any device, including your phone.\n\n---\n\n### 1.2 What's New in v2.11\n\nv2 is not just a feature drop. The version number jumped because the architecture, ACL system, and multi-user logic required a ground-up rethink. **Your existing setup, folders, and data are all forward-compatible**.\n\n**New in v2.11:**\n\n-   **Powerful search operators:** filter by multiple keywords at once using AND, OR and exclusion operators across prompts, models, LoRAs, comment text and more.\n-   **Virtual Collections (Exhibition Ready / Private):** group files from different physical folders into named albums without moving anything on disk. Mark a collection as Exhibition Ready to make it visible in the sharing portal. Private collections are invisible to guests and never appear in Exhibition.\n-   **1-5 Star Ratings:** rate any image from 1 to 5 stars. Works for solo users too: a great way to personally curate your own library and surface your best work. Ratings are per-user, a global average is shown instantly in the grid, and you can sort by highest rated.\n-   **Real-Time Comments:** leave notes on any image, whether you work alone or with a team. Solo users can annotate their own files as personal memos. With a team, each message has its own visibility: Public (everyone), Internal (staff only), or Direct Message to a specific user. Comment keywords are fully searchable from the Filters panel. Press `G` on any image to open the details panel.\n-   **Color-Coded Status Tags:** tag any image with a pipeline state using keys `1` to `5`: Approved (green), Review (yellow), To Edit (blue), Rejected (red), Select (purple). Browse all files carrying a given status across every folder at once from the Status tab in the sidebar.\n-   **Full User Management with ACL Roles:** create accounts and assign roles: Admin, MANAGER, STAFF, FRIEND, USER, CUSTOMER, GUEST. Each role controls which interface they can access, what they can see, and what they can download.\n-   **Exhibition Mode (fully optional):** a separate, read-only portal you can launch when you want to share work with clients, collaborators, or friends. Completely optional: if you have no need to share, simply never launch it. Only the collections you mark as Exhibition Ready are visible. Workflows and prompts are always hidden from guests.\n-   **Clean Export (`Shift+W`):** download any file stripped of all embedded workflows, prompts and EXIF metadata. Safe to send to anyone without exposing your process.\n-   **Mount Any External Drive or Folder:** (improved) mount external drives, NAS volumes or network paths directly from the UI. Mix ComfyUI output folders with photo archives, video collections or any other media library. All DAM features work on everything, workflow extraction only applies where there is a workflow to extract.\n-   **Wiki Website:** Full documentation with screenshots at [smartgallerydam.com](https://smartgallerydam.com) (accessible from the top menu: \"Docs\").  \n\n---\n\n### 1.3 Core Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eLive Workspace and File Management\u003c/strong\u003e\u003c/summary\u003e\n\n-   **Cross-platform, Cross-device:** Runs locally on Windows, macOS, Linux, and Docker. The responsive web interface works flawlessly across desktops, tablets, and smartphones. Work from your studio machine or cull batches from your phone on the couch.\n-   **Auto-Watch:** detects new ComfyUI outputs the moment they are saved. Cull with `Del`, favorite with `F`, move with `M`, all while generation is still running. Your scroll position is never disturbed.\n-   **Full File Manager:** select files individually or in bulk (Shift+Click range select, Ctrl+A select all). Move, copy, delete, or ZIP directly from the browser.\n-   **Upload External Files:** import images generated elsewhere. If they contain embedded ComfyUI metadata, SmartGallery extracts and displays the full workflow automatically.\n-   **Focus Mode:** press `Q` to hide all UI chrome. Maximum screen space for pure curation.\n-   **Compact Thumbnails:** toggle grid density via the Options menu.\n-   **External Drive Mounting:** link any external drive, NAS, or network path via Symlinks directly from the UI. The folder appears in your sidebar alongside your ComfyUI folders.\n-   **Fully Offline:** works perfectly even when ComfyUI is not running or completely uninstalled.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWorkflow Intelligence (ComfyUI)\u003c/strong\u003e\u003c/summary\u003e\n\n-   **Node Summary Dashboard:** press `N` on any image to see Seed, CFG, Steps, Sampler, Scheduler, all active Models, LoRAs with weights, and full positive/negative prompts.\n-   **Workflow Download and Copy:** press `W` to download the raw JSON workflow, `C` to copy it to clipboard and paste directly back into ComfyUI.\n-   **Clean Export:** press `Shift+W` to download a pixel-perfect copy stripped of all EXIF data and embedded workflows. Safe to share externally without exposing your process.\n-   **Compare Mode:** select two generations, open the A/B slider with synchronized zoom and pan. A parameter diff table shows only the values that changed: Seed, CFG, LoRA weights, sampler, anything.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOrganization (DAM)\u003c/strong\u003e\u003c/summary\u003e\n\n-   **Virtual Collections:** group files from different physical folders into albums without duplicating a byte on disk. Mark as Exhibition Ready to expose in Exhibition, keep Private for internal use only.\n-   **Status Tags:** keyboard shortcuts `1` to `5` apply color-coded team statuses: Approved, Review, To Edit, Rejected, Select. Browse all files in a given status across every folder at once from the Status tab.\n-   **Favorites:** press `F` to toggle a Favorite flag on any file. Filter to Favorites-only from the search panel.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eSearch and Filtering\u003c/strong\u003e\u003c/summary\u003e\n\n-   Search by **prompt keywords**, **checkpoint name**, **LoRA name**, **comment text**, date range, file extension.\n-   Scope to the current folder or search the **global database** instantly.  \n-   Filter by multiple keywords at once using AND, OR and exclusion operators across prompts, models, LoRAs, comment text and more\n-   Sort by date, name, rating, or comment count, ascending or descending. A dedicated **Last Commented** sort orders files by the most recent comment activity, newest first: useful for Admin and Staff to instantly surface the latest client, guest, or friend feedback without manually hunting through the grid.\n-   Filter by Favorites only, or by files with no embedded workflow.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMedia Tools\u003c/strong\u003e\u003c/summary\u003e\n\n-   **Video Storyboard:** press `E` in the Lightbox to generate a grid of 11 evenly-spaced frames from start to last frame. Instant video review without scrubbing.\n-   **Video Transcoding:** ProRes, MKV, AVI, MOV are auto-transcoded via FFmpeg for smooth browser playback.\n-   **Smart Video Grid:** videos strictly pause when they leave the viewport, reducing CPU/GPU usage significantly.\n-   **Video Autoplay Toggle:** press `P` to enable/disable autoplay. Default: off.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eExhibition Mode and Collaboration\u003c/strong\u003e\u003c/summary\u003e\n\n-   **Exhibition Mode (fully optional):** a separate, secure portal for clients, collaborators, friends, or family. Launch it only when you need it, on a separate port, independently from the Main Interface. Physical folder browsing is disabled. Only Exhibition Ready collections are visible. All workflows and EXIF data are stripped automatically before any download. Solo users with no sharing needs can ignore this entirely.\n-   **1-5 Star Ratings:** per-image, per-user. Global average displayed in the grid. Searchable and sortable.\n-   **Comments and Feedback:** every image has a comment thread where anyone with access can post messages, leave feedback, or exchange notes with the team. When writing a message, a visibility selector lets the author choose exactly who will see it. Public messages are visible to everyone. Internal messages go only to Staff. Direct Messages target a specific registered user and are visible only to that person and Staff.\n-   **Multi-User ACL:** Admin, MANAGER, STAFF, FRIEND, USER, CUSTOMER, GUEST roles. Main interface access restricted to Admin, MANAGER, STAFF. Exhibition for all others.\n-   **Guest Login:** optional anonymous access with `--enable-guest-login`. No account required to browse.\n\n\u003c/details\u003e\n\n---\n\n### 1.4 Use Case Scenarios\n\nSmartGallery has two interfaces: the **Main Interface** (your personal workspace) and **Exhibition** (an optional sharing portal for clients, collaborators, or friends). They are completely independent. You can run just the Main Interface forever and never touch Exhibition. You can launch Exhibition only when you have something to share and shut it down when the review is over. Neither requires the other to be running.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eScenario 1: Solo user, no sharing needed (upgrading from v1)\u003c/strong\u003e\u003c/summary\u003e\n\nIf you used SmartGallery v1 as an advanced file manager and have no need to share your work, nothing changes. Launch it exactly as before, with no extra parameters:\n\n```bash\npython smartgallery.py\n```\n\nComfyUI is generating hundreds of files. As each one appears in the grid, you decide in real time: delete the bad seeds immediately with `Del`, move the keepers to the right folder with `M`, mark favorites with `F`, or tag them with a color status. You do all of this while generation is still running. When you want to review later, you search by prompt keywords, model name, or LoRA, pull up the full node summary for any image from months ago, or compare two generations side by side with a parameter diff.\n\nWhen ComfyUI is not running, the same interface works as a full file manager for all your media. No Exhibition needed, ever, unless you decide you want it.\n\nWhat is new in v2 that you can start using immediately, with no additional setup:\n\n-   **Virtual Collections:** group files from different folders into named albums without moving anything on disk. Open the Collections tab in the left sidebar and click + to create one.\n-   **Status Tags:** mark any image with a workflow state using keys `1` to `5`. For example, press `3` to flag a file as \"To Edit\" and come back to it later. Browse all files with a given status from the Status tab in the sidebar.\n-   **Ratings and personal notes:** press `G` on any image to open the Details panel. Assign a 1 to 5 star rating and write a note to yourself. These notes are searchable: use the comment keyword filter to find any image by words you wrote in your own comments.\n-   **Clean Export:** to send a file to someone without exposing your ComfyUI workflow and models, press `Shift+W`. You get a pixel-perfect copy with all metadata stripped.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eScenario 2: Sharing your work with Exhibition\u003c/strong\u003e\u003c/summary\u003e\n\nExhibition is a separate, read-only portal you share with clients, collaborators, or anyone you want to show your work to.\n\n**Step 1: Launch the Main Interface with authentication.**\n\n\u003e The line below shows only the launch command with the relevant parameters. In practice you should add these parameters to your platform launch script (the `.bat` or `.sh` file you created during installation), which also sets your folder paths and ffprobe location. If you have not created a launch script yet, see the [Installation](#21-installation) section, pick your platform, and follow the instructions there first.\n\n```bash\npython smartgallery.py --port 8189 --admin-pass yourpassword --force-login\n```\n\nLog in at `http://localhost:8189` with username `admin` (always lowercase) and the password you set above.\n\n**Step 2: Create Collections and mark them as Exhibition Ready.** In the left sidebar, open the Collections tab and click +. Give each collection a name (Interiors, Exteriors, Project X, or whatever fits) and toggle it as Exhibition Ready to make it visible in Exhibition. You can change this at any time. Add files to the collections you want to expose.\n\n**Step 3: Create user accounts.** Click the user management icon in the sidebar. Create an account for each person who will access Exhibition. For clients and external viewers, assign the role CUSTOMER or USER. Share their credentials and the Exhibition URL with them directly.\n\n**Step 4: Launch Exhibition.**\n\n\u003e Same as above: add these parameters to a second launch script for Exhibition (a separate `.bat` or `.sh` file), keeping your folder paths and other settings identical to the Main Interface script. Run it from a second terminal when you are ready to share.\n\n```bash\npython smartgallery.py --exhibition --port 8190 --admin-pass yourpassword\n```\n\nShare `http://youraddress:8190` with your users. They will see only the Exhibition Ready collections, with no prompts, no workflow data, and no folder structure. They can leave star ratings and write comments on individual images. You can read and reply to their feedback from the Main Interface at any time, and they will see your reply the next time they log in.\n\nYou do not need to run both instances at the same time permanently. Launch Exhibition only when you have something to share, and shut it down when the review session is over. All other paths and settings you already have configured remain unchanged.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eScenario 3: Small team working together\u003c/strong\u003e\u003c/summary\u003e\n\nThe team lead runs the Main Interface with `--force-login` and `--admin-pass` so the workspace is password-protected. Each team member gets a STAFF account and logs into the same Main Interface remotely to review files, apply status tags, and leave internal comments on specific images.\n\n```bash\npython smartgallery.py --port 8189 --admin-pass yourpassword --force-login\n```\n\nLog in at `http://localhost:8189` with username `admin` (always lowercase) and the password you set above. Create STAFF accounts from the user management panel and share the URL with your team.\n\nWhen work is ready for a client, a CUSTOMER account is created, the relevant Collections are marked as Exhibition Ready, and Exhibition is launched on a separate port:\n\n```bash\npython smartgallery.py --exhibition --port 8190 --admin-pass yourpassword\n```\n\nShare `http://youraddress:8190` with the client. They get a clean view with no access to the production workspace, no prompts, no workflow data. They can leave star ratings and comments on individual images. Admin, MANAGER, and STAFF can log into Exhibition too to see exactly what the client sees, and reply to their feedback from either interface.\n\nAll feedback runs through the same database, with no file transfers, no email threads, and no ZIP files.\n\n\u003c/details\u003e\n\n---\n\n## 2. SETUP \u0026 CONFIGURATION\n\n### 2.1 Installation\n\n**Requirements:** Python 3.9+ · FFmpeg/FFprobe (recommended for video) · Windows, macOS, Linux or Docker. ComfyUI does **not** need to be running.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWindows\u003c/strong\u003e\u003c/summary\u003e\n\nThere are two ways to run SmartGallery on Windows: using the ready-to-use **Portable Version** (Recommended) or the **Manual Git Installation**.\n\n---\n\n### Method 1: Portable Version (Recommended)\nThis version includes a fully self-contained embedded Python environment (Python 3.12). You do not need to install Python on your system to use it.\n\n**1. Download \u0026 Extract**\n* Download the Portable ZIP from the [Releases page](https://github.com/biagiomaf/smart-comfyui-gallery/releases/latest). \n*(Direct link to the v2.11 build: [SmartGallery-v2.11-Windows-Portable.zip](https://github.com/biagiomaf/smart-comfyui-gallery/releases/download/2.11/SmartGallery-v2.11-Windows-Portable.zip))*\n* Extract the `.zip` archive into a folder of your choice.\n\n**2. Configure and Run**\n* Please read the `README_PORTABLE.txt` included in the folder.\n* Right-click on the `run_smartgallery.bat` file and select **Edit**.\n* Modify the paths in the `CONFIGURATION` section to point to your real ComfyUI folders (remember to use forward slashes `/`).\n* Save the file and double-click `run_smartgallery.bat` to launch the server!\n\n**3. Update the Portable Version**\nTo update to a newer version in the future, just download the new Portable ZIP, extract it, and overwrite the files. **Make sure to copy your old `run_smartgallery.bat`** into the new folder so you don't lose your path configurations!\n\n---\n\n### Method 2: Manual / Git Installation\nFor advanced users who prefer managing their own Python virtual environments and updating via Git.\n\n**1. Clone and setup**\n\n```bat\ngit clone https://github.com/biagiomaf/smart-comfyui-gallery\ncd smart-comfyui-gallery\npython -m venv venv\nvenv\\Scripts\\activate\npip install -r requirements.txt\n```\n\nOr download the Source Code ZIP from [Releases](https://github.com/biagiomaf/smart-comfyui-gallery/releases/latest), extract, and run the pip commands above.\n\n**2. Create your launch script**\n\nCreate `run_smartgallery.bat` in the root folder:\n\n```bat\n@echo off\ncd /d %~dp0\ncall venv\\Scripts\\activate.bat\n\n:: --- CONFIGURATION: replace with your real paths ---\n:: Use forward slashes (/) even on Windows\nset \"BASE_OUTPUT_PATH=C:/Path/To/ComfyUI/output\"\nset \"BASE_INPUT_PATH=C:/Path/To/ComfyUI/input\"\nset \"BASE_SMARTGALLERY_PATH=C:/Path/To/ComfyUI/output\"\nset \"FFPROBE_MANUAL_PATH=C:/Path/To/ffmpeg/bin/ffprobe.exe\"\nset SERVER_PORT=8189\n\n:: --- OPTIONAL LAUNCH PARAMETERS ---\n:: Add any of the following to the python command below depending on your scenario:\n::\n::   --admin-pass yourpassword   Set the admin password (log in as: admin / yourpassword)\n::   --force-login               Require login on the Main Interface (use with --admin-pass)\n::   --exhibition                Start in Exhibition Mode instead of the Main Interface\n::   --port 8190                 Use a different port (default: 8189)\n::   --enable-guest-login        Allow anonymous guest access in Exhibition\n::\n:: Example – Main Interface with login enforced:\n::   python smartgallery.py --port 8189 --admin-pass yourpassword --force-login\n::\n:: Example – Exhibition on port 8190:\n::   python smartgallery.py --exhibition --port 8190 --admin-pass yourpassword\n\n:: --- START ---\npython smartgallery.py\npause\n```\n\nDouble-click `run_smartgallery.bat` to start.\n\n**3. Update**\n\n```bat\ncd smart-comfyui-gallery\ngit pull\nvenv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003emacOS\u003c/strong\u003e\u003c/summary\u003e\n\n**1. Clone and setup**\n\n```bash\ngit clone https://github.com/biagiomaf/smart-comfyui-gallery\ncd smart-comfyui-gallery\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\n**2. Create your launch script**\n\nCreate `run_smartgallery.sh` and make it executable (`chmod +x run_smartgallery.sh`):\n\n```bash\n#!/bin/bash\nsource venv/bin/activate\n\n# Fix for \"Too many open files\" on macOS\nulimit -n 4096\n\n# --- CONFIGURATION: replace with your real paths ---\nexport BASE_OUTPUT_PATH=\"$HOME/ComfyUI/output\"\nexport BASE_INPUT_PATH=\"$HOME/ComfyUI/input\"\nexport BASE_SMARTGALLERY_PATH=\"$HOME/ComfyUI/output\"\nexport FFPROBE_MANUAL_PATH=\"/opt/homebrew/bin/ffprobe\"\nexport SERVER_PORT=8189\n\n# --- OPTIONAL LAUNCH PARAMETERS ---\n# Add any of the following to the python command below depending on your scenario:\n#\n#   --admin-pass yourpassword   Set the admin password (log in as: admin / yourpassword)\n#   --force-login               Require login on the Main Interface (use with --admin-pass)\n#   --exhibition                Start in Exhibition Mode instead of the Main Interface\n#   --port 8190                 Use a different port (default: 8189)\n#   --enable-guest-login        Allow anonymous guest access in Exhibition\n#\n# Example – Main Interface with login enforced:\n#   python smartgallery.py --port 8189 --admin-pass yourpassword --force-login\n#\n# Example – Exhibition on port 8190:\n#   python smartgallery.py --exhibition --port 8190 --admin-pass yourpassword\n\n# --- START ---\npython smartgallery.py\n```\n\nRun with: `./run_smartgallery.sh`\n\nInstall FFmpeg via Homebrew: `brew install ffmpeg`\n\n**3. Update**\n\n```bash\ncd smart-comfyui-gallery \u0026\u0026 git pull\nsource venv/bin/activate \u0026\u0026 pip install -r requirements.txt\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eLinux\u003c/strong\u003e\u003c/summary\u003e\n\n**1. Clone and setup**\n\n```bash\ngit clone https://github.com/biagiomaf/smart-comfyui-gallery\ncd smart-comfyui-gallery\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n```\n\n**2. Create your launch script**\n\nCreate `run_smartgallery.sh` and make it executable (`chmod +x run_smartgallery.sh`):\n\n```bash\n#!/bin/bash\nsource venv/bin/activate\n\n# --- CONFIGURATION: replace with your real paths ---\nexport BASE_OUTPUT_PATH=\"$HOME/ComfyUI/output\"\nexport BASE_INPUT_PATH=\"$HOME/ComfyUI/input\"\nexport BASE_SMARTGALLERY_PATH=\"$HOME/ComfyUI/output\"\nexport FFPROBE_MANUAL_PATH=\"/usr/bin/ffprobe\"\nexport SERVER_PORT=8189\n\n# --- OPTIONAL LAUNCH PARAMETERS ---\n# Add any of the following to the python command below depending on your scenario:\n#\n#   --admin-pass yourpassword   Set the admin password (log in as: admin / yourpassword)\n#   --force-login               Require login on the Main Interface (use with --admin-pass)\n#   --exhibition                Start in Exhibition Mode instead of the Main Interface\n#   --port 8190                 Use a different port (default: 8189)\n#   --enable-guest-login        Allow anonymous guest access in Exhibition\n#\n# Example – Main Interface with login enforced:\n#   python smartgallery.py --port 8189 --admin-pass yourpassword --force-login\n#\n# Example – Exhibition on port 8190:\n#   python smartgallery.py --exhibition --port 8190 --admin-pass yourpassword\n\n# --- START ---\npython smartgallery.py\n```\n\nRun with: `./run_smartgallery.sh`\n\n**3. Update**\n\n```bash\ncd smart-comfyui-gallery \u0026\u0026 git pull\nsource venv/bin/activate \u0026\u0026 pip install -r requirements.txt\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDocker\u003c/strong\u003e\u003c/summary\u003e\n\n\u003e Special thanks to [Martial Michel (@mmartial)](https://github.com/mmartial) for orchestrating Docker support and contributing to the core application logic.\n\nPre-built image on [DockerHub](https://hub.docker.com/r/mmartial/smart-comfyui-gallery) and **Unraid Community Apps**.\n\n![Unraid CA](assets/smart-comfyui-gallery-unraidCA.png)\n\n**Run:**\n\n```bash\ndocker run \\\n  --name smartgallery \\\n  -v /your/host/output:/mnt/output \\\n  -v /your/host/input:/mnt/input \\\n  -v /your/host/SmartGallery:/mnt/SmartGallery \\\n  -e BASE_OUTPUT_PATH=/mnt/output \\\n  -e BASE_INPUT_PATH=/mnt/input \\\n  -e BASE_SMARTGALLERY_PATH=/mnt/SmartGallery \\\n  -e WANTED_UID=`id -u` \\\n  -e WANTED_GID=`id -g` \\\n  # -e CLI_ARGS=\"...\"   # Optional: add launch parameters here (see below)\n  -p 8189:8189 \\\n  mmartial/smart-comfyui-gallery\n```\n\nThe `CLI_ARGS` environment variable passes optional launch parameters to SmartGallery inside the container. Add it to the command above depending on your scenario:\n\n| Scenario | CLI_ARGS value | Port mapping |\n|---|---|---|\n| Main Interface with login enforced | `--admin-pass yourpassword --force-login` | `-p 8189:8189` |\n| Exhibition | `--exhibition --admin-pass yourpassword` | `-p 8190:8189` |\n| Exhibition with guest access | `--exhibition --admin-pass yourpassword --enable-guest-login` | `-p 8190:8189` |\n\nFor Exhibition scenarios, replace `-p 8189:8189` in the `docker run` command above with `-p 8190:8189`. This maps port 8190 on your host to the container's internal port 8189, so clients reach Exhibition at `http://youraddress:8190`.\n\nWhen using `--admin-pass`, log in with username `admin` (always lowercase) and the password you set.\n\nFor running both instances simultaneously, see the dedicated section under [Launch Parameters](#22-launch-parameters).\n\n**Update:**\n\n```bash\ndocker pull mmartial/smart-comfyui-gallery\ndocker stop smartgallery \u0026\u0026 docker rm smartgallery\n# Re-run the docker run command above\n```\n\nFull Docker guide: [docs/DOCKER_HELP.md](docs/DOCKER_HELP.md)\n\n\u003c/details\u003e\n\nOnce installed, open SmartGallery at:\n```\nhttp://127.0.0.1:8189/galleryout\n```\n\u003cbr\u003e\n\n\u003e [!IMPORTANT]\n\u003e **Note on Updates:** When updating from a previous version, always remember to update your virtual environment as well, following the specific instructions for your platform:\n\u003e\n\u003e ```bash\n\u003e pip install -r requirements.txt\n\u003e ```\n\n---\n\n### 2.2 Launch Parameters\n\nThe Main Interface and Exhibition are completely independent. You can run just one, both at the same time, or alternate between them. Neither requires the other to be running.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMain Interface parameters\u003c/strong\u003e\u003c/summary\u003e\n\nAll parameters are optional. Launched with no flags, SmartGallery runs on port 8189 and treats you as admin automatically when accessed from a local network.\n\n| Flag | Required | Description |\n|---|---|---|\n| `--port \u003cnumber\u003e` | Optional | Override the default port (8189). |\n| `--admin-pass \u003cpwd\u003e` | Optional* | Set the Admin password. Required to enable user management. Minimum 8 characters. Log in with username `admin` (always lowercase) and the password you set here. |\n| `--force-login` | Optional* | Enforces authentication. Must always be combined with `--admin-pass`. Use when accessing from outside the local network. |\n\n`*` `--admin-pass` and `--force-login` must be used together when either is specified.\n\n\u003e **Accessing the main interface from outside your local network?** Always use `--admin-pass` and `--force-login` together, without exception. Without these two flags the interface is open to anyone who finds the URL.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eExhibition parameters\u003c/strong\u003e\u003c/summary\u003e\n\n| Flag | Required | Description |\n|---|---|---|\n| `--exhibition` | Yes | Start in Exhibition Mode. Only Exhibition Ready collections are visible. Physical folder browsing is disabled. |\n| `--admin-pass \u003cpwd\u003e` | Yes | Set the Admin password. Required to protect the instance and enable user management. Minimum 8 characters. Log in with username `admin` (always lowercase) and the password you set here. |\n| `--port \u003cnumber\u003e` | Yes | Use a different port when running Exhibition alongside the main interface. Typically 8190. |\n| `--enable-guest-login` | Optional | Shows a \"Login as Guest\" button. No account needed to browse Exhibition. |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eRunning both instances: together or independently\u003c/strong\u003e\u003c/summary\u003e\n\nThe two instances can run at the same time from two separate terminals or scripts, or independently whenever needed. Launch Exhibition only when you have something to share. There is no requirement to keep both running permanently.\n\n**Python: two terminals or scripts**\n\n```bash\n# Terminal 1: Main interface\npython smartgallery.py --port 8189 --admin-pass yourpassword --force-login\n\n# Terminal 2: Exhibition (launch only when needed)\npython smartgallery.py --exhibition --port 8190 --admin-pass yourpassword\n```\n\n**Docker: same image, launched twice**\n\n```bash\n# Main interface container (port 8189 on host)\ndocker run --name smartgallery-main \\\n  -v /your/host/output:/mnt/output \\\n  -v /your/host/input:/mnt/input \\\n  -v /your/host/SmartGallery:/mnt/SmartGallery \\\n  -e BASE_OUTPUT_PATH=/mnt/output \\\n  -e BASE_INPUT_PATH=/mnt/input \\\n  -e BASE_SMARTGALLERY_PATH=/mnt/SmartGallery \\\n  -e WANTED_UID=`id -u` \\\n  -e WANTED_GID=`id -g` \\\n  -e CLI_ARGS=\"--admin-pass yourpassword --force-login\" \\\n  -p 8189:8189 \\\n  mmartial/smart-comfyui-gallery\n\n# Exhibition container (port 8190 on host)\ndocker run --name smartgallery-exhibition \\\n  -v /your/host/output:/mnt/output \\\n  -v /your/host/input:/mnt/input \\\n  -v /your/host/SmartGallery:/mnt/SmartGallery \\\n  -e BASE_OUTPUT_PATH=/mnt/output \\\n  -e BASE_INPUT_PATH=/mnt/input \\\n  -e BASE_SMARTGALLERY_PATH=/mnt/SmartGallery \\\n  -e WANTED_UID=`id -u` \\\n  -e WANTED_GID=`id -g` \\\n  -e CLI_ARGS=\"--exhibition --admin-pass yourpassword\" \\\n  -p 8190:8189 \\\n  mmartial/smart-comfyui-gallery\n```\n\nDocker port mapping: the syntax is `HOST:CONTAINER`. Both containers run internally on port 8189, but are reachable at `:8189` and `:8190` respectively on your machine. They share the same data volumes, so files, tags, and collections are visible in both.\n\n\u003c/details\u003e\n\n---\n\n### 2.3 FFmpeg Integration\n\nFFmpeg is optional but strongly recommended. Without it, video files will not generate thumbnails, the storyboard feature will not work, and formats like ProRes, MKV, AVI, and MOV will not transcode for browser playback.\n\nIf you only work with images, you can skip this entirely.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhat FFmpeg enables\u003c/strong\u003e\u003c/summary\u003e\n\n-   Thumbnail generation for MP4, WEBM, and all transcoded formats\n-   Video Storyboard: the 11-frame grid preview (`E` key in the Lightbox)\n-   On-the-fly transcoding of ProRes, MKV, AVI, MOV to a browser-compatible format\n-   Workflow extraction from video files generated by ComfyUI\n\nSmartGallery uses `ffprobe` (included in every FFmpeg installation) to read video metadata, and `ffmpeg` itself for transcoding. You point SmartGallery to the `ffprobe` binary via the `FFPROBE_MANUAL_PATH` variable in your launch script.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eInstall FFmpeg on Windows\u003c/strong\u003e\u003c/summary\u003e\n\n1.  Download a pre-built release from [ffmpeg.org/download.html](https://ffmpeg.org/download.html) (the \"Windows builds\" section, for example from gyan.dev or BtbN).\n2.  Extract the archive to a permanent location, for example `C:/ffmpeg`.\n3.  The binaries you need are inside the `bin` folder: `ffmpeg.exe` and `ffprobe.exe`.\n4.  In your `run_smartgallery.bat`, set:\n\n```bat\nset \"FFPROBE_MANUAL_PATH=C:/ffmpeg/bin/ffprobe.exe\"\n```\n\nYou do not need to add FFmpeg to your system PATH. SmartGallery only needs the full path to `ffprobe.exe`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eInstall FFmpeg on macOS\u003c/strong\u003e\u003c/summary\u003e\n\nThe easiest way is Homebrew:\n\n```bash\nbrew install ffmpeg\n```\n\nAfter installation, ffprobe will typically be at `/opt/homebrew/bin/ffprobe` (Apple Silicon) or `/usr/local/bin/ffprobe` (Intel). Set it in your launch script:\n\n```bash\nexport FFPROBE_MANUAL_PATH=\"/opt/homebrew/bin/ffprobe\"\n```\n\nTo confirm the path on your machine: `which ffprobe`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eInstall FFmpeg on Linux\u003c/strong\u003e\u003c/summary\u003e\n\nOn Debian/Ubuntu:\n\n```bash\nsudo apt update \u0026\u0026 sudo apt install ffmpeg\n```\n\nOn Fedora/RHEL:\n\n```bash\nsudo dnf install ffmpeg\n```\n\nffprobe is installed alongside ffmpeg. The default path is usually `/usr/bin/ffprobe`. Set it in your launch script:\n\n```bash\nexport FFPROBE_MANUAL_PATH=\"/usr/bin/ffprobe\"\n```\n\nTo confirm: `which ffprobe`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDocker: nothing to install\u003c/strong\u003e\u003c/summary\u003e\n\nThe official Docker image (`mmartial/smart-comfyui-gallery`) already includes FFmpeg and ffprobe. Video transcoding, thumbnail generation, and storyboard creation all work out of the box with no additional configuration.\n\n\u003c/details\u003e\n\n---\n\n## 3. INTERFACE WALKTHROUGH\n\n### 3.1 The Main Workspace (Creator Hub)\n\n**Access:** `http://localhost:8189/galleryout`\n\n![SmartGallery Main Workspace — grid view with batch selection bar active](assets/hero_main_workspace.png)\n\u003cbr\u003e\u003cem\u003eThe Main Workspace: grid view with sidebar navigation, batch selection bar at the bottom, and Workflow badges on each card. Fully responsive and functional on mobile devices.\u003c/em\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cimg src=\"assets/mobile3.png\" height=\"460\" alt=\"Mobile View\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cimg src=\"assets/mobile-node-summary.png\" height=\"460\" alt=\"Node Summary\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003cem\u003eMobile interface\u003c/em\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cem\u003eNode Summary: full workflow recall at a glance\u003c/em\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\u003c/div\u003e\n\n---\n\n### 3.1.1 Sidebar Navigation\n\nThe left sidebar contains three main tabs:  \n\n ![Sidebar with three tabs: Folders, Collections, Status](assets/sidebar_tabs.png)\n\n*The three-tab sidebar: Folders (directory tree), Collections (virtual albums), Status (browse by pipeline state).*\n\n-   **📁 Folders (Physical):** Browse actual folders on your hard drive.\n    -   `+` — Create a subfolder\n    -   🔗 — Mount an external drive or network folder via symlink\n    -   `⋮` — Rename, Delete, Unmount, or force AI Indexing on a folder\n-   **📚 Collections (Virtual):** Virtual albums grouping files from different folders without moving them on disk.\n-   **🏷 Status:** Browse all files by their color-coded pipeline status across every folder at once.\n-   **👤 User Profile (bottom):** Shows your current role. Click 👥 to open User Management, `×` to log out.\n\n---\n\n### 3.1.2 Top Toolbar \u0026 Global Actions\n\n![Top toolbar with Filters, Upload, Rescan, Refresh buttons and sort options](assets/top_main_toolbar.png)\n\n*The top toolbar: action buttons on the left, file count and sort options on the right.*\n\n-   **⚙️ Options:** Global settings — thumbnail size (Normal 320px / Compact 220px), video autoplay.\n-   **? Shortcuts:** Full keyboard shortcut list for the current interface.\n-   **⚡ Focus (Q):** Toggle Focus Mode.\n-   **📤 Upload:** Drag \u0026 drop files into the current folder. ComfyUI metadata is extracted automatically.\n-   **♻️ Rescan:** Forces a background disk scan for externally added or modified files.\n\n#### Auto-Watch \u0026 Refresh\n\n ![Auto-Watch popup with Enable Watch toggle and 10 second interval](assets/auto_watch.png)\n\n*Auto-Watch: click the `⋮` next to Refresh, enable the toggle and set an interval. A pulsing red dot confirms it's active.*\n\n-   **Manual Refresh:** Click the 🔃 icon to instantly scan for new files.\n-   **Auto-Watch (`⋮`):** Silently scans in the background and injects new ComfyUI files into the grid **without a page reload**. Enable it while ComfyUI is generating to cull in real time.\n\n---\n\n### 3.1.3 Search \u0026 Filters\n\n![Advanced search panel showing all filter options](assets/filter_panel.png)\n\n*The Filters panel: search scope, multi-keyword fields, extensions, date range, and options.*\n\nClick **🔍 Filters** to open the advanced search engine. Filters work across both physical Folders and virtual Collections.\n\n**Search Scope:** Current Folder or Global (All Folders). Toggle *Include Subfolders* for recursive search.\n\n**Multi-Keyword Fields** (Workflow Files, Prompt Keywords, Comment Keywords):\n\n| Syntax | Logic | Example |\n|---|---|---|\n| `,` comma | **AND** — must contain both | `red, car` |\n| `;` semicolon | **OR** — contains either | `cat; dog` |\n| `!` exclamation | **NOT** — exclude keyword | `!lora`, `!cat` |\n| `\" \"` quotes | **Exact Match** | `\"man\"` (won't match `woman`) |\n\n*💡 **Pro Tip**: You can combine Exact Matches and Exclusions! Use `!\"bad anatomy\"` to completely exclude a specific phrase from your search results.*\n\n**Extensions \u0026 Prefixes:** Filter by file type or filename prefix.\n\n**Date Range:** Filter by generation/upload date.\n\n**Options:** Favorites Only · No Workflow. \n\n\n#### Sort Buttons\n\nSort by **Date** (📅), **Name** (🔤), **Rating** (⭐), or **Comments** (💬). Clicking Comments twice toggles between *Most Discussed* and *Recent Activity* (newest first) — useful for surfacing the latest client feedback.\n\n---\n\n### 3.1.4 Gallery Grid \u0026 Focus Mode\n\n**Standard Grid View (Focus Mode OFF):** Hovering over an image reveals the quick-action card with Node Summary (📝), Favorite (⭐), Download (💾), Delete (🗑️). Clicking opens the Lightbox.\n\n![Standard Grid View — Focus Mode OFF, showing hover cards with action buttons](assets/focus_mode_off.png)\n\n*Standard Grid View (Focus OFF): two files selected (blue checkmarks), hover card visible, batch bar at the bottom.*\n\n**Focus Mode ON (`Q`):** Hides all UI chrome, metadata, titles, and quick-action cards. A golden star marks favorites. Selected items show a massive **fuchsia border**. Use keyboard arrows to navigate. Click or press `V`/`Enter` to open the Lightbox.\n\n![Focus Mode ON — clean grid with fuchsia selection borders](assets/focus_mode_active.png)\n\n*Focus Mode ON: all clutter removed, fuchsia border on the selected file, batch bar still accessible.*\n\n\u003e **Power User Tip:** Enable Auto-Watch, activate Focus Mode with `Q`, then use `←→` arrows + `Del`/`F`/`X` to blaze through a batch while it's still generating.\n\n---\n\n### 3.1.5 Batch Selection Bar\n\nClick the checkmark `✓` on any image (or `Space`/`X` in Focus Mode) to select it. The floating **Selection Bar** appears at the bottom.\n\n![Batch selection bar with context menu expanded showing all batch actions](assets/batch_selection_bar.png)\n\n*Batch selection bar: 2 files selected (fuchsia borders), context menu open with all available batch actions.*\n\n| Action | Shortcut | Description |\n|---|---|---|\n| ✕ Deselect All | `Esc` | Clears the selection |\n| ✅ Select All | `Ctrl+A` | Selects all visible files |\n| ↔️ Range Select | — | Appears when exactly 2 files selected; selects all between them |\n| ⭐ Add Favorite | — | Marks all selected as favorites |\n| 🏷 Set Status | `Y` | Apply a pipeline color tag to the batch |\n| 📚 Add/Remove Collections | `A` | Add or remove batch from virtual albums |\n| ⚖️ Compare Selected | — | Split-screen comparison (exactly 2 files required) |\n| 🏅 Rate Selected | `Shift+R` | Apply 1–5 stars to multiple files at once |\n| 📁 Move / Copy | `M` | Transfer files to another physical folder |\n| 📦 Download as Zip | `Z` | Package selection into a downloadable `.zip` |\n| ☆ Remove Favorite | — | Remove the favorite flag from the batch |\n| 🗑️ Delete Selected | `Del` | Permanently delete selected files |\n\n---\n\n## 3.2 Advanced Media Inspection\n\n### 3.2.1 The Lightbox (Media Viewer)\n\nOpen the full-screen Lightbox with `V` or `Enter`. When Focus Mode is OFF, clicking an image also works.\n\n![Lightbox open with Node Summary panel on the left, image in center, Ratings \u0026 Comments panel on the right](assets/lightbox_node_summary.png)\n\n*The Lightbox: Node Summary panel (left), full-resolution image (center), Ratings \u0026 Comments panel (right). All three panels can be shown or hidden independently.*\n\n ![Lightbox toolbar showing all action buttons](assets/lightbox_toolbar.png)\n\n*The Lightbox toolbar: / MENU · − · + · Rotate · Download · Clean Export · Rename · Node Summary · Ratings\u0026Comments · Workflow · Copy JSON · Delete · Open in New Tab · × Exit*\n\n**Toolbar Buttons:**\n\n| Button | Key | Description |\n|---|---|---|\n| / MENU | `/` | Touch-friendly list of all commands |\n| − / + | `-` / `+` | Zoom out / Zoom in |\n| 🔄 Rotate | `T` | Rotate 90° (non-destructive) |\n| 💾 Download | `S` | Download original file |\n| 🛡 Clean Export | `Shift+W` | Download with all metadata stripped (prompts, nodes, EXIF) |\n| ✏️ Rename | `R` | Rename file on disk |\n| 📝 Node Summary | `N` | Open ComfyUI generation dashboard |\n| ⭐💬 Ratings \u0026 Comments | `G` | Open side panel for ratings and messages |\n| ⚙️ Workflow JSON | `W` | Download raw ComfyUI `.json` workflow |\n| 📋 Copy JSON | `C` | Copy workflow to clipboard |\n| 🎞 Storyboard | `E` | Generate 11-frame video overview |\n| 📁 Move File | `M` | Open the Move File dialog |\n| 👁 Hide Toolbar | `H` | \"Clean View\" — hides all chrome |\n| ↗️ Open in New Tab | `O` | Full-resolution in a new browser tab |\n| 🗑️ Delete | `Del` | Delete the file |\n| × Exit | `Esc` | Return to Grid View |\n\n---\n\n### 3.2.2 ComfyUI Node Summary (📝)\n\nPress `N` on any image (in the grid or in the Lightbox) to open the Node Summary.\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\" width=\"50%\" valign=\"top\"\u003e\n      \u003cimg src=\"assets/improved-node-summary.png\" height=\"350\"\u003e\u003cbr\u003e\n      \u003cem\u003eNode Summary dashboard: positive prompt with one-click Copy, and all generation parameters at a glance.\u003c/em\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\" width=\"50%\" valign=\"top\"\u003e\n      \u003cimg src=\"assets/raw_nodes.png\" height=\"350\"\u003e\u003cbr\u003e\n      \u003cem\u003eRaw Node List: every single node in the ComfyUI graph (DualCLIPLoader, ConditioningZeroOut, MarkdownNote…) with all parameters.\u003c/em\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n**The dashboard shows:**\n- **Positive \u0026 Negative Prompts** — with one-click Copy buttons\n- **Generation Parameters** — Seed (with copy button), Steps, CFG, Sampler, Scheduler, Resolution\n- **Active LoRAs** — all LoRAs used and their weights\n- **Source Media (Inputs)** — if the workflow used Image2Image, ControlNet, or Video inputs, the source media is displayed and downloadable directly from this panel\n- **Raw Node List** — complete scrollable list of every node in the workflow graph\n\n---\n\n### 3.2.3 Compare Mode (⚖️)\n\nSelect exactly **2 files**, click `⋮` in the Selection Bar → **Compare Selected**.\n\n![Compare Mode with A/B slider on a mandrill image, and Parameter Differences table below](assets/compare2.png)\n\n*Compare Mode: drag the central handle to compare the two images. The Parameter Differences table below shows only the values that changed between the two generations.*\n\n-   **Visual Slider:** Drag the central handle to compare. Videos synchronize automatically.\n-   **Parameter Differences (`I`):** Table showing only the parameters that changed (e.g., CFG: 4.0 → 8.0, different prompt, different LoRA weights).\n\n---\n\n### 3.2.4 Video Storyboard (🎞)\n\nPress `E` in the Lightbox on any video file.\n\n![Video Storyboard showing 11 evenly-spaced frames of an elephant video](assets/storyboard.png)\n\n*Video Storyboard: 11 perfectly spaced frames extracted from the video. Click any frame to zoom in with timestamp data.*\n\nSmartGallery uses FFmpeg to extract **11 perfectly spaced frames** and display them in a grid, letting you evaluate the entire motion arc and consistency at a glance — without scrubbing.\n\n---\n\n## 3.3 Digital Asset Management (DAM) \u0026 Communication\n\n### 3.3.1 Virtual Collections\n\nCollections are **virtual albums** — group files from different physical folders without moving them on disk.\n\n ![Collections sidebar tab with context menu open, and Manage Collections modal on the right](assets/collections.jpg)\n\n*Left: Collections sidebar tab with the context menu (Rename, Set as Exhibition Ready, Delete). Right: Manage Collections modal — add or remove the selected file from any collection, with pending changes shown.*\n\n-   **Create:** Collections tab in the sidebar → `+` → name it → choose Public or Private.\n-   **Add files:** Select files → click 📚 in the Selection Bar or press `A`.\n-   **Untag (`U`):** Remove files from the current collection without deleting them from disk.\n\n#### Exhibition Ready vs. Private\n\nClick `⋮` next to any collection to toggle **Exhibition Ready** status:\n\n-   **Private (default):** Strictly internal. Invisible to clients and guests.\n-   **Exhibition Ready 👁:** Pushed to the Exhibition Portal, visible to clients and guests. Toggleable at any time.\n\n---\n\n### 3.3.2 Pipeline Status Tags\n\n ![Status tab in the sidebar showing all 5 tags: Approved (green), Review (yellow), To Edit (blue), Rejected (red), Select (purple)](assets/statuses.png)\n\n*The Status tab: all five pipeline states with their color coding and the keyboard shortcut for each.*\n\nThe **Status tab** in the sidebar lets you browse all files at a given pipeline stage, across every folder at once.\n\n**How to assign:** hover over an image (or select a batch) and press:\n\n| Key | Status | Color |\n|---|---|---|\n| `1` | Approved | Green |\n| `2` | Review | Yellow |\n| `3` | To Edit | Blue |\n| `4` | Rejected | Red |\n| `5` | Select | Purple |\n| `0` | Remove status | — |\n\n![Thumbnails with color status bars on the left edge](assets/status_color_vertical_strips.png)\n\n*A vertical color bar on the left edge of each thumbnail indicates the file's pipeline status. No bar = no status assigned.*\n\nYou can also use `Y` to open the tagging modal on a batch selection. Status tags are entirely optional.\n\n---\n\n### 3.3.3 Ratings \u0026 Comments (⭐💬)\n\nBoth interfaces share a **unified communication database**. Press `G` on any image to open the Ratings \u0026 Comments panel.\n\n ![Ratings \u0026 Comments panel showing global rating 3.5, your vote, collections \u0026 status, comment count](assets/main_rating_comments_panel.png)\n\n*The Ratings \u0026 Comments panel: Global Rating (average of all users), your personal vote with Reset button, file's collections and pipeline status, and comment thread.*\n\n#### Ratings\n\n-   Click ⭐ stars (1–5) to cast a personal vote. Click 🗑 **Reset** to remove it.\n-   **Global Rating** = average of all users (staff + clients in Exhibition).\n-   **Batch rating:** select multiple files → press `Shift+R`.\n\n#### Comments \u0026 Visibility\n\n ![Comments thread showing Direct Message from STAFF to John Doe, and Private Staff Only message from client. Visibility dropdown open with Public and Private options](assets/comments_target_audience.png)\n\n*Comments thread: a STAFF Direct Message (To: John Doe) and a Private (Staff Only) message from the client. The visibility dropdown is open showing all options.*\n\nWhen writing a comment, choose who can read it from the dropdown:\n\n| Visibility | Who sees it |\n|---|---|\n| 🌐 **Public (Everyone)** | All users in both Main Workspace and Exhibition |\n| 🔒 **Internal / Private (Staff Only)** | Only Admin, Manager, Staff — clients never see these |\n| 👤 **Direct Message (To: User)** | Only that specific user and Staff — click a username to pre-select |\n\nEvery message displays a colored badge showing its visibility at a glance. Comment text is **fully searchable** from the Filters panel.\n\n---\n\n## 3.4 User Management \u0026 Access Control\n\nIf you work alone, skip this section — the system works without it.\n\n ![User Management panel with role table and user creation form](assets/user_management_modal.png)\n\n*User Management panel: role permissions table (Admin/Manager/Staff, Friend, User/Customer/Guest), and the user registration form below.*\n\nClick the 👥 icon at the bottom of the sidebar to open the User Management panel.\n\n### Role Permissions\n\n| Role | Main Interface | Exhibition | Workflows | Downloads |\n|---|---|---|---|---|\n| **admin / MANAGER / STAFF** | ✅ Yes | ✅ Yes | Full access | Original + JSON workflows |\n| **FRIEND** | ❌ No | ✅ Yes | Visible in metadata | Original files (with embedded metadata) |\n| **USER / CUSTOMER / GUEST** | ❌ No | ✅ Yes | Hidden | Clean/stripped only |\n\n-   **admin:** The built-in root user. Case-sensitive — always **lowercase**. Password set via `--admin-pass`.\n-   **MANAGER / STAFF:** Full access to Main Interface. Can read and respond to all comments.\n-   **FRIEND:** Exhibition only. Downloads original files (metadata intact, but Node Summary panel not available).\n-   **USER / CUSTOMER / GUEST:** Exhibition only. All downloads are metadata-stripped — no workflow can be recovered even with external tools.\n-   **Guest (anonymous):** With `--enable-guest-login`, anonymous users browse Exhibition without an account; they choose a nickname before posting their first comment.\n\n### Creating a User Account\n\nFill in: **User ID** (login name) · **Password** (min. 8 chars) · **Full Name** (display name) · **Email** (optional) · **Role** · **Expiration** (optional) · **Active** toggle.\n\n---\n\n## 3.5 The Exhibition Portal (Client Hub)\n\n**Access:** Launch with `--exhibition`, typically on port 8190.\n\n### 3.5.1 Exhibition Interface Overview\n\n![Exhibition Portal grid showing curated collections with ratings and comment counts on each card](assets/hero_exhibition_portal.png)\n\n*The Exhibition Portal: clean, curated grid showing only Exhibition Ready collections. Each card shows the global average rating and comment count. No prompts, no folders, no workflow data visible.*\n\nThe Exhibition portal is designed for non-technical users — clients, art directors, friends.\n\n-   **Strictly Read-Only:** Guests can vote and comment; they cannot delete, move, rename, or alter files.\n-   **Metadata Stripped:** Workflows, prompts, and EXIF are completely hidden. Downloads are always clean.\n-   **Curated View:** Guests see only collections marked Exhibition Ready by the Admin.\n\n**Grid \u0026 Navigation:**\n-   **Sidebar:** Switch between collections, search by collection name.\n-   **Sorting:** Newest · Top Rated · Latest Commented · Most Commented · A-Z.\n-   **Media Cards:** Each thumbnail shows the global average rating (★) and comment count (💬).\n\n---\n\n### 3.5.2 Theater Mode (Exhibition Lightbox)\n\n![Theater Mode in Exhibition showing image with ratings panel open on the right, with comment thread and post form](assets/theater_comments_panel.png)\n\n*Theater Mode: full-resolution image with the Ratings \u0026 Comments panel open. Shows the global average rating, the user's personal vote, and a comment thread with visibility badges (To: John Doe, Private Staff Only).*\n\nClicking any image opens it in the **Theater** — the Exhibition's version of the Lightbox.\n\n-   **Media Controls:** Zoom (`+`/`-`), Rotate (`T`), Download (`S`), Open in New Tab (`O`).\n-   **Rating \u0026 Comment Panel (`G`):**\n    -   Rate 1–5 stars by clicking or pressing `1`–`5` on keyboard; `0` to clear.\n    -   Read messages addressed to you and public messages.\n    -   Post comments as Public (everyone) or Private (staff only).\n-   **Mobile:** Comments panel collapsed by default; tap 💬 **Show Comments** to expand.\n\n---\n\n## 4. ADVANCED TOPICS \u0026 REFERENCE\n\n### 4.1 Sharing Online\n\nBy default SmartGallery runs on your local network. If you want to reach it from outside your home or share Exhibition with clients over the internet, you have two options: a **reverse proxy** (if you have a server or VPS with a domain), or a **tunnel service** (if you just want to share quickly with no server).\n\nIn both cases: Exhibition (port 8190) is designed for external access. The Main Interface (port 8189) can also be exposed externally, but always use `--admin-pass` and `--force-login` when you do.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eReverse Proxy with Nginx\u003c/strong\u003e\u003c/summary\u003e\n\nUse this if you have a server, VPS, or NAS running Nginx and want SmartGallery accessible at a clean URL or on port 80/443. Configure one block per instance.\n\n```nginx\n# Main Interface (port 8189)\nlocation /studio/ {\n    proxy_pass http://127.0.0.1:8189/galleryout/;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\n\n# Exhibition (port 8190)\nlocation /gallery/ {\n    proxy_pass http://127.0.0.1:8190/galleryout/;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\n```\n\nYou can also dedicate a full subdomain to each instance (e.g. `studio.yourdomain.com` and `gallery.yourdomain.com`) using separate `server {}` blocks.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eReverse Proxy with Apache\u003c/strong\u003e\u003c/summary\u003e\n\nRequires `mod_proxy` and `mod_proxy_http` enabled (`a2enmod proxy proxy_http`).\n\n```apache\n# Main Interface (port 8189)\n\u003cLocation \"/studio/\"\u003e\n    ProxyPreserveHost On\n    ProxyPass http://127.0.0.1:8189/galleryout/\n    ProxyPassReverse http://127.0.0.1:8189/galleryout/\n\u003c/Location\u003e\n\n# Exhibition (port 8190)\n\u003cLocation \"/gallery/\"\u003e\n    ProxyPreserveHost On\n    ProxyPass http://127.0.0.1:8190/galleryout/\n    ProxyPassReverse http://127.0.0.1:8190/galleryout/\n\u003c/Location\u003e\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eNo server? Share Exhibition with a tunnel (ngrok, Cloudflare Tunnel, and others)\u003c/strong\u003e\u003c/summary\u003e\n\nIf you do not have a server or a domain name but want to share Exhibition with a client or friend outside your local network, tunnel services are the fastest solution. They create a public URL that forwards directly to your local machine, with no router configuration, no static IP, and no hosting fees.\n\n**ngrok** (free tier works for personal use, runs on Windows, macOS, Linux)\n\nInstall:\n\n```bash\n# macOS\nbrew install ngrok\n\n# Linux (Debian/Ubuntu)\ncurl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc\necho \"deb https://ngrok-agent.s3.amazonaws.com buster main\" | sudo tee /etc/apt/sources.list.d/ngrok.list\nsudo apt update \u0026\u0026 sudo apt install ngrok\n\n# Windows: download the .exe from ngrok.com/download\n```\n\nStart your Exhibition instance first, then open the tunnel:\n\n```bash\nngrok http 8190\n```\n\nngrok prints a public URL like `https://a1b2c3d4.ngrok.io`. Share that with your client. It stays active as long as ngrok is running. On the free tier the URL changes every time you restart.\n\n**Alternatives:**\n\n-   **Cloudflare Tunnel** (free, no bandwidth limit, stable permanent URL): best for recurring or long-term sharing. Requires a free Cloudflare account. See [developers.cloudflare.com/cloudflare-one/connections/connect-networks](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/).\n-   **Tailscale**: creates a private mesh network between your devices. Better suited for trusted collaborators or family than for anonymous client access.\n-   **Localtunnel**: no account needed, instant setup. Run `npx localtunnel --port 8190`. Less stable for long sessions.\n\nYou can tunnel just Exhibition, just the Main Interface, or both. Exhibition is built for external access. The Main Interface is also safe to expose remotely (useful for culling from your phone or working with a distributed team), as long as `--admin-pass` and `--force-login` are active.\n\nDocker users: the same approach works identically. Run your Exhibition container with `-p 8190:8189`, then point ngrok or Cloudflare Tunnel at port 8190 on your host.\n\n\u003c/details\u003e\n\n---\n\n### 4.2 Keyboard Shortcuts Reference\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMain Interface shortcuts\u003c/strong\u003e\u003c/summary\u003e\n\n**Global App Controls**\n\n| Shortcut | Action |\n|---|---|\n| `?` | Open Shortcuts Help panel |\n| `Q` | Toggle Focus Mode (hides UI, enables keyboard-only grid navigation) |\n| `T` | Scroll to Top and open Search/Filters |\n| `P` | Toggle Video Autoplay on/off |\n| `L` | Refresh view (sync with disk) |\n| `K` | Open Rescan Folder modal |\n| `Ctrl+A` / `Cmd+A` | Select all files in current view |\n| `Esc` | Close any modal, overlay or menu / deselect all |\n| `Home` / `End` | Scroll instantly to top / bottom |\n| `PgUp` / `PgDn` | Scroll page by page |\n\n**Grid: Single Item Actions**\n*(hover over an item, or navigate with arrow keys in Focus Mode)*\n\n| Shortcut | Action |\n|---|---|\n| `V` / `Enter` | Open Lightbox (full screen view) |\n| `X` / `Space` | Select / deselect item |\n| `N` | View Node Summary (ComfyUI generation data) |\n| `F` | Toggle Favorite |\n| `A` | Add to / remove from Virtual Collection |\n| `W` | Download Workflow JSON |\n| `Shift+W` | Clean Export: download stripped of all metadata |\n| `C` | Copy Workflow JSON to clipboard |\n| `S` | Download original media file |\n| `R` | Rename file |\n| `E` | Generate Video Storyboard (videos only) |\n| `G` | Open Details Panel: rate, post or read comments, view collections |\n| `Shift+R` | Batch Rate: Opens the batch rating modal for selected files in the grid |\n| `Del` | Quick delete |\n\n**Grid: Selection and Batch Actions**\n\n| Shortcut | Action |\n|---|---|\n| `Click` | Focus Mode OFF: opens Lightbox. Focus Mode ON: selects item. |\n| `Ctrl+Click` | Add single item to selection |\n| `Shift+Click` | Select a range between two files |\n| `A` | Add / remove selection to / from a Collection |\n| `Y` | Open Status Tagging modal |\n| `M` | Move selected files to another folder |\n| `U` | Remove selection from current Virtual Collection |\n| `Z` | Download selection as ZIP |\n| `Shift+R` | Batch Rate: Opens the batch rating modal for selected files in the grid |\n| `Del` | Delete entire selection |\n| `Esc` | Deselect all |\n\n**Status Tags**\n*(works on a single hovered item or a batch selection)*\n\n| Shortcut | Action |\n|---|---|\n| `1` | Approved (Green) |\n| `2` | Review (Yellow) |\n| `3` | To Edit (Blue) |\n| `4` | Rejected (Red) |\n| `5` | Select (Purple) |\n| `0` | Clear status |\n\n**Lightbox**\n\n| Shortcut | Action |\n|---|---|\n| `←` / `→` | Navigate previous / next media |\n| `+` / `-` | Zoom in / out |\n| `0` | Reset zoom and pan |\n| `T` | Rotate media 90° |\n| `H` | Hide / show UI (clean view) |\n| `/` | Open interactive Quick Menu |\n| `N` | View Node Summary |\n| `F` | Toggle Favorite |\n| `A` | Add to / remove from Collection |\n| `Y` | Set Status Tag |\n| `G` | Open Ratings and Comments panel |\n| `W` | Download Workflow JSON |\n| `Shift+W` | Clean Export (no metadata) |\n| `C` | Copy Workflow JSON |\n| `R` | Rename file |\n| `E` | Generate Video Storyboard |\n| `M` | Move file |\n| `S` | Download media |\n| `O` | Open full-res in new tab |\n| `Del` | Delete file |\n| `Esc` / `V` | Close Lightbox |\n\n**Compare Mode and Storyboard**\n\n| Context | Shortcut | Action |\n|---|---|---|\n| Compare Mode | `+` / `-` | Synchronized zoom in / out |\n| Compare Mode | `0` | Reset zoom |\n| Compare Mode | `I` | Toggle Parameter Differences panel |\n| Storyboard | `←` / `→` | Navigate frames (when a frame is zoomed) |\n| Both | `Esc` | Close current mode |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eExhibition Portal shortcuts\u003c/strong\u003e\u003c/summary\u003e\n\n**Grid Navigation**\n\n| Shortcut | Action |\n|---|---|\n| `←` `↑` `→` `↓` | Move keyboard focus across the grid |\n| `Enter` / `V` | Open focused item in Theater (Lightbox) |\n| `Home` / `End` | Jump to first / last item |\n| `PgUp` / `PgDn` | Scroll page rapidly |\n| `?` | Open Shortcuts Help panel |\n\n**Quick Rating**\n*(works on the focused grid item or the item open in Theater)*\n\n| Shortcut | Action |\n|---|---|\n| `1` to `5` | Rate media from 1 to 5 stars |\n| `0` | Clear your rating |\n\n**Theater (Lightbox)**\n\n| Shortcut | Action |\n|---|---|\n| `←` / `→` | Navigate previous / next media |\n| `/` | Open Quick Action Menu |\n| `H` | Toggle toolbar (clean view) |\n| `G` | Toggle Ratings and Comments panel |\n| `T` | Rotate media 90° |\n| `+` / `-` | Zoom in / out |\n| `0` | Reset zoom and rotation |\n| `S` | Download media |\n| `O` | Open full-res in new tab |\n| `/` | Quick Menu |\n| `Esc` | Close Theater |\n\n\u003c/details\u003e\n\n---\n\n### 4.3 Experimental Features\n\nThe [`/experiments`](experiments/) folder contains beta versions and hotfixes under active development.\n\nUse at your own risk. Always back up before testing.\n\n---\n\n### 4.4 Philosophy, Feedback \u0026 License\n\n**Philosophy**\n\nLocal-first. Privacy-first. Minimal dependencies. Cross-platform. Cross-device. No forced upgrades. No vendor lock-in.\n\n---\n\n**Contributing and Feedback**\n\nIssues, ideas, and pull requests are welcome.\n\n-   [Open an issue](../../issues)\n-   Fork, branch, PR\n\n---\n\n**License**\n\nMIT License. See [LICENSE](LICENSE)\n\n---\n\n\u003e ### 🎞️ **High-level video overview**\n\u003e\n\u003e \u003cdiv align=\"center\"\u003e\n\u003e   \u003ca href=\"https://smartgallerydam.com/smartgallery-dam.mp4\"\u003e\n\u003e     \u003cimg src=\"assets/video-concepts-readme-page.png\" width=\"550\" alt=\"Watch the video overview\"\u003e\n\u003e   \u003c/a\u003e\n\u003e   \u003cbr\u003e\n\u003e   \u003cem\u003eIf you have 6 minutes, watch this video to understand the concept and strategy behind SmartGallery DAM.\u003c/em\u003e\u003cbr\u003e\n\u003e   \u003cem\u003e(Click on the image to play the video)\u003c/em\u003e\n\u003e \u003c/div\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://smartgallerydam.com\"\u003e\u003cstrong\u003esmartgallerydam.com\u003c/strong\u003e\u003c/a\u003e · full documentation, wiki and feature reference\n  \u003cbr\u003e\u003cbr\u003e\n  \u003cem\u003eMade for the ComfyUI community and every digital creator who takes their work seriously.\u003c/em\u003e\n\u003c/p\u003e\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiagiomaf%2Fsmart-comfyui-gallery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbiagiomaf%2Fsmart-comfyui-gallery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbiagiomaf%2Fsmart-comfyui-gallery/lists"}