{"id":47606785,"url":"https://github.com/mooshieblob1/mooshieui","last_synced_at":"2026-05-20T01:12:46.206Z","repository":{"id":344789317,"uuid":"1183064071","full_name":"Mooshieblob1/MooshieUI","owner":"Mooshieblob1","description":"A front-end UI for ComfyUI made for beginner level users.","archived":false,"fork":false,"pushed_at":"2026-05-09T07:37:15.000Z","size":14804,"stargazers_count":100,"open_issues_count":15,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-09T08:43:05.934Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mooshieblob1.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","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},"funding":{"github":"Mooshieblob1"}},"created_at":"2026-03-16T08:33:49.000Z","updated_at":"2026-05-09T07:35:36.000Z","dependencies_parsed_at":"2026-04-22T04:01:08.869Z","dependency_job_id":null,"html_url":"https://github.com/Mooshieblob1/MooshieUI","commit_stats":null,"previous_names":["mooshieblob1/mooshieui"],"tags_count":99,"template":false,"template_full_name":null,"purl":"pkg:github/Mooshieblob1/MooshieUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mooshieblob1%2FMooshieUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mooshieblob1%2FMooshieUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mooshieblob1%2FMooshieUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mooshieblob1%2FMooshieUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mooshieblob1","download_url":"https://codeload.github.com/Mooshieblob1/MooshieUI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mooshieblob1%2FMooshieUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33043249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-04-01T19:30:54.334Z","updated_at":"2026-05-20T01:12:46.191Z","avatar_url":"https://github.com/Mooshieblob1.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Mooshieblob1"],"categories":[],"sub_categories":[],"readme":"# MooshieUI\n\n\u003e ⚠️ **Work in Progress** - MooshieUI is under active development. Some features are incomplete or may have rough edges. Contributions and feedback are welcome!\n\nA modern, beginner-friendly desktop frontend for [ComfyUI](https://github.com/comfyanonymous/ComfyUI). Built with **Svelte 5** + **Tauri** (Rust), MooshieUI hides ComfyUI's node-graph complexity behind a clean, intuitive interface - no workflow editing required.\n\n![License](https://img.shields.io/github/license/Mooshieblob1/MooshieUI?v=2)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/lib/assets/logo.png\" alt=\"Logo\" width=\"200\"\u003e\n\u003c/p\u003e\n\n![MooshieUI Screenshot](screenshot.avif)\n\n---\n\n## ✨ Features\n\n\u003e Features marked with ✅ are implemented. Features marked with 🔧 work but need polish.\n\n### 🎨 Three Generation Modes\n\n| Mode | Status | Description |\n|------|--------|-------------|\n| **Text to Image** | ✅ | Generate images from scratch using positive \u0026 negative prompts |\n| **Image to Image** | ✅ | Transform existing images with adjustable denoise strength |\n| **Inpainting** | ✅ | Selectively edit parts of images using a built-in canvas editor with mask painting |\n\nSwitch between modes with a single click - all settings carry over.\n\n### 🔧 Full Generation Controls\n\n- **Positive \u0026 Negative Prompts** - Multi-line text areas, manually resizable height\n- **Checkpoint Selector** - Searchable dropdown, auto-populated from ComfyUI, with recommended models (auto-download on selection with progress bars and file size display)\n- **VAE Selector** - Optional override (defaults to checkpoint's built-in VAE)\n- **LoRA Support** - Add unlimited LoRAs with independent model/CLIP strength sliders (0–2), per-LoRA enable/disable toggle, searchable dropdown, and active count badge\n- **Sampler \u0026 Scheduler** - All ComfyUI samplers and schedulers available\n- **Steps** - 1 to 150 (slider)\n- **CFG Scale** - 0 to 30 with 0.1 precision (number input + slider)\n- **Seed** - Fixed or random (-1 for new seed each generation)\n- **Batch Size** - Generate 1–8 images per prompt\n- **Denoise Strength** - 0 to 1 for img2img and inpainting modes\n\n### 📐 Smart Dimension Controls\n\n- **Aspect Ratio Presets** - 1:1, 4:3, 3:2, 16:9, 21:9, 3:4, 2:3, 9:16\n- **Custom Aspect Ratio** - Enter any width/height, ratio is maintained when adjusting resolution\n- **Swap Dimensions** - One-click width↔height swap\n- **Resolution Slider** - 64px to 2048px, automatically calculates dimensions from your aspect ratio\n\n### 🔍 Upscale (Tiled Diffusion)\n\nBuilt-in upscaling with **MultiDiffusion** tiled diffusion - the same approach used by SwarmUI. No slow tile-by-tile processing; all tiles are denoised simultaneously each step for seamless, high-quality results.\n\n#### Upscale Methods\n- **Model-based** - Uses dedicated upscale models (e.g., Omni-SR). Scale is determined by the model (2x, 4x, etc.)\n- **Algorithmic (Lanczos)** - Fast pixel-space upscaling with adjustable 1–4x scale\n\n#### Recommended Models (Auto-Download)\nWhen you select a recommended model that isn't installed, MooshieUI automatically downloads it to ComfyUI's `models/upscale_models/` directory:\n\n| Model | Scale | Size | Source |\n|-------|-------|------|--------|\n| **Omni 2x** (Recommended) | 2x | ~1.6 MB | [Acly/Omni-SR](https://huggingface.co/Acly/Omni-SR) |\n| **Omni 4x** (Recommended) | 4x | ~1.6 MB | [Acly/Omni-SR](https://huggingface.co/Acly/Omni-SR) |\n\nAny other upscale models you place in `models/upscale_models/` will also appear in the dropdown.\n\n#### Tiled Diffusion (Optional)\n- Toggle on/off per generation - recommended for large images and **required for Anima (COSMOS) models**\n- Adjustable tile size (256–2048px)\n- Uses cosine-feathered blending for seamless tile boundaries\n- Supports both **MultiDiffusion** and **SpotDiffusion** algorithms\n\n#### Guidance Nodes (Anti-Hallucination)\n- **Soft Guidance** (CFG Rescale) - toggle in Upscale Settings to reduce extra hands, objects, and other hallucinations at low denoise; adjustable multiplier (0.0–1.0, default 0.4)\n- **Smart Guidance** (Positive-Biased Adaptive) - toggle in Sampler Settings to bias the model toward positive conditioning across all passes\n- Custom ComfyUI nodes (`MooshieSoftGuidance`, `MooshieSmartGuidance`) auto-installed alongside tiled diffusion\n\n#### Upscale Sampler Controls\n- **Denoise** - 0 to 1 (lower = more detail preservation from original)\n- **Steps** - 1 to 50\n\n#### One-Click Upscale\nHover over any generated image to reveal an **Upscale** button - instantly upscale the last output without changing your settings.\n\n### 🖼️ Gallery\n\n- **Persistent Gallery** - All generated images are saved to disk and available across sessions\n- **Thumbnail Grid** - Responsive grid with sorting by date\n- **Lightbox** - Click any image to view full-size; scroll-wheel zoom at cursor, Escape or click-outside to close, double-click to reset zoom\n- **Image Management** - Rename, delete, copy to clipboard, and upscale from the gallery\n- **Generation Mode Labels** - Each image shows whether it was created via txt2img, img2img, or inpainting\n\n### � Compare Grid (XYZ Grid)\n\n- **Multi-cell comparison** - create a grid of cells in the Compare tab (bottom panel), each with its own generation parameters; tweak prompts, checkpoints, samplers, seeds, or any setting per cell\n- **Grid generation** - pressing Generate queues all cells sequentially with a shared random seed for consistent side-by-side comparison\n- **Auto-stitching** - completed grids are stitched into a single labelled image with per-cell annotations showing only what differs (e.g., \"blue eyes\" vs \"green eyes\") and a MooshieUI watermark\n- **Spreadsheet naming** - cells use A1/B1/C1 labels with position-stable colors\n- **Add/remove columns \u0026 rows** - new cells clone the adjacent neighbor for quick parameter variation\n\n### �📊 Real-Time Progress\n\n- **Live Preview** - See the image as it's being generated (latent previews streamed via WebSocket)\n- **Phase Labels** - \"Generating...\", \"Upscaling...\", or \"Preparing...\" with step counter\n- **Progress Bar** - Smooth animated bar (indigo for generation, emerald for upscale pass)\n- **Cancel Button** - Interrupt any generation in progress\n\n### 🌐 Internationalization (11 Languages)\n\n- **11 languages** - English, German, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian, Chinese (Simplified), and Chinese (Traditional)\n- **860+ translation keys** covering every UI string - generation controls, settings, setup wizard, canvas, model hub, compare grid, tooltips, and more\n- **Instant switching** in Settings → Appearance - no restart needed\n- **Full parity** - all keys present in all locales with native translations\n\n### 🏷️ Quality Tags\n\n- **Anima \u0026 Illustrious** - customizable positive/negative quality tags auto-injected into prompts\n- **Pony Diffusion** - auto-applied score-based quality tags (`score_9, score_8_up, score_7_up, source_anime`)\n- All customizable in Settings and persisted across sessions\n\n### 💾 Settings Persistence\n\nAll settings are automatically saved to disk and restored on next launch:\n- Generation mode, prompts, model selections\n- Sampler, scheduler, steps, CFG, seed, dimensions\n- All upscale settings (enabled, method, model, tiling, etc.)\n\n### 🖥️ Flexible Layout\n\n- **Three-panel layout** - Image settings (left), preview (center), model \u0026 sampler settings (right)\n- **Resizable panels** - Drag dividers between panels to adjust widths\n- **Resizable prompts** - Drag prompt text areas to adjust height\n\n### 🔌 Connection Management\n\n- **Auto-connect** to ComfyUI on startup\n- **Status indicator** - Green/red dot shows connection state with version number\n- **WebSocket streaming** - Real-time progress, previews, and completion events\n- Works with both local and remote ComfyUI instances\n- **Silent background process** - ComfyUI runs without any visible terminal windows (Windows)\n\n### 🧬 Smart Model Detection \u0026 Architecture Presets\n\n- **13 model architectures** - SD 1.5, SDXL, Illustrious/NoobAI, SD3/SD3.5, Flux, Pony Diffusion, AuraFlow, PixArt, HunyuanDiT, Stable Cascade, Kolors, Mugen (Flux2VAE SDXL), and Nanosaur (1.2B DiT)\n- **Auto-presets** - each architecture auto-applies optimal sampler, scheduler, steps, CFG, and resolution when selected\n- **Accelerated model detection** - models with \"turbo\", \"lightning\", \"lcm\", or \"hyper\" in the name get reduced steps (4–6), lower CFG, and appropriate settings\n- **Rectified flow scheduling** - SD3, Flux, AuraFlow, Mugen, and Nanosaur models automatically inject the correct ModelSampling node with architecture-specific shift values\n- **FluxGuidance** - Flux Dev models auto-inject a FluxGuidance node; Flux Schnell (guidance-distilled) is detected and skipped\n- **Hash-based identification** - Models are recognized by SHA256 hash (CivitAI AutoV2 format), not just filename - renamed files are still detected\n- **CivitAI integration** - Look up any model's metadata (name, version, preview images) via CivitAI's hash database\n- **Recommended models** - ΣIH-1.5 (~7.5 GB) and Anima Base v1.0 (~13 GB) auto-download on selection with real-time progress bars and file size display\n- **Mugen support** - SDXL models using the Flux2 VAE (128-channel latents) with rectified flow scheduling, auto-detected and routed through dedicated VAE conversion nodes\n- **Nanosaur support** - 1.2B DiT architecture with 96-channel VAE, custom ComfyUI nodes for model loading, text encoding, and VAE decode, auto-installed alongside MooshieUI's node pack\n\n---\n\n## 🏗️ Architecture\n\n```\nMooshieUI\n├── src/                    # Svelte 5 frontend (UI)\n│   ├── App.svelte          # Main app shell, gallery, WebSocket listeners, grid stitching\n│   ├── lib/\n│   │   ├── components/     # UI components\n│   │   │   ├── generation/ # Model selector, prompts, dimensions, upscale, compare grid\n│   │   │   ├── canvas/     # Inpainting canvas editor (Konva)\n│   │   │   ├── mask-editor/# Mask painting for inpainting\n│   │   │   ├── modelhub/   # CivitAI/HuggingFace model browser\n│   │   │   ├── downloads/  # Download progress manager\n│   │   │   ├── progress/   # Live preview and progress display\n│   │   │   ├── queue/      # Batch queue management\n│   │   │   ├── settings/   # Settings pages (paths, appearance, accessibility)\n│   │   │   ├── setup/      # Setup wizard with streaming installer\n│   │   │   ├── updater/    # In-app auto-update UI\n│   │   │   └── ui/         # Shared UI components (tooltips, etc.)\n│   │   ├── stores/         # Svelte 5 rune-based state ($state, $derived)\n│   │   ├── assets/         # Danbooru \u0026 Anima tag databases, logo\n│   │   ├── config/         # ControlNet presets\n│   │   ├── locales/        # 11 language translation files\n│   │   ├── types/          # TypeScript interfaces\n│   │   └── utils/          # Tauri API bridge (models, gallery, hashing, CivitAI)\n├── src-tauri/              # Rust/Tauri backend\n│   └── src/\n│       ├── commands/       # Tauri command handlers (API, config, server, WebSocket, workflow)\n│       ├── comfyui/        # ComfyUI API client, WebSocket, process management\n│       ├── setup.rs        # One-click installer (uv, Python, ComfyUI, PyTorch)\n│       ├── metadata.rs     # PNG metadata embedding (text chunk + stealth alpha)\n│       └── templates/      # Workflow builders (txt2img, img2img, inpainting, upscale, facefix, controlnet)\n└── comfyui-nodes/          # Custom ComfyUI nodes (auto-installed)\n    ├── nodes_tiled_diffusion.py  # MultiDiffusion \u0026 SpotDiffusion\n    ├── nodes_guidance.py         # Soft \u0026 Smart Guidance\n    ├── nodes_sdxl_flux2vae.py    # SDXL↔Flux VAE adapter (Mugen)\n    └── nanosaur_support/         # Nanosaur DiT model loader \u0026 VAE\n```\n\n**How it works:**\n1. User adjusts settings in the Svelte UI\n2. On \"Generate\", settings are sent to the Rust backend via Tauri `invoke()`\n3. Rust builds a ComfyUI workflow JSON from templates (no node graph exposed)\n4. Workflow is submitted to ComfyUI's `/prompt` API\n5. WebSocket streams progress/previews back to the UI in real-time\n\n---\n\n## 📦 Installation\n\n### One-Click Setup (Windows/Linux Releases)\n\nMooshieUI handles everything automatically on first launch:\n\n1. **Download** a release from [Releases](https://github.com/Mooshieblob1/MooshieUI/releases) (Windows/Linux artifacts)\n2. **Run the app** - the setup wizard will:\n  - Download [uv](https://github.com/astral-sh/uv) (fast Python package manager)\n  - Install Python 3.11 (isolated, won't affect your system)\n  - Download ComfyUI (latest from GitHub)\n  - Create a virtual environment\n  - Auto-detect your GPU (NVIDIA CUDA / AMD ROCm / Intel XPU / CPU)\n  - Install PyTorch with the right acceleration backend (including CUDA 13.0 for Blackwell GPUs)\n  - Install all ComfyUI dependencies\n  - Install MooshieUI's custom nodes\n3. **Start generating** - ComfyUI launches automatically\n\nThe installer shows real-time terminal output streamed as a matrix-style backdrop behind the setup UI, with per-step progress bars and a checklist so you always know what's happening. No separate terminal windows are opened.\n\n**No Python, no pip, no manual configuration required.** Everything is self-contained in the app's data directory.\n\n\u003e **Disk space:** ~5–10 GB (Python + PyTorch + ComfyUI). Installation takes 5–15 minutes depending on your internet connection.\n\n### macOS (Manual Build From Source)\n\nmacOS prebuilt release artifacts are currently disabled. On macOS, use a source build:\n\n**Prerequisites:**\n- [Node.js](https://nodejs.org/) 18+\n- [Rust](https://rustup.rs/) (latest stable)\n- Xcode Command Line Tools (`xcode-select --install`)\n- Tauri prerequisites - see [Tauri v2 docs](https://v2.tauri.app/start/prerequisites/)\n\n```bash\n# Clone the repository\ngit clone https://github.com/Mooshieblob1/MooshieUI.git\ncd MooshieUI\n\n# Install dependencies\nnpm install\n\n# Development mode\nnpm run tauri dev\n\n# Production build\nnpm run tauri build\n```\n\nAfter first launch, the setup wizard still installs ComfyUI/Python/PyTorch automatically.\n\n### Development Setup (All Platforms)\n\nIf you want to build from source:\n\n**Prerequisites:**\n- [Node.js](https://nodejs.org/) 18+\n- [Rust](https://rustup.rs/) (latest stable)\n- Tauri prerequisites - see [Tauri v2 docs](https://v2.tauri.app/start/prerequisites/)\n\n```bash\n# Clone the repository\ngit clone https://github.com/Mooshieblob1/MooshieUI.git\ncd MooshieUI\n\n# Install frontend dependencies\nnpm install\n\n# Run in development mode (hot-reload)\nnpm run tauri dev\n\n# Build for production\nnpm run tauri build\n```\n\nThe app will run the one-click setup wizard on first launch - no manual ComfyUI installation needed.\n\n---\n\n## 🧩 Custom Nodes\n\nMooshieUI ships with custom ComfyUI nodes that are auto-installed into ComfyUI's `custom_nodes/` directory.\n\n### Tiled Diffusion (`nodes_tiled_diffusion.py`)\n\n### MultiDiffusion\n*Bar-Tal et al., \"MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation\", ICML 2023*\n\n- Splits the latent into overlapping tiles at each denoising step\n- All tiles are denoised in parallel (not one-by-one)\n- Results are blended using cosine (Hann window) feathering\n- Seamless output with no visible tile boundaries\n\n### SpotDiffusion\n*Ding et al., 2024*\n\n- Applies random circular shifts before non-overlapping tiling\n- Even faster than MultiDiffusion (no overlap computation)\n- Seams are eliminated by randomization across many steps\n\nBoth methods:\n- Work with all model architectures (SD 1.5, SDXL, Flux, COSMOS/Anima)\n- Automatically detect the model's latent downscale ratio\n- Support ControlNet (proportional cropping/shifting per tile)\n- Handle inpainting conditioning (c_concat)\n\n### Guidance Nodes (`nodes_guidance.py`)\n\n**MooshieSoftGuidance** - CFG Rescale for upscale passes. Rescales classifier-free guidance to reduce hallucinated details (extra hands, objects) that appear at low denoise strengths. Adjustable multiplier (0.0 = off, 0.4 = recommended for upscale).\n\n**MooshieSmartGuidance** - Positive-Biased Adaptive guidance. Patches the model's forward pass to bias toward positive conditioning, reducing negative prompt interference. Applied globally across all generation passes.\n\n### SDXL↔Flux VAE Adapter (`nodes_sdxl_flux2vae.py`)\n\nPatches the SDXL model forward pass to convert between packed (128-channel) Flux2 latents and standard (32-channel) SDXL latents. Used automatically for **Mugen** models that pair an SDXL UNet with the Flux VAE for higher-fidelity decoding.\n\n### Nanosaur Support (`nanosaur_support/`)\n\nCustom ComfyUI nodes for the **Nanosaur** 1.2B DiT architecture:\n- **NanoSaurModelLoader** - loads the DiT transformer with correct configuration\n- **NanoSaurTextEncoder** - tokenizer and text encoder adapted for Nanosaur's conditioning format\n- **NanoSaurVAEDecode** - decodes 96-channel latents through Nanosaur's custom VAE\n- RGB factors computed from the model's VAE for accurate latent previews\n\n### Face Fix (`mooshie_nodes.py`)\n\n**MooshieFaceFix** - lightweight face detection and re-denoising using YOLOv8 (via the `ultralytics` Python package). Detects faces, crops them with configurable padding, re-denoises at higher resolution, then composites back using smooth cosine-falloff blending. No Impact Pack dependency - bundled as a self-contained node with auto-download of detection models (`.pt` PyTorch weights).\n\n---\n\n## 🚧 Roadmap\n\n### Done\n- [x] **Image upload** for img2img and inpainting modes\n- [x] **Inpainting canvas** - paint masks directly on images in the UI\n- [x] **Queue management page** - view and cancel queued generations\n- [x] **Settings page** - configure ComfyUI connection, paths, defaults, and extra args\n- [x] **Gallery upscale button** - upscale any image from the gallery grid or lightbox\n- [x] **Anima Base v1.0 support** - auto-download split model (diffusion + CLIP + VAE), quality prompt injection, optimized defaults\n- [x] **ΣIH-1.5 support** - auto-download checkpoint + VAE on selection, with file size display\n- [x] **CFG++ auto-detect** - soft-sets CFG to 1.4 when selecting CFG++ samplers\n- [x] **Info tooltips** - hover (?) icons explain technical settings in plain English\n- [x] **Collapsible settings sections** - with search bar to filter settings\n- [x] **Live generation preview** - latent previews streamed via WebSocket during KSampler\n- [x] **Phase-aware progress** - shows \"Generating...\" / \"Upscaling...\" / \"Preparing...\" with step counters\n- [x] **5D latent tiled diffusion** - MultiDiffusion/SpotDiffusion compatible with Anima (COSMOS) models\n- [x] **Lightbox zoom \u0026 dismiss** - scroll-wheel zoom at cursor, Escape/click-outside to close, pan with left or middle mouse\n- [x] **Clipboard copy as file** - copies gallery images as file references (preserves format \u0026 metadata)\n- [x] **Windows \u0026 Linux builds** - cross-platform CI releases (Windows .msi/.exe, Linux .deb/.AppImage)\n- [x] **Hash-based model detection** - SHA256/AutoV2 hash identification with CivitAI API integration, models recognized even if renamed\n- [x] **Installer UX overhaul** - streamed terminal backdrop, per-step progress bars, download progress with bytes/total, no separate terminal windows\n- [x] **Persistent gallery** - images saved to disk across sessions with rename, delete, and management\n- [x] **Gallery boards** - organize images into named boards/folders\n- [x] **Version display** - app version shown in sidebar below connection status\n- [x] **Download progress** - real-time progress bars with file size for all model downloads (checkpoints, VAEs, upscale models)\n- [x] **Drag \u0026 drop** - drop images and masks directly into img2img/inpainting inputs\n- [x] **Image metadata (SwarmUI-compatible)** - embed generation params as SwarmUI JSON into PNG text chunks, read them in lightbox with resizable side panel, backward-compatible with A1111 format\n- [x] **Prompt history \u0026 favorites** - auto-saves generated prompts with quick reload and starring\n- [x] **Style presets (Fooocus-style)** - one-click style modifiers for beginner-friendly prompting\n- [x] **Shared model directory** - point to an external/shared models folder from settings\n- [x] **Model-specific presets** - auto-applies defaults based on detected model architecture\n- [x] **Model Hub** - browse CivitAI models with image previews and metadata directly in the app; download with one click; HuggingFace direct URL support; NSFW content filtering with blurred badges; API key setup with guided instructions; expanded base model filters (NoobAI, Pony, Illustrious, SD 3.5, Flux, etc.)\n- [x] **ModelSpec support** - reads Stability AI ModelSpec metadata from safetensors headers; displays model title, author, architecture, resolution, trigger phrases (click to add to prompt), tags, and usage hints in the model selector\n- [x] **Native clipboard** - copies images via native OS clipboard (Wayland `wl-copy` and X11 `xclip` with automatic detection)\n- [x] **Auto-update** - check for and apply MooshieUI updates in-app\n- [x] **ControlNet support** - depth, canny, pose, and other control methods with preset-based and custom modes, image upload/paste/drag-drop, preprocessor installation, strength/start/end controls (SD 1.5, SDXL, Illustrious/NoobAI, Flux, SD3.5)\n- [x] **Dark \u0026 light mode** - toggle between dark and light themes in settings\n- [x] **Draggable two-column layout** - drag sections between left/right columns and reorder them; layout persists across sessions\n- [x] **Manual ComfyUI start** - optional toggle to start ComfyUI manually instead of on app launch\n- [x] **Movable installation** - relocate the ComfyUI data directory to another drive from settings\n- [x] **Face Fix (FaceDetailer)** - built-in lightweight face detection and re-denoising using YOLOv8, bundled as a custom node (no Impact Pack dependency); configurable denoise, steps, guide size, and detector model with auto-download\n- [x] **Batch queue** - queue multiple generations with different settings\n- [x] **Streaming final outputs** - final PNGs stream over WebSocket via `MooshieSaveImage` (no output fetch disk round-trip)\n- [x] **16-bit output mode** - selectable 8-bit/16-bit PNG output in generation settings\n- [x] **Metadata modes** - `Text Chunk`, `Stealth Alpha`, and `Both` with 16-bit compatibility upgrade to `Both`\n- [x] **Metadata reuse actions** - lightbox actions for `Reuse Settings`, `Remix`, and `Reuse Seed`\n- [x] **Preview tips carousel** - idle preview area shows rotating, auto-cycling tips with manual navigation\n- [x] **Metadata drag-and-drop import** - drag images onto generation sections to import specific settings, or drop on preview to apply all; Ctrl+V paste supported; auto-strips duplicate quality tags\n- [x] **Face fix auto-setup** - auto-downloads detection model and installs ultralytics on first use\n- [x] **Seed recall** - toggling off random seed recalls the last generated seed\n\n- [x] **Localization** - 11 languages with 860+ keys, full parity across all locales, instant switching\n- [x] **Guidance nodes** - Soft Guidance (CFG Rescale) and Smart Guidance (Positive-Biased Adaptive) for hallucination-free upscaling\n- [x] **13 model architectures** - auto-detection with optimal presets for SD1.5, SDXL, Illustrious, SD3, Flux, Pony, AuraFlow, PixArt, HunyuanDiT, Stable Cascade, Kolors, Mugen, Nanosaur\n- [x] **Accelerated model detection** - Turbo/Lightning/LCM/Hyper variants auto-detected with reduced steps and CFG\n- [x] **Rectified flow scheduling** - SD3, Flux, AuraFlow, Mugen, Nanosaur, Stable Cascade auto-inject correct ModelSampling nodes\n- [x] **FluxGuidance** - automatic guidance node injection for Flux Dev (skipped for Schnell)\n- [x] **Pony quality tags** - auto-applied score-based tags, customizable in Settings\n- [x] **Flux \u0026 SD3 ControlNet** - presets for XLabs-AI and Stability official controlnets\n- [x] **BF16 VAE auto-detection** - Blackwell GPUs auto-apply `--bf16-vae` to prevent fp16 overflow\n- [x] **NaN guard** - detects and clamps NaN values in VAE output to prevent black images\n- [x] **CUDA 13.0 for Blackwell** - auto-detects compute capability ≥ 12.0 and installs cu130 PyTorch\n- [x] **VRAM flush on interrupt** - calls `/free` endpoint after cancel to prevent corrupted state\n- [x] **Wayland AppImage fix** - auto-detects Wayland sessions and preloads libwayland for WebKitGTK\n- [x] **AMD multi-GPU fix** - correct ROCm architecture detection for RDNA 4 on mixed iGPU/dGPU systems\n- [x] **Gallery import** - import image output folders from ComfyUI, SwarmUI, or any other tool with duplicate detection\n- [x] **Export diagnostic logs** - single-file export with ComfyUI log, GPU info, and app configuration\n- [x] **SwarmUI metadata compatibility** - auto-strips inline syntax from imported SwarmUI image metadata\n- [x] **Info tips toggle** - hide/show tooltip icons via Settings → Accessibility\n- [x] **Native clipboard image paste** - reads images directly from OS clipboard via Tauri command\n- [x] **Compare grid** - XYZ grid comparison with per-cell parameters, shared seed generation, auto-stitching with diff labels and watermark\n- [x] **Mugen support** - Flux2VAE SDXL architecture with 128-channel latents and rectified flow scheduling\n- [x] **Nanosaur support** - 1.2B DiT with 96-channel VAE, custom nodes for model loading and inference\n- [x] **Face fix compositing fix** - smooth cosine falloff blending replaces hard-cutoff mask compositing\n- [x] **Scroll-to-adjust sliders** - click-to-capture scroll wheel for all range inputs with glow indicator\n- [x] **Artist Gallery** - portable module for browsing Anima-preview artist tags with persistent favorites, CDN previews, and category filtering\n- [x] **Model Manager** - manage local model files directly from Settings (move, delete, list)\n- [x] **Generation Toast Notifications** - get notified when generation finishes while away, supported on desktop and mobile UI\n- [x] **Mobile UI** - dedicated bottom-sheet mobile shell for browser sessions\n\n### To Do\n- [ ] **Theme customization** - custom accent colors and themes\n- [ ] **Video generation** - AnimateDiff / COSMOS video workflows\n- [ ] **Training UI** - LoRA training from within the app\n- [ ] **Plugin system** - extend MooshieUI with custom panels and features\n- [x] **Cloud rendering** - the LAN/browser mode allows any device on the network to submit generations to the host GPU; combined with Docker deployment, this effectively enables remote/cloud GPU offloading without a dedicated cloud rendering backend\n- [x] **PWA Support** - MooshieUI ships a built-in web server with full browser-mode support; users can self-host via Docker (`docker-compose.yml` included) and access the UI from any browser, functioning as a hosted web app with multi-user accounts and per-user galleries\n\n---\n\n## 📋 Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full version history.\n\n---\n\n## ️ Tech Stack\n\n| Layer | Technology |\n|-------|------------|\n| Frontend | Svelte 5, TypeScript 5, Tailwind CSS 4 |\n| Desktop | Tauri v2 (Rust) |\n| State | Svelte 5 runes (`$state`, `$derived`) - class-based singleton stores |\n| Canvas | Konva + svelte-konva (inpainting editor, mask painting) |\n| Persistence | `@tauri-apps/plugin-store` (JSON) |\n| Backend API | ComfyUI REST + WebSocket (proxied via Rust) |\n| HTTP Client | reqwest (Rust) - shared connection pool |\n| WebSocket | tokio-tungstenite → Tauri event bridge |\n| Inference | ONNX Runtime (`ort` crate) - WD EVA02 image tagger (Describe feature) |\n| Model API | CivitAI REST API (hash-based model lookup), HuggingFace |\n| Autocomplete | Danbooru + Anima tag databases (~100k tags) |\n| i18n | 11 languages, 860+ keys, runtime switching |\n| Styling | Tailwind CSS with neutral/indigo dark theme |\n| Build | Vite 6 + `@sveltejs/vite-plugin-svelte` |\n\n---\n\n## 🔒 Security\n\nThis repository runs automated **GlassWorm resistance checks** on every push and pull request to detect a class of supply-chain attacks that use invisible Unicode variation-selector characters to embed hidden payloads in source files, combined with force-pushed commits whose author/committer timestamps have been tampered with to conceal the injection.\n\n### What is checked\n\n| Check | Scope | Details |\n|-------|-------|---------|\n| Marker variable | Full repo | Detects the known GlassWorm beacon string |\n| Unicode steganography | `.py .js .ts .svelte .rs` | Scans for codepoints U+FE00–FE0F and U+E0100–E01EF (zero-width variation selectors used to encode payloads) |\n| Git date tampering | Full history | Flags any commit where the committer timestamp is more than 1 hour ahead of the author timestamp - a sign of force-pushed history rewriting |\n| Obfuscated `eval()` | `.py .js .ts .svelte` | Detects `eval()` calls whose argument contains `decode`, `atob`, `fromCharCode`, `Buffer.from`, or `base64` - the execution pattern used by the Unicode loader |\n\nThe CI workflow (`.github/workflows/glassworm-scan.yml`) runs all four checks and **blocks merges** if any check fails.\n\n### Local pre-commit hook\n\nContributors should activate the same checks locally so issues are caught before they reach CI:\n\n```bash\nbash scripts/setup-hooks.sh\n```\n\nThis sets `core.hooksPath` to `.githooks` and makes the pre-commit script executable. The hook runs automatically on every `git commit` and blocks the commit with a clear error message if anything suspicious is found.\n\n---\n\n## 📄 License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n---\n\n## 🙏 Acknowledgments\n\n### Core Infrastructure\n- [ComfyUI](https://github.com/comfyanonymous/ComfyUI) - The powerful node-based Stable Diffusion backend that MooshieUI wraps\n- [Tauri](https://tauri.app/) - Lightweight, secure desktop app framework (Rust + WebView)\n- [Svelte](https://svelte.dev/) - Reactive UI framework with rune-based state management\n- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework\n\n### AI Models \u0026 Research\n- **ΣIH** - Illustrious-family checkpoint with curated defaults, auto-download support\n- **Anima (COSMOS)** - Breakthrough anime model with 5D latent space, split model loading (diffusion + CLIP + VAE), custom quality tags\n- **Nanosaur** - 1.2B DiT architecture with 96-channel VAE; custom ComfyUI nodes for model loading, text encoding, and inference\n- **Mugen** - SDXL models using Flux2 VAE (128-channel latents) with rectified flow scheduling\n- [OmniSR](https://huggingface.co/Acly/Omni-SR) - Recommended lightweight upscale models (2x/4x) by Acly\n- [YOLOv8](https://docs.ultralytics.com/) - Face detection model used by MooshieFaceFix via the `ultralytics` Python package (`.pt` weights)\n\n### Research Papers\n- Bar-Tal et al., \"MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation\" (ICML 2023) - Tiled diffusion algorithm\n- Ding et al., \"SpotDiffusion\" (2024) - Fast tiled diffusion variant using random circular shifts\n\n### APIs \u0026 Data\n- [CivitAI](https://civitai.com/) - Model hash database, metadata API, and model marketplace\n- [Danbooru](https://danbooru.donmai.us/) - Tag database used for prompt autocomplete\n- [HuggingFace](https://huggingface.co/) - Model hosting and direct download support\n\n### Frontend Libraries\n- [Konva](https://konvajs.org/) + [svelte-konva](https://github.com/konvajs/svelte-konva) - HTML5 Canvas framework for the inpainting editor and mask painting\n- [SortableJS](https://sortablejs.github.io/Sortable/) - Drag-and-drop reordering for the two-column layout\n- [marked](https://marked.js.org/) - Markdown rendering for release notes display in-app\n- [ntc-ts](https://www.npmjs.com/package/ntc-ts) - Nearest color name lookup\n\n### Rust Crates\n- [reqwest](https://docs.rs/reqwest) - HTTP client for ComfyUI API and model downloads\n- [tokio-tungstenite](https://docs.rs/tokio-tungstenite) - WebSocket client for real-time progress streaming\n- [ort](https://docs.rs/ort) - ONNX Runtime bindings for WD EVA02 tagger inference (Describe feature)\n- [image](https://docs.rs/image) - Image processing (PNG, JPEG, WebP)\n- [serde](https://serde.rs/) / [serde_json](https://docs.rs/serde_json) - Serialization for ComfyUI workflow JSON and config persistence\n\n### Tauri Plugins\n- `@tauri-apps/plugin-store` - JSON key-value persistence for settings\n- `@tauri-apps/plugin-updater` - In-app auto-update with signature verification\n- `@tauri-apps/plugin-fs` - Native filesystem access for gallery and model management\n- `@tauri-apps/plugin-dialog` - Native file/folder picker dialogs\n- `@tauri-apps/plugin-clipboard-manager` - Native clipboard operations (copy images as files)\n- `@tauri-apps/plugin-shell` - Subprocess management for ComfyUI process lifecycle\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmooshieblob1%2Fmooshieui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmooshieblob1%2Fmooshieui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmooshieblob1%2Fmooshieui/lists"}