From 2c6ff8759253d5e35bd708ac367299c8145bcd46 Mon Sep 17 00:00:00 2001 From: JT Date: Sun, 19 Apr 2026 13:23:15 -0700 Subject: [PATCH 1/7] Merge pull request #1239 from ionite34/fix/civit-reliability-and-swarm-settings Improve CivitAI browser resilience and stop overwriting SwarmUI user settings (cherry picked from commit 3a9a8a307737bf43250deb2906cdfe49de98e528) # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 126 +++++++++++++ Directory.Packages.props | 4 +- .../Services/CivitBaseModelTypeService.cs | 168 +++++++++++++++--- .../CheckpointBrowserCardViewModel.cs | 2 +- .../CivitAiBrowserViewModel.cs | 10 +- .../CivitDetailsPageViewModel.cs | 8 +- .../CheckpointFileViewModel.cs | 14 +- .../Api/CivitCompatApiManager.cs | 53 +++++- StabilityMatrix.Core/Api/ICivitApi.cs | 3 + .../Helper/CivitaiUrlHelper.cs | 44 +++++ .../Models/Api/CivitEnumsResponse.cs | 12 ++ .../Models/Packages/InvokeAI.cs | 4 +- .../Models/Packages/StableSwarm.cs | 76 ++++---- 13 files changed, 449 insertions(+), 75 deletions(-) create mode 100644 StabilityMatrix.Core/Helper/CivitaiUrlHelper.cs create mode 100644 StabilityMatrix.Core/Models/Api/CivitEnumsResponse.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index e572d7a75..0ce4fe0f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,132 @@ All notable changes to Stability Matrix will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). +<<<<<<< HEAD +======= +## v2.16.0-pre.1 +### Added +- Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL +### Changed +- The CivitAI base model type filter now uses CivitAI's official `/api/v1/enums` endpoint, with fallbacks to the previous technique and a built-in list, so the filter stays populated even if the CivitAI response format changes or the service is unreachable +### Fixed +- Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out +- Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template + +## v2.16.0-dev.3 +### Added +- Added enable/disable toggle for environment variables in Settings, allowing variables to be temporarily disabled without deleting them +- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance +- Added notification system with localizable banner and markdown detail dialog UI +- Added warning in data directory selector when a OneDrive folder is selected +- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b! +- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault! +- Added retry button to failed downloads - thanks to @NeuralFault! +- Added new Membership support in Account Settings with Patreon migration prompt +### Changed +- Improved safetensor checkpoint classification to correctly detect UNet-only models for Wan Video, HiDream, Z-Image, Hunyuan3D, and diffusers-format Flux architectures, ensuring they are routed to the DiffusionModels folder +- GGUF checkpoint downloads now go directly to the DiffusionModels folder instead of StableDiffusion +- Configured portable Git to suppress detached HEAD advice messages +- Settings file saves are now atomic to prevent corruption from interrupted writes +- Updated torch indexes for A1111, ComfyUI, InvokeAI, and Forge-based UIs to rocm7.2 / cu128 depending on GPU - thanks to @NeuralFault! +- Replaced the "Become a Patron" footer button with "Support Us", linking to the new direct Lykos support page at lykos.ai/membership +- Updated the prompt dialog shown when enabling features like Accelerated Model Discovery to use Lykos accounts instead of Patreon linking +- Moved the Patreon connection in Account Settings to a new "Legacy Connections" section, only shown for users with an existing Patreon link +- Localized previously hardcoded strings on the Account Settings page (menu items, descriptions, section headers) and added Japanese, Korean, German, and French translations +### Fixed +- Fixed the Package Manager "Add Package" teaching tip opening inopportunely while packages were still loading or after opening the add-package dialog +- Fixed downloaded checkpoint going to StableDiffusion folder when a saved download preference existed, even for GGUF files that should always go to DiffusionModels +- Fixed potential crash when adding metadata to malformed or non-PNG image data in Inference +- Fixed non-Latin-1 characters (e.g. Japanese, Chinese, Korean, emoji) in image generation parameters being stored in PNG tEXt chunks, violating the PNG specification and causing character corruption (mojibake) in standard-compliant parsers. Non-Latin-1 content now uses spec-compliant iTXt chunks with proper UTF-8 encoding ([#1535](https://github.com/LykosAI/StabilityMatrix/issues/1535)) +- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers. +- Fixed bold text not rendering in markdown dialogs on Windows 11 due to Avalonia 11.3.x variable font regression with Segoe UI Variable Text +- Fixed Japanese text appearing compressed/squished in markdown dialogs by ensuring the bundled NotoSansJP font is used for CTextBlock rendering +- Fixed ContentDialog title and buttons not using the correct font for Japanese locale (NotoSansJP) when shown as overlay +- Added missing `CBold` and `CItalic` inline styles to the markdown style sheet +- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop +- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain +- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault! +- Fixed model downloads failing on VPN connections - thanks to @NeuralFault! +- Fixed [#1598](https://github.com/LykosAI/StabilityMatrix/issues/1598) - download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent +- Fixed [#1597](https://github.com/LykosAI/StabilityMatrix/issues/1597) - reForge launch failing due to setuptools version +- Fixed [#1596](https://github.com/LykosAI/StabilityMatrix/issues/1596) - package installs and managed embedded Python startup being poisoned by inherited shell Python activation variables such as `PYTHONHOME`, `PYTHONPATH`, `VIRTUAL_ENV`, and Conda environment variables +- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets +- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window +- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord! +### Supporters +#### 🌟 Visionaries +A heartfelt thank you to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit** - every feature, fix, and late-night breakthrough in this release carries your fingerprints. A huge welcome to our newest Visionaries **Droolguy** and **snotty** (leveling up from the Pioneer ranks!), a warm welcome back to longtime Visionary **Ibixat**, and an equally huge welcome to **LG**, making their Stability Matrix debut straight at the Visionary tier! You're the reason we can keep building bold things - and an extra-special thank you to everyone now supporting us directly through our new platform. Your trust in this next chapter means the world! + +## v2.16.0-dev.2 +### Added +- Added Regional Prompting addon to Inference - paint detailed masks to apply different prompts, strengths, and settings to specific regions of your image + - Multi-layer mask editor with Photoshop-style interface for managing layers with independent masks, prompts, colors, and opacity + - Professional brush tools: freehand brush/eraser with pressure sensitivity, rectangle/ellipse shapes with fill/stroke modes, paint bucket flood fill + - Brush feathering/softness control for smooth, blended mask edges (0 = hard edge, 1 = soft/blurred) + - Per-layer prompt and strength controls, export/import masks as PNG, duplicate layers, image reference layers for tracing + - GPU-accelerated rendering with compact gzip-compressed metadata serialization +- Added new Model Picker dialog for Inference with grid/list views, search, filtering, and NSFW overlay +- Added browse buttons to all model dropdowns in Inference (Model, Refiner, VAE, Text Encoders, CLIP Vision) +- Added inline search box to model combo box dropdowns with fuzzy matching +- Added NVIDIA driver version warning when launching ComfyUI with CUDA 13.0 (cu130) and driver versions below 580.x +- Added legacy Python warning when launching InvokeAI installations using Python 3.10.11 +- Added Tiled VAE Decode to the Inference video workflows - thanks to @NeuralFault! +- Added recoverable error dialog for UI thread exceptions, with option to continue instead of exiting +### Changed +- Disabled update checking for legacy InvokeAI installations using Python 3.10.11 +- Hide rating stars in the Civitai browser page if no rating is available +- Updated uv to v0.9.30 +- Updated PortableGit to v2.52.0.windows.1 +- Updated Sage/Triton/Nunchaku installers to use GitHub API to fetch latest releases +- Updated ComfyUI installations and updates to automatically install ComfyUI Manager +- Updated gfx110X Windows ROCm nightly index - thanks to @NeuralFault! +- Updated ComfyUI-Zluda install to more closely match the author's intended installation method - thanks to @NeuralFault! +- Updated Forge Classic installs/updates to use the upstream install script for better version compatibility with torch/sage/triton/nunchaku +### Fixed +- Fixed parsing of escape sequences in Inference such as `\\` +- Fixed batch notification firing when only one image is generated +- Fixed [#1546](https://github.com/LykosAI/StabilityMatrix/issues/1546), [#1541](https://github.com/LykosAI/StabilityMatrix/issues/1541) - "No module named 'pkg_resources'" error when installing Automatic1111/Forge/reForge packages +- Fixed [#1545](https://github.com/LykosAI/StabilityMatrix/issues/1545), [#1518](https://github.com/LykosAI/StabilityMatrix/issues/1518), [#1513](https://github.com/LykosAI/StabilityMatrix/issues/1513), [#1488](https://github.com/LykosAI/StabilityMatrix/issues/1488) - Forge Neo update breaking things +- Fixed [#1529](https://github.com/LykosAI/StabilityMatrix/issues/1529) - "Selected commit is null" error when installing packages and rate limited by GitHub +- Fixed [#1525](https://github.com/LykosAI/StabilityMatrix/issues/1525) - Crash after downloading a model +- Fixed [#1523](https://github.com/LykosAI/StabilityMatrix/issues/1523), [#1499](https://github.com/LykosAI/StabilityMatrix/issues/1499), [#1494](https://github.com/LykosAI/StabilityMatrix/issues/1494) - Automatic1111 using old stable diffusion repo +- Fixed [#1505](https://github.com/LykosAI/StabilityMatrix/issues/1505) - incorrect port argument for Wan2GP +- Possibly fix [#1502](https://github.com/LykosAI/StabilityMatrix/issues/1502) - English fonts not displaying correctly on Linux in Chinese environments +- Fixed [#1476](https://github.com/LykosAI/StabilityMatrix/issues/1476) - Incorrect shared output folder for Forge Classic/Neo +- Fixed [#1466](https://github.com/LykosAI/StabilityMatrix/issues/1466) - crash after moving portable install +- Fixed [#1445](https://github.com/LykosAI/StabilityMatrix/issues/1445) - Linux app updates not actually updating - thanks to @NeuralFault! +### Supporters +#### 🌟 Visionaries +Huge shoutout to our amazing Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your continued support fuels every new feature and improvement in Stability Matrix. We couldn't do it without you - thank you for believing in what we're building! + +## v2.16.0-dev.1 +### Added +#### New Feature: πŸ§ͺ Image Lab - Conversational Image Generation for ComfyUI +- We've added a brand new conversational interface for image generation! Image Lab lets you iterate on images naturally through chat, rather than just one-off prompts. + - Local-First Power: Native support for Flux Kontext and Qwen Image Edit running entirely locally via your ComfyUI backend. + - Smart Setup: Stability Matrix automatically detects and helps you download the specific models and LoRAs needed for these local workflows. + - Interactive Tools: Drag-and-drop image inputs, use the built-in annotation tool to draw on images, and keep persistent conversation history. + - Cloud Option: Includes optional support for Nano Banana (Gemini 3 Pro/2.5) for users who want to leverage external reasoning models. +- Added new package - [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) +- Added [Stable Diffusion WebUI Forge - Neo](https://github.com/Haoming02/sd-webui-forge-classic/tree/neo) as a separate package for convenience +- Added Intel GPU support for ComfyUI +- Added "Run Python Command" option to the package card's 3-dots menu for running arbitrary Python code in the package's virtual environment +- Added togglable `--uv` argument to the SD.Next launch options +- Added Tiled VAE decoding as an Inference addon thanks to @NeuralFault! +### Changed +- Moved the original Stable Diffusion WebUI Forge to the "Legacy" packages tab due to inactivity +- Updated to cu130 torch index for ComfyUI installs with Nvidia GPUs +- Consolidated and fixed AMD GPU architecture detection +- Updated SageAttention installer to latest v2.2.0-windows.post4 version +- Video files can now be opened directly from the Output browser +- Videos will now appear with thumbnails in the Output browser +### Fixed +- Fixed [#1450](https://github.com/LykosAI/StabilityMatrix/issues/1450) - Older SD.Next not launching due to forced `--uv` argument +- Fixed duplicate custom node installations when installing workflows from the Workflow Browser - thanks again to @NeuralFault! +### Supporters +#### 🌟 Visionaries +A massive thank you to our esteemed Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity is the powerhouse behind Stability Matrix, enabling us to keep building and refining with confidence. We are truly grateful for your partnership! + +>>>>>>> 3a9a8a30 (Merge pull request #1239 from ionite34/fix/civit-reliability-and-swarm-settings) ## v2.15.7 ### Added - Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance diff --git a/Directory.Packages.props b/Directory.Packages.props index 164562047..14459b259 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -24,7 +24,7 @@ - + @@ -133,4 +133,4 @@ - \ No newline at end of file + diff --git a/StabilityMatrix.Avalonia/Services/CivitBaseModelTypeService.cs b/StabilityMatrix.Avalonia/Services/CivitBaseModelTypeService.cs index bf9ef25e3..6f9c5ca29 100644 --- a/StabilityMatrix.Avalonia/Services/CivitBaseModelTypeService.cs +++ b/StabilityMatrix.Avalonia/Services/CivitBaseModelTypeService.cs @@ -18,6 +18,65 @@ ILiteDbContext dbContext { private const string CacheId = "BaseModelTypes"; private static readonly TimeSpan CacheExpiration = TimeSpan.FromHours(24); + private const string LegacyBaseModelListProbe = "gimmethelist"; + private static readonly IReadOnlyList KnownVisibleBaseModelTypes = + [ + "Anima", + "AuraFlow", + "Chroma", + "CogVideoX", + "Flux.1 D", + "Flux.1 Kontext", + "Flux.1 Krea", + "Flux.1 S", + "Flux.2 D", + "Flux.2 Klein 4B", + "Flux.2 Klein 4B-base", + "Flux.2 Klein 9B", + "Flux.2 Klein 9B-base", + "Grok", + "HiDream", + "Hunyuan 1", + "Hunyuan Video", + "Illustrious", + "Kolors", + "LTXV", + "LTXV 2.3", + "LTXV2", + "Lumina", + "Mochi", + "NoobAI", + "Other", + "PixArt E", + "PixArt a", + "Pony", + "Pony V7", + "Qwen", + "Qwen 2", + "SD 1.4", + "SD 1.5", + "SD 1.5 Hyper", + "SD 1.5 LCM", + "SD 2.0", + "SD 2.1", + "SDXL 1.0", + "SDXL Hyper", + "SDXL Lightning", + "Upscaler", + "Wan Image 2.7", + "Wan Video 1.3B t2v", + "Wan Video 14B i2v 480p", + "Wan Video 14B i2v 720p", + "Wan Video 14B t2v", + "Wan Video 2.2 I2V-A14B", + "Wan Video 2.2 T2V-A14B", + "Wan Video 2.2 TI2V-5B", + "Wan Video 2.5 I2V", + "Wan Video 2.5 T2V", + "Wan Video 2.7", + "ZImageBase", + "ZImageTurbo", + ]; /// /// Gets the list of base model types, using cache if available and not expired @@ -39,15 +98,11 @@ public async Task> GetBaseModelTypes(bool forceRefresh = false, boo { if (civitBaseModels.Count <= 0) { - var baseModelsResponse = await civitApi.GetBaseModelList(); - var jsonContent = await baseModelsResponse.Content.ReadAsStringAsync(); - var baseModels = JsonNode.Parse(jsonContent); + civitBaseModels = + await TryGetBaseModelsFromEnumsEndpoint() ?? await TryGetLegacyBaseModelList() ?? []; - var innerJson = baseModels?["error"]?["message"]?.GetValue(); - var jArray = JsonNode.Parse(innerJson).AsArray(); - var baseModelValues = jArray[0]?["errors"]?[0]?[0]?["values"]?.AsArray(); - - civitBaseModels = baseModelValues?.GetValues().ToList() ?? []; + civitBaseModels = + civitBaseModels.Count > 0 ? civitBaseModels : GetKnownVisibleBaseModelTypes(); // Cache the results var cacheEntry = new CivitBaseModelTypeCacheEntry @@ -60,18 +115,7 @@ public async Task> GetBaseModelTypes(bool forceRefresh = false, boo await dbContext.UpsertCivitBaseModelTypeCacheEntry(cacheEntry); } - if (includeAllOption) - { - civitBaseModels.Insert(0, CivitBaseModelType.All.ToString()); - } - - // Filter and sort results - var filteredResults = civitBaseModels - .Where(s => !s.Equals("odor", StringComparison.OrdinalIgnoreCase)) - .OrderBy(s => s) - .ToList(); - - return filteredResults; + return NormalizeBaseModelTypes(civitBaseModels, includeAllOption); } catch (Exception e) { @@ -79,8 +123,10 @@ public async Task> GetBaseModelTypes(bool forceRefresh = false, boo // Return cached results if available, even if expired var expiredCache = await dbContext.GetCivitBaseModelTypeCacheEntry(CacheId); - return expiredCache?.ModelTypes - ?? Enum.GetValues().Select(b => b.GetStringValue()).ToList(); + return NormalizeBaseModelTypes( + expiredCache?.ModelTypes ?? GetKnownVisibleBaseModelTypes(), + includeAllOption + ); } } @@ -91,4 +137,82 @@ public void ClearCache() { dbContext.CivitBaseModelTypeCache.DeleteAllAsync(); } + + private async Task?> TryGetBaseModelsFromEnumsEndpoint() + { + try + { + var enumsResponse = await civitApi.GetEnums(); + var baseModels = enumsResponse?.ActiveBaseModel ?? enumsResponse?.BaseModel; + + if (baseModels is { Count: > 0 }) + { + return baseModels; + } + + logger.LogInformation( + "CivitAI enums endpoint returned no base models; falling back to legacy/base list" + ); + return null; + } + catch (Exception ex) + { + logger.LogInformation(ex, "CivitAI enums endpoint failed; falling back to legacy/base list"); + return null; + } + } + + private async Task?> TryGetLegacyBaseModelList() + { + var baseModelsResponse = await civitApi.GetBaseModelList(); + var jsonContent = await baseModelsResponse.Content.ReadAsStringAsync(); + return TryParseLegacyBaseModelList(jsonContent); + } + + private List? TryParseLegacyBaseModelList(string jsonContent) + { + var baseModels = JsonNode.Parse(jsonContent); + var innerJson = baseModels?["error"]?["message"]?.GetValue(); + if (string.IsNullOrWhiteSpace(innerJson)) + { + logger.LogInformation( + "CivitAI base model probe value '{Probe}' no longer returns the legacy validation payload; using built-in base model list", + LegacyBaseModelListProbe + ); + return null; + } + + var jArray = JsonNode.Parse(innerJson)?.AsArray(); + var baseModelValues = jArray?[0]?["errors"]?[0]?[0]?["values"]?.AsArray(); + return baseModelValues?.GetValues().ToList(); + } + + private static List GetKnownVisibleBaseModelTypes() + { + return KnownVisibleBaseModelTypes.ToList(); + } + + private static List NormalizeBaseModelTypes( + IEnumerable? baseModels, + bool includeAllOption + ) + { + var normalized = (baseModels ?? []) + .Where(s => !string.IsNullOrWhiteSpace(s)) + .Where(s => !s.Equals("odor", StringComparison.OrdinalIgnoreCase)) + .Distinct(StringComparer.OrdinalIgnoreCase) + .OrderBy(s => s) + .ToList(); + + normalized.RemoveAll(s => + s.Equals(CivitBaseModelType.All.ToString(), StringComparison.OrdinalIgnoreCase) + ); + + if (includeAllOption) + { + normalized.Insert(0, CivitBaseModelType.All.ToString()); + } + + return normalized; + } } diff --git a/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CheckpointBrowserCardViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CheckpointBrowserCardViewModel.cs index d8480cc34..5eccf5dc1 100644 --- a/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CheckpointBrowserCardViewModel.cs +++ b/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CheckpointBrowserCardViewModel.cs @@ -191,7 +191,7 @@ private void UpdateImage() [RelayCommand] private void OpenModel() { - ProcessRunner.OpenUrl($"https://civitai.com/models/{CivitModel.Id}"); + ProcessRunner.OpenUrl(CivitaiUrlHelper.GetModelUrl(CivitModel.Id, CivitModel.Nsfw)); } [RelayCommand] diff --git a/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitAiBrowserViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitAiBrowserViewModel.cs index 0c60c7e4c..bdcd4bcf8 100644 --- a/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitAiBrowserViewModel.cs +++ b/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitAiBrowserViewModel.cs @@ -719,22 +719,18 @@ private async Task SearchModels(bool isInfiniteScroll = false) modelRequest.Sort = CivitSortMode.HighestRated; } } - else if (SearchQuery.StartsWith("https://civitai.com/models/")) + else if (CivitaiUrlHelper.TryParseModelId(SearchQuery, out var modelId)) { /* extract model ID from URL, could be one of: https://civitai.com/models/443821?modelVersionId=1957537 + https://civitai.red/models/443821?modelVersionId=1957537 https://civitai.com/models/443821/cyberrealistic-pony https://civitai.com/models/443821 */ - var modelId = SearchQuery - .Replace("https://civitai.com/models/", string.Empty) - .Split(['?', '/'], StringSplitOptions.RemoveEmptyEntries) - .FirstOrDefault(); - modelRequest.Period = CivitPeriod.AllTime; modelRequest.BaseModels = null; modelRequest.Types = null; - modelRequest.CommaSeparatedModelIds = modelId; + modelRequest.CommaSeparatedModelIds = modelId.ToString(); if (modelRequest.Sort is CivitSortMode.Favorites or CivitSortMode.Installed) { diff --git a/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitDetailsPageViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitDetailsPageViewModel.cs index d308160e8..e8143d9cc 100644 --- a/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitDetailsPageViewModel.cs +++ b/StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitDetailsPageViewModel.cs @@ -55,7 +55,7 @@ IModelImportService modelImportService ) : DisposableViewModelBase { [ObservableProperty] - [NotifyPropertyChangedFor(nameof(ShowInferenceDefaultsSection))] + [NotifyPropertyChangedFor(nameof(ShowInferenceDefaultsSection), nameof(CivitUrl))] public required partial CivitModel CivitModel { get; set; } [ObservableProperty] @@ -110,7 +110,8 @@ IModelImportService modelImportService nameof(ShortSha256), nameof(BaseModelType), nameof(ModelFileNameFormat), - nameof(IsEarlyAccess) + nameof(IsEarlyAccess), + nameof(CivitUrl) )] public partial ModelVersionViewModel? SelectedVersion { get; set; } @@ -172,7 +173,8 @@ IModelImportService modelImportService public bool IsEarlyAccess => SelectedVersion?.ModelVersion.IsEarlyAccess ?? false; - public string CivitUrl => $@"https://civitai.com/models/{CivitModel.Id}"; + public string CivitUrl => + CivitaiUrlHelper.GetModelUrl(CivitModel.Id, CivitModel.Nsfw, SelectedVersion?.ModelVersion.Id); public int DescriptionRowSpan => string.IsNullOrWhiteSpace(ModelVersionDescription) ? 3 : 1; diff --git a/StabilityMatrix.Avalonia/ViewModels/CheckpointManager/CheckpointFileViewModel.cs b/StabilityMatrix.Avalonia/ViewModels/CheckpointManager/CheckpointFileViewModel.cs index 251cf3bdf..24b088811 100644 --- a/StabilityMatrix.Avalonia/ViewModels/CheckpointManager/CheckpointFileViewModel.cs +++ b/StabilityMatrix.Avalonia/ViewModels/CheckpointManager/CheckpointFileViewModel.cs @@ -133,7 +133,13 @@ private void OpenOnCivitAi() { if (CheckpointFile.ConnectedModelInfo?.ModelId == null) return; - ProcessRunner.OpenUrl($"https://civitai.com/models/{CheckpointFile.ConnectedModelInfo.ModelId}"); + ProcessRunner.OpenUrl( + CivitaiUrlHelper.GetModelUrl( + CheckpointFile.ConnectedModelInfo.ModelId.Value, + CheckpointFile.ConnectedModelInfo.Nsfw, + CheckpointFile.ConnectedModelInfo.VersionId + ) + ); } [RelayCommand] @@ -149,7 +155,11 @@ private Task CopyModelUrl() Task.CompletedTask, ConnectedModelSource.Civitai when CheckpointFile.ConnectedModelInfo.ModelId != null => App.Clipboard.SetTextAsync( - $"https://civitai.com/models/{CheckpointFile.ConnectedModelInfo.ModelId}" + CivitaiUrlHelper.GetModelUrl( + CheckpointFile.ConnectedModelInfo.ModelId.Value, + CheckpointFile.ConnectedModelInfo.Nsfw, + CheckpointFile.ConnectedModelInfo.VersionId + ) ), ConnectedModelSource.OpenModelDb => App.Clipboard.SetTextAsync( diff --git a/StabilityMatrix.Core/Api/CivitCompatApiManager.cs b/StabilityMatrix.Core/Api/CivitCompatApiManager.cs index 89986e078..f689add9e 100644 --- a/StabilityMatrix.Core/Api/CivitCompatApiManager.cs +++ b/StabilityMatrix.Core/Api/CivitCompatApiManager.cs @@ -1,5 +1,6 @@ ο»Ώusing Injectio.Attributes; using Microsoft.Extensions.Logging; +using Refit; using StabilityMatrix.Core.Models.Api; using StabilityMatrix.Core.Services; @@ -22,13 +23,52 @@ ISettingsManager settingsManager public Task GetModels(CivitModelsRequest request) { - if (ShouldUseDiscoveryApi) + return GetModelsInternal(request); + } + + private async Task GetModelsInternal(CivitModelsRequest request) + { + if (!ShouldUseDiscoveryApi) { - logger.LogDebug($"Using Discovery API for {nameof(GetModels)}"); - return discoveryApi.GetModels(request, transcodeAnimToImage: true, transcodeVideoToImage: true); + return await civitApi.GetModels(request).ConfigureAwait(false); } - return civitApi.GetModels(request); + try + { + logger.LogDebug("Using Discovery API for {Method}", nameof(GetModels)); + return await discoveryApi + .GetModels(request, transcodeAnimToImage: true, transcodeVideoToImage: true) + .ConfigureAwait(false); + } + catch (ApiException ex) + when ((int)ex.StatusCode >= 500 || ex.StatusCode == System.Net.HttpStatusCode.Unauthorized) + { + logger.LogWarning( + ex, + "Discovery API failed for {Method} with {StatusCode}; falling back to direct CivitAI API", + nameof(GetModels), + ex.StatusCode + ); + return await civitApi.GetModels(request).ConfigureAwait(false); + } + catch (HttpRequestException ex) + { + logger.LogWarning( + ex, + "Discovery API request failed for {Method}; falling back to direct CivitAI API", + nameof(GetModels) + ); + return await civitApi.GetModels(request).ConfigureAwait(false); + } + catch (TaskCanceledException ex) + { + logger.LogWarning( + ex, + "Discovery API timed out for {Method}; falling back to direct CivitAI API", + nameof(GetModels) + ); + return await civitApi.GetModels(request).ConfigureAwait(false); + } } public Task GetModelById(int id) @@ -51,6 +91,11 @@ public Task GetModelVersionById(int id) return civitApi.GetModelVersionById(id); } + public Task GetEnums() + { + return civitApi.GetEnums(); + } + public Task GetBaseModelList() { return civitApi.GetBaseModelList(); diff --git a/StabilityMatrix.Core/Api/ICivitApi.cs b/StabilityMatrix.Core/Api/ICivitApi.cs index 55397d58f..a319b76b3 100644 --- a/StabilityMatrix.Core/Api/ICivitApi.cs +++ b/StabilityMatrix.Core/Api/ICivitApi.cs @@ -19,6 +19,9 @@ public interface ICivitApi [Get("/api/v1/model-versions/{id}")] Task GetModelVersionById(int id); + [Get("/api/v1/enums")] + Task GetEnums(); + [Get("/api/v1/models?baseModels=gimmethelist")] Task GetBaseModelList(); } diff --git a/StabilityMatrix.Core/Helper/CivitaiUrlHelper.cs b/StabilityMatrix.Core/Helper/CivitaiUrlHelper.cs new file mode 100644 index 000000000..c7ceb4282 --- /dev/null +++ b/StabilityMatrix.Core/Helper/CivitaiUrlHelper.cs @@ -0,0 +1,44 @@ +namespace StabilityMatrix.Core.Helper; + +public static class CivitaiUrlHelper +{ + public const string SafeHost = "civitai.com"; + public const string MatureHost = "civitai.red"; + + public static string GetModelUrl(int modelId, bool isNsfw, int? modelVersionId = null) + { + var baseUrl = $"https://{GetHost(isNsfw)}/models/{modelId}"; + return modelVersionId is > 0 ? $"{baseUrl}?modelVersionId={modelVersionId}" : baseUrl; + } + + public static bool TryParseModelId(string? url, out int modelId) + { + modelId = 0; + + if (string.IsNullOrWhiteSpace(url) || !Uri.TryCreate(url, UriKind.Absolute, out var uri)) + { + return false; + } + + if ( + !uri.Host.Equals(SafeHost, StringComparison.OrdinalIgnoreCase) + && !uri.Host.Equals(MatureHost, StringComparison.OrdinalIgnoreCase) + && !uri.Host.Equals($"www.{SafeHost}", StringComparison.OrdinalIgnoreCase) + && !uri.Host.Equals($"www.{MatureHost}", StringComparison.OrdinalIgnoreCase) + ) + { + return false; + } + + var segments = uri.AbsolutePath.Trim('/').Split(['/', '\\'], StringSplitOptions.RemoveEmptyEntries); + + return segments.Length >= 2 + && segments[0].Equals("models", StringComparison.OrdinalIgnoreCase) + && int.TryParse(segments[1], out modelId); + } + + private static string GetHost(bool isNsfw) + { + return isNsfw ? MatureHost : SafeHost; + } +} diff --git a/StabilityMatrix.Core/Models/Api/CivitEnumsResponse.cs b/StabilityMatrix.Core/Models/Api/CivitEnumsResponse.cs new file mode 100644 index 000000000..51633ea96 --- /dev/null +++ b/StabilityMatrix.Core/Models/Api/CivitEnumsResponse.cs @@ -0,0 +1,12 @@ +ο»Ώusing System.Text.Json.Serialization; + +namespace StabilityMatrix.Core.Models.Api; + +public class CivitEnumsResponse +{ + [JsonPropertyName("ActiveBaseModel")] + public List? ActiveBaseModel { get; init; } + + [JsonPropertyName("BaseModel")] + public List? BaseModel { get; init; } +} diff --git a/StabilityMatrix.Core/Models/Packages/InvokeAI.cs b/StabilityMatrix.Core/Models/Packages/InvokeAI.cs index 32080e0a0..a16961717 100644 --- a/StabilityMatrix.Core/Models/Packages/InvokeAI.cs +++ b/StabilityMatrix.Core/Models/Packages/InvokeAI.cs @@ -52,7 +52,9 @@ IPipWheelService pipWheelService public override PackageDifficulty InstallerSortOrder => PackageDifficulty.Advanced; public override Uri PreviewImageUri => - new("https://raw.githubusercontent.com/invoke-ai/InvokeAI/main/docs/assets/canvas_preview.png"); + new( + "https://raw.githubusercontent.com/invoke-ai/InvokeAI/refs/heads/main/docs-old/assets/canvas_preview.png" + ); public override IEnumerable AvailableSharedFolderMethods => [SharedFolderMethod.None, SharedFolderMethod.Configuration]; diff --git a/StabilityMatrix.Core/Models/Packages/StableSwarm.cs b/StabilityMatrix.Core/Models/Packages/StableSwarm.cs index d71e52f5c..80af79da6 100644 --- a/StabilityMatrix.Core/Models/Packages/StableSwarm.cs +++ b/StabilityMatrix.Core/Models/Packages/StableSwarm.cs @@ -263,44 +263,54 @@ await prerequisiteHelper if (!options.IsUpdate) { - // set default settings - var settings = new StableSwarmSettings { IsInstalled = true }; + // Settings.fds - merge into the existing file instead of replacing it, so user edits + // (and any fields added by newer SwarmUI versions) survive a re-install. + var settingsPath = GetSettingsPath(installLocation); + Directory.CreateDirectory(Path.GetDirectoryName(settingsPath)!); + var settingsSection = File.Exists(settingsPath) + ? FDSUtility.ReadFile(settingsPath) + : new FDSSection(); + + settingsSection.Set("IsInstalled", true); if (options.SharedFolderMethod is SharedFolderMethod.Configuration) { - settings.Paths = new StableSwarmSettings.PathsData - { - ModelRoot = settingsManager.ModelsDirectory, - SDModelFolder = Path.Combine( - settingsManager.ModelsDirectory, - SharedFolderType.StableDiffusion.ToString() - ), - SDLoraFolder = Path.Combine( - settingsManager.ModelsDirectory, - SharedFolderType.Lora.ToString() - ), - SDVAEFolder = Path.Combine( - settingsManager.ModelsDirectory, - SharedFolderType.VAE.ToString() - ), - SDEmbeddingFolder = Path.Combine( - settingsManager.ModelsDirectory, - SharedFolderType.Embeddings.ToString() - ), - SDControlNetsFolder = Path.Combine( - settingsManager.ModelsDirectory, - SharedFolderType.ControlNet.ToString() - ), - SDClipVisionFolder = Path.Combine( - settingsManager.ModelsDirectory, - SharedFolderType.ClipVision.ToString() - ), - }; + var pathsSection = settingsSection.GetSection("Paths") ?? new FDSSection(); + pathsSection.Set("ModelRoot", settingsManager.ModelsDirectory); + pathsSection.Set( + "SDModelFolder", + Path.Combine(settingsManager.ModelsDirectory, SharedFolderType.StableDiffusion.ToString()) + ); + pathsSection.Set( + "SDLoraFolder", + Path.Combine(settingsManager.ModelsDirectory, SharedFolderType.Lora.ToString()) + ); + pathsSection.Set( + "SDVAEFolder", + Path.Combine(settingsManager.ModelsDirectory, SharedFolderType.VAE.ToString()) + ); + pathsSection.Set( + "SDEmbeddingFolder", + Path.Combine(settingsManager.ModelsDirectory, SharedFolderType.Embeddings.ToString()) + ); + pathsSection.Set( + "SDControlNetsFolder", + Path.Combine(settingsManager.ModelsDirectory, SharedFolderType.ControlNet.ToString()) + ); + pathsSection.Set( + "SDClipVisionFolder", + Path.Combine(settingsManager.ModelsDirectory, SharedFolderType.ClipVision.ToString()) + ); + settingsSection.Set("Paths", pathsSection); } - settings.Save(true).SaveToFile(GetSettingsPath(installLocation)); + settingsSection.SaveToFile(settingsPath); - var backendsFile = new FDSSection(); + // Backends.fds - same deal: preserve any user-added backend entries and only replace key "0" + var backendsPath = GetBackendsPath(installLocation); + var backendsFile = File.Exists(backendsPath) + ? FDSUtility.ReadFile(backendsPath) + : new FDSSection(); var dataSection = new FDSSection(); dataSection.Set("type", "comfyui_selfstart"); dataSection.Set("title", "StabilityMatrix ComfyUI Self-Start"); @@ -371,7 +381,7 @@ await File.WriteAllTextAsync(wrapperScriptPath, scriptContent, cancellationToken } backendsFile.Set("0", dataSection); - backendsFile.SaveToFile(GetBackendsPath(installLocation)); + backendsFile.SaveToFile(backendsPath); } } From 737346313bcf744a87bbfdb56c57ac064659a2aa Mon Sep 17 00:00:00 2001 From: JT Date: Sun, 19 Apr 2026 13:45:25 -0700 Subject: [PATCH 2/7] fix chagenlog merge --- CHANGELOG.md | 119 +-------------------------------------------------- 1 file changed, 1 insertion(+), 118 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ce4fe0f9..628704683 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,7 @@ All notable changes to Stability Matrix will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). -<<<<<<< HEAD -======= -## v2.16.0-pre.1 +## v2.15.8 ### Added - Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL ### Changed @@ -16,121 +14,6 @@ and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2 - Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out - Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template -## v2.16.0-dev.3 -### Added -- Added enable/disable toggle for environment variables in Settings, allowing variables to be temporarily disabled without deleting them -- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance -- Added notification system with localizable banner and markdown detail dialog UI -- Added warning in data directory selector when a OneDrive folder is selected -- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b! -- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault! -- Added retry button to failed downloads - thanks to @NeuralFault! -- Added new Membership support in Account Settings with Patreon migration prompt -### Changed -- Improved safetensor checkpoint classification to correctly detect UNet-only models for Wan Video, HiDream, Z-Image, Hunyuan3D, and diffusers-format Flux architectures, ensuring they are routed to the DiffusionModels folder -- GGUF checkpoint downloads now go directly to the DiffusionModels folder instead of StableDiffusion -- Configured portable Git to suppress detached HEAD advice messages -- Settings file saves are now atomic to prevent corruption from interrupted writes -- Updated torch indexes for A1111, ComfyUI, InvokeAI, and Forge-based UIs to rocm7.2 / cu128 depending on GPU - thanks to @NeuralFault! -- Replaced the "Become a Patron" footer button with "Support Us", linking to the new direct Lykos support page at lykos.ai/membership -- Updated the prompt dialog shown when enabling features like Accelerated Model Discovery to use Lykos accounts instead of Patreon linking -- Moved the Patreon connection in Account Settings to a new "Legacy Connections" section, only shown for users with an existing Patreon link -- Localized previously hardcoded strings on the Account Settings page (menu items, descriptions, section headers) and added Japanese, Korean, German, and French translations -### Fixed -- Fixed the Package Manager "Add Package" teaching tip opening inopportunely while packages were still loading or after opening the add-package dialog -- Fixed downloaded checkpoint going to StableDiffusion folder when a saved download preference existed, even for GGUF files that should always go to DiffusionModels -- Fixed potential crash when adding metadata to malformed or non-PNG image data in Inference -- Fixed non-Latin-1 characters (e.g. Japanese, Chinese, Korean, emoji) in image generation parameters being stored in PNG tEXt chunks, violating the PNG specification and causing character corruption (mojibake) in standard-compliant parsers. Non-Latin-1 content now uses spec-compliant iTXt chunks with proper UTF-8 encoding ([#1535](https://github.com/LykosAI/StabilityMatrix/issues/1535)) -- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers. -- Fixed bold text not rendering in markdown dialogs on Windows 11 due to Avalonia 11.3.x variable font regression with Segoe UI Variable Text -- Fixed Japanese text appearing compressed/squished in markdown dialogs by ensuring the bundled NotoSansJP font is used for CTextBlock rendering -- Fixed ContentDialog title and buttons not using the correct font for Japanese locale (NotoSansJP) when shown as overlay -- Added missing `CBold` and `CItalic` inline styles to the markdown style sheet -- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop -- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain -- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault! -- Fixed model downloads failing on VPN connections - thanks to @NeuralFault! -- Fixed [#1598](https://github.com/LykosAI/StabilityMatrix/issues/1598) - download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent -- Fixed [#1597](https://github.com/LykosAI/StabilityMatrix/issues/1597) - reForge launch failing due to setuptools version -- Fixed [#1596](https://github.com/LykosAI/StabilityMatrix/issues/1596) - package installs and managed embedded Python startup being poisoned by inherited shell Python activation variables such as `PYTHONHOME`, `PYTHONPATH`, `VIRTUAL_ENV`, and Conda environment variables -- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets -- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window -- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord! -### Supporters -#### 🌟 Visionaries -A heartfelt thank you to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit** - every feature, fix, and late-night breakthrough in this release carries your fingerprints. A huge welcome to our newest Visionaries **Droolguy** and **snotty** (leveling up from the Pioneer ranks!), a warm welcome back to longtime Visionary **Ibixat**, and an equally huge welcome to **LG**, making their Stability Matrix debut straight at the Visionary tier! You're the reason we can keep building bold things - and an extra-special thank you to everyone now supporting us directly through our new platform. Your trust in this next chapter means the world! - -## v2.16.0-dev.2 -### Added -- Added Regional Prompting addon to Inference - paint detailed masks to apply different prompts, strengths, and settings to specific regions of your image - - Multi-layer mask editor with Photoshop-style interface for managing layers with independent masks, prompts, colors, and opacity - - Professional brush tools: freehand brush/eraser with pressure sensitivity, rectangle/ellipse shapes with fill/stroke modes, paint bucket flood fill - - Brush feathering/softness control for smooth, blended mask edges (0 = hard edge, 1 = soft/blurred) - - Per-layer prompt and strength controls, export/import masks as PNG, duplicate layers, image reference layers for tracing - - GPU-accelerated rendering with compact gzip-compressed metadata serialization -- Added new Model Picker dialog for Inference with grid/list views, search, filtering, and NSFW overlay -- Added browse buttons to all model dropdowns in Inference (Model, Refiner, VAE, Text Encoders, CLIP Vision) -- Added inline search box to model combo box dropdowns with fuzzy matching -- Added NVIDIA driver version warning when launching ComfyUI with CUDA 13.0 (cu130) and driver versions below 580.x -- Added legacy Python warning when launching InvokeAI installations using Python 3.10.11 -- Added Tiled VAE Decode to the Inference video workflows - thanks to @NeuralFault! -- Added recoverable error dialog for UI thread exceptions, with option to continue instead of exiting -### Changed -- Disabled update checking for legacy InvokeAI installations using Python 3.10.11 -- Hide rating stars in the Civitai browser page if no rating is available -- Updated uv to v0.9.30 -- Updated PortableGit to v2.52.0.windows.1 -- Updated Sage/Triton/Nunchaku installers to use GitHub API to fetch latest releases -- Updated ComfyUI installations and updates to automatically install ComfyUI Manager -- Updated gfx110X Windows ROCm nightly index - thanks to @NeuralFault! -- Updated ComfyUI-Zluda install to more closely match the author's intended installation method - thanks to @NeuralFault! -- Updated Forge Classic installs/updates to use the upstream install script for better version compatibility with torch/sage/triton/nunchaku -### Fixed -- Fixed parsing of escape sequences in Inference such as `\\` -- Fixed batch notification firing when only one image is generated -- Fixed [#1546](https://github.com/LykosAI/StabilityMatrix/issues/1546), [#1541](https://github.com/LykosAI/StabilityMatrix/issues/1541) - "No module named 'pkg_resources'" error when installing Automatic1111/Forge/reForge packages -- Fixed [#1545](https://github.com/LykosAI/StabilityMatrix/issues/1545), [#1518](https://github.com/LykosAI/StabilityMatrix/issues/1518), [#1513](https://github.com/LykosAI/StabilityMatrix/issues/1513), [#1488](https://github.com/LykosAI/StabilityMatrix/issues/1488) - Forge Neo update breaking things -- Fixed [#1529](https://github.com/LykosAI/StabilityMatrix/issues/1529) - "Selected commit is null" error when installing packages and rate limited by GitHub -- Fixed [#1525](https://github.com/LykosAI/StabilityMatrix/issues/1525) - Crash after downloading a model -- Fixed [#1523](https://github.com/LykosAI/StabilityMatrix/issues/1523), [#1499](https://github.com/LykosAI/StabilityMatrix/issues/1499), [#1494](https://github.com/LykosAI/StabilityMatrix/issues/1494) - Automatic1111 using old stable diffusion repo -- Fixed [#1505](https://github.com/LykosAI/StabilityMatrix/issues/1505) - incorrect port argument for Wan2GP -- Possibly fix [#1502](https://github.com/LykosAI/StabilityMatrix/issues/1502) - English fonts not displaying correctly on Linux in Chinese environments -- Fixed [#1476](https://github.com/LykosAI/StabilityMatrix/issues/1476) - Incorrect shared output folder for Forge Classic/Neo -- Fixed [#1466](https://github.com/LykosAI/StabilityMatrix/issues/1466) - crash after moving portable install -- Fixed [#1445](https://github.com/LykosAI/StabilityMatrix/issues/1445) - Linux app updates not actually updating - thanks to @NeuralFault! -### Supporters -#### 🌟 Visionaries -Huge shoutout to our amazing Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your continued support fuels every new feature and improvement in Stability Matrix. We couldn't do it without you - thank you for believing in what we're building! - -## v2.16.0-dev.1 -### Added -#### New Feature: πŸ§ͺ Image Lab - Conversational Image Generation for ComfyUI -- We've added a brand new conversational interface for image generation! Image Lab lets you iterate on images naturally through chat, rather than just one-off prompts. - - Local-First Power: Native support for Flux Kontext and Qwen Image Edit running entirely locally via your ComfyUI backend. - - Smart Setup: Stability Matrix automatically detects and helps you download the specific models and LoRAs needed for these local workflows. - - Interactive Tools: Drag-and-drop image inputs, use the built-in annotation tool to draw on images, and keep persistent conversation history. - - Cloud Option: Includes optional support for Nano Banana (Gemini 3 Pro/2.5) for users who want to leverage external reasoning models. -- Added new package - [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) -- Added [Stable Diffusion WebUI Forge - Neo](https://github.com/Haoming02/sd-webui-forge-classic/tree/neo) as a separate package for convenience -- Added Intel GPU support for ComfyUI -- Added "Run Python Command" option to the package card's 3-dots menu for running arbitrary Python code in the package's virtual environment -- Added togglable `--uv` argument to the SD.Next launch options -- Added Tiled VAE decoding as an Inference addon thanks to @NeuralFault! -### Changed -- Moved the original Stable Diffusion WebUI Forge to the "Legacy" packages tab due to inactivity -- Updated to cu130 torch index for ComfyUI installs with Nvidia GPUs -- Consolidated and fixed AMD GPU architecture detection -- Updated SageAttention installer to latest v2.2.0-windows.post4 version -- Video files can now be opened directly from the Output browser -- Videos will now appear with thumbnails in the Output browser -### Fixed -- Fixed [#1450](https://github.com/LykosAI/StabilityMatrix/issues/1450) - Older SD.Next not launching due to forced `--uv` argument -- Fixed duplicate custom node installations when installing workflows from the Workflow Browser - thanks again to @NeuralFault! -### Supporters -#### 🌟 Visionaries -A massive thank you to our esteemed Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity is the powerhouse behind Stability Matrix, enabling us to keep building and refining with confidence. We are truly grateful for your partnership! - ->>>>>>> 3a9a8a30 (Merge pull request #1239 from ionite34/fix/civit-reliability-and-swarm-settings) ## v2.15.7 ### Added - Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance From 2b5d1ddd14a14c229b5b2d97f806ee1507c8bb41 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 4 May 2026 19:36:15 -0700 Subject: [PATCH 3/7] Merge pull request #1246 from ionite34/another-shoutout-chagenlog shoutout chagenlog (cherry picked from commit 5d4b4682a1fc2f2ec8008dc26e561e27a06fe1b2) # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d74a1949..a2845365f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,140 @@ All notable changes to Stability Matrix will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). +<<<<<<< HEAD ## [Unreleased - v2.15.8] +======= +## v2.16.0-pre.1 +### Added +- Added CivArchive model browser with details page, image viewer, version selector, trigger words, and in-app downloads with tracked progress +- Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL +### Changed +- The CivitAI base model type filter now uses CivitAI's official `/api/v1/enums` endpoint, with fallbacks to the previous technique and a built-in list, so the filter stays populated even if the CivitAI response format changes or the service is unreachable +### Fixed +- Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out +- Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template +- Fixed pip requirements handling for environment-marker dependencies - thanks to @NeuralFault! +- Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! +### Supporters +#### 🌟 Visionaries +So much love to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” thank you for your continued enthusiasm, kindness, and sheer staying-power. You've been with us through some big changes, and we're so lucky to have you in our corner. And the warmest welcome to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” we're so happy you're here, and we can't wait to get to know you. πŸ’› + +## v2.16.0-dev.3 +### Added +- Added enable/disable toggle for environment variables in Settings, allowing variables to be temporarily disabled without deleting them +- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance +- Added notification system with localizable banner and markdown detail dialog UI +- Added warning in data directory selector when a OneDrive folder is selected +- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b! +- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault! +- Added retry button to failed downloads - thanks to @NeuralFault! +- Added new Membership support in Account Settings with Patreon migration prompt +### Changed +- Improved safetensor checkpoint classification to correctly detect UNet-only models for Wan Video, HiDream, Z-Image, Hunyuan3D, and diffusers-format Flux architectures, ensuring they are routed to the DiffusionModels folder +- GGUF checkpoint downloads now go directly to the DiffusionModels folder instead of StableDiffusion +- Configured portable Git to suppress detached HEAD advice messages +- Settings file saves are now atomic to prevent corruption from interrupted writes +- Updated torch indexes for A1111, ComfyUI, InvokeAI, and Forge-based UIs to rocm7.2 / cu128 depending on GPU - thanks to @NeuralFault! +- Replaced the "Become a Patron" footer button with "Support Us", linking to the new direct Lykos support page at lykos.ai/membership +- Updated the prompt dialog shown when enabling features like Accelerated Model Discovery to use Lykos accounts instead of Patreon linking +- Moved the Patreon connection in Account Settings to a new "Legacy Connections" section, only shown for users with an existing Patreon link +- Localized previously hardcoded strings on the Account Settings page (menu items, descriptions, section headers) and added Japanese, Korean, German, and French translations +### Fixed +- Fixed the Package Manager "Add Package" teaching tip opening inopportunely while packages were still loading or after opening the add-package dialog +- Fixed downloaded checkpoint going to StableDiffusion folder when a saved download preference existed, even for GGUF files that should always go to DiffusionModels +- Fixed potential crash when adding metadata to malformed or non-PNG image data in Inference +- Fixed non-Latin-1 characters (e.g. Japanese, Chinese, Korean, emoji) in image generation parameters being stored in PNG tEXt chunks, violating the PNG specification and causing character corruption (mojibake) in standard-compliant parsers. Non-Latin-1 content now uses spec-compliant iTXt chunks with proper UTF-8 encoding ([#1535](https://github.com/LykosAI/StabilityMatrix/issues/1535)) +- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers. +- Fixed bold text not rendering in markdown dialogs on Windows 11 due to Avalonia 11.3.x variable font regression with Segoe UI Variable Text +- Fixed Japanese text appearing compressed/squished in markdown dialogs by ensuring the bundled NotoSansJP font is used for CTextBlock rendering +- Fixed ContentDialog title and buttons not using the correct font for Japanese locale (NotoSansJP) when shown as overlay +- Added missing `CBold` and `CItalic` inline styles to the markdown style sheet +- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop +- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain +- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault! +- Fixed model downloads failing on VPN connections - thanks to @NeuralFault! +- Fixed [#1598](https://github.com/LykosAI/StabilityMatrix/issues/1598) - download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent +- Fixed [#1597](https://github.com/LykosAI/StabilityMatrix/issues/1597) - reForge launch failing due to setuptools version +- Fixed [#1596](https://github.com/LykosAI/StabilityMatrix/issues/1596) - package installs and managed embedded Python startup being poisoned by inherited shell Python activation variables such as `PYTHONHOME`, `PYTHONPATH`, `VIRTUAL_ENV`, and Conda environment variables +- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets +- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window +- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord! +### Supporters +#### 🌟 Visionaries +A heartfelt thank you to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit** - every feature, fix, and late-night breakthrough in this release carries your fingerprints. A huge welcome to our newest Visionaries **Droolguy** and **snotty** (leveling up from the Pioneer ranks!), a warm welcome back to longtime Visionary **Ibixat**, and an equally huge welcome to **LG**, making their Stability Matrix debut straight at the Visionary tier! You're the reason we can keep building bold things - and an extra-special thank you to everyone now supporting us directly through our new platform. Your trust in this next chapter means the world! + +## v2.16.0-dev.2 +### Added +- Added Regional Prompting addon to Inference - paint detailed masks to apply different prompts, strengths, and settings to specific regions of your image + - Multi-layer mask editor with Photoshop-style interface for managing layers with independent masks, prompts, colors, and opacity + - Professional brush tools: freehand brush/eraser with pressure sensitivity, rectangle/ellipse shapes with fill/stroke modes, paint bucket flood fill + - Brush feathering/softness control for smooth, blended mask edges (0 = hard edge, 1 = soft/blurred) + - Per-layer prompt and strength controls, export/import masks as PNG, duplicate layers, image reference layers for tracing + - GPU-accelerated rendering with compact gzip-compressed metadata serialization +- Added new Model Picker dialog for Inference with grid/list views, search, filtering, and NSFW overlay +- Added browse buttons to all model dropdowns in Inference (Model, Refiner, VAE, Text Encoders, CLIP Vision) +- Added inline search box to model combo box dropdowns with fuzzy matching +- Added NVIDIA driver version warning when launching ComfyUI with CUDA 13.0 (cu130) and driver versions below 580.x +- Added legacy Python warning when launching InvokeAI installations using Python 3.10.11 +- Added Tiled VAE Decode to the Inference video workflows - thanks to @NeuralFault! +- Added recoverable error dialog for UI thread exceptions, with option to continue instead of exiting +### Changed +- Disabled update checking for legacy InvokeAI installations using Python 3.10.11 +- Hide rating stars in the Civitai browser page if no rating is available +- Updated uv to v0.9.30 +- Updated PortableGit to v2.52.0.windows.1 +- Updated Sage/Triton/Nunchaku installers to use GitHub API to fetch latest releases +- Updated ComfyUI installations and updates to automatically install ComfyUI Manager +- Updated gfx110X Windows ROCm nightly index - thanks to @NeuralFault! +- Updated ComfyUI-Zluda install to more closely match the author's intended installation method - thanks to @NeuralFault! +- Updated Forge Classic installs/updates to use the upstream install script for better version compatibility with torch/sage/triton/nunchaku +### Fixed +- Fixed parsing of escape sequences in Inference such as `\\` +- Fixed batch notification firing when only one image is generated +- Fixed [#1546](https://github.com/LykosAI/StabilityMatrix/issues/1546), [#1541](https://github.com/LykosAI/StabilityMatrix/issues/1541) - "No module named 'pkg_resources'" error when installing Automatic1111/Forge/reForge packages +- Fixed [#1545](https://github.com/LykosAI/StabilityMatrix/issues/1545), [#1518](https://github.com/LykosAI/StabilityMatrix/issues/1518), [#1513](https://github.com/LykosAI/StabilityMatrix/issues/1513), [#1488](https://github.com/LykosAI/StabilityMatrix/issues/1488) - Forge Neo update breaking things +- Fixed [#1529](https://github.com/LykosAI/StabilityMatrix/issues/1529) - "Selected commit is null" error when installing packages and rate limited by GitHub +- Fixed [#1525](https://github.com/LykosAI/StabilityMatrix/issues/1525) - Crash after downloading a model +- Fixed [#1523](https://github.com/LykosAI/StabilityMatrix/issues/1523), [#1499](https://github.com/LykosAI/StabilityMatrix/issues/1499), [#1494](https://github.com/LykosAI/StabilityMatrix/issues/1494) - Automatic1111 using old stable diffusion repo +- Fixed [#1505](https://github.com/LykosAI/StabilityMatrix/issues/1505) - incorrect port argument for Wan2GP +- Possibly fix [#1502](https://github.com/LykosAI/StabilityMatrix/issues/1502) - English fonts not displaying correctly on Linux in Chinese environments +- Fixed [#1476](https://github.com/LykosAI/StabilityMatrix/issues/1476) - Incorrect shared output folder for Forge Classic/Neo +- Fixed [#1466](https://github.com/LykosAI/StabilityMatrix/issues/1466) - crash after moving portable install +- Fixed [#1445](https://github.com/LykosAI/StabilityMatrix/issues/1445) - Linux app updates not actually updating - thanks to @NeuralFault! +### Supporters +#### 🌟 Visionaries +Huge shoutout to our amazing Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your continued support fuels every new feature and improvement in Stability Matrix. We couldn't do it without you - thank you for believing in what we're building! + +## v2.16.0-dev.1 +### Added +#### New Feature: πŸ§ͺ Image Lab - Conversational Image Generation for ComfyUI +- We've added a brand new conversational interface for image generation! Image Lab lets you iterate on images naturally through chat, rather than just one-off prompts. + - Local-First Power: Native support for Flux Kontext and Qwen Image Edit running entirely locally via your ComfyUI backend. + - Smart Setup: Stability Matrix automatically detects and helps you download the specific models and LoRAs needed for these local workflows. + - Interactive Tools: Drag-and-drop image inputs, use the built-in annotation tool to draw on images, and keep persistent conversation history. + - Cloud Option: Includes optional support for Nano Banana (Gemini 3 Pro/2.5) for users who want to leverage external reasoning models. +- Added new package - [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) +- Added [Stable Diffusion WebUI Forge - Neo](https://github.com/Haoming02/sd-webui-forge-classic/tree/neo) as a separate package for convenience +- Added Intel GPU support for ComfyUI +- Added "Run Python Command" option to the package card's 3-dots menu for running arbitrary Python code in the package's virtual environment +- Added togglable `--uv` argument to the SD.Next launch options +- Added Tiled VAE decoding as an Inference addon thanks to @NeuralFault! +### Changed +- Moved the original Stable Diffusion WebUI Forge to the "Legacy" packages tab due to inactivity +- Updated to cu130 torch index for ComfyUI installs with Nvidia GPUs +- Consolidated and fixed AMD GPU architecture detection +- Updated SageAttention installer to latest v2.2.0-windows.post4 version +- Video files can now be opened directly from the Output browser +- Videos will now appear with thumbnails in the Output browser +### Fixed +- Fixed [#1450](https://github.com/LykosAI/StabilityMatrix/issues/1450) - Older SD.Next not launching due to forced `--uv` argument +- Fixed duplicate custom node installations when installing workflows from the Workflow Browser - thanks again to @NeuralFault! +### Supporters +#### 🌟 Visionaries +A massive thank you to our esteemed Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity is the powerhouse behind Stability Matrix, enabling us to keep building and refining with confidence. We are truly grateful for your partnership! + +## v2.15.8 +>>>>>>> 5d4b4682 (Merge pull request #1246 from ionite34/another-shoutout-chagenlog) ### Added - Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL ### Changed @@ -14,6 +147,13 @@ and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2 - Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! - Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out - Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template +- Fixed pip requirements handling for environment-marker dependencies - thanks to @NeuralFault! +- Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! +### Supporters +#### 🌟 Visionaries +Heaps of gratitude to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” for sticking with us release after release. Your encouragement, your patience while we chase down those last bugs, and the sheer fact of you being here keeps us showing up at the keyboard. We're so glad you're part of this little corner of the internet with us. And big warm welcomes again to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” make yourselves at home, you're among friends! πŸ’› +#### πŸš€ Pioneers +And the Pioneer crew β€” what a lineup. A massive thank-you to **Szir777**, **[USA]TechDude**, **takyamtom**, **SinthCore**, **Commissar Lord Death**, **Ahmed S**, **SeraphOfSalem**, and **Jisuren** β€” your steady presence, kind words, and patience as we've shifted things around mean more than you know. A heartfelt welcome back to **Tigon**, who's returned to the Pioneer ranks after a little time away β€” so glad you're back. πŸŽ‰ And a special hello to **jweg79**, who's been quietly supporting us for a while and just decided to step up and join the Pioneer crew this round β€” so happy to have you here. To our newest Pioneers, an enormous welcome: **rwx14662**, **Hurbie53**, **ahnhj.al**, **drew.lukas**, **Firelight**, **joeto332987**, **Tuskaruho**, **Cjloha**, and **Alligator1907**. We're absolutely thrilled to have you with us. (And to our anonymous Pioneer out there too, our thanks reaches you β€” we see you. πŸ’›) ## v2.15.7 ### Added From c37b7366de3fc94988176c4fff520f0dec506a34 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 4 May 2026 19:38:12 -0700 Subject: [PATCH 4/7] Fix chagenlog merge conflict fix --- CHANGELOG.md | 133 --------------------------------------------------- 1 file changed, 133 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2845365f..136bc6f17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,140 +5,7 @@ All notable changes to Stability Matrix will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). -<<<<<<< HEAD -## [Unreleased - v2.15.8] -======= -## v2.16.0-pre.1 -### Added -- Added CivArchive model browser with details page, image viewer, version selector, trigger words, and in-app downloads with tracked progress -- Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL -### Changed -- The CivitAI base model type filter now uses CivitAI's official `/api/v1/enums` endpoint, with fallbacks to the previous technique and a built-in list, so the filter stays populated even if the CivitAI response format changes or the service is unreachable -### Fixed -- Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out -- Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template -- Fixed pip requirements handling for environment-marker dependencies - thanks to @NeuralFault! -- Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! -### Supporters -#### 🌟 Visionaries -So much love to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” thank you for your continued enthusiasm, kindness, and sheer staying-power. You've been with us through some big changes, and we're so lucky to have you in our corner. And the warmest welcome to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” we're so happy you're here, and we can't wait to get to know you. πŸ’› - -## v2.16.0-dev.3 -### Added -- Added enable/disable toggle for environment variables in Settings, allowing variables to be temporarily disabled without deleting them -- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance -- Added notification system with localizable banner and markdown detail dialog UI -- Added warning in data directory selector when a OneDrive folder is selected -- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b! -- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault! -- Added retry button to failed downloads - thanks to @NeuralFault! -- Added new Membership support in Account Settings with Patreon migration prompt -### Changed -- Improved safetensor checkpoint classification to correctly detect UNet-only models for Wan Video, HiDream, Z-Image, Hunyuan3D, and diffusers-format Flux architectures, ensuring they are routed to the DiffusionModels folder -- GGUF checkpoint downloads now go directly to the DiffusionModels folder instead of StableDiffusion -- Configured portable Git to suppress detached HEAD advice messages -- Settings file saves are now atomic to prevent corruption from interrupted writes -- Updated torch indexes for A1111, ComfyUI, InvokeAI, and Forge-based UIs to rocm7.2 / cu128 depending on GPU - thanks to @NeuralFault! -- Replaced the "Become a Patron" footer button with "Support Us", linking to the new direct Lykos support page at lykos.ai/membership -- Updated the prompt dialog shown when enabling features like Accelerated Model Discovery to use Lykos accounts instead of Patreon linking -- Moved the Patreon connection in Account Settings to a new "Legacy Connections" section, only shown for users with an existing Patreon link -- Localized previously hardcoded strings on the Account Settings page (menu items, descriptions, section headers) and added Japanese, Korean, German, and French translations -### Fixed -- Fixed the Package Manager "Add Package" teaching tip opening inopportunely while packages were still loading or after opening the add-package dialog -- Fixed downloaded checkpoint going to StableDiffusion folder when a saved download preference existed, even for GGUF files that should always go to DiffusionModels -- Fixed potential crash when adding metadata to malformed or non-PNG image data in Inference -- Fixed non-Latin-1 characters (e.g. Japanese, Chinese, Korean, emoji) in image generation parameters being stored in PNG tEXt chunks, violating the PNG specification and causing character corruption (mojibake) in standard-compliant parsers. Non-Latin-1 content now uses spec-compliant iTXt chunks with proper UTF-8 encoding ([#1535](https://github.com/LykosAI/StabilityMatrix/issues/1535)) -- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers. -- Fixed bold text not rendering in markdown dialogs on Windows 11 due to Avalonia 11.3.x variable font regression with Segoe UI Variable Text -- Fixed Japanese text appearing compressed/squished in markdown dialogs by ensuring the bundled NotoSansJP font is used for CTextBlock rendering -- Fixed ContentDialog title and buttons not using the correct font for Japanese locale (NotoSansJP) when shown as overlay -- Added missing `CBold` and `CItalic` inline styles to the markdown style sheet -- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop -- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain -- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault! -- Fixed model downloads failing on VPN connections - thanks to @NeuralFault! -- Fixed [#1598](https://github.com/LykosAI/StabilityMatrix/issues/1598) - download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent -- Fixed [#1597](https://github.com/LykosAI/StabilityMatrix/issues/1597) - reForge launch failing due to setuptools version -- Fixed [#1596](https://github.com/LykosAI/StabilityMatrix/issues/1596) - package installs and managed embedded Python startup being poisoned by inherited shell Python activation variables such as `PYTHONHOME`, `PYTHONPATH`, `VIRTUAL_ENV`, and Conda environment variables -- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets -- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window -- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord! -### Supporters -#### 🌟 Visionaries -A heartfelt thank you to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit** - every feature, fix, and late-night breakthrough in this release carries your fingerprints. A huge welcome to our newest Visionaries **Droolguy** and **snotty** (leveling up from the Pioneer ranks!), a warm welcome back to longtime Visionary **Ibixat**, and an equally huge welcome to **LG**, making their Stability Matrix debut straight at the Visionary tier! You're the reason we can keep building bold things - and an extra-special thank you to everyone now supporting us directly through our new platform. Your trust in this next chapter means the world! - -## v2.16.0-dev.2 -### Added -- Added Regional Prompting addon to Inference - paint detailed masks to apply different prompts, strengths, and settings to specific regions of your image - - Multi-layer mask editor with Photoshop-style interface for managing layers with independent masks, prompts, colors, and opacity - - Professional brush tools: freehand brush/eraser with pressure sensitivity, rectangle/ellipse shapes with fill/stroke modes, paint bucket flood fill - - Brush feathering/softness control for smooth, blended mask edges (0 = hard edge, 1 = soft/blurred) - - Per-layer prompt and strength controls, export/import masks as PNG, duplicate layers, image reference layers for tracing - - GPU-accelerated rendering with compact gzip-compressed metadata serialization -- Added new Model Picker dialog for Inference with grid/list views, search, filtering, and NSFW overlay -- Added browse buttons to all model dropdowns in Inference (Model, Refiner, VAE, Text Encoders, CLIP Vision) -- Added inline search box to model combo box dropdowns with fuzzy matching -- Added NVIDIA driver version warning when launching ComfyUI with CUDA 13.0 (cu130) and driver versions below 580.x -- Added legacy Python warning when launching InvokeAI installations using Python 3.10.11 -- Added Tiled VAE Decode to the Inference video workflows - thanks to @NeuralFault! -- Added recoverable error dialog for UI thread exceptions, with option to continue instead of exiting -### Changed -- Disabled update checking for legacy InvokeAI installations using Python 3.10.11 -- Hide rating stars in the Civitai browser page if no rating is available -- Updated uv to v0.9.30 -- Updated PortableGit to v2.52.0.windows.1 -- Updated Sage/Triton/Nunchaku installers to use GitHub API to fetch latest releases -- Updated ComfyUI installations and updates to automatically install ComfyUI Manager -- Updated gfx110X Windows ROCm nightly index - thanks to @NeuralFault! -- Updated ComfyUI-Zluda install to more closely match the author's intended installation method - thanks to @NeuralFault! -- Updated Forge Classic installs/updates to use the upstream install script for better version compatibility with torch/sage/triton/nunchaku -### Fixed -- Fixed parsing of escape sequences in Inference such as `\\` -- Fixed batch notification firing when only one image is generated -- Fixed [#1546](https://github.com/LykosAI/StabilityMatrix/issues/1546), [#1541](https://github.com/LykosAI/StabilityMatrix/issues/1541) - "No module named 'pkg_resources'" error when installing Automatic1111/Forge/reForge packages -- Fixed [#1545](https://github.com/LykosAI/StabilityMatrix/issues/1545), [#1518](https://github.com/LykosAI/StabilityMatrix/issues/1518), [#1513](https://github.com/LykosAI/StabilityMatrix/issues/1513), [#1488](https://github.com/LykosAI/StabilityMatrix/issues/1488) - Forge Neo update breaking things -- Fixed [#1529](https://github.com/LykosAI/StabilityMatrix/issues/1529) - "Selected commit is null" error when installing packages and rate limited by GitHub -- Fixed [#1525](https://github.com/LykosAI/StabilityMatrix/issues/1525) - Crash after downloading a model -- Fixed [#1523](https://github.com/LykosAI/StabilityMatrix/issues/1523), [#1499](https://github.com/LykosAI/StabilityMatrix/issues/1499), [#1494](https://github.com/LykosAI/StabilityMatrix/issues/1494) - Automatic1111 using old stable diffusion repo -- Fixed [#1505](https://github.com/LykosAI/StabilityMatrix/issues/1505) - incorrect port argument for Wan2GP -- Possibly fix [#1502](https://github.com/LykosAI/StabilityMatrix/issues/1502) - English fonts not displaying correctly on Linux in Chinese environments -- Fixed [#1476](https://github.com/LykosAI/StabilityMatrix/issues/1476) - Incorrect shared output folder for Forge Classic/Neo -- Fixed [#1466](https://github.com/LykosAI/StabilityMatrix/issues/1466) - crash after moving portable install -- Fixed [#1445](https://github.com/LykosAI/StabilityMatrix/issues/1445) - Linux app updates not actually updating - thanks to @NeuralFault! -### Supporters -#### 🌟 Visionaries -Huge shoutout to our amazing Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your continued support fuels every new feature and improvement in Stability Matrix. We couldn't do it without you - thank you for believing in what we're building! - -## v2.16.0-dev.1 -### Added -#### New Feature: πŸ§ͺ Image Lab - Conversational Image Generation for ComfyUI -- We've added a brand new conversational interface for image generation! Image Lab lets you iterate on images naturally through chat, rather than just one-off prompts. - - Local-First Power: Native support for Flux Kontext and Qwen Image Edit running entirely locally via your ComfyUI backend. - - Smart Setup: Stability Matrix automatically detects and helps you download the specific models and LoRAs needed for these local workflows. - - Interactive Tools: Drag-and-drop image inputs, use the built-in annotation tool to draw on images, and keep persistent conversation history. - - Cloud Option: Includes optional support for Nano Banana (Gemini 3 Pro/2.5) for users who want to leverage external reasoning models. -- Added new package - [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) -- Added [Stable Diffusion WebUI Forge - Neo](https://github.com/Haoming02/sd-webui-forge-classic/tree/neo) as a separate package for convenience -- Added Intel GPU support for ComfyUI -- Added "Run Python Command" option to the package card's 3-dots menu for running arbitrary Python code in the package's virtual environment -- Added togglable `--uv` argument to the SD.Next launch options -- Added Tiled VAE decoding as an Inference addon thanks to @NeuralFault! -### Changed -- Moved the original Stable Diffusion WebUI Forge to the "Legacy" packages tab due to inactivity -- Updated to cu130 torch index for ComfyUI installs with Nvidia GPUs -- Consolidated and fixed AMD GPU architecture detection -- Updated SageAttention installer to latest v2.2.0-windows.post4 version -- Video files can now be opened directly from the Output browser -- Videos will now appear with thumbnails in the Output browser -### Fixed -- Fixed [#1450](https://github.com/LykosAI/StabilityMatrix/issues/1450) - Older SD.Next not launching due to forced `--uv` argument -- Fixed duplicate custom node installations when installing workflows from the Workflow Browser - thanks again to @NeuralFault! -### Supporters -#### 🌟 Visionaries -A massive thank you to our esteemed Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity is the powerhouse behind Stability Matrix, enabling us to keep building and refining with confidence. We are truly grateful for your partnership! - ## v2.15.8 ->>>>>>> 5d4b4682 (Merge pull request #1246 from ionite34/another-shoutout-chagenlog) ### Added - Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL ### Changed From 8aa43cd0b3f037d37f0bd6a4e0a244058a20cc47 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 4 May 2026 20:41:31 -0700 Subject: [PATCH 5/7] Merge pull request #1248 from ionite34/update-comfy-zluda-args MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed ComfyUI-Zluda not inheriting --enable-manager from the base ComfyUI launch options… (cherry picked from commit 343ade45ea75f64238646baaee9597a007b837d1) # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 134 ++++++++++++++++++ .../Models/Packages/ComfyZluda.cs | 6 +- 2 files changed, 139 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 136bc6f17..97acf2fc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,139 @@ All notable changes to Stability Matrix will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). +<<<<<<< HEAD +======= +## v2.16.0-pre.1 +### Added +- Added CivArchive model browser with details page, image viewer, version selector, trigger words, and in-app downloads with tracked progress +- Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL +### Changed +- The CivitAI base model type filter now uses CivitAI's official `/api/v1/enums` endpoint, with fallbacks to the previous technique and a built-in list, so the filter stays populated even if the CivitAI response format changes or the service is unreachable +### Fixed +- Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out +- Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template +- Fixed pip requirements handling for environment-marker dependencies - thanks to @NeuralFault! +- Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! +- Fixed ComfyUI-Zluda inheriting `--enable-manager` from the base ComfyUI launch options, which blocked the bundled custom-node manager from initializing - thanks to @NeuralFault! +### Supporters +#### 🌟 Visionaries +So much love to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” thank you for your continued enthusiasm, kindness, and sheer staying-power. You've been with us through some big changes, and we're so lucky to have you in our corner. And the warmest welcome to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” we're so happy you're here, and we can't wait to get to know you. πŸ’› + +## v2.16.0-dev.3 +### Added +- Added enable/disable toggle for environment variables in Settings, allowing variables to be temporarily disabled without deleting them +- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance +- Added notification system with localizable banner and markdown detail dialog UI +- Added warning in data directory selector when a OneDrive folder is selected +- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b! +- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault! +- Added retry button to failed downloads - thanks to @NeuralFault! +- Added new Membership support in Account Settings with Patreon migration prompt +### Changed +- Improved safetensor checkpoint classification to correctly detect UNet-only models for Wan Video, HiDream, Z-Image, Hunyuan3D, and diffusers-format Flux architectures, ensuring they are routed to the DiffusionModels folder +- GGUF checkpoint downloads now go directly to the DiffusionModels folder instead of StableDiffusion +- Configured portable Git to suppress detached HEAD advice messages +- Settings file saves are now atomic to prevent corruption from interrupted writes +- Updated torch indexes for A1111, ComfyUI, InvokeAI, and Forge-based UIs to rocm7.2 / cu128 depending on GPU - thanks to @NeuralFault! +- Replaced the "Become a Patron" footer button with "Support Us", linking to the new direct Lykos support page at lykos.ai/membership +- Updated the prompt dialog shown when enabling features like Accelerated Model Discovery to use Lykos accounts instead of Patreon linking +- Moved the Patreon connection in Account Settings to a new "Legacy Connections" section, only shown for users with an existing Patreon link +- Localized previously hardcoded strings on the Account Settings page (menu items, descriptions, section headers) and added Japanese, Korean, German, and French translations +### Fixed +- Fixed the Package Manager "Add Package" teaching tip opening inopportunely while packages were still loading or after opening the add-package dialog +- Fixed downloaded checkpoint going to StableDiffusion folder when a saved download preference existed, even for GGUF files that should always go to DiffusionModels +- Fixed potential crash when adding metadata to malformed or non-PNG image data in Inference +- Fixed non-Latin-1 characters (e.g. Japanese, Chinese, Korean, emoji) in image generation parameters being stored in PNG tEXt chunks, violating the PNG specification and causing character corruption (mojibake) in standard-compliant parsers. Non-Latin-1 content now uses spec-compliant iTXt chunks with proper UTF-8 encoding ([#1535](https://github.com/LykosAI/StabilityMatrix/issues/1535)) +- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers. +- Fixed bold text not rendering in markdown dialogs on Windows 11 due to Avalonia 11.3.x variable font regression with Segoe UI Variable Text +- Fixed Japanese text appearing compressed/squished in markdown dialogs by ensuring the bundled NotoSansJP font is used for CTextBlock rendering +- Fixed ContentDialog title and buttons not using the correct font for Japanese locale (NotoSansJP) when shown as overlay +- Added missing `CBold` and `CItalic` inline styles to the markdown style sheet +- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop +- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain +- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault! +- Fixed model downloads failing on VPN connections - thanks to @NeuralFault! +- Fixed [#1598](https://github.com/LykosAI/StabilityMatrix/issues/1598) - download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent +- Fixed [#1597](https://github.com/LykosAI/StabilityMatrix/issues/1597) - reForge launch failing due to setuptools version +- Fixed [#1596](https://github.com/LykosAI/StabilityMatrix/issues/1596) - package installs and managed embedded Python startup being poisoned by inherited shell Python activation variables such as `PYTHONHOME`, `PYTHONPATH`, `VIRTUAL_ENV`, and Conda environment variables +- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets +- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window +- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord! +### Supporters +#### 🌟 Visionaries +A heartfelt thank you to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit** - every feature, fix, and late-night breakthrough in this release carries your fingerprints. A huge welcome to our newest Visionaries **Droolguy** and **snotty** (leveling up from the Pioneer ranks!), a warm welcome back to longtime Visionary **Ibixat**, and an equally huge welcome to **LG**, making their Stability Matrix debut straight at the Visionary tier! You're the reason we can keep building bold things - and an extra-special thank you to everyone now supporting us directly through our new platform. Your trust in this next chapter means the world! + +## v2.16.0-dev.2 +### Added +- Added Regional Prompting addon to Inference - paint detailed masks to apply different prompts, strengths, and settings to specific regions of your image + - Multi-layer mask editor with Photoshop-style interface for managing layers with independent masks, prompts, colors, and opacity + - Professional brush tools: freehand brush/eraser with pressure sensitivity, rectangle/ellipse shapes with fill/stroke modes, paint bucket flood fill + - Brush feathering/softness control for smooth, blended mask edges (0 = hard edge, 1 = soft/blurred) + - Per-layer prompt and strength controls, export/import masks as PNG, duplicate layers, image reference layers for tracing + - GPU-accelerated rendering with compact gzip-compressed metadata serialization +- Added new Model Picker dialog for Inference with grid/list views, search, filtering, and NSFW overlay +- Added browse buttons to all model dropdowns in Inference (Model, Refiner, VAE, Text Encoders, CLIP Vision) +- Added inline search box to model combo box dropdowns with fuzzy matching +- Added NVIDIA driver version warning when launching ComfyUI with CUDA 13.0 (cu130) and driver versions below 580.x +- Added legacy Python warning when launching InvokeAI installations using Python 3.10.11 +- Added Tiled VAE Decode to the Inference video workflows - thanks to @NeuralFault! +- Added recoverable error dialog for UI thread exceptions, with option to continue instead of exiting +### Changed +- Disabled update checking for legacy InvokeAI installations using Python 3.10.11 +- Hide rating stars in the Civitai browser page if no rating is available +- Updated uv to v0.9.30 +- Updated PortableGit to v2.52.0.windows.1 +- Updated Sage/Triton/Nunchaku installers to use GitHub API to fetch latest releases +- Updated ComfyUI installations and updates to automatically install ComfyUI Manager +- Updated gfx110X Windows ROCm nightly index - thanks to @NeuralFault! +- Updated ComfyUI-Zluda install to more closely match the author's intended installation method - thanks to @NeuralFault! +- Updated Forge Classic installs/updates to use the upstream install script for better version compatibility with torch/sage/triton/nunchaku +### Fixed +- Fixed parsing of escape sequences in Inference such as `\\` +- Fixed batch notification firing when only one image is generated +- Fixed [#1546](https://github.com/LykosAI/StabilityMatrix/issues/1546), [#1541](https://github.com/LykosAI/StabilityMatrix/issues/1541) - "No module named 'pkg_resources'" error when installing Automatic1111/Forge/reForge packages +- Fixed [#1545](https://github.com/LykosAI/StabilityMatrix/issues/1545), [#1518](https://github.com/LykosAI/StabilityMatrix/issues/1518), [#1513](https://github.com/LykosAI/StabilityMatrix/issues/1513), [#1488](https://github.com/LykosAI/StabilityMatrix/issues/1488) - Forge Neo update breaking things +- Fixed [#1529](https://github.com/LykosAI/StabilityMatrix/issues/1529) - "Selected commit is null" error when installing packages and rate limited by GitHub +- Fixed [#1525](https://github.com/LykosAI/StabilityMatrix/issues/1525) - Crash after downloading a model +- Fixed [#1523](https://github.com/LykosAI/StabilityMatrix/issues/1523), [#1499](https://github.com/LykosAI/StabilityMatrix/issues/1499), [#1494](https://github.com/LykosAI/StabilityMatrix/issues/1494) - Automatic1111 using old stable diffusion repo +- Fixed [#1505](https://github.com/LykosAI/StabilityMatrix/issues/1505) - incorrect port argument for Wan2GP +- Possibly fix [#1502](https://github.com/LykosAI/StabilityMatrix/issues/1502) - English fonts not displaying correctly on Linux in Chinese environments +- Fixed [#1476](https://github.com/LykosAI/StabilityMatrix/issues/1476) - Incorrect shared output folder for Forge Classic/Neo +- Fixed [#1466](https://github.com/LykosAI/StabilityMatrix/issues/1466) - crash after moving portable install +- Fixed [#1445](https://github.com/LykosAI/StabilityMatrix/issues/1445) - Linux app updates not actually updating - thanks to @NeuralFault! +### Supporters +#### 🌟 Visionaries +Huge shoutout to our amazing Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your continued support fuels every new feature and improvement in Stability Matrix. We couldn't do it without you - thank you for believing in what we're building! + +## v2.16.0-dev.1 +### Added +#### New Feature: πŸ§ͺ Image Lab - Conversational Image Generation for ComfyUI +- We've added a brand new conversational interface for image generation! Image Lab lets you iterate on images naturally through chat, rather than just one-off prompts. + - Local-First Power: Native support for Flux Kontext and Qwen Image Edit running entirely locally via your ComfyUI backend. + - Smart Setup: Stability Matrix automatically detects and helps you download the specific models and LoRAs needed for these local workflows. + - Interactive Tools: Drag-and-drop image inputs, use the built-in annotation tool to draw on images, and keep persistent conversation history. + - Cloud Option: Includes optional support for Nano Banana (Gemini 3 Pro/2.5) for users who want to leverage external reasoning models. +- Added new package - [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) +- Added [Stable Diffusion WebUI Forge - Neo](https://github.com/Haoming02/sd-webui-forge-classic/tree/neo) as a separate package for convenience +- Added Intel GPU support for ComfyUI +- Added "Run Python Command" option to the package card's 3-dots menu for running arbitrary Python code in the package's virtual environment +- Added togglable `--uv` argument to the SD.Next launch options +- Added Tiled VAE decoding as an Inference addon thanks to @NeuralFault! +### Changed +- Moved the original Stable Diffusion WebUI Forge to the "Legacy" packages tab due to inactivity +- Updated to cu130 torch index for ComfyUI installs with Nvidia GPUs +- Consolidated and fixed AMD GPU architecture detection +- Updated SageAttention installer to latest v2.2.0-windows.post4 version +- Video files can now be opened directly from the Output browser +- Videos will now appear with thumbnails in the Output browser +### Fixed +- Fixed [#1450](https://github.com/LykosAI/StabilityMatrix/issues/1450) - Older SD.Next not launching due to forced `--uv` argument +- Fixed duplicate custom node installations when installing workflows from the Workflow Browser - thanks again to @NeuralFault! +### Supporters +#### 🌟 Visionaries +A massive thank you to our esteemed Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity is the powerhouse behind Stability Matrix, enabling us to keep building and refining with confidence. We are truly grateful for your partnership! + +>>>>>>> 343ade45 (Merge pull request #1248 from ionite34/update-comfy-zluda-args) ## v2.15.8 ### Added - Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL @@ -16,6 +149,7 @@ and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2 - Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template - Fixed pip requirements handling for environment-marker dependencies - thanks to @NeuralFault! - Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! +- Fixed ComfyUI-Zluda inheriting `--enable-manager` from the base ComfyUI launch options, which blocked the bundled custom-node manager from initializing - thanks to @NeuralFault! ### Supporters #### 🌟 Visionaries Heaps of gratitude to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” for sticking with us release after release. Your encouragement, your patience while we chase down those last bugs, and the sheer fact of you being here keeps us showing up at the keyboard. We're so glad you're part of this little corner of the internet with us. And big warm welcomes again to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” make yourselves at home, you're among friends! πŸ’› diff --git a/StabilityMatrix.Core/Models/Packages/ComfyZluda.cs b/StabilityMatrix.Core/Models/Packages/ComfyZluda.cs index 8cee6ce84..e3a8a3d98 100644 --- a/StabilityMatrix.Core/Models/Packages/ComfyZluda.cs +++ b/StabilityMatrix.Core/Models/Packages/ComfyZluda.cs @@ -102,7 +102,11 @@ public override List LaunchOptions }, }; - options.AddRange(base.LaunchOptions.Where(x => x.Name != "Cross Attention Method")); + options.AddRange( + base.LaunchOptions.Where(x => + x.Name != "Cross Attention Method" && !x.Options.Contains("--enable-manager") + ) + ); return options; } } From 6287bbaec6ea8118bc8074cffdaf5671d3f5a309 Mon Sep 17 00:00:00 2001 From: JT Date: Mon, 4 May 2026 20:42:50 -0700 Subject: [PATCH 6/7] fix chagenlog fix chagenlog --- CHANGELOG.md | 133 --------------------------------------------------- 1 file changed, 133 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97acf2fc8..cd4c7f333 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,139 +5,6 @@ All notable changes to Stability Matrix will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2.0.0.html). -<<<<<<< HEAD -======= -## v2.16.0-pre.1 -### Added -- Added CivArchive model browser with details page, image viewer, version selector, trigger words, and in-app downloads with tracked progress -- Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL -### Changed -- The CivitAI base model type filter now uses CivitAI's official `/api/v1/enums` endpoint, with fallbacks to the previous technique and a built-in list, so the filter stays populated even if the CivitAI response format changes or the service is unreachable -### Fixed -- Fixed CivitAI model browsing breaking during Discovery API outages β€” the browser now falls back to the direct CivitAI API when Discovery returns a server error, authentication failure, or times out -- Fixed SwarmUI user settings (theme, output format, server configuration, etc.) and any user-added backend entries being overwritten when the install flow ran over an existing install β€” `Settings.fds` and `Backends.fds` are now merged with their existing contents instead of being rewritten from a stale template -- Fixed pip requirements handling for environment-marker dependencies - thanks to @NeuralFault! -- Fixed [#1608](https://github.com/LykosAI/StabilityMatrix/issues/1608) - Crash when cdn fetch fails due to error notification not being shown on UI Thread - thanks to @NeuralFault! -- Fixed ComfyUI-Zluda inheriting `--enable-manager` from the base ComfyUI launch options, which blocked the bundled custom-node manager from initializing - thanks to @NeuralFault! -### Supporters -#### 🌟 Visionaries -So much love to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” thank you for your continued enthusiasm, kindness, and sheer staying-power. You've been with us through some big changes, and we're so lucky to have you in our corner. And the warmest welcome to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” we're so happy you're here, and we can't wait to get to know you. πŸ’› - -## v2.16.0-dev.3 -### Added -- Added enable/disable toggle for environment variables in Settings, allowing variables to be temporarily disabled without deleting them -- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance -- Added notification system with localizable banner and markdown detail dialog UI -- Added warning in data directory selector when a OneDrive folder is selected -- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b! -- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault! -- Added retry button to failed downloads - thanks to @NeuralFault! -- Added new Membership support in Account Settings with Patreon migration prompt -### Changed -- Improved safetensor checkpoint classification to correctly detect UNet-only models for Wan Video, HiDream, Z-Image, Hunyuan3D, and diffusers-format Flux architectures, ensuring they are routed to the DiffusionModels folder -- GGUF checkpoint downloads now go directly to the DiffusionModels folder instead of StableDiffusion -- Configured portable Git to suppress detached HEAD advice messages -- Settings file saves are now atomic to prevent corruption from interrupted writes -- Updated torch indexes for A1111, ComfyUI, InvokeAI, and Forge-based UIs to rocm7.2 / cu128 depending on GPU - thanks to @NeuralFault! -- Replaced the "Become a Patron" footer button with "Support Us", linking to the new direct Lykos support page at lykos.ai/membership -- Updated the prompt dialog shown when enabling features like Accelerated Model Discovery to use Lykos accounts instead of Patreon linking -- Moved the Patreon connection in Account Settings to a new "Legacy Connections" section, only shown for users with an existing Patreon link -- Localized previously hardcoded strings on the Account Settings page (menu items, descriptions, section headers) and added Japanese, Korean, German, and French translations -### Fixed -- Fixed the Package Manager "Add Package" teaching tip opening inopportunely while packages were still loading or after opening the add-package dialog -- Fixed downloaded checkpoint going to StableDiffusion folder when a saved download preference existed, even for GGUF files that should always go to DiffusionModels -- Fixed potential crash when adding metadata to malformed or non-PNG image data in Inference -- Fixed non-Latin-1 characters (e.g. Japanese, Chinese, Korean, emoji) in image generation parameters being stored in PNG tEXt chunks, violating the PNG specification and causing character corruption (mojibake) in standard-compliant parsers. Non-Latin-1 content now uses spec-compliant iTXt chunks with proper UTF-8 encoding ([#1535](https://github.com/LykosAI/StabilityMatrix/issues/1535)) -- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers. -- Fixed bold text not rendering in markdown dialogs on Windows 11 due to Avalonia 11.3.x variable font regression with Segoe UI Variable Text -- Fixed Japanese text appearing compressed/squished in markdown dialogs by ensuring the bundled NotoSansJP font is used for CTextBlock rendering -- Fixed ContentDialog title and buttons not using the correct font for Japanese locale (NotoSansJP) when shown as overlay -- Added missing `CBold` and `CItalic` inline styles to the markdown style sheet -- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop -- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain -- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault! -- Fixed model downloads failing on VPN connections - thanks to @NeuralFault! -- Fixed [#1598](https://github.com/LykosAI/StabilityMatrix/issues/1598) - download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent -- Fixed [#1597](https://github.com/LykosAI/StabilityMatrix/issues/1597) - reForge launch failing due to setuptools version -- Fixed [#1596](https://github.com/LykosAI/StabilityMatrix/issues/1596) - package installs and managed embedded Python startup being poisoned by inherited shell Python activation variables such as `PYTHONHOME`, `PYTHONPATH`, `VIRTUAL_ENV`, and Conda environment variables -- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets -- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window -- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord! -### Supporters -#### 🌟 Visionaries -A heartfelt thank you to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit** - every feature, fix, and late-night breakthrough in this release carries your fingerprints. A huge welcome to our newest Visionaries **Droolguy** and **snotty** (leveling up from the Pioneer ranks!), a warm welcome back to longtime Visionary **Ibixat**, and an equally huge welcome to **LG**, making their Stability Matrix debut straight at the Visionary tier! You're the reason we can keep building bold things - and an extra-special thank you to everyone now supporting us directly through our new platform. Your trust in this next chapter means the world! - -## v2.16.0-dev.2 -### Added -- Added Regional Prompting addon to Inference - paint detailed masks to apply different prompts, strengths, and settings to specific regions of your image - - Multi-layer mask editor with Photoshop-style interface for managing layers with independent masks, prompts, colors, and opacity - - Professional brush tools: freehand brush/eraser with pressure sensitivity, rectangle/ellipse shapes with fill/stroke modes, paint bucket flood fill - - Brush feathering/softness control for smooth, blended mask edges (0 = hard edge, 1 = soft/blurred) - - Per-layer prompt and strength controls, export/import masks as PNG, duplicate layers, image reference layers for tracing - - GPU-accelerated rendering with compact gzip-compressed metadata serialization -- Added new Model Picker dialog for Inference with grid/list views, search, filtering, and NSFW overlay -- Added browse buttons to all model dropdowns in Inference (Model, Refiner, VAE, Text Encoders, CLIP Vision) -- Added inline search box to model combo box dropdowns with fuzzy matching -- Added NVIDIA driver version warning when launching ComfyUI with CUDA 13.0 (cu130) and driver versions below 580.x -- Added legacy Python warning when launching InvokeAI installations using Python 3.10.11 -- Added Tiled VAE Decode to the Inference video workflows - thanks to @NeuralFault! -- Added recoverable error dialog for UI thread exceptions, with option to continue instead of exiting -### Changed -- Disabled update checking for legacy InvokeAI installations using Python 3.10.11 -- Hide rating stars in the Civitai browser page if no rating is available -- Updated uv to v0.9.30 -- Updated PortableGit to v2.52.0.windows.1 -- Updated Sage/Triton/Nunchaku installers to use GitHub API to fetch latest releases -- Updated ComfyUI installations and updates to automatically install ComfyUI Manager -- Updated gfx110X Windows ROCm nightly index - thanks to @NeuralFault! -- Updated ComfyUI-Zluda install to more closely match the author's intended installation method - thanks to @NeuralFault! -- Updated Forge Classic installs/updates to use the upstream install script for better version compatibility with torch/sage/triton/nunchaku -### Fixed -- Fixed parsing of escape sequences in Inference such as `\\` -- Fixed batch notification firing when only one image is generated -- Fixed [#1546](https://github.com/LykosAI/StabilityMatrix/issues/1546), [#1541](https://github.com/LykosAI/StabilityMatrix/issues/1541) - "No module named 'pkg_resources'" error when installing Automatic1111/Forge/reForge packages -- Fixed [#1545](https://github.com/LykosAI/StabilityMatrix/issues/1545), [#1518](https://github.com/LykosAI/StabilityMatrix/issues/1518), [#1513](https://github.com/LykosAI/StabilityMatrix/issues/1513), [#1488](https://github.com/LykosAI/StabilityMatrix/issues/1488) - Forge Neo update breaking things -- Fixed [#1529](https://github.com/LykosAI/StabilityMatrix/issues/1529) - "Selected commit is null" error when installing packages and rate limited by GitHub -- Fixed [#1525](https://github.com/LykosAI/StabilityMatrix/issues/1525) - Crash after downloading a model -- Fixed [#1523](https://github.com/LykosAI/StabilityMatrix/issues/1523), [#1499](https://github.com/LykosAI/StabilityMatrix/issues/1499), [#1494](https://github.com/LykosAI/StabilityMatrix/issues/1494) - Automatic1111 using old stable diffusion repo -- Fixed [#1505](https://github.com/LykosAI/StabilityMatrix/issues/1505) - incorrect port argument for Wan2GP -- Possibly fix [#1502](https://github.com/LykosAI/StabilityMatrix/issues/1502) - English fonts not displaying correctly on Linux in Chinese environments -- Fixed [#1476](https://github.com/LykosAI/StabilityMatrix/issues/1476) - Incorrect shared output folder for Forge Classic/Neo -- Fixed [#1466](https://github.com/LykosAI/StabilityMatrix/issues/1466) - crash after moving portable install -- Fixed [#1445](https://github.com/LykosAI/StabilityMatrix/issues/1445) - Linux app updates not actually updating - thanks to @NeuralFault! -### Supporters -#### 🌟 Visionaries -Huge shoutout to our amazing Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your continued support fuels every new feature and improvement in Stability Matrix. We couldn't do it without you - thank you for believing in what we're building! - -## v2.16.0-dev.1 -### Added -#### New Feature: πŸ§ͺ Image Lab - Conversational Image Generation for ComfyUI -- We've added a brand new conversational interface for image generation! Image Lab lets you iterate on images naturally through chat, rather than just one-off prompts. - - Local-First Power: Native support for Flux Kontext and Qwen Image Edit running entirely locally via your ComfyUI backend. - - Smart Setup: Stability Matrix automatically detects and helps you download the specific models and LoRAs needed for these local workflows. - - Interactive Tools: Drag-and-drop image inputs, use the built-in annotation tool to draw on images, and keep persistent conversation history. - - Cloud Option: Includes optional support for Nano Banana (Gemini 3 Pro/2.5) for users who want to leverage external reasoning models. -- Added new package - [Wan2GP](https://github.com/deepbeepmeep/Wan2GP) -- Added [Stable Diffusion WebUI Forge - Neo](https://github.com/Haoming02/sd-webui-forge-classic/tree/neo) as a separate package for convenience -- Added Intel GPU support for ComfyUI -- Added "Run Python Command" option to the package card's 3-dots menu for running arbitrary Python code in the package's virtual environment -- Added togglable `--uv` argument to the SD.Next launch options -- Added Tiled VAE decoding as an Inference addon thanks to @NeuralFault! -### Changed -- Moved the original Stable Diffusion WebUI Forge to the "Legacy" packages tab due to inactivity -- Updated to cu130 torch index for ComfyUI installs with Nvidia GPUs -- Consolidated and fixed AMD GPU architecture detection -- Updated SageAttention installer to latest v2.2.0-windows.post4 version -- Video files can now be opened directly from the Output browser -- Videos will now appear with thumbnails in the Output browser -### Fixed -- Fixed [#1450](https://github.com/LykosAI/StabilityMatrix/issues/1450) - Older SD.Next not launching due to forced `--uv` argument -- Fixed duplicate custom node installations when installing workflows from the Workflow Browser - thanks again to @NeuralFault! -### Supporters -#### 🌟 Visionaries -A massive thank you to our esteemed Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity is the powerhouse behind Stability Matrix, enabling us to keep building and refining with confidence. We are truly grateful for your partnership! - ->>>>>>> 343ade45 (Merge pull request #1248 from ionite34/update-comfy-zluda-args) ## v2.15.8 ### Added - Added support for the civitai.red (mature-content) domain β€” NSFW CivitAI links now open and copy as civitai.red URLs, and pasting a civitai.red URL into the CivitAI model browser search works the same as a civitai.com URL From ba2d72bd4f7b885a26d22dce472a4eaf8eeb2d9f Mon Sep 17 00:00:00 2001 From: JT Date: Sat, 16 May 2026 15:58:39 -0700 Subject: [PATCH 7/7] add new pioneers --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd4c7f333..71d082e62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2 #### 🌟 Visionaries Heaps of gratitude to our Visionaries β€” **Waterclouds**, **bluepopsicle**, **Ibixat**, **Droolguy**, **snotty**, **LG**, and **whudunit** β€” for sticking with us release after release. Your encouragement, your patience while we chase down those last bugs, and the sheer fact of you being here keeps us showing up at the keyboard. We're so glad you're part of this little corner of the internet with us. And big warm welcomes again to our newest Visionaries **MrMxyzptlk12836**, **Psilocyfer18731**, **KalAbaddon**, **RustCupcake**, and **moon_milky2843** β€” make yourselves at home, you're among friends! πŸ’› #### πŸš€ Pioneers -And the Pioneer crew β€” what a lineup. A massive thank-you to **Szir777**, **[USA]TechDude**, **takyamtom**, **SinthCore**, **Commissar Lord Death**, **Ahmed S**, **SeraphOfSalem**, and **Jisuren** β€” your steady presence, kind words, and patience as we've shifted things around mean more than you know. A heartfelt welcome back to **Tigon**, who's returned to the Pioneer ranks after a little time away β€” so glad you're back. πŸŽ‰ And a special hello to **jweg79**, who's been quietly supporting us for a while and just decided to step up and join the Pioneer crew this round β€” so happy to have you here. To our newest Pioneers, an enormous welcome: **rwx14662**, **Hurbie53**, **ahnhj.al**, **drew.lukas**, **Firelight**, **joeto332987**, **Tuskaruho**, **Cjloha**, and **Alligator1907**. We're absolutely thrilled to have you with us. (And to our anonymous Pioneer out there too, our thanks reaches you β€” we see you. πŸ’›) +And the Pioneer crew β€” what a lineup. A massive thank-you to **Szir777**, **[USA]TechDude**, **takyamtom**, **SinthCore**, **Commissar Lord Death**, **Ahmed S**, **SeraphOfSalem**, and **Jisuren** β€” your steady presence, kind words, and patience as we've shifted things around mean more than you know. A heartfelt welcome back to **Tigon**, who's returned to the Pioneer ranks after a little time away β€” so glad you're back. πŸŽ‰ And a special hello to **jweg79**, who's been quietly supporting us for a while and just decided to step up and join the Pioneer crew this round β€” so happy to have you here. To our newest Pioneers, an enormous welcome: **rwx14662**, **Hurbie53**, **ahnhj.al**, **drew.lukas**, **Firelight**, **joeto332987**, **Tuskaruho**, **Cjloha**, **Alligator1907**, **Bitti**, **damianpointdexter**, and **tmdcks**! We're absolutely thrilled to have you with us. (And to our anonymous Pioneer out there too, our thanks reaches you β€” we see you. πŸ’›) ## v2.15.7 ### Added