Showing preview only (8,431K chars total). Download the full file or copy to clipboard to get everything.
Repository: LykosAI/StabilityMatrix
Branch: main
Commit: 5d8a68d825fd
Files: 1529
Total size: 7.7 MB
Directory structure:
gitextract_tguifjg2/
├── .aiexclude
├── .backportrc.json
├── .config/
│ ├── .csharpierrc.json
│ └── dotnet-tools.json
├── .csharpierrc.yaml
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug.yml
│ │ ├── 2-bug-crash.yml
│ │ ├── 3-bug-package.yml
│ │ ├── 4-feature-request.yml
│ │ └── config.yml
│ ├── dependabot.yml
│ └── workflows/
│ ├── backport.yml
│ ├── build.yml
│ ├── cla.yml
│ ├── release.yml
│ ├── stale.yml
│ ├── test-ui.yml
│ └── version-bump.yml
├── .gitignore
├── .husky/
│ └── task-runner.json
├── Avalonia.Gif/
│ ├── Avalonia.Gif.csproj
│ ├── BgWorkerCommand.cs
│ ├── BgWorkerState.cs
│ ├── Decoding/
│ │ ├── BlockTypes.cs
│ │ ├── ExtensionType.cs
│ │ ├── FrameDisposal.cs
│ │ ├── GifColor.cs
│ │ ├── GifDecoder.cs
│ │ ├── GifFrame.cs
│ │ ├── GifHeader.cs
│ │ ├── GifRect.cs
│ │ ├── GifRepeatBehavior.cs
│ │ ├── InvalidGifStreamException.cs
│ │ └── LzwDecompressionException.cs
│ ├── Extensions/
│ │ └── StreamExtensions.cs
│ ├── GifImage.cs
│ ├── GifInstance.cs
│ ├── IGifInstance.cs
│ ├── InvalidGifStreamException.cs
│ └── WebpInstance.cs
├── Build/
│ ├── AppEntitlements.entitlements
│ ├── EmbeddedEntitlements.entitlements
│ ├── _utils.sh
│ ├── build_macos_app.sh
│ ├── codesign_embedded_macos.sh
│ ├── codesign_macos.sh
│ └── notarize_macos.sh
├── CHANGELOG.md
├── CONTRIBUTING.md
├── ConditionalSymbols.props
├── Directory.Build.props
├── Directory.Packages.props
├── Jenkinsfile
├── LICENSE
├── NuGet.Config
├── README.md
├── Runtimes.Default.props
├── StabilityMatrix/
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── AppxManifest.xml
│ ├── AssemblyInfo.cs
│ ├── Assets/
│ │ ├── 7za - LICENSE.txt
│ │ ├── Python310/
│ │ │ ├── LICENSE.txt
│ │ │ ├── _asyncio.pyd
│ │ │ ├── _bz2.pyd
│ │ │ ├── _ctypes.pyd
│ │ │ ├── _decimal.pyd
│ │ │ ├── _elementtree.pyd
│ │ │ ├── _hashlib.pyd
│ │ │ ├── _lzma.pyd
│ │ │ ├── _msi.pyd
│ │ │ ├── _multiprocessing.pyd
│ │ │ ├── _overlapped.pyd
│ │ │ ├── _queue.pyd
│ │ │ ├── _socket.pyd
│ │ │ ├── _sqlite3.pyd
│ │ │ ├── _ssl.pyd
│ │ │ ├── _uuid.pyd
│ │ │ ├── _zoneinfo.pyd
│ │ │ ├── pyexpat.pyd
│ │ │ ├── python.cat
│ │ │ ├── python310._pth
│ │ │ ├── select.pyd
│ │ │ ├── unicodedata.pyd
│ │ │ └── winsound.pyd
│ │ ├── automatic_vladmandic.sm-package.yml
│ │ ├── licenses.json
│ │ ├── sm-package.schema.json
│ │ └── venv/
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── scripts/
│ │ ├── common/
│ │ │ ├── Activate.ps1
│ │ │ └── activate
│ │ ├── nt/
│ │ │ ├── activate.bat
│ │ │ └── deactivate.bat
│ │ └── posix/
│ │ ├── activate.csh
│ │ └── activate.fish
│ ├── CheckpointBrowserPage.xaml
│ ├── CheckpointBrowserPage.xaml.cs
│ ├── CheckpointManagerPage.xaml
│ ├── CheckpointManagerPage.xaml.cs
│ ├── Controls/
│ │ ├── AppBrushes.cs
│ │ ├── ProgressBarSmoother.cs
│ │ ├── RefreshBadge.xaml
│ │ └── RefreshBadge.xaml.cs
│ ├── Converters/
│ │ ├── BoolNegationConverter.cs
│ │ ├── BooleanToHiddenVisibleConverter.cs
│ │ ├── IntDoubleConverter.cs
│ │ ├── IsStringNullOrWhitespaceConverter.cs
│ │ ├── LaunchOptionConverter.cs
│ │ ├── LaunchOptionIntDoubleConverter.cs
│ │ ├── NullToVisibilityConverter.cs
│ │ ├── StringNullOrEmptyToVisibilityConverter.cs
│ │ ├── UriToBitmapConverter.cs
│ │ └── ValueConverterGroup.cs
│ ├── DataDirectoryMigrationDialog.xaml
│ ├── DataDirectoryMigrationDialog.xaml.cs
│ ├── DesignData/
│ │ ├── MockCheckpointBrowserViewModel.cs
│ │ ├── MockCheckpointFolder.cs
│ │ ├── MockCheckpointManagerViewModel.cs
│ │ ├── MockFirstLaunchSetupViewModel.cs
│ │ ├── MockLaunchViewModel.cs
│ │ └── MockModelVersionDialogViewModel.cs
│ ├── ExceptionWindow.xaml
│ ├── ExceptionWindow.xaml.cs
│ ├── FirstLaunchSetupWindow.xaml
│ ├── FirstLaunchSetupWindow.xaml.cs
│ ├── Helper/
│ │ ├── AsyncDispatchTimer.cs
│ │ ├── DialogFactory.cs
│ │ ├── IDialogFactory.cs
│ │ ├── ISnackbarService.cs
│ │ ├── ScreenExtensions.cs
│ │ └── SnackbarService.cs
│ ├── InstallerWindow.xaml
│ ├── InstallerWindow.xaml.cs
│ ├── Interactions/
│ │ └── EventTriggerWithoutPropogation.cs
│ ├── LaunchOptionsDialog.xaml
│ ├── LaunchOptionsDialog.xaml.cs
│ ├── LaunchPage.xaml
│ ├── LaunchPage.xaml.cs
│ ├── MainWindow.xaml
│ ├── MainWindow.xaml.cs
│ ├── Models/
│ │ ├── CheckpointFile.cs
│ │ └── CheckpointFolder.cs
│ ├── OneClickInstallDialog.xaml
│ ├── OneClickInstallDialog.xaml.cs
│ ├── Package.appxmanifest
│ ├── PackageManagerPage.xaml
│ ├── PackageManagerPage.xaml.cs
│ ├── Properties/
│ │ └── launchSettings.json
│ ├── SelectInstallLocationsDialog.xaml
│ ├── SelectInstallLocationsDialog.xaml.cs
│ ├── SelectModelVersionDialog.xaml
│ ├── SelectModelVersionDialog.xaml.cs
│ ├── Services/
│ │ ├── INotificationBarService.cs
│ │ ├── InstallerWindowDialogService.cs
│ │ ├── NotificationBarService.cs
│ │ ├── PageContentDialogService.cs
│ │ └── PageService.cs
│ ├── SettingsPage.xaml
│ ├── SettingsPage.xaml.cs
│ ├── StabilityMatrix.csproj
│ ├── Styles/
│ │ └── Styles.xaml
│ ├── TextToImagePage.xaml
│ ├── TextToImagePage.xaml.cs
│ ├── UpdateWindow.xaml
│ ├── UpdateWindow.xaml.cs
│ ├── ViewModels/
│ │ ├── CheckpointBrowserCardViewModel.cs
│ │ ├── CheckpointBrowserViewModel.cs
│ │ ├── CheckpointManagerViewModel.cs
│ │ ├── DataDirectoryMigrationViewModel.cs
│ │ ├── ExceptionWindowViewModel.cs
│ │ ├── FirstLaunchSetupViewModel.cs
│ │ ├── InstallerViewModel.cs
│ │ ├── LaunchOptionsDialogViewModel.cs
│ │ ├── LaunchViewModel.cs
│ │ ├── MainWindowViewModel.cs
│ │ ├── OneClickInstallViewModel.cs
│ │ ├── PackageManagerViewModel.cs
│ │ ├── ProgressViewModel.cs
│ │ ├── RefreshBadgeViewModel.cs
│ │ ├── SelectInstallLocationsViewModel.cs
│ │ ├── SelectModelVersionDialogViewModel.cs
│ │ ├── SettingsViewModel.cs
│ │ ├── SnackbarViewModel.cs
│ │ ├── TextToImageViewModel.cs
│ │ ├── UpdateWindowViewModel.cs
│ │ └── WebLoginViewModel.cs
│ ├── WebLoginDialog.xaml
│ ├── WebLoginDialog.xaml.cs
│ ├── app.manifest
│ ├── appsettings.Development.json
│ └── appsettings.json
├── StabilityMatrix.Analyzers.CodeFixes/
│ └── StabilityMatrix.Analyzers.CodeFixes.csproj
├── StabilityMatrix.Avalonia/
│ ├── Animations/
│ │ ├── BaseTransitionInfo.cs
│ │ ├── BetterDrillInNavigationTransition.cs
│ │ ├── BetterEntranceNavigationTransition.cs
│ │ ├── BetterSlideNavigationTransition.cs
│ │ └── ItemsRepeaterArrangeAnimation.cs
│ ├── App.axaml
│ ├── App.axaml.cs
│ ├── Assets/
│ │ ├── AppIcon.icns
│ │ ├── Fonts/
│ │ │ └── NotoSansJP/
│ │ │ └── OFL.txt
│ │ ├── ImagePrompt.tmLanguage.json
│ │ ├── ThemeMatrixDark.json
│ │ ├── hf-packages.json
│ │ ├── licenses.json
│ │ ├── linux-x64/
│ │ │ ├── 7zzs
│ │ │ └── 7zzs - LICENSE.txt
│ │ ├── macos-arm64/
│ │ │ ├── 7zz
│ │ │ └── 7zz - LICENSE.txt
│ │ ├── markdown.css
│ │ ├── sdprompt.xshd
│ │ ├── sitecustomize.py
│ │ └── win-x64/
│ │ ├── 7za - LICENSE.txt
│ │ └── venv/
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── scripts/
│ │ ├── common/
│ │ │ ├── Activate.ps1
│ │ │ └── activate
│ │ ├── nt/
│ │ │ ├── activate.bat
│ │ │ └── deactivate.bat
│ │ └── posix/
│ │ ├── activate.csh
│ │ └── activate.fish
│ ├── Assets.cs
│ ├── Behaviors/
│ │ ├── ConditionalToolTipBehavior.cs
│ │ ├── ResizeBehavior.cs
│ │ ├── TextEditorCompletionBehavior.cs
│ │ ├── TextEditorToolTipBehavior.cs
│ │ └── TextEditorWeightAdjustmentBehavior.cs
│ ├── Collections/
│ │ └── SearchCollection.cs
│ ├── Controls/
│ │ ├── AdvancedImageBox.axaml
│ │ ├── AdvancedImageBox.axaml.cs
│ │ ├── AdvancedImageBoxView.axaml
│ │ ├── AdvancedImageBoxView.axaml.cs
│ │ ├── AppWindowBase.cs
│ │ ├── ApplicationSplashScreen.cs
│ │ ├── AutoGrid.cs
│ │ ├── BetterAdvancedImage.cs
│ │ ├── BetterComboBox.cs
│ │ ├── BetterContentDialog.cs
│ │ ├── BetterContextDragBehavior.cs
│ │ ├── BetterDownloadableComboBox.cs
│ │ ├── BetterFlyout.cs
│ │ ├── BetterImage.cs
│ │ ├── BetterMarkdownScrollViewer.cs
│ │ ├── Card.cs
│ │ ├── CheckerboardBorder.cs
│ │ ├── CodeCompletion/
│ │ │ ├── CompletionData.cs
│ │ │ ├── CompletionIcons.cs
│ │ │ ├── CompletionList.cs
│ │ │ ├── CompletionListBox.cs
│ │ │ ├── CompletionListThemes.axaml
│ │ │ ├── CompletionWindow.axaml
│ │ │ ├── CompletionWindow.axaml.cs
│ │ │ ├── CompletionWindowBase.cs
│ │ │ ├── ICompletionData.cs
│ │ │ ├── InsertionRequestEventArgs.cs
│ │ │ └── PopupWithCustomPosition.cs
│ │ ├── ComfyUpscalerTemplateSelector.cs
│ │ ├── DataTemplateSelector.cs
│ │ ├── Dock/
│ │ │ └── DockUserControlBase.cs
│ │ ├── DropTargetTemplatedControlBase.cs
│ │ ├── DropTargetUserControlBase.cs
│ │ ├── EditorCommands.cs
│ │ ├── EditorFlyouts.axaml
│ │ ├── FADownloadableComboBox.cs
│ │ ├── FASymbolIconSource.cs
│ │ ├── FrameCarousel.axaml
│ │ ├── FrameCarousel.axaml.cs
│ │ ├── GitVersionSelector.axaml
│ │ ├── GitVersionSelector.axaml.cs
│ │ ├── HybridModelTemplateSelector.cs
│ │ ├── HyperlinkIconButton.cs
│ │ ├── ImageLoaders.cs
│ │ ├── Inference/
│ │ │ ├── BatchSizeCard.axaml
│ │ │ ├── BatchSizeCard.axaml.cs
│ │ │ ├── CfzCudnnToggleCard.axaml
│ │ │ ├── CfzCudnnToggleCard.axaml.cs
│ │ │ ├── ControlNetCard.axaml
│ │ │ ├── ControlNetCard.axaml.cs
│ │ │ ├── DiscreteModelSamplingCard.axaml
│ │ │ ├── DiscreteModelSamplingCard.axaml.cs
│ │ │ ├── ExtraNetworkCard.axaml
│ │ │ ├── ExtraNetworkCard.axaml.cs
│ │ │ ├── FaceDetailerCard.axaml
│ │ │ ├── FaceDetailerCard.axaml.cs
│ │ │ ├── FreeUCard.axaml
│ │ │ ├── FreeUCard.axaml.cs
│ │ │ ├── ImageFolderCard.axaml
│ │ │ ├── ImageFolderCard.axaml.cs
│ │ │ ├── ImageGalleryCard.axaml
│ │ │ ├── ImageGalleryCard.axaml.cs
│ │ │ ├── LayerDiffuseCard.axaml
│ │ │ ├── LayerDiffuseCard.axaml.cs
│ │ │ ├── ModelCard.axaml
│ │ │ ├── ModelCard.axaml.cs
│ │ │ ├── NrsCard.axaml
│ │ │ ├── NrsCard.axaml.cs
│ │ │ ├── PlasmaNoiseCard.axaml
│ │ │ ├── PlasmaNoiseCard.axaml.cs
│ │ │ ├── PromptCard.axaml
│ │ │ ├── PromptCard.axaml.cs
│ │ │ ├── PromptExpansionCard.axaml
│ │ │ ├── PromptExpansionCard.axaml.cs
│ │ │ ├── RescaleCfgCard.axaml
│ │ │ ├── RescaleCfgCard.axaml.cs
│ │ │ ├── SamplerCard.axaml
│ │ │ ├── SamplerCard.axaml.cs
│ │ │ ├── SeedCard.axaml
│ │ │ ├── SeedCard.axaml.cs
│ │ │ ├── SelectImageCard.axaml
│ │ │ ├── SelectImageCard.axaml.cs
│ │ │ ├── SharpenCard.axaml
│ │ │ ├── SharpenCard.axaml.cs
│ │ │ ├── StackCard.axaml
│ │ │ ├── StackCard.axaml.cs
│ │ │ ├── StackEditableCard.axaml
│ │ │ ├── StackEditableCard.axaml.cs
│ │ │ ├── StackExpander.axaml
│ │ │ ├── StackExpander.axaml.cs
│ │ │ ├── TiledVAECard.axaml
│ │ │ ├── TiledVAECard.axaml.cs
│ │ │ ├── UnetModelCard.axaml
│ │ │ ├── UnetModelCard.axaml.cs
│ │ │ ├── UpscalerCard.axaml
│ │ │ ├── UpscalerCard.axaml.cs
│ │ │ ├── WanModelCard.axaml
│ │ │ └── WanModelCard.axaml.cs
│ │ ├── LaunchOptionCardTemplateSelector.cs
│ │ ├── LineDashFrame.cs
│ │ ├── MarkdownViewer.axaml
│ │ ├── MarkdownViewer.axaml.cs
│ │ ├── Models/
│ │ │ ├── GitVersionSelectorVersionType.cs
│ │ │ ├── PenPath.cs
│ │ │ ├── PenPoint.cs
│ │ │ └── SKLayer.cs
│ │ ├── Paginator.axaml
│ │ ├── Paginator.axaml.cs
│ │ ├── Painting/
│ │ │ ├── PaintCanvas.axaml
│ │ │ └── PaintCanvas.axaml.cs
│ │ ├── ProgressRing.cs
│ │ ├── PropertyGrid/
│ │ │ ├── BetterPropertyGrid.cs
│ │ │ ├── PropertyGridCultureData.cs
│ │ │ ├── PropertyGridLocalizationService.cs
│ │ │ └── ToggleSwitchCellEditFactory.cs
│ │ ├── RefreshBadge.axaml
│ │ ├── RefreshBadge.axaml.cs
│ │ ├── Scroll/
│ │ │ ├── BetterScrollContentPresenter.cs
│ │ │ ├── BetterScrollViewer.axaml
│ │ │ └── BetterScrollViewer.cs
│ │ ├── SelectableImageCard/
│ │ │ ├── SelectableImageButton.axaml
│ │ │ └── SelectableImageButton.cs
│ │ ├── SettingsAccountLinkExpander.axaml
│ │ ├── SettingsAccountLinkExpander.axaml.cs
│ │ ├── SkiaCustomCanvas.axaml
│ │ ├── SkiaCustomCanvas.axaml.cs
│ │ ├── StarsRating.axaml
│ │ ├── StarsRating.axaml.cs
│ │ ├── TemplatedControlBase.cs
│ │ ├── TextMarkers/
│ │ │ ├── TextMarker.cs
│ │ │ ├── TextMarkerService.cs
│ │ │ ├── TextMarkerValidationEventArgs.cs
│ │ │ └── TextMarkerValidatorService.cs
│ │ ├── TreeFileExplorer.axaml
│ │ ├── TreeFileExplorer.axaml.cs
│ │ ├── UserControlBase.cs
│ │ ├── VendorLabs/
│ │ │ ├── AsyncImage/
│ │ │ │ ├── AsyncImageFailedEventArgs.cs
│ │ │ │ ├── BetterAsyncImage.Events.cs
│ │ │ │ ├── BetterAsyncImage.Properties.cs
│ │ │ │ ├── BetterAsyncImage.cs
│ │ │ │ └── BetterAsyncImageCacheProvider.cs
│ │ │ ├── Cache/
│ │ │ │ ├── CacheBase.cs
│ │ │ │ ├── CacheOptions.cs
│ │ │ │ ├── FileCache.cs
│ │ │ │ ├── IImageCache.cs
│ │ │ │ ├── ImageCache.cs
│ │ │ │ ├── InMemoryStorage.cs
│ │ │ │ ├── InMemoryStorageItem.cs
│ │ │ │ └── MemoryImageCache.cs
│ │ │ ├── LICENSE
│ │ │ └── Themes/
│ │ │ └── BetterAsyncImage.axaml
│ │ ├── VideoGenerationSettingsCard.axaml
│ │ ├── VideoGenerationSettingsCard.axaml.cs
│ │ ├── VideoOutputSettingsCard.axaml
│ │ └── VideoOutputSettingsCard.axaml.cs
│ ├── Converters/
│ │ ├── BooleanChoiceMultiConverter.cs
│ │ ├── CivitImageWidthConverter.cs
│ │ ├── ComfyUpscalerConverter.cs
│ │ ├── CultureInfoDisplayConverter.cs
│ │ ├── CustomStringFormatConverter.cs
│ │ ├── EnumAttributeConverter.cs
│ │ ├── EnumAttributeConverters.cs
│ │ ├── EnumStringConverter.cs
│ │ ├── EnumToBooleanConverter.cs
│ │ ├── EnumToIntConverter.cs
│ │ ├── EnumToValuesConverter.cs
│ │ ├── FileSizeConverters.cs
│ │ ├── FileUriConverter.cs
│ │ ├── FitSquarelyWithinAspectRatioConverter.cs
│ │ ├── FuncCommandConverter.cs
│ │ ├── IndexPlusOneConverter.cs
│ │ ├── KiloFormatter.cs
│ │ ├── KiloFormatterStringConverter.cs
│ │ ├── LaunchOptionConverter.cs
│ │ ├── LaunchOptionIntDoubleConverter.cs
│ │ ├── MemoryBytesFormatter.cs
│ │ ├── MultiplyConverter.cs
│ │ ├── NullableDefaultNumericConverter.cs
│ │ ├── NullableDefaultNumericConverters.cs
│ │ ├── NumberFormatModeSampleConverter.cs
│ │ ├── StringFormatConverters.cs
│ │ ├── UriStringConverter.cs
│ │ └── ValueConverterGroup.cs
│ ├── DesignData/
│ │ ├── DesignData.cs
│ │ ├── MockCompletionProvider.cs
│ │ ├── MockDownloadProgressItemViewModel.cs
│ │ ├── MockGitVersionProvider.cs
│ │ ├── MockImageIndexService.cs
│ │ ├── MockInferenceClientManager.cs
│ │ ├── MockLaunchPageViewModel.cs
│ │ ├── MockMetadataImportService.cs
│ │ ├── MockModelIndexService.cs
│ │ ├── MockPropertyGridObject.cs
│ │ └── MockSettingsManager.cs
│ ├── DialogHelper.cs
│ ├── Extensions/
│ │ ├── AvaloniaEditExtensions.cs
│ │ ├── BitmapExtensions.cs
│ │ ├── ClipboardExtensions.cs
│ │ ├── ComfyNodeBuilderExtensions.cs
│ │ ├── DataObjectExtensions.cs
│ │ ├── EnumExtensions.cs
│ │ ├── InferenceProjectTypeExtensions.cs
│ │ ├── NotificationLevelExtensions.cs
│ │ ├── NotificationServiceExtensions.cs
│ │ ├── RelayCommandExtensions.cs
│ │ ├── ServiceManagerExtensions.cs
│ │ ├── SkiaExtensions.cs
│ │ ├── TextMateExtensions.cs
│ │ └── VisualExtensions.cs
│ ├── ExternalAnnotations/
│ │ ├── Microsoft.Extensions.Logging.Abstractions.xml
│ │ └── System.Runtime.xml
│ ├── FallbackRamCachedWebImageLoader.cs
│ ├── Helpers/
│ │ ├── AttributeServiceInjector.Reflection.cs
│ │ ├── AttributeServiceInjector.cs
│ │ ├── ClipboardCommands.cs
│ │ ├── ConsoleProcessRunner.cs
│ │ ├── EnumHelpers.cs
│ │ ├── IOCommands.cs
│ │ ├── ImageProcessor.cs
│ │ ├── ImageSearcher.cs
│ │ ├── MarkdownSnippets.cs
│ │ ├── PngDataHelper.cs
│ │ ├── TagCsvParser.cs
│ │ ├── TextEditorConfigs.cs
│ │ ├── UnixPrerequisiteHelper.cs
│ │ ├── UriHandler.cs
│ │ ├── ViewModelSerializer.cs
│ │ ├── Win32ClipboardFormat.cs
│ │ ├── WindowsClipboard.cs
│ │ ├── WindowsElevated.cs
│ │ ├── WindowsPrerequisiteHelper.cs
│ │ └── WindowsShortcuts.cs
│ ├── Languages/
│ │ ├── Cultures.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.cs-CZ.resx
│ │ ├── Resources.de.resx
│ │ ├── Resources.es.resx
│ │ ├── Resources.fr-FR.resx
│ │ ├── Resources.it-it.resx
│ │ ├── Resources.ja-JP.resx
│ │ ├── Resources.ko-KR.resx
│ │ ├── Resources.pt-BR.resx
│ │ ├── Resources.pt-PT.resx
│ │ ├── Resources.resx
│ │ ├── Resources.ru-ru.resx
│ │ ├── Resources.tr-TR.resx
│ │ ├── Resources.uk-UA.resx
│ │ ├── Resources.zh-Hans.resx
│ │ └── Resources.zh-Hant.resx
│ ├── Logging/
│ │ └── RichNLogTheme.cs
│ ├── MarkupExtensions/
│ │ ├── EnumValuesExtension.cs
│ │ └── TernaryExtension.cs
│ ├── Models/
│ │ ├── AdvancedObservableList.cs
│ │ ├── AppArgs.cs
│ │ ├── AvaloniaResource.cs
│ │ ├── CheckpointCategory.cs
│ │ ├── CommandItem.cs
│ │ ├── ContentDialogValueResult.cs
│ │ ├── DirectionalNavigationEventArgs.cs
│ │ ├── HuggingFace/
│ │ │ ├── HuggingFaceModelType.cs
│ │ │ └── HuggingfaceItem.cs
│ │ ├── IInfinitelyScroll.cs
│ │ ├── IJsonLoadableState.cs
│ │ ├── IParametersLoadableState.cs
│ │ ├── IPersistentViewProvider.cs
│ │ ├── IRemovableListItem.cs
│ │ ├── ITemplateKey.cs
│ │ ├── IconData.cs
│ │ ├── ImageCacheProviders.cs
│ │ ├── ImageSource.cs
│ │ ├── ImageSourceTemplateType.cs
│ │ ├── Inference/
│ │ │ ├── EditableModule.cs
│ │ │ ├── FileNameFormat.cs
│ │ │ ├── FileNameFormatPart.cs
│ │ │ ├── FileNameFormatProvider.cs
│ │ │ ├── FileNameFormatVar.cs
│ │ │ ├── GenerateFlags.cs
│ │ │ ├── GenerateOverrides.cs
│ │ │ ├── IComfyStep.cs
│ │ │ ├── IInputImageProvider.cs
│ │ │ ├── IValidatableModule.cs
│ │ │ ├── InferenceTextToImageModel.cs
│ │ │ ├── LatentType.cs
│ │ │ ├── LoadViewStateEventArgs.cs
│ │ │ ├── ModuleApplyStepEventArgs.cs
│ │ │ ├── NoiseType.cs
│ │ │ ├── Prompt.cs
│ │ │ ├── PromptAmplifierMode.cs
│ │ │ ├── PromptCardModel.cs
│ │ │ ├── SamplerCardModel.cs
│ │ │ ├── SaveViewStateEventArgs.cs
│ │ │ ├── SeedCardModel.cs
│ │ │ ├── StackCardModel.cs
│ │ │ ├── StackExpanderModel.cs
│ │ │ ├── UpscalerCardModel.cs
│ │ │ ├── VideoOutputMethod.cs
│ │ │ └── ViewState.cs
│ │ ├── InferenceProjectDocument.cs
│ │ ├── ObservableDictionary.cs
│ │ ├── OpenArtCustomNode.cs
│ │ ├── OpenArtMetadata.cs
│ │ ├── PackageManagerNavigationOptions.cs
│ │ ├── PackageSteps/
│ │ │ └── UnpackSiteCustomizeStep.cs
│ │ ├── PaintCanvasTool.cs
│ │ ├── PythonPackageSpecifiersItem.cs
│ │ ├── SelectableItem.cs
│ │ ├── SharedState.cs
│ │ ├── TagCompletion/
│ │ │ ├── CompletionProvider.cs
│ │ │ ├── CompletionType.cs
│ │ │ ├── EditorCompletionRequest.cs
│ │ │ ├── ICompletionProvider.cs
│ │ │ ├── ITokenizerProvider.cs
│ │ │ ├── ModelCompletionData.cs
│ │ │ ├── ModelTypeCompletionData.cs
│ │ │ ├── TagCompletionData.cs
│ │ │ ├── TagCsvEntry.cs
│ │ │ ├── TagType.cs
│ │ │ ├── TextCompletionRequest.cs
│ │ │ └── TokenizerProvider.cs
│ │ ├── TextEditorPreset.cs
│ │ ├── TreeFileExplorer/
│ │ │ ├── TreeFileExplorerDirectory.cs
│ │ │ ├── TreeFileExplorerFile.cs
│ │ │ ├── TreeFileExplorerItem.cs
│ │ │ ├── TreeFileExplorerOptions.cs
│ │ │ └── TreeFileExplorerType.cs
│ │ ├── TreeViewDirectory.cs
│ │ ├── TypedNavigationEventArgs.cs
│ │ ├── UpdateChannelCard.cs
│ │ └── ViewModelState.cs
│ ├── Program.cs
│ ├── Services/
│ │ ├── AccountsService.cs
│ │ ├── CivitBaseModelTypeService.cs
│ │ ├── ConnectedServiceManager.cs
│ │ ├── DiscordRichPresenceService.cs
│ │ ├── IAccountsService.cs
│ │ ├── ICivitBaseModelTypeService.cs
│ │ ├── IConnectedServiceManager.cs
│ │ ├── IDiscordRichPresenceService.cs
│ │ ├── IInferenceClientManager.cs
│ │ ├── IModelDownloadLinkHandler.cs
│ │ ├── IModelImportService.cs
│ │ ├── INavigationService.cs
│ │ ├── INotificationService.cs
│ │ ├── IServiceManager.cs
│ │ ├── IServiceManagerScope.cs
│ │ ├── InferenceClientManager.cs
│ │ ├── ModelDownloadLinkHandler.cs
│ │ ├── ModelImportService.cs
│ │ ├── NavigationService.cs
│ │ ├── NotificationService.cs
│ │ ├── RunningPackageService.cs
│ │ ├── ScopedServiceManager.cs
│ │ ├── ServiceManager.cs
│ │ ├── ServiceManagerScope.cs
│ │ └── TabContext.cs
│ ├── StabilityMatrix.Avalonia.csproj
│ ├── StabilityMatrix.Avalonia.csproj.DotSettings
│ ├── Styles/
│ │ ├── BorderStyles.axaml
│ │ ├── ButtonStyles.axaml
│ │ ├── Card.axaml
│ │ ├── CommandBarButtonStyles.axaml
│ │ ├── ContextMenuStyles.axaml
│ │ ├── ControlThemes/
│ │ │ ├── BetterComboBoxStyles.axaml
│ │ │ ├── ButtonStyles.Accelerator.axaml
│ │ │ ├── HyperlinkIconButtonStyles.axaml
│ │ │ ├── LabelStyles.Dark.axaml
│ │ │ ├── LabelStyles.axaml
│ │ │ ├── ListBoxStyles.axaml
│ │ │ └── _index.axaml
│ │ ├── DockStyles.axaml
│ │ ├── FAComboBoxStyles.axaml
│ │ ├── ListBoxStyles.axaml
│ │ ├── Markdown/
│ │ │ ├── MarkdownStyleFluentAvalonia.axaml
│ │ │ └── MarkdownStyleFluentAvalonia.axaml.cs
│ │ ├── ProgressRing.axaml
│ │ ├── SemiStyles.axaml
│ │ ├── SemiStyles.axaml.cs
│ │ ├── SplitButtonStyles.axaml
│ │ ├── TextBoxStyles.axaml
│ │ ├── ThemeColors.axaml
│ │ ├── ThemeColors.cs
│ │ ├── ThemeMaterials.axaml
│ │ └── ToggleButtonStyles.axaml
│ ├── ViewLocator.cs
│ ├── ViewModels/
│ │ ├── Base/
│ │ │ ├── ConsoleProgressViewModel.cs
│ │ │ ├── ContentDialogProgressViewModelBase.cs
│ │ │ ├── ContentDialogViewModelBase.cs
│ │ │ ├── DisposableLoadableViewModelBase.cs
│ │ │ ├── DisposableViewModelBase.cs
│ │ │ ├── InferenceGenerationViewModelBase.cs
│ │ │ ├── InferenceTabViewModelBase.cs
│ │ │ ├── LoadableViewModelBase.cs
│ │ │ ├── PageViewModelBase.cs
│ │ │ ├── PausableProgressItemViewModelBase.cs
│ │ │ ├── ProgressItemViewModelBase.cs
│ │ │ ├── ProgressViewModel.cs
│ │ │ ├── SelectableViewModelBase.cs
│ │ │ ├── TabViewModelBase.cs
│ │ │ ├── TaskDialogViewModelBase.cs
│ │ │ └── ViewModelBase.cs
│ │ ├── CheckpointBrowser/
│ │ │ ├── CheckpointBrowserCardViewModel.cs
│ │ │ ├── CivitAiBrowserViewModel.cs
│ │ │ ├── CivitDetailsPageViewModel.cs
│ │ │ ├── HuggingFacePageViewModel.cs
│ │ │ ├── OpenModelDbBrowserCardViewModel.cs
│ │ │ ├── OpenModelDbBrowserViewModel.Filters.cs
│ │ │ └── OpenModelDbBrowserViewModel.cs
│ │ ├── CheckpointBrowserViewModel.cs
│ │ ├── CheckpointManager/
│ │ │ ├── BaseModelOptionViewModel.cs
│ │ │ └── CheckpointFileViewModel.cs
│ │ ├── CheckpointsPageViewModel.cs
│ │ ├── ConsoleViewModel.cs
│ │ ├── Controls/
│ │ │ ├── GitVersionSelectorViewModel.cs
│ │ │ ├── PaintCanvasViewModel.Serializer.cs
│ │ │ └── PaintCanvasViewModel.cs
│ │ ├── Dialogs/
│ │ │ ├── AnalyticsOptInViewModel.cs
│ │ │ ├── CivitFileDisplayViewModel.cs
│ │ │ ├── CivitFileViewModel.cs
│ │ │ ├── CivitImageViewModel.cs
│ │ │ ├── ConfirmBulkDownloadDialogViewModel.cs
│ │ │ ├── ConfirmDeleteDialogViewModel.cs
│ │ │ ├── ConfirmPackageDeleteDialogViewModel.cs
│ │ │ ├── DownloadResourceViewModel.cs
│ │ │ ├── EnvVarsViewModel.cs
│ │ │ ├── ExceptionViewModel.cs
│ │ │ ├── ImageViewerViewModel.cs
│ │ │ ├── InferenceConnectionHelpViewModel.cs
│ │ │ ├── LaunchOptionsViewModel.cs
│ │ │ ├── LykosLoginViewModel.cs
│ │ │ ├── MaskEditorViewModel.cs
│ │ │ ├── ModelMetadataEditorDialogViewModel.cs
│ │ │ ├── ModelVersionViewModel.cs
│ │ │ ├── NewOneClickInstallViewModel.cs
│ │ │ ├── OAuthConnectViewModel.cs
│ │ │ ├── OAuthDeviceAuthViewModel.cs
│ │ │ ├── OAuthGoogleLoginViewModel.cs
│ │ │ ├── OAuthLoginViewModel.cs
│ │ │ ├── OneClickInstallViewModel.cs
│ │ │ ├── OpenArtWorkflowViewModel.cs
│ │ │ ├── OpenModelDbModelDetailsViewModel.cs
│ │ │ ├── PackageImportViewModel.cs
│ │ │ ├── PropertyGridViewModel.cs
│ │ │ ├── PythonPackageSpecifiersViewModel.cs
│ │ │ ├── PythonPackagesItemViewModel.cs
│ │ │ ├── PythonPackagesViewModel.cs
│ │ │ ├── RecommendedModelItemViewModel.cs
│ │ │ ├── RecommendedModelsViewModel.cs
│ │ │ ├── SafetensorMetadataViewModel.cs
│ │ │ ├── SelectDataDirectoryViewModel.cs
│ │ │ ├── SelectModelVersionViewModel.cs
│ │ │ ├── SponsorshipPromptViewModel.cs
│ │ │ └── UpdateViewModel.cs
│ │ ├── FirstLaunchSetupViewModel.cs
│ │ ├── HuggingFacePage/
│ │ │ ├── CategoryViewModel.cs
│ │ │ └── HuggingfaceItemViewModel.cs
│ │ ├── IDropTarget.cs
│ │ ├── Inference/
│ │ │ ├── BatchSizeCardViewModel.cs
│ │ │ ├── CfzCudnnToggleCardViewModel.cs
│ │ │ ├── ControlNetCardViewModel.cs
│ │ │ ├── DiscreteModelSamplingCardViewModel.cs
│ │ │ ├── ExtraNetworkCardViewModel.cs
│ │ │ ├── FaceDetailerViewModel.cs
│ │ │ ├── FreeUCardViewModel.cs
│ │ │ ├── IImageGalleryComponent.cs
│ │ │ ├── ImageFolderCardItemViewModel.cs
│ │ │ ├── ImageFolderCardViewModel.cs
│ │ │ ├── ImageGalleryCardViewModel.cs
│ │ │ ├── InferenceFluxTextToImageViewModel.cs
│ │ │ ├── InferenceImageToImageViewModel.cs
│ │ │ ├── InferenceImageToVideoViewModel.cs
│ │ │ ├── InferenceImageUpscaleViewModel.cs
│ │ │ ├── InferenceTextToImageViewModel.cs
│ │ │ ├── InferenceWanImageToVideoViewModel.cs
│ │ │ ├── InferenceWanTextToVideoViewModel.cs
│ │ │ ├── LayerDiffuseCardViewModel.cs
│ │ │ ├── ModelCardViewModel.cs
│ │ │ ├── Modules/
│ │ │ │ ├── CfzCudnnToggleModule.cs
│ │ │ │ ├── ControlNetModule.cs
│ │ │ │ ├── DiscreteModelSamplingModule.cs
│ │ │ │ ├── FaceDetailerModule.cs
│ │ │ │ ├── FluxGuidanceModule.cs
│ │ │ │ ├── FluxHiresFixModule.cs
│ │ │ │ ├── FreeUModule.cs
│ │ │ │ ├── HiresFixModule.cs
│ │ │ │ ├── LayerDiffuseModule.cs
│ │ │ │ ├── LoraModule.cs
│ │ │ │ ├── ModuleBase.cs
│ │ │ │ ├── NRSModule.cs
│ │ │ │ ├── PlasmaNoiseModule.cs
│ │ │ │ ├── PromptExpansionModule.cs
│ │ │ │ ├── RescaleCfgModule.cs
│ │ │ │ ├── SaveImageModule.cs
│ │ │ │ ├── TiledVAEModule.cs
│ │ │ │ └── UpscalerModule.cs
│ │ │ ├── NrsCardViewModel.cs
│ │ │ ├── PlasmaNoiseCardViewModel.cs
│ │ │ ├── PromptCardViewModel.cs
│ │ │ ├── PromptExpansionCardViewModel.cs
│ │ │ ├── RescaleCfgCardViewModel.cs
│ │ │ ├── SamplerCardViewModel.cs
│ │ │ ├── SeedCardViewModel.cs
│ │ │ ├── SelectImageCardViewModel.cs
│ │ │ ├── SharpenCardViewModel.cs
│ │ │ ├── StackCardViewModel.cs
│ │ │ ├── StackEditableCardViewModel.cs
│ │ │ ├── StackExpanderViewModel.cs
│ │ │ ├── StackViewModelBase.cs
│ │ │ ├── TiledVAECardViewModel.cs
│ │ │ ├── UnetModelCardViewModel.cs
│ │ │ ├── UpscalerCardViewModel.cs
│ │ │ ├── Video/
│ │ │ │ ├── ImgToVidModelCardViewModel.cs
│ │ │ │ ├── SvdImgToVidConditioningViewModel.cs
│ │ │ │ └── VideoOutputSettingsCardViewModel.cs
│ │ │ ├── WanModelCardViewModel.cs
│ │ │ └── WanSamplerCardViewModel.cs
│ │ ├── InferenceViewModel.cs
│ │ ├── InstalledWorkflowsViewModel.cs
│ │ ├── LaunchPageViewModel.cs
│ │ ├── MainWindowViewModel.cs
│ │ ├── OpenArtBrowserViewModel.cs
│ │ ├── OutputsPage/
│ │ │ └── OutputImageViewModel.cs
│ │ ├── OutputsPageViewModel.cs
│ │ ├── PackageManager/
│ │ │ ├── MainPackageManagerViewModel.cs
│ │ │ ├── PackageCardViewModel.cs
│ │ │ ├── PackageExtensionBrowserViewModel.cs
│ │ │ ├── PackageInstallBrowserViewModel.cs
│ │ │ └── PackageInstallDetailViewModel.cs
│ │ ├── PackageManagerViewModel.cs
│ │ ├── Progress/
│ │ │ ├── DownloadProgressItemViewModel.cs
│ │ │ ├── PackageInstallProgressItemViewModel.cs
│ │ │ ├── ProgressItemViewModel.cs
│ │ │ └── ProgressManagerViewModel.cs
│ │ ├── RefreshBadgeViewModel.cs
│ │ ├── RunningPackageViewModel.cs
│ │ ├── Settings/
│ │ │ ├── AccountSettingsViewModel.cs
│ │ │ ├── AnalyticsSettingsViewModel.cs
│ │ │ ├── InferenceSettingsViewModel.cs
│ │ │ ├── MainSettingsViewModel.cs
│ │ │ ├── NotificationSettingsItem.cs
│ │ │ ├── NotificationSettingsViewModel.cs
│ │ │ └── UpdateSettingsViewModel.cs
│ │ ├── SettingsViewModel.cs
│ │ └── WorkflowsPageViewModel.cs
│ ├── Views/
│ │ ├── CheckpointBrowserPage.axaml
│ │ ├── CheckpointBrowserPage.axaml.cs
│ │ ├── CheckpointsPage.axaml
│ │ ├── CheckpointsPage.axaml.cs
│ │ ├── CivitAiBrowserPage.axaml
│ │ ├── CivitAiBrowserPage.axaml.cs
│ │ ├── CivitDetailsPage.axaml
│ │ ├── CivitDetailsPage.axaml.cs
│ │ ├── ConsoleOutputPage.axaml
│ │ ├── ConsoleOutputPage.axaml.cs
│ │ ├── Dialogs/
│ │ │ ├── AnalyticsOptInDialog.axaml
│ │ │ ├── AnalyticsOptInDialog.axaml.cs
│ │ │ ├── ConfirmBulkDownloadDialog.axaml
│ │ │ ├── ConfirmBulkDownloadDialog.axaml.cs
│ │ │ ├── ConfirmDeleteDialog.axaml
│ │ │ ├── ConfirmDeleteDialog.axaml.cs
│ │ │ ├── ConfirmPackageDeleteDialog.axaml
│ │ │ ├── ConfirmPackageDeleteDialog.axaml.cs
│ │ │ ├── DownloadResourceDialog.axaml
│ │ │ ├── DownloadResourceDialog.axaml.cs
│ │ │ ├── EnvVarsDialog.axaml
│ │ │ ├── EnvVarsDialog.axaml.cs
│ │ │ ├── ExceptionDialog.axaml
│ │ │ ├── ExceptionDialog.axaml.cs
│ │ │ ├── ImageViewerDialog.axaml
│ │ │ ├── ImageViewerDialog.axaml.cs
│ │ │ ├── InferenceConnectionHelpDialog.axaml
│ │ │ ├── InferenceConnectionHelpDialog.axaml.cs
│ │ │ ├── LaunchOptionsDialog.axaml
│ │ │ ├── LaunchOptionsDialog.axaml.cs
│ │ │ ├── LykosLoginDialog.axaml
│ │ │ ├── LykosLoginDialog.axaml.cs
│ │ │ ├── MaskEditorDialog.axaml
│ │ │ ├── MaskEditorDialog.axaml.cs
│ │ │ ├── ModelMetadataEditorDialog.axaml
│ │ │ ├── ModelMetadataEditorDialog.axaml.cs
│ │ │ ├── NewOneClickInstallDialog.axaml
│ │ │ ├── NewOneClickInstallDialog.axaml.cs
│ │ │ ├── OAuthConnectDialog.axaml
│ │ │ ├── OAuthConnectDialog.axaml.cs
│ │ │ ├── OAuthDeviceAuthDialog.axaml
│ │ │ ├── OAuthDeviceAuthDialog.axaml.cs
│ │ │ ├── OAuthLoginDialog.axaml
│ │ │ ├── OAuthLoginDialog.axaml.cs
│ │ │ ├── OneClickInstallDialog.axaml
│ │ │ ├── OneClickInstallDialog.axaml.cs
│ │ │ ├── OpenArtWorkflowDialog.axaml
│ │ │ ├── OpenArtWorkflowDialog.axaml.cs
│ │ │ ├── OpenModelDbModelDetailsDialog.axaml
│ │ │ ├── OpenModelDbModelDetailsDialog.axaml.cs
│ │ │ ├── PackageImportDialog.axaml
│ │ │ ├── PackageImportDialog.axaml.cs
│ │ │ ├── PackageModificationDialog.axaml
│ │ │ ├── PackageModificationDialog.axaml.cs
│ │ │ ├── PropertyGridDialog.axaml
│ │ │ ├── PropertyGridDialog.axaml.cs
│ │ │ ├── PythonPackageSpecifiersDialog.axaml
│ │ │ ├── PythonPackageSpecifiersDialog.axaml.cs
│ │ │ ├── PythonPackagesDialog.axaml
│ │ │ ├── PythonPackagesDialog.axaml.cs
│ │ │ ├── RecommendedModelsDialog.axaml
│ │ │ ├── RecommendedModelsDialog.axaml.cs
│ │ │ ├── SafetensorMetadataDialog.axaml
│ │ │ ├── SafetensorMetadataDialog.axaml.cs
│ │ │ ├── SelectDataDirectoryDialog.axaml
│ │ │ ├── SelectDataDirectoryDialog.axaml.cs
│ │ │ ├── SelectModelVersionDialog.axaml
│ │ │ ├── SelectModelVersionDialog.axaml.cs
│ │ │ ├── SponsorshipPromptDialog.axaml
│ │ │ ├── SponsorshipPromptDialog.axaml.cs
│ │ │ ├── UpdateDialog.axaml
│ │ │ └── UpdateDialog.axaml.cs
│ │ ├── FirstLaunchSetupWindow.axaml
│ │ ├── FirstLaunchSetupWindow.axaml.cs
│ │ ├── HuggingFacePage.axaml
│ │ ├── HuggingFacePage.axaml.cs
│ │ ├── Inference/
│ │ │ ├── InferenceImageToImageView.axaml
│ │ │ ├── InferenceImageToImageView.axaml.cs
│ │ │ ├── InferenceImageToVideoView.axaml
│ │ │ ├── InferenceImageToVideoView.axaml.cs
│ │ │ ├── InferenceImageUpscaleView.axaml
│ │ │ ├── InferenceImageUpscaleView.axaml.cs
│ │ │ ├── InferenceTextToImageView.axaml
│ │ │ ├── InferenceTextToImageView.axaml.cs
│ │ │ ├── InferenceWanImageToVideoView.axaml
│ │ │ ├── InferenceWanImageToVideoView.axaml.cs
│ │ │ ├── InferenceWanTextToVideoView.axaml
│ │ │ └── InferenceWanTextToVideoView.axaml.cs
│ │ ├── InferencePage.axaml
│ │ ├── InferencePage.axaml.cs
│ │ ├── InstalledWorkflowsPage.axaml
│ │ ├── InstalledWorkflowsPage.axaml.cs
│ │ ├── LaunchPageView.axaml
│ │ ├── LaunchPageView.axaml.cs
│ │ ├── MainWindow.axaml
│ │ ├── MainWindow.axaml.cs
│ │ ├── OpenArtBrowserPage.axaml
│ │ ├── OpenArtBrowserPage.axaml.cs
│ │ ├── OpenModelDbBrowserPage.axaml
│ │ ├── OpenModelDbBrowserPage.axaml.cs
│ │ ├── OutputsPage.axaml
│ │ ├── OutputsPage.axaml.cs
│ │ ├── PackageManager/
│ │ │ ├── MainPackageManagerView.axaml
│ │ │ ├── MainPackageManagerView.axaml.cs
│ │ │ ├── PackageExtensionBrowserView.axaml
│ │ │ ├── PackageExtensionBrowserView.axaml.cs
│ │ │ ├── PackageInstallBrowserView.axaml
│ │ │ ├── PackageInstallBrowserView.axaml.cs
│ │ │ ├── PackageInstallDetailView.axaml
│ │ │ └── PackageInstallDetailView.axaml.cs
│ │ ├── PackageManagerPage.axaml
│ │ ├── PackageManagerPage.axaml.cs
│ │ ├── ProgressManagerPage.axaml
│ │ ├── ProgressManagerPage.axaml.cs
│ │ ├── Settings/
│ │ │ ├── AccountSettingsPage.axaml
│ │ │ ├── AccountSettingsPage.axaml.cs
│ │ │ ├── AnalyticsSettingsPage.axaml
│ │ │ ├── AnalyticsSettingsPage.axaml.cs
│ │ │ ├── InferenceSettingsPage.axaml
│ │ │ ├── InferenceSettingsPage.axaml.cs
│ │ │ ├── MainSettingsPage.axaml
│ │ │ ├── MainSettingsPage.axaml.cs
│ │ │ ├── NotificationSettingsPage.axaml
│ │ │ ├── NotificationSettingsPage.axaml.cs
│ │ │ ├── UpdateSettingsPage.axaml
│ │ │ └── UpdateSettingsPage.axaml.cs
│ │ ├── SettingsPage.axaml
│ │ ├── SettingsPage.axaml.cs
│ │ ├── WorkflowsPage.axaml
│ │ └── WorkflowsPage.axaml.cs
│ └── app.manifest
├── StabilityMatrix.Avalonia.Diagnostics/
│ ├── LogViewer/
│ │ ├── Controls/
│ │ │ ├── LogViewerControl.axaml
│ │ │ └── LogViewerControl.axaml.cs
│ │ ├── Converters/
│ │ │ ├── ChangeColorTypeConverter.cs
│ │ │ └── EventIdConverter.cs
│ │ ├── Core/
│ │ │ ├── Extensions/
│ │ │ │ └── LoggerExtensions.cs
│ │ │ ├── Logging/
│ │ │ │ ├── DataStoreLoggerConfiguration.cs
│ │ │ │ ├── ILogDataStore.cs
│ │ │ │ ├── ILogDataStoreImpl.cs
│ │ │ │ ├── LogDataStore.cs
│ │ │ │ ├── LogEntryColor.cs
│ │ │ │ └── LogModel.cs
│ │ │ └── ViewModels/
│ │ │ ├── LogViewerControlViewModel.cs
│ │ │ ├── ObservableObject.cs
│ │ │ └── ViewModel.cs
│ │ ├── DataStoreLoggerTarget.cs
│ │ ├── Extensions/
│ │ │ └── ServicesExtension.cs
│ │ ├── LICENSE
│ │ ├── Logging/
│ │ │ └── LogDataStore.cs
│ │ └── README.md
│ ├── StabilityMatrix.Avalonia.Diagnostics.csproj
│ ├── ViewModels/
│ │ └── LogWindowViewModel.cs
│ └── Views/
│ ├── LogWindow.axaml
│ └── LogWindow.axaml.cs
├── StabilityMatrix.Avalonia.pupnet.conf
├── StabilityMatrix.Core/
│ ├── Animation/
│ │ └── GifConverter.cs
│ ├── Api/
│ │ ├── A3WebApiManager.cs
│ │ ├── ApiFactory.cs
│ │ ├── CivitCompatApiManager.cs
│ │ ├── IA3WebApi.cs
│ │ ├── IA3WebApiManager.cs
│ │ ├── IApiFactory.cs
│ │ ├── ICivitApi.cs
│ │ ├── ICivitTRPCApi.cs
│ │ ├── IComfyApi.cs
│ │ ├── IHuggingFaceApi.cs
│ │ ├── IInvokeAiApi.cs
│ │ ├── ILykosAnalyticsApi.cs
│ │ ├── ILykosAuthApiV1.cs
│ │ ├── ILykosModelDiscoveryApi.cs
│ │ ├── IOpenArtApi.cs
│ │ ├── IOpenModelDbApi.cs
│ │ ├── IPyPiApi.cs
│ │ ├── ITokenProvider.cs
│ │ ├── LykosAuthApi/
│ │ │ ├── .refitter
│ │ │ ├── Generated/
│ │ │ │ └── Refitter.g.cs
│ │ │ └── IRecommendedModelsApi.cs
│ │ ├── LykosAuthTokenProvider.cs
│ │ ├── OpenIdClientConstants.cs
│ │ ├── PromptGen/
│ │ │ ├── .refitter
│ │ │ └── Generated/
│ │ │ └── Refitter.g.cs
│ │ └── TokenAuthHeaderHandler.cs
│ ├── Attributes/
│ │ ├── BoolStringMemberAttribute.cs
│ │ ├── ManagedServiceAttribute.cs
│ │ ├── PreloadAttribute.cs
│ │ ├── SingletonAttribute.cs
│ │ ├── TransientAttribute.cs
│ │ ├── TypedNodeOptionsAttribute.cs
│ │ └── ViewAttribute.cs
│ ├── Converters/
│ │ └── Json/
│ │ ├── AnalyticsRequestConverter.cs
│ │ ├── DefaultUnknownEnumConverter.cs
│ │ ├── LaunchOptionValueJsonConverter.cs
│ │ ├── NodeConnectionBaseJsonConverter.cs
│ │ ├── OneOfJsonConverter.cs
│ │ ├── ParsableStringValueJsonConverter.cs
│ │ ├── SKColorJsonConverter.cs
│ │ ├── SemVersionJsonConverter.cs
│ │ └── StringJsonConverter.cs
│ ├── Database/
│ │ ├── CivitModelQueryCacheEntry.cs
│ │ ├── ILiteDbContext.cs
│ │ └── LiteDbContext.cs
│ ├── Exceptions/
│ │ ├── AppException.cs
│ │ ├── CivitDownloadDisabledException.cs
│ │ ├── CivitLoginRequiredException.cs
│ │ ├── ComfyNodeException.cs
│ │ ├── EarlyAccessException.cs
│ │ ├── FileExistsException.cs
│ │ ├── HuggingFaceLoginRequiredException.cs
│ │ ├── MissingPrerequisiteException.cs
│ │ ├── ProcessException.cs
│ │ ├── PromptError.cs
│ │ ├── PromptSyntaxError.cs
│ │ ├── PromptUnknownModelError.cs
│ │ └── PromptValidationError.cs
│ ├── Extensions/
│ │ ├── DictionaryExtensions.cs
│ │ ├── DirectoryPathExtensions.cs
│ │ ├── DynamicDataExtensions.cs
│ │ ├── EnumAttributes.cs
│ │ ├── EnumConversion.cs
│ │ ├── EnumerableExtensions.cs
│ │ ├── HashExtensions.cs
│ │ ├── JsonObjectExtensions.cs
│ │ ├── LiteDBExtensions.cs
│ │ ├── NullableExtensions.cs
│ │ ├── ObjectExtensions.cs
│ │ ├── ProgressExtensions.cs
│ │ ├── SemVersionExtensions.cs
│ │ ├── ServiceProviderExtensions.cs
│ │ ├── SizeExtensions.cs
│ │ ├── StringExtensions.cs
│ │ ├── TypeExtensions.cs
│ │ └── UriExtensions.cs
│ ├── Git/
│ │ ├── CachedCommandGitVersionProvider.cs
│ │ ├── CommandGitVersionProvider.cs
│ │ └── IGitVersionProvider.cs
│ ├── Helper/
│ │ ├── Analytics/
│ │ │ ├── AnalyticsHelper.cs
│ │ │ └── IAnalyticsHelper.cs
│ │ ├── ArchiveHelper.cs
│ │ ├── Cache/
│ │ │ ├── GithubApiCache.cs
│ │ │ ├── IGithubApiCache.cs
│ │ │ ├── IPyPiCache.cs
│ │ │ ├── LRUCache.cs
│ │ │ └── PyPiCache.cs
│ │ ├── CodeTimer.cs
│ │ ├── Compat.cs
│ │ ├── EnumerationOptionConstants.cs
│ │ ├── EnvPathBuilder.cs
│ │ ├── EventManager.cs
│ │ ├── Factory/
│ │ │ ├── IPackageFactory.cs
│ │ │ └── PackageFactory.cs
│ │ ├── FileHash.cs
│ │ ├── FileTransfers.cs
│ │ ├── GenerationParametersConverter.cs
│ │ ├── HardwareInfo/
│ │ │ ├── CpuInfo.cs
│ │ │ ├── GpuInfo.cs
│ │ │ ├── HardwareHelper.cs
│ │ │ ├── MemoryInfo.cs
│ │ │ ├── MemoryLevel.cs
│ │ │ └── Win32MemoryStatusEx.cs
│ │ ├── IPrerequisiteHelper.cs
│ │ ├── ISharedFolders.cs
│ │ ├── ImageMetadata.cs
│ │ ├── LazyInstance.cs
│ │ ├── MinimumDelay.cs
│ │ ├── ModelCompatChecker.cs
│ │ ├── ModelFinder.cs
│ │ ├── MyTiffFile.cs
│ │ ├── ObjectHash.cs
│ │ ├── PlatformKind.cs
│ │ ├── ProcessTracker.cs
│ │ ├── PropertyComparer.cs
│ │ ├── ReaderWriterLockAdvanced.cs
│ │ ├── RemoteModels.cs
│ │ ├── SharedFolders.cs
│ │ ├── SharedFoldersConfigHelper.cs
│ │ ├── SharedFoldersConfigOptions.cs
│ │ ├── Size.cs
│ │ ├── SystemInfo.cs
│ │ ├── Utilities.cs
│ │ └── Webp/
│ │ └── WebpReader.cs
│ ├── Inference/
│ │ ├── ComfyClient.cs
│ │ ├── ComfyProgressUpdateEventArgs.cs
│ │ ├── ComfyTask.cs
│ │ └── InferenceClientBase.cs
│ ├── Models/
│ │ ├── Api/
│ │ │ ├── A3Options.cs
│ │ │ ├── CivitAccountStatusUpdateEventArgs.cs
│ │ │ ├── CivitBaseModelType.cs
│ │ │ ├── CivitCommercialUse.cs
│ │ │ ├── CivitCreator.cs
│ │ │ ├── CivitFile.cs
│ │ │ ├── CivitFileHashes.cs
│ │ │ ├── CivitFileMetadata.cs
│ │ │ ├── CivitFileType.cs
│ │ │ ├── CivitImage.cs
│ │ │ ├── CivitMetadata.cs
│ │ │ ├── CivitMode.cs
│ │ │ ├── CivitModel.cs
│ │ │ ├── CivitModelFormat.cs
│ │ │ ├── CivitModelFpType.cs
│ │ │ ├── CivitModelSize.cs
│ │ │ ├── CivitModelStats.cs
│ │ │ ├── CivitModelType.cs
│ │ │ ├── CivitModelVersion.cs
│ │ │ ├── CivitModelVersionResponse.cs
│ │ │ ├── CivitModelsRequest.cs
│ │ │ ├── CivitModelsResponse.cs
│ │ │ ├── CivitPeriod.cs
│ │ │ ├── CivitSortMode.cs
│ │ │ ├── CivitStats.cs
│ │ │ ├── CivitTRPC/
│ │ │ │ ├── CivitApiTokens.cs
│ │ │ │ ├── CivitGetUserByIdRequest.cs
│ │ │ │ ├── CivitGetUserByIdResponse.cs
│ │ │ │ ├── CivitImageGenerationDataResponse.cs
│ │ │ │ ├── CivitUserAccountResponse.cs
│ │ │ │ ├── CivitUserProfileRequest.cs
│ │ │ │ ├── CivitUserProfileResponse.cs
│ │ │ │ └── CivitUserToggleFavoriteModelRequest.cs
│ │ │ ├── Comfy/
│ │ │ │ ├── ComfyAuxPreprocessor.cs
│ │ │ │ ├── ComfyHistoryOutput.cs
│ │ │ │ ├── ComfyHistoryResponse.cs
│ │ │ │ ├── ComfyImage.cs
│ │ │ │ ├── ComfyInputInfo.cs
│ │ │ │ ├── ComfyObjectInfo.cs
│ │ │ │ ├── ComfyPromptRequest.cs
│ │ │ │ ├── ComfyPromptResponse.cs
│ │ │ │ ├── ComfySampler.cs
│ │ │ │ ├── ComfySamplerScheduler.cs
│ │ │ │ ├── ComfyScheduler.cs
│ │ │ │ ├── ComfyUploadImageResponse.cs
│ │ │ │ ├── ComfyUpscaler.cs
│ │ │ │ ├── ComfyUpscalerType.cs
│ │ │ │ ├── ComfyWebSocketResponse.cs
│ │ │ │ ├── ComfyWebSocketResponseType.cs
│ │ │ │ ├── ComfyWebSocketResponseUnion.cs
│ │ │ │ ├── NodeTypes/
│ │ │ │ │ ├── ConditioningConnections.cs
│ │ │ │ │ ├── ModelConnections.cs
│ │ │ │ │ ├── NodeConnectionBase.cs
│ │ │ │ │ ├── NodeConnections.cs
│ │ │ │ │ └── PrimaryNodeConnection.cs
│ │ │ │ ├── Nodes/
│ │ │ │ │ ├── ComfyNode.cs
│ │ │ │ │ ├── ComfyNodeBuilder.cs
│ │ │ │ │ ├── ComfyTypedNodeBase.cs
│ │ │ │ │ ├── IOutputNode.cs
│ │ │ │ │ ├── NamedComfyNode.cs
│ │ │ │ │ ├── NodeDictionary.cs
│ │ │ │ │ └── RerouteNode.cs
│ │ │ │ └── WebSocketData/
│ │ │ │ ├── ComfyStatus.cs
│ │ │ │ ├── ComfyStatusExecInfo.cs
│ │ │ │ ├── ComfyWebSocketExecutingData.cs
│ │ │ │ ├── ComfyWebSocketExecutionErrorData.cs
│ │ │ │ ├── ComfyWebSocketImageData.cs
│ │ │ │ ├── ComfyWebSocketProgressData.cs
│ │ │ │ └── ComfyWebSocketStatusData.cs
│ │ │ ├── HuggingFace/
│ │ │ │ └── HuggingFaceUser.cs
│ │ │ ├── HuggingFaceAccountStatusUpdateEventArgs.cs
│ │ │ ├── ImageResponse.cs
│ │ │ ├── Invoke/
│ │ │ │ ├── InstallModelRequest.cs
│ │ │ │ ├── ModelInstallResult.cs
│ │ │ │ └── ScanFolderResult.cs
│ │ │ ├── Lykos/
│ │ │ │ ├── Analytics/
│ │ │ │ │ ├── AnalyticsRequest.cs
│ │ │ │ │ ├── FirstTimeInstallAnalytics.cs
│ │ │ │ │ ├── LaunchAnalyticsRequest.cs
│ │ │ │ │ └── PackageInstallAnalyticsRequest.cs
│ │ │ │ ├── GetDownloadResponse.cs
│ │ │ │ ├── GetRecommendedModelsResponse.cs
│ │ │ │ ├── GetUserResponse.cs
│ │ │ │ ├── GoogleOAuthResponse.cs
│ │ │ │ ├── LykosAccount.cs
│ │ │ │ ├── LykosAccountStatusUpdateEventArgs.cs
│ │ │ │ ├── LykosAccountV1Tokens.cs
│ │ │ │ ├── LykosAccountV2Tokens.cs
│ │ │ │ ├── LykosRole.cs
│ │ │ │ ├── PostAccountRequest.cs
│ │ │ │ ├── PostLoginRefreshRequest.cs
│ │ │ │ ├── PostLoginRequest.cs
│ │ │ │ └── RecommendedModelsV2Response.cs
│ │ │ ├── OpenArt/
│ │ │ │ ├── NodesCount.cs
│ │ │ │ ├── OpenArtCreator.cs
│ │ │ │ ├── OpenArtDateTime.cs
│ │ │ │ ├── OpenArtDownloadRequest.cs
│ │ │ │ ├── OpenArtDownloadResponse.cs
│ │ │ │ ├── OpenArtFeedRequest.cs
│ │ │ │ ├── OpenArtSearchRequest.cs
│ │ │ │ ├── OpenArtSearchResponse.cs
│ │ │ │ ├── OpenArtSearchResult.cs
│ │ │ │ ├── OpenArtStats.cs
│ │ │ │ └── OpenArtThumbnail.cs
│ │ │ ├── OpenModelsDb/
│ │ │ │ ├── OpenModelDbArchitecture.cs
│ │ │ │ ├── OpenModelDbArchitecturesResponse.cs
│ │ │ │ ├── OpenModelDbImage.cs
│ │ │ │ ├── OpenModelDbKeyedModel.cs
│ │ │ │ ├── OpenModelDbModel.cs
│ │ │ │ ├── OpenModelDbModelsResponse.cs
│ │ │ │ ├── OpenModelDbResource.cs
│ │ │ │ ├── OpenModelDbTag.cs
│ │ │ │ └── OpenModelDbTagsResponse.cs
│ │ │ ├── ProgressRequest.cs
│ │ │ ├── ProgressResponse.cs
│ │ │ ├── Pypi/
│ │ │ │ ├── PyPiReleaseFile.cs
│ │ │ │ └── PyPiResponse.cs
│ │ │ └── TextToImageRequest.cs
│ │ ├── Base/
│ │ │ └── StringValue.cs
│ │ ├── CheckpointSortMode.cs
│ │ ├── CheckpointSortOptions.cs
│ │ ├── CivitPostDownloadContextAction.cs
│ │ ├── CivitaiResource.cs
│ │ ├── ComfyNodeMap.cs
│ │ ├── Configs/
│ │ │ ├── ApiOptions.cs
│ │ │ └── DebugOptions.cs
│ │ ├── ConnectedModelInfo.cs
│ │ ├── ConnectedModelSource.cs
│ │ ├── CustomVersion.cs
│ │ ├── Database/
│ │ │ ├── CivitBaseModelTypeCacheEntry.cs
│ │ │ ├── GitCommit.cs
│ │ │ ├── GithubCacheEntry.cs
│ │ │ ├── InferenceProjectEntry.cs
│ │ │ ├── LocalImageFile.cs
│ │ │ ├── LocalImageFileType.cs
│ │ │ ├── LocalModelFile.cs
│ │ │ ├── LocalModelFolder.cs
│ │ │ └── PyPiCacheEntry.cs
│ │ ├── DimensionStringComparer.cs
│ │ ├── DownloadPackageVersionOptions.cs
│ │ ├── EnvVarKeyPair.cs
│ │ ├── ExtraPackageCommand.cs
│ │ ├── FDS/
│ │ │ ├── ComfyUiSelfStartSettings.cs
│ │ │ └── StableSwarmSettings.cs
│ │ ├── FileInterfaces/
│ │ │ ├── DirectoryPath.cs
│ │ │ ├── FilePath.Fluent.cs
│ │ │ ├── FilePath.cs
│ │ │ ├── FileSystemPath.cs
│ │ │ ├── IPathObject.cs
│ │ │ └── TempDirectoryPath.cs
│ │ ├── FileSizeType.cs
│ │ ├── GenerationParameters.cs
│ │ ├── GitVersion.cs
│ │ ├── GlobalConfig.cs
│ │ ├── GlobalEncryptedSerializer.cs
│ │ ├── HybridModelFile.cs
│ │ ├── HybridModelType.cs
│ │ ├── IContextAction.cs
│ │ ├── IDownloadableResource.cs
│ │ ├── IHandleNavigation.cs
│ │ ├── ISearchText.cs
│ │ ├── IndexCollection.cs
│ │ ├── Inference/
│ │ │ ├── InferenceProjectType.cs
│ │ │ ├── LayerDiffuseMode.cs
│ │ │ ├── ModelLoader.cs
│ │ │ └── ModuleApplyStepTemporaryArgs.cs
│ │ ├── InferenceDefaults.cs
│ │ ├── InferenceRunCustomPromptEventArgs.cs
│ │ ├── InstalledPackage.cs
│ │ ├── InstalledPackageVersion.cs
│ │ ├── LaunchOption.cs
│ │ ├── LaunchOptionCard.cs
│ │ ├── LaunchOptionDefinition.cs
│ │ ├── LaunchOptionType.cs
│ │ ├── LicenseInfo.cs
│ │ ├── LoadState.cs
│ │ ├── ModelPostDownloadContextAction.cs
│ │ ├── ObservableHashSet.cs
│ │ ├── OrderedValue.cs
│ │ ├── PackageDifficulty.cs
│ │ ├── PackageModification/
│ │ │ ├── ActionPackageStep.cs
│ │ │ ├── AddInstalledPackageStep.cs
│ │ │ ├── DownloadOpenArtWorkflowStep.cs
│ │ │ ├── DownloadPackageVersionStep.cs
│ │ │ ├── ICancellablePackageStep.cs
│ │ │ ├── IPackageModificationRunner.cs
│ │ │ ├── ImportModelsStep.cs
│ │ │ ├── InstallExtensionStep.cs
│ │ │ ├── InstallNunchakuStep.cs
│ │ │ ├── InstallPackageStep.cs
│ │ │ ├── InstallSageAttentionStep.cs
│ │ │ ├── PackageModificationRunner.cs
│ │ │ ├── PackageStep.cs
│ │ │ ├── PipStep.cs
│ │ │ ├── ProcessStep.cs
│ │ │ ├── ScanMetadataStep.cs
│ │ │ ├── SetPackageInstallingStep.cs
│ │ │ ├── SetupModelFoldersStep.cs
│ │ │ ├── SetupOutputSharingStep.cs
│ │ │ ├── SetupPrerequisitesStep.cs
│ │ │ ├── UninstallExtensionStep.cs
│ │ │ ├── UpdateExtensionStep.cs
│ │ │ └── UpdatePackageStep.cs
│ │ ├── PackagePair.cs
│ │ ├── PackagePrerequisite.cs
│ │ ├── PackageType.cs
│ │ ├── PackageVersion.cs
│ │ ├── PackageVersionType.cs
│ │ ├── Packages/
│ │ │ ├── A3WebUI.cs
│ │ │ ├── AiToolkit.cs
│ │ │ ├── BaseGitPackage.cs
│ │ │ ├── BasePackage.cs
│ │ │ ├── Cogstudio.cs
│ │ │ ├── ComfyUI.cs
│ │ │ ├── ComfyZluda.cs
│ │ │ ├── Config/
│ │ │ │ ├── ConfigDefaultType.cs
│ │ │ │ ├── ConfigFileType.cs
│ │ │ │ ├── ConfigSharingOptions.cs
│ │ │ │ ├── FdsConfigSharingStrategy.cs
│ │ │ │ ├── IConfigSharingStrategy.cs
│ │ │ │ ├── JsonConfigSharingStrategy.cs
│ │ │ │ └── YamlConfigSharingStrategy.cs
│ │ │ ├── DankDiffusion.cs
│ │ │ ├── Extensions/
│ │ │ │ ├── A1111ExtensionManifest.cs
│ │ │ │ ├── ComfyExtensionManifest.cs
│ │ │ │ ├── ExtensionManifest.cs
│ │ │ │ ├── ExtensionPack.cs
│ │ │ │ ├── ExtensionSpecifier.cs
│ │ │ │ ├── GitPackageExtensionManager.cs
│ │ │ │ ├── IPackageExtensionManager.cs
│ │ │ │ ├── InstalledPackageExtension.cs
│ │ │ │ ├── PackageExtension.cs
│ │ │ │ ├── PackageExtensionVersion.cs
│ │ │ │ ├── SavedPackageExtension.cs
│ │ │ │ └── VladExtensionItem.cs
│ │ │ ├── FluxGym.cs
│ │ │ ├── FocusControlNet.cs
│ │ │ ├── Fooocus.cs
│ │ │ ├── FooocusMre.cs
│ │ │ ├── ForgeAmdGpu.cs
│ │ │ ├── ForgeClassic.cs
│ │ │ ├── ForgeNeo.cs
│ │ │ ├── FramePack.cs
│ │ │ ├── FramePackStudio.cs
│ │ │ ├── IArgParsable.cs
│ │ │ ├── InvokeAI.cs
│ │ │ ├── KohyaSs.cs
│ │ │ ├── Mashb1tFooocus.cs
│ │ │ ├── OneTrainer.cs
│ │ │ ├── Options/
│ │ │ │ ├── DownloadPackageOptions.cs
│ │ │ │ ├── InstallPackageOptions.cs
│ │ │ │ ├── PythonPackageOptions.cs
│ │ │ │ ├── RunPackageOptions.cs
│ │ │ │ └── UpdatePackageOptions.cs
│ │ │ ├── PackageVersionOptions.cs
│ │ │ ├── PackageVulnerability.cs
│ │ │ ├── PipInstallConfig.cs
│ │ │ ├── Reforge.cs
│ │ │ ├── RuinedFooocus.cs
│ │ │ ├── SDWebForge.cs
│ │ │ ├── Sdfx.cs
│ │ │ ├── SharedFolderLayout.cs
│ │ │ ├── SharedFolderLayoutRule.cs
│ │ │ ├── SimpleSDXL.cs
│ │ │ ├── StableDiffusionDirectMl.cs
│ │ │ ├── StableDiffusionUx.cs
│ │ │ ├── StableSwarm.cs
│ │ │ ├── UnknownPackage.cs
│ │ │ ├── VladAutomatic.cs
│ │ │ ├── VoltaML.cs
│ │ │ └── Wan2GP.cs
│ │ ├── Progress/
│ │ │ ├── ProgressItem.cs
│ │ │ ├── ProgressReport.cs
│ │ │ ├── ProgressState.cs
│ │ │ └── ProgressType.cs
│ │ ├── PromptSyntax/
│ │ │ ├── PromptNode.cs
│ │ │ ├── PromptSyntaxBuilder.cs
│ │ │ ├── PromptSyntaxTree.cs
│ │ │ └── TextSpan.cs
│ │ ├── RelayPropertyChangedEventArgs.cs
│ │ ├── RemoteResource.cs
│ │ ├── SafetensorMetadata.cs
│ │ ├── Secrets.cs
│ │ ├── Settings/
│ │ │ ├── AnalyticsSettings.cs
│ │ │ ├── GlobalSettings.cs
│ │ │ ├── HolidayMode.cs
│ │ │ ├── LastDownloadLocationInfo.cs
│ │ │ ├── LibrarySettings.cs
│ │ │ ├── ModelSearchOptions.cs
│ │ │ ├── NotificationKey.cs
│ │ │ ├── NotificationLevel.cs
│ │ │ ├── NotificationOption.cs
│ │ │ ├── NumberFormatMode.cs
│ │ │ ├── Settings.cs
│ │ │ ├── SettingsTransaction.cs
│ │ │ ├── Size.cs
│ │ │ ├── TeachingTip.cs
│ │ │ └── WindowSettings.cs
│ │ ├── SharedFolderMethod.cs
│ │ ├── SharedFolderType.cs
│ │ ├── SharedOutputType.cs
│ │ ├── StringValue.cs
│ │ ├── TaskResult.cs
│ │ ├── Tokens/
│ │ │ ├── PromptExtraNetwork.cs
│ │ │ └── PromptExtraNetworkType.cs
│ │ ├── TorchIndex.cs
│ │ ├── TrackedDownload.cs
│ │ ├── UnknownInstalledPackage.cs
│ │ └── Update/
│ │ ├── UpdateChannel.cs
│ │ ├── UpdateInfo.cs
│ │ ├── UpdateManifest.cs
│ │ ├── UpdatePlatforms.cs
│ │ └── UpdateType.cs
│ ├── Processes/
│ │ ├── AnsiCommand.cs
│ │ ├── AnsiParser.cs
│ │ ├── AnsiProcess.cs
│ │ ├── ApcMessage.cs
│ │ ├── ApcParser.cs
│ │ ├── ApcType.cs
│ │ ├── Argument.cs
│ │ ├── AsyncStreamReader.cs
│ │ ├── ProcessArgs.cs
│ │ ├── ProcessArgsBuilder.cs
│ │ ├── ProcessOutput.cs
│ │ ├── ProcessResult.cs
│ │ └── ProcessRunner.cs
│ ├── Python/
│ │ ├── ArgParser.cs
│ │ ├── IPyInstallationManager.cs
│ │ ├── IPyRunner.cs
│ │ ├── IPyVenvRunner.cs
│ │ ├── IUvManager.cs
│ │ ├── Interop/
│ │ │ └── PyIOStream.cs
│ │ ├── MajorMinorVersion.cs
│ │ ├── PipIndexResult.cs
│ │ ├── PipInstallArgs.cs
│ │ ├── PipPackageInfo.cs
│ │ ├── PipPackageSpecifier.cs
│ │ ├── PipPackageSpecifierOverride.cs
│ │ ├── PipPackageSpecifierOverrideAction.cs
│ │ ├── PipShowResult.cs
│ │ ├── PyBaseInstall.cs
│ │ ├── PyInstallation.cs
│ │ ├── PyInstallationManager.cs
│ │ ├── PyRunner.cs
│ │ ├── PyVenvRunner.cs
│ │ ├── PyVersion.cs
│ │ ├── QueryTclTkLibraryResult.cs
│ │ ├── UvInstallArgs.cs
│ │ ├── UvManager.cs
│ │ ├── UvPackageSpecifier.cs
│ │ ├── UvPackageSpecifierOverride.cs
│ │ ├── UvPackageSpecifierOverrideAction.cs
│ │ ├── UvPythonInfo.cs
│ │ ├── UvPythonListEntry.cs
│ │ └── UvVenvRunner.cs
│ ├── ReparsePoints/
│ │ ├── DeviceIoControlCode.cs
│ │ ├── Junction.cs
│ │ ├── ReparseDataBuffer.cs
│ │ ├── Win32CreationDisposition.cs
│ │ ├── Win32ErrorCode.cs
│ │ ├── Win32FileAccess.cs
│ │ ├── Win32FileAttribute.cs
│ │ └── Win32FileShare.cs
│ ├── Services/
│ │ ├── DownloadService.cs
│ │ ├── IDownloadService.cs
│ │ ├── IImageIndexService.cs
│ │ ├── IMetadataImportService.cs
│ │ ├── IModelIndexService.cs
│ │ ├── IPipWheelService.cs
│ │ ├── ISecretsManager.cs
│ │ ├── ISettingsManager.cs
│ │ ├── ITrackedDownloadService.cs
│ │ ├── ImageIndexService.cs
│ │ ├── MetadataImportService.cs
│ │ ├── ModelIndexService.cs
│ │ ├── OpenModelDbManager.cs
│ │ ├── PipWheelService.cs
│ │ ├── SecretsManager.cs
│ │ ├── SettingsManager.cs
│ │ └── TrackedDownloadService.cs
│ ├── StabilityMatrix.Core.csproj
│ ├── StabilityMatrix.Core.csproj.DotSettings
│ ├── Updater/
│ │ ├── IUpdateHelper.cs
│ │ ├── SignatureChecker.cs
│ │ ├── UpdateHelper.cs
│ │ └── UpdateStatusChangedEventArgs.cs
│ └── Validators/
│ └── RequiresMatchAttribute.cs
├── StabilityMatrix.Native/
│ ├── NativeFileOperations.cs
│ └── StabilityMatrix.Native.csproj
├── StabilityMatrix.Native.Abstractions/
│ ├── INativeRecycleBinProvider.cs
│ ├── NativeFileOperationFlags.cs
│ └── StabilityMatrix.Native.Abstractions.csproj
├── StabilityMatrix.Native.Windows/
│ ├── AssemblyInfo.cs
│ ├── FileOperations/
│ │ └── FileOperationWrapper.cs
│ ├── GlobalUsings.cs
│ ├── Interop/
│ │ ├── ComReleaser.cs
│ │ ├── FileOperationFlags.cs
│ │ ├── FileOperationProgressSinkTcs.cs
│ │ ├── IFileOperation.cs
│ │ ├── IFileOperationProgressSink.cs
│ │ ├── IShellItem.cs
│ │ ├── IShellItemArray.cs
│ │ └── SIGDN.cs
│ ├── NativeRecycleBinProvider.cs
│ └── StabilityMatrix.Native.Windows.csproj
├── StabilityMatrix.Native.macOS/
│ ├── AssemblyInfo.cs
│ ├── NativeRecycleBinProvider.cs
│ └── StabilityMatrix.Native.macOS.csproj
├── StabilityMatrix.Tests/
│ ├── Avalonia/
│ │ ├── CheckpointFileViewModelTests.cs
│ │ ├── Converters/
│ │ │ └── NullableDefaultNumericConverterTests.cs
│ │ ├── DesignDataTests.cs
│ │ ├── FileNameFormatProviderTests.cs
│ │ ├── FileNameFormatTests.cs
│ │ ├── LoadableViewModelBaseTests.cs
│ │ ├── PromptTests.cs
│ │ └── UpdateViewModelTests.cs
│ ├── Core/
│ │ ├── AnsiParserTests.cs
│ │ ├── AsyncStreamReaderTests.cs
│ │ ├── DefaultUnknownEnumConverterTests.cs
│ │ ├── FileSystemPathTests.cs
│ │ ├── GlobalEncryptedSerializerTests.cs
│ │ ├── ModelIndexServiceTests.cs
│ │ ├── PipInstallArgsTests.cs
│ │ ├── PipShowResultsTests.cs
│ │ └── ServiceProviderExtensionsTests.cs
│ ├── Helper/
│ │ ├── EventManagerTests.cs
│ │ ├── ImageProcessorTests.cs
│ │ └── PackageFactoryTests.cs
│ ├── Models/
│ │ ├── GenerationParametersTests.cs
│ │ ├── InstalledPackageTests.cs
│ │ ├── LocalModelFileTests.cs
│ │ ├── Packages/
│ │ │ ├── PackageHelper.cs
│ │ │ ├── PackageLinkTests.cs
│ │ │ └── SharedFolderConfigHelperTests.cs
│ │ ├── ProcessArgsTests.cs
│ │ ├── SafetensorMetadataTests.cs
│ │ └── SharedFoldersTests.cs
│ ├── Native/
│ │ └── NativeRecycleBinProviderTests.cs
│ ├── ReparsePoints/
│ │ └── JunctionTests.cs
│ ├── StabilityMatrix.Tests.csproj
│ ├── TempFiles.cs
│ └── Usings.cs
├── StabilityMatrix.UITests/
│ ├── Attributes/
│ │ └── TestPriorityAttribute.cs
│ ├── Extensions/
│ │ ├── VisualExtensions.cs
│ │ └── WindowExtensions.cs
│ ├── MainWindowTests.cs
│ ├── ModelBrowser/
│ │ └── CivitAiBrowserTests.cs
│ ├── ModuleInit.cs
│ ├── PriorityOrderer.cs
│ ├── Snapshots/
│ │ ├── MainWindowTests.MainWindowViewModel_ShouldOk.verified.txt
│ │ └── MainWindowTests.MainWindow_ShouldOpen.verified.txt
│ ├── StabilityMatrix.UITests.csproj
│ ├── TempDirFixture.cs
│ ├── TestAppBuilder.cs
│ ├── TestBase.cs
│ ├── Usings.cs
│ ├── VerifyConfig.cs
│ └── WaitHelper.cs
├── StabilityMatrix.sln
├── StabilityMatrix.sln.DotSettings
├── Tools/
│ ├── ConvertAttributes.csx
│ └── add_resx_strings.py
├── analyzers/
│ ├── StabilityMatrix.Analyzers/
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── StabilityMatrix.Analyzers.csproj
│ │ └── ViewModelControlConventionAnalyzer.cs
│ └── StabilityMatrix.Analyzers.CodeFixes/
│ ├── ControlMustInheritBaseFixProvider.cs
│ ├── DocumentEditorExtensions.cs
│ ├── MissingViewAttributeFixProvider.cs
│ └── StabilityMatrix.Analyzers.CodeFixes.csproj
└── global.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .aiexclude
================================================
# Docs
LICENSE
CHANGELOG.md
# Legacy
StabilityMatrix/
# Tests
*.verified.*
# Misc projects
StabilityMatrix.Native/
StabilityMatrix.Native.*/
StabilityMatrix.Avalonia.Diagnostics/
StabilityMatrix.Avalonia.Diagnostics/
StabilityMatrix.UITests/
# Vendored
Avalonia.Gif/
# Configs
*.editorconfig
*.DotSettings
# Assets
*.svg
StabilityMatrix.Avalonia/Assets/Fonts/
StabilityMatrix.Avalonia/Assets/linux-x64/
StabilityMatrix.Avalonia/Assets/macos-arm64/
StabilityMatrix.Avalonia/Assets/win-x64/
================================================
FILE: .backportrc.json
================================================
{
"sourceBranch": "dev",
"targetBranch": "main",
"mainline": 1,
"fork": false,
"targetPRLabels": ["backport"],
"prTitle": "[{{sourceBranch}} to {{targetBranch}}] backport: {{sourcePullRequest.title}} ({{sourcePullRequest.number}})"
}
================================================
FILE: .config/.csharpierrc.json
================================================
{
"printWidth": 110,
"preprocessorSymbolSets": ["", "DEBUG", "DEBUG,CODE_STYLE"]
}
================================================
FILE: .config/dotnet-tools.json
================================================
{
"version": 1,
"isRoot": true,
"tools": {
"husky": {
"version": "0.7.2",
"commands": [
"husky"
],
"rollForward": false
},
"xamlstyler.console": {
"version": "3.2404.2",
"commands": [
"xstyler"
],
"rollForward": false
},
"csharpier": {
"version": "1.0.1",
"commands": [
"csharpier"
],
"rollForward": false
},
"refitter": {
"version": "1.4.1",
"commands": [
"refitter"
],
"rollForward": false
},
"dotnet-script": {
"version": "1.6.0",
"commands": [
"dotnet-script"
],
"rollForward": false
}
}
}
================================================
FILE: .csharpierrc.yaml
================================================
printWidth: 110
================================================
FILE: .editorconfig
================================================
root = true
[*.cs]
max_line_length = 120
csharp_style_var_for_built_in_types = true:suggestion
dotnet_sort_system_directives_first = true
# ReSharper properties
resharper_csharp_max_line_length = 120
resharper_place_field_attribute_on_same_line = false
# dotnet code quality
# noinspection EditorConfigKeyCorrectness
dotnet_code_quality.ca1826.exclude_ordefault_methods = true
# Microsoft .NET properties
csharp_new_line_before_members_in_object_initializers = false
csharp_preferred_modifier_order = public, private, protected, internal, file, static, new, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
csharp_style_prefer_utf8_string_literals = true:suggestion
csharp_style_var_elsewhere = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
dotnet_naming_rule.private_constants_rule.import_to_resharper = True
dotnet_naming_rule.private_constants_rule.resharper_description = Constant fields (private)
dotnet_naming_rule.private_constants_rule.resharper_guid = 236f7aa5-7b06-43ca-bf2a-9b31bfcff09a
dotnet_naming_rule.private_constants_rule.severity = warning
dotnet_naming_rule.private_constants_rule.style = upper_camel_case_style
dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
dotnet_naming_rule.private_instance_fields_rule.import_to_resharper = True
dotnet_naming_rule.private_instance_fields_rule.resharper_description = Instance fields (private)
dotnet_naming_rule.private_instance_fields_rule.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
dotnet_naming_rule.private_instance_fields_rule.resharper_style = aaBb, _ + aaBb
dotnet_naming_rule.private_instance_fields_rule.severity = warning
dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style_1
dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols
dotnet_naming_rule.private_static_fields_rule.import_to_resharper = True
dotnet_naming_rule.private_static_fields_rule.resharper_description = Static fields (private)
dotnet_naming_rule.private_static_fields_rule.resharper_guid = f9fce829-e6f4-4cb2-80f1-5497c44f51df
dotnet_naming_rule.private_static_fields_rule.severity = warning
dotnet_naming_rule.private_static_fields_rule.style = lower_camel_case_style
dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols
dotnet_naming_rule.private_static_readonly_rule.import_to_resharper = True
dotnet_naming_rule.private_static_readonly_rule.resharper_description = Static readonly fields (private)
dotnet_naming_rule.private_static_readonly_rule.resharper_guid = 15b5b1f1-457c-4ca6-b278-5615aedc07d3
dotnet_naming_rule.private_static_readonly_rule.severity = warning
dotnet_naming_rule.private_static_readonly_rule.style = upper_camel_case_style
dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols
dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
dotnet_naming_style.lower_camel_case_style.required_prefix = _
dotnet_naming_style.lower_camel_case_style_1.capitalization = camel_case
dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
dotnet_naming_symbols.private_constants_symbols.resharper_applicable_kinds = constant_field
dotnet_naming_symbols.private_constants_symbols.resharper_required_modifiers = any
dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field
dotnet_naming_symbols.private_instance_fields_symbols.resharper_applicable_kinds = field,readonly_field
dotnet_naming_symbols.private_instance_fields_symbols.resharper_required_modifiers = instance
dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static
dotnet_naming_symbols.private_static_fields_symbols.resharper_applicable_kinds = field
dotnet_naming_symbols.private_static_fields_symbols.resharper_required_modifiers = static
dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = readonly,static
dotnet_naming_symbols.private_static_readonly_symbols.resharper_applicable_kinds = readonly_field
dotnet_naming_symbols.private_static_readonly_symbols.resharper_required_modifiers = static
dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none
dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
dotnet_style_qualification_for_event = false:suggestion
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
================================================
FILE: .github/FUNDING.yml
================================================
patreon: StabilityMatrix
ko_fi: StabilityMatrix
================================================
FILE: .github/ISSUE_TEMPLATE/1-bug.yml
================================================
name: Bug report
description: Submit a bug report
labels: ["bug", "triage"]
body:
- type: markdown
attributes:
value: |
**New to Stability Matrix?**
For help or advice on using Stability Matrix, try one of the following options instead of opening a GitHub issue:
- Asking on our [Discord server](https://link.lykos.ai/discord?ref=github-issue-template)
- Creating a post on [Discussions](https://github.com/LykosAI/StabilityMatrix/discussions)
This template is for reporting bugs experienced within the Stability Matrix app.
If your issue is regarding Package behavior when running it, or when installing or updating a specific Package, please use the [Package issue template](https://github.com/LykosAI/StabilityMatrix/issues/new/choose) instead.
Make sure to also search the [existing issues](https://github.com/LykosAI/StabilityMatrix/issues) to see if your issue has already been reported.
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Give a clear and concise description of what happened. Provide screenshots or videos of UI if necessary. Also tell us, what did you expect to happen?
placeholder: |
When dragging a model file into the ... page to import, I expected to see...
Instead, I saw...
validations:
required: true
- type: textarea
id: how-to-reproduce
attributes:
label: Steps to reproduce
description: Include a minimal step-by-step guide to reproduce the issue if possible.
placeholder: |
1. Open Stability Matrix
2. Go to the ... page
3. Click on the ... button
4. Expected to see ... open, but instead ...
- type: textarea
id: app-logs
attributes:
label: Relevant logs
description: Please copy and paste any relevant log output. (This will be automatically formatted, so no need for backticks.)
render: shell
- type: input
id: version
attributes:
label: Version
description: What version of Stability Matrix are you running? (Can be found at the bottom of the settings page)
placeholder: ex. v2.11.0
validations:
required: true
- type: dropdown
id: os-platform
attributes:
label: What Operating System are you using?
options:
- Windows
- macOS
- Linux
- Other
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/2-bug-crash.yml
================================================
name: Crash report
description: A crash of Stability Matrix, likely with the "An unexpected error occurred" dialog
labels: ["bug", "crash", "triage"]
body:
- type: markdown
attributes:
value: |
This template is for reporting crashes of Stability Matrix, likely with the "An unexpected error occurred" dialog.
If you are experiencing a different issue, please use the [Bug Report or Package Issue templates](https://github.com/LykosAI/StabilityMatrix/issues/new/choose).
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Give a clear and concise description of what happened. Include some minimal steps to reproducible the issue if possible.
placeholder: |
1. Open Stability Matrix
2. Go to the "..." page
3. Click on the "..." button
4. See the crash
validations:
required: true
- type: textarea
id: exception-details
attributes:
label: Exception Details
description: Please click the "Copy Details" button on the crash dialog and paste the details exactly as formatted here.
placeholder: |
## Exception
OperationCanceledException: Example Message
### Sentry ID
```
bc7da9b2fcc3e3568ceb81a72f3a128d
```
### Stack Trace
```
at StabilityMatrix.Avalonia.ViewModels.Settings.MainSettingsViewModel.DebugThrowException() in MainSettingsViewModel.cs:line 716
at CommunityToolkit.Mvvm.Input.RelayCommand.Execute(Object parameter)
...
```
- type: input
id: version
attributes:
label: Version
description: What version of Stability Matrix are you running? (Can be found at the bottom of the settings page)
placeholder: ex. v2.11.0
validations:
required: true
- type: dropdown
id: os-platform
attributes:
label: What Operating System are you using?
options:
- Windows
- macOS
- Linux
- Other
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/3-bug-package.yml
================================================
name: Package issue
description: Report an issue with installing, updating, or running a Package
labels: ["bug", "area: package", "triage"]
body:
- type: markdown
attributes:
value: |
**Experiencing an issue while running a Package?**
Make sure to also search the GitHub issues of the Package, to see if your issue has already been reported and being worked on by upstream authors.
- type: textarea
id: package-details
attributes:
label: Package
description: Provide the name of the Package you are experiencing issues with
placeholder: ex. `ComfyUI`
validations:
required: true
- type: dropdown
id: package-issue-phase
attributes:
label: When did the issue occur?
options:
- Installing the Package
- Updating the Package
- Running the Package
- Other
validations:
required: true
- type: input
id: hardware
attributes:
label: What GPU / hardware type are you using?
description: Installed dependencies and Package features often depend on the GPU or hardware type you are using.
placeholder: ex. Nvidia 2080 Super with CUDA, AMD Radeon VII, etc.
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Give a clear and concise description of what happened. Provide screenshots if necessary. Also tell us, what did you expect to happen?
validations:
required: true
- type: textarea
id: console-output
attributes:
label: Console output
description: Please copy and paste any console output or error messages. For failed install or updates, locate the progress on the bottom left, open the dialog, and click on "More Details" to copy the full console output.
placeholder: |
```
Unpacking...
Successfully built lycoris_lora
Installing collected packages: library, tomlkit, onnx, ml-dtypes, onnxruntime-gpu
Running setup.py develop for library
Attempting uninstall: onnx
Found existing installation: onnx 1.14.1
...
```
- type: input
id: version
attributes:
label: Version
description: What version of Stability Matrix are you running? (Can be found at the bottom of the settings page)
placeholder: ex. v2.11.0
validations:
required: true
- type: dropdown
id: os-platform
attributes:
label: What Operating System are you using?
options:
- Windows
- macOS
- Linux
- Other
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/4-feature-request.yml
================================================
name: Feature or enhancement
description: Submit a proposal for a new Stability Matrix feature or enhancement
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Consider first discussing your idea on our [Discord server](https://link.lykos.ai/discord?ref=github-issue-template) to get feedback from the developers and the community.
- type: textarea
id: proposal
attributes:
label: Proposal
description: Explain your idea for a new feature or enhancement. Include any relevant details or links to resources like Package documentation.
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Getting help
url: https://link.lykos.ai/discord?ref=github-issue-template
about: Ask questions about using Stability Matrix and get tips on using Packages on our Discord server
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "weekly"
================================================
FILE: .github/workflows/backport.yml
================================================
name: Automatic Backport
on:
pull_request:
types: ["closed", "labeled"]
jobs:
backport:
if: ${{ (github.event.pull_request.merged == true) && (contains(github.event.pull_request.labels.*.name, 'backport-to-main') == true) }}
name: Backport PR
runs-on: ubuntu-latest
steps:
# Get the merge target branch to decide mainline number
# git cherry-pick mainline is 1 for merge to 'dev', else 2
- name: Get target branch
run: echo "CP_MAINLINE=$(if [ '${{ github.event.pull_request.base.ref }}' == 'dev' ]; then echo 1; else echo 2; fi)" >> $GITHUB_ENV
- name: Write json
id: create-json
uses: jsdaniell/create-json@v1.2.3
with:
name: ".backportrc.json"
json: |
{
"targetPRLabels": ["backport"],
"mainline": ${{ env.CP_MAINLINE }},
"commitConflicts": "true",
"prTitle": "[{{sourceBranch}} to {{targetBranch}}] backport: {{sourcePullRequest.title}} ({{sourcePullRequest.number}})"
}
- name: Backport Action
uses: sorenlouv/backport-github-action@v9.5.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
auto_backport_label_prefix: backport-to-
- name: Info log
if: ${{ success() }}
run: cat ~/.backport/backport.info.log
- name: Debug log
if: ${{ failure() }}
run: cat ~/.backport/backport.debug.log
================================================
FILE: .github/workflows/build.yml
================================================
name: Build
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
concurrency:
group: build-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
if: github.repository == 'LykosAI/StabilityMatrix'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Install dependencies
run: dotnet restore
- name: Test
run: dotnet test StabilityMatrix.Tests
- name: Build
run: >
dotnet publish ./StabilityMatrix.Avalonia/StabilityMatrix.Avalonia.csproj
-o out -c Release -r linux-x64
--self-contained
================================================
FILE: .github/workflows/cla.yml
================================================
name: "CLA Assistant"
on:
issue_comment:
types: [created]
pull_request_target:
types: [opened,closed,synchronize]
# explicitly configure permissions, in case your GITHUB_TOKEN workflow permissions are set to read-only in repository settings
permissions:
actions: write
contents: write
pull-requests: write
statuses: write
jobs:
CLAAssistant:
if: github.repository == 'LykosAI/StabilityMatrix'
runs-on: ubuntu-latest
steps:
- name: "CLA Assistant"
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
uses: contributor-assistant/github-action@v2.3.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# the below token should have repo scope and must be manually added by you in the repository's secret
# This token is required only if you have configured to store the signatures in a remote repository/organization
PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_CONFIG_ACCESS_TOKEN }}
with:
path-to-signatures: 'signatures/version1/cla.json'
path-to-document: 'https://lykos.ai/cla'
# branch should not be protected
branch: 'main'
allowlist: ionite34,mohnjiles,bot*
# the followings are the optional inputs - If the optional inputs are not given, then default values will be taken
remote-organization-name: LykosAI
remote-repository-name: clabot-config
custom-allsigned-prcomment: '**CLA Assistant bot** All Contributors have signed the CLA.'
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
permissions:
contents: write
on:
workflow_dispatch:
inputs:
version:
type: string
required: true
description: Version (Semver without leading v)
sentry-release:
type: boolean
description: Make Sentry Release?
default: true
github-release:
type: boolean
description: Make GitHub Release?
default: true
github-release-draft:
type: boolean
description: Mark GitHub Release as Draft?
default: false
github-release-prerelease:
type: boolean
description: Mark GitHub Release as Prerelease?
default: false
auto-update-release:
type: boolean
description: Release auto-update?
default: false
auto-update-release-mode:
type: choice
description: Release auto-update mode
options:
- github url
- upload to b2
auto-update-release-channel:
type: choice
description: Release auto-update channel
options:
- stable
- preview
- development
test-release-artifacts:
type: boolean
description: "[Debug] Test release artifacts?"
default: false
jobs:
release-linux:
name: Release (linux-x64)
env:
platform-id: linux-x64
out-name: StabilityMatrix.AppImage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: olegtarasov/get-tag@v2.1.2
if: github.event_name == 'release'
id: tag_name
with:
tagRegex: "v(.*)"
- name: Set Version from Tag
if: github.event_name == 'release'
run: |
echo "Using tag ${{ env.GIT_TAG_NAME }}"
echo "RELEASE_VERSION=${{ env.GIT_TAG_NAME }}" >> $GITHUB_ENV
- name: Set Version from manual input
if: github.event_name == 'workflow_dispatch'
run: |
echo "Using version ${{ github.event.inputs.version }}"
echo "RELEASE_VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
- name: Set up .NET 9
uses: actions/setup-dotnet@v3
with:
# Net 8 needed for PupNet
dotnet-version: |
8.0.x
9.0.x
- name: Install PupNet
run: |
sudo apt-get -y install libfuse2
dotnet tool install -g KuiperZone.PupNet --version 1.8.0
- name: PupNet Build
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: pupnet -r linux-x64 -c Release --kind appimage --app-version $RELEASE_VERSION --clean -y
- name: Post Build
run: mv ./Release/linux-x64/StabilityMatrix.x86_64.AppImage ${{ env.out-name }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: StabilityMatrix-${{ env.platform-id }}
path: ${{ env.out-name }}
retention-days: 1
if-no-files-found: error
- name: Create Sentry release
if: ${{ github.event.inputs.sentry-release == 'true' }}
uses: getsentry/action-release@v1
env:
MAKE_SENTRY_RELEASE: ${{ secrets.SENTRY_PROJECT != '' }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
with:
environment: production
ignore_missing: true
ignore_empty: true
version: StabilityMatrix.Avalonia@${{ github.event.inputs.version }}
release-windows:
name: Release (win-x64)
env:
platform-id: win-x64
out-name: StabilityMatrix.exe
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- uses: olegtarasov/get-tag@v2.1.2
if: github.event_name == 'release'
id: tag_name
with:
tagRegex: "v(.*)"
- name: Set Version from Tag
if: github.event_name == 'release'
run: |
echo "Using tag ${{ env.GIT_TAG_NAME }}"
echo "RELEASE_VERSION=${{ env.GIT_TAG_NAME }}" >> $env:GITHUB_ENV
- name: Set Version from manual input
if: github.event_name == 'workflow_dispatch'
run: |
echo "Using version ${{ github.event.inputs.version }}"
echo "RELEASE_VERSION=${{ github.event.inputs.version }}" >> $env:GITHUB_ENV
- name: Set up .NET 9
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Install dependencies
run: dotnet restore
- name: .NET Publish
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: >
dotnet publish ./StabilityMatrix.Avalonia/StabilityMatrix.Avalonia.csproj
-o out -c Release -r ${{ env.platform-id }}
-p:Version=$env:RELEASE_VERSION
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true
-p:PublishReadyToRun=true
-p:SentryOrg=${{ secrets.SENTRY_ORG }} -p:SentryProject=${{ secrets.SENTRY_PROJECT }}
-p:SentryUploadSymbols=true -p:SentryUploadSources=true
- name: Post Build
run: mv ./out/StabilityMatrix.Avalonia.exe ./out/${{ env.out-name }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: StabilityMatrix-${{ env.platform-id }}
path: ./out/${{ env.out-name }}
retention-days: 1
if-no-files-found: error
release-macos:
name: Release (macos-arm64)
env:
platform-id: osx-arm64
app-name: "Stability Matrix.app"
out-name: "StabilityMatrix-macos-arm64.dmg"
runs-on: macos-14
steps:
- uses: actions/checkout@v3
- uses: olegtarasov/get-tag@v2.1.2
if: github.event_name == 'release'
id: tag_name
with:
tagRegex: "v(.*)"
- name: Set Version from Tag
if: github.event_name == 'release'
run: |
echo "Using tag ${{ env.GIT_TAG_NAME }}"
echo "RELEASE_VERSION=${{ env.GIT_TAG_NAME }}" >> $GITHUB_ENV
- name: Set Version from manual input
if: github.event_name == 'workflow_dispatch'
run: |
echo "Using version ${{ github.event.inputs.version }}"
echo "RELEASE_VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
- name: Set up .NET 9
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Install dependencies
run: dotnet restore -p:PublishReadyToRun=true
- name: Check Version
run: echo $RELEASE_VERSION
- name: .NET Msbuild (App)
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
run: >
dotnet msbuild ./StabilityMatrix.Avalonia/StabilityMatrix.Avalonia.csproj
-t:BundleApp -p:UseAppHost=true -p:SelfContained=true
-p:Configuration=Release -p:RuntimeIdentifier=${{ env.platform-id }}
-p:Version=$RELEASE_VERSION
-p:PublishDir=out
-p:PublishReadyToRun=true
-p:CFBundleShortVersionString=$RELEASE_VERSION
-p:CFBundleName="Stability Matrix"
-p:CFBundleDisplayName="Stability Matrix"
-p:CFBundleVersion=$RELEASE_VERSION
-p:SentryOrg=${{ secrets.SENTRY_ORG }} -p:SentryProject=${{ secrets.SENTRY_PROJECT }}
-p:SentryUploadSymbols=true -p:SentryUploadSources=true
- name: Post Build (App)
run: mkdir -p signing && mv "./StabilityMatrix.Avalonia/out/Stability Matrix.app" "./signing/${{ env.app-name }}"
- name: Codesign app bundle
env:
MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}
run: ./Build/codesign_macos.sh "./signing/${{ env.app-name }}"
- name: Notarize app bundle
env:
MACOS_NOTARIZATION_APPLE_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
MACOS_NOTARIZATION_TEAM_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
MACOS_NOTARIZATION_PWD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
run: ./Build/notarize_macos.sh "./signing/${{ env.app-name }}"
- name: Zip Artifact (App)
working-directory: signing
run: zip -r -y "../StabilityMatrix-${{ env.platform-id }}-app.zip" "${{ env.app-name }}"
- name: Upload Artifact (App)
uses: actions/upload-artifact@v4
with:
name: StabilityMatrix-${{ env.platform-id }}-app
path: StabilityMatrix-${{ env.platform-id }}-app.zip
retention-days: 1
if-no-files-found: error
- uses: actions/setup-node@v4
with:
node-version: '20.11.x'
- name: Install dependencies for dmg creation
run: brew install graphicsmagick imagemagick && npm install --global create-dmg
- name: Create dmg
working-directory: signing
run: >
create-dmg "${{ env.app-name }}" --overwrite --identity "${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}"
- name: Rename dmg
working-directory: signing
run: mv "$(find . -type f -name "*.dmg")" "${{ env.out-name }}"
- name: Zip Artifact (dmg)
working-directory: signing
run: zip -r -y "../StabilityMatrix-${{ env.platform-id }}-dmg.zip" "${{ env.out-name }}"
- name: Upload Artifact (dmg)
uses: actions/upload-artifact@v4
with:
name: StabilityMatrix-${{ env.platform-id }}-dmg
path: StabilityMatrix-${{ env.platform-id }}-dmg.zip
retention-days: 1
if-no-files-found: error
publish-release:
name: Publish GitHub Release
needs: [ release-linux, release-windows, release-macos ]
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.github-release == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Extract Release Notes
id: release_notes
run: |
RELEASE_NOTES="$(awk -v version="${{ github.event.inputs.version }}" '/## v/{if(p) exit; if($0 ~ version) p=1}; p' CHANGELOG.md)"
RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}"
RELEASE_NOTES="${RELEASE_NOTES//$'\n'/'%0A'}"
RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
echo "::set-output name=release_notes::$RELEASE_NOTES"
# Downloads all previous artifacts to the current working directory
- name: Download Artifacts
uses: actions/download-artifact@v4
# Zip each build (except macos which is already dmg)
- name: Zip Artifacts
run: |
cd StabilityMatrix-win-x64 && zip -r ../StabilityMatrix-win-x64.zip ./. && cd $OLDPWD
cd StabilityMatrix-linux-x64 && zip -r ../StabilityMatrix-linux-x64.zip ./. && cd $OLDPWD
unzip "StabilityMatrix-osx-arm64-dmg/StabilityMatrix-osx-arm64-dmg.zip"
- name: Create Github Release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
StabilityMatrix-win-x64.zip
StabilityMatrix-linux-x64.zip
StabilityMatrix-macos-arm64.dmg
fail_on_unmatched_files: true
tag_name: v${{ github.event.inputs.version }}
body: ${{ steps.release_notes.outputs.release_notes }}
draft: ${{ github.event.inputs.github-release-draft == 'true' }}
prerelease: ${{ github.event.inputs.github-release-prerelease == 'true' }}
test-artifacts:
name: Test Release Artifacts
needs: [ release-linux, release-windows, release-macos ]
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.test-release-artifacts == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Extract Release Notes
id: release_notes
run: |
RELEASE_NOTES="$(awk -v version="${{ github.event.inputs.version }}" '/## v/{if(p) exit; if($0 ~ version) p=1}; p' CHANGELOG.md)"
RELEASE_NOTES="${RELEASE_NOTES//'%'/'%25'}"
RELEASE_NOTES="${RELEASE_NOTES//$'\n'/'%0A'}"
RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
echo "::set-output name=release_notes::$RELEASE_NOTES"
echo "Release Notes:"
echo "$RELEASE_NOTES"
# Downloads all previous artifacts to the current working directory
- name: Download Artifacts
uses: actions/download-artifact@v4
# Zip each build (except macos which is already dmg)
- name: Zip Artifacts
run: |
cd StabilityMatrix-win-x64 && zip -r ../StabilityMatrix-win-x64.zip ./. && cd $OLDPWD
cd StabilityMatrix-linux-x64 && zip -r ../StabilityMatrix-linux-x64.zip ./. && cd $OLDPWD
unzip "StabilityMatrix-osx-arm64-dmg/StabilityMatrix-osx-arm64-dmg.zip"
# Check that the zips and CHANGELOG.md are in the current working directory
- name: Check files
run: |
if [ ! -f StabilityMatrix-win-x64.zip ]; then
echo "StabilityMatrix-win-x64.zip not found"
exit 1
else
echo "StabilityMatrix-win-x64.zip found"
sha256sum StabilityMatrix-win-x64.zip
fi
if [ ! -f StabilityMatrix-linux-x64.zip ]; then
echo "StabilityMatrix-linux-x64.zip not found"
exit 1
else
echo "StabilityMatrix-linux-x64.zip found"
sha256sum StabilityMatrix-linux-x64.zip
fi
if [ ! -f StabilityMatrix-macos-arm64.dmg ]; then
echo "StabilityMatrix-macos-arm64.dmg not found"
exit 1
else
echo "StabilityMatrix-macos-arm64.dmg found"
sha256sum StabilityMatrix-macos-arm64.dmg
fi
if [ ! -f CHANGELOG.md ]; then
echo "CHANGELOG.md not found"
exit 1
fi
publish-auto-update-github:
name: Publish Auto-Update Release (GitHub)
needs: [ release-linux, release-windows, release-macos, publish-release ]
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.auto-update-release == 'true' && github.event.inputs.auto-update-release-mode == 'github url' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set Version from manual input
run: |
echo "Using version ${{ github.event.inputs.version }}"
echo "RELEASE_VERSION=${{ github.event.inputs.version }}" >> $env:GITHUB_ENV
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install Python Dependencies
run: pip install stability-matrix-tools>=0.3.0 --upgrade
- name: Publish Auto-Update Release
env:
SM_B2_API_ID: ${{ secrets.SM_B2_API_ID }}
SM_B2_API_KEY: ${{ secrets.SM_B2_API_KEY }}
SM_CF_CACHE_PURGE_TOKEN: ${{ secrets.SM_CF_CACHE_PURGE_TOKEN }}
SM_CF_ZONE_ID: ${{ secrets.SM_CF_ZONE_ID }}
SM_SIGNING_PRIVATE_KEY: ${{ secrets.SM_SIGNING_PRIVATE_KEY }}
run: sm-tools updates publish-matrix-v3 -v ${{ github.event.inputs.version }} -y
publish-auto-update-b2:
name: Publish Auto-Update Release (B2)
needs: [ release-linux, release-windows, release-macos ]
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.auto-update-release == 'true' && github.event.inputs.auto-update-release-mode == 'upload to b2' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set Version from manual input
run: |
echo "Using version ${{ github.event.inputs.version }}"
echo "RELEASE_VERSION=${{ github.event.inputs.version }}" >> $env:GITHUB_ENV
# Downloads all previous artifacts to the current working directory
- name: Download Artifacts
uses: actions/download-artifact@v4
# Zip each build (except macos which is already dmg)
- name: Zip Artifacts
run: |
cd StabilityMatrix-win-x64 && zip -r ../StabilityMatrix-win-x64.zip ./. && cd $OLDPWD
cd StabilityMatrix-linux-x64 && zip -r ../StabilityMatrix-linux-x64.zip ./. && cd $OLDPWD
unzip "StabilityMatrix-osx-arm64-dmg/StabilityMatrix-osx-arm64-dmg.zip"
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install Python Dependencies
run: pip install stability-matrix-tools>=0.3.0 --upgrade
# Check that the zips and CHANGELOG.md are in the current working directory
- name: Check files
run: |
if [ ! -f StabilityMatrix-win-x64.zip ]; then
echo "StabilityMatrix-win-x64.zip not found"
exit 1
fi
if [ ! -f StabilityMatrix-linux-x64.zip ]; then
echo "StabilityMatrix-linux-x64.zip not found"
exit 1
fi
if [ ! -f StabilityMatrix-macos-arm64.dmg ]; then
echo "StabilityMatrix-macos-arm64.dmg not found"
exit 1
fi
if [ ! -f CHANGELOG.md ]; then
echo "CHANGELOG.md not found"
exit 1
fi
- name: Publish Auto-Update Release
env:
SM_B2_API_ID: ${{ secrets.SM_B2_API_ID }}
SM_B2_API_KEY: ${{ secrets.SM_B2_API_KEY }}
SM_CF_CACHE_PURGE_TOKEN: ${{ secrets.SM_CF_CACHE_PURGE_TOKEN }}
SM_CF_ZONE_ID: ${{ secrets.SM_CF_ZONE_ID }}
SM_SIGNING_PRIVATE_KEY: ${{ secrets.SM_SIGNING_PRIVATE_KEY }}
run: >
sm-tools updates publish-files-v3 -v ${{ github.event.inputs.version }}
--channel ${{ github.event.inputs.auto-update-release-channel }}
--changelog CHANGELOG.md
--win-x64 StabilityMatrix-win-x64.zip
--linux-x64 StabilityMatrix-linux-x64.zip
--macos-arm64 StabilityMatrix-macos-arm64.dmg
-y
================================================
FILE: .github/workflows/stale.yml
================================================
name: 'Close stale issues'
permissions:
issues: write
pull-requests: write
on:
workflow_dispatch:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue is pending because it has been awaiting a response for 30 days with no activity. Remove the pending label or comment, else this will be closed in 7 days.'
close-issue-message: 'This issue was closed because it has been pending for 7 days with no activity.'
only-labels: 'awaiting-feedback'
stale-issue-label: 'pending'
exempt-issue-labels: 'planned,milestone,work-in-progress,enhancement,crash'
days-before-issue-stale: 30
days-before-issue-close: 7
days-before-pr-close: -1
days-before-pr-stale: -1
operations-per-run: 45
- uses: actions/stale@v9
with:
stale-issue-message: 'This issue is stale because it has been open 60 days with no activity. Remove the stale label or comment, else this will be closed in 7 days.'
close-issue-message: 'This issue was closed because it has been stale for 7 days with no activity.'
stale-issue-label: 'stale'
exempt-issue-labels: 'planned,milestone,work-in-progress,enhancement,crash'
days-before-issue-stale: 60
days-before-issue-close: 7
days-before-pr-close: -1
days-before-pr-stale: -1
operations-per-run: 45
================================================
FILE: .github/workflows/test-ui.yml
================================================
name: UI Tests
on:
workflow_dispatch:
concurrency:
group: build-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
if: github.repository == 'LykosAI/StabilityMatrix' || github.event_name == 'workflow_dispatch'
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Set up .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Install dependencies
run: dotnet restore
- name: Test
run: dotnet test StabilityMatrix.UITests
================================================
FILE: .github/workflows/version-bump.yml
================================================
name: Version Bump
on:
workflow_dispatch:
inputs:
version_mask:
type: string
description: Version Bump Mask
default: "0.0.1.0"
required: false
version_overwrite:
type: string
description: Version Overwrite Mask
default: "*.*.*.*"
required: false
jobs:
version-bump:
name: Version Bump
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET Core
uses: actions/setup-dotnet@v2
with:
dotnet-version: '8.0.x'
- name: Bump versions
uses: SiqiLu/dotnet-bump-version@2.0.0
with:
version_files: "**/*.csproj"
version_mask: ${{ github.event.inputs.version_mask }}
version_overwrite: ${{ github.event.inputs.version_overwrite }}
github_token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Rider
.idea/
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
[Oo]ut/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
!**/Models/Packages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
.husky/pre-commit
================================================
FILE: .husky/task-runner.json
================================================
{
"tasks": [
{
"name": "Run csharpier",
"group": "pre-commit",
"command": "dotnet",
"args": [ "csharpier", "format", "${staged}" ],
"include": [ "**/*.cs" ]
},
{
"name": "Run xamlstyler",
"group": "pre-commit",
"command": "dotnet",
"args": [ "xstyler", "-f", "${staged}" ],
"include": [ "**/*.axaml" ]
},
{
"name": "Run refitter for LykosAuthApi",
"group": "generate-openapi",
"command": "dotnet",
"args": ["refitter", "--settings-file", "./StabilityMatrix.Core/Api/LykosAuthApi/.refitter"]
},
{
"name": "Run refitter for PromptGenApi",
"group": "generate-promptgen-openapi",
"command": "dotnet",
"args": ["refitter", "--settings-file", "./StabilityMatrix.Core/Api/PromptGen/.refitter"]
}
]
}
================================================
FILE: Avalonia.Gif/Avalonia.Gif.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\Runtimes.Default.props" />
<PropertyGroup>
<LangVersion>latest</LangVersion>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
<PropertyGroup>
<!-- Ignore nullable / unused warnings since this was vendored -->
<NoWarn>$(NoWarn);CS8765;CS8618;CS8625;CS0169</NoWarn>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Avalonia" />
<PackageReference Include="SkiaSharp" />
<PackageReference Include="DotNet.Bundle" />
</ItemGroup>
</Project>
================================================
FILE: Avalonia.Gif/BgWorkerCommand.cs
================================================
namespace Avalonia.Gif
{
internal enum BgWorkerCommand
{
Null,
Play,
Pause,
Dispose
}
}
================================================
FILE: Avalonia.Gif/BgWorkerState.cs
================================================
namespace Avalonia.Gif
{
internal enum BgWorkerState
{
Null,
Start,
Running,
Paused,
Complete,
Dispose
}
}
================================================
FILE: Avalonia.Gif/Decoding/BlockTypes.cs
================================================
namespace Avalonia.Gif.Decoding
{
internal enum BlockTypes
{
Empty = 0,
Extension = 0x21,
ImageDescriptor = 0x2C,
Trailer = 0x3B,
}
}
================================================
FILE: Avalonia.Gif/Decoding/ExtensionType.cs
================================================
namespace Avalonia.Gif.Decoding
{
internal enum ExtensionType
{
GraphicsControl = 0xF9,
Application = 0xFF
}
}
================================================
FILE: Avalonia.Gif/Decoding/FrameDisposal.cs
================================================
namespace Avalonia.Gif.Decoding
{
public enum FrameDisposal
{
Unknown = 0,
Leave = 1,
Background = 2,
Restore = 3
}
}
================================================
FILE: Avalonia.Gif/Decoding/GifColor.cs
================================================
using System.Runtime.InteropServices;
namespace Avalonia.Gif
{
[StructLayout(LayoutKind.Explicit)]
public readonly struct GifColor
{
[FieldOffset(3)]
public readonly byte A;
[FieldOffset(2)]
public readonly byte R;
[FieldOffset(1)]
public readonly byte G;
[FieldOffset(0)]
public readonly byte B;
/// <summary>
/// A struct that represents a ARGB color and is aligned as
/// a BGRA bytefield in memory.
/// </summary>
/// <param name="r">Red</param>
/// <param name="g">Green</param>
/// <param name="b">Blue</param>
/// <param name="a">Alpha</param>
public GifColor(byte r, byte g, byte b, byte a = byte.MaxValue)
{
A = a;
R = r;
G = g;
B = b;
}
}
}
================================================
FILE: Avalonia.Gif/Decoding/GifDecoder.cs
================================================
// This source file's Lempel-Ziv-Welch algorithm is derived from Chromium's Android GifPlayer
// as seen here (https://github.com/chromium/chromium/blob/master/third_party/gif_player/src/jp/tomorrowkey/android/gifplayer)
// Licensed under the Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
// Copyright (C) 2015 The Gifplayer Authors. All Rights Reserved.
// The rest of the source file is licensed under MIT License.
// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using Avalonia;
using Avalonia.Media.Imaging;
using static Avalonia.Gif.Extensions.StreamExtensions;
namespace Avalonia.Gif.Decoding
{
public sealed class GifDecoder : IDisposable
{
private static readonly ReadOnlyMemory<byte> G87AMagic = "GIF87a"u8.ToArray().AsMemory();
private static readonly ReadOnlyMemory<byte> G89AMagic = "GIF89a"u8.ToArray().AsMemory();
private static readonly ReadOnlyMemory<byte> NetscapeMagic = "NETSCAPE2.0"u8.ToArray().AsMemory();
private static readonly TimeSpan FrameDelayThreshold = TimeSpan.FromMilliseconds(10);
private static readonly TimeSpan FrameDelayDefault = TimeSpan.FromMilliseconds(100);
private static readonly GifColor TransparentColor = new(0, 0, 0, 0);
private static readonly int MaxTempBuf = 768;
private static readonly int MaxStackSize = 4096;
private static readonly int MaxBits = 4097;
private readonly Stream _fileStream;
private readonly CancellationToken _currentCtsToken;
private readonly bool _hasFrameBackups;
private int _gctSize,
_bgIndex,
_prevFrame = -1,
_backupFrame = -1;
private bool _gctUsed;
private GifRect _gifDimensions;
// private ulong _globalColorTable;
private readonly int _backBufferBytes;
private GifColor[] _bitmapBackBuffer;
private short[] _prefixBuf;
private byte[] _suffixBuf;
private byte[] _pixelStack;
private byte[] _indexBuf;
private byte[] _backupFrameIndexBuf;
private volatile bool _hasNewFrame;
public GifHeader Header { get; private set; }
public readonly List<GifFrame> Frames = new();
public PixelSize Size => new PixelSize(Header.Dimensions.Width, Header.Dimensions.Height);
public GifDecoder(Stream fileStream, CancellationToken currentCtsToken)
{
_fileStream = fileStream;
_currentCtsToken = currentCtsToken;
ProcessHeaderData();
ProcessFrameData();
Header.IterationCount = Header.Iterations switch
{
-1 => new GifRepeatBehavior { Count = 1 },
0 => new GifRepeatBehavior { LoopForever = true },
> 0 => new GifRepeatBehavior { Count = Header.Iterations },
_ => Header.IterationCount
};
var pixelCount = _gifDimensions.TotalPixels;
_hasFrameBackups = Frames.Any(f => f.FrameDisposalMethod == FrameDisposal.Restore);
_bitmapBackBuffer = new GifColor[pixelCount];
_indexBuf = new byte[pixelCount];
if (_hasFrameBackups)
_backupFrameIndexBuf = new byte[pixelCount];
_prefixBuf = new short[MaxStackSize];
_suffixBuf = new byte[MaxStackSize];
_pixelStack = new byte[MaxStackSize + 1];
_backBufferBytes = pixelCount * Marshal.SizeOf(typeof(GifColor));
}
public void Dispose()
{
Frames.Clear();
_bitmapBackBuffer = null;
_prefixBuf = null;
_suffixBuf = null;
_pixelStack = null;
_indexBuf = null;
_backupFrameIndexBuf = null;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private int PixCoord(int x, int y) => x + y * _gifDimensions.Width;
static readonly (int Start, int Step)[] Pass = { (0, 8), (4, 8), (2, 4), (1, 2) };
private void ClearImage()
{
Array.Fill(_bitmapBackBuffer, TransparentColor);
//ClearArea(_gifDimensions);
_prevFrame = -1;
_backupFrame = -1;
}
public void RenderFrame(int fIndex, WriteableBitmap writeableBitmap, bool forceClear = false)
{
if (_currentCtsToken.IsCancellationRequested)
return;
if (fIndex < 0 | fIndex >= Frames.Count)
return;
if (_prevFrame == fIndex)
return;
if (fIndex == 0 || forceClear || fIndex < _prevFrame)
ClearImage();
DisposePreviousFrame();
_prevFrame++;
// render intermediate frame
for (int idx = _prevFrame; idx < fIndex; ++idx)
{
var prevFrame = Frames[idx];
if (prevFrame.FrameDisposalMethod == FrameDisposal.Restore)
continue;
if (prevFrame.FrameDisposalMethod == FrameDisposal.Background)
{
ClearArea(prevFrame.Dimensions);
continue;
}
RenderFrameAt(idx, writeableBitmap);
}
RenderFrameAt(fIndex, writeableBitmap);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void RenderFrameAt(int idx, WriteableBitmap writeableBitmap)
{
var tmpB = ArrayPool<byte>.Shared.Rent(MaxTempBuf);
var curFrame = Frames[idx];
DecompressFrameToIndexBuffer(curFrame, _indexBuf, tmpB);
if (_hasFrameBackups & curFrame.ShouldBackup)
{
Buffer.BlockCopy(_indexBuf, 0, _backupFrameIndexBuf, 0, curFrame.Dimensions.TotalPixels);
_backupFrame = idx;
}
DrawFrame(curFrame, _indexBuf);
_prevFrame = idx;
_hasNewFrame = true;
using var lockedBitmap = writeableBitmap.Lock();
WriteBackBufToFb(lockedBitmap.Address);
ArrayPool<byte>.Shared.Return(tmpB);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void DrawFrame(GifFrame curFrame, Memory<byte> frameIndexSpan)
{
var activeColorTable = curFrame.IsLocalColorTableUsed
? curFrame.LocalColorTable
: Header.GlobarColorTable;
var cX = curFrame.Dimensions.X;
var cY = curFrame.Dimensions.Y;
var cH = curFrame.Dimensions.Height;
var cW = curFrame.Dimensions.Width;
var tC = curFrame.TransparentColorIndex;
var hT = curFrame.HasTransparency;
if (curFrame.IsInterlaced)
{
for (var i = 0; i < 4; i++)
{
var curPass = Pass[i];
var y = curPass.Start;
while (y < cH)
{
DrawRow(y);
y += curPass.Step;
}
}
}
else
{
for (var i = 0; i < cH; i++)
DrawRow(i);
}
//for (var row = 0; row < cH; row++)
void DrawRow(int row)
{
// Get the starting point of the current row on frame's index stream.
var indexOffset = row * cW;
// Get the target backbuffer offset from the frames coords.
var targetOffset = PixCoord(cX, row + cY);
var len = _bitmapBackBuffer.Length;
for (var i = 0; i < cW; i++)
{
var indexColor = frameIndexSpan.Span[indexOffset + i];
if (
activeColorTable == null
|| targetOffset >= len
|| indexColor > activeColorTable.Length
)
return;
if (!(hT & indexColor == tC))
_bitmapBackBuffer[targetOffset] = activeColorTable[indexColor];
targetOffset++;
}
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void DisposePreviousFrame()
{
if (_prevFrame == -1)
return;
var prevFrame = Frames[_prevFrame];
switch (prevFrame.FrameDisposalMethod)
{
case FrameDisposal.Background:
ClearArea(prevFrame.Dimensions);
break;
case FrameDisposal.Restore:
if (_hasFrameBackups && _backupFrame != -1)
DrawFrame(Frames[_backupFrame], _backupFrameIndexBuf);
else
ClearArea(prevFrame.Dimensions);
break;
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void ClearArea(GifRect area)
{
for (var y = 0; y < area.Height; y++)
{
var targetOffset = PixCoord(area.X, y + area.Y);
for (var x = 0; x < area.Width; x++)
_bitmapBackBuffer[targetOffset + x] = TransparentColor;
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void DecompressFrameToIndexBuffer(GifFrame curFrame, Span<byte> indexSpan, byte[] tempBuf)
{
_fileStream.Position = curFrame.LzwStreamPosition;
var totalPixels = curFrame.Dimensions.TotalPixels;
// Initialize GIF data stream decoder.
var dataSize = curFrame.LzwMinCodeSize;
var clear = 1 << dataSize;
var endOfInformation = clear + 1;
var available = clear + 2;
var oldCode = -1;
var codeSize = dataSize + 1;
var codeMask = (1 << codeSize) - 1;
for (var code = 0; code < clear; code++)
{
_prefixBuf[code] = 0;
_suffixBuf[code] = (byte)code;
}
// Decode GIF pixel stream.
int bits,
first,
top,
pixelIndex;
var datum = bits = first = top = pixelIndex = 0;
while (pixelIndex < totalPixels)
{
var blockSize = _fileStream.ReadBlock(tempBuf);
if (blockSize == 0)
break;
var blockPos = 0;
while (blockPos < blockSize)
{
datum += tempBuf[blockPos] << bits;
blockPos++;
bits += 8;
while (bits >= codeSize)
{
// Get the next code.
var code = datum & codeMask;
datum >>= codeSize;
bits -= codeSize;
// Interpret the code
if (code == clear)
{
// Reset decoder.
codeSize = dataSize + 1;
codeMask = (1 << codeSize) - 1;
available = clear + 2;
oldCode = -1;
continue;
}
// Check for explicit end-of-stream
if (code == endOfInformation)
return;
if (oldCode == -1)
{
indexSpan[pixelIndex++] = _suffixBuf[code];
oldCode = code;
first = code;
continue;
}
var inCode = code;
if (code >= available)
{
_pixelStack[top++] = (byte)first;
code = oldCode;
if (top == MaxBits)
ThrowException();
}
while (code >= clear)
{
if (code >= MaxBits || code == _prefixBuf[code])
ThrowException();
_pixelStack[top++] = _suffixBuf[code];
code = _prefixBuf[code];
if (top == MaxBits)
ThrowException();
}
first = _suffixBuf[code];
_pixelStack[top++] = (byte)first;
// Add new code to the dictionary
if (available < MaxStackSize)
{
_prefixBuf[available] = (short)oldCode;
_suffixBuf[available] = (byte)first;
available++;
if ((available & codeMask) == 0 && available < MaxStackSize)
{
codeSize++;
codeMask += available;
}
}
oldCode = inCode;
// Drain the pixel stack.
do
{
indexSpan[pixelIndex++] = _pixelStack[--top];
} while (top > 0);
}
}
}
while (pixelIndex < totalPixels)
indexSpan[pixelIndex++] = 0; // clear missing pixels
void ThrowException() => throw new LzwDecompressionException();
}
/// <summary>
/// Directly copies the <see cref="GifColor"/> struct array to a bitmap IntPtr.
/// </summary>
private void WriteBackBufToFb(IntPtr targetPointer)
{
if (_currentCtsToken.IsCancellationRequested)
return;
if (!(_hasNewFrame & _bitmapBackBuffer != null))
return;
unsafe
{
fixed (void* src = &_bitmapBackBuffer[0])
Buffer.MemoryCopy(
src,
targetPointer.ToPointer(),
(uint)_backBufferBytes,
(uint)_backBufferBytes
);
_hasNewFrame = false;
}
}
/// <summary>
/// Processes GIF Header.
/// </summary>
[MemberNotNull(nameof(Header))]
private void ProcessHeaderData()
{
var str = _fileStream;
var tmpB = ArrayPool<byte>.Shared.Rent(MaxTempBuf);
var tempBuf = tmpB.AsSpan();
var _ = str.Read(tmpB, 0, 6);
if (!tempBuf[..3].SequenceEqual(G87AMagic[..3].Span))
throw new InvalidGifStreamException("Not a GIF stream.");
if (!(tempBuf[..6].SequenceEqual(G87AMagic.Span) | tempBuf[..6].SequenceEqual(G89AMagic.Span)))
throw new InvalidGifStreamException(
"Unsupported GIF Version: " + Encoding.ASCII.GetString(tempBuf[..6].ToArray())
);
ProcessScreenDescriptor(tmpB);
Header = new GifHeader
{
Dimensions = _gifDimensions,
HasGlobalColorTable = _gctUsed,
// GlobalColorTableCacheID = _globalColorTable,
GlobarColorTable = ProcessColorTable(ref str, tmpB, _gctSize),
GlobalColorTableSize = _gctSize,
BackgroundColorIndex = _bgIndex,
HeaderSize = _fileStream.Position
};
ArrayPool<byte>.Shared.Return(tmpB);
}
/// <summary>
/// Parses colors from file stream to target color table.
/// </summary>
private static GifColor[] ProcessColorTable(ref Stream stream, byte[] rawBufSpan, int nColors)
{
var nBytes = 3 * nColors;
var target = new GifColor[nColors];
var n = stream.Read(rawBufSpan, 0, nBytes);
if (n < nBytes)
throw new InvalidOperationException("Wrong color table bytes.");
int i = 0,
j = 0;
while (i < nColors)
{
var r = rawBufSpan[j++];
var g = rawBufSpan[j++];
var b = rawBufSpan[j++];
target[i++] = new GifColor(r, g, b);
}
return target;
}
/// <summary>
/// Parses screen and other GIF descriptors.
/// </summary>
private void ProcessScreenDescriptor(byte[] tempBuf)
{
var width = _fileStream.ReadUShortS(tempBuf);
var height = _fileStream.ReadUShortS(tempBuf);
var packed = _fileStream.ReadByteS(tempBuf);
_gctUsed = (packed & 0x80) != 0;
_gctSize = 2 << (packed & 7);
_bgIndex = _fileStream.ReadByteS(tempBuf);
_gifDimensions = new GifRect(0, 0, width, height);
_fileStream.Skip(1);
}
/// <summary>
/// Parses all frame data.
/// </summary>
private void ProcessFrameData()
{
_fileStream.Position = Header.HeaderSize;
var tempBuf = ArrayPool<byte>.Shared.Rent(MaxTempBuf);
var terminate = false;
var curFrame = 0;
Frames.Add(new GifFrame());
do
{
var blockType = (BlockTypes)_fileStream.ReadByteS(tempBuf);
switch (blockType)
{
case BlockTypes.Empty:
break;
case BlockTypes.Extension:
ProcessExtensions(ref curFrame, tempBuf);
break;
case BlockTypes.ImageDescriptor:
ProcessImageDescriptor(ref curFrame, tempBuf);
_fileStream.SkipBlocks(tempBuf);
break;
case BlockTypes.Trailer:
Frames.RemoveAt(Frames.Count - 1);
terminate = true;
break;
default:
_fileStream.SkipBlocks(tempBuf);
break;
}
// Break the loop when the stream is not valid anymore.
if (_fileStream.Position >= _fileStream.Length & terminate == false)
throw new InvalidProgramException(
"Reach the end of the filestream without trailer block."
);
} while (!terminate);
ArrayPool<byte>.Shared.Return(tempBuf);
}
/// <summary>
/// Parses GIF Image Descriptor Block.
/// </summary>
private void ProcessImageDescriptor(ref int curFrame, byte[] tempBuf)
{
var str = _fileStream;
var currentFrame = Frames[curFrame];
// Parse frame dimensions.
var frameX = str.ReadUShortS(tempBuf);
var frameY = str.ReadUShortS(tempBuf);
var frameW = str.ReadUShortS(tempBuf);
var frameH = str.ReadUShortS(tempBuf);
frameW = (ushort)Math.Min(frameW, _gifDimensions.Width - frameX);
frameH = (ushort)Math.Min(frameH, _gifDimensions.Height - frameY);
currentFrame.Dimensions = new GifRect(frameX, frameY, frameW, frameH);
// Unpack interlace and lct info.
var packed = str.ReadByteS(tempBuf);
currentFrame.IsInterlaced = (packed & 0x40) != 0;
currentFrame.IsLocalColorTableUsed = (packed & 0x80) != 0;
currentFrame.LocalColorTableSize = (int)Math.Pow(2, (packed & 0x07) + 1);
if (currentFrame.IsLocalColorTableUsed)
currentFrame.LocalColorTable = ProcessColorTable(
ref str,
tempBuf,
currentFrame.LocalColorTableSize
);
currentFrame.LzwMinCodeSize = str.ReadByteS(tempBuf);
currentFrame.LzwStreamPosition = str.Position;
curFrame += 1;
Frames.Add(new GifFrame());
}
/// <summary>
/// Parses GIF Extension Blocks.
/// </summary>
private void ProcessExtensions(ref int curFrame, byte[] tempBuf)
{
var extType = (ExtensionType)_fileStream.ReadByteS(tempBuf);
switch (extType)
{
case ExtensionType.GraphicsControl:
_fileStream.ReadBlock(tempBuf);
var currentFrame = Frames[curFrame];
var packed = tempBuf[0];
currentFrame.FrameDisposalMethod = (FrameDisposal)((packed & 0x1c) >> 2);
if (
currentFrame.FrameDisposalMethod != FrameDisposal.Restore
&& currentFrame.FrameDisposalMethod != FrameDisposal.Background
)
currentFrame.ShouldBackup = true;
currentFrame.HasTransparency = (packed & 1) != 0;
currentFrame.FrameDelay = TimeSpan.FromMilliseconds(SpanToShort(tempBuf.AsSpan(1)) * 10);
if (currentFrame.FrameDelay <= FrameDelayThreshold)
currentFrame.FrameDelay = FrameDelayDefault;
currentFrame.TransparentColorIndex = tempBuf[3];
break;
case ExtensionType.Application:
var blockLen = _fileStream.ReadBlock(tempBuf);
var _ = tempBuf.AsSpan(0, blockLen);
var blockHeader = tempBuf.AsSpan(0, NetscapeMagic.Length);
if (blockHeader.SequenceEqual(NetscapeMagic.Span))
{
var count = 1;
while (count > 0)
count = _fileStream.ReadBlock(tempBuf);
var iterationCount = SpanToShort(tempBuf.AsSpan(1));
Header.Iterations = iterationCount;
}
else
_fileStream.SkipBlocks(tempBuf);
break;
default:
_fileStream.SkipBlocks(tempBuf);
break;
}
}
}
}
================================================
FILE: Avalonia.Gif/Decoding/GifFrame.cs
================================================
using System;
namespace Avalonia.Gif.Decoding
{
public class GifFrame
{
public bool HasTransparency,
IsInterlaced,
IsLocalColorTableUsed;
public byte TransparentColorIndex;
public int LzwMinCodeSize,
LocalColorTableSize;
public long LzwStreamPosition;
public TimeSpan FrameDelay;
public FrameDisposal FrameDisposalMethod;
public bool ShouldBackup;
public GifRect Dimensions;
public GifColor[] LocalColorTable;
}
}
================================================
FILE: Avalonia.Gif/Decoding/GifHeader.cs
================================================
// Licensed under the MIT License.
// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.
namespace Avalonia.Gif.Decoding
{
public class GifHeader
{
public bool HasGlobalColorTable;
public int GlobalColorTableSize;
public ulong GlobalColorTableCacheId;
public int BackgroundColorIndex;
public long HeaderSize;
internal int Iterations = -1;
public GifRepeatBehavior IterationCount;
public GifRect Dimensions;
private GifColor[] _globarColorTable;
public GifColor[] GlobarColorTable;
}
}
================================================
FILE: Avalonia.Gif/Decoding/GifRect.cs
================================================
namespace Avalonia.Gif.Decoding
{
public readonly struct GifRect
{
public int X { get; }
public int Y { get; }
public int Width { get; }
public int Height { get; }
public int TotalPixels { get; }
public GifRect(int x, int y, int width, int height)
{
X = x;
Y = y;
Width = width;
Height = height;
TotalPixels = width * height;
}
public static bool operator ==(GifRect a, GifRect b)
{
return a.X == b.X && a.Y == b.Y && a.Width == b.Width && a.Height == b.Height;
}
public static bool operator !=(GifRect a, GifRect b)
{
return !(a == b);
}
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;
return this == (GifRect)obj;
}
public override int GetHashCode()
{
return X.GetHashCode() ^ Y.GetHashCode() | Width.GetHashCode() ^ Height.GetHashCode();
}
}
}
================================================
FILE: Avalonia.Gif/Decoding/GifRepeatBehavior.cs
================================================
namespace Avalonia.Gif.Decoding
{
public class GifRepeatBehavior
{
public bool LoopForever { get; set; }
public int? Count { get; set; }
}
}
================================================
FILE: Avalonia.Gif/Decoding/InvalidGifStreamException.cs
================================================
// Licensed under the MIT License.
// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.
namespace Avalonia.Gif.Decoding
{
[Serializable]
public class InvalidGifStreamException : Exception
{
public InvalidGifStreamException() { }
public InvalidGifStreamException(string message)
: base(message) { }
public InvalidGifStreamException(string message, Exception innerException)
: base(message, innerException) { }
}
}
================================================
FILE: Avalonia.Gif/Decoding/LzwDecompressionException.cs
================================================
// Licensed under the MIT License.
// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.
namespace Avalonia.Gif.Decoding
{
[Serializable]
public class LzwDecompressionException : Exception
{
public LzwDecompressionException() { }
public LzwDecompressionException(string message)
: base(message) { }
public LzwDecompressionException(string message, Exception innerException)
: base(message, innerException) { }
}
}
================================================
FILE: Avalonia.Gif/Extensions/StreamExtensions.cs
================================================
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
namespace Avalonia.Gif.Extensions
{
[DebuggerStepThrough]
internal static class StreamExtensions
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static ushort SpanToShort(Span<byte> b) => (ushort)(b[0] | (b[1] << 8));
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Skip(this Stream stream, long count)
{
stream.Position += count;
}
/// <summary>
/// Read a Gif block from stream while advancing the position.
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int ReadBlock(this Stream stream, byte[] tempBuf)
{
stream.Read(tempBuf, 0, 1);
var blockLength = (int)tempBuf[0];
if (blockLength > 0)
stream.Read(tempBuf, 0, blockLength);
// Guard against infinite loop.
if (stream.Position >= stream.Length)
throw new InvalidGifStreamException("Reach the end of the filestream without trailer block.");
return blockLength;
}
/// <summary>
/// Skips GIF blocks until it encounters an empty block.
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void SkipBlocks(this Stream stream, byte[] tempBuf)
{
int blockLength;
do
{
stream.Read(tempBuf, 0, 1);
blockLength = tempBuf[0];
stream.Position += blockLength;
// Guard against infinite loop.
if (stream.Position >= stream.Length)
throw new InvalidGifStreamException("Reach the end of the filestream without trailer block.");
} while (blockLength > 0);
}
/// <summary>
/// Read a <see cref="ushort"/> from stream by providing a temporary buffer.
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static ushort ReadUShortS(this Stream stream, byte[] tempBuf)
{
stream.Read(tempBuf, 0, 2);
return SpanToShort(tempBuf);
}
/// <summary>
/// Read a <see cref="ushort"/> from stream by providing a temporary buffer.
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static byte ReadByteS(this Stream stream, byte[] tempBuf)
{
stream.Read(tempBuf, 0, 1);
var finalVal = tempBuf[0];
return finalVal;
}
}
}
================================================
FILE: Avalonia.Gif/GifImage.cs
================================================
using System;
using System.IO;
using System.Numerics;
using Avalonia;
using Avalonia.Animation;
using Avalonia.Controls;
using Avalonia.Logging;
using Avalonia.Media;
using Avalonia.Rendering.Composition;
using Avalonia.VisualTree;
namespace Avalonia.Gif
{
public class GifImage : Control
{
public static readonly StyledProperty<string> SourceUriRawProperty = AvaloniaProperty.Register<
GifImage,
string
>("SourceUriRaw");
public static readonly StyledProperty<Uri> SourceUriProperty = AvaloniaProperty.Register<
GifImage,
Uri
>("SourceUri");
public static readonly StyledProperty<Stream> SourceStreamProperty = AvaloniaProperty.Register<
GifImage,
Stream
>("SourceStream");
public static readonly StyledProperty<IterationCount> IterationCountProperty =
AvaloniaProperty.Register<GifImage, IterationCount>("IterationCount", IterationCount.Infinite);
private IGifInstance? _gifInstance;
public static readonly StyledProperty<StretchDirection> StretchDirectionProperty =
AvaloniaProperty.Register<GifImage, StretchDirection>("StretchDirection");
public static readonly StyledProperty<Stretch> StretchProperty = AvaloniaProperty.Register<
GifImage,
Stretch
>("Stretch");
private CompositionCustomVisual? _customVisual;
private object? _initialSource = null;
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
switch (change.Property.Name)
{
case nameof(SourceUriRaw):
case nameof(SourceUri):
case nameof(SourceStream):
SourceChanged(change);
break;
case nameof(Stretch):
case nameof(StretchDirection):
InvalidateArrange();
InvalidateMeasure();
Update();
break;
case nameof(IterationCount):
IterationCountChanged(change);
break;
case nameof(Bounds):
Update();
break;
}
base.OnPropertyChanged(change);
}
public string SourceUriRaw
{
get => GetValue(SourceUriRawProperty);
set => SetValue(SourceUriRawProperty, value);
}
public Uri SourceUri
{
get => GetValue(SourceUriProperty);
set => SetValue(SourceUriProperty, value);
}
public Stream SourceStream
{
get => GetValue(SourceStreamProperty);
set => SetValue(SourceStreamProperty, value);
}
public IterationCount IterationCount
{
get => GetValue(IterationCountProperty);
set => SetValue(IterationCountProperty, value);
}
public StretchDirection StretchDirection
{
get => GetValue(StretchDirectionProperty);
set => SetValue(StretchDirectionProperty, value);
}
public Stretch Stretch
{
get => GetValue(StretchProperty);
set => SetValue(StretchProperty, value);
}
private static void IterationCountChanged(AvaloniaPropertyChangedEventArgs e)
{
var image = e.Sender as GifImage;
if (image is null || e.NewValue is not IterationCount iterationCount)
return;
image.IterationCount = iterationCount;
}
protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
{
var compositor = ElementComposition.GetElementVisual(this)?.Compositor;
if (compositor == null || _customVisual?.Compositor == compositor)
return;
_customVisual = compositor.CreateCustomVisual(new CustomVisualHandler());
ElementComposition.SetElementChildVisual(this, _customVisual);
_customVisual.SendHandlerMessage(CustomVisualHandler.StartMessage);
if (_initialSource is not null)
{
UpdateGifInstance(_initialSource);
_initialSource = null;
}
Update();
base.OnAttachedToVisualTree(e);
}
private void Update()
{
if (_customVisual is null || _gifInstance is null)
return;
var dpi = this.GetVisualRoot()?.RenderScaling ?? 1.0;
var sourceSize = _gifInstance.GifPixelSize.ToSize(dpi);
var viewPort = new Rect(Bounds.Size);
var scale = Stretch.CalculateScaling(Bounds.Size, sourceSize, StretchDirection);
var scaledSize = sourceSize * scale;
var destRect = viewPort.CenterRect(new Rect(scaledSize)).Intersect(viewPort);
if (Stretch == Stretch.None)
{
_customVisual.Size = new Vector2((float)sourceSize.Width, (float)sourceSize.Height);
}
else
{
_customVisual.Size = new Vector2((float)destRect.Size.Width, (float)destRect.Size.Height);
}
_customVisual.Offset = new Vector3((float)destRect.Position.X, (float)destRect.Position.Y, 0);
}
private class CustomVisualHandler : CompositionCustomVisualHandler
{
private TimeSpan _animationElapsed;
private TimeSpan? _lastServerTime;
private IGifInstance? _currentInstance;
private bool _running;
public static readonly object StopMessage = new(),
StartMessage = new();
public override void OnMessage(object message)
{
if (message == StartMessage)
{
_running = true;
_lastServerTime = null;
RegisterForNextAnimationFrameUpdate();
}
else if (message == StopMessage)
{
_running = false;
}
else if (message is IGifInstance instance)
{
_currentInstance?.Dispose();
_currentInstance = instance;
}
}
public override void OnAnimationFrameUpdate()
{
if (!_running)
return;
Invalidate();
RegisterForNextAnimationFrameUpdate();
}
public override void OnRender(ImmediateDrawingContext drawingContext)
{
if (_running)
{
if (_lastServerTime.HasValue)
_animationElapsed += (CompositionNow - _lastServerTime.Value);
_lastServerTime = CompositionNow;
}
try
{
if (_currentInstance is null || _currentInstance.IsDisposed)
return;
var bitmap = _currentInstance.ProcessFrameTime(_animationElapsed);
if (bitmap is not null)
{
drawingContext.DrawBitmap(
bitmap,
new Rect(_currentInstance.GifPixelSize.ToSize(1)),
GetRenderBounds()
);
}
}
catch (Exception e)
{
Logger.Sink?.Log(LogEventLevel.Error, "GifImage Renderer ", this, e.ToString());
}
}
}
/// <summary>
/// Measures the control.
/// </summary>
/// <param name="availableSize">The available size.</param>
/// <returns>The desired size of the control.</returns>
protected override Size MeasureOverride(Size availableSize)
{
var result = new Size();
var scaling = this.GetVisualRoot()?.RenderScaling ?? 1.0;
if (_gifInstance != null)
{
result = Stretch.CalculateSize(
availableSize,
_gifInstance.GifPixelSize.ToSize(scaling),
StretchDirection
);
}
return result;
}
/// <inheritdoc/>
protected override Size ArrangeOverride(Size finalSize)
{
if (_gifInstance is null)
return new Size();
var scaling = this.GetVisualRoot()?.RenderScaling ?? 1.0;
var sourceSize = _gifInstance.GifPixelSize.ToSize(scaling);
var result = Stretch.CalculateSize(finalSize, sourceSize);
return result;
}
private void SourceChanged(AvaloniaPropertyChangedEventArgs e)
{
if (
e.NewValue is null
|| (e.NewValue is string value && !Uri.IsWellFormedUriString(value, UriKind.Absolute))
)
{
return;
}
if (_customVisual is null)
{
_initialSource = e.NewValue;
return;
}
UpdateGifInstance(e.NewValue);
InvalidateArrange();
InvalidateMeasure();
Update();
}
private void UpdateGifInstance(object source)
{
_gifInstance?.Dispose();
try
{
_gifInstance = new WebpInstance(source);
// _gifInstance = new GifInstance(source);
_gifInstance.IterationCount = IterationCount;
_customVisual?.SendHandlerMessage(_gifInstance);
}
catch (Exception e)
{
Logger.Sink?.Log(LogEventLevel.Warning, "GifImage Update Source ", this, e.ToString());
}
}
}
}
================================================
FILE: Avalonia.Gif/GifInstance.cs
================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using Avalonia;
using Avalonia.Animation;
using Avalonia.Gif.Decoding;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using SkiaSharp;
namespace Avalonia.Gif
{
public class GifInstance : IGifInstance
{
public IterationCount IterationCount { get; set; }
public bool AutoStart { get; private set; } = true;
private readonly GifDecoder _gifDecoder;
private readonly WriteableBitmap? _targetBitmap;
private TimeSpan _totalTime;
private readonly List<TimeSpan> _frameTimes;
private uint _iterationCount;
private int _currentFrameIndex;
private readonly List<ulong> _colorTableIdList;
public CancellationTokenSource CurrentCts { get; }
internal GifInstance(object newValue)
: this(
newValue switch
{
Stream s => s,
Uri u => GetStreamFromUri(u),
string str => GetStreamFromString(str),
_ => throw new InvalidDataException("Unsupported source object")
}
) { }
public GifInstance(string uri)
: this(GetStreamFromString(uri)) { }
public GifInstance(Uri uri)
: this(GetStreamFromUri(uri)) { }
public GifInstance(Stream currentStream)
{
if (!currentStream.CanSeek)
throw new InvalidDataException("The provided stream is not seekable.");
if (!currentStream.CanRead)
throw new InvalidOperationException("Can't read the stream provided.");
currentStream.Seek(0, SeekOrigin.Begin);
CurrentCts = new CancellationTokenSource();
_gifDecoder = new GifDecoder(currentStream, CurrentCts.Token);
var pixSize = new PixelSize(
_gifDecoder.Header.Dimensions.Width,
_gifDecoder.Header.Dimensions.Height
);
// Different on os: https://github.com/mono/SkiaSharp/issues/1492#issuecomment-689015409
// ReSharper disable once SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault
var format = SKImageInfo.PlatformColorType switch
{
SKColorType.Bgra8888 => PixelFormat.Bgra8888,
SKColorType.Rgba8888 => PixelFormat.Rgba8888,
_
=> throw new NotSupportedException(
$"Unsupported color type: {SKImageInfo.PlatformColorType}"
)
};
_targetBitmap = new WriteableBitmap(pixSize, new Vector(96, 96), format, AlphaFormat.Opaque);
GifPixelSize = pixSize;
_totalTime = TimeSpan.Zero;
_frameTimes = _gifDecoder
.Frames.Select(frame =>
{
_totalTime = _totalTime.Add(frame.FrameDelay);
return _totalTime;
})
.ToList();
_gifDecoder.RenderFrame(0, _targetBitmap);
}
private static Stream GetStreamFromString(string str)
{
if (!Uri.TryCreate(str, UriKind.RelativeOrAbsolute, out var res))
{
throw new InvalidCastException("The string provided can't be converted to URI.");
}
return GetStreamFromUri(res);
}
private static Stream GetStreamFromUri(Uri uri)
{
var uriString = uri.OriginalString.Trim();
if (!uriString.StartsWith("resm") && !uriString.StartsWith("avares"))
{
return new FileStream(uriString, FileMode.Open, FileAccess.Read);
}
return AssetLoader.Open(uri);
}
public int GifFrameCount => _frameTimes.Count;
public PixelSize GifPixelSize { get; }
public void Dispose()
{
IsDisposed = true;
CurrentCts.Cancel();
_targetBitmap?.Dispose();
}
public bool IsDisposed { get; private set; }
public WriteableBitmap? ProcessFrameTime(TimeSpan stopwatchElapsed)
{
if (!IterationCount.IsInfinite && _iterationCount > IterationCount.Value)
{
return null;
}
if (CurrentCts.IsCancellationRequested || _targetBitmap is null)
{
return null;
}
var elapsedTicks = stopwatchElapsed.Ticks;
var timeModulus = TimeSpan.FromTicks(elapsedTicks % _totalTime.Ticks);
var targetFrame = _frameTimes.FirstOrDefault(x => timeModulus < x);
var currentFrame = _frameTimes.IndexOf(targetFrame);
if (currentFrame == -1)
currentFrame = 0;
if (_currentFrameIndex == currentFrame)
return _targetBitmap;
_iterationCount = (uint)(elapsedTicks / _totalTime.Ticks);
return ProcessFrameIndex(currentFrame);
}
internal WriteableBitmap ProcessFrameIndex(int frameIndex)
{
_gifDecoder.RenderFrame(frameIndex, _targetBitmap!);
_currentFrameIndex = frameIndex;
return _targetBitmap!;
}
}
}
================================================
FILE: Avalonia.Gif/IGifInstance.cs
================================================
using Avalonia.Animation;
using Avalonia.Media.Imaging;
namespace Avalonia.Gif;
public interface IGifInstance : IDisposable
{
IterationCount IterationCount { get; set; }
bool AutoStart { get; }
CancellationTokenSource CurrentCts { get; }
int GifFrameCount { get; }
PixelSize GifPixelSize { get; }
bool IsDisposed { get; }
WriteableBitmap? ProcessFrameTime(TimeSpan stopwatchElapsed);
}
================================================
FILE: Avalonia.Gif/InvalidGifStreamException.cs
================================================
namespace Avalonia.Gif
{
[Serializable]
internal class InvalidGifStreamException : Exception
{
public InvalidGifStreamException() { }
public InvalidGifStreamException(string message)
: base(message) { }
public InvalidGifStreamException(string message, Exception innerException)
: base(message, innerException) { }
}
}
================================================
FILE: Avalonia.Gif/WebpInstance.cs
================================================
using Avalonia.Animation;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using SkiaSharp;
namespace Avalonia.Gif;
public class WebpInstance : IGifInstance
{
public IterationCount IterationCount { get; set; }
public bool AutoStart { get; private set; } = true;
private readonly WriteableBitmap? _targetBitmap;
private TimeSpan _totalTime;
private readonly List<TimeSpan> _frameTimes;
private uint _iterationCount;
private int _currentFrameIndex;
private SKCodec? _codec;
public CancellationTokenSource CurrentCts { get; }
internal WebpInstance(object newValue)
: this(
newValue switch
{
Stream s => s,
Uri u => GetStreamFromUri(u),
string str => GetStreamFromString(str),
_ => throw new InvalidDataException("Unsupported source object")
}
) { }
public WebpInstance(string uri)
: this(GetStreamFromString(uri)) { }
public WebpInstance(Uri uri)
: this(GetStreamFromUri(uri)) { }
public WebpInstance(Stream currentStream)
{
if (!currentStream.CanSeek)
throw new InvalidDataException("The provided stream is not seekable.");
if (!currentStream.CanRead)
throw new InvalidOperationException("Can't read the stream provided.");
currentStream.Seek(0, SeekOrigin.Begin);
CurrentCts = new CancellationTokenSource();
var managedStream = new SKManagedStream(currentStream);
_codec = SKCodec.Create(managedStream);
var pixSize = new PixelSize(_codec.Info.Width, _codec.Info.Height);
// Different on os: https://github.com/mono/SkiaSharp/issues/1492#issuecomment-689015409
// ReSharper disable once SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault
var format = SKImageInfo.PlatformColorType switch
{
SKColorType.Bgra8888 => PixelFormat.Bgra8888,
SKColorType.Rgba8888 => PixelFormat.Rgba8888,
_ => throw new NotSupportedException($"Unsupported color type: {SKImageInfo.PlatformColorType}")
};
_targetBitmap = new WriteableBitmap(pixSize, new Vector(96, 96), format, AlphaFormat.Opaque);
GifPixelSize = pixSize;
_totalTime = TimeSpan.Zero;
_frameTimes = _codec
.FrameInfo.Select(frame =>
{
_totalTime = _totalTime.Add(TimeSpan.FromMilliseconds(frame.Duration));
return _totalTime;
})
.ToList();
RenderFrame(_codec, _targetBitmap, 0);
}
private static void RenderFrame(SKCodec codec, WriteableBitmap targetBitmap, int index)
{
codec.GetFrameInfo(index, out var frameInfo);
var info = new SKImageInfo(codec.Info.Width, codec.Info.Height);
var decodeInfo = info.WithAlphaType(frameInfo.AlphaType);
using var frameBuffer = targetBitmap.Lock();
var result = codec.GetPixels(decodeInfo, frameBuffer.Address, new SKCodecOptions(index));
if (result != SKCodecResult.Success)
throw new InvalidDataException($"Could not decode frame {index} of {codec.FrameCount}.");
}
private static void RenderFrame(SKCodec codec, WriteableBitmap targetBitmap, int index, int priorIndex)
{
codec.GetFrameInfo(index, out var frameInfo);
var info = new SKImageInfo(codec.Info.Width, codec.Info.Height);
var decodeInfo = info.WithAlphaType(frameInfo.AlphaType);
using var frameBuffer = targetBitmap.Lock();
var result = codec.GetPixels(decodeInfo, frameBuffer.Address, new SKCodecOptions(index, priorIndex));
if (result != SKCodecResult.Success)
throw new InvalidDataException($"Could not decode frame {index} of {codec.FrameCount}.");
}
private static Stream GetStreamFromString(string str)
{
if (!Uri.TryCreate(str, UriKind.RelativeOrAbsolute, out var res))
{
throw new InvalidCastException("The string provided can't be converted to URI.");
}
return GetStreamFromUri(res);
}
private static Stream GetStreamFromUri(Uri uri)
{
var uriString = uri.OriginalString.Trim();
if (!uriString.StartsWith("resm") && !uriString.StartsWith("avares"))
{
// Local file
using var fs = new FileStream(uriString, FileMode.Open, FileAccess.Read);
// Copy to memory stream then return
var memoryStream = new MemoryStream();
fs.CopyTo(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
// Internal Avalonia resources
return AssetLoader.Open(uri);
}
public int GifFrameCount => _frameTimes.Count;
public PixelSize GifPixelSize { get; }
public void Dispose()
{
IsDisposed = true;
CurrentCts.Cancel();
_targetBitmap?.Dispose();
_codec?.Dispose();
}
public bool IsDisposed { get; private set; }
public WriteableBitmap? ProcessFrameTime(TimeSpan stopwatchElapsed)
{
if (!IterationCount.IsInfinite && _iterationCount > IterationCount.Value)
{
return null;
}
if (CurrentCts.IsCancellationRequested || _targetBitmap is null)
{
return null;
}
var elapsedTicks = stopwatchElapsed.Ticks;
var timeModulus = TimeSpan.FromTicks(elapsedTicks % _totalTime.Ticks);
var targetFrame = _frameTimes.FirstOrDefault(x => timeModulus < x);
var currentFrame = _frameTimes.IndexOf(targetFrame);
if (currentFrame == -1)
currentFrame = 0;
if (_currentFrameIndex == currentFrame)
return _targetBitmap;
_iterationCount = (uint)(elapsedTicks / _totalTime.Ticks);
return ProcessFrameIndex(currentFrame);
}
internal WriteableBitmap ProcessFrameIndex(int frameIndex)
{
if (_codec is null)
throw new InvalidOperationException("The codec is null.");
if (_targetBitmap is null)
throw new InvalidOperationException("The target bitmap is null.");
RenderFrame(_codec, _targetBitmap, frameIndex, _currentFrameIndex);
_currentFrameIndex = frameIndex;
return _targetBitmap;
}
}
================================================
FILE: Build/AppEntitlements.entitlements
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
</dict>
</plist>
================================================
FILE: Build/EmbeddedEntitlements.entitlements
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>
================================================
FILE: Build/_utils.sh
================================================
#!/bin/bash
print_hyperlink() {
local url="$1"
local text="$2"
# macOS Terminal supports clickable links in the following format
printf "\033]8;;%s\a%s\033]8;;\a" "$url" "$text"
}
================================================
FILE: Build/build_macos_app.sh
================================================
#!/bin/bash
output_dir="$(pwd)/out/osx-arm64/"
app_name="Stability Matrix.app"
. "./_utils.sh" > /dev/null 2>&1 || . "${BASH_SOURCE%/*}/_utils.sh"
# Parse args
while getopts v: flag
do
case "${flag}" in
v)
version=${OPTARG}
;;
*)
echo "Invalid option: -$OPTARG" >&2
exit 2
;;
esac
done
shift $((OPTIND - 1))
echo $"Passing extra args to msbuild: $@"
set -e
# Build the app
dotnet \
msbuild \
StabilityMatrix.Avalonia \
-t:BundleApp \
-p:RuntimeIdentifier=osx-arm64 \
-p:UseAppHost=true \
-p:Configuration=Release \
-p:SelfContained=true \
-p:CFBundleName="Stability Matrix" \
-p:CFBundleDisplayName="Stability Matrix" \
-p:CFBundleVersion="$version" \
-p:CFBundleShortVersionString="$version" \
-p:PublishDir="${output_dir:?}/bin" \
"$@"
target_plist_path="${output_dir:?}/bin/${app_name:?}/Contents/Info.plist"
echo "> Checking Info.plist..."
file "${target_plist_path:?}"
plutil -lint "${target_plist_path:?}"
echo "> Copying app to output..."
# Delete existing file
rm -rf "${output_dir:?}/${app_name:?}"
# Copy the app out of bin
cp -r "${output_dir:?}/bin/${app_name:?}" "${output_dir:?}/${app_name:?}"
# Print output location
echo "[App Build Completed]"
print_hyperlink "file:///${output_dir:?}" "${output_dir:?}"
print_hyperlink "file:///${output_dir:?}/${app_name:?}" "${app_name:?}"
echo ""
================================================
FILE: Build/codesign_embedded_macos.sh
================================================
#!/bin/sh
echo "Signing file: $1"
# Setup keychain in CI
if [ -n "$CI" ]; then
# Turn our base64-encoded certificate back to a regular .p12 file
echo "$MACOS_CERTIFICATE" | base64 --decode -o certificate.p12
# We need to create a new keychain, otherwise using the certificate will prompt
# with a UI dialog asking for the certificate password, which we can't
# use in a headless CI environment
security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain
fi
# Sign all files
PARENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" || return ; pwd -P )
ENTITLEMENTS="$PARENT_PATH/EmbeddedEntitlements.entitlements"
echo "Using entitlements file: $ENTITLEMENTS"
# App
if [ "$1" == "*.app" ]; then
echo "[INFO] Signing app contents"
find "$1/Contents/MacOS/"|while read fname; do
if [[ -f $fname ]]; then
echo "[INFO] Signing $fname"
codesign --force --timestamp -s "$MACOS_CERTIFICATE_NAME" --options=runtime --entitlements "$ENTITLEMENTS" "$fname"
fi
done
echo "[INFO] Signing app file"
codesign --force --timestamp -s "$MACOS_CERTIFICATE_NAME" --options=runtime --entitlements "$ENTITLEMENTS" "$1" -v
# Directory
elif [ -d "$1" ]; then
echo "[INFO] Signing directory contents"
find "$1"|while read fname; do
if [[ -f $fname ]] && [[ ! $fname =~ /(*.(py|msg|enc))/ ]]; then
echo "[INFO] Signing $fname"
codesign --force --timestamp -s "$MACOS_CERTIFICATE_NAME" --options=runtime --entitlements "$ENTITLEMENTS" "$fname"
fi
done
# File
elif [ -f "$1" ]; then
echo "[INFO] Signing file"
codesign --force --timestamp -s "$MACOS_CERTIFICATE_NAME" --options=runtime --entitlements "$ENTITLEMENTS" "$1" -v
# Not matched
else
echo "[ERROR] Unknown file type"
exit 1
fi
================================================
FILE: Build/codesign_macos.sh
================================================
#!/bin/sh
echo "Signing file: $1"
# Setup keychain in CI
if [ -n "$CI" ]; then
# Turn our base64-encoded certificate back to a regular .p12 file
echo "$MACOS_CERTIFICATE" | base64 --decode -o certificate.p12
# We need to create a new keychain, otherwise using the certificate will prompt
# with a UI dialog asking for the certificate password, which we can't
# use in a headless CI environment
security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain
fi
# Sign all files
PARENT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" || return ; pwd -P )
ENTITLEMENTS="$PARENT_PATH/AppEntitlements.entitlements"
echo "Using entitlements file: $ENTITLEMENTS"
find "$1/Contents/MacOS/"|while read fname; do
if [[ -f $fname ]]; then
echo "[INFO] Signing $fname"
codesign --force --timestamp -s "$MACOS_CERTIFICATE_NAME" --options=runtime --entitlements "$ENTITLEMENTS" "$fname"
fi
done
echo "[INFO] Signing app file"
codesign --force --timestamp -s "$MACOS_CERTIFICATE_NAME" --options=runtime --entitlements "$ENTITLEMENTS" "$1" -v
================================================
FILE: Build/notarize_macos.sh
================================================
#!/bin/sh
echo "Notarizing file: $1"
# Store the notarization credentials so that we can prevent a UI password dialog
# from blocking the CI
echo "Create keychain profile"
xcrun notarytool store-credentials "notarytool-profile" \
--apple-id "$MACOS_NOTARIZATION_APPLE_ID" \
--team-id "$MACOS_NOTARIZATION_TEAM_ID" \
--password "$MACOS_NOTARIZATION_PWD"
# We can't notarize an app bundle directly, but we need to compress it as an archive.
# Therefore, we create a zip file containing our app bundle, so that we can send it to the
# notarization service
echo "Creating temp notarization archive"
ditto -c -k --keepParent "$1" "notarization.zip"
# Here we send the notarization request to the Apple's Notarization service, waiting for the result.
# This typically takes a few seconds inside a CI environment, but it might take more depending on the App
# characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if
# you're curious
echo "Notarize app"
xcrun notarytool submit "notarization.zip" --keychain-profile "notarytool-profile" --wait
# Finally, we need to "attach the staple" to our executable, which will allow our app to be
# validated by macOS even when an internet connection is not available.
echo "Attach staple"
xcrun stapler staple "$1"
================================================
FILE: CHANGELOG.md
================================================
# Changelog
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).
## v2.15.6
### Added
- 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!
### 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
- Backslashes can now be escaped in Inference prompts via `\\`
### Fixed
- Fixed parsing of escape sequences in Inference such as `\\`
- 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
To our stellar Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity keeps this project thriving and gives us the confidence to tackle the big challenges. Thank you for being the foundation that makes it all possible!
#### 🚀 Pioneers
Shoutout to our incredible Pioneer crew for keeping the momentum going! Thank you to: **Szir777**, **Noah M**, **[USA]TechDude**, **Thom**, **SeraphOfSalem**, **Desert Viber**, **Adam**, **Droolguy**, **ACTUALLY_the_Real_Willem_Dafoe**, **takyamtom**, **robek**, **Ghislain G**, **Phil R**, **Tundra Everquill**, and a warm welcome to our newest Pioneers: **Andrew B**, **snotty**, **Miguel A**, **SinthCore**, and **Ahmed S**!
## v2.15.5
### Added
- 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 Tiled VAE decoding as an Inference addon thanks to @NeuralFault!
- Added togglable `--uv` argument to the SD.Next launch options
### 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
- Updated torch index for Forge-based UIs to rocm6.4 / cu128 depending on GPU - thanks to @NeuralFault!
### 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!
#### 🌟 Visionaries
To our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your generosity drives this project forward and helps us turn ideas into reality. Thank you for being such a vital part of Stability Matrix!
#### 🚀 Pioneers
A massive thank you to our Pioneer crew! Your support keeps the lights on and the updates flowing. Shoutout to: **Szir777**, **Noah M**, **[USA]TechDude**, **Thom**, **SeraphOfSalem**, **Desert Viber**, **Adam**, **Droolguy**, **ACTUALLY_the_Real_Willem_Dafoe**, **takyamtom**, **robek**, **Phil R**, **Tundra Everquill**, **TheTekknician**, and a warm welcome to our new Pioneers, **Benjamin M** and **Ghislain G**!
## v2.15.4
### Changed
- Updated Early Access indicators in the Civitai Details page to be more visible
- Updated error message when attempting to download a website-generation-only model from Civitai
- Updated nunchaku installer to 1.0.2
- Updated Package Import dialog to have Python version selector
### Fixed
- Fixed [#1435](https://github.com/LykosAI/StabilityMatrix/issues/1435) - SwarmUI not launching due to missing dotnet
- Fixed various install and Inference issues with ComfyUI-Zluda - big thanks to @neural_fault for the PRs!
- Fixed sageattention version getting out of sync after torch updates in ComfyUI
- Potentially fixed issue where uv-managed Python versions would not appear in the version selector
### Supporters
#### 🌟 Visionaries
Our heartfelt thanks to the driving force behind our progress, our Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your incredible support is the fuel that powers our development, allowing us to tackle bugs and push forward with confidence.
#### 🚀 Pioneers
A huge shoutout to our amazing Pioneers, who keep the momentum going strong! Thank you for being our trusted crew on this journey: **Szir777**, **Noah M**, **USATechDude**, **Thom**, **SeraphOfSalem**, **Desert Viber**, **Tundra Everquill**, **Adam**, **Droolguy**, **Philip R.**, **ACTUALLY_the_Real_Willem_Dafoe**, **takyamtom**, and **robek**!
## v2.15.3
### Changed
- Updated fallback rocm index for InvokeAI to rocm6.3
- Updated SwarmUI to launch via the launch script for better compatibility
### Fixed
- Fixed cuDNN frontend error on ComfyUI-Zluda startup (thanks @neural_fault!)
- Maybe finally actually fixed threading issue with the Python Packages dialog search box for real this time? (may fix [#1392](https://github.com/LykosAI/StabilityMatrix/issues/1392))
- Fixed potential install failures when moving duplicate files into shared model folders (may fix [#1393](https://github.com/LykosAI/StabilityMatrix/issues/1393))
- Fixed potential threading issues with the Inference image gallery (may fix [#1408](https://github.com/LykosAI/StabilityMatrix/issues/1408))
- Fixed [#1424](https://github.com/LykosAI/StabilityMatrix/issues/1424) - Civitai account 401 error when connecting accounts, updated for new API changes
### Supporters
#### 🌟 Visionaries
Our deepest gratitude to our Visionaries for their foundational support: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, and **whudunit**! Your commitment allows us to focus on the essential work of squashing bugs and improving stability, ensuring a rock-solid experience for everyone.
#### 🚀 Pioneers
A huge thank you to our incredible Pioneers for keeping the project on track! Your support is vital for these important refinement updates. Thank you to **Szir777**, **Noah M**, **USATechDude**, **Thom**, **SeraphOfSalem**, **Desert Viber**, **Tundra Everquill**, **Adam**, **Droolguy**, **Philip R.**, **ACTUALLY_the_Real_Willem_Dafoe**, **takyamtom**, and a warm welcome to our newest Pioneer, **robek**!
## v2.15.2
### Changed
- Updated Avalonia to 11.3.7
### Fixed
- Fixed [#1409](https://github.com/LykosAI/StabilityMatrix/issues/1409) - incorrect triton version installed during FramePack install on non-Windows systems
- Fixed [#1410](https://github.com/LykosAI/StabilityMatrix/issues/1410) - crash when resizing Civitai model details page
- Fixed [#1417](https://github.com/LykosAI/StabilityMatrix/issues/1417), [#1419](https://github.com/LykosAI/StabilityMatrix/issues/1419) - unable to connect Inference to ComfyUI after updating to latest ComfyUI
- Fixed missing dependencies for ComfyUI API nodes
### Supporters
#### 🌟 Visionaries
Huge thanks to our incredible Visionaries: **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, **Ibixat**, and **whudunit**! You’re the reason Stability Matrix keeps pushing forward. Your support lights the path and keeps the dream alive.
#### 🚀 Pioneers
Shoutout to our amazing Pioneer crew: **Szir777**, **Tigon**, **Noah M**, **USATechDude**, **Thom**, **SeraphOfSalem**, **Desert Viber**, **Tundra Everquill**, **Adam**, **Droolguy**, **Philip R.**, **ACTUALLY_the_Real_Willem_Dafoe**, and **takyamtom**! You help keep the gears turning and the magic flowing.
## v2.15.1
### Changed
- Upgraded ComfyUI-Zluda and Stable Diffusion WebUI AMDGPU Forge packages to install and use HIP SDK 6.4.2
- Changed ComfyUI torch index from `cu129` back to `cu128` for better compatibility with custom nodes
- Updated SageAttention installer to install v2.2.0-windows.post3
- Updated Nunchaku installer to install v1.0.1
- Updated Windows ROCm ComfyUI installs to use recommended environment variables by default
### Fixed
- Fixed [#1372](https://github.com/LykosAI/StabilityMatrix/issues/1372), [#1399](https://github.com/LykosAI/StabilityMatrix/issues/1399) - LiteAsyncException upon starting Stability Matrix v2.15.0
- Fixed [#1391](https://github.com/LykosAI/StabilityMatrix/issues/1391) - "Failed to parse" error when upgrading pip packages with extra index url
- Fixed [#1401](https://github.com/LykosAI/StabilityMatrix/issues/1401) - "Python <version> was not found and/or failed to install" errors when path contains special characters
- Fixed [#1403](https://github.com/LykosAI/StabilityMatrix/issues/1403) - Checkpoint Manager filters not being saved correctly
- Fixed [#1411](https://github.com/LykosAI/StabilityMatrix/issues/1411) - SD.Next installs not using correct torch version
- Fixed "cannot access local variable 'job' where it is not associated with a value" error when running jobs in AI Toolkit
- Fixed Civitai browser not always returning at least 30 results when possible on initial search
- Fixed model browser crashing when downloading a file with invalid characters in the name
- Fixed model browser crashing when no author exists for a model
### Supporters
#### 🌟 Visionaries
To our guiding stars, the Visionaries! Thank you **Waterclouds**, **JungleDragon**, **bluepopsicle**, **Bob S**, **Ibixat**, and **whudunit**! While this release is focused on fixes and stability, your foundational support is what empowers us to build a reliable and robust platform for everyone.
#### 🚀 Pioneers
A huge round of applause for our fantastic Pioneers! Your steady support helps us smooth out the rough edges and deliver a better experience with every update. Our deepest thanks to: **Szir777**, **Tigon**, **Noah M**, **USATechDude**, **Thom**, **SeraphOfSalem**, **Desert Viber**, **Tundra Everquill**, **Adam**, and **Droolguy**. We're also thrilled to welcome our newest Pioneers to the crew: **Philip R.**, **ACTUALLY_the_Real_Willem_Dafoe**, and **takyamtom**!
## v2.15.0
### Added
- Added new package - [AI Toolkit](https://github.com/ostris/ai-toolkit/)
- Added new package - [FramePack](https://github.com/lllyasviel/FramePack)
- Added new package - [FramePack Studio](https://github.com/colinurbs/FramePack-Studio)
- Added Python Version selector for all new package installs
- Added the ability to rename packages
- Added support for authenticated model downloads in the HuggingFace model browser. Visit Settings → Accounts to add your HuggingFace token.
- Added support for dragging-and-dropping Civitai-generated images into Inference to load metadata
- Added the ability to search by pasting an entire Civitai model URL into the search bar in the Civitai model browser
- Added "Clear Pip Cache" and "Clear uv Cache" commands to the Settings -> Embedded Python section
- Added settings to disable base models from appearing in the Checkpoint Manager and Civitai Model Browser base model selectors
- Added Inference "Favorite Dimensions" quick selector - editable in Settings → Inference, or click the 💾 button inside the dropdown
- Added setting for Inference dimension step change - the value the dimensions increase or decrease by when using the step buttons or scroll wheel in Inference
- Added "Install Nunchaku" option to the ComfyUI Package Commands menu
- Added "Select All" button to the Installed Extensions page
- Added experimental ROCm pytorch install for ComfyUI (non-Zluda) on Windows - requires a compatible AMD GPU
- Added base model type labels (SD1.5, SDXL, Flux, etc.) to Inference model selection boxes
- Added UNET shared folder link for SD.Next
- Added Manual Install button for installing Package extensions that aren't in the indexes
- Added Next and Previous buttons to the Civitai details page to navigate between results
- Added Negative Rejection Steering (NRS) by @reithan to Inference
- Added Wan 2.2 models to the HuggingFace tab of the model browser
- Added Tiled Encode/Decode options to FaceDetailer in Inference
- Added Ukrainian translation thanks to @r0ddty!
- Added Czech translation thanks to @PEKArt!
### Changed
🌟 Civitai Model Details: A Grand Reimagining! 🌟
- No more peering through a tiny window! Introducing a massive overhaul of the Civitai Model Details page, transforming it from a cramped dialog into a spacious, feature-rich hub for all your model exploration needs.
- We've listened to your howls for more, and now you can dive deep into every aspect of your favorite models with unprecedented clarity and control:
- Expansive View: The new full-page layout means all essential information, descriptions, and previews are laid out beautifully, banishing the old, restrictive dialog forever.
- Rich Details at a Glance: Author, base model, last updated, SHA hashes, file name overrides/patterns – everything you need, perfectly organized and always accessible.
- Overhauled Image Viewer: Enjoy a sleek, modern image viewer that includes Civitai metadata and supports zooming, panning, and full-screen viewing. No more squinting at tiny thumbnails!
- Integrated Inference Options: For supported models, adjust sampler, scheduler, steps, CFG Scale, width, and height directly from the details page, streamlining your workflow like never before!
----
- Updated all Python version management, virtual environment creation, and pip installs to use `uv` for improved reliability, compatibility, and speed
- You can now select release versions when installing ComfyUI
- You can no longer select branches when installing InvokeAI
- Updated InvokeAI install to use the intended install method (resolves [#1329](https://github.com/LykosAI/StabilityMatrix/issues/1329))
- Updated ComfyUI installs for AMD users on Linux to use the latest rocm6.3 torch index
- Updated ComfyUI-Zluda installs to use the newer install-n method (fixes [#1347](https://github.com/LykosAI/StabilityMatrix/issues/1347))
- Removed disclaimer from reForge since the author is now active again
- Updated git operations to better avoid conflicts
- Updated Japanese translation
- Civitai model browser image loading now uses dynamic resizing for better performance and a smoother scrolling experience
- Undo ComfyUI process tracking changes for now due to causing more issues than it solved
- Updated GPU parsing fallback on Linux systems to use the method provided by @irql-notlessorequal
- New installs of ComfyUI, SD.Next, and InvokeAI will now use Python 3.12, unless otherwise specified in the Advanced Options during installation
- New installs of all other packages will now use Python 3.10.18, unless otherwise specified in the Advanced Options during installation
- Updated ComfyUI installs for AMD users on Linux to use the latest rocm6.4 torch index
- Updated package delete confirmation dialog
### Fixed
- Fixed an error when packages and other processes exit before process tracking on windows can initialize
- Fixed "none" appearing in wildcard field when using Face Detailer in Inference
- Fixed [#1254](https://github.com/LykosAI/StabilityMatrix/issues/1254) - Unable to scroll samplers in Inference
- Fixed [#1294](https://github.com/LykosAI/StabilityMatrix/issues/1294) - Improper sorting of output folders in Output Browser
- Fixed [#1300](https://github.com/LykosAI/StabilityMatrix/issues/1300) - Git errors when installing Extension Packs
- Fixed [#1317](https://github.com/LykosAI/StabilityMatrix/issues/1317) - Inference missing GGUF text encoders
- Fixed [#1324](https://github.com/LykosAI/StabilityMatrix/issues/1324) - Window height slightly increasing every launch
- Fixed [#1357](https://github.com/LykosAI/StabilityMatrix/issues/1357) - Case insensitivity causing duplicate key exceptions on non-Windows systems
- Fixed [#1360](https://github.com/LykosAI/StabilityMatrix/issues/1360) - A1111 install not using correct torch for 5000-series GPUs
- Fixed [#1361](https://github.com/LykosAI/StabilityMatrix/issues/1361) - numpy and other Forge startup
- Fixed [#1365](https://github.com/LykosAI/StabilityMatrix/issues/1365) - Output folder list not updating when Refresh button clicked
### Supporters
#### 🌟 Visionaries
To our incredible Visionaries, the architects of our ambition: Your profound support is the powerhouse behind this massive v2.15.0 release. You don't just light the path; you fuel the entire journey, allowing us to build bigger, move faster, and turn bold ideas into reality. Our deepest gratitude to: **Waterclouds**, **Corey T**, **bluepopsicle**, **Bob S**, **Ibixat**, **whudunit**, and **TheTekknician**! We are immensely grateful for your trust and partnership in shaping the future of Stability Matrix. Thank you for everything!
#### 🚀 Pioneers
A heartfelt salute to our trailblazing Pioneers! Your consistent support helps us navigate the development landscape, ensuring we stay on the right track and can explore new frontiers. A huge thanks to: **tankfox**, **Mr. Unknown**, **Szir777**, **Tigon**, **Noah M**, **USATechDude**, **Thom**, **SeraphOfSalem**, and a special welcome to our newest Pioneers - **Desert Viber**, **Tundra Everquill**, **Adam**, and **Droolguy**! Thank you for being the vanguard of our community!
## v2.15.0-pre.2
### Added
- Added new package - [AI Toolkit](https://github.com/ostris/ai-toolkit/)
- Added Manual Install button for installing Package extensions that aren't in the indexes
- Added Next and Previous buttons to the Civitai details page to navigate between results
- Added Negative Rejection Steering (NRS) by @reithan to Inference
- Added Czech translation thanks to @PEKArt!
- Added Wan 2.2 models to the HuggingFace tab of the model browser
- Added Tiled Encode/Decode options to FaceDetailer in Inference
### Changed
- Brought back the "size remaining after download" tooltip in the new Civitai details page
- Updated ComfyUI installs for AMD users on Linux to use the latest rocm6.4 torch index
- Updated package delete confirmation dialog
### Fixed
- Fixed Inference custom step (e.g. HiresFix) Samplers potentially sharing state with other card UIs like model browser.
- Fixed extension manager failing to install extensions due to incorrect clone directory
- Fixed duplicate Python versions appearing in the Advanced Options when installing a package
- Fixed an error when packages and other processes exit before process tracking on windows can initialize
- Fixed "none" appearing in wildcard field when using Face Detailer in Inference
- Fixed [#1254](https://github.com/LykosAI/StabilityMatrix/issues/1254) - Unable to scroll samplers in Inference
- Fixed [#1294](https://github.com/LykosAI/StabilityMatrix/issues/1294) - Improper sorting of output folders in Output Browser
- Fixed [#1300](https://github.com/LykosAI/StabilityMatrix/issues/1300) - Git errors when installing Extension Packs
- Fixed [#1317](https://github.com/LykosAI/StabilityMatrix/issues/1317) - Inference missing GGUF text encoders
- Fixed [#1324](https://github.com/LykosAI/StabilityMatrix/issues/1324) - Window height slightly increasing every launch
- Fixed [#1360](https://github.com/LykosAI/StabilityMatrix/issues/1360) - A1111 install not using correct torch for 5000-series GPUs
- Fixed [#1361](https://github.com/LykosAI/StabilityMatrix/issues/1361) - numpy and other Forge startup
### Supporters
#### 🌟 Visionaries
A huge thank-you to our incredible Visionary-tier supporters: **Waterclouds**, **Corey T**, **bluepopsicle**, **Bob S**, **Ibixat**, **whudunit**, and **Akiro_Senkai**! Your continued support lights the way for Stability Matrix and helps us keep building features like these. We couldn’t do it without you.
## v2.15.0-pre.1
### Added
- Added settings to disable base models from appearing in the Checkpoint Manager and Civitai Model Browser base model selectors
- Added Inference "Favorite Dimensions" quick selector - editable in Settings → Inference, or click the 💾 button inside the dropdown
- Added setting for Inference dimension step change - the value the dimensions increase or decrease by when using the step buttons or scroll wheel in Inference
- Added "Install Nunchaku" option to the ComfyUI Package Commands menu
- Added "Select All" button to the Installed Extensions page
- Added experimental ROCm pytorch install for ComfyUI (non-Zluda) on Windows - requires a compatible AMD GPU
- Added base model type labels (SD1.5, SDXL, Flux, etc.) to Inference model selection boxes
- Added UNET shared folder link for SD.Next
- Added Ukrainian translation thanks to @r0ddty!
### Changed
🌟 Civitai Model Details: A Grand Reimagining! 🌟
- No more peering through a tiny window! Introducing a massive overhaul of the Civitai Model Details page, transforming it from a cramped dialog into a spacious, feature-rich hub for all your model exploration needs.
- We've listened to your howls for more, and now you can dive deep into every aspect of your favorite models with unprecedented clarity and control:
- Expansive View: The new full-page layout means all essential information, descriptions, and previews are laid out beautifully, banishing the old, restrictive dialog forever.
- Rich Details at a Glance: Author, base model, last updated, SHA hashes, file name overrides/patterns – everything you need, perfectly organized and always accessible.
- Overhauled Image Viewer: Enjoy a sleek, modern image viewer that includes Civitai metadata and supports zooming, panning, and full-screen viewing. No more squinting at tiny thumbnails!
- Integrated Inference Options: For supported models, adjust sampler, scheduler, steps, CFG Scale, width, and height directly from the details page, streamlining your workflow like never before!
----
- You can now select release versions when installing ComfyUI
- You can no longer select branches when installing InvokeAI
- Updated InvokeAI install to use pinned torch index from release tag
- Updated ComfyUI installs for AMD users on Linux to use the latest rocm6.3 torch index
- Updated ComfyUI-Zluda installs to use the newer install-n method (fixes [#1347](https://github.com/LykosAI/StabilityMatrix/issues/1347))
- Updated uv to 0.8.4
- Removed disclaimer from reForge since the author is now active again
- Updated git operations to better avoid conflicts
- Updated Japanese translation
- Undo ComfyUI process tracking changes for now due to causing more issues than it solved
- Updated GPU parsing fallback on Linux systems to use the method provided by @irql-notlessorequal
### Fixed
- Fixed Civitai-generated image parsing in Inference
- Fixed some first-time setup crashes from missing prerequisites
- Fixed one-click installer not using default preferred Python version
- Fixed updating from old installs of InvokeAI using old frontend
- Fixed [#1357](https://github.com/LykosAI/StabilityMatrix/issues/1357) - Case insensitivity causing duplicate key exceptions on non-Windows systems
### Supporters
#### 🌟 Visionaries
To our brilliant Visionary-tier Patrons: **Waterclouds**, **Corey T**, **bluepopsicle**, **Bob S**, **Ibixat**, and **whudunit** — your support is the spark that keeps Stability Matrix blazing forward. Thanks to you, we can explore bolder features, tackle complex challenges, and keep making the impossible feel effortless. Thank you all so very much! 🚀
## v2.15.0-dev.2
### Added
- Added new package - [FramePack](https://github.com/lllyasviel/FramePack)
- Added new package - [FramePack Studio](https://github.com/colinurbs/FramePack-Studio)
- Added support for authenticated model downloads in the HuggingFace model browser. Visit Settings → Accounts to add your HuggingFace token.
- Added support for dragging-and-dropping Civitai-generated images into Inference to load metadata
- Added the ability to search by pasting an entire Civitai model URL into the search bar in the Civitai model browser (when the Civitai API gets fixed)
- Added "Clear Pip Cache" and "Clear uv Cache" commands to the Settings -> Embedded Python section
### Changed
- Civitai model browser image loading now uses dynamic resizing for better performance and a smoother scrolling experience
- Detailed notifications for Civitai model browser api errors
- The main sidebar now remembers whether it was collapsed or expanded between restarts
- Updated pre-selected download locations for certain model types in the Civitai model browser
- Updated uv to 0.7.19
- Changed InvokeAI update process to no longer clone the repo
### Fixed
- Fixed missing .NET 8 dependency for SwarmUI installs in certain cases
- Fixed [#1291](https://github.com/LykosAI/StabilityMatrix/issues/1291) - Certain GPUs not being detected on Linux
- Fixed [#1284](https://github.com/LykosAI/StabilityMatrix/issues/1284) - Output browser not ignoring InvokeAI thumbnails folders
- Fixed [#1305](https://github.com/LykosAI/StabilityMatrix/issues/1305) - FluxGym installing incorrect packages for Blackwell GPUs
- Fixed [#1316](https://github.com/LykosAI/StabilityMatrix/issues/1316) - Errors when installing Triton & SageAttention
- Fixed "directory is not empty" error when updating packages with symlinks
- Fixed missing base model types in the Checkpoint Manager & Civitai Model Browser
### Supporters
#### 🌟 Visionaries
A huge thank you to our amazing Visionary-tier Patrons: **Waterclouds**, **Corey T**, **bluepopsicle**, **Bob S**, **Ibixat**, and our newest Visionary, **whudunit**! 🚀 Your generous support enables Stability Matrix to grow faster and tackle ambitious new ideas. You're truly making all the magic happen!
## v2.15.0-dev.1
### Added
- Added Python Version selector for all new package installs
- Added the ability to rename packages
### Changed
- Updated all Python version management, virtual environment creation, and pip installs to use `uv` for improved reliability, compatibility, and speed
- The Civitai model browser Download Location selector will now remember the last location used based on the model type
- New installs of ComfyUI, SD.Next, and InvokeAI will now use Python 3.12.10, unless otherwise specified in the Advanced Options during installation
- New installs of all other packages will now use Python 3.10.17, unless otherwise specified in the Advanced Options during installation
### Supporters
#### 🌟 Visionaries
A massive thank you to our esteemed Visionary-tier Patrons: **Waterclouds**, **bluepopsicle**, **Bob S**, **Ibixat**, and **Corey T**! Your exceptional commitment propels Stability Matrix to new heights and allows us to push the boundaries of innovation. We're incredibly grateful for your foundational support! 🚀
## v2.14.3
### Added
- Added the ability to search by pasting an entire Civitai model URL into the search bar in the Civitai model browser
### Changed
- The main sidebar now remembers whether it was collapsed or expanded between restarts.
- Inference is now able to load image metadata from Civitai generated images via drag & drop
- Updated process tracking for ComfyUI to help mitigate restart issues when using Comfy Manager
- Updated pre-selected download locations for certain model types in the Civitai model browser
- Updated nodejs to v20.19.3 to support newer InvokeAI versions
### Fixed
- Fixed missing .NET 8 dependency for SwarmUI installs in certain cases
- Fixed ComfyUI-Zluda not being recognized as a valid Comfy install for the workflow browser
- Fixed [#1291](https://github.com/LykosAI/StabilityMatrix/issues/1291) - Certain GPUs not being detected on Linux
- Fixed [#1284](https://github.com/LykosAI/StabilityMatrix/issues/1284) - Output browser not ignoring InvokeAI thumbnails folders
- Fixed [#1301](https://github.com/LykosAI/StabilityMatrix/issues/1301) - Error when installing kohya_ss
- Fixed [#1305](https://github.com/LykosAI/StabilityMatrix/issues/1305) - FluxGym installing incorrect packages for Blackwell GPUs
- Fixed [#1316](https://github.com/LykosAI/StabilityMatrix/issues/1316) - Errors when installing Triton & SageAttention
- Fixed "directory is not empty" error when updating packages with symlinks
- Fixed missing base model types in the Checkpoint Manager & Civitai Model Browser
### Supporters
#### 🌟 Visionaries
Big heartfelt thanks to our stellar Visionary-tier Patrons: **Waterclouds**, **Corey T**, **bluepopsicle**, **Bob S**, **Ibixat**, and **whudunit**! 🌟 Your extraordinary generosity continues to fuel Stability Matrix’s journey toward innovation and excellence. We appreciate you immensely!
#### 🚀 Pioneers
Massive thanks to our fantastic Pioneer-tier Patrons: **tankfox**, **Mr. Unknown**, **Szir777**, **Tigon**, **Noah M**, **USATechDude**, **Thom**, and **SeraphOfSalem**! Your unwavering support keeps our community thriving and inspires us to push even further. You’re all awesome!
## v2.14.2
### Changed
- Changed Nvidia GPU detection to use compute capability level instead of the GPU name for certain feature gates / torch indexes
### Fixed
- Fixed [#1266](https://github.com/LykosAI/StabilityMatrix/issues/1266) - crash when moving or deleting Lora models in the Checkpoint Manager
- Fixed [#1268](https://github.com/LykosAI/StabilityMatrix/issues/1268) - wrong torch index used for Nvidia 1000-series GPUs and older
- Fixed [#1269](https://github.com/LykosAI/StabilityMatrix/issues/1269), [#1257](https://github.com/LykosAI/StabilityMatrix/issues/1257), [#1234](https://github.com/LykosAI/StabilityMatrix/issues/1234) - "no such file or directory" errors when updating certain packages after folder migration
- Fixed [#1274](https://github.com/LykosAI/StabilityMatrix/issues/1274), [#1276](https://github.com/LykosAI/StabilityMatrix/issues/1276) - incorrect torch installed when updating to InvokeAI v5.12+
- Fixed missing shared folder links for SwarmUI's diffusion_models and clip folders
### Supporters
#### 🌟 Visionaries
Our deepest gratitude to the brilliant Visionary-tier Patrons: **Waterclouds**, **bluepopsicle**, **Bob S**, **Ibixat**, and **Corey T**! Your incredible backing is instrumental in shaping the future of Stability Matrix and empowering us to deliver cutting-edge features. Thank you for believing in our vision! 🙏
#### 🚀 Pioneers
A huge shout-out to our fantastic Pioneer-tier Patrons: **Mr. Unknown**, **tankfox**, **Szir777**, **Noah M**, **USATechDude**, **Thom**, **TheTekknician**, and **SeraphOfSalem**! Your consistent support and active engagement are vital to our community's growth and our ongoing development efforts. You truly make a difference! ✨
## v2.14.1
### Changed
- Updated Inference Extra Networks (Lora / LyCORIS) base model filtering to consider SDXL variations (e.g., Noob AI / Illustrious) as compatible, unrecognized models or models with no base model will be considered compatible.
- Changed hotkey for Inference prompt weight adjustment to (`⌘+Up`/`⌘+Down`) on macOS
- Improved style consistency of Inference Prompt action buttons on top right
- (Internal) Improved log console formatting & colorization for development
### Fixed
- Fixed Inference hotkey weight adjustment multi-line behavior, now works as expected like the first line.
- Fixed updates to versions with commit hash version parts not being recognized when the current version has no commit hash part.
- Fixed Inference Extra Networks card not updating with newly added model files.
- Fixed incorrect ROCmLibs being installed for RX 6800/6800XT users of Comfy-Zluda or AMDGPU-Forge
- Fixed missing text when missing localized versions for Italian and Chinese languages
- Fixed Python Packages dialog errors and potentially other issues due to concurrent OnLoaded events
### Supporters
#### 🌟 Visionaries
Big cheers to our incredible Visionary-tier Patrons: **bluepopsicle**, **Bob S**, **Ibixat**, **Waterclouds**, and **Corey T**! 🚀 Your amazing support lets us dream bigger and reach further every single month. Thanks for being the driving force behind Stability Matrix - we genuinely couldn't do it without you!
#### 🚀 Pioneers
Huge thanks to our fantastic Pioneer-tier Patrons: **tankfox**, **Mr. Unknown**, **Szir777**, **Tigon**, and **Noah M**! Special shoutout and welcome back to **TheTekknician**, and a warm welcome aboard to our newest Pioneers: **USATechDude**, **SeraphOfSalem**, and **Thom**! ✨ Your continued support keeps our community vibrant and pushes us to keep creating. You all rock!
## v2.14.0
### Added
#### New Packages & Integrations
- Added new package - [Stable Diffusion WebUI AMDGPU Forge](https://github.com/lshqqytiger/stable-diffusion-webui-amdgpu-forge)
- Added new package - [Stable Diffusion WebUI Forge - Classic](https://github.com/Haoming02/sd-webui-forge-classic)
- Added new Package Command (in the 3-dots menu) for installing Triton & SageAttention in ComfyUI
#### Inference Features
- Added Prompt Amplifier to Inference - click the magic wand 🪄 in the prompt editor to expand and enrich your ideas. Tailor the vibe with the ‘Feel’ selector and watch as your generations come to life with extra detail, coherence, and flair!
- Added support for HiDream in Inference - see [ComfyUI Examples](https://comfyanonymous.github.io/ComfyUI_examples/hidream/) for more details
- Added toggle for filtering Inference Extra Networks by base model
- Added Rescale CFG addon to Inference
- Added Swap Dimensions button between the width/height input in Inference
- Added Ctrl+Tab/Ctrl+Shift+Tab shortcuts for navigating between Inference tabs
- Added Align Your Steps scheduler to Inference
- Added wildcards to Inference prompts, e.g. `{blue|green|red}` will randomly select one of the colors
- Added Wan 2.1 Text to Video and Text to Image project types for Inference
- Added new autocomplete tag source to Inference - [Danbooru/e621 merged tags](https://civitai.com/models/950325?modelVersionId=1419692)
- Added Abstract Syntax Tree (AST) parsing for Inference prompts. This provides a more robust internal understanding of prompt structure, paving the way for future enhancements.
- Added hotkey (`Ctrl+Up`/`Ctrl+Down`) in Inference prompt editors to adjust the weight emphasis of the token under the caret or the currently selected text.
- This automatically wraps the token/selection in parentheses `()` if it's not already weighted.
- It modifies existing weights within parentheses or adds weights if none exist (e.g. `(word:1.1)`).
- Handles selection spanning multiple tokens intelligently.
- Added Plasma Noise addon to Inference for text to image workflows
#### Model Management & Discovery
- Added Accelerated Model Discovery (Beta) (⚡ icon in Civitai Browser) for Insider+ supporters. Utilizes an optimized connection for dramatically faster, more responsive browsing of online model repositories.
- Added OpenModelDB tab to the Model Browser
- Added Wan 2.1 files to the HuggingFace model browser
#### User Interface & Experience (UI/UX)
- Added Undo/Redo commands to text editor context menus
#### Internal / Developer Changes
- (Internal) Introduced unified strategy pattern (`IConfigSharingStrategy`) to for handling different config file formats (JSON, YAML, FDS).
- Added support for configuring nested paths in JSON and YAML files (e.g. `paths.models.vae`) via dot-notation in `SharedFolderLayoutRule.ConfigDocumentPaths`.
- Packages can now use the `SharedFolderLayout` property to define a `ConfigFileType` and `ConfigSharingOptions` (like `RootKey`), without needing to implement custom configuration logic.
### Changed
#### Inference Features
- Improved the quality of Inference inpainting by upgrading the workflow behind the scenes. The workflow remains the same for you — just better results!
- FaceDetailers in Inference will now inherit the primary sampler/scheduler/etc. by default. You can still manually set these by enabling the options via the ⚙️ button on the FaceDetailer card
- Slightly rearranged the FaceDetailer card layout due to the above change
- Inference "Extra Networks" selector now filters extra networks based on the selected base model
- Merged Inference GGUF workflows into the UNet model loader option (no longer need to choose GGUF separately)
#### Model Management & Discovery
- Changed the names of some of the shared model folders to better reflect their contents
- Improved Checkpoint Manager memory usage (thanks to @FireGeek for the profiling assistance!)
- Performance optimizations for Checkpoint Manager (progress indicators now fully uses Compiled Bindings)
#### Package Management & Compatibility
- Upgraded HIP SDK installs to 6.2.4 for ComfyUI-Zluda and AMDGPU-Forge
- Updated install for kohya_ss to support RTX 5000-series GPUs
#### User Interface & Experience (UI/UX)
- Improved window state handling
- Updated some date strings to take into account the user's locale
#### Localization
- Updated Japanese, Brazilian Portuguese, Chinese, and Russian translations
#### Internal / Developer Changes
- (Internal) Upgraded FluentAvalonia to 2.3.0
- (Internal) Refactored configuration-based shared folder logic: Centralized handling into `SharedFoldersConfigHelper` and format-specific strategies, removing custom file I/O logic from individual package classes for improved consistency and maintainability.
- Migrated packages ComfyUI (incl. Zluda), VladAutomatic (SD.Next), Sdfx, and StableSwarm to use the unified system for configuration and symlink based sharing.
### Fixed
#### Installation, Compatibility & Core Functionality
- Fixed RTX 5000-series GPU detection in certain cases
- Fixed Package Updates and Change Version not using stored PyTorch index and instead using the default recommended index.
- Fixed ComfyUI-Zluda not being recognized as an option for Inference or SwarmUI (for real this time)
- Fixed errors from invalid pip specifiers in requirements files
#### User Interface & Experience (UI/UX)
- Fixed Image Viewer animation loader keeping file handles open, which resolves 2 different issues (OSes are fun):
- (macOS) Fixed `FileNotFoundException` crash when navigating to Inference tab after deleting a Webp animation file previously opened in the Image Viewer Dialog.
- (Windows) Fixed Webp animation files unable to be deleted without closing the app first.
- Fixed Image Viewer `FileNotFoundException` on fetching image size, if navigating to a deleted image file.
- (macOS) Fixed Webp / Gif animations RGB colors flipped.
- Fixed window disappearing on macOS when the saved window size is very small
- Fixed large white boxes appearing when tooltips are visible on macOS/Linux
- Fixed package images sometimes showing as blank due to concurrent image caching. Requests to same image resources are now de-duplicated
- Reduced memory usage from `ShowDisabledTooltipExtension`
#### Inference & Workflows
- Fixed some cases of missing custom nodes in SwarmUI
- Fixed Inference ControlNet Preprocessors using incorrect resolution and increased maximum of smallest dimension to 16384
- Fixed Inference Extra Networks card not allowing for more than one model at a time
#### Model Management & Discovery
- Fixed missing base model options in the Metadata Editor
- Fixed some crashes when using Accelerated Model Discovery
### Supporters
#### Visionaries
Our heartfelt gratitude goes out to our amazing Visionary-tier Patrons: **Waterclouds**, **Corey T**, **bluepopsicle**, **Bob S**, **Akiro_Senkai**, and **Ibixat**! Your exceptional support is fundamental to the ongoing development and success of Stability Matrix. We are immensely grateful for your partnership and belief in the project! 🙏
#### Pioneers
We also want to give a huge thank you to our dedicated Pioneer-tier Patrons: **tankfox**, **Mr. Unknown**, **Szir777**, **Tigon**, **NowFallenAngel**, **Al Gorithm**, and welcome to our newest Pioneer, **Noah M.**! Your consistent support and enthusiasm keep the momentum going. Thank you all for being such an important part of our community! ✨
## v2.14.0-pre.2
### Added
- Added new package - [Stable Diffusion WebUI Forge - Classic](https://github.com/Haoming02/sd-webui-forge-classic)
- Added Accelerated Model Discovery (Beta) (⚡ icon in Civitai Browser) for Insider+ supporters. Utilizes an optimized connection for dramatically faster, more responsive browsing of online model repositories.
- Added Undo/Redo commands to text editor context menus
- Added Prompt Amplifier to Inference - click the magic wand 🪄 in the prompt editor to expand and enrich your ideas. Tailor the vibe with the ‘Feel’ selector and watch as your generations come to life with extra detail, coherence, and flair!
- (pre.2 re-release) Added support for HiDream in Inference - see [ComfyUI Examples](https://comfyanonymous.github.io/ComfyUI_examples/hidream/) for more details
- (pre.2 re-release) Added toggle for filtering Inference Extra Networks by base model
### Changed
- Updated install for kohya_ss to support RTX 5000-series GPUs
- (pre.2 re-release) Merged Inference GGUF workflows into the UNet model loader option (no longer need to choose GGUF separately)
- (pre.2 re-release) Updated some date strings to take into account the user's locale
- (pre.2 re-release) Fixed some crashes when using Accelerated Model Discovery
- (pre.2 re-release) Performance optimizations for Checkpoint Manager (progress indicators now fully uses Compiled Bindings)
### Fixed
- Fixed Inference ControlNet Preprocessors using incorrect resolution and increased maximum of smallest dimension to 16384
- Fixed Triton/Sage install option showing for incompatible GPUs
- Fixed errors from invalid pip specifiers in requirements files
- Fixed package images sometimes showing as blank due to concurrent image caching. Requests to same image resources are now de-duplicated
- (pre.2 re-release) Fixed Inference Extra Networks card not allowing for more than one model at a time
- (pre.2 re-release) Reduced memory usage from `ShowDisabledTooltipExtension`
### Supporters
#### Visionaries
- Big shout-out to our Visionary-tier patrons: Waterclouds, Corey T, bluepopsicle, and Bob S! Your steadfast support keeps Stability Matrix moving forward, and we couldn’t do it without you. 🚀 Thank you!
## v2.14.0-pre.1
### Added
- Added new Package Command (in the 3-dots menu) for installing Triton & SageAttention in ComfyUI
- Added Abstract Syntax Tree (AST) parsing for Inference prompts. This provides a more robust internal understanding of prompt structure, paving the way for future enhancements.
- Added hotkey (`Ctrl+Up`/`Ctrl+Down`) in Inference prompt editors to adjust the weight emphasis of the token under the caret or the currently selected text.
- This automatically wraps the token/selection in parentheses `()` if it's not already weighted.
- It modifies existing weights within parentheses or adds weights if none exist (e.g. `(word:1.1)`).
- Handles selection spanning multiple tokens intelligently.
- Added Plasma Noise addon to Inference for text to image workflows
- (Internal) Introduced unified strategy pattern (`IConfigSharingStrategy`) to for handling different config file formats (JSON, YAML, FDS).
- Added support for configuring nested paths in JSON and YAML files (e.g. `paths.models.vae`) via dot-notation in `SharedFolderLayoutRule.ConfigDocumentPaths`.
- Packages can now use the `SharedFolderLayout` property to define a `ConfigFileType` and `ConfigSharingOptions` (like `RootKey`), without needing to implement custom configuration logic.
### Changed
- Changed the names of some of the shared model folders to better reflect their contents
- Improved window state handling
- Improved Checkpoint Manager memory usage (thanks to @FireGeek for the profiling assistance!)
- Upgraded HIP SDK installs to 6.2.4 for ComfyUI-Zluda and AMDGPU-Forge
- (Internal) Upgraded FluentAvalonia to 2.3.0
- (Internal) Refactored configuration-based shared folder logic: Centralized handling into `SharedFoldersConfigHelper` and format-specific strategies, removing custom file I/O logic from individual package classes for improved consistency and maintainability.
- Migrated packages ComfyUI (incl. Zluda), VladAutomatic (SD.Next), Sdfx, and StableSwarm to use the unified system for configuration and symlink based sharing.
### Fixed
- Fixed RTX 5000-series GPU detection in certain cases
- Fixed Image Viewer animation loader keeping file handles open, which resolves 2 different issues (OSes are fun):
- (macOS) Fixed `FileNotFoundException` crash when navigating to Inference tab after deleting a Webp animation file previously opened in the Image Viewer Dialog.
- (Windows) Fixed Webp animation files unable to be deleted without closing the app first.
- Fixed Image Viewer `FileNotFoundException` on fetching image size, if navigating to a deleted image file.
- (macOS) Fixed Webp / Gif animations RGB colors flipped.
- Fixed Package Updates and Change Version not using stored PyTorch index and instead using the default recommended index.
- Fixed some cases of missing custom nodes in SwarmUI
- Fixed window disappearing on macOS when the saved window size is very small
- Fixed ComfyUI-Zluda not being recognized as an option for Inference or SwarmUI (for real this time)
- Fixed missing base model options in the Metadata Editor
- Fixed large white boxes appearing when tooltips are visible on macOS/Linux
### Supporters
#### Visionaries
- A special shout-out to our fantastic Visionary-tier Patreon supporters: Waterclouds, Corey T, and our newest Visionaries, bluepopsicle and Bob S! Your continued generosity powers the future of Stability Matrix—thank you so much!
## v2.14.0-dev.3
### Added
- Added Wan 2.1 Text to Video and Text to Image project types for Inference
- Added Wan 2.1 files to the HuggingFace model browser
- Added new package - [Stable Diffusion WebUI AMDGPU Forge](https://github.com/lshqqytiger/stable-diffusion-webui-amdgpu-forge)
- Added support for RTX 5000-series GPUs in ComfyUI, Forge, and reForge
- Added "Rebuild .NET Project" command to SwarmUI installs - available via the 3-dots menu -> Package Commands -> Rebuild .NET Project
- Added new autocomplete tag source to Inference - [Danbooru/e621 merged tags](https://civitai.com/models/950325?modelVersionId=1419692)
### Changed
- Upgraded ComfyUI CUDA torch to 12.6
- Upgraded Lykos account connection to use OAuth 2.0 device flow
- (Internal) Updated Avalonia to 11.2.5
### Fixed
- Fixed [#1128](https://github.com/LykosAI/StabilityMatrix/issues/1128) - overwriting models when downloading multiple with the same name
- Fixed ROCm torch indexes for ComfyUI & Forge
- Fixed model browser sometimes downloading to `ModelsLora` or `ModelsStableDiffusion` folders instead of the correct folder
- Fixed incorrect Unet folder path for ComfyUI users on Linux/macOS
- Fixed [#1157](https://github.com/LykosAI/StabilityMatrix/issues/1157) - crash when broken symlinks exist in model directories
- Fixed [#1154](https://github.com/LykosAI/StabilityMatrix/issues/1154) - increased width for package name on the package cards
- Fixed ComfyUI-Zluda not being recognized as an option for Inference or SwarmUI
- Fixed SwarmUI showing Python options in the 3-dots menu
- Fixed SD.Next install failures in certain cases when using Zluda
### Supporters
#### Visionaries
- Many thanks to our amazing Visionary-tier Patreon supporters, **Waterclouds**, **TheTekknician**, and **Corey T**! Your unwavering support is very much appreciated!
## v2.14.0-dev.2
### Added
- Added Align Your Steps scheduler to Inference
- Added wildcards to Inference prompts, e.g. `{blue|green|red}` will randomly select one of the colors
- Added Safetensor Metadata viewer to the Checkpoint Manager context menu - thanks to @genteure!
### Changed
- Updated the Civitai Model Browser base model selector to match the new Checkpoint Manager filter UI
- FaceDetailers in Inference will now inherit the primary sampler/scheduler/etc. by default. You can still manually set these by enabling the options via the ⚙️ button on the FaceDetailer card
- Slightly rearranged the FaceDetailer card layout due to the above change
- "Remove symbolic links on shutdown" option now also removes links from Output Sharing
- Inference "Extra Networks" selector now filters extra networks based on the selected base model
- Updated Japanese, Brazilian Portuguese, Chinese, and Russian translations
### Fixed
- Fixed crash when dragging & dropping images in Inference (hopefully)
- Fixed HiresFix Inference addon not inheriting sampler/scheduler properly
- Fixed some plus (+) buttons getting cut off in the Inference UI
- Fixed CFG Rescale addon interfering with refiner model in Inference
- Fixed [#1083](https://github.com/LykosAI/StabilityMatrix/issues/1083) - "Show Nested Models" incorrectly displaying models from some non-nested folders
- Fixed issue with InvokeAI model sharing when the host address is set to 0.0.0.0
- Fixed issue when parsing index URLs in Python Dependencies Override menu
- Fixed ComfyUI-Zluda not respecting pip user overrides
- Fixed issue with Checkpoint Manager not displaying any models
- (dev.2 re-release) Fixed autocomplete not showing in certain cases when using wildcards
- (dev.2 re-release) Fixed package restart button not working
- (dev.2 re-release) Fixed [#1120](https://github.com/LykosAI/StabilityMatrix/issues/1120) - crash when right clicking in the console after restarting a package
### Supporters
#### Visionaries
- A huge thank you to our incredible Visionary-tier Patreon supporters, **Waterclouds**, **TheTekknician**, and our newest Visionary, **Corey**! Your generous support is greatly appreciated!
## v2.14.0-dev.1
### Added
- Added Rescale CFG addon to Inference
- Added Swap Dimensions button between the width/height input in Inference
- Added Ctrl+Tab/Ctrl+Shift+Tab shortcuts for navigating between Inference tabs
- Added OpenModelDB tab to the Model Browser
### Changed
- Improved the quality of Inference inpainting by upgrading the workflow behind the scenes. The workflow remains the same for you — just better results!
- Redesigned the Checkpoint Manager Filter flyout to include more options and improve the layout
- "Clear All" button will now remain at the top of the Downloads list regardless of scroll position - thanks to @Genteure!
- Improved image metadata parsing - thanks to @Genteure!
### Fixed
- Fixed Inference image selector card buttons taking up the whole height of the card
- Fixed Inference mask editor failing to paint to the right-most edge on large images
- Fixed Inference mask editor not showing the entire image in certain circumstances
- Fixed an issue where certain sampler/scheduler combos would not get saved in image metadata - thanks to @yansigit!
- Fixed [#1078](https://github.com/LykosAI/StabilityMatrix/issues/1078) - "Call from invalid thread" error after one-click install finishes
- Fixed [#1080](https://github.com/LykosAI/StabilityMatrix/issues/1080) - Some models not displayed in Checkpoint Manager
### Supporters
#### Visionaries
- Many thanks to our incredible Visionary-tier Patreon supporters, **Waterclouds** and **TheTekknician**! Your support helps us continue to improve Stability Matrix!
## v2.13.4
### Added
- Added support for RTX 5000-series GPUs in ComfyUI, Forge, and reForge
- Added "Rebuild .NET Project" command to SwarmUI installs - available via the 3-dots menu -> Package Commands -> Rebuild .NET Project
### Changed
- Upgraded ComfyUI CUDA torch to 12.6
- Upgraded Lykos account connection to use OAuth 2.0 device flow
- (Internal) Updated Avalonia to 11.2.5
### Fixed
- Fixed [#1128](https://github.com/LykosAI/StabilityMatrix/issues/1128) - overwriting models when downloading multiple with the same name
- Fixed ROCm torch indexes for ComfyUI & Forge
- Fixed model browser sometimes downloading to `ModelsLora` or `ModelsStableDiffusion` folders instead of the correct folder
- Fixed incorrect Unet folder path for ComfyUI users on Linux/macOS
- Fixed [#1157](https://github.com/LykosAI/StabilityMatrix/issues/1157) - crash when broken symlinks exist in model directories
- Fixed [#1154](https://github.com/LykosAI/StabilityMatrix/issues/1154) - increased width for package name on the package cards
- Fixed ComfyUI-Zluda not being recognized as an option for Inference or SwarmUI
- Fixed SwarmUI showing Python options in the 3-dots menu
- Fixed SD.Next install failures in certain cases when using Zluda
### Supporters
#### Visionaries
- Huge thanks to our amazing Visionary-tier Patrons, **Waterclouds** and **Corey T**! We're truly grateful for your continued generosity and support!
#### Pioneers
- Special appreciation to our fantastic Pioneer-tier Patrons: **tankfox**, **Mr. Unknown**, **Szir777**, **Tigon**, **NowFallenAngel**, and our newest addition, **Al Gorithm**! Thank you all for your incredible commitment and ongoing encouragement!
## v2.13.3
### Changed
- "Remove symbolic links on shutdown" option now also removes links from Output Sharing
### Fixed
- Fixed [#1083](https://github.com/LykosAI/StabilityMatrix/issues/1083) - "Show Nested Models" incorrectly displaying models from some non-nested folders
- Fixed [#1120](https://github.com/LykosAI/StabilityMatrix/issues/1120) - crash when right clicking in the console after restarting a package
- Fixed issue with InvokeAI model sharing when the host address is set to 0.0.0.0
- Fixed issue when parsing index URLs in Python Dependencies Override menu
- Fixed issue where models were filtered incorrectly in the Checkpoint Manager
- Fixed ComfyUI-Zluda not using the user-defined pip overrides
### Supporters
#### Visionaries
- A heartfelt thank you to our incredible Visionary-tier Patrons, **Waterclouds**, **TheTekknician**, and **Corey**! Your unwavering support means the world to us!
#### Pioneers
- A big shoutout to our outstanding Pioneer-tier Patrons, **tankfox**, **Mr. Unknown**, **Szir777**, and **NowFallenAngel**! We deeply appreciate your ongoing support and dedication!
## v2.13.2
### Changed
- Removed SimpleSDXL due to security concerns - thanks to @iwr-redmond for the detailed report. For more information please visit https://github.com/LykosAI/StabilityMatrix/security/advisories.
### Supporters
#### Visionaries
- Many thanks to our amazing Visionary-tier Patrons, **Waterclouds** and **TheTekknician**! Your support is greatly appreciated!
#### Pioneers
- Shoutout to our Pioneer-tier Patrons, **tankfox**, **Mr. Unknown**, **Szir777**, **Tigon**, and **NowFallenAngel**! Thank you for your continued support!
## v2.13.1
### Changed
- Redesigned the Checkpoint Manager Filter flyout to include more options and improve the layout
- "Clear All" button will now remain at the top of the Downloads list regardless of scroll position - thanks to @Genteure!
- Improved image metadata parsing - thanks to @Genteure!
### Fixed
- Fixed [#1078](https://github.com/LykosAI/StabilityMatrix/issues/1078) - "Call from invalid thread" error after one-click install finishes
- Fixed [#1080](https://github.com/LykosAI/StabilityMatrix/issues/1080) - Some models not displayed in Checkpoint Manager
- Fixed Inference image selector card buttons taking up the whole height of the card
- Fixed Inference mask editor failing to paint to the right-most edge on large images
- Fixed Inference mask editor not showing the entire image in certain circumstances
- Fixed crash when dragging & dropping images in Inference (hopefully)
- Fixed an issue where certain sampler/scheduler combos would not get saved in image metadata - thanks to @yansigit!
### Supporters
#### Visionaries
- A heartfelt thank you to our exceptional Visionary-tier Patreon backers, **Waterclouds** and **TheTekknician**! We truly appreciate your steadfast support!
#### Pioneers
- We are also very grateful to our wonderful Pioneer-tier Patreon supporters, **tankfox**, **Mr Unknown**, **Szir777**, **Tigon**, and **NowFallenAngel**! Your support means a lot to us!
## v2.13.0
### Added
- Added new package - [ComfyUI-Zluda](https://github.com/patientx/ComfyUI-Zluda) - for AMD GPU users on Windows
- Added file sizes to the Checkpoint Manager tab
- Added the Discrete Model Sampling addon for Inference samplers, allows selecting different sampling methods, such as v_prediction, lcm, or x0, and optionally adjusts the model’s noise reduction strategy with the zero-shot noise ratio (ZSNR) toggle.
- Added Default GPU override in Settings -> System Settings -> Default GPU
- Added new "Copy" menu to the Inference gallery context menu, allowing you to copy generation parameters as well as the image
- Added "StableDiffusion" folder as an option when downloading Flux models in the CivitAI model browser
- Added support for SD3.5 in Inference
- Added CLIP_G to HuggingFace model browser
- Added search bar to the Installed Workflows tab
- Added "Search with Google" and "Search with ChatGPT" to the package console output & install progress console output context menus
- Added "Date Created" and "Date Last Modified" sorting options to the Checkpoints tab
- Added a new "Extension Packs" section to the extension manager, allowing you to create packs for easier installation of multiple extensions at once
- Added "Search by Creator" command to Civitai browser context menu
- Added Beta scheduler to the scheduler selector in Inference
- Added zipping of log files and "Show Log in Explorer" button on exceptions dialog for easier support
- Added max concurrent downloads option & download queueing for most downloads
- Added the ability to change the Models directory separately from the rest of the Data directory. This can be set in `Settings > Select new Models Folder`
- Added InvokeAI model sharing option
### Changed
- Improved Packages Page grid layout to dynamically stretch to fill available space
- Text Encoder / CLIP selection in Inference is now enabled via the cogwheel ⚙️ button next to the model selector
- Updated Civitai model descriptions to properly render the interactive elements
- Adjusted the Branch/Release toggle during package install flow to be a little more obvious
- Updated the Dock library used for Inference - fixes some weirdness with resizing / rearranging panels
- New file format and key derivation for protecting locally encrypted secrets (i.e. Civit / Lykos accounts) that is no longer dependent on the OS Version. This should prevent system updates from clearing account logins.
- (Internal) Updated to .NET 9 Runtime and Avalonia 11.2.2 for performance improvements, lower memory usage, and bug fixes
- Updated pytorch index to `rocm6.2` for AMD users of ComfyUI on Linux
### Fixed
- Fixed text alignment issues in the Downloads tab for certain long names / progress infos
- Improved startup performance and resource usage with optimizations to hardware lookups. Moved reflection usages in dependency injection to source generation.
- Fixed an issue with ComfyUI-Impact-Subpack not being installed when using FaceDetailer in Inference
- Fixed GGUF models not showing in Inference without the GGUF extension installed (this means it will now properly prompt you to install the extension as well)
### Supporters
#### Visionaries
- We're extremely grateful to our incredible Visionary-tier Patreon supporters, **Waterclouds** and **TheTekknician**! Thank you very much for your unwavering support!
#### Pioneers
- Many thanks to our amazing Pioneer-tier Patreon supporters, **tankfox**, **Mr Unknown**, **Szir777**, and our newest Pioneer, **NowFallenAngel**! Your generous support is very much appreciated!
## v2.13.0-pre.2
### Added
- Added new package - [ComfyUI-Zluda](https://github.com/patientx/ComfyUI-Zluda) - for AMD GPU users on Windows
- Added "StableDiffusion" folder as an option when downloading Flux models in the CivitAI model browser
### Changed
- Updated pytorch index to `rocm6.2` for AMD users of ComfyUI on Linux
### Supporters
#### Visionaries
- Big shoutout to our incredible Visionary-tier Patreon supporter, **Waterclouds**! We're also delighted to introduce our newest Visionary-tier Patreon supporter, **TheTekknician**! Thank you both for your generous support!
## v2.13.0-pre.1
### Added
- Added new package - [CogVideo](https://github.com/THUDM/CogVideo) - many thanks to @NullDev for the contribution!
- Added file sizes to the Checkpoint Manager tab
- Added more formatting options for Inference output filenames - thanks to @yansigit!
- Added the Discrete Model Sampling addon for Inference samplers, allows selecting different sampling methods, such as v_prediction, lcm, or x0, and optionally adjusts the model’s noise reduction strategy with the zero-shot noise ratio (ZSNR) toggle.
- Added Default GPU override in Settings -> System Settings -> Default GPU
- Added the ability to copy more generation parameters from the Inference gallery context menu
### Changed
- Improved Packages Page grid layout to dynamically stretch to fill available space
- New file format and key derivation for protecting locally encrypted secrets (i.e. Civit / Lykos accounts) that is no longer dependent on the OS Version. This should prevent system updates from clearing account logins.
- (Internal) Updated to .NET 9 Runtime and Avalonia 11.2.2 for performance improvements, lower memory usage, and bug fixes
### Fixed
- Improved startup performance and resource usage with optimizations to hardware lookups. Moved reflection usages in dependency injection to source generation.
- Fixed a typo in the Japanese translation - thanks to @mattyatea!
- Fixed missing package thumbnails due to moved or inaccessible urls
- Fixed an issue with ComfyUI-Impact-Subpack not being installed when using FaceDetailer in Inference
- Fixed GGUF models not showing in Inference without the GGUF extension installed (this means it will now properly prompt you to install the extension as well)
### Supporters
#### Visionaries
- Huge thank you to our incredible Visionary-tier Patreon supporter, **Waterclouds**! Your unwavering support is very much appreciated!
## v2.13.0-dev.3
### Added
- Added support for SD3.5 in Inference
- Added CLIP_G to HuggingFace model browser
- Added search bar to the Installed Workflows tab
- Added "Search with Google" and "Search with ChatGPT" to the package console output & install progress console output context menus
- Added "Date Created" and "Date Last Modified" sorting options to the Checkpoints tab
### Changed
- Text Encoder / CLIP selection in Inference is now enabled via the cogwheel ⚙️ button next to the model selector
- Added more base model types to the CivitAI Model Browser & Checkpoint Manager
- Model browser base model types are now loaded dynamically from CivitAI, reducing the need for updates to add new types
- Updated Civitai model descriptions to properly render the interactive elements
- Updated Russian translations thanks to @vanja-san
- Updated Simplified Chinese translations thanks to @QL-boy
- (Internal) Updated to Avalonia 11.2.0
### Fixed
- Fixed some instances of Civitai model browser not loading new results
- Fixed "Unsupported Torch Version: Cuda" errors when installing a1111
- Fixed crash when clicking "Remind me Later" on the update dialog
- Fixed some cases of crashing when GitHub API rate limits are exceeded
- Fixed Git missing from env vars when running SwarmUI
### Supporters
#### Visionaries
- Big shoutout to our amazing Visionary-tier Patreon supporter, **Waterclouds**! We are very grateful for your continued support!
## v2.13.0-dev.2
### Added
- Added new package - [SimpleSDXL](https://github.com/metercai/SimpleSDXL) - many thanks to @NullDev for the contribution!
- Added new package - [FluxGym](https://github.com/cocktailpeanut/fluxgym) - many thanks to @NullDev for the contribution!
- Added a new "Extension Packs" section to the extension manager, allowing you to create packs for easier installation of multiple extensions at once
- Added "Search by Creator" command to Civitai browser context menu
- Added Beta scheduler to the scheduler selector in Inference
- Added zipping of log files and "Show Log in Explorer" button on exceptions dialog for easier support
- Added max concurrent downloads option & download queueing for most downloads
### Changed
- (Internal) Updated to Avalonia 11.1.4
- Adjusted the Branch/Release toggle during package install flow to be a little more obvious
- Updated the Dock library used for Inference - fixes some weirdness with resizing / rearranging panels
### Fixed
- Fixed ComfyUI NF4 extension not installing properly when prompted in Inference
- Fixed [#932](https://github.com/LykosAI/StabilityMatrix/issues/932), [#935](https://github.com/LykosAI/StabilityMatrix/issues/935), [#939](https://github.com/LykosAI/StabilityMatrix/issues/939) - InvokeAI failing to update
- Fixed repeated nested folders being created in `Models/StableDiffusion` when using Forge in Symlink mode in certain conditions. Existing folders will be repaired to their original structure on launch.
- Fixed minimize button not working on macOS
- Fixed InvokeAI model sharing spamming the console with "This may take awhile" in certain conditions
- Fixed text alignment issues in the Downloads tab for certain long names / progress infos
### Supporters
#### Visionaries
- A big thank you to our amazing Visionary-tier Patreon supporter, **Waterclouds**! Your continued support is invaluable!
## v2.13.0-dev.1
### Added
- Added the ability to change the Models directory separately from the rest of the Data directory. This can be set in `Settings > Select new Models Folder`
- Added "Copy" menu to the Inference gallery context menu, allowing you to copy the image or the seed (other params coming soon™️)
- Added InvokeAI model sharing option
### Supporters
#### Visionaries
- A heartfelt thank you to our incredible Visionary-tier Patreon supporter, **Waterclouds**! Your ongoing support means a lot to us, and we’re grateful to have you with us on this journey!
## v2.12.4
### Added
- Added new package - [CogVideo](https://github.com/THUDM/CogVideo) - many thanks to @NullDev for the contribution!
- Added more formatting options for Inference output filenames - thanks to @yansigit!
### Changed
- Model browser base model types are now loaded dynamically from CivitAI, reducing the need for updates to add new types
### Fixed
- Fixed crash when clicking "Remind me Later" on the update dialog
- Fixed some cases of crashing when GitHub API rate limits are exceeded
- Fixed Git missing from env vars when running SwarmUI
- Fixed missing package thumbnails due to moved or inaccessible urls
- Fixed an issue with updating FluxGym in certain cases - thanks to @NullDev!
- Fixed a typo in the Japanese translation - thanks to @mattyatea!
### Supporters
#### Visionaries
- A huge thank you to our dedicated Visionary-tier Patreon supporter, **Waterclouds**! We’re thrilled to have your ongoing support!
#### Pioneers
- Shoutout to our great Pioneer-tier patrons: **tankfox**, **tanangular**, **Mr. Unknown**, **Szir777**, and our newest Pioneer, **Tigon**!. Your continued support is greatly appreciated!
## v2.12.3
### Added
- Added new package - [SimpleSDXL](https://github.com/metercai/SimpleSDXL) - many thanks to @NullDev for the contribution!
- Added new package - [FluxGym](https://github.com/cocktailpeanut/fluxgym) - many thanks to @NullDev for the contribution!
- Added more base model types to the CivitAI Model Browser & Checkpoint Manager
### Changed
- Updated Russian translations thanks to @vanja-san
- Updated Simplified Chinese translations thanks to @QL-boy
### Fixed
- Fixed some cases of FileTransferExists error when running re/Forge or Automatic1111
- Fixed update check not happening on startup for some users
- Fixed error when installing Automatic1111 on macOS
- Fixed some instances of Civitai model browser not loading new results
- Fixed "Unsupported Torch Version: Cuda" errors when installing a1111
### Supporters
#### Visionaries
- A huge shout-out to our dedicated Visionary-tier Patreon supporter, **Waterclouds**! Your unwavering support is greatly appreciated!
#### Pioneers
- We'd also like to express our gratitude to our amazing Pioneer-tier patrons: **tankfox**, **tanangular**, **Mr. Unknown**, and **Szir777**! Your ongoing support means a great deal!
## v2.12.2
### Added
- Added Beta scheduler to the scheduler selector in Inference
### Changed
- (Internal) Updated to Avalonia 11.1.4
### Fixed
- Fixed ComfyUI NF4 extension not installing properly when prompted in Inference
- Fixed [#932](https://github.com/LykosAI/StabilityMatrix/issues/932), [#935](https://github.com/LykosAI/StabilityMatrix/issues/935), [#939](https://github.com/LykosAI/StabilityMatrix/issues/939) - InvokeAI failing to update
- Fixed repeated nested folders being created in `Models/StableDiffusion` when using Forge in Symlink mode in certain conditions. Existing folders will be repaired to their original structure on launch.
- Fixed minimize button not working on macOS
### Supporters
#### Visionaries
- We extend our heartfelt appreciation to our dedicated Visionary-tier Patreon supporter, **Waterclouds**. Your ongoing support is invaluable!
#### Pioneers
- We’d also like to thank our great Pioneer-tier patrons: **tankfox**, **tanangular**, **Mr. Unknown**, and **Szir777**. Your continuous support means a lot!
## v2.12.1
### Fixed
- Fixed [#916](https://github.com/LykosAI/StabilityMatrix/issues/916) - InvokeAI failing to install/update on macOS
- Fixed [#914](https://github.com/LykosAI/StabilityMatrix/issues/914) - Unable to use escaped colon `:` character in Inference prompts
- Fixed [#908](https://github.com/LykosAI/StabilityMatrix/issues/908) - Forge unable to use models from "unet" shared folder
- Fixed [#902](https://github.com/LykosAI/StabilityMatrix/issues/902) - Images from shared outputs folder not displaying properly in Stable Diffusion WebUI-UX
- Fixed [#898](https://github.com/LykosAI/StabilityMatrix/issues/898) - Incorrect launch options for RuinedFooocus
- Fixed index url parsing in Python Packages window causing some packages to not have versions available
- Fixed a crash when switching between Model Sharing options for certain packages
### Supporters
#### Visionaries
- A sincere thank you to our valued Visionary-tier Patreon supporter, **Waterclouds**. Your continued support is truly appreciated, and we’re grateful to have you with us on this journey.
#### Pioneers
- We’d also like to extend our gratitude to our Pioneer-tier patrons: **tankfox**, **tanangular**, **Mr. Unknown**, and **Szir777**. Your ongoing support means a great deal to us!
## v2.12.0
### Added
#### New Packages
- [Fooocus - mashb1t's 1-Up Edition](https://github.com/mashb1t/Fooocus) by mashb1t
- [Stable Diffusion WebUI reForge](https://github.com/Panchovix/stable-diffusion-webui-reForge/) by Panchovix
#### Inference
- Added type-to-search for the Inference model selectors. Start typing while the dropdown is open to navigate the list.
- Added "Model Loader" option to Inference, for loading UNet/GGUF/NF4 models (e.g. Flux)
- Added support for the FP8 version of Flux in the default Model Loader via the "Use Flux Guidance" Sampler Addon
- Added trigger words to the Inference Extra Networks (Lora/Lyco) selector for quick copy & paste
- Image viewer context menus now have 2 options: `Copy (Ctrl+C)` which now always copies the image as a file, and `Copy as Bitmap (Shift+Ctrl+C)` (Available on Windows) which copies to the clipboard as native bitmap. This changes the previous single `Copy` button behavior that would first attempt a native bitmap copy on Windows when available, and fall back to a file copy if not.
- Added Face Detailer module to Inference
#### Package Manager
- Added Python dependencies override table to package installation options, where the default pip packages may be overriden for a package's install and updates. This can be changed later or added to existing packages through `Package Menu > Python Dependencies Override`
- Added "Change Version" option to the package card overflow menu, allowing you to downgrade or upgrade a package to a specific version or commit ([#701](https://github.com/LykosAI/StabilityMatrix/issues/701), [#857](https://github.com/LykosAI/StabilityMatrix/issues/857))
- Added "Disable Update Check" option to the package card overflow menu, allowing you to disable update checks for a specific package
- Added Custom commit option in the Advanced Options for package installs ([#670](https://github.com/LykosAI/StabilityMatrix/issues/670), [#839](https://github.com/LykosAI/StabilityMatrix/issues/839), [#842](https://github.com/LykosAI/StabilityMatrix/issues/842))
- Added macOS support for Fooocus & related forks
- Added Intel OneAPI XPU backend (IPEX) option for SD.Next
#### Checkpoint Manager
- Added new Metadata Editor (accessible via the right-click menu), allowing you to create or edit metadata for models
- Added "New Directory" and "Delete" options to the context menu of the tree view.
- Added new toggle for drag & drop - when enabled, all selected models will now move together with the dragged model
- Added "File Size" sorting option
- Added "Hide Empty Categories" toggle
- Added "Select All" button to the InfoBar (shown when at least one model is selected)
- Added "Show NSFW Images" toggle
#### Model Browser
- Added "Hide Installed Models" toggle to the CivitAI Model Browser
- Added toggle to hide "Early Access" models in the CivitAI Model Browser
- Added ultralytics models to HuggingFace model browser
#### Other
- Added "Sign in with Google" option for connecting your Lykos Account on the Account Settings page
- Added zoom sliders for Outputs, Checkpoints, and Model Browser pages
- Added Settings option "Console: History Size" to adjust the number of lines stored in the console history when running packages. Defaults to 9001 lines.
- Added optional anonymous usage reporting for gauging popularity of package installs and features. You will be asked whether you want to enable this feature on launch, and can change your choice at any time in `Settings > System > Analytics`
- Added "Run Command" option in Settings for running a command with the embedded Python or Git executables
- Added "Enable Long Paths" option for Git to the Settings page
- Added "System Settings > Enable Long Paths" option to enable NTFS long paths on Windows
- Added Korean translations thanks to maakcode!
- (Windows, Linux) Added Vulkan rendering support using launch argument `--vulkan`. (On Windows, the default WinUI composition renderer is likely still preferrable. Linux users are encouraged to try the new renderer to see if it improves performance and responsiveness.)
### Changed
- Optimized image loading across the app, with loading speed now up to 4x faster for local images, and up to 17x faster for remote images
- Image loading in the Outputs page now uses native memory management for ~2x less peak memory usage, and will release memory more quickly when switching away from the Outputs page or scrolling images out of view
- Improved animation fluidity of image rendering while scrolling quickly across large collections (e.g. Outputs, Model Browser)
- ComfyUI will no longer be pinned to torch 2.1.2 for nvidia users on Windows ([#861](https://github.com/LykosAI/StabilityMatrix/issues/861))
- Model browser download progress no longer covers the entire card for the entire duration of the download
- Updated torch index to `rocm6.1` for AMD users of ComfyUI
- Show better error message for early access model downloads
- Updated torch version for a1111 on mac
- Checkpoints tab now shows "image hidden" for images that are hidden by the NSFW filter
- OAuth-type connection errors in Account Settings now show a more detailed error message
- The "Download Failed" message for model downloads is now persistent until dismissed
- Separated the Generate button from the prompt control in Inference so it can be moved like other controls
- Updated translations for Turkish and Russian
- (Internal) Updated Avalonia to 11.1.3 - Includes major rendering and performance optimizations, animation refinements, improved IME / text selection, and improvements for window sizing / z-order / multi-monitor DPI scaling. ([avaloniaui.net/blog/avalonia-11-1-a-quantum-leap-in-cross-platform-ui-development](https://avaloniaui.net/blog/avalonia-11-1-a-quantum-leap-in-cross-platform-ui-development))
- (Internal) Updated SkiaSharp (Rendering Backend) to 3.0.0-preview.4.1, potentially fixes issues with window rendering artifacts on some machines.
- (Internal) Updated other dependencies for security and bug fixes.
### Fixed
- Fixed [#888](https://github.com/LykosAI/StabilityMatrix/issues/888) - error updating kohya_ss due to long paths
- Fixed some ScrollViewers changing scroll position when focus changes
- Fixed CivitAI Model Browser sometimes incorrectly showing "No models found" before toggling "Show NSFW" or "Hide Installed" filters
- Fixed SwarmUI settings being overwritten on launch
- Fixed issue where some Inference-generated images would be saved with the bottom missing
- Fixed [#851](https://github.com/LykosAI/StabilityMatrix/issues/851) - missing fbgemm.dll errors when using latest torch with certain packages
- Fixed issue where ApproxVAE models would show up in the VAE folder
- Fixed [#878](https://github.com/LykosAI/StabilityMatrix/issues/878) - Checkpoints tab will no longer try to browse directories it can't access
- Fixed crash when opening Settings page when refreshing CivitAI account status results in an error
- Fixed [#814](https://github.com/LykosAI/StabilityMatrix/issues/814), [#875](https://github.com/LykosAI/StabilityMatrix/issues/875) - Error when installing RuinedFooocus
- LORAs are now sorted by model name properly in the Extra Networks dropdown
- (macOS) Fixed OAuth connection prompts in Account Settings not automatically updating status after connection. Custom URL schemes are now also supported on macOS builds.
### Supporters
#### Visionaries
- A heartfelt thank you to our Visionary-tier patron, **Waterclouds**! We greatly appreciate your continued support!
#### Pioneers
- A special shoutout to our Pioneer-tier patrons: **tankfox**, **tanangular**, **Mr. Unknown**, and **Szir777**! Your unwavering support means a great deal!
## v2.12.0-pre.3
### Added
- Added Python dependencies override table to package installation options, where the default pip packages may be overriden for a package's install and updates. This can be changed later or added to existing packages through `Package Menu > Python Dependencies Override`
- Added optional anonymous usage reporting for gauging popularity of package installs and features. You will be asked whether you want to enable this feature on launch, and can change your choice at any time in `Settings > System > Analytics`
- Added Korean translations thanks to maakcode!
### Changed
- Show better error message for early access model downloads
- Updated torch version for a1111 on mac
- Checkpoints tab now shows "image hidden" for images that are hidden by the NSFW filter
- Updated translations for Turkish and Russian
### Fixed
- Fixed issue where some Inference-generated images would be saved with the bottom missing
- Fixed CivitAI Browser page scroll refresh not ordering models correctly
- Fixed missing fbgemm.dll errors when using latest torch with certain packages
- Fixed issue where ApproxVAE models would show up in the VAE folder
- Fixed [#878](https://github.com/LykosAI/StabilityMatrix/issues/878) - Checkpoints tab will no longer try to browse directories it can't access
- Fixed crash when opening Settings page when refreshing CivitAI account status results in an error
### Supporters
#### Visionaries
- A huge thank you to our Visionary-tier Patreon supporter, **Waterclouds**! We appreciate your continued support, and are grateful to have you on this journey with us!
## v2.12.0-pre.2
### Added
- Added "Show NSFW Images" toggle to the Checkpoints page
- Added "Model Loader" option to Inference, for loading UNet/GGUF/NF4 models (e.g. Flux)
- Added type-to-search for the Inference model selectors. Start typing while the dropdown is open to navigate the list.
- Added "Sign in with Google" option for connecting your Lykos Account on the Account Settings page
### Changed
- Updated Brazilian Portuguese translations thanks to thiagojramos
- Merged the "Flux Text to Image" workflow back into the main Text to Image workflow
### Fixed
- Fixed CivitAI Model Browser sometimes incorrectly showing "No models found" before toggling "Show NSFW" or "Hide Installed" filters
- Fixed Automatic1111 & related packages not including the gradio-allowed-path argument for the shared output folder
- Fixed SwarmUI settings being overwritten on launch
- Fixed Forge output folder links pointing to the incorrect folder
- LORAs are now sorted by model name properly in the Extra Networks dropdown
- Fixed errors when downloading models with invalid characters in the file name
## v2.12.0-pre.1
### Added
- Added "Hide Installed Models" toggle to the CivitAI Model Browser
### Changed
- ComfyUI will no longer be pinned to torch 2.1.2 for nvidia users on Windows
- Model browser download progress no longer covers the entire card for the entire d
gitextract_tguifjg2/ ├── .aiexclude ├── .backportrc.json ├── .config/ │ ├── .csharpierrc.json │ └── dotnet-tools.json ├── .csharpierrc.yaml ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── 1-bug.yml │ │ ├── 2-bug-crash.yml │ │ ├── 3-bug-package.yml │ │ ├── 4-feature-request.yml │ │ └── config.yml │ ├── dependabot.yml │ └── workflows/ │ ├── backport.yml │ ├── build.yml │ ├── cla.yml │ ├── release.yml │ ├── stale.yml │ ├── test-ui.yml │ └── version-bump.yml ├── .gitignore ├── .husky/ │ └── task-runner.json ├── Avalonia.Gif/ │ ├── Avalonia.Gif.csproj │ ├── BgWorkerCommand.cs │ ├── BgWorkerState.cs │ ├── Decoding/ │ │ ├── BlockTypes.cs │ │ ├── ExtensionType.cs │ │ ├── FrameDisposal.cs │ │ ├── GifColor.cs │ │ ├── GifDecoder.cs │ │ ├── GifFrame.cs │ │ ├── GifHeader.cs │ │ ├── GifRect.cs │ │ ├── GifRepeatBehavior.cs │ │ ├── InvalidGifStreamException.cs │ │ └── LzwDecompressionException.cs │ ├── Extensions/ │ │ └── StreamExtensions.cs │ ├── GifImage.cs │ ├── GifInstance.cs │ ├── IGifInstance.cs │ ├── InvalidGifStreamException.cs │ └── WebpInstance.cs ├── Build/ │ ├── AppEntitlements.entitlements │ ├── EmbeddedEntitlements.entitlements │ ├── _utils.sh │ ├── build_macos_app.sh │ ├── codesign_embedded_macos.sh │ ├── codesign_macos.sh │ └── notarize_macos.sh ├── CHANGELOG.md ├── CONTRIBUTING.md ├── ConditionalSymbols.props ├── Directory.Build.props ├── Directory.Packages.props ├── Jenkinsfile ├── LICENSE ├── NuGet.Config ├── README.md ├── Runtimes.Default.props ├── StabilityMatrix/ │ ├── App.xaml │ ├── App.xaml.cs │ ├── AppxManifest.xml │ ├── AssemblyInfo.cs │ ├── Assets/ │ │ ├── 7za - LICENSE.txt │ │ ├── Python310/ │ │ │ ├── LICENSE.txt │ │ │ ├── _asyncio.pyd │ │ │ ├── _bz2.pyd │ │ │ ├── _ctypes.pyd │ │ │ ├── _decimal.pyd │ │ │ ├── _elementtree.pyd │ │ │ ├── _hashlib.pyd │ │ │ ├── _lzma.pyd │ │ │ ├── _msi.pyd │ │ │ ├── _multiprocessing.pyd │ │ │ ├── _overlapped.pyd │ │ │ ├── _queue.pyd │ │ │ ├── _socket.pyd │ │ │ ├── _sqlite3.pyd │ │ │ ├── _ssl.pyd │ │ │ ├── _uuid.pyd │ │ │ ├── _zoneinfo.pyd │ │ │ ├── pyexpat.pyd │ │ │ ├── python.cat │ │ │ ├── python310._pth │ │ │ ├── select.pyd │ │ │ ├── unicodedata.pyd │ │ │ └── winsound.pyd │ │ ├── automatic_vladmandic.sm-package.yml │ │ ├── licenses.json │ │ ├── sm-package.schema.json │ │ └── venv/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ └── scripts/ │ │ ├── common/ │ │ │ ├── Activate.ps1 │ │ │ └── activate │ │ ├── nt/ │ │ │ ├── activate.bat │ │ │ └── deactivate.bat │ │ └── posix/ │ │ ├── activate.csh │ │ └── activate.fish │ ├── CheckpointBrowserPage.xaml │ ├── CheckpointBrowserPage.xaml.cs │ ├── CheckpointManagerPage.xaml │ ├── CheckpointManagerPage.xaml.cs │ ├── Controls/ │ │ ├── AppBrushes.cs │ │ ├── ProgressBarSmoother.cs │ │ ├── RefreshBadge.xaml │ │ └── RefreshBadge.xaml.cs │ ├── Converters/ │ │ ├── BoolNegationConverter.cs │ │ ├── BooleanToHiddenVisibleConverter.cs │ │ ├── IntDoubleConverter.cs │ │ ├── IsStringNullOrWhitespaceConverter.cs │ │ ├── LaunchOptionConverter.cs │ │ ├── LaunchOptionIntDoubleConverter.cs │ │ ├── NullToVisibilityConverter.cs │ │ ├── StringNullOrEmptyToVisibilityConverter.cs │ │ ├── UriToBitmapConverter.cs │ │ └── ValueConverterGroup.cs │ ├── DataDirectoryMigrationDialog.xaml │ ├── DataDirectoryMigrationDialog.xaml.cs │ ├── DesignData/ │ │ ├── MockCheckpointBrowserViewModel.cs │ │ ├── MockCheckpointFolder.cs │ │ ├── MockCheckpointManagerViewModel.cs │ │ ├── MockFirstLaunchSetupViewModel.cs │ │ ├── MockLaunchViewModel.cs │ │ └── MockModelVersionDialogViewModel.cs │ ├── ExceptionWindow.xaml │ ├── ExceptionWindow.xaml.cs │ ├── FirstLaunchSetupWindow.xaml │ ├── FirstLaunchSetupWindow.xaml.cs │ ├── Helper/ │ │ ├── AsyncDispatchTimer.cs │ │ ├── DialogFactory.cs │ │ ├── IDialogFactory.cs │ │ ├── ISnackbarService.cs │ │ ├── ScreenExtensions.cs │ │ └── SnackbarService.cs │ ├── InstallerWindow.xaml │ ├── InstallerWindow.xaml.cs │ ├── Interactions/ │ │ └── EventTriggerWithoutPropogation.cs │ ├── LaunchOptionsDialog.xaml │ ├── LaunchOptionsDialog.xaml.cs │ ├── LaunchPage.xaml │ ├── LaunchPage.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Models/ │ │ ├── CheckpointFile.cs │ │ └── CheckpointFolder.cs │ ├── OneClickInstallDialog.xaml │ ├── OneClickInstallDialog.xaml.cs │ ├── Package.appxmanifest │ ├── PackageManagerPage.xaml │ ├── PackageManagerPage.xaml.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── SelectInstallLocationsDialog.xaml │ ├── SelectInstallLocationsDialog.xaml.cs │ ├── SelectModelVersionDialog.xaml │ ├── SelectModelVersionDialog.xaml.cs │ ├── Services/ │ │ ├── INotificationBarService.cs │ │ ├── InstallerWindowDialogService.cs │ │ ├── NotificationBarService.cs │ │ ├── PageContentDialogService.cs │ │ └── PageService.cs │ ├── SettingsPage.xaml │ ├── SettingsPage.xaml.cs │ ├── StabilityMatrix.csproj │ ├── Styles/ │ │ └── Styles.xaml │ ├── TextToImagePage.xaml │ ├── TextToImagePage.xaml.cs │ ├── UpdateWindow.xaml │ ├── UpdateWindow.xaml.cs │ ├── ViewModels/ │ │ ├── CheckpointBrowserCardViewModel.cs │ │ ├── CheckpointBrowserViewModel.cs │ │ ├── CheckpointManagerViewModel.cs │ │ ├── DataDirectoryMigrationViewModel.cs │ │ ├── ExceptionWindowViewModel.cs │ │ ├── FirstLaunchSetupViewModel.cs │ │ ├── InstallerViewModel.cs │ │ ├── LaunchOptionsDialogViewModel.cs │ │ ├── LaunchViewModel.cs │ │ ├── MainWindowViewModel.cs │ │ ├── OneClickInstallViewModel.cs │ │ ├── PackageManagerViewModel.cs │ │ ├── ProgressViewModel.cs │ │ ├── RefreshBadgeViewModel.cs │ │ ├── SelectInstallLocationsViewModel.cs │ │ ├── SelectModelVersionDialogViewModel.cs │ │ ├── SettingsViewModel.cs │ │ ├── SnackbarViewModel.cs │ │ ├── TextToImageViewModel.cs │ │ ├── UpdateWindowViewModel.cs │ │ └── WebLoginViewModel.cs │ ├── WebLoginDialog.xaml │ ├── WebLoginDialog.xaml.cs │ ├── app.manifest │ ├── appsettings.Development.json │ └── appsettings.json ├── StabilityMatrix.Analyzers.CodeFixes/ │ └── StabilityMatrix.Analyzers.CodeFixes.csproj ├── StabilityMatrix.Avalonia/ │ ├── Animations/ │ │ ├── BaseTransitionInfo.cs │ │ ├── BetterDrillInNavigationTransition.cs │ │ ├── BetterEntranceNavigationTransition.cs │ │ ├── BetterSlideNavigationTransition.cs │ │ └── ItemsRepeaterArrangeAnimation.cs │ ├── App.axaml │ ├── App.axaml.cs │ ├── Assets/ │ │ ├── AppIcon.icns │ │ ├── Fonts/ │ │ │ └── NotoSansJP/ │ │ │ └── OFL.txt │ │ ├── ImagePrompt.tmLanguage.json │ │ ├── ThemeMatrixDark.json │ │ ├── hf-packages.json │ │ ├── licenses.json │ │ ├── linux-x64/ │ │ │ ├── 7zzs │ │ │ └── 7zzs - LICENSE.txt │ │ ├── macos-arm64/ │ │ │ ├── 7zz │ │ │ └── 7zz - LICENSE.txt │ │ ├── markdown.css │ │ ├── sdprompt.xshd │ │ ├── sitecustomize.py │ │ └── win-x64/ │ │ ├── 7za - LICENSE.txt │ │ └── venv/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ └── scripts/ │ │ ├── common/ │ │ │ ├── Activate.ps1 │ │ │ └── activate │ │ ├── nt/ │ │ │ ├── activate.bat │ │ │ └── deactivate.bat │ │ └── posix/ │ │ ├── activate.csh │ │ └── activate.fish │ ├── Assets.cs │ ├── Behaviors/ │ │ ├── ConditionalToolTipBehavior.cs │ │ ├── ResizeBehavior.cs │ │ ├── TextEditorCompletionBehavior.cs │ │ ├── TextEditorToolTipBehavior.cs │ │ └── TextEditorWeightAdjustmentBehavior.cs │ ├── Collections/ │ │ └── SearchCollection.cs │ ├── Controls/ │ │ ├── AdvancedImageBox.axaml │ │ ├── AdvancedImageBox.axaml.cs │ │ ├── AdvancedImageBoxView.axaml │ │ ├── AdvancedImageBoxView.axaml.cs │ │ ├── AppWindowBase.cs │ │ ├── ApplicationSplashScreen.cs │ │ ├── AutoGrid.cs │ │ ├── BetterAdvancedImage.cs │ │ ├── BetterComboBox.cs │ │ ├── BetterContentDialog.cs │ │ ├── BetterContextDragBehavior.cs │ │ ├── BetterDownloadableComboBox.cs │ │ ├── BetterFlyout.cs │ │ ├── BetterImage.cs │ │ ├── BetterMarkdownScrollViewer.cs │ │ ├── Card.cs │ │ ├── CheckerboardBorder.cs │ │ ├── CodeCompletion/ │ │ │ ├── CompletionData.cs │ │ │ ├── CompletionIcons.cs │ │ │ ├── CompletionList.cs │ │ │ ├── CompletionListBox.cs │ │ │ ├── CompletionListThemes.axaml │ │ │ ├── CompletionWindow.axaml │ │ │ ├── CompletionWindow.axaml.cs │ │ │ ├── CompletionWindowBase.cs │ │ │ ├── ICompletionData.cs │ │ │ ├── InsertionRequestEventArgs.cs │ │ │ └── PopupWithCustomPosition.cs │ │ ├── ComfyUpscalerTemplateSelector.cs │ │ ├── DataTemplateSelector.cs │ │ ├── Dock/ │ │ │ └── DockUserControlBase.cs │ │ ├── DropTargetTemplatedControlBase.cs │ │ ├── DropTargetUserControlBase.cs │ │ ├── EditorCommands.cs │ │ ├── EditorFlyouts.axaml │ │ ├── FADownloadableComboBox.cs │ │ ├── FASymbolIconSource.cs │ │ ├── FrameCarousel.axaml │ │ ├── FrameCarousel.axaml.cs │ │ ├── GitVersionSelector.axaml │ │ ├── GitVersionSelector.axaml.cs │ │ ├── HybridModelTemplateSelector.cs │ │ ├── HyperlinkIconButton.cs │ │ ├── ImageLoaders.cs │ │ ├── Inference/ │ │ │ ├── BatchSizeCard.axaml │ │ │ ├── BatchSizeCard.axaml.cs │ │ │ ├── CfzCudnnToggleCard.axaml │ │ │ ├── CfzCudnnToggleCard.axaml.cs │ │ │ ├── ControlNetCard.axaml │ │ │ ├── ControlNetCard.axaml.cs │ │ │ ├── DiscreteModelSamplingCard.axaml │ │ │ ├── DiscreteModelSamplingCard.axaml.cs │ │ │ ├── ExtraNetworkCard.axaml │ │ │ ├── ExtraNetworkCard.axaml.cs │ │ │ ├── FaceDetailerCard.axaml │ │ │ ├── FaceDetailerCard.axaml.cs │ │ │ ├── FreeUCard.axaml │ │ │ ├── FreeUCard.axaml.cs │ │ │ ├── ImageFolderCard.axaml │ │ │ ├── ImageFolderCard.axaml.cs │ │ │ ├── ImageGalleryCard.axaml │ │ │ ├── ImageGalleryCard.axaml.cs │ │ │ ├── LayerDiffuseCard.axaml │ │ │ ├── LayerDiffuseCard.axaml.cs │ │ │ ├── ModelCard.axaml │ │ │ ├── ModelCard.axaml.cs │ │ │ ├── NrsCard.axaml │ │ │ ├── NrsCard.axaml.cs │ │ │ ├── PlasmaNoiseCard.axaml │ │ │ ├── PlasmaNoiseCard.axaml.cs │ │ │ ├── PromptCard.axaml │ │ │ ├── PromptCard.axaml.cs │ │ │ ├── PromptExpansionCard.axaml │ │ │ ├── PromptExpansionCard.axaml.cs │ │ │ ├── RescaleCfgCard.axaml │ │ │ ├── RescaleCfgCard.axaml.cs │ │ │ ├── SamplerCard.axaml │ │ │ ├── SamplerCard.axaml.cs │ │ │ ├── SeedCard.axaml │ │ │ ├── SeedCard.axaml.cs │ │ │ ├── SelectImageCard.axaml │ │ │ ├── SelectImageCard.axaml.cs │ │ │ ├── SharpenCard.axaml │ │ │ ├── SharpenCard.axaml.cs │ │ │ ├── StackCard.axaml │ │ │ ├── StackCard.axaml.cs │ │ │ ├── StackEditableCard.axaml │ │ │ ├── StackEditableCard.axaml.cs │ │ │ ├── StackExpander.axaml │ │ │ ├── StackExpander.axaml.cs │ │ │ ├── TiledVAECard.axaml │ │ │ ├── TiledVAECard.axaml.cs │ │ │ ├── UnetModelCard.axaml │ │ │ ├── UnetModelCard.axaml.cs │ │ │ ├── UpscalerCard.axaml │ │ │ ├── UpscalerCard.axaml.cs │ │ │ ├── WanModelCard.axaml │ │ │ └── WanModelCard.axaml.cs │ │ ├── LaunchOptionCardTemplateSelector.cs │ │ ├── LineDashFrame.cs │ │ ├── MarkdownViewer.axaml │ │ ├── MarkdownViewer.axaml.cs │ │ ├── Models/ │ │ │ ├── GitVersionSelectorVersionType.cs │ │ │ ├── PenPath.cs │ │ │ ├── PenPoint.cs │ │ │ └── SKLayer.cs │ │ ├── Paginator.axaml │ │ ├── Paginator.axaml.cs │ │ ├── Painting/ │ │ │ ├── PaintCanvas.axaml │ │ │ └── PaintCanvas.axaml.cs │ │ ├── ProgressRing.cs │ │ ├── PropertyGrid/ │ │ │ ├── BetterPropertyGrid.cs │ │ │ ├── PropertyGridCultureData.cs │ │ │ ├── PropertyGridLocalizationService.cs │ │ │ └── ToggleSwitchCellEditFactory.cs │ │ ├── RefreshBadge.axaml │ │ ├── RefreshBadge.axaml.cs │ │ ├── Scroll/ │ │ │ ├── BetterScrollContentPresenter.cs │ │ │ ├── BetterScrollViewer.axaml │ │ │ └── BetterScrollViewer.cs │ │ ├── SelectableImageCard/ │ │ │ ├── SelectableImageButton.axaml │ │ │ └── SelectableImageButton.cs │ │ ├── SettingsAccountLinkExpander.axaml │ │ ├── SettingsAccountLinkExpander.axaml.cs │ │ ├── SkiaCustomCanvas.axaml │ │ ├── SkiaCustomCanvas.axaml.cs │ │ ├── StarsRating.axaml │ │ ├── StarsRating.axaml.cs │ │ ├── TemplatedControlBase.cs │ │ ├── TextMarkers/ │ │ │ ├── TextMarker.cs │ │ │ ├── TextMarkerService.cs │ │ │ ├── TextMarkerValidationEventArgs.cs │ │ │ └── TextMarkerValidatorService.cs │ │ ├── TreeFileExplorer.axaml │ │ ├── TreeFileExplorer.axaml.cs │ │ ├── UserControlBase.cs │ │ ├── VendorLabs/ │ │ │ ├── AsyncImage/ │ │ │ │ ├── AsyncImageFailedEventArgs.cs │ │ │ │ ├── BetterAsyncImage.Events.cs │ │ │ │ ├── BetterAsyncImage.Properties.cs │ │ │ │ ├── BetterAsyncImage.cs │ │ │ │ └── BetterAsyncImageCacheProvider.cs │ │ │ ├── Cache/ │ │ │ │ ├── CacheBase.cs │ │ │ │ ├── CacheOptions.cs │ │ │ │ ├── FileCache.cs │ │ │ │ ├── IImageCache.cs │ │ │ │ ├── ImageCache.cs │ │ │ │ ├── InMemoryStorage.cs │ │ │ │ ├── InMemoryStorageItem.cs │ │ │ │ └── MemoryImageCache.cs │ │ │ ├── LICENSE │ │ │ └── Themes/ │ │ │ └── BetterAsyncImage.axaml │ │ ├── VideoGenerationSettingsCard.axaml │ │ ├── VideoGenerationSettingsCard.axaml.cs │ │ ├── VideoOutputSettingsCard.axaml │ │ └── VideoOutputSettingsCard.axaml.cs │ ├── Converters/ │ │ ├── BooleanChoiceMultiConverter.cs │ │ ├── CivitImageWidthConverter.cs │ │ ├── ComfyUpscalerConverter.cs │ │ ├── CultureInfoDisplayConverter.cs │ │ ├── CustomStringFormatConverter.cs │ │ ├── EnumAttributeConverter.cs │ │ ├── EnumAttributeConverters.cs │ │ ├── EnumStringConverter.cs │ │ ├── EnumToBooleanConverter.cs │ │ ├── EnumToIntConverter.cs │ │ ├── EnumToValuesConverter.cs │ │ ├── FileSizeConverters.cs │ │ ├── FileUriConverter.cs │ │ ├── FitSquarelyWithinAspectRatioConverter.cs │ │ ├── FuncCommandConverter.cs │ │ ├── IndexPlusOneConverter.cs │ │ ├── KiloFormatter.cs │ │ ├── KiloFormatterStringConverter.cs │ │ ├── LaunchOptionConverter.cs │ │ ├── LaunchOptionIntDoubleConverter.cs │ │ ├── MemoryBytesFormatter.cs │ │ ├── MultiplyConverter.cs │ │ ├── NullableDefaultNumericConverter.cs │ │ ├── NullableDefaultNumericConverters.cs │ │ ├── NumberFormatModeSampleConverter.cs │ │ ├── StringFormatConverters.cs │ │ ├── UriStringConverter.cs │ │ └── ValueConverterGroup.cs │ ├── DesignData/ │ │ ├── DesignData.cs │ │ ├── MockCompletionProvider.cs │ │ ├── MockDownloadProgressItemViewModel.cs │ │ ├── MockGitVersionProvider.cs │ │ ├── MockImageIndexService.cs │ │ ├── MockInferenceClientManager.cs │ │ ├── MockLaunchPageViewModel.cs │ │ ├── MockMetadataImportService.cs │ │ ├── MockModelIndexService.cs │ │ ├── MockPropertyGridObject.cs │ │ └── MockSettingsManager.cs │ ├── DialogHelper.cs │ ├── Extensions/ │ │ ├── AvaloniaEditExtensions.cs │ │ ├── BitmapExtensions.cs │ │ ├── ClipboardExtensions.cs │ │ ├── ComfyNodeBuilderExtensions.cs │ │ ├── DataObjectExtensions.cs │ │ ├── EnumExtensions.cs │ │ ├── InferenceProjectTypeExtensions.cs │ │ ├── NotificationLevelExtensions.cs │ │ ├── NotificationServiceExtensions.cs │ │ ├── RelayCommandExtensions.cs │ │ ├── ServiceManagerExtensions.cs │ │ ├── SkiaExtensions.cs │ │ ├── TextMateExtensions.cs │ │ └── VisualExtensions.cs │ ├── ExternalAnnotations/ │ │ ├── Microsoft.Extensions.Logging.Abstractions.xml │ │ └── System.Runtime.xml │ ├── FallbackRamCachedWebImageLoader.cs │ ├── Helpers/ │ │ ├── AttributeServiceInjector.Reflection.cs │ │ ├── AttributeServiceInjector.cs │ │ ├── ClipboardCommands.cs │ │ ├── ConsoleProcessRunner.cs │ │ ├── EnumHelpers.cs │ │ ├── IOCommands.cs │ │ ├── ImageProcessor.cs │ │ ├── ImageSearcher.cs │ │ ├── MarkdownSnippets.cs │ │ ├── PngDataHelper.cs │ │ ├── TagCsvParser.cs │ │ ├── TextEditorConfigs.cs │ │ ├── UnixPrerequisiteHelper.cs │ │ ├── UriHandler.cs │ │ ├── ViewModelSerializer.cs │ │ ├── Win32ClipboardFormat.cs │ │ ├── WindowsClipboard.cs │ │ ├── WindowsElevated.cs │ │ ├── WindowsPrerequisiteHelper.cs │ │ └── WindowsShortcuts.cs │ ├── Languages/ │ │ ├── Cultures.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.cs-CZ.resx │ │ ├── Resources.de.resx │ │ ├── Resources.es.resx │ │ ├── Resources.fr-FR.resx │ │ ├── Resources.it-it.resx │ │ ├── Resources.ja-JP.resx │ │ ├── Resources.ko-KR.resx │ │ ├── Resources.pt-BR.resx │ │ ├── Resources.pt-PT.resx │ │ ├── Resources.resx │ │ ├── Resources.ru-ru.resx │ │ ├── Resources.tr-TR.resx │ │ ├── Resources.uk-UA.resx │ │ ├── Resources.zh-Hans.resx │ │ └── Resources.zh-Hant.resx │ ├── Logging/ │ │ └── RichNLogTheme.cs │ ├── MarkupExtensions/ │ │ ├── EnumValuesExtension.cs │ │ └── TernaryExtension.cs │ ├── Models/ │ │ ├── AdvancedObservableList.cs │ │ ├── AppArgs.cs │ │ ├── AvaloniaResource.cs │ │ ├── CheckpointCategory.cs │ │ ├── CommandItem.cs │ │ ├── ContentDialogValueResult.cs │ │ ├── DirectionalNavigationEventArgs.cs │ │ ├── HuggingFace/ │ │ │ ├── HuggingFaceModelType.cs │ │ │ └── HuggingfaceItem.cs │ │ ├── IInfinitelyScroll.cs │ │ ├── IJsonLoadableState.cs │ │ ├── IParametersLoadableState.cs │ │ ├── IPersistentViewProvider.cs │ │ ├── IRemovableListItem.cs │ │ ├── ITemplateKey.cs │ │ ├── IconData.cs │ │ ├── ImageCacheProviders.cs │ │ ├── ImageSource.cs │ │ ├── ImageSourceTemplateType.cs │ │ ├── Inference/ │ │ │ ├── EditableModule.cs │ │ │ ├── FileNameFormat.cs │ │ │ ├── FileNameFormatPart.cs │ │ │ ├── FileNameFormatProvider.cs │ │ │ ├── FileNameFormatVar.cs │ │ │ ├── GenerateFlags.cs │ │ │ ├── GenerateOverrides.cs │ │ │ ├── IComfyStep.cs │ │ │ ├── IInputImageProvider.cs │ │ │ ├── IValidatableModule.cs │ │ │ ├── InferenceTextToImageModel.cs │ │ │ ├── LatentType.cs │ │ │ ├── LoadViewStateEventArgs.cs │ │ │ ├── ModuleApplyStepEventArgs.cs │ │ │ ├── NoiseType.cs │ │ │ ├── Prompt.cs │ │ │ ├── PromptAmplifierMode.cs │ │ │ ├── PromptCardModel.cs │ │ │ ├── SamplerCardModel.cs │ │ │ ├── SaveViewStateEventArgs.cs │ │ │ ├── SeedCardModel.cs │ │ │ ├── StackCardModel.cs │ │ │ ├── StackExpanderModel.cs │ │ │ ├── UpscalerCardModel.cs │ │ │ ├── VideoOutputMethod.cs │ │ │ └── ViewState.cs │ │ ├── InferenceProjectDocument.cs │ │ ├── ObservableDictionary.cs │ │ ├── OpenArtCustomNode.cs │ │ ├── OpenArtMetadata.cs │ │ ├── PackageManagerNavigationOptions.cs │ │ ├── PackageSteps/ │ │ │ └── UnpackSiteCustomizeStep.cs │ │ ├── PaintCanvasTool.cs │ │ ├── PythonPackageSpecifiersItem.cs │ │ ├── SelectableItem.cs │ │ ├── SharedState.cs │ │ ├── TagCompletion/ │ │ │ ├── CompletionProvider.cs │ │ │ ├── CompletionType.cs │ │ │ ├── EditorCompletionRequest.cs │ │ │ ├── ICompletionProvider.cs │ │ │ ├── ITokenizerProvider.cs │ │ │ ├── ModelCompletionData.cs │ │ │ ├── ModelTypeCompletionData.cs │ │ │ ├── TagCompletionData.cs │ │ │ ├── TagCsvEntry.cs │ │ │ ├── TagType.cs │ │ │ ├── TextCompletionRequest.cs │ │ │ └── TokenizerProvider.cs │ │ ├── TextEditorPreset.cs │ │ ├── TreeFileExplorer/ │ │ │ ├── TreeFileExplorerDirectory.cs │ │ │ ├── TreeFileExplorerFile.cs │ │ │ ├── TreeFileExplorerItem.cs │ │ │ ├── TreeFileExplorerOptions.cs │ │ │ └── TreeFileExplorerType.cs │ │ ├── TreeViewDirectory.cs │ │ ├── TypedNavigationEventArgs.cs │ │ ├── UpdateChannelCard.cs │ │ └── ViewModelState.cs │ ├── Program.cs │ ├── Services/ │ │ ├── AccountsService.cs │ │ ├── CivitBaseModelTypeService.cs │ │ ├── ConnectedServiceManager.cs │ │ ├── DiscordRichPresenceService.cs │ │ ├── IAccountsService.cs │ │ ├── ICivitBaseModelTypeService.cs │ │ ├── IConnectedServiceManager.cs │ │ ├── IDiscordRichPresenceService.cs │ │ ├── IInferenceClientManager.cs │ │ ├── IModelDownloadLinkHandler.cs │ │ ├── IModelImportService.cs │ │ ├── INavigationService.cs │ │ ├── INotificationService.cs │ │ ├── IServiceManager.cs │ │ ├── IServiceManagerScope.cs │ │ ├── InferenceClientManager.cs │ │ ├── ModelDownloadLinkHandler.cs │ │ ├── ModelImportService.cs │ │ ├── NavigationService.cs │ │ ├── NotificationService.cs │ │ ├── RunningPackageService.cs │ │ ├── ScopedServiceManager.cs │ │ ├── ServiceManager.cs │ │ ├── ServiceManagerScope.cs │ │ └── TabContext.cs │ ├── StabilityMatrix.Avalonia.csproj │ ├── StabilityMatrix.Avalonia.csproj.DotSettings │ ├── Styles/ │ │ ├── BorderStyles.axaml │ │ ├── ButtonStyles.axaml │ │ ├── Card.axaml │ │ ├── CommandBarButtonStyles.axaml │ │ ├── ContextMenuStyles.axaml │ │ ├── ControlThemes/ │ │ │ ├── BetterComboBoxStyles.axaml │ │ │ ├── ButtonStyles.Accelerator.axaml │ │ │ ├── HyperlinkIconButtonStyles.axaml │ │ │ ├── LabelStyles.Dark.axaml │ │ │ ├── LabelStyles.axaml │ │ │ ├── ListBoxStyles.axaml │ │ │ └── _index.axaml │ │ ├── DockStyles.axaml │ │ ├── FAComboBoxStyles.axaml │ │ ├── ListBoxStyles.axaml │ │ ├── Markdown/ │ │ │ ├── MarkdownStyleFluentAvalonia.axaml │ │ │ └── MarkdownStyleFluentAvalonia.axaml.cs │ │ ├── ProgressRing.axaml │ │ ├── SemiStyles.axaml │ │ ├── SemiStyles.axaml.cs │ │ ├── SplitButtonStyles.axaml │ │ ├── TextBoxStyles.axaml │ │ ├── ThemeColors.axaml │ │ ├── ThemeColors.cs │ │ ├── ThemeMaterials.axaml │ │ └── ToggleButtonStyles.axaml │ ├── ViewLocator.cs │ ├── ViewModels/ │ │ ├── Base/ │ │ │ ├── ConsoleProgressViewModel.cs │ │ │ ├── ContentDialogProgressViewModelBase.cs │ │ │ ├── ContentDialogViewModelBase.cs │ │ │ ├── DisposableLoadableViewModelBase.cs │ │ │ ├── DisposableViewModelBase.cs │ │ │ ├── InferenceGenerationViewModelBase.cs │ │ │ ├── InferenceTabViewModelBase.cs │ │ │ ├── LoadableViewModelBase.cs │ │ │ ├── PageViewModelBase.cs │ │ │ ├── PausableProgressItemViewModelBase.cs │ │ │ ├── ProgressItemViewModelBase.cs │ │ │ ├── ProgressViewModel.cs │ │ │ ├── SelectableViewModelBase.cs │ │ │ ├── TabViewModelBase.cs │ │ │ ├── TaskDialogViewModelBase.cs │ │ │ └── ViewModelBase.cs │ │ ├── CheckpointBrowser/ │ │ │ ├── CheckpointBrowserCardViewModel.cs │ │ │ ├── CivitAiBrowserViewModel.cs │ │ │ ├── CivitDetailsPageViewModel.cs │ │ │ ├── HuggingFacePageViewModel.cs │ │ │ ├── OpenModelDbBrowserCardViewModel.cs │ │ │ ├── OpenModelDbBrowserViewModel.Filters.cs │ │ │ └── OpenModelDbBrowserViewModel.cs │ │ ├── CheckpointBrowserViewModel.cs │ │ ├── CheckpointManager/ │ │ │ ├── BaseModelOptionViewModel.cs │ │ │ └── CheckpointFileViewModel.cs │ │ ├── CheckpointsPageViewModel.cs │ │ ├── ConsoleViewModel.cs │ │ ├── Controls/ │ │ │ ├── GitVersionSelectorViewModel.cs │ │ │ ├── PaintCanvasViewModel.Serializer.cs │ │ │ └── PaintCanvasViewModel.cs │ │ ├── Dialogs/ │ │ │ ├── AnalyticsOptInViewModel.cs │ │ │ ├── CivitFileDisplayViewModel.cs │ │ │ ├── CivitFileViewModel.cs │ │ │ ├── CivitImageViewModel.cs │ │ │ ├── ConfirmBulkDownloadDialogViewModel.cs │ │ │ ├── ConfirmDeleteDialogViewModel.cs │ │ │ ├── ConfirmPackageDeleteDialogViewModel.cs │ │ │ ├── DownloadResourceViewModel.cs │ │ │ ├── EnvVarsViewModel.cs │ │ │ ├── ExceptionViewModel.cs │ │ │ ├── ImageViewerViewModel.cs │ │ │ ├── InferenceConnectionHelpViewModel.cs │ │ │ ├── LaunchOptionsViewModel.cs │ │ │ ├── LykosLoginViewModel.cs │ │ │ ├── MaskEditorViewModel.cs │ │ │ ├── ModelMetadataEditorDialogViewModel.cs │ │ │ ├── ModelVersionViewModel.cs │ │ │ ├── NewOneClickInstallViewModel.cs │ │ │ ├── OAuthConnectViewModel.cs │ │ │ ├── OAuthDeviceAuthViewModel.cs │ │ │ ├── OAuthGoogleLoginViewModel.cs │ │ │ ├── OAuthLoginViewModel.cs │ │ │ ├── OneClickInstallViewModel.cs │ │ │ ├── OpenArtWorkflowViewModel.cs │ │ │ ├── OpenModelDbModelDetailsViewModel.cs │ │ │ ├── PackageImportViewModel.cs │ │ │ ├── PropertyGridViewModel.cs │ │ │ ├── PythonPackageSpecifiersViewModel.cs │ │ │ ├── PythonPackagesItemViewModel.cs │ │ │ ├── PythonPackagesViewModel.cs │ │ │ ├── RecommendedModelItemViewModel.cs │ │ │ ├── RecommendedModelsViewModel.cs │ │ │ ├── SafetensorMetadataViewModel.cs │ │ │ ├── SelectDataDirectoryViewModel.cs │ │ │ ├── SelectModelVersionViewModel.cs │ │ │ ├── SponsorshipPromptViewModel.cs │ │ │ └── UpdateViewModel.cs │ │ ├── FirstLaunchSetupViewModel.cs │ │ ├── HuggingFacePage/ │ │ │ ├── CategoryViewModel.cs │ │ │ └── HuggingfaceItemViewModel.cs │ │ ├── IDropTarget.cs │ │ ├── Inference/ │ │ │ ├── BatchSizeCardViewModel.cs │ │ │ ├── CfzCudnnToggleCardViewModel.cs │ │ │ ├── ControlNetCardViewModel.cs │ │ │ ├── DiscreteModelSamplingCardViewModel.cs │ │ │ ├── ExtraNetworkCardViewModel.cs │ │ │ ├── FaceDetailerViewModel.cs │ │ │ ├── FreeUCardViewModel.cs │ │ │ ├── IImageGalleryComponent.cs │ │ │ ├── ImageFolderCardItemViewModel.cs │ │ │ ├── ImageFolderCardViewModel.cs │ │ │ ├── ImageGalleryCardViewModel.cs │ │ │ ├── InferenceFluxTextToImageViewModel.cs │ │ │ ├── InferenceImageToImageViewModel.cs │ │ │ ├── InferenceImageToVideoViewModel.cs │ │ │ ├── InferenceImageUpscaleViewModel.cs │ │ │ ├── InferenceTextToImageViewModel.cs │ │ │ ├── InferenceWanImageToVideoViewModel.cs │ │ │ ├── InferenceWanTextToVideoViewModel.cs │ │ │ ├── LayerDiffuseCardViewModel.cs │ │ │ ├── ModelCardViewModel.cs │ │ │ ├── Modules/ │ │ │ │ ├── CfzCudnnToggleModule.cs │ │ │ │ ├── ControlNetModule.cs │ │ │ │ ├── DiscreteModelSamplingModule.cs │ │ │ │ ├── FaceDetailerModule.cs │ │ │ │ ├── FluxGuidanceModule.cs │ │ │ │ ├── FluxHiresFixModule.cs │ │ │ │ ├── FreeUModule.cs │ │ │ │ ├── HiresFixModule.cs │ │ │ │ ├── LayerDiffuseModule.cs │ │ │ │ ├── LoraModule.cs │ │ │ │ ├── ModuleBase.cs │ │ │ │ ├── NRSModule.cs │ │ │ │ ├── PlasmaNoiseModule.cs │ │ │ │ ├── PromptExpansionModule.cs │ │ │ │ ├── RescaleCfgModule.cs │ │ │ │ ├── SaveImageModule.cs │ │ │ │ ├── TiledVAEModule.cs │ │ │ │ └── UpscalerModule.cs │ │ │ ├── NrsCardViewModel.cs │ │ │ ├── PlasmaNoiseCardViewModel.cs │ │ │ ├── PromptCardViewModel.cs │ │ │ ├── PromptExpansionCardViewModel.cs │ │ │ ├── RescaleCfgCardViewModel.cs │ │ │ ├── SamplerCardViewModel.cs │ │ │ ├── SeedCardViewModel.cs │ │ │ ├── SelectImageCardViewModel.cs │ │ │ ├── SharpenCardViewModel.cs │ │ │ ├── StackCardViewModel.cs │ │ │ ├── StackEditableCardViewModel.cs │ │ │ ├── StackExpanderViewModel.cs │ │ │ ├── StackViewModelBase.cs │ │ │ ├── TiledVAECardViewModel.cs │ │ │ ├── UnetModelCardViewModel.cs │ │ │ ├── UpscalerCardViewModel.cs │ │ │ ├── Video/ │ │ │ │ ├── ImgToVidModelCardViewModel.cs │ │ │ │ ├── SvdImgToVidConditioningViewModel.cs │ │ │ │ └── VideoOutputSettingsCardViewModel.cs │ │ │ ├── WanModelCardViewModel.cs │ │ │ └── WanSamplerCardViewModel.cs │ │ ├── InferenceViewModel.cs │ │ ├── InstalledWorkflowsViewModel.cs │ │ ├── LaunchPageViewModel.cs │ │ ├── MainWindowViewModel.cs │ │ ├── OpenArtBrowserViewModel.cs │ │ ├── OutputsPage/ │ │ │ └── OutputImageViewModel.cs │ │ ├── OutputsPageViewModel.cs │ │ ├── PackageManager/ │ │ │ ├── MainPackageManagerViewModel.cs │ │ │ ├── PackageCardViewModel.cs │ │ │ ├── PackageExtensionBrowserViewModel.cs │ │ │ ├── PackageInstallBrowserViewModel.cs │ │ │ └── PackageInstallDetailViewModel.cs │ │ ├── PackageManagerViewModel.cs │ │ ├── Progress/ │ │ │ ├── DownloadProgressItemViewModel.cs │ │ │ ├── PackageInstallProgressItemViewModel.cs │ │ │ ├── ProgressItemViewModel.cs │ │ │ └── ProgressManagerViewModel.cs │ │ ├── RefreshBadgeViewModel.cs │ │ ├── RunningPackageViewModel.cs │ │ ├── Settings/ │ │ │ ├── AccountSettingsViewModel.cs │ │ │ ├── AnalyticsSettingsViewModel.cs │ │ │ ├── InferenceSettingsViewModel.cs │ │ │ ├── MainSettingsViewModel.cs │ │ │ ├── NotificationSettingsItem.cs │ │ │ ├── NotificationSettingsViewModel.cs │ │ │ └── UpdateSettingsViewModel.cs │ │ ├── SettingsViewModel.cs │ │ └── WorkflowsPageViewModel.cs │ ├── Views/ │ │ ├── CheckpointBrowserPage.axaml │ │ ├── CheckpointBrowserPage.axaml.cs │ │ ├── CheckpointsPage.axaml │ │ ├── CheckpointsPage.axaml.cs │ │ ├── CivitAiBrowserPage.axaml │ │ ├── CivitAiBrowserPage.axaml.cs │ │ ├── CivitDetailsPage.axaml │ │ ├── CivitDetailsPage.axaml.cs │ │ ├── ConsoleOutputPage.axaml │ │ ├── ConsoleOutputPage.axaml.cs │ │ ├── Dialogs/ │ │ │ ├── AnalyticsOptInDialog.axaml │ │ │ ├── AnalyticsOptInDialog.axaml.cs │ │ │ ├── ConfirmBulkDownloadDialog.axaml │ │ │ ├── ConfirmBulkDownloadDialog.axaml.cs │ │ │ ├── ConfirmDeleteDialog.axaml │ │ │ ├── ConfirmDeleteDialog.axaml.cs │ │ │ ├── ConfirmPackageDeleteDialog.axaml │ │ │ ├── ConfirmPackageDeleteDialog.axaml.cs │ │ │ ├── DownloadResourceDialog.axaml │ │ │ ├── DownloadResourceDialog.axaml.cs │ │ │ ├── EnvVarsDialog.axaml │ │ │ ├── EnvVarsDialog.axaml.cs │ │ │ ├── ExceptionDialog.axaml │ │ │ ├── ExceptionDialog.axaml.cs │ │ │ ├── ImageViewerDialog.axaml │ │ │ ├── ImageViewerDialog.axaml.cs │ │ │ ├── InferenceConnectionHelpDialog.axaml │ │ │ ├── InferenceConnectionHelpDialog.axaml.cs │ │ │ ├── LaunchOptionsDialog.axaml │ │ │ ├── LaunchOptionsDialog.axaml.cs │ │ │ ├── LykosLoginDialog.axaml │ │ │ ├── LykosLoginDialog.axaml.cs │ │ │ ├── MaskEditorDialog.axaml │ │ │ ├── MaskEditorDialog.axaml.cs │ │ │ ├── ModelMetadataEditorDialog.axaml │ │ │ ├── ModelMetadataEditorDialog.axaml.cs │ │ │ ├── NewOneClickInstallDialog.axaml │ │ │ ├── NewOneClickInstallDialog.axaml.cs │ │ │ ├── OAuthConnectDialog.axaml │ │ │ ├── OAuthConnectDialog.axaml.cs │ │ │ ├── OAuthDeviceAuthDialog.axaml │ │ │ ├── OAuthDeviceAuthDialog.axaml.cs │ │ │ ├── OAuthLoginDialog.axaml │ │ │ ├── OAuthLoginDialog.axaml.cs │ │ │ ├── OneClickInstallDialog.axaml │ │ │ ├── OneClickInstallDialog.axaml.cs │ │ │ ├── OpenArtWorkflowDialog.axaml │ │ │ ├── OpenArtWorkflowDialog.axaml.cs │ │ │ ├── OpenModelDbModelDetailsDialog.axaml │ │ │ ├── OpenModelDbModelDetailsDialog.axaml.cs │ │ │ ├── PackageImportDialog.axaml │ │ │ ├── PackageImportDialog.axaml.cs │ │ │ ├── PackageModificationDialog.axaml │ │ │ ├── PackageModificationDialog.axaml.cs │ │ │ ├── PropertyGridDialog.axaml │ │ │ ├── PropertyGridDialog.axaml.cs │ │ │ ├── PythonPackageSpecifiersDialog.axaml │ │ │ ├── PythonPackageSpecifiersDialog.axaml.cs │ │ │ ├── PythonPackagesDialog.axaml │ │ │ ├── PythonPackagesDialog.axaml.cs │ │ │ ├── RecommendedModelsDialog.axaml │ │ │ ├── RecommendedModelsDialog.axaml.cs │ │ │ ├── SafetensorMetadataDialog.axaml │ │ │ ├── SafetensorMetadataDialog.axaml.cs │ │ │ ├── SelectDataDirectoryDialog.axaml │ │ │ ├── SelectDataDirectoryDialog.axaml.cs │ │ │ ├── SelectModelVersionDialog.axaml │ │ │ ├── SelectModelVersionDialog.axaml.cs │ │ │ ├── SponsorshipPromptDialog.axaml │ │ │ ├── SponsorshipPromptDialog.axaml.cs │ │ │ ├── UpdateDialog.axaml │ │ │ └── UpdateDialog.axaml.cs │ │ ├── FirstLaunchSetupWindow.axaml │ │ ├── FirstLaunchSetupWindow.axaml.cs │ │ ├── HuggingFacePage.axaml │ │ ├── HuggingFacePage.axaml.cs │ │ ├── Inference/ │ │ │ ├── InferenceImageToImageView.axaml │ │ │ ├── InferenceImageToImageView.axaml.cs │ │ │ ├── InferenceImageToVideoView.axaml │ │ │ ├── InferenceImageToVideoView.axaml.cs │ │ │ ├── InferenceImageUpscaleView.axaml │ │ │ ├── InferenceImageUpscaleView.axaml.cs │ │ │ ├── InferenceTextToImageView.axaml │ │ │ ├── InferenceTextToImageView.axaml.cs │ │ │ ├── InferenceWanImageToVideoView.axaml │ │ │ ├── InferenceWanImageToVideoView.axaml.cs │ │ │ ├── InferenceWanTextToVideoView.axaml │ │ │ └── InferenceWanTextToVideoView.axaml.cs │ │ ├── InferencePage.axaml │ │ ├── InferencePage.axaml.cs │ │ ├── InstalledWorkflowsPage.axaml │ │ ├── InstalledWorkflowsPage.axaml.cs │ │ ├── LaunchPageView.axaml │ │ ├── LaunchPageView.axaml.cs │ │ ├── MainWindow.axaml │ │ ├── MainWindow.axaml.cs │ │ ├── OpenArtBrowserPage.axaml │ │ ├── OpenArtBrowserPage.axaml.cs │ │ ├── OpenModelDbBrowserPage.axaml │ │ ├── OpenModelDbBrowserPage.axaml.cs │ │ ├── OutputsPage.axaml │ │ ├── OutputsPage.axaml.cs │ │ ├── PackageManager/ │ │ │ ├── MainPackageManagerView.axaml │ │ │ ├── MainPackageManagerView.axaml.cs │ │ │ ├── PackageExtensionBrowserView.axaml │ │ │ ├── PackageExtensionBrowserView.axaml.cs │ │ │ ├── PackageInstallBrowserView.axaml │ │ │ ├── PackageInstallBrowserView.axaml.cs │ │ │ ├── PackageInstallDetailView.axaml │ │ │ └── PackageInstallDetailView.axaml.cs │ │ ├── PackageManagerPage.axaml │ │ ├── PackageManagerPage.axaml.cs │ │ ├── ProgressManagerPage.axaml │ │ ├── ProgressManagerPage.axaml.cs │ │ ├── Settings/ │ │ │ ├── AccountSettingsPage.axaml │ │ │ ├── AccountSettingsPage.axaml.cs │ │ │ ├── AnalyticsSettingsPage.axaml │ │ │ ├── AnalyticsSettingsPage.axaml.cs │ │ │ ├── InferenceSettingsPage.axaml │ │ │ ├── InferenceSettingsPage.axaml.cs │ │ │ ├── MainSettingsPage.axaml │ │ │ ├── MainSettingsPage.axaml.cs │ │ │ ├── NotificationSettingsPage.axaml │ │ │ ├── NotificationSettingsPage.axaml.cs │ │ │ ├── UpdateSettingsPage.axaml │ │ │ └── UpdateSettingsPage.axaml.cs │ │ ├── SettingsPage.axaml │ │ ├── SettingsPage.axaml.cs │ │ ├── WorkflowsPage.axaml │ │ └── WorkflowsPage.axaml.cs │ └── app.manifest ├── StabilityMatrix.Avalonia.Diagnostics/ │ ├── LogViewer/ │ │ ├── Controls/ │ │ │ ├── LogViewerControl.axaml │ │ │ └── LogViewerControl.axaml.cs │ │ ├── Converters/ │ │ │ ├── ChangeColorTypeConverter.cs │ │ │ └── EventIdConverter.cs │ │ ├── Core/ │ │ │ ├── Extensions/ │ │ │ │ └── LoggerExtensions.cs │ │ │ ├── Logging/ │ │ │ │ ├── DataStoreLoggerConfiguration.cs │ │ │ │ ├── ILogDataStore.cs │ │ │ │ ├── ILogDataStoreImpl.cs │ │ │ │ ├── LogDataStore.cs │ │ │ │ ├── LogEntryColor.cs │ │ │ │ └── LogModel.cs │ │ │ └── ViewModels/ │ │ │ ├── LogViewerControlViewModel.cs │ │ │ ├── ObservableObject.cs │ │ │ └── ViewModel.cs │ │ ├── DataStoreLoggerTarget.cs │ │ ├── Extensions/ │ │ │ └── ServicesExtension.cs │ │ ├── LICENSE │ │ ├── Logging/ │ │ │ └── LogDataStore.cs │ │ └── README.md │ ├── StabilityMatrix.Avalonia.Diagnostics.csproj │ ├── ViewModels/ │ │ └── LogWindowViewModel.cs │ └── Views/ │ ├── LogWindow.axaml │ └── LogWindow.axaml.cs ├── StabilityMatrix.Avalonia.pupnet.conf ├── StabilityMatrix.Core/ │ ├── Animation/ │ │ └── GifConverter.cs │ ├── Api/ │ │ ├── A3WebApiManager.cs │ │ ├── ApiFactory.cs │ │ ├── CivitCompatApiManager.cs │ │ ├── IA3WebApi.cs │ │ ├── IA3WebApiManager.cs │ │ ├── IApiFactory.cs │ │ ├── ICivitApi.cs │ │ ├── ICivitTRPCApi.cs │ │ ├── IComfyApi.cs │ │ ├── IHuggingFaceApi.cs │ │ ├── IInvokeAiApi.cs │ │ ├── ILykosAnalyticsApi.cs │ │ ├── ILykosAuthApiV1.cs │ │ ├── ILykosModelDiscoveryApi.cs │ │ ├── IOpenArtApi.cs │ │ ├── IOpenModelDbApi.cs │ │ ├── IPyPiApi.cs │ │ ├── ITokenProvider.cs │ │ ├── LykosAuthApi/ │ │ │ ├── .refitter │ │ │ ├── Generated/ │ │ │ │ └── Refitter.g.cs │ │ │ └── IRecommendedModelsApi.cs │ │ ├── LykosAuthTokenProvider.cs │ │ ├── OpenIdClientConstants.cs │ │ ├── PromptGen/ │ │ │ ├── .refitter │ │ │ └── Generated/ │ │ │ └── Refitter.g.cs │ │ └── TokenAuthHeaderHandler.cs │ ├── Attributes/ │ │ ├── BoolStringMemberAttribute.cs │ │ ├── ManagedServiceAttribute.cs │ │ ├── PreloadAttribute.cs │ │ ├── SingletonAttribute.cs │ │ ├── TransientAttribute.cs │ │ ├── TypedNodeOptionsAttribute.cs │ │ └── ViewAttribute.cs │ ├── Converters/ │ │ └── Json/ │ │ ├── AnalyticsRequestConverter.cs │ │ ├── DefaultUnknownEnumConverter.cs │ │ ├── LaunchOptionValueJsonConverter.cs │ │ ├── NodeConnectionBaseJsonConverter.cs │ │ ├── OneOfJsonConverter.cs │ │ ├── ParsableStringValueJsonConverter.cs │ │ ├── SKColorJsonConverter.cs │ │ ├── SemVersionJsonConverter.cs │ │ └── StringJsonConverter.cs │ ├── Database/ │ │ ├── CivitModelQueryCacheEntry.cs │ │ ├── ILiteDbContext.cs │ │ └── LiteDbContext.cs │ ├── Exceptions/ │ │ ├── AppException.cs │ │ ├── CivitDownloadDisabledException.cs │ │ ├── CivitLoginRequiredException.cs │ │ ├── ComfyNodeException.cs │ │ ├── EarlyAccessException.cs │ │ ├── FileExistsException.cs │ │ ├── HuggingFaceLoginRequiredException.cs │ │ ├── MissingPrerequisiteException.cs │ │ ├── ProcessException.cs │ │ ├── PromptError.cs │ │ ├── PromptSyntaxError.cs │ │ ├── PromptUnknownModelError.cs │ │ └── PromptValidationError.cs │ ├── Extensions/ │ │ ├── DictionaryExtensions.cs │ │ ├── DirectoryPathExtensions.cs │ │ ├── DynamicDataExtensions.cs │ │ ├── EnumAttributes.cs │ │ ├── EnumConversion.cs │ │ ├── EnumerableExtensions.cs │ │ ├── HashExtensions.cs │ │ ├── JsonObjectExtensions.cs │ │ ├── LiteDBExtensions.cs │ │ ├── NullableExtensions.cs │ │ ├── ObjectExtensions.cs │ │ ├── ProgressExtensions.cs │ │ ├── SemVersionExtensions.cs │ │ ├── ServiceProviderExtensions.cs │ │ ├── SizeExtensions.cs │ │ ├── StringExtensions.cs │ │ ├── TypeExtensions.cs │ │ └── UriExtensions.cs │ ├── Git/ │ │ ├── CachedCommandGitVersionProvider.cs │ │ ├── CommandGitVersionProvider.cs │ │ └── IGitVersionProvider.cs │ ├── Helper/ │ │ ├── Analytics/ │ │ │ ├── AnalyticsHelper.cs │ │ │ └── IAnalyticsHelper.cs │ │ ├── ArchiveHelper.cs │ │ ├── Cache/ │ │ │ ├── GithubApiCache.cs │ │ │ ├── IGithubApiCache.cs │ │ │ ├── IPyPiCache.cs │ │ │ ├── LRUCache.cs │ │ │ └── PyPiCache.cs │ │ ├── CodeTimer.cs │ │ ├── Compat.cs │ │ ├── EnumerationOptionConstants.cs │ │ ├── EnvPathBuilder.cs │ │ ├── EventManager.cs │ │ ├── Factory/ │ │ │ ├── IPackageFactory.cs │ │ │ └── PackageFactory.cs │ │ ├── FileHash.cs │ │ ├── FileTransfers.cs │ │ ├── GenerationParametersConverter.cs │ │ ├── HardwareInfo/ │ │ │ ├── CpuInfo.cs │ │ │ ├── GpuInfo.cs │ │ │ ├── HardwareHelper.cs │ │ │ ├── MemoryInfo.cs │ │ │ ├── MemoryLevel.cs │ │ │ └── Win32MemoryStatusEx.cs │ │ ├── IPrerequisiteHelper.cs │ │ ├── ISharedFolders.cs │ │ ├── ImageMetadata.cs │ │ ├── LazyInstance.cs │ │ ├── MinimumDelay.cs │ │ ├── ModelCompatChecker.cs │ │ ├── ModelFinder.cs │ │ ├── MyTiffFile.cs │ │ ├── ObjectHash.cs │ │ ├── PlatformKind.cs │ │ ├── ProcessTracker.cs │ │ ├── PropertyComparer.cs │ │ ├── ReaderWriterLockAdvanced.cs │ │ ├── RemoteModels.cs │ │ ├── SharedFolders.cs │ │ ├── SharedFoldersConfigHelper.cs │ │ ├── SharedFoldersConfigOptions.cs │ │ ├── Size.cs │ │ ├── SystemInfo.cs │ │ ├── Utilities.cs │ │ └── Webp/ │ │ └── WebpReader.cs │ ├── Inference/ │ │ ├── ComfyClient.cs │ │ ├── ComfyProgressUpdateEventArgs.cs │ │ ├── ComfyTask.cs │ │ └── InferenceClientBase.cs │ ├── Models/ │ │ ├── Api/ │ │ │ ├── A3Options.cs │ │ │ ├── CivitAccountStatusUpdateEventArgs.cs │ │ │ ├── CivitBaseModelType.cs │ │ │ ├── CivitCommercialUse.cs │ │ │ ├── CivitCreator.cs │ │ │ ├── CivitFile.cs │ │ │ ├── CivitFileHashes.cs │ │ │ ├── CivitFileMetadata.cs │ │ │ ├── CivitFileType.cs │ │ │ ├── CivitImage.cs │ │ │ ├── CivitMetadata.cs │ │ │ ├── CivitMode.cs │ │ │ ├── CivitModel.cs │ │ │ ├── CivitModelFormat.cs │ │ │ ├── CivitModelFpType.cs │ │ │ ├── CivitModelSize.cs │ │ │ ├── CivitModelStats.cs │ │ │ ├── CivitModelType.cs │ │ │ ├── CivitModelVersion.cs │ │ │ ├── CivitModelVersionResponse.cs │ │ │ ├── CivitModelsRequest.cs │ │ │ ├── CivitModelsResponse.cs │ │ │ ├── CivitPeriod.cs │ │ │ ├── CivitSortMode.cs │ │ │ ├── CivitStats.cs │ │ │ ├── CivitTRPC/ │ │ │ │ ├── CivitApiTokens.cs │ │ │ │ ├── CivitGetUserByIdRequest.cs │ │ │ │ ├── CivitGetUserByIdResponse.cs │ │ │ │ ├── CivitImageGenerationDataResponse.cs │ │ │ │ ├── CivitUserAccountResponse.cs │ │ │ │ ├── CivitUserProfileRequest.cs │ │ │ │ ├── CivitUserProfileResponse.cs │ │ │ │ └── CivitUserToggleFavoriteModelRequest.cs │ │ │ ├── Comfy/ │ │ │ │ ├── ComfyAuxPreprocessor.cs │ │ │ │ ├── ComfyHistoryOutput.cs │ │ │ │ ├── ComfyHistoryResponse.cs │ │ │ │ ├── ComfyImage.cs │ │ │ │ ├── ComfyInputInfo.cs │ │ │ │ ├── ComfyObjectInfo.cs │ │ │ │ ├── ComfyPromptRequest.cs │ │ │ │ ├── ComfyPromptResponse.cs │ │ │ │ ├── ComfySampler.cs │ │ │ │ ├── ComfySamplerScheduler.cs │ │ │ │ ├── ComfyScheduler.cs │ │ │ │ ├── ComfyUploadImageResponse.cs │ │ │ │ ├── ComfyUpscaler.cs │ │ │ │ ├── ComfyUpscalerType.cs │ │ │ │ ├── ComfyWebSocketResponse.cs │ │ │ │ ├── ComfyWebSocketResponseType.cs │ │ │ │ ├── ComfyWebSocketResponseUnion.cs │ │ │ │ ├── NodeTypes/ │ │ │ │ │ ├── ConditioningConnections.cs │ │ │ │ │ ├── ModelConnections.cs │ │ │ │ │ ├── NodeConnectionBase.cs │ │ │ │ │ ├── NodeConnections.cs │ │ │ │ │ └── PrimaryNodeConnection.cs │ │ │ │ ├── Nodes/ │ │ │ │ │ ├── ComfyNode.cs │ │ │ │ │ ├── ComfyNodeBuilder.cs │ │ │ │ │ ├── ComfyTypedNodeBase.cs │ │ │ │ │ ├── IOutputNode.cs │ │ │ │ │ ├── NamedComfyNode.cs │ │ │ │ │ ├── NodeDictionary.cs │ │ │ │ │ └── RerouteNode.cs │ │ │ │ └── WebSocketData/ │ │ │ │ ├── ComfyStatus.cs │ │ │ │ ├── ComfyStatusExecInfo.cs │ │ │ │ ├── ComfyWebSocketExecutingData.cs │ │ │ │ ├── ComfyWebSocketExecutionErrorData.cs │ │ │ │ ├── ComfyWebSocketImageData.cs │ │ │ │ ├── ComfyWebSocketProgressData.cs │ │ │ │ └── ComfyWebSocketStatusData.cs │ │ │ ├── HuggingFace/ │ │ │ │ └── HuggingFaceUser.cs │ │ │ ├── HuggingFaceAccountStatusUpdateEventArgs.cs │ │ │ ├── ImageResponse.cs │ │ │ ├── Invoke/ │ │ │ │ ├── InstallModelRequest.cs │ │ │ │ ├── ModelInstallResult.cs │ │ │ │ └── ScanFolderResult.cs │ │ │ ├── Lykos/ │ │ │ │ ├── Analytics/ │ │ │ │ │ ├── AnalyticsRequest.cs │ │ │ │ │ ├── FirstTimeInstallAnalytics.cs │ │ │ │ │ ├── LaunchAnalyticsRequest.cs │ │ │ │ │ └── PackageInstallAnalyticsRequest.cs │ │ │ │ ├── GetDownloadResponse.cs │ │ │ │ ├── GetRecommendedModelsResponse.cs │ │ │ │ ├── GetUserResponse.cs │ │ │ │ ├── GoogleOAuthResponse.cs │ │ │ │ ├── LykosAccount.cs │ │ │ │ ├── LykosAccountStatusUpdateEventArgs.cs │ │ │ │ ├── LykosAccountV1Tokens.cs │ │ │ │ ├── LykosAccountV2Tokens.cs │ │ │ │ ├── LykosRole.cs │ │ │ │ ├── PostAccountRequest.cs │ │ │ │ ├── PostLoginRefreshRequest.cs │ │ │ │ ├── PostLoginRequest.cs │ │ │ │ └── RecommendedModelsV2Response.cs │ │ │ ├── OpenArt/ │ │ │ │ ├── NodesCount.cs │ │ │ │ ├── OpenArtCreator.cs │ │ │ │ ├── OpenArtDateTime.cs │ │ │ │ ├── OpenArtDownloadRequest.cs │ │ │ │ ├── OpenArtDownloadResponse.cs │ │ │ │ ├── OpenArtFeedRequest.cs │ │ │ │ ├── OpenArtSearchRequest.cs │ │ │ │ ├── OpenArtSearchResponse.cs │ │ │ │ ├── OpenArtSearchResult.cs │ │ │ │ ├── OpenArtStats.cs │ │ │ │ └── OpenArtThumbnail.cs │ │ │ ├── OpenModelsDb/ │ │ │ │ ├── OpenModelDbArchitecture.cs │ │ │ │ ├── OpenModelDbArchitecturesResponse.cs │ │ │ │ ├── OpenModelDbImage.cs │ │ │ │ ├── OpenModelDbKeyedModel.cs │ │ │ │ ├── OpenModelDbModel.cs │ │ │ │ ├── OpenModelDbModelsResponse.cs │ │ │ │ ├── OpenModelDbResource.cs │ │ │ │ ├── OpenModelDbTag.cs │ │ │ │ └── OpenModelDbTagsResponse.cs │ │ │ ├── ProgressRequest.cs │ │ │ ├── ProgressResponse.cs │ │ │ ├── Pypi/ │ │ │ │ ├── PyPiReleaseFile.cs │ │ │ │ └── PyPiResponse.cs │ │ │ └── TextToImageRequest.cs │ │ ├── Base/ │ │ │ └── StringValue.cs │ │ ├── CheckpointSortMode.cs │ │ ├── CheckpointSortOptions.cs │ │ ├── CivitPostDownloadContextAction.cs │ │ ├── CivitaiResource.cs │ │ ├── ComfyNodeMap.cs │ │ ├── Configs/ │ │ │ ├── ApiOptions.cs │ │ │ └── DebugOptions.cs │ │ ├── ConnectedModelInfo.cs │ │ ├── ConnectedModelSource.cs │ │ ├── CustomVersion.cs │ │ ├── Database/ │ │ │ ├── CivitBaseModelTypeCacheEntry.cs │ │ │ ├── GitCommit.cs │ │ │ ├── GithubCacheEntry.cs │ │ │ ├── InferenceProjectEntry.cs │ │ │ ├── LocalImageFile.cs │ │ │ ├── LocalImageFileType.cs │ │ │ ├── LocalModelFile.cs │ │ │ ├── LocalModelFolder.cs │ │ │ └── PyPiCacheEntry.cs │ │ ├── DimensionStringComparer.cs │ │ ├── DownloadPackageVersionOptions.cs │ │ ├── EnvVarKeyPair.cs │ │ ├── ExtraPackageCommand.cs │ │ ├── FDS/ │ │ │ ├── ComfyUiSelfStartSettings.cs │ │ │ └── StableSwarmSettings.cs │ │ ├── FileInterfaces/ │ │ │ ├── DirectoryPath.cs │ │ │ ├── FilePath.Fluent.cs │ │ │ ├── FilePath.cs │ │ │ ├── FileSystemPath.cs │ │ │ ├── IPathObject.cs │ │ │ └── TempDirectoryPath.cs │ │ ├── FileSizeType.cs │ │ ├── GenerationParameters.cs │ │ ├── GitVersion.cs │ │ ├── GlobalConfig.cs │ │ ├── GlobalEncryptedSerializer.cs │ │ ├── HybridModelFile.cs │ │ ├── HybridModelType.cs │ │ ├── IContextAction.cs │ │ ├── IDownloadableResource.cs │ │ ├── IHandleNavigation.cs │ │ ├── ISearchText.cs │ │ ├── IndexCollection.cs │ │ ├── Inference/ │ │ │ ├── InferenceProjectType.cs │ │ │ ├── LayerDiffuseMode.cs │ │ │ ├── ModelLoader.cs │ │ │ └── ModuleApplyStepTemporaryArgs.cs │ │ ├── InferenceDefaults.cs │ │ ├── InferenceRunCustomPromptEventArgs.cs │ │ ├── InstalledPackage.cs │ │ ├── InstalledPackageVersion.cs │ │ ├── LaunchOption.cs │ │ ├── LaunchOptionCard.cs │ │ ├── LaunchOptionDefinition.cs │ │ ├── LaunchOptionType.cs │ │ ├── LicenseInfo.cs │ │ ├── LoadState.cs │ │ ├── ModelPostDownloadContextAction.cs │ │ ├── ObservableHashSet.cs │ │ ├── OrderedValue.cs │ │ ├── PackageDifficulty.cs │ │ ├── PackageModification/ │ │ │ ├── ActionPackageStep.cs │ │ │ ├── AddInstalledPackageStep.cs │ │ │ ├── DownloadOpenArtWorkflowStep.cs │ │ │ ├── DownloadPackageVersionStep.cs │ │ │ ├── ICancellablePackageStep.cs │ │ │ ├── IPackageModificationRunner.cs │ │ │ ├── ImportModelsStep.cs │ │ │ ├── InstallExtensionStep.cs │ │ │ ├── InstallNunchakuStep.cs │ │ │ ├── InstallPackageStep.cs │ │ │ ├── InstallSageAttentionStep.cs │ │ │ ├── PackageModificationRunner.cs │ │ │ ├── PackageStep.cs │ │ │ ├── PipStep.cs │ │ │ ├── ProcessStep.cs │ │ │ ├── ScanMetadataStep.cs │ │ │ ├── SetPackageInstallingStep.cs │ │ │ ├── SetupModelFoldersStep.cs │ │ │ ├── SetupOutputSharingStep.cs │ │ │ ├── SetupPrerequisitesStep.cs │ │ │ ├── UninstallExtensionStep.cs │ │ │ ├── UpdateExtensionStep.cs │ │ │ └── UpdatePackageStep.cs │ │ ├── PackagePair.cs │ │ ├── PackagePrerequisite.cs │ │ ├── PackageType.cs │ │ ├── PackageVersion.cs │ │ ├── PackageVersionType.cs │ │ ├── Packages/ │ │ │ ├── A3WebUI.cs │ │ │ ├── AiToolkit.cs │ │ │ ├── BaseGitPackage.cs │ │ │ ├── BasePackage.cs │ │ │ ├── Cogstudio.cs │ │ │ ├── ComfyUI.cs │ │ │ ├── ComfyZluda.cs │ │ │ ├── Config/ │ │ │ │ ├── ConfigDefaultType.cs │ │ │ │ ├── ConfigFileType.cs │ │ │ │ ├── ConfigSharingOptions.cs │ │ │ │ ├── FdsConfigSharingStrategy.cs │ │ │ │ ├── IConfigSharingStrategy.cs │ │ │ │ ├── JsonConfigSharingStrategy.cs │ │ │ │ └── YamlConfigSharingStrategy.cs │ │ │ ├── DankDiffusion.cs │ │ │ ├── Extensions/ │ │ │ │ ├── A1111ExtensionManifest.cs │ │ │ │ ├── ComfyExtensionManifest.cs │ │ │ │ ├── ExtensionManifest.cs │ │ │ │ ├── ExtensionPack.cs │ │ │ │ ├── ExtensionSpecifier.cs │ │ │ │ ├── GitPackageExtensionManager.cs │ │ │ │ ├── IPackageExtensionManager.cs │ │ │ │ ├── InstalledPackageExtension.cs │ │ │ │ ├── PackageExtension.cs │ │ │ │ ├── PackageExtensionVersion.cs │ │ │ │ ├── SavedPackageExtension.cs │ │ │ │ └── VladExtensionItem.cs │ │ │ ├── FluxGym.cs │ │ │ ├── FocusControlNet.cs │ │ │ ├── Fooocus.cs │ │ │ ├── FooocusMre.cs │ │ │ ├── ForgeAmdGpu.cs │ │ │ ├── ForgeClassic.cs │ │ │ ├── ForgeNeo.cs │ │ │ ├── FramePack.cs │ │ │ ├── FramePackStudio.cs │ │ │ ├── IArgParsable.cs │ │ │ ├── InvokeAI.cs │ │ │ ├── KohyaSs.cs │ │ │ ├── Mashb1tFooocus.cs │ │ │ ├── OneTrainer.cs │ │ │ ├── Options/ │ │ │ │ ├── DownloadPackageOptions.cs │ │ │ │ ├── InstallPackageOptions.cs │ │ │ │ ├── PythonPackageOptions.cs │ │ │ │ ├── RunPackageOptions.cs │ │ │ │ └── UpdatePackageOptions.cs │ │ │ ├── PackageVersionOptions.cs │ │ │ ├── PackageVulnerability.cs │ │ │ ├── PipInstallConfig.cs │ │ │ ├── Reforge.cs │ │ │ ├── RuinedFooocus.cs │ │ │ ├── SDWebForge.cs │ │ │ ├── Sdfx.cs │ │ │ ├── SharedFolderLayout.cs │ │ │ ├── SharedFolderLayoutRule.cs │ │ │ ├── SimpleSDXL.cs │ │ │ ├── StableDiffusionDirectMl.cs │ │ │ ├── StableDiffusionUx.cs │ │ │ ├── StableSwarm.cs │ │ │ ├── UnknownPackage.cs │ │ │ ├── VladAutomatic.cs │ │ │ ├── VoltaML.cs │ │ │ └── Wan2GP.cs │ │ ├── Progress/ │ │ │ ├── ProgressItem.cs │ │ │ ├── ProgressReport.cs │ │ │ ├── ProgressState.cs │ │ │ └── ProgressType.cs │ │ ├── PromptSyntax/ │ │ │ ├── PromptNode.cs │ │ │ ├── PromptSyntaxBuilder.cs │ │ │ ├── PromptSyntaxTree.cs │ │ │ └── TextSpan.cs │ │ ├── RelayPropertyChangedEventArgs.cs │ │ ├── RemoteResource.cs │ │ ├── SafetensorMetadata.cs │ │ ├── Secrets.cs │ │ ├── Settings/ │ │ │ ├── AnalyticsSettings.cs │ │ │ ├── GlobalSettings.cs │ │ │ ├── HolidayMode.cs │ │ │ ├── LastDownloadLocationInfo.cs │ │ │ ├── LibrarySettings.cs │ │ │ ├── ModelSearchOptions.cs │ │ │ ├── NotificationKey.cs │ │ │ ├── NotificationLevel.cs │ │ │ ├── NotificationOption.cs │ │ │ ├── NumberFormatMode.cs │ │ │ ├── Settings.cs │ │ │ ├── SettingsTransaction.cs │ │ │ ├── Size.cs │ │ │ ├── TeachingTip.cs │ │ │ └── WindowSettings.cs │ │ ├── SharedFolderMethod.cs │ │ ├── SharedFolderType.cs │ │ ├── SharedOutputType.cs │ │ ├── StringValue.cs │ │ ├── TaskResult.cs │ │ ├── Tokens/ │ │ │ ├── PromptExtraNetwork.cs │ │ │ └── PromptExtraNetworkType.cs │ │ ├── TorchIndex.cs │ │ ├── TrackedDownload.cs │ │ ├── UnknownInstalledPackage.cs │ │ └── Update/ │ │ ├── UpdateChannel.cs │ │ ├── UpdateInfo.cs │ │ ├── UpdateManifest.cs │ │ ├── UpdatePlatforms.cs │ │ └── UpdateType.cs │ ├── Processes/ │ │ ├── AnsiCommand.cs │ │ ├── AnsiParser.cs │ │ ├── AnsiProcess.cs │ │ ├── ApcMessage.cs │ │ ├── ApcParser.cs │ │ ├── ApcType.cs │ │ ├── Argument.cs │ │ ├── AsyncStreamReader.cs │ │ ├── ProcessArgs.cs │ │ ├── ProcessArgsBuilder.cs │ │ ├── ProcessOutput.cs │ │ ├── ProcessResult.cs │ │ └── ProcessRunner.cs │ ├── Python/ │ │ ├── ArgParser.cs │ │ ├── IPyInstallationManager.cs │ │ ├── IPyRunner.cs │ │ ├── IPyVenvRunner.cs │ │ ├── IUvManager.cs │ │ ├── Interop/ │ │ │ └── PyIOStream.cs │ │ ├── MajorMinorVersion.cs │ │ ├── PipIndexResult.cs │ │ ├── PipInstallArgs.cs │ │ ├── PipPackageInfo.cs │ │ ├── PipPackageSpecifier.cs │ │ ├── PipPackageSpecifierOverride.cs │ │ ├── PipPackageSpecifierOverrideAction.cs │ │ ├── PipShowResult.cs │ │ ├── PyBaseInstall.cs │ │ ├── PyInstallation.cs │ │ ├── PyInstallationManager.cs │ │ ├── PyRunner.cs │ │ ├── PyVenvRunner.cs │ │ ├── PyVersion.cs │ │ ├── QueryTclTkLibraryResult.cs │ │ ├── UvInstallArgs.cs │ │ ├── UvManager.cs │ │ ├── UvPackageSpecifier.cs │ │ ├── UvPackageSpecifierOverride.cs │ │ ├── UvPackageSpecifierOverrideAction.cs │ │ ├── UvPythonInfo.cs │ │ ├── UvPythonListEntry.cs │ │ └── UvVenvRunner.cs │ ├── ReparsePoints/ │ │ ├── DeviceIoControlCode.cs │ │ ├── Junction.cs │ │ ├── ReparseDataBuffer.cs │ │ ├── Win32CreationDisposition.cs │ │ ├── Win32ErrorCode.cs │ │ ├── Win32FileAccess.cs │ │ ├── Win32FileAttribute.cs │ │ └── Win32FileShare.cs │ ├── Services/ │ │ ├── DownloadService.cs │ │ ├── IDownloadService.cs │ │ ├── IImageIndexService.cs │ │ ├── IMetadataImportService.cs │ │ ├── IModelIndexService.cs │ │ ├── IPipWheelService.cs │ │ ├── ISecretsManager.cs │ │ ├── ISettingsManager.cs │ │ ├── ITrackedDownloadService.cs │ │ ├── ImageIndexService.cs │ │ ├── MetadataImportService.cs │ │ ├── ModelIndexService.cs │ │ ├── OpenModelDbManager.cs │ │ ├── PipWheelService.cs │ │ ├── SecretsManager.cs │ │ ├── SettingsManager.cs │ │ └── TrackedDownloadService.cs │ ├── StabilityMatrix.Core.csproj │ ├── StabilityMatrix.Core.csproj.DotSettings │ ├── Updater/ │ │ ├── IUpdateHelper.cs │ │ ├── SignatureChecker.cs │ │ ├── UpdateHelper.cs │ │ └── UpdateStatusChangedEventArgs.cs │ └── Validators/ │ └── RequiresMatchAttribute.cs ├── StabilityMatrix.Native/ │ ├── NativeFileOperations.cs │ └── StabilityMatrix.Native.csproj ├── StabilityMatrix.Native.Abstractions/ │ ├── INativeRecycleBinProvider.cs │ ├── NativeFileOperationFlags.cs │ └── StabilityMatrix.Native.Abstractions.csproj ├── StabilityMatrix.Native.Windows/ │ ├── AssemblyInfo.cs │ ├── FileOperations/ │ │ └── FileOperationWrapper.cs │ ├── GlobalUsings.cs │ ├── Interop/ │ │ ├── ComReleaser.cs │ │ ├── FileOperationFlags.cs │ │ ├── FileOperationProgressSinkTcs.cs │ │ ├── IFileOperation.cs │ │ ├── IFileOperationProgressSink.cs │ │ ├── IShellItem.cs │ │ ├── IShellItemArray.cs │ │ └── SIGDN.cs │ ├── NativeRecycleBinProvider.cs │ └── StabilityMatrix.Native.Windows.csproj ├── StabilityMatrix.Native.macOS/ │ ├── AssemblyInfo.cs │ ├── NativeRecycleBinProvider.cs │ └── StabilityMatrix.Native.macOS.csproj ├── StabilityMatrix.Tests/ │ ├── Avalonia/ │ │ ├── CheckpointFileViewModelTests.cs │ │ ├── Converters/ │ │ │ └── NullableDefaultNumericConverterTests.cs │ │ ├── DesignDataTests.cs │ │ ├── FileNameFormatProviderTests.cs │ │ ├── FileNameFormatTests.cs │ │ ├── LoadableViewModelBaseTests.cs │ │ ├── PromptTests.cs │ │ └── UpdateViewModelTests.cs │ ├── Core/ │ │ ├── AnsiParserTests.cs │ │ ├── AsyncStreamReaderTests.cs │ │ ├── DefaultUnknownEnumConverterTests.cs │ │ ├── FileSystemPathTests.cs │ │ ├── GlobalEncryptedSerializerTests.cs │ │ ├── ModelIndexServiceTests.cs │ │ ├── PipInstallArgsTests.cs │ │ ├── PipShowResultsTests.cs │ │ └── ServiceProviderExtensionsTests.cs │ ├── Helper/ │ │ ├── EventManagerTests.cs │ │ ├── ImageProcessorTests.cs │ │ └── PackageFactoryTests.cs │ ├── Models/ │ │ ├── GenerationParametersTests.cs │ │ ├── InstalledPackageTests.cs │ │ ├── LocalModelFileTests.cs │ │ ├── Packages/ │ │ │ ├── PackageHelper.cs │ │ │ ├── PackageLinkTests.cs │ │ │ └── SharedFolderConfigHelperTests.cs │ │ ├── ProcessArgsTests.cs │ │ ├── SafetensorMetadataTests.cs │ │ └── SharedFoldersTests.cs │ ├── Native/ │ │ └── NativeRecycleBinProviderTests.cs │ ├── ReparsePoints/ │ │ └── JunctionTests.cs │ ├── StabilityMatrix.Tests.csproj │ ├── TempFiles.cs │ └── Usings.cs ├── StabilityMatrix.UITests/ │ ├── Attributes/ │ │ └── TestPriorityAttribute.cs │ ├── Extensions/ │ │ ├── VisualExtensions.cs │ │ └── WindowExtensions.cs │ ├── MainWindowTests.cs │ ├── ModelBrowser/ │ │ └── CivitAiBrowserTests.cs │ ├── ModuleInit.cs │ ├── PriorityOrderer.cs │ ├── Snapshots/ │ │ ├── MainWindowTests.MainWindowViewModel_ShouldOk.verified.txt │ │ └── MainWindowTests.MainWindow_ShouldOpen.verified.txt │ ├── StabilityMatrix.UITests.csproj │ ├── TempDirFixture.cs │ ├── TestAppBuilder.cs │ ├── TestBase.cs │ ├── Usings.cs │ ├── VerifyConfig.cs │ └── WaitHelper.cs ├── StabilityMatrix.sln ├── StabilityMatrix.sln.DotSettings ├── Tools/ │ ├── ConvertAttributes.csx │ └── add_resx_strings.py ├── analyzers/ │ ├── StabilityMatrix.Analyzers/ │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── StabilityMatrix.Analyzers.csproj │ │ └── ViewModelControlConventionAnalyzer.cs │ └── StabilityMatrix.Analyzers.CodeFixes/ │ ├── ControlMustInheritBaseFixProvider.cs │ ├── DocumentEditorExtensions.cs │ ├── MissingViewAttributeFixProvider.cs │ └── StabilityMatrix.Analyzers.CodeFixes.csproj └── global.json
Showing preview only (598K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5812 symbols across 1218 files)
FILE: Avalonia.Gif/BgWorkerCommand.cs
type BgWorkerCommand (line 3) | internal enum BgWorkerCommand
FILE: Avalonia.Gif/BgWorkerState.cs
type BgWorkerState (line 3) | internal enum BgWorkerState
FILE: Avalonia.Gif/Decoding/BlockTypes.cs
type BlockTypes (line 3) | internal enum BlockTypes
FILE: Avalonia.Gif/Decoding/ExtensionType.cs
type ExtensionType (line 3) | internal enum ExtensionType
FILE: Avalonia.Gif/Decoding/FrameDisposal.cs
type FrameDisposal (line 3) | public enum FrameDisposal
FILE: Avalonia.Gif/Decoding/GifColor.cs
type GifColor (line 5) | [StructLayout(LayoutKind.Explicit)]
method GifColor (line 28) | public GifColor(byte r, byte g, byte b, byte a = byte.MaxValue)
FILE: Avalonia.Gif/Decoding/GifDecoder.cs
class GifDecoder (line 25) | public sealed class GifDecoder : IDisposable
method GifDecoder (line 69) | public GifDecoder(Stream fileStream, CancellationToken currentCtsToken)
method Dispose (line 102) | public void Dispose()
method PixCoord (line 114) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method ClearImage (line 119) | private void ClearImage()
method RenderFrame (line 128) | public void RenderFrame(int fIndex, WriteableBitmap writeableBitmap, b...
method RenderFrameAt (line 166) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method DrawFrame (line 191) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method DisposePreviousFrame (line 253) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method ClearArea (line 275) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method DecompressFrameToIndexBuffer (line 286) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method WriteBackBufToFb (line 419) | private void WriteBackBufToFb(IntPtr targetPointer)
method ProcessHeaderData (line 443) | [MemberNotNull(nameof(Header))]
method ProcessColorTable (line 479) | private static GifColor[] ProcessColorTable(ref Stream stream, byte[] ...
method ProcessScreenDescriptor (line 506) | private void ProcessScreenDescriptor(byte[] tempBuf)
method ProcessFrameData (line 524) | private void ProcessFrameData()
method ProcessImageDescriptor (line 576) | private void ProcessImageDescriptor(ref int curFrame, byte[] tempBuf)
method ProcessExtensions (line 615) | private void ProcessExtensions(ref int curFrame, byte[] tempBuf)
FILE: Avalonia.Gif/Decoding/GifFrame.cs
class GifFrame (line 5) | public class GifFrame
FILE: Avalonia.Gif/Decoding/GifHeader.cs
class GifHeader (line 6) | public class GifHeader
FILE: Avalonia.Gif/Decoding/GifRect.cs
type GifRect (line 3) | public readonly struct GifRect
method GifRect (line 11) | public GifRect(int x, int y, int width, int height)
method Equals (line 30) | public override bool Equals(object obj)
method GetHashCode (line 38) | public override int GetHashCode()
FILE: Avalonia.Gif/Decoding/GifRepeatBehavior.cs
class GifRepeatBehavior (line 3) | public class GifRepeatBehavior
FILE: Avalonia.Gif/Decoding/InvalidGifStreamException.cs
class InvalidGifStreamException (line 6) | [Serializable]
method InvalidGifStreamException (line 9) | public InvalidGifStreamException() { }
method InvalidGifStreamException (line 11) | public InvalidGifStreamException(string message)
method InvalidGifStreamException (line 14) | public InvalidGifStreamException(string message, Exception innerExcept...
FILE: Avalonia.Gif/Decoding/LzwDecompressionException.cs
class LzwDecompressionException (line 6) | [Serializable]
method LzwDecompressionException (line 9) | public LzwDecompressionException() { }
method LzwDecompressionException (line 11) | public LzwDecompressionException(string message)
method LzwDecompressionException (line 14) | public LzwDecompressionException(string message, Exception innerExcept...
FILE: Avalonia.Gif/Extensions/StreamExtensions.cs
class StreamExtensions (line 8) | [DebuggerStepThrough]
method SpanToShort (line 11) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method Skip (line 14) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method ReadBlock (line 23) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method SkipBlocks (line 43) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method ReadUShortS (line 63) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method ReadByteS (line 73) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
FILE: Avalonia.Gif/GifImage.cs
class GifImage (line 14) | public class GifImage : Control
method OnPropertyChanged (line 48) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method IterationCountChanged (line 110) | private static void IterationCountChanged(AvaloniaPropertyChangedEvent...
method OnAttachedToVisualTree (line 119) | protected override void OnAttachedToVisualTree(VisualTreeAttachmentEve...
method Update (line 138) | private void Update()
class CustomVisualHandler (line 163) | private class CustomVisualHandler : CompositionCustomVisualHandler
method OnMessage (line 173) | public override void OnMessage(object message)
method OnAnimationFrameUpdate (line 192) | public override void OnAnimationFrameUpdate()
method OnRender (line 200) | public override void OnRender(ImmediateDrawingContext drawingContext)
method MeasureOverride (line 236) | protected override Size MeasureOverride(Size availableSize)
method ArrangeOverride (line 253) | protected override Size ArrangeOverride(Size finalSize)
method SourceChanged (line 263) | private void SourceChanged(AvaloniaPropertyChangedEventArgs e)
method UpdateGifInstance (line 286) | private void UpdateGifInstance(object source)
FILE: Avalonia.Gif/GifInstance.cs
class GifInstance (line 15) | public class GifInstance : IGifInstance
method GifInstance (line 29) | internal GifInstance(object newValue)
method GifInstance (line 40) | public GifInstance(string uri)
method GifInstance (line 43) | public GifInstance(Uri uri)
method GifInstance (line 46) | public GifInstance(Stream currentStream)
method GetStreamFromString (line 93) | private static Stream GetStreamFromString(string str)
method GetStreamFromUri (line 103) | private static Stream GetStreamFromUri(Uri uri)
method Dispose (line 119) | public void Dispose()
method ProcessFrameTime (line 128) | public WriteableBitmap? ProcessFrameTime(TimeSpan stopwatchElapsed)
method ProcessFrameIndex (line 155) | internal WriteableBitmap ProcessFrameIndex(int frameIndex)
FILE: Avalonia.Gif/IGifInstance.cs
type IGifInstance (line 6) | public interface IGifInstance : IDisposable
method ProcessFrameTime (line 14) | WriteableBitmap? ProcessFrameTime(TimeSpan stopwatchElapsed);
FILE: Avalonia.Gif/InvalidGifStreamException.cs
class InvalidGifStreamException (line 3) | [Serializable]
method InvalidGifStreamException (line 6) | public InvalidGifStreamException() { }
method InvalidGifStreamException (line 8) | public InvalidGifStreamException(string message)
method InvalidGifStreamException (line 11) | public InvalidGifStreamException(string message, Exception innerExcept...
FILE: Avalonia.Gif/WebpInstance.cs
class WebpInstance (line 8) | public class WebpInstance : IGifInstance
method WebpInstance (line 23) | internal WebpInstance(object newValue)
method WebpInstance (line 34) | public WebpInstance(string uri)
method WebpInstance (line 37) | public WebpInstance(Uri uri)
method WebpInstance (line 40) | public WebpInstance(Stream currentStream)
method RenderFrame (line 83) | private static void RenderFrame(SKCodec codec, WriteableBitmap targetB...
method RenderFrame (line 98) | private static void RenderFrame(SKCodec codec, WriteableBitmap targetB...
method GetStreamFromString (line 113) | private static Stream GetStreamFromString(string str)
method GetStreamFromUri (line 123) | private static Stream GetStreamFromUri(Uri uri)
method Dispose (line 148) | public void Dispose()
method ProcessFrameTime (line 158) | public WriteableBitmap? ProcessFrameTime(TimeSpan stopwatchElapsed)
method ProcessFrameIndex (line 185) | internal WriteableBitmap ProcessFrameIndex(int frameIndex)
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Controls/LogViewerControl.axaml.cs
class LogViewerControl (line 9) | public partial class LogViewerControl : UserControl
method LogViewerControl (line 11) | public LogViewerControl() => InitializeComponent();
method OnDataContextChanged (line 16) | protected override void OnDataContextChanged(EventArgs e)
method OnCollectionChanged (line 27) | private void OnCollectionChanged(object? sender, NotifyCollectionChang...
method OnLayoutUpdated (line 35) | protected void OnLayoutUpdated(object? sender, EventArgs e)
method OnDetachedFromLogicalTree (line 44) | protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmen...
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Converters/ChangeColorTypeConverter.cs
class ChangeColorTypeConverter (line 8) | public class ChangeColorTypeConverter : IValueConverter
method Convert (line 10) | public object Convert(object? value, Type targetType, object? paramete...
method ConvertBack (line 21) | public object ConvertBack(
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Converters/EventIdConverter.cs
class EventIdConverter (line 7) | public class EventIdConverter : IValueConverter
method Convert (line 9) | public object Convert(object? value, Type targetType, object? paramete...
method ConvertBack (line 20) | public object ConvertBack(
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Extensions/LoggerExtensions.cs
class LoggerExtensions (line 5) | public static class LoggerExtensions
method Emit (line 7) | public static void Emit(
method TestPattern (line 50) | public static void TestPattern(this ILogger logger, EventId eventId)
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Logging/DataStoreLoggerConfiguration.cs
class DataStoreLoggerConfiguration (line 6) | public class DataStoreLoggerConfiguration
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Logging/ILogDataStore.cs
type ILogDataStore (line 5) | public interface ILogDataStore
method AddEntry (line 8) | void AddEntry(LogModel logModel);
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Logging/ILogDataStoreImpl.cs
type ILogDataStoreImpl (line 3) | public interface ILogDataStoreImpl
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Logging/LogDataStore.cs
class LogDataStore (line 6) | public class LogDataStore : ILogDataStore
method AddEntry (line 24) | public virtual void AddEntry(LogModel logModel)
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Logging/LogEntryColor.cs
class LogEntryColor (line 5) | public class LogEntryColor
method LogEntryColor (line 7) | public LogEntryColor() { }
method LogEntryColor (line 9) | public LogEntryColor(Color foreground, Color background)
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/Logging/LogModel.cs
class LogModel (line 5) | public class LogModel
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/ViewModels/LogViewerControlViewModel.cs
class LogViewerControlViewModel (line 5) | public class LogViewerControlViewModel : ViewModel, ILogDataStoreImpl
method LogViewerControlViewModel (line 9) | public LogViewerControlViewModel(ILogDataStore dataStore)
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/ViewModels/ObservableObject.cs
class ObservableObject (line 6) | public class ObservableObject : INotifyPropertyChanged
method Set (line 8) | protected bool Set<TValue>(
method OnPropertyChanged (line 24) | protected virtual void OnPropertyChanged([CallerMemberName] string? pr...
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Core/ViewModels/ViewModel.cs
class ViewModel (line 3) | public class ViewModel
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/DataStoreLoggerTarget.cs
class DataStoreLoggerTarget (line 10) | [Target("DataStoreLogger")]
method InitializeTarget (line 22) | protected override void InitializeTarget()
method Write (line 41) | protected override void Write(LogEventInfo logEvent)
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Extensions/ServicesExtension.cs
class ServicesExtension (line 13) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method AddLogViewer (line 16) | public static IServiceCollection AddLogViewer(this IServiceCollection ...
method AddLogViewer (line 24) | public static IServiceCollection AddLogViewer(
method AddNLogTargets (line 36) | public static ILoggingBuilder AddNLogTargets(
method AddNLogTargets (line 65) | public static ILoggingBuilder AddNLogTargets(
FILE: StabilityMatrix.Avalonia.Diagnostics/LogViewer/Logging/LogDataStore.cs
class LogDataStore (line 5) | public class LogDataStore : Core.Logging.LogDataStore
method AddEntry (line 9) | public override async void AddEntry(Core.Logging.LogModel logModel) =>
FILE: StabilityMatrix.Avalonia.Diagnostics/ViewModels/LogWindowViewModel.cs
class LogWindowViewModel (line 6) | public class LogWindowViewModel
method LogWindowViewModel (line 10) | public LogWindowViewModel(LogViewerControlViewModel logViewer)
method FromServiceProvider (line 15) | public static LogWindowViewModel FromServiceProvider(IServiceProvider ...
FILE: StabilityMatrix.Avalonia.Diagnostics/Views/LogWindow.axaml.cs
class LogWindow (line 8) | public partial class LogWindow : Window
method LogWindow (line 10) | public LogWindow()
method Attach (line 15) | public static IDisposable Attach(TopLevel root, IServiceProvider servi...
method Attach (line 20) | public static IDisposable Attach(
FILE: StabilityMatrix.Avalonia/Animations/BaseTransitionInfo.cs
class BaseTransitionInfo (line 6) | public abstract class BaseTransitionInfo : NavigationTransitionInfo
FILE: StabilityMatrix.Avalonia/Animations/BetterDrillInNavigationTransition.cs
class BetterDrillInNavigationTransition (line 11) | public class BetterDrillInNavigationTransition : BaseTransitionInfo
method RunAnimation (line 20) | public override async void RunAnimation(Animatable ctrl, CancellationT...
FILE: StabilityMatrix.Avalonia/Animations/BetterEntranceNavigationTransition.cs
class BetterEntranceNavigationTransition (line 11) | public class BetterEntranceNavigationTransition : BaseTransitionInfo
method RunAnimation (line 25) | public override async void RunAnimation(Animatable ctrl, CancellationT...
FILE: StabilityMatrix.Avalonia/Animations/BetterSlideNavigationTransition.cs
class BetterSlideNavigationTransition (line 12) | public class BetterSlideNavigationTransition : BaseTransitionInfo
method RunAnimation (line 36) | public override async void RunAnimation(Animatable ctrl, CancellationT...
FILE: StabilityMatrix.Avalonia/Animations/ItemsRepeaterArrangeAnimation.cs
class ItemsRepeaterArrangeAnimation (line 8) | public class ItemsRepeaterArrangeAnimation : AvaloniaObject
method ItemsRepeaterArrangeAnimation (line 16) | static ItemsRepeaterArrangeAnimation()
method OnEnableItemsArrangeAnimationChanged (line 23) | private static void OnEnableItemsArrangeAnimationChanged(
method CreateAnimation (line 39) | private static void CreateAnimation(Visual item)
method OnElementPrepared (line 63) | private static void OnElementPrepared(object? sender, ItemsRepeaterEle...
method OnElementIndexChanged (line 74) | private static void OnElementIndexChanged(
method GetEnableItemsArrangeAnimation (line 98) | public static bool GetEnableItemsArrangeAnimation(ItemsRepeater element)
method SetEnableItemsArrangeAnimation (line 103) | public static void SetEnableItemsArrangeAnimation(ItemsRepeater elemen...
FILE: StabilityMatrix.Avalonia/App.axaml.cs
class App (line 82) | public sealed class App : Application
method Initialize (line 135) | public override void Initialize()
method OnFrameworkInitializationCompleted (line 148) | public override void OnFrameworkInitializationCompleted()
method SetFontFamily (line 219) | private void SetFontFamily(FontFamily fontFamily)
method GetPlatformDefaultFontFamily (line 227) | public FontFamily GetPlatformDefaultFontFamily()
method Setup (line 293) | private void Setup()
method ShowMainWindow (line 311) | private void ShowMainWindow()
method ConfigureServiceProvider (line 330) | [MemberNotNull(nameof(serviceProvider))]
method ConfigurePageViewModels (line 369) | internal static void ConfigurePageViewModels(IServiceCollection services)
method ConfigureServices (line 399) | [MemberNotNull(nameof(Config))]
method Shutdown (line 830) | public static void Shutdown(int exitCode = 0)
method OnShutdownRequested (line 858) | private void OnShutdownRequested(object? sender, ShutdownRequestedEven...
method OnApplicationLifetimeExit (line 924) | private void OnApplicationLifetimeExit(object? sender, ControlledAppli...
method OnExit (line 931) | private void OnExit(object? sender, EventArgs _)
method OnServiceProviderDisposing (line 976) | private static void OnServiceProviderDisposing(ServiceProvider service...
method TaskScheduler_UnobservedTaskException (line 991) | private static void TaskScheduler_UnobservedTaskException(
method OnActivated (line 1021) | private static async void OnActivated(object? sender, ActivatedEventAr...
method ConfigureLogging (line 1048) | private static LoggingConfiguration ConfigureLogging()
method DebugSaveScreenshot (line 1159) | [Conditional("DEBUG")]
method ConditionalAddLogViewer (line 1218) | [Conditional("SM_LOG_WINDOW")]
method ConditionalAddLogViewerNLog (line 1226) | [Conditional("SM_LOG_WINDOW")]
FILE: StabilityMatrix.Avalonia/Assets.cs
class Assets (line 12) | internal static class Assets
method FindAssets (line 165) | public static IEnumerable<(AvaloniaResource resource, string relativeP...
FILE: StabilityMatrix.Avalonia/Assets/sitecustomize.py
function send_apc (line 18) | def send_apc(msg: str):
function send_apc_json (line 24) | def send_apc_json(type: str, data: str):
function send_apc_input (line 28) | def send_apc_input(prompt: str):
function audit (line 32) | def audit(event: str, *args):
function _patch_rich_console (line 57) | def _patch_rich_console():
function _patch_tqdm (line 89) | def _patch_tqdm():
FILE: StabilityMatrix.Avalonia/Assets/win-x64/venv/__init__.py
class EnvBuilder (line 20) | class EnvBuilder:
method __init__ (line 46) | def __init__(self, system_site_packages=False, clear=False,
method create (line 59) | def create(self, env_dir):
method clear_directory (line 87) | def clear_directory(self, path):
method ensure_directories (line 95) | def ensure_directories(self, env_dir):
method create_configuration (line 166) | def create_configuration(self, context):
method symlink_or_copy (line 188) | def symlink_or_copy(self, src, dst, relative_symlinks_ok=False):
method symlink_or_copy (line 207) | def symlink_or_copy(self, src, dst, relative_symlinks_ok=False):
method setup_python (line 250) | def setup_python(self, context):
method _call_new_python (line 311) | def _call_new_python(self, context, *py_args, **kwargs):
method _setup_pip (line 326) | def _setup_pip(self, context):
method setup_scripts (line 331) | def setup_scripts(self, context):
method post_setup (line 346) | def post_setup(self, context):
method replace_variables (line 356) | def replace_variables(self, text, context):
method install_scripts (line 374) | def install_scripts(self, context, path):
method upgrade_dependencies (line 424) | def upgrade_dependencies(self, context):
function create (line 432) | def create(env_dir, system_site_packages=False, clear=False,
function main (line 440) | def main(args=None):
FILE: StabilityMatrix.Avalonia/Behaviors/ConditionalToolTipBehavior.cs
class ConditionalToolTipBehavior (line 11) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnAttached (line 25) | protected override void OnAttached()
FILE: StabilityMatrix.Avalonia/Behaviors/ResizeBehavior.cs
class ResizeBehavior (line 13) | public class ResizeBehavior : Behavior<Control>
method CoerceResizeFactor (line 57) | private static double CoerceResizeFactor(AvaloniaObject sender, double...
method OnAttached (line 90) | protected override void OnAttached()
method OnDetaching (line 100) | protected override void OnDetaching()
method OnPointerWheelChanged (line 110) | private void OnPointerWheelChanged(object? sender, PointerWheelEventAr...
method OnPropertyChanged (line 133) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method ValidateDouble (line 145) | private static bool ValidateDouble(double value)
FILE: StabilityMatrix.Avalonia/Behaviors/TextEditorCompletionBehavior.cs
class TextEditorCompletionBehavior (line 21) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnAttached (line 54) | protected override void OnAttached()
method OnDetaching (line 68) | protected override void OnDetaching()
method CreateCompletionWindow (line 76) | private CompletionWindow CreateCompletionWindow(TextArea textArea)
method InvokeManualCompletion (line 89) | [MethodImpl(MethodImplOptions.Synchronized)]
method CompletionWindow_OnClosed (line 143) | private void CompletionWindow_OnClosed(object? sender, EventArgs e)
method TextArea_TextEntered (line 158) | private void TextArea_TextEntered(object? sender, TextInputEventArgs e)
method TextArea_KeyDown (line 183) | private void TextArea_KeyDown(object? sender, KeyEventArgs e)
method HighlightTextSegment (line 195) | private void HighlightTextSegment(ISegment segment)
method IsCompletionChar (line 200) | private static bool IsCompletionChar(char c)
method IsCompletionEndChar (line 206) | private static bool IsCompletionEndChar(char c)
method GetCaretCompletionToken (line 216) | private EditorCompletionRequest? GetCaretCompletionToken()
FILE: StabilityMatrix.Avalonia/Behaviors/TextEditorToolTipBehavior.cs
class TextEditorToolTipBehavior (line 20) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnAttached (line 42) | protected override void OnAttached()
method OnDetaching (line 56) | protected override void OnDetaching()
method TextEditor_OnPointerHoverStopped (line 69) | private void TextEditor_OnPointerHoverStopped(object? sender, PointerE...
method TextEditor_OnPointerHover (line 81) | private void TextEditor_OnPointerHover(object? sender, PointerEventArg...
method GetCaretToolTipData (line 149) | private ToolTipData? GetCaretToolTipData(TextViewPosition position)
type ToolTipData (line 241) | internal record ToolTipData(ISegment Segment, string Message);
FILE: StabilityMatrix.Avalonia/Behaviors/TextEditorWeightAdjustmentBehavior.cs
class TextEditorWeightAdjustmentBehavior (line 16) | [Localizable(false)]
method OnAttached (line 67) | protected override void OnAttached()
method OnDetaching (line 78) | protected override void OnDetaching()
method TextEditor_KeyDown (line 88) | private void TextEditor_KeyDown(object? sender, KeyEventArgs e)
method HandleWeightAdjustment (line 111) | [Localizable(false)]
method GetSelectedTokenSpan (line 286) | private TextSpan? GetSelectedTokenSpan(ITokenizeLineResult result)
method GetCaretTokenSpan (line 330) | private TextSpan? GetCaretTokenSpan(ITokenizeLineResult result)
method FormatWeight (line 415) | [Localizable(false)]
FILE: StabilityMatrix.Avalonia/Collections/SearchCollection.cs
class SearchCollection (line 13) | [PublicAPI]
method SearchCollection (line 55) | public SearchCollection(
method SearchCollection (line 80) | public SearchCollection(
method ClearQuery (line 127) | public void ClearQuery()
method Dispose (line 132) | public void Dispose()
type SearchItem (line 138) | private readonly record struct SearchItem
FILE: StabilityMatrix.Avalonia/Controls/AdvancedImageBox.axaml.cs
class AdvancedImageBox (line 42) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method RaiseAndSetIfChanged (line 57) | protected bool RaiseAndSetIfChanged<T>(
method OnPropertyChanged (line 70) | protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) { }
method RaisePropertyChanged (line 80) | protected void RaisePropertyChanged([CallerMemberName] string? propert...
class ZoomLevelCollection (line 93) | public class ZoomLevelCollection : IList<int>
method ZoomLevelCollection (line 100) | public ZoomLevelCollection()
method ZoomLevelCollection (line 110) | public ZoomLevelCollection(IEnumerable<int> collection)
method Add (line 221) | public void Add(int item)
method AddRange (line 231) | public void AddRange(IEnumerable<int> collection)
method Clear (line 247) | public void Clear()
method Contains (line 257) | public bool Contains(int item)
method CopyTo (line 267) | public void CopyTo(int[] array, int arrayIndex)
method FindNearest (line 279) | public int FindNearest(int zoomLevel)
method GetEnumerator (line 300) | public IEnumerator<int> GetEnumerator()
method IndexOf (line 310) | public int IndexOf(int item)
method Insert (line 321) | public void Insert(int index, int item)
method NextZoom (line 332) | public int NextZoom(int zoomLevel, int constrainZoomLevel = 0)
method PreviousZoom (line 349) | public int PreviousZoom(int zoomLevel, int constrainZoomLevel = 0)
method Remove (line 365) | public bool Remove(int item)
method RemoveAt (line 374) | public void RemoveAt(int index)
method ToArray (line 383) | public int[] ToArray()
method GetEnumerator (line 399) | IEnumerator IEnumerable.GetEnumerator()
type SizeModes (line 414) | public enum SizeModes : byte
type MouseButtons (line 432) | [Flags]
type ZoomActions (line 444) | [Flags]
type SelectionModes (line 468) | public enum SelectionModes
method OnPropertyChanged (line 630) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method SizeModeChanged (line 971) | private void SizeModeChanged()
method GetZoomLevelToFit (line 1129) | private int GetZoomLevelToFit(IImage image)
method OnApplyTemplate (line 1305) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method TriggerRender (line 1332) | public void TriggerRender(bool renderOnlyCursorTracker = false)
method RenderBackgroundGrid (line 1350) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
method Render (line 1382) | public override void Render(DrawingContext context)
method UpdateViewPort (line 1480) | private bool UpdateViewPort()
method ScrollBarOnScroll (line 1527) | private void ScrollBarOnScroll(object? sender, ScrollEventArgs e)
method OnPointerWheelChanged (line 1546) | protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
method OnPointerPressed (line 1570) | protected override void OnPointerPressed(PointerPressedEventArgs e)
method OnPointerReleased (line 1622) | protected override void OnPointerReleased(PointerReleasedEventArgs e)
method OnPointerExited (line 1633) | protected override void OnPointerExited(PointerEventArgs e)
method OnPointerMoved (line 1658) | protected override void OnPointerMoved(PointerEventArgs e)
method OnLoaded (line 1829) | protected override void OnLoaded(RoutedEventArgs e)
method ProcessMouseZoom (line 1858) | private void ProcessMouseZoom(bool isZoomIn, Point cursorPosition) =>
method GetZoomLevel (line 1866) | private int GetZoomLevel(ZoomActions action)
method RestoreSizeMode (line 1882) | protected void RestoreSizeMode()
method PerformZoom (line 1892) | private void PerformZoom(ZoomActions action, bool preservePosition) =>
method PerformZoom (line 1895) | private void PerformZoom(ZoomActions action, bool preservePosition, Po...
method ZoomIn (line 1916) | public void ZoomIn() => ZoomIn(true);
method ZoomIn (line 1922) | public void ZoomIn(bool preservePosition)
method ZoomOut (line 1930) | public void ZoomOut() => ZoomOut(true);
method ZoomOut (line 1936) | public void ZoomOut(bool preservePosition)
method ZoomToFit (line 1944) | public void ZoomToFit()
method ZoomToRegion (line 1959) | public void ZoomToRegion(double x, double y, double width, double heig...
method ZoomToRegion (line 1972) | public void ZoomToRegion(int x, int y, int width, int height, double m...
method ZoomToRegion (line 1982) | public void ZoomToRegion(Rectangle rectangle, double margin = 0) =>
method ZoomToRegion (line 1990) | public void ZoomToRegion(Rect rectangle, double margin = 0)
method ZoomToSelectionRegion (line 2008) | public void ZoomToSelectionRegion(double margin = 0)
method PerformActualSize (line 2018) | public void PerformActualSize()
method IsRectEmpty (line 2030) | private static bool IsRectEmpty(Rect rect)
method IsPointInImage (line 2047) | public bool IsPointInImage(Point point) => GetImageViewPort().Contains...
method IsPointInImage (line 2057) | public bool IsPointInImage(int x, int y) => IsPointInImage(new Point(x...
method IsPointInImage (line 2067) | public bool IsPointInImage(double x, double y) => IsPointInImage(new P...
method PointToImage (line 2078) | public Point PointToImage(double x, double y, bool fitToBounds = true) =>
method PointToImage (line 2090) | public Point PointToImage(int x, int y, bool fitToBounds = true)
method PointToImage (line 2103) | public Point PointToImage(Point point, bool fitToBounds = true)
method GetOffsetPoint (line 2136) | public Point GetOffsetPoint(System.Drawing.Point source)
method GetOffsetPoint (line 2149) | public Point GetOffsetPoint(int x, int y)
method GetOffsetPoint (line 2160) | public Point GetOffsetPoint(double x, double y)
method GetOffsetPoint (line 2170) | public Point GetOffsetPoint(Point source)
method GetOffsetRectangle (line 2185) | public Rect GetOffsetRectangle(Rect source)
method GetOffsetRectangle (line 2203) | public Rectangle GetOffsetRectangle(int x, int y, int width, int height)
method GetOffsetRectangle (line 2216) | public Rect GetOffsetRectangle(double x, double y, double width, doubl...
method GetOffsetRectangle (line 2226) | public Rectangle GetOffsetRectangle(Rectangle source)
method FitRectangle (line 2246) | public Rectangle FitRectangle(Rectangle rectangle)
method FitRectangle (line 2286) | public Rect FitRectangle(Rect rectangle)
method ScrollTo (line 2330) | public void ScrollTo(double x, double y, double relativeX, double rela...
method ScrollTo (line 2340) | public void ScrollTo(int x, int y, int relativeX, int relativeY) =>
method ScrollTo (line 2348) | public void ScrollTo(Point imageLocation, Point relativeDisplayPoint)
method CenterAt (line 2373) | public void CenterAt(System.Drawing.Point imageLocation) =>
method CenterAt (line 2383) | public void CenterAt(Point imageLocation) =>
method CenterAt (line 2391) | public void CenterAt(int x, int y) => CenterAt(new Point(x, y));
method CenterAt (line 2398) | public void CenterAt(double x, double y) => CenterAt(new Point(x, y));
method CenterToImage (line 2403) | public void CenterToImage()
method GetScaledPoint (line 2417) | public Point GetScaledPoint(int x, int y)
method GetScaledPoint (line 2428) | public PointF GetScaledPoint(float x, float y)
method GetScaledPoint (line 2438) | public Point GetScaledPoint(Point source)
method GetScaledPoint (line 2448) | public PointF GetScaledPoint(PointF source)
method GetScaledRectangle (line 2461) | public Rect GetScaledRectangle(int x, int y, int width, int height)
method GetScaledRectangle (line 2474) | public RectangleF GetScaledRectangle(float x, float y, float width, fl...
method GetScaledRectangle (line 2485) | public Rect GetScaledRectangle(Point location, Size size)
method GetScaledRectangle (line 2496) | public RectangleF GetScaledRectangle(PointF location, SizeF size)
method GetScaledRectangle (line 2506) | public Rect GetScaledRectangle(Rect source)
method GetScaledRectangle (line 2521) | public RectangleF GetScaledRectangle(RectangleF source)
method GetScaledSize (line 2537) | public SizeF GetScaledSize(float width, float height)
method GetScaledSize (line 2548) | public Size GetScaledSize(int width, int height)
method GetScaledSize (line 2558) | public SizeF GetScaledSize(SizeF source)
method GetScaledSize (line 2568) | public Size GetScaledSize(Size source)
method SelectAll (line 2577) | public void SelectAll()
method SelectNone (line 2588) | public void SelectNone()
method GetSourceImageRegion (line 2600) | public Rect GetSourceImageRegion()
method GetImageViewPort (line 2627) | public Rect GetImageViewPort()
method LoadImage (line 2680) | public void LoadImage(string path)
method GetSelectedBitmap (line 2685) | public Bitmap? GetSelectedBitmap()
FILE: StabilityMatrix.Avalonia/Controls/AdvancedImageBoxView.axaml.cs
class AdvancedImageBoxView (line 13) | public partial class AdvancedImageBoxView : UserControl
method AdvancedImageBoxView (line 15) | public AdvancedImageBoxView()
method FlyoutCopy (line 25) | private static async Task FlyoutCopy(ImageSource? imageSource)
method FlyoutCopyAsBitmap (line 45) | private static async Task FlyoutCopyAsBitmap(ImageSource? imageSource)
FILE: StabilityMatrix.Avalonia/Controls/AppWindowBase.cs
class AppWindowBase (line 13) | [SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
method AppWindowBase (line 18) | protected AppWindowBase()
method ShowWithCts (line 22) | public void ShowWithCts(CancellationTokenSource cts)
method ShowAsync (line 29) | public Task ShowAsync()
method OnClosed (line 45) | protected override void OnClosed(EventArgs e)
method OnLoaded (line 56) | protected override void OnLoaded(RoutedEventArgs e)
method OnUnloaded (line 73) | protected override void OnUnloaded(RoutedEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/ApplicationSplashScreen.cs
class ApplicationSplashScreen (line 9) | internal class ApplicationSplashScreen : IApplicationSplashScreen
method RunTasks (line 21) | public Task RunTasks(CancellationToken cancellationToken)
FILE: StabilityMatrix.Avalonia/Controls/AutoGrid.cs
class AutoGrid (line 39) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method ColumnCountChanged (line 145) | public static void ColumnCountChanged(AvaloniaPropertyChangedEventArgs e)
method FixedColumnWidthChanged (line 168) | public static void FixedColumnWidthChanged(AvaloniaPropertyChangedEven...
method FixedRowHeightChanged (line 184) | public static void FixedRowHeightChanged(AvaloniaPropertyChangedEventA...
method RowCountChanged (line 200) | public static void RowCountChanged(AvaloniaPropertyChangedEventArgs e)
method OnChildHorizontalAlignmentChanged (line 222) | private static void OnChildHorizontalAlignmentChanged(AvaloniaProperty...
method OnChildMarginChanged (line 235) | private static void OnChildMarginChanged(AvaloniaPropertyChangedEventA...
method OnChildVerticalAlignmentChanged (line 247) | private static void OnChildVerticalAlignmentChanged(AvaloniaPropertyCh...
method ApplyChildLayout (line 259) | private void ApplyChildLayout(Control child)
method Clamp (line 278) | private int Clamp(int value, int max)
method PerformLayout (line 286) | private void PerformLayout()
method AutoGrid (line 377) | static AutoGrid()
method MeasureOverride (line 401) | protected override Size MeasureOverride(Size constraint)
FILE: StabilityMatrix.Avalonia/Controls/BetterAdvancedImage.cs
class BetterAdvancedImage (line 11) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method BetterAdvancedImage (line 40) | static BetterAdvancedImage()
method BetterAdvancedImage (line 55) | public BetterAdvancedImage(Uri? baseUri)
method BetterAdvancedImage (line 58) | public BetterAdvancedImage(IServiceProvider serviceProvider)
method Render (line 63) | public override void Render(DrawingContext context)
FILE: StabilityMatrix.Avalonia/Controls/BetterComboBox.cs
class BetterComboBox (line 16) | public class BetterComboBox : ComboBox
method BetterComboBox (line 24) | public BetterComboBox()
method OnApplyTemplate (line 60) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnTextInput (line 76) | protected override void OnTextInput(TextInputEventArgs e)
method OnInputReceived (line 92) | private void OnInputReceived(string input)
method UpdatePopupText (line 126) | private void UpdatePopupText(string text)
method ResetPopupText (line 136) | private void ResetPopupText()
method OnDetachedFromVisualTree (line 144) | protected override void OnDetachedFromVisualTree(VisualTreeAttachmentE...
FILE: StabilityMatrix.Avalonia/Controls/BetterContentDialog.cs
class BetterContentDialog (line 19) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method HideCore (line 42) | protected void HideCore()
method BetterContentDialog (line 84) | static BetterContentDialog()
method BetterContentDialog (line 197) | public BetterContentDialog()
method OnPointerPressed (line 203) | protected override void OnPointerPressed(PointerPressedEventArgs e)
method TrySetButtonCommands (line 229) | private void TrySetButtonCommands()
method TryBindButtonEvents (line 276) | private void TryBindButtonEvents()
method OnDialogButtonClick (line 298) | protected void OnDialogButtonClick(object? sender, ContentDialogResult e)
method OnDataContextChanged (line 307) | protected override void OnDataContextChanged(EventArgs e)
method OnApplyTemplate (line 315) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnLoaded (line 326) | private void OnLoaded(object? sender, RoutedEventArgs? e)
FILE: StabilityMatrix.Avalonia/Controls/BetterContextDragBehavior.cs
class BetterContextDragBehavior (line 12) | public class BetterContextDragBehavior : Behavior<Control>
method OnAttachedToVisualTree (line 75) | protected override void OnAttachedToVisualTree()
method OnDetachedFromVisualTree (line 100) | protected override void OnDetachedFromVisualTree()
method DoDragDrop (line 108) | private async Task DoDragDrop(PointerEventArgs triggerEvent, object? v...
method Released (line 135) | private void Released()
method AssociatedObject_PointerPressed (line 141) | private void AssociatedObject_PointerPressed(object? sender, PointerPr...
method AssociatedObject_PointerReleased (line 156) | private void AssociatedObject_PointerReleased(object? sender, PointerR...
method AssociatedObject_PointerMoved (line 169) | private async void AssociatedObject_PointerMoved(object? sender, Point...
method AssociatedObject_CaptureLost (line 203) | private void AssociatedObject_CaptureLost(object? sender, PointerCaptu...
FILE: StabilityMatrix.Avalonia/Controls/BetterDownloadableComboBox.cs
class BetterDownloadableComboBox (line 15) | public partial class BetterDownloadableComboBox : BetterComboBox
method BetterDownloadableComboBox (line 19) | static BetterDownloadableComboBox()
method OnSelectionChanged (line 26) | protected virtual void OnSelectionChanged(SelectionChangedEventArgs e)
method PromptDownloadAsync (line 51) | [RelayCommand]
FILE: StabilityMatrix.Avalonia/Controls/BetterFlyout.cs
class BetterFlyout (line 9) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnOpened (line 30) | protected override void OnOpened()
FILE: StabilityMatrix.Avalonia/Controls/BetterImage.cs
class BetterImage (line 13) | public class BetterImage : Control
method BetterImage (line 35) | static BetterImage()
method Render (line 78) | public sealed override void Render(DrawingContext context)
method MeasureOverride (line 131) | protected override Size MeasureOverride(Size availableSize)
method ArrangeOverride (line 145) | protected override Size ArrangeOverride(Size finalSize)
method OnCreateAutomationPeer (line 161) | protected override AutomationPeer OnCreateAutomationPeer()
FILE: StabilityMatrix.Avalonia/Controls/BetterMarkdownScrollViewer.cs
class BetterMarkdownScrollViewer (line 9) | public class BetterMarkdownScrollViewer : MarkdownScrollViewer
method BetterMarkdownScrollViewer (line 11) | public BetterMarkdownScrollViewer()
FILE: StabilityMatrix.Avalonia/Controls/Card.cs
class Card (line 8) | public class Card : ContentControl
method Card (line 28) | public Card()
method OnPropertyChanged (line 35) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method OnApplyTemplate (line 47) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/CheckerboardBorder.cs
class CheckerboardBorder (line 8) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method CheckerboardBorder (line 52) | static CheckerboardBorder()
method Render (line 60) | public override void Render(DrawingContext context)
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/CompletionData.cs
class CompletionData (line 14) | public class CompletionData : ICompletionData
method CompletionData (line 48) | public CompletionData(string text)
method CreateInlines (line 56) | private InlineCollection CreateInlines()
method Complete (line 72) | public void Complete(
method UpdateCharHighlighting (line 102) | public void UpdateCharHighlighting(string searchText)
method ResetCharHighlighting (line 138) | public void ResetCharHighlighting()
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/CompletionIcons.cs
class CompletionIcons (line 8) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method GetIconForTagType (line 47) | public static IconData? GetIconForTagType(TagType tagType)
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/CompletionList.cs
class CompletionList (line 39) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method CompletionList (line 44) | public CompletionList()
method RequestInsertion (line 104) | public void RequestInsertion(
method RequestClose (line 124) | public void RequestClose()
method OnApplyTemplate (line 129) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnKeyDown (line 177) | protected override void OnKeyDown(KeyEventArgs e)
method HandleKey (line 190) | [SuppressMessage("ReSharper", "SwitchStatementHandlesSomeKnownEnumValu...
method OnDoubleTapped (line 245) | protected void OnDoubleTapped(object? sender, RoutedEventArgs e)
method ScrollIntoView (line 290) | public void ScrollIntoView(ICompletionData item)
method SelectItem (line 316) | public void SelectItem(string text, bool fullUpdate = false)
method FilterItems (line 342) | private IReadOnlyList<ICompletionData> FilterItems(IEnumerable<IComple...
method SelectItemFilteringLive (line 361) | private void SelectItemFilteringLive(string query, bool fullUpdate = f...
method SelectItemFiltering (line 418) | private void SelectItemFiltering(string query, bool fullUpdate = false)
method SelectItemWithStart (line 489) | private void SelectItemWithStart(string query)
method SelectIndexCentered (line 541) | private void SelectIndexCentered(int index)
method SelectIndex (line 568) | private void SelectIndex(int index)
method GetMatchQuality (line 588) | private int GetMatchQuality(string itemText, string query)
method CamelCaseMatch (line 638) | private static bool CamelCaseMatch(string text, string query)
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/CompletionListBox.cs
class CompletionListBox (line 29) | public class CompletionListBox : ListBox
method OnApplyTemplate (line 33) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method ClearSelection (line 89) | public void ClearSelection()
method SelectNextIndexWithLoop (line 97) | public void SelectNextIndexWithLoop()
method SelectPreviousIndexWithLoop (line 108) | public void SelectPreviousIndexWithLoop()
method SelectIndex (line 119) | public void SelectIndex(int index)
method CenterViewOn (line 135) | public void CenterViewOn(int index)
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/CompletionWindow.axaml.cs
class CompletionWindow (line 37) | public class CompletionWindow : CompletionWindowBase
method CompletionWindow (line 65) | public CompletionWindow(
method OnClosed (line 105) | protected override void OnClosed()
method CompletionList_SelectionChanged (line 119) | private void CompletionList_SelectionChanged(object? sender, Selection...
method CompletionList_InsertionRequested (line 166) | private void CompletionList_InsertionRequested(object? sender, Inserti...
method CompletionList_CloseRequested (line 181) | private void CompletionList_CloseRequested(object? sender, EventArgs e)
method AttachEvents (line 186) | private void AttachEvents()
method DetachEvents (line 197) | protected override void DetachEvents()
method OnKeyDown (line 209) | protected override void OnKeyDown(KeyEventArgs e)
method TextArea_PreviewTextInput (line 218) | private void TextArea_PreviewTextInput(object? sender, TextInputEventA...
method TextArea_MouseWheel (line 228) | private void TextArea_MouseWheel(object? sender, PointerWheelEventArgs e)
method GetScrollEventTarget (line 233) | private Control GetScrollEventTarget()
method CaretPositionChanged (line 257) | private void CaretPositionChanged(object? sender, EventArgs e)
method UpdateQuery (line 310) | public void UpdateQuery(TextCompletionRequest completionRequest)
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/CompletionWindowBase.cs
class CompletionWindowBase (line 41) | [SuppressMessage("ReSharper", "MemberCanBeProtected.Global")]
method CompletionWindowBase (line 75) | public CompletionWindowBase(TextArea textArea)
method OnClosed (line 99) | protected virtual void OnClosed()
method Initialize (line 104) | private void Initialize()
method Show (line 116) | public void Show()
method Hide (line 125) | public void Hide()
method AttachEvents (line 133) | private void AttachEvents()
method DetachEvents (line 167) | protected virtual void DetachEvents()
class InputHandler (line 195) | private sealed class InputHandler : TextAreaStackedInputHandler
method InputHandler (line 199) | public InputHandler(CompletionWindowBase window)
method Detach (line 206) | public override void Detach()
method OnPreviewKeyDown (line 212) | public override void OnPreviewKeyDown(KeyEventArgs e)
method OnPreviewKeyUp (line 221) | public override void OnPreviewKeyUp(KeyEventArgs e)
method TextViewScrollOffsetChanged (line 231) | private void TextViewScrollOffsetChanged(object? sender, EventArgs e)
method TextAreaDocumentChanged (line 246) | private void TextAreaDocumentChanged(object? sender, EventArgs e)
method TextAreaLostFocus (line 251) | private void TextAreaLostFocus(object? sender, RoutedEventArgs e)
method ParentWindow_Deactivated (line 256) | private void ParentWindow_Deactivated(object? sender, EventArgs e)
method ParentWindow_LocationChanged (line 261) | private void ParentWindow_LocationChanged(object? sender, EventArgs e)
method RaiseEventPair (line 282) | protected static bool RaiseEventPair(Control target, RoutedEvent? prev...
method OnMouseUp (line 299) | private void OnMouseUp(object? sender, PointerReleasedEventArgs e)
method ActivateParentWindow (line 307) | protected virtual void ActivateParentWindow()
method CloseIfFocusLost (line 312) | private void CloseIfFocusLost()
method OnKeyDown (line 340) | protected override void OnKeyDown(KeyEventArgs e)
method SetPosition (line 356) | protected void SetPosition(TextViewPosition position)
method UpdatePosition (line 370) | protected void UpdatePosition()
method TextArea_Document_Changing (line 398) | protected virtual void TextArea_Document_Changing(object? sender, Docu...
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/ICompletionData.cs
type ICompletionData (line 35) | public interface ICompletionData
method Complete (line 94) | void Complete(
method UpdateCharHighlighting (line 104) | void UpdateCharHighlighting(string searchText);
method ResetCharHighlighting (line 109) | void ResetCharHighlighting();
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/InsertionRequestEventArgs.cs
class InsertionRequestEventArgs (line 6) | public class InsertionRequestEventArgs : EventArgs
FILE: StabilityMatrix.Avalonia/Controls/CodeCompletion/PopupWithCustomPosition.cs
class PopupWithCustomPosition (line 6) | internal class PopupWithCustomPosition : Popup
FILE: StabilityMatrix.Avalonia/Controls/ComfyUpscalerTemplateSelector.cs
class ComfyUpscalerTemplateSelector (line 11) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method Match (line 19) | public bool Match(object? data)
method Build (line 25) | public Control Build(object? data)
FILE: StabilityMatrix.Avalonia/Controls/DataTemplateSelector.cs
class DataTemplateSelector (line 14) | [PublicAPI]
method Match (line 26) | public bool Match(object? data) => data is ITemplateKey<TKey>;
method Build (line 29) | public Control Build(object? data)
FILE: StabilityMatrix.Avalonia/Controls/Dock/DockUserControlBase.cs
class DockUserControlBase (line 22) | public abstract class DockUserControlBase : DropTargetUserControlBase
method OnApplyTemplate (line 31) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnAttachedToVisualTree (line 49) | protected override void OnAttachedToVisualTree(VisualTreeAttachmentEve...
method OnDetachedFromVisualTree (line 62) | protected override void OnDetachedFromVisualTree(VisualTreeAttachmentE...
method DataContext_OnSaveViewStateRequested (line 74) | private void DataContext_OnSaveViewStateRequested(object? sender, Save...
method DataContext_OnLoadViewStateRequested (line 87) | private void DataContext_OnLoadViewStateRequested(object? sender, Load...
method LoadDockLayout (line 101) | private void LoadDockLayout(JsonObject data)
method LoadDockLayout (line 106) | private void LoadDockLayout(string data)
method RestoreDockLayout (line 118) | private void RestoreDockLayout()
method SaveDockLayout (line 127) | protected string? SaveDockLayout()
FILE: StabilityMatrix.Avalonia/Controls/DropTargetTemplatedControlBase.cs
class DropTargetTemplatedControlBase (line 6) | public abstract class DropTargetTemplatedControlBase : TemplatedControlBase
method DropTargetTemplatedControlBase (line 8) | protected DropTargetTemplatedControlBase()
method DragOverHandler (line 16) | protected virtual void DragOverHandler(object? sender, DragEventArgs e)
method DropHandler (line 24) | protected virtual void DropHandler(object? sender, DragEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/DropTargetUserControlBase.cs
class DropTargetUserControlBase (line 6) | public abstract class DropTargetUserControlBase : UserControlBase
method DropTargetUserControlBase (line 8) | protected DropTargetUserControlBase()
method DragOverHandler (line 16) | private void DragOverHandler(object? sender, DragEventArgs e)
method DropHandler (line 24) | private void DropHandler(object? sender, DragEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/EditorCommands.cs
class EditorCommands (line 6) | public static class EditorCommands
FILE: StabilityMatrix.Avalonia/Controls/FADownloadableComboBox.cs
class FADownloadableComboBox (line 21) | public partial class FADownloadableComboBox : FAComboBox
method OnApplyTemplate (line 28) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnDropDownOpenedHandler (line 43) | private void OnDropDownOpenedHandler(object? sender, EventArgs e)
method OnDropDownClosedHandler (line 74) | private void OnDropDownClosedHandler(object? sender, EventArgs e)
method CleanupSubscription (line 79) | private void CleanupSubscription()
method FADownloadableComboBox (line 85) | static FADownloadableComboBox()
method OnSelectionChanged (line 92) | protected virtual void OnSelectionChanged(SelectionChangedEventArgs e)
method PromptDownloadAsync (line 117) | [RelayCommand]
FILE: StabilityMatrix.Avalonia/Controls/FASymbolIconSource.cs
class FASymbolIconSource (line 13) | [TypeConverter(typeof(FASymbolIconSourceConverter))]
method FASymbolIconSource (line 26) | public FASymbolIconSource()
method OnPropertyChanged (line 45) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method InvalidateData (line 55) | private void InvalidateData()
class FASymbolIconSourceConverter (line 68) | public class FASymbolIconSourceConverter : TypeConverter
method CanConvertFrom (line 70) | public override bool CanConvertFrom(ITypeDescriptorContext? context, T...
method ConvertFrom (line 79) | public override object? ConvertFrom(
FILE: StabilityMatrix.Avalonia/Controls/FrameCarousel.axaml.cs
class FrameCarousel (line 16) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnApplyTemplate (line 67) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 82) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method Next (line 125) | public void Next()
method Previous (line 136) | public void Previous()
class FrameNavigationFactory (line 144) | internal class FrameNavigationFactory : INavigationPageFactory
method FrameNavigationFactory (line 148) | public FrameNavigationFactory(Type sourcePageType)
method GetPage (line 154) | public Control GetPage(Type srcType)
method GetPageFromObject (line 160) | public Control GetPageFromObject(object target)
FILE: StabilityMatrix.Avalonia/Controls/GitVersionSelector.axaml.cs
class GitVersionSelector (line 19) | [Localizable(false)]
method OnLoaded (line 184) | protected override void OnLoaded(RoutedEventArgs e)
method OnPropertyChanged (line 201) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method PopulateBranches (line 212) | [RelayCommand]
method PopulateCommitsForCurrentBranch (line 223) | [RelayCommand]
method PopulateTags (line 249) | [RelayCommand]
type SelectionMode (line 260) | public enum SelectionMode
FILE: StabilityMatrix.Avalonia/Controls/HybridModelTemplateSelector.cs
class HybridModelTemplateSelector (line 11) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method Match (line 19) | public bool Match(object? data)
method Build (line 25) | public Control Build(object? data)
FILE: StabilityMatrix.Avalonia/Controls/HyperlinkIconButton.cs
class HyperlinkIconButton (line 17) | public class HyperlinkIconButton : Button
method OnPropertyChanged (line 54) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method OnClick (line 70) | protected override void OnClick()
method RegisterContentPresenter (line 117) | protected override bool RegisterContentPresenter(ContentPresenter pres...
FILE: StabilityMatrix.Avalonia/Controls/ImageLoaders.cs
class ImageLoaders (line 13) | [Localizable(false)]
FILE: StabilityMatrix.Avalonia/Controls/Inference/BatchSizeCard.axaml.cs
class BatchSizeCard (line 6) | [RegisterTransient<BatchSizeCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/CfzCudnnToggleCard.axaml.cs
class CfzCudnnToggleCard (line 5) | [RegisterTransient<CfzCudnnToggleCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/ControlNetCard.axaml.cs
class ControlNetCard (line 6) | [RegisterTransient<ControlNetCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/DiscreteModelSamplingCard.axaml.cs
class DiscreteModelSamplingCard (line 6) | [RegisterTransient<DiscreteModelSamplingCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/ExtraNetworkCard.axaml.cs
class ExtraNetworkCard (line 6) | [RegisterTransient<ExtraNetworkCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/FaceDetailerCard.axaml.cs
class FaceDetailerCard (line 6) | [RegisterTransient<FaceDetailerCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/FreeUCard.axaml.cs
class FreeUCard (line 6) | [RegisterTransient<FreeUCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/ImageFolderCard.axaml.cs
class ImageFolderCard (line 10) | [RegisterTransient<ImageFolderCard>]
method OnApplyTemplate (line 15) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method DropHandler (line 22) | protected override void DropHandler(object? sender, DragEventArgs e)
method DragOverHandler (line 29) | protected override void DragOverHandler(object? sender, DragEventArgs e)
method OnPointerWheelChanged (line 35) | protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/Inference/ImageGalleryCard.axaml.cs
class ImageGalleryCard (line 6) | [RegisterTransient<ImageGalleryCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/LayerDiffuseCard.axaml.cs
class LayerDiffuseCard (line 6) | [RegisterTransient<LayerDiffuseCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/ModelCard.axaml.cs
class ModelCard (line 6) | [RegisterTransient<ModelCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/NrsCard.axaml.cs
class NrsCard (line 5) | [RegisterTransient<NrsCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/PlasmaNoiseCard.axaml.cs
class PlasmaNoiseCard (line 5) | [RegisterTransient<PlasmaNoiseCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/PromptCard.axaml.cs
class PromptCard (line 15) | [RegisterTransient<PromptCard>]
method OnApplyTemplate (line 19) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method InitializeEditors (line 27) | private static void InitializeEditors(TemplateAppliedEventArgs e)
method FixGrids (line 65) | private void FixGrids(TemplateAppliedEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/Inference/PromptExpansionCard.axaml.cs
class PromptExpansionCard (line 6) | [RegisterTransient<PromptExpansionCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/RescaleCfgCard.axaml.cs
class RescaleCfgCard (line 8) | [RegisterTransient<RescaleCfgCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/SamplerCard.axaml.cs
class SamplerCard (line 6) | [RegisterTransient<SamplerCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/SeedCard.axaml.cs
class SeedCard (line 6) | [RegisterTransient<SeedCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/SelectImageCard.axaml.cs
class SelectImageCard (line 13) | [RegisterTransient<SelectImageCard>]
method OnApplyTemplate (line 17) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/Inference/SharpenCard.axaml.cs
class SharpenCard (line 6) | [RegisterTransient<SharpenCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/StackCard.axaml.cs
class StackCard (line 8) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
FILE: StabilityMatrix.Avalonia/Controls/Inference/StackEditableCard.axaml.cs
class StackEditableCard (line 16) | [PseudoClasses(":editEnabled")]
method OnApplyTemplate (line 35) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnLoaded (line 61) | protected override void OnLoaded(RoutedEventArgs e)
method UpdatePseudoClasses (line 68) | private void UpdatePseudoClasses(bool editEnabled)
method OnPropertyChanged (line 76) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method GetAddButtonFlyout (line 86) | private FAMenuFlyout GetAddButtonFlyout()
method GetModuleDisplayName (line 105) | private static string GetModuleDisplayName(Type moduleType)
FILE: StabilityMatrix.Avalonia/Controls/Inference/StackExpander.axaml.cs
class StackExpander (line 8) | [RegisterTransient<StackExpander>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/TiledVAECard.axaml.cs
class TiledVAECard (line 8) | [RegisterTransient<TiledVAECard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/UnetModelCard.axaml.cs
class UnetModelCard (line 6) | [RegisterTransient<UnetModelCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/UpscalerCard.axaml.cs
class UpscalerCard (line 6) | [RegisterTransient<UpscalerCard>]
FILE: StabilityMatrix.Avalonia/Controls/Inference/WanModelCard.axaml.cs
class WanModelCard (line 5) | [RegisterTransient<WanModelCard>]
FILE: StabilityMatrix.Avalonia/Controls/LaunchOptionCardTemplateSelector.cs
class LaunchOptionCardTemplateSelector (line 11) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method Match (line 21) | public bool Match(object? data)
method Build (line 27) | public Control Build(object? data)
FILE: StabilityMatrix.Avalonia/Controls/LineDashFrame.cs
class LineDashFrame (line 10) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method LineDashFrame (line 70) | public LineDashFrame()
method OnPropertyChanged (line 76) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method Render (line 93) | public override void Render(DrawingContext context)
method GetDashArray (line 108) | private IEnumerable<double> GetDashArray(double length)
FILE: StabilityMatrix.Avalonia/Controls/MarkdownViewer.axaml.cs
class MarkdownViewer (line 9) | public class MarkdownViewer : TemplatedControlBase
method ParseText (line 48) | private void ParseText(string value)
method OnApplyTemplate (line 59) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 78) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
FILE: StabilityMatrix.Avalonia/Controls/Models/GitVersionSelectorVersionType.cs
type GitVersionSelectorVersionType (line 3) | public enum GitVersionSelectorVersionType
FILE: StabilityMatrix.Avalonia/Controls/Models/PenPath.cs
type PenPath (line 8) | public readonly record struct PenPath()
FILE: StabilityMatrix.Avalonia/Controls/Models/PenPoint.cs
type PenPoint (line 6) | public readonly record struct PenPoint(ulong X, ulong Y)
FILE: StabilityMatrix.Avalonia/Controls/Models/SKLayer.cs
class SKLayer (line 6) | public class SKLayer
FILE: StabilityMatrix.Avalonia/Controls/Paginator.axaml.cs
class Paginator (line 9) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnApplyTemplate (line 107) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 159) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
FILE: StabilityMatrix.Avalonia/Controls/Painting/PaintCanvas.axaml.cs
class PaintCanvas (line 26) | public class PaintCanvas : TemplatedControlBase
method PaintCanvas (line 44) | static PaintCanvas()
method RefreshCanvas (line 49) | public void RefreshCanvas()
method OnApplyTemplate (line 55) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnDataContextChanged (line 101) | protected override void OnDataContextChanged(EventArgs e)
method OnPropertyChanged (line 129) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method OnLoaded (line 152) | protected override void OnLoaded(RoutedEventArgs e)
method HandlePointerEvent (line 159) | private void HandlePointerEvent(PointerEventArgs e)
method HandlePointerMoved (line 228) | private void HandlePointerMoved(PointerEventArgs e)
method OnPointerPressed (line 286) | protected override void OnPointerPressed(PointerPressedEventArgs e)
method OnPointerReleased (line 293) | protected override void OnPointerReleased(PointerReleasedEventArgs e)
method OnPointerMoved (line 300) | protected override void OnPointerMoved(PointerEventArgs e)
method OnKeyDown (line 307) | protected override void OnKeyDown(KeyEventArgs e)
method UpdateMainCanvasBounds (line 320) | private void UpdateMainCanvasBounds()
method UpdateCanvasCursor (line 344) | private void UpdateCanvasCursor()
method MainCanvas_OnPointerEntered (line 405) | private void MainCanvas_OnPointerEntered(object? sender, PointerEventA...
method MainCanvas_OnPointerExited (line 410) | private void MainCanvas_OnPointerExited(object? sender, PointerEventAr...
method GetRelativePosition (line 418) | private Point GetRelativePosition(Point pt, Visual? relativeTo)
method ClearCanvasAsync (line 430) | public async Task ClearCanvasAsync()
method OnRenderSkia (line 438) | private void OnRenderSkia(SKSurface surface)
FILE: StabilityMatrix.Avalonia/Controls/ProgressRing.cs
class ProgressRing (line 14) | [PseudoClasses(":preserveaspect", ":indeterminate")]
method ProgressRing (line 82) | static ProgressRing()
method ProgressRing (line 90) | public ProgressRing()
method OnApplyTemplate (line 96) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 108) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method UpdatePseudoClasses (line 125) | private void UpdatePseudoClasses(bool? isIndeterminate, bool? preserve...
method OnValuePropertyChanged (line 138) | private static void OnValuePropertyChanged(ProgressRing sender, Avalon...
method OnSweepAnglePropertyChanged (line 146) | private static void OnSweepAnglePropertyChanged(ProgressRing sender, A...
FILE: StabilityMatrix.Avalonia/Controls/PropertyGrid/BetterPropertyGrid.cs
class BetterPropertyGrid (line 14) | [PublicAPI]
method BetterPropertyGrid (line 37) | static BetterPropertyGrid()
method OnDataContextChanged (line 66) | protected override void OnDataContextChanged(EventArgs e)
method FilterExcludeCategories (line 80) | public void FilterExcludeCategories(IEnumerable<string>? excludedCateg...
method FilterIncludeCategories (line 108) | public void FilterIncludeCategories(IEnumerable<string>? includeCatego...
method SetViewModelContext (line 136) | private void SetViewModelContext(object? context)
method GetCategoryFilter (line 166) | private CheckedMaskModel GetCategoryFilter()
FILE: StabilityMatrix.Avalonia/Controls/PropertyGrid/PropertyGridCultureData.cs
class PropertyGridCultureData (line 8) | internal class PropertyGridCultureData : ICultureData
method Reload (line 11) | public bool Reload() => false;
FILE: StabilityMatrix.Avalonia/Controls/PropertyGrid/PropertyGridLocalizationService.cs
class PropertyGridLocalizationService (line 11) | internal class PropertyGridLocalizationService : MiniReactiveObject, ILo...
method GetExtraServices (line 23) | public ILocalizationService[] GetExtraServices() => Array.Empty<ILocal...
method AddExtraService (line 26) | public void AddExtraService(ILocalizationService service) { }
method RemoveExtraService (line 29) | public void RemoveExtraService(ILocalizationService service) { }
method GetCultures (line 32) | public ICultureData[] GetCultures() => new[] { CultureData };
method SelectCulture (line 35) | public void SelectCulture(string cultureName) { }
FILE: StabilityMatrix.Avalonia/Controls/PropertyGrid/ToggleSwitchCellEditFactory.cs
class ToggleSwitchCellEditFactory (line 8) | internal class ToggleSwitchCellEditFactory : AbstractCellEditFactory
method Accept (line 11) | public override bool Accept(object accessToken)
method HandleNewProperty (line 16) | public override Control? HandleNewProperty(PropertyCellContext context)
method HandlePropertyChanged (line 38) | public override bool HandlePropertyChanged(PropertyCellContext context)
FILE: StabilityMatrix.Avalonia/Controls/RefreshBadge.axaml.cs
class RefreshBadge (line 6) | [RegisterTransient<RefreshBadge>]
method RefreshBadge (line 9) | public RefreshBadge()
method InitializeComponent (line 14) | private void InitializeComponent()
FILE: StabilityMatrix.Avalonia/Controls/Scroll/BetterScrollContentPresenter.cs
class BetterScrollContentPresenter (line 6) | public class BetterScrollContentPresenter : ScrollContentPresenter
method OnPointerWheelChanged (line 8) | protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/Scroll/BetterScrollViewer.cs
class BetterScrollViewer (line 5) | public class BetterScrollViewer : ScrollViewer { }
FILE: StabilityMatrix.Avalonia/Controls/SelectableImageCard/SelectableImageButton.cs
class SelectableImageButton (line 8) | public class SelectableImageButton : Button
method SelectableImageButton (line 28) | static SelectableImageButton()
FILE: StabilityMatrix.Avalonia/Controls/SettingsAccountLinkExpander.axaml.cs
class SettingsAccountLinkExpander (line 14) | public class SettingsAccountLinkExpander : TemplatedControlBase
method OnApplyTemplate (line 144) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 179) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
FILE: StabilityMatrix.Avalonia/Controls/SkiaCustomCanvas.axaml.cs
class SkiaCustomCanvas (line 12) | public partial class SkiaCustomCanvas : UserControl
method SkiaCustomCanvas (line 18) | public SkiaCustomCanvas()
method Render (line 27) | public override void Render(DrawingContext context)
class RenderingLogic (line 34) | private class RenderingLogic : ICustomDrawOperation
method Dispose (line 40) | public void Dispose() { }
method Equals (line 42) | public bool Equals(ICustomDrawOperation? other)
method HitTest (line 48) | public bool HitTest(Point p)
method Render (line 54) | public void Render(ImmediateDrawingContext context)
method Render (line 66) | private void Render(SKSurface surface)
FILE: StabilityMatrix.Avalonia/Controls/StarsRating.axaml.cs
class StarsRating (line 15) | public class StarsRating : TemplatedControlBase
method OnApplyTemplate (line 57) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 67) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
method CreateStars (line 82) | private void CreateStars()
method OnStarAdded (line 112) | private void OnStarAdded(SymbolIcon item)
method RoundToHalf (line 127) | private static double RoundToHalf(double value)
method SyncStarState (line 132) | private void SyncStarState()
FILE: StabilityMatrix.Avalonia/Controls/TemplatedControlBase.cs
class TemplatedControlBase (line 9) | public abstract class TemplatedControlBase : TemplatedControl
method OnLoaded (line 12) | protected override void OnLoaded(RoutedEventArgs e)
method OnUnloaded (line 27) | protected override void OnUnloaded(RoutedEventArgs e)
FILE: StabilityMatrix.Avalonia/Controls/TextMarkers/TextMarker.cs
class TextMarker (line 8) | public sealed class TextMarker : TextSegment
method TextMarker (line 12) | public TextMarker(TextMarkerService service, int startOffset, int length)
method Delete (line 23) | public void Delete()
method OnDeleted (line 28) | internal void OnDeleted()
method Redraw (line 33) | private void Redraw()
FILE: StabilityMatrix.Avalonia/Controls/TextMarkers/TextMarkerService.cs
class TextMarkerService (line 32) | public sealed class TextMarkerService : DocumentColorizingTransformer, I...
method TextMarkerService (line 38) | public TextMarkerService(TextEditor editor)
method TryCreate (line 73) | public TextMarker? TryCreate(int startOffset, int length)
method GetMarkersAtOffset (line 89) | public IEnumerable<TextMarker> GetMarkersAtOffset(int offset)
method RemoveAll (line 96) | public void RemoveAll(Predicate<TextMarker> predicate)
method Remove (line 108) | public void Remove(TextMarker? marker)
method Redraw (line 119) | internal void Redraw(ISegment segment)
method ColorizeLine (line 134) | protected override void ColorizeLine(DocumentLine line)
method Draw (line 172) | public void Draw(TextView textView, DrawingContext drawingContext)
method CreatePoints (line 233) | private static IEnumerable<Point> CreatePoints(Point start, double off...
method AddToTextView (line 243) | void ITextViewConnect.AddToTextView(TextView textView)
method RemoveFromTextView (line 252) | void ITextViewConnect.RemoveFromTextView(TextView textView)
FILE: StabilityMatrix.Avalonia/Controls/TextMarkers/TextMarkerValidationEventArgs.cs
class TextMarkerValidationEventArgs (line 5) | public class TextMarkerValidationEventArgs : EventArgs
FILE: StabilityMatrix.Avalonia/Controls/TextMarkers/TextMarkerValidatorService.cs
class TextMarkerValidatorService (line 8) | public class TextMarkerValidatorService
method OnValidationUpdate (line 17) | private void OnValidationUpdate(TextMarkerValidationEventArgs e)
method TextMarkerValidatorService (line 22) | public TextMarkerValidatorService(TimeSpan updateInterval)
method UpdateText (line 27) | public void UpdateText(string text)
method Validate (line 50) | private void Validate()
method ValidateWithDelayAsync (line 55) | private async Task ValidateWithDelayAsync(CancellationToken cancellati...
FILE: StabilityMatrix.Avalonia/Controls/TreeFileExplorer.axaml.cs
class TreeFileExplorer (line 8) | public class TreeFileExplorer : TemplatedControlBase
method GetOptions (line 85) | private TreeFileExplorerOptions GetOptions()
method OnApplyTemplate (line 110) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method OnPropertyChanged (line 123) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
FILE: StabilityMatrix.Avalonia/Controls/UserControlBase.cs
class UserControlBase (line 10) | [SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
method UserControlBase (line 13) | static UserControlBase()
method OnLoadedEvent (line 21) | protected virtual void OnLoadedEvent(RoutedEventArgs? e)
method OnUnloadedEvent (line 34) | protected virtual void OnUnloadedEvent(RoutedEventArgs? e)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/AsyncImage/AsyncImageFailedEventArgs.cs
class BetterAsyncImage (line 6) | public partial class BetterAsyncImage
class AsyncImageFailedEventArgs (line 8) | public class AsyncImageFailedEventArgs : RoutedEventArgs
method AsyncImageFailedEventArgs (line 10) | internal AsyncImageFailedEventArgs(Exception? errorException = null,...
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/AsyncImage/BetterAsyncImage.Events.cs
class BetterAsyncImage (line 6) | public partial class BetterAsyncImage
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/AsyncImage/BetterAsyncImage.Properties.cs
class BetterAsyncImage (line 11) | public partial class BetterAsyncImage
method SetImageCache (line 147) | public static void SetImageCache(Control control, IImageCache? value)
method GetImageCache (line 152) | public static IImageCache? GetImageCache(Control control)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/AsyncImage/BetterAsyncImage.cs
class BetterAsyncImage (line 22) | [TemplatePart("PART_Image", typeof(Image))]
method BetterAsyncImage (line 39) | public BetterAsyncImage()
method OnApplyTemplate (line 47) | protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
method CancelAndSetNewTokenSource (line 70) | private CancellationTokenSource CancelAndSetNewTokenSource(
method SetSource (line 90) | private async void SetSource(object? source)
method AttachSource (line 193) | private void AttachSource(IImage? image, CancellationToken cancellatio...
method LoadImageAsync (line 223) | private async Task<IImage?> LoadImageAsync(Uri url, CancellationToken ...
method OnPropertyChanged (line 240) | protected override void OnPropertyChanged(AvaloniaPropertyChangedEvent...
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/AsyncImage/BetterAsyncImageCacheProvider.cs
class BetterAsyncImageCacheProvider (line 10) | public static class BetterAsyncImageCacheProvider
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/CacheBase.cs
class CacheBase (line 14) | [Localizable(false)]
class ConcurrentRequest (line 17) | private class ConcurrentRequest(Func<Task<T?>> factory)
method CacheBase (line 44) | protected CacheBase(CacheOptions? options = null)
method InitializeAsync (line 104) | public virtual async Task InitializeAsync(
method ClearAsync (line 125) | public async Task ClearAsync()
method ClearAsync (line 140) | public Task ClearAsync(TimeSpan duration)
method RemoveExpiredAsync (line 150) | public async Task RemoveExpiredAsync(TimeSpan? duration = null)
method RemoveAsync (line 182) | public async Task RemoveAsync(IEnumerable<Uri> uriForCachedItems)
method PreCacheAsync (line 224) | public Task PreCacheAsync(
method GetFromCacheAsync (line 241) | public Task<T?> GetFromCacheAsync(
method GetFileFromCacheAsync (line 255) | public async Task<string> GetFileFromCacheAsync(Uri uri)
method GetFromMemoryCache (line 267) | public T? GetFromMemoryCache(Uri uri)
method ConvertFromAsync (line 290) | protected abstract Task<T> ConvertFromAsync(Stream stream);
method ConvertFromAsync (line 297) | protected abstract Task<T> ConvertFromAsync(string baseFile);
method IsFileOutOfDateAsync (line 306) | protected virtual async Task<bool> IsFileOutOfDateAsync(
method GetCacheFileName (line 322) | private static string GetCacheFileName(Uri uri)
method CreateHash64 (line 327) | private static ulong CreateHash64(string str)
method GetItemAsync (line 340) | [DebuggerDisableUserUnhandledExceptions]
method GetFromCacheOrDownloadAsync (line 441) | private async Task<T?> GetFromCacheOrDownloadAsync(
method DownloadFileAsync (line 558) | [DebuggerDisableUserUnhandledExceptions]
method LoadLocalFileAsync (line 597) | private async Task<T?> LoadLocalFileAsync(Uri uri, CancellationToken c...
method InternalClearAsync (line 612) | private async Task InternalClearAsync(IEnumerable<string?> files)
method ForceInitialiseAsync (line 631) | private async Task ForceInitialiseAsync()
method GetCacheFolderAsync (line 665) | private async Task<string?> GetCacheFolderAsync()
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/CacheOptions.cs
class CacheOptions (line 6) | public class CacheOptions
method SetDefault (line 12) | public static void SetDefault(CacheOptions defaultCacheOptions)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/FileCache.cs
class FileCache (line 9) | internal class FileCache : CacheBase<string>
method ConvertFromAsync (line 21) | protected override Task<string> ConvertFromAsync(Stream stream)
method ConvertFromAsync (line 32) | protected override Task<string> ConvertFromAsync(string baseFile)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/IImageCache.cs
type IImageCache (line 8) | public interface IImageCache
method PreCacheAsync (line 16) | Task PreCacheAsync(Uri uri, CancellationToken cancellationToken = defa...
method GetAsync (line 24) | Task<IImage?> GetAsync(Uri uri, CancellationToken cancellationToken = ...
method GetWithCacheAsync (line 33) | Task<IImage?> GetWithCacheAsync(Uri uri, CancellationToken cancellatio...
method ClearMemoryCache (line 35) | int ClearMemoryCache();
method ClearMemoryCache (line 37) | int ClearMemoryCache(DateTime olderThan);
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/ImageCache.cs
class ImageCache (line 13) | internal class ImageCache(CacheOptions? options = null) : CacheBase<Bitm...
method ConvertFromAsync (line 20) | protected override async Task<Bitmap> ConvertFromAsync(Stream stream)
method ConvertFromAsync (line 35) | protected override async Task<Bitmap> ConvertFromAsync(string baseFile)
method IsFileOutOfDateAsync (line 50) | protected override async Task<bool> IsFileOutOfDateAsync(
method PreCacheAsync (line 68) | public Task PreCacheAsync(Uri uri, CancellationToken cancellationToken...
method GetAsync (line 73) | public async Task<IImage?> GetAsync(Uri uri, CancellationToken cancell...
method GetWithCacheAsync (line 78) | public async Task<IImage?> GetWithCacheAsync(Uri uri, CancellationToke...
method ClearMemoryCache (line 83) | public int ClearMemoryCache()
method ClearMemoryCache (line 95) | public int ClearMemoryCache(DateTime olderThan)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/InMemoryStorage.cs
class InMemoryStorage (line 20) | public class InMemoryStorage<T>
method Clear (line 55) | [MethodImpl(MethodImplOptions.Synchronized)]
method Clear (line 66) | [MethodImpl(MethodImplOptions.Synchronized)]
method Clear (line 75) | [MethodImpl(MethodImplOptions.Synchronized)]
method Remove (line 99) | [MethodImpl(MethodImplOptions.Synchronized)]
method Remove (line 113) | [MethodImpl(MethodImplOptions.Synchronized)]
method SetItem (line 127) | [MethodImpl(MethodImplOptions.Synchronized)]
method GetItem (line 165) | [MethodImpl(MethodImplOptions.Synchronized)]
method GetItem (line 187) | [MethodImpl(MethodImplOptions.Synchronized)]
method RemoveFirst (line 203) | private void RemoveFirst()
method EnsureStorageBounds (line 216) | private void EnsureStorageBounds(int maxCount)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/InMemoryStorageItem.cs
class InMemoryStorageItem (line 13) | public class InMemoryStorageItem<T>
method InMemoryStorageItem (line 42) | public InMemoryStorageItem(string id, DateTime lastUpdated, T item)
FILE: StabilityMatrix.Avalonia/Controls/VendorLabs/Cache/MemoryImageCache.cs
class MemoryImageCache (line 23) | internal class MemoryImageCache : IImageCache
class ConcurrentRequest (line 25) | private class ConcurrentRequest
method InitializeAsync (line 84) | public virtual async Task InitializeAsync(
method Clear (line 99) | public void Clear()
method ClearExpired (line 108) | public void ClearExpired(TimeSpan? duration = null)
method Remove (line 120) | public void Remove(IEnumerable<Uri> uriForCachedItems)
method PreCacheAsync (line 133) | public Task PreCacheAsync(Uri uri, CancellationToken cancellationToken...
method GetFromMemoryCache (line 143) | public IImage? GetFromMemoryCache(Uri uri)
method GetCacheFileName (line 159) | private static string GetCacheFileName(Uri uri)
method CreateHash64 (line 164) | private static ulong CreateHash64(string str)
method GetAsync (line 177) | public async Task<IImage?> GetAsync(Uri uri, CancellationToken cancell...
method GetWithCacheAsync (line 207) | public async Task<IImage?> GetWithCacheAsync(Uri uri, CancellationToke...
method ClearMemoryCache (line 246) | public int ClearMemoryCache()
method ClearMemoryCache (line 258) | public int ClearMemoryCache(DateTime olderThan)
method GetItemWithCacheAsync (line 270) | private async Task<IImage?> GetItemWithCacheAsync(
method LoadLocalImageAsync (line 325) | private static async Task<IImage?> LoadLocalImageAsync(Uri uri, Cancel...
method LoadLocalImageWithSkia (line 341) | private static IImage? LoadLocalImageWithSkia(Uri uri)
method DownloadImageAsync (line 348) | private async Task<IImage?> DownloadImageAsync(Uri uri, CancellationTo...
FILE: StabilityMatrix.Avalonia/Controls/VideoGenerationSettingsCard.axaml.cs
class VideoGenerationSettingsCard (line 6) | [RegisterTransient<VideoGenerationSettingsCard>]
FILE: StabilityMatrix.Avalonia/Controls/VideoOutputSettingsCard.axaml.cs
class VideoOutputSettingsCard (line 6) | [RegisterTransient<VideoOutputSettingsCard>]
FILE: StabilityMatrix.Avalonia/Converters/BooleanChoiceMultiConverter.cs
class BooleanChoiceMultiConverter (line 8) | public class BooleanChoiceMultiConverter : IMultiValueConverter
method Convert (line 11) | public object? Convert(
FILE: StabilityMatrix.Avalonia/Converters/CivitImageWidthConverter.cs
class CivitImageWidthConverter (line 9) | [Localizable(false)]
method Convert (line 15) | public object? Convert(object? value, Type targetType, object? paramet...
method ParseTransformSegment (line 117) | private Dictionary<string, string>? ParseTransformSegment(string segment)
method ConvertBack (line 145) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/ComfyUpscalerConverter.cs
class ComfyUpscalerConverter (line 7) | public class ComfyUpscalerConverter : IValueConverter
method Convert (line 10) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 16) | public object? ConvertBack(
FILE: StabilityMatrix.Avalonia/Converters/CultureInfoDisplayConverter.cs
class CultureInfoDisplayConverter (line 7) | public class CultureInfoDisplayConverter : IValueConverter
method Convert (line 10) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 19) | public object ConvertBack(
FILE: StabilityMatrix.Avalonia/Converters/CustomStringFormatConverter.cs
class CustomStringFormatConverter (line 8) | public class CustomStringFormatConverter<T>([StringSyntax("CompositeForm...
method Convert (line 12) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 18) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/EnumAttributeConverter.cs
class EnumAttributeConverter (line 13) | public class EnumAttributeConverter<TAttribute>(Func<TAttribute, object?...
method Convert (line 17) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 36) | public object ConvertBack(object? value, Type targetType, object? para...
FILE: StabilityMatrix.Avalonia/Converters/EnumAttributeConverters.cs
class EnumAttributeConverters (line 5) | internal static class EnumAttributeConverters
FILE: StabilityMatrix.Avalonia/Converters/EnumStringConverter.cs
class EnumStringConverter (line 8) | public class EnumStringConverter : IValueConverter
method Convert (line 11) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 20) | public object? ConvertBack(
FILE: StabilityMatrix.Avalonia/Converters/EnumToBooleanConverter.cs
class EnumToBooleanConverter (line 8) | public class EnumToBooleanConverter : IValueConverter
method Convert (line 10) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 15) | public object? ConvertBack(
FILE: StabilityMatrix.Avalonia/Converters/EnumToIntConverter.cs
class EnumToIntConverter (line 9) | public class EnumToIntConverter<TEnum> : IValueConverter
method Convert (line 12) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 22) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/EnumToValuesConverter.cs
class EnumToValuesConverter (line 10) | public class EnumToValuesConverter : IValueConverter
method Convert (line 13) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 30) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/FileSizeConverters.cs
class FileSizeConverters (line 7) | [SuppressMessage("ReSharper", "LocalizableElement")]
FILE: StabilityMatrix.Avalonia/Converters/FileUriConverter.cs
class FileUriConverter (line 7) | public class FileUriConverter : IValueConverter
method Convert (line 10) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 28) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/FitSquarelyWithinAspectRatioConverter.cs
class FitSquarelyWithinAspectRatioConverter (line 8) | public class FitSquarelyWithinAspectRatioConverter : IValueConverter
method Convert (line 10) | public object Convert(object? value, Type targetType, object? paramete...
method ConvertBack (line 16) | public object ConvertBack(object? value, Type targetType, object? para...
FILE: StabilityMatrix.Avalonia/Converters/FuncCommandConverter.cs
class FuncCommandConverter (line 12) | public class FuncCommandConverter : IValueConverter
method Convert (line 15) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 49) | public object ConvertBack(object? value, Type targetType, object? para...
FILE: StabilityMatrix.Avalonia/Converters/IndexPlusOneConverter.cs
class IndexPlusOneConverter (line 10) | public class IndexPlusOneConverter : IValueConverter
method Convert (line 12) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 22) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/KiloFormatter.cs
class KiloFormatter (line 5) | public class KiloFormatter : ICustomFormatter, IFormatProvider
method GetFormat (line 7) | public object? GetFormat(Type? formatType)
method Format (line 12) | public string Format(string? format, object? arg, IFormatProvider? for...
method FormatNumber (line 29) | private static string FormatNumber(long num)
FILE: StabilityMatrix.Avalonia/Converters/KiloFormatterStringConverter.cs
class KiloFormatterStringConverter (line 7) | public class KiloFormatterStringConverter : IValueConverter
method Convert (line 10) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 16) | public object? ConvertBack(
FILE: StabilityMatrix.Avalonia/Converters/LaunchOptionConverter.cs
class LaunchOptionConverter (line 7) | public class LaunchOptionConverter : IValueConverter
method Convert (line 9) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 42) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/LaunchOptionIntDoubleConverter.cs
class LaunchOptionIntDoubleConverter (line 7) | public class LaunchOptionIntDoubleConverter : IValueConverter
method Convert (line 10) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 25) | public object ConvertBack(object? value, Type targetType, object? para...
FILE: StabilityMatrix.Avalonia/Converters/MemoryBytesFormatter.cs
class MemoryBytesFormatter (line 6) | public class MemoryBytesFormatter : ICustomFormatter, IFormatProvider
method GetFormat (line 9) | public object? GetFormat(Type? formatType)
method Format (line 15) | public string Format(string? format, object? arg, IFormatProvider? for...
FILE: StabilityMatrix.Avalonia/Converters/MultiplyConverter.cs
class MultiplyConverter (line 7) | public class MultiplyConverter : IValueConverter
method Convert (line 9) | public object Convert(object? value, Type targetType, object? paramete...
method ConvertBack (line 16) | public object ConvertBack(object? value, Type targetType, object? para...
FILE: StabilityMatrix.Avalonia/Converters/NullableDefaultNumericConverter.cs
class NullableDefaultNumericConverter (line 12) | public class NullableDefaultNumericConverter<TSource, TTarget> : IValueC...
method Unbox (line 21) | private TSource Unbox(TTarget? value)
method Convert (line 50) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 66) | public object ConvertBack(object? value, Type targetType, object? para...
type ReturnBehavior (line 79) | public enum ReturnBehavior
FILE: StabilityMatrix.Avalonia/Converters/NullableDefaultNumericConverters.cs
class NullableDefaultNumericConverters (line 3) | public static class NullableDefaultNumericConverters
FILE: StabilityMatrix.Avalonia/Converters/NumberFormatModeSampleConverter.cs
class NumberFormatModeSampleConverter (line 11) | public class NumberFormatModeSampleConverter : IValueConverter
method Convert (line 14) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 32) | public object? ConvertBack(object? value, Type targetType, object? par...
FILE: StabilityMatrix.Avalonia/Converters/StringFormatConverters.cs
class StringFormatConverters (line 6) | public static class StringFormatConverters
FILE: StabilityMatrix.Avalonia/Converters/UriStringConverter.cs
class UriStringConverter (line 10) | public class UriStringConverter : IValueConverter
method Convert (line 13) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 29) | public object ConvertBack(
FILE: StabilityMatrix.Avalonia/Converters/ValueConverterGroup.cs
class ValueConverterGroup (line 9) | public class ValueConverterGroup : List<IValueConverter>, IValueConverter
method Convert (line 11) | public object? Convert(object? value, Type targetType, object? paramet...
method ConvertBack (line 16) | public object ConvertBack(object? value, Type targetType, object? para...
FILE: StabilityMatrix.Avalonia/DesignData/DesignData.cs
class DesignData (line 61) | [Localizable(false)]
method Initialize (line 72) | public static void Initialize()
class Indexer (line 1568) | public class Indexer
FILE: StabilityMatrix.Avalonia/DesignData/MockCompletionProvider.cs
class MockCompletionProvider (line 10) | public class MockCompletionProvider : ICompletionProvider
method Setup (line 19) | public Task Setup()
method LoadFromFile (line 25) | public Task LoadFromFile(FilePath path, bool recreate = false)
method BackgroundLoadFromFile (line 31) | public void BackgroundLoadFromFile(FilePath path, bool recreate = fals...
method GetCompletions (line 34) | public IEnumerable<ICompletionData> GetCompletions(
FILE: StabilityMatrix.Avalonia/DesignData/MockDownloadProgressItemViewModel.cs
class MockDownloadProgressItemViewModel (line 8) | public class MockDownloadProgressItemViewModel : PausableProgressItemVie...
method MockDownloadProgressItemViewModel (line 13) | public MockDownloadProgressItemViewModel(string fileName)
method Cancel (line 22) | public override Task Cancel()
method Pause (line 35) | public override Task Pause()
method Resume (line 48) | public override Task Resume()
FILE: StabilityMatrix.Avalonia/DesignData/MockGitVersionProvider.cs
class MockGitVersionProvider (line 13) | public class MockGitVersionProvider : IGitVersionProvider
method FetchTagsAsync (line 15) | public Task<IReadOnlyList<GitVersion>> FetchTagsAsync(
method FetchBranchesAsync (line 30) | public Task<IReadOnlyList<GitVersion>> FetchBranchesAsync(
method FetchCommitsAsync (line 45) | public Task<IReadOnlyList<GitVersion>> FetchCommitsAsync(
FILE: StabilityMatrix.Avalonia/DesignData/MockImageIndexService.cs
class MockImageIndexService (line 9) | public class MockImageIndexService : IImageIndexService
method MockImageIndexService (line 14) | public MockImageIndexService()
method RefreshIndexForAllCollections (line 23) | public Task RefreshIndexForAllCollections()
method GetSampleImage (line 28) | private static LocalImageFile GetSampleImage(string url)
method RefreshIndex (line 39) | public Task RefreshIndex(IndexCollection<LocalImageFile, string> index...
method BackgroundRefreshIndex (line 57) | public void BackgroundRefreshIndex()
FILE: StabilityMatrix.Avalonia/DesignData/MockInferenceClientManager.cs
class MockInferenceClientManager (line 11) | public class MockInferenceClientManager : InferenceClientManager
method MockInferenceClientManager (line 13) | public MockInferenceClientManager(
method LoadSharedPropertiesAsync (line 28) | protected override Task LoadSharedPropertiesAsync()
method ConnectAsync (line 45) | public override async Task ConnectAsync(CancellationToken cancellation...
method ConnectAsync (line 54) | public override async Task ConnectAsync(
FILE: StabilityMatrix.Avalonia/DesignData/MockLaunchPageViewModel.cs
class MockLaunchPageViewModel (line 15) | public class MockLaunchPageViewModel : LaunchPageViewModel
method MockLaunchPageViewModel (line 17) | public MockLaunchPageViewModel(
method LaunchImpl (line 41) | protected override Task LaunchImpl(string? command)
method Stop (line 62) | public override Task Stop()
FILE: StabilityMatrix.Avalonia/DesignData/MockMetadataImportService.cs
class MockMetadataImportService (line 10) | public class MockMetadataImportService : IMetadataImportService
method ScanDirectoryForMissingInfo (line 12) | public Task ScanDirectoryForMissingInfo(DirectoryPath directory, IProg...
method GetMetadataForFile (line 17) | public Task<ConnectedModelInfo?> GetMetadataForFile(
method UpdateExistingMetadata (line 26) | public Task UpdateExistingMetadata(DirectoryPath directory, IProgress<...
FILE: StabilityMatrix.Avalonia/DesignData/MockModelIndexService.cs
class MockModelIndexService (line 9) | public class MockModelIndexService : IModelIndexService
method RefreshIndex (line 86) | public Task RefreshIndex()
method FindByModelType (line 92) | public IEnumerable<LocalModelFile> FindByModelType(SharedFolderType ty...
method FindAllFolders (line 98) | public Task<Dictionary<SharedFolderType, LocalModelFolder>> FindAllFol...
method FindByModelTypeAsync (line 104) | public Task<IEnumerable<LocalModelFile>> FindByModelTypeAsync(SharedFo...
method FindByHashAsync (line 110) | public Task<IEnumerable<LocalModelFile>> FindByHashAsync(string hashBl...
method FindBySha256Async (line 115) | public Task<IEnumerable<LocalModelFile>> FindBySha256Async(string hash...
method RemoveModelAsync (line 121) | public Task<bool> RemoveModelAsync(LocalModelFile model)
method RemoveModelsAsync (line 126) | public Task<bool> RemoveModelsAsync(IEnumerable<LocalModelFile> models)
method CheckModelsForUpdateAsync (line 131) | public Task CheckModelsForUpdateAsync()
method BackgroundRefreshIndex (line 137) | public void BackgroundRefreshIndex() { }
FILE: StabilityMatrix.Avalonia/DesignData/MockPropertyGridObject.cs
class MockPropertyGridObject (line 10) | public partial class MockPropertyGridObject : ObservableObject
class MockPropertyGridObjectAlt (line 46) | public partial class MockPropertyGridObjectAlt : ObservableObject
FILE: StabilityMatrix.Avalonia/DesignData/MockSettingsManager.cs
class MockSettingsManager (line 8) | public class MockSettingsManager() : SettingsManager(NullLogger<Settings...
method LoadSettings (line 10) | protected override void LoadSettings(CancellationToken cancellationTok...
method LoadSettingsAsync (line 12) | protected override Task LoadSettingsAsync(CancellationToken cancellati...
method SaveSettings (line 17) | protected override void SaveSettings(CancellationToken cancellationTok...
method SaveSettingsAsync (line 19) | protected override Task SaveSettingsAsync(CancellationToken cancellati...
FILE: StabilityMatrix.Avalonia/DialogHelper.cs
class DialogHelper (line 38) | public static class DialogHelper
method GetTextEntryDialogResultAsync (line 45) | public static async Task<ContentDialogValueResult<TextBoxField>> GetTe...
method GetTextEntryDialogResultAsync (line 60) | public static async Task<
method CreateTextEntryDialog (line 77) | public static BetterContentDialog CreateTextEntryDialog(
method CreateTextEntryDialog (line 93) | public static BetterContentDialog CreateTextEntryDialog(
method CreateTextEntryDialog (line 125) | public static BetterContentDialog CreateTextEntryDialog(
method CreateMarkdownDialog (line 233) | public static BetterContentDialog CreateMarkdownDialog(
method CreateApiExceptionDialog (line 295) | public static BetterContentDialog CreateApiExceptionDialog(ApiExceptio...
method CreateJsonDialog (line 368) | public static BetterContentDialog CreateJsonDialog(
method CreatePromptErrorDialog (line 457) | public static BetterContentDialog CreatePromptErrorDialog(
method CreateTaskDialog (line 584) | public static TaskDialog CreateTaskDialog(string title, string descrip...
class TextBoxField (line 614) | public sealed class TextBoxField : INotifyPropertyChanged
method OnPropertyChanged (line 673) | private void OnPropertyChanged([CallerMemberName] string? propertyName...
FILE: StabilityMatrix.Avalonia/Extensions/AvaloniaEditExtensions.cs
class AvaloniaEditExtensions (line 6) | public static class AvaloniaEditExtensions
method GetSelectionSegment (line 8) | public static ISegment? GetSelectionSegment(this TextEditor editor)
FILE: StabilityMatrix.Avalonia/Extensions/BitmapExtensions.cs
class BitmapExtensions (line 10) | public static class BitmapExtensions
method ToSKBitmap (line 17) | public static SKBitmap ToSKBitmap(this Bitmap bitmap)
method ToByteArray (line 55) | public static byte[] ToByteArray(this Bitmap bitmap)
FILE: StabilityMatrix.Avalonia/Extensions/ClipboardExtensions.cs
class ClipboardExtensions (line 11) | public static class ClipboardExtensions
method SetFileDataObjectAsync (line 19) | public static async Task SetFileDataObjectAsync(this IClipboard clipbo...
method SetFileDataObjectAsync (line 28) | public static async Task SetFileDataObjectAsync(this IClipboard clipbo...
FILE: StabilityMatrix.Avalonia/Extensions/ComfyNodeBuilderExtensions.cs
class ComfyNodeBuilderExtensions (line 13) | public static class ComfyNodeBuilderExtensions
method SetupEmptyLatentSource (line 15) | public static void SetupEmptyLatentSource(
method SetupImagePrimarySource (line 97) | public static void SetupImagePrimarySource(
method SetupImagePrimarySourceWithMask (line 151) | public static void SetupImagePrimarySourceWithMask(
method SetupOutputImage (line 243) | public static string SetupOutputImage(this ComfyNodeBuilder builder)
method SetupPlasmaLatentSource (line 272) | public static void SetupPlasmaLatentSource(
FILE: StabilityMatrix.Avalonia/Extensions/DataObjectExtensions.cs
class DataObjectExtensions (line 6) | public static class DataObjectExtensions
method GetContext (line 11) | public static T? GetContext<T>(this IDataObject dataObject)
FILE: StabilityMatrix.Avalonia/Extensions/EnumExtensions.cs
class EnumExtensions (line 6) | public static class EnumExtensions
method TryParseEnumStringValue (line 8) | public static bool TryParseEnumStringValue<T>(string? value, T default...
FILE: StabilityMatrix.Avalonia/Extensions/InferenceProjectTypeExtensions.cs
class InferenceProjectTypeExtensions (line 7) | public static class InferenceProjectTypeExtensions
method ToViewModelType (line 9) | public static Type? ToViewModelType(this InferenceProjectType type)
FILE: StabilityMatrix.Avalonia/Extensions/NotificationLevelExtensions.cs
class NotificationLevelExtensions (line 7) | public static class NotificationLevelExtensions
method ToNotificationType (line 9) | public static NotificationType ToNotificationType(this NotificationLev...
FILE: StabilityMatrix.Avalonia/Extensions/NotificationServiceExtensions.cs
class NotificationServiceExtensions (line 11) | public static class NotificationServiceExtensions
method OnPackageInstallCompleted (line 15) | public static void OnPackageInstallCompleted(
method OnPackageInstallCompletedAsync (line 24) | private static async Task OnPackageInstallCompletedAsync(
FILE: StabilityMatrix.Avalonia/Extensions/RelayCommandExtensions.cs
class RelayCommandExtensions (line 10) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method VerifyFlowExceptionsToTaskSchedulerEnabled (line 15) | private static void VerifyFlowExceptionsToTaskSchedulerEnabled(IAsyncR...
method WithErrorHandler (line 34) | public static T WithErrorHandler<T>(this T command, Action<Exception> ...
method WithConditionalErrorHandler (line 65) | public static T WithConditionalErrorHandler<T>(this T command, Action<...
method WithNotificationErrorHandler (line 104) | public static T WithNotificationErrorHandler<T>(
method WithConditionalNotificationErrorHandler (line 128) | public static T WithConditionalNotificationErrorHandler<T>(
FILE: StabilityMatrix.Avalonia/Extensions/ServiceManagerExtensions.cs
class ServiceManagerExtensions (line 9) | [Localizable(false)]
method GetDialog (line 16) | public static BetterContentDialog GetDialog<TService>(this IServiceMan...
method GetDialog (line 40) | public static BetterContentDialog GetDialog<TService>(
FILE: StabilityMatrix.Avalonia/Extensions/SkiaExtensions.cs
class SkiaExtensions (line 12) | public static class SkiaExtensions
type SKBitmapDrawOperation (line 14) | private record class SKBitmapDrawOperation : ICustomDrawOperation
class AvaloniaImage (line 54) | private class AvaloniaImage : IImage, IDisposable
method AvaloniaImage (line 59) | public AvaloniaImage(SKBitmap? source)
method Dispose (line 70) | public void Dispose() => _source?.Dispose();
method Draw (line 72) | public void Draw(DrawingContext context, Rect sourceRect, Rect destR...
method ToSKBitmap (line 85) | public static SKBitmap? ToSKBitmap(this System.IO.Stream? stream)
method ToAvaloniaImage (line 92) | public static IImage? ToAvaloniaImage(this SKBitmap? bitmap)
method ToAvaloniaBitmap (line 101) | public static Bitmap ToAvaloniaBitmap(this SKBitmap bitmap)
method ToAvaloniaBitmap (line 106) | public static Bitmap ToAvaloniaBitmap(this SKBitmap bitmap, Vector dpi)
method ToAvaloniaBitmap (line 137) | public static Bitmap ToAvaloniaBitmap(this SKImage image)
method ToAvaloniaBitmap (line 142) | public static Bitmap ToAvaloniaBitmap(this SKImage image, Vector dpi)
method ToAvaloniaPixelFormat (line 176) | public static PixelFormat ToAvaloniaPixelFormat(this SKColorType color...
FILE: StabilityMatrix.Avalonia/Extensions/TextMateExtensions.cs
class TextMateExtensions (line 12) | public static class TextMateExtensions
method LoadGrammarFromStream (line 15) | public static IGrammar LoadGrammarFromStream(
FILE: StabilityMatrix.Avalonia/Extensions/VisualExtensions.cs
class VisualExtensions (line 8) | public static class VisualExtensions
method AttachDebugSaveScreenshot (line 10) | [Conditional("DEBUG")]
FILE: StabilityMatrix.Avalonia/FallbackRamCachedWebImageLoader.cs
type ImageLoadFailedEventArgs (line 14) | public readonly record struct ImageLoadFailedEventArgs(string Url, Excep...
class FallbackRamCachedWebImageLoader (line 16) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method OnLoadFailed (line 27) | protected void OnLoadFailed(string url, Exception exception) =>
method LoadAsync (line 39) | protected override async Task<Bitmap?> LoadAsync(string url)
method LoadExternalNoCacheAsync (line 83) | public async Task<Bitmap?> LoadExternalNoCacheAsync(string url)
method LoadExternalAsync (line 95) | public async Task<Bitmap?> LoadExternalAsync(string url)
method RemovePathFromCache (line 121) | public void RemovePathFromCache(string filePath)
method RemoveAllNamesFromCache (line 130) | public void RemoveAllNamesFromCache(string fileName)
method ClearCache (line 145) | public void ClearCache()
FILE: StabilityMatrix.Avalonia/Helpers/AttributeServiceInjector.Reflection.cs
class AttributeServiceInjector (line 12) | internal static partial class AttributeServiceInjector
method AddServicesByAttributesReflection (line 25) | [Conditional("REGISTER_SERVICE_USAGES")]
method AddServicesByAttributesReflectionOld (line 109) | public static void AddServicesByAttributesReflectionOld(
FILE: StabilityMatrix.Avalonia/Helpers/AttributeServiceInjector.cs
class AttributeServiceInjector (line 15) | [Localizable(false)]
method AddServicesByAttributes (line 27) | public static IServiceCollection AddServicesByAttributes(this IService...
method AddServicesByAttributesSourceGen (line 46) | public static void AddServicesByAttributesSourceGen(IServiceCollection...
method IsScoped (line 52) | private static bool IsScoped(IServiceProvider serviceProvider)
method AddServiceManagerWithCurrentCollectionServices (line 70) | public static IServiceCollection AddServiceManagerWithCurrentCollectio...
FILE: StabilityMatrix.Avalonia/Helpers/ClipboardCommands.cs
class ClipboardCommands (line 6) | public static class ClipboardCommands
FILE: StabilityMatrix.Avalonia/Helpers/ConsoleProcessRunner.cs
class ConsoleProcessRunner (line 8) | public static class ConsoleProcessRunner
method RunProcessStepAsync (line 10) | public static async Task<PackageModificationRunner> RunProcessStepAsyn...
FILE: StabilityMatrix.Avalonia/Helpers/EnumHelpers.cs
class EnumHelpers (line 10) | public static class EnumHelpers
FILE: StabilityMatrix.Avalonia/Helpers/IOCommands.cs
class IOCommands (line 7) | public static class IOCommands
FILE: StabilityMatrix.Avalonia/Helpers/ImageProcessor.cs
class ImageProcessor (line 9) | public static class ImageProcessor
method GetGridDimensionsFromImageCount (line 14) | public static (int rows, int columns) GetGridDimensionsFromImageCount(...
method CreateImageGrid (line 29) | public static SKImage CreateImageGrid(IReadOnlyList<SKImage> images, i...
FILE: StabilityMatrix.Avalonia/Helpers/ImageSearcher.cs
class ImageSearcher (line 8) | public class ImageSearcher
method GetPredicate (line 14) | public Func<LocalImageFile, bool> GetPredicate(string? searchQuery)
type ImageSearchOptions (line 83) | [Flags]
FILE: StabilityMatrix.Avalonia/Helpers/MarkdownSnippets.cs
class MarkdownSnippets (line 3) | public static class MarkdownSnippets
FILE: StabilityMatrix.Avalonia/Helpers/PngDataHelper.cs
class PngDataHelper (line 13) | public static class PngDataHelper
method AddMetadata (line 19) | public static byte[] AddMetadata(
method AddMetadata (line 30) | public static byte[] AddMetadata(
method RemoveMetadata (line 98) | public static byte[] RemoveMetadata(byte[] inputImage)
method BuildTextChunk (line 125) | private static byte[] BuildTextChunk(string key, string value)
FILE: StabilityMatrix.Avalonia/Helpers/TagCsvParser.cs
class TagCsvParser (line 10) | public class TagCsvParser
method TagCsvParser (line 14) | public TagCsvParser(Stream stream)
method ParseAsync (line 19) | public async IAsyncEnumerable<TagCsvEntry> ParseAsync()
method GetDictionaryAsync (line 51) | public async Task<Dictionary<string, TagCsvEntry>> GetDictionaryAsync()
FILE: StabilityMatrix.Avalonia/Helpers/TextEditorConfigs.cs
class TextEditorConfigs (line 17) | public static class TextEditorConfigs
method Configure (line 19) | public static void Configure(TextEditor editor, TextEditorPreset preset)
method ConfigForPrompt (line 36) | private static void ConfigForPrompt(TextEditor editor)
method ConfigForConsole (line 70) | private static void ConfigForConsole(TextEditor editor)
method GetThemeFromStream (line 91) | private static IRawTheme GetThemeFromStream(Stream stream)
method GetCustomTheme (line 97) | private static IRawTheme GetCustomTheme()
FILE: StabilityMatrix.Avalonia/Helpers/UnixPrerequisiteHelper.cs
class UnixPrerequisiteHelper (line 26) | [SupportedOSPlatform("macos")]
method GetPythonDir (line 46) | private DirectoryPath GetPythonDir(PyVersion version) =>
method IsPythonVersionInstalled (line 52) | private bool IsPythonVersionInstalled(PyVersion version) =>
method GetPythonDownloadResource (line 89) | private RemoteResource GetPythonDownloadResource(PyVersion version)
method GetPythonDownloadPath (line 100) | private string GetPythonDownloadPath(PyVersion version) =>
method CheckIsGitInstalled (line 103) | private async Task<bool> CheckIsGitInstalled()
method InstallPackageRequirements (line 110) | public Task InstallPackageRequirements(
method InstallPackageRequirements (line 116) | public async Task InstallPackageRequirements(
method InstallDotnetIfNecessary (line 158) | public async Task InstallDotnetIfNecessary(IProgress<ProgressReport>? ...
method InstallVirtualenvIfNecessary (line 173) | private async Task InstallVirtualenvIfNecessary(IProgress<ProgressRepo...
method InstallAllIfNecessary (line 195) | public async Task InstallAllIfNecessary(IProgress<ProgressReport>? pro...
method UnpackResourcesIfNecessary (line 202) | public async Task UnpackResourcesIfNecessary(IProgress<ProgressReport>...
method InstallGitIfNecessary (line 218) | public async Task InstallGitIfNecessary(IProgress<ProgressReport>? pro...
method RunGit (line 258) | public Task RunGit(
method RunGit (line 268) | private async Task RunGit(ProcessArgs args, string? workingDirectory =...
method InstallPythonIfNecessary (line 300) | public async Task InstallPythonIfNecessary(IProgress<ProgressReport>? ...
method InstallPythonIfNecessary (line 305) | public async Task InstallPythonIfNecessary(PyVersion version, IProgres...
method GetGitOutput (line 382) | public Task<ProcessResult> GetGitOutput(ProcessArgs args, string? work...
method RunNode (line 396) | private async Task<string> RunNode(
method RunNpm (line 411) | [Localizable(false)]
method RunNpmDetached (line 450) | public AnsiProcess RunNpmDetached(
method RunDotnet (line 466) | [SupportedOSPlatform("Linux")]
method InstallNodeIfNecessary (line 506) | [SupportedOSPlatform("Linux")]
method InstallVirtualenvIfNecessary (line 566) | [SupportedOSPlatform("Linux")]
method InstallUvIfNecessary (line 604) | public async Task InstallUvIfNecessary(IProgress<ProgressReport>? prog...
method GetGfxArchFromAmdGpuName (line 715) | public string? GetGfxArchFromAmdGpuName(GpuInfo? gpu = null)
method DownloadAndExtractPrerequisite (line 731) | private async Task DownloadAndExtractPrerequisite(
method GetInstalledUvVersionAsync (line 765) | private async Task<string> GetInstalledUvVersionAsync()
method EnsurePythonVersion (line 779) | private async Task<bool> EnsurePythonVersion(PyVersion pyVersion)
method InstallTkinterIfNecessary (line 785) | [UnsupportedOSPlatform("Linux")]
method InstallVcRedistIfNecessary (line 792) | [UnsupportedOSPlatform("Linux")]
method FixGitLongPaths (line 799) | [UnsupportedOSPlatform("Linux")]
method AddMissingLibsToVenv (line 806) | [UnsupportedOSPlatform("Linux")]
method InstallTkinterIfNecessary (line 817) | [UnsupportedOSPlatform("Linux")]
FILE: StabilityMatrix.Avalonia/Helpers/UriHandler.cs
class UriHandler (line 22) | public class UriHandler
method UriHandler (line 29) | public UriHandler(string scheme, string description)
method SendAndExit (line 39) | [DoesNotReturn]
method RegisterUriScheme (line 59) | public void RegisterUriScheme()
method RegisterUriSchemeWin (line 81) | [SupportedOSPlatform("windows")]
method RegisterUriSchemeLinux (line 101) | [SupportedOSPlatform("linux")]
FILE: StabilityMatrix.Avalonia/Helpers/ViewModelSerializer.cs
class ViewModelSerializer (line 9) | public static class ViewModelSerializer
method GetDerivedTypes (line 11) | public static Dictionary<string, Type> GetDerivedTypes(Type baseType)
method GetJsonDerivedTypeAttributes (line 16) | public static IEnumerable<(Type subType, string typeDiscriminator)> Ge...
FILE: StabilityMatrix.Avalonia/Helpers/Win32ClipboardFormat.cs
type Win32ClipboardFormat (line 5) | [SuppressMessage("ReSharper", "InconsistentNaming")]
FILE: StabilityMatrix.Avalonia/Helpers/WindowsClipboard.cs
class WindowsClipboard (line 11) | [SupportedOSPlatform("windows")]
method SetBitmapAsync (line 14) | public static async Task SetBitmapAsync(Bitmap bitmap)
method SetBitmap (line 19) | public static void SetBitmap(Bitmap bitmap)
method OpenClipboard (line 64) | [DllImport("user32.dll", SetLastError = true)]
method CloseClipboard (line 67) | [DllImport("user32.dll", SetLastError = true)]
method SetClipboardData (line 70) | [DllImport("user32.dll")]
method EmptyClipboard (line 73) | [DllImport("user32.dll", SetLastError = true)]
method GetDC (line 76) | [DllImport("user32.dll", ExactSpelling = true)]
method CreateCompatibleDC (line 79) | [DllImport("gdi32.dll", ExactSpelling = true)]
method CreateCompatibleBitmap (line 82) | [DllImport("gdi32.dll", ExactSpelling = true)]
method SelectObject (line 85) | [DllImport("gdi32.dll", SetLastError = true, ExactSpelling = true)]
method BitBlt (line 88) | [DllImport("gdi32.dll", SetLastError = true, ExactSpelling = true)]
FILE: StabilityMatrix.Avalonia/Helpers/WindowsElevated.cs
class WindowsElevated (line 7) | [SupportedOSPlatform("windows")]
method MoveFiles (line 13) | public static async Task<int> MoveFiles(params (string sourcePath, str...
method Robocopy (line 34) | public static async Task<int> Robocopy(
method SetRegistryValue (line 59) | public static async Task<int> SetRegistryValue(string key, string valu...
method SetRegistryValue (line 77) | public static async Task<int> SetRegistryValue(string key, string valu...
FILE: StabilityMatrix.Avalonia/Helpers/WindowsPrerequisiteHelper.cs
class WindowsPrerequisiteHelper (line 19) | [SupportedOSPlatform("windows")]
method GetPythonDownloadPath (line 62) | private string GetPythonDownloadPath(PyVersion version) =>
method GetPythonDir (line 70) | private string GetPythonDir(PyVersion version) =>
method GetPythonDllPath (line 75) | private string GetPythonDllPath(PyVersion version) =>
method GetPythonLibraryZipPath (line 78) | private string GetPythonLibraryZipPath(PyVersion version) =>
method GetPipPath (line 81) | private string GetPipPath(PyVersion version) => Path.Combine(GetPython...
method GetVenvTempDir (line 84) | private string GetVenvTempDir(PyVersion version) => Path.Combine(GetPy...
method IsPythonVersionInstalled (line 127) | public bool IsPythonVersionInstalled(PyVersion version) => File.Exists...
method InstallPythonIfNecessary (line 133) | public Task InstallPythonIfNecessary(IProgress<ProgressReport>? progre...
method InstallTkinterIfNecessary (line 139) | public Task InstallTkinterIfNecessary(IProgress<ProgressReport>? progr...
method RunGit (line 144) | public async Task RunGit(
method GetGitOutput (line 172) | public Task<ProcessResult> GetGitOutput(ProcessArgs args, string? work...
method RunNode (line 189) | private async Task<string> RunNode(
method RunNpm (line 203) | public async Task RunNpm(
method RunNpmDetached (line 219) | public AnsiProcess RunNpmDetached(
method InstallPackageRequirements (line 235) | public Task InstallPackageRequirements(
method InstallUvIfNecessary (line 241) | public async Task InstallUvIfNecessary(IProgress<ProgressReport>? prog...
method InstallPackageRequirements (line 290) | public async Task InstallPackageRequirements(
method InstallAllIfNecessary (line 352) | public async Task InstallAllIfNecessary(IProgress<ProgressReport>? pro...
method UnpackResourcesIfNecessary (line 364) | public async Task UnpackResourcesIfNecessary(IProgress<ProgressReport>...
method InstallPythonIfNecessary (line 380) | public async Task InstallPythonIfNecessary(PyVersion version, IProgres...
method InstallVirtualenvIfNecessary (line 543) | public async Task InstallVirtualenvIfNecessary(
method InstallTkinterIfNecessary (line 585) | [SupportedOSPlatform("windows")]
method InstallGitIfNecessary (line 613) | public async Task InstallGitIfNecessary(IProgress<ProgressReport>? pro...
method FixGitLongPaths (line 659) | [SupportedOSPlatform("windows")]
method InstallVcRedistIfNecessary (line 678) | [SupportedOSPlatform("windows")]
method InstallNodeIfNecessary (line 729) | [SupportedOSPlatform("windows")]
method InstallDotnetIfNecessary (line 763) | [SupportedOSPlatform("windows")]
method InstallVcBuildToolsIfNecessary (line 787) | [SupportedOSPlatform("windows")]
method InstallHipSdkIfNecessary (line 839) | [SupportedOSPlatform("windows")]
method RunDotnet (line 877) | public async Task<Process> RunDotnet(
method AddMissingLibsToVenv (line 915) | [SupportedOSPlatform("Windows")]
method GetGfxArchFromAmdGpuName (line 964) | public string? GetGfxArchFromAmdGpuName(GpuInfo? gpu = null)
method DownloadAndExtractPrerequisite (line 976) | private async Task DownloadAndExtractPrerequisite(
method UnzipGit (line 1012) | private async Task UnzipGit(IProgress<ProgressReport>? progress = null)
method PatchHipSdkIfNecessary (line 1028) | private async Task PatchHipSdkIfNecessary(IProgress<ProgressReport>? p...
method GetDownloadUrlFromGpuName (line 1084) | private string? GetDownloadUrlFromGpuName(string name)
method GetInstalledUvVersionAsync (line 1157) | private async Task<string> GetInstalledUvVersionAsync()
method GetInstalledGitVersionAsync (line 1171) | private async Task<string> GetInstalledGitVersionAsync()
method EnsurePythonVersion (line 1185) | private async Task<bool> EnsurePythonVersion(PyVersion pyVersion)
FILE: StabilityMatrix.Avalonia/Helpers/WindowsShortcuts.cs
class WindowsShortcuts (line 10) | [SupportedOSPlatform("windows")]
method CreateShortcut (line 15) | public static void CreateShortcut(
class ShellLink (line 34) | [ComImport]
type IShellLink (line 40) | [ComImport]
method GetPath (line 45) | void GetPath([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder ps...
method GetIDList (line 46) | void GetIDList(out IntPtr ppidl);
method SetIDList (line 47) | void SetIDList(IntPtr pidl);
method GetDescription (line 48) | void GetDescription([Out, MarshalAs(UnmanagedType.LPWStr)] StringBui...
method SetDescription (line 49) | void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName);
method GetWorkingDirectory (line 50) | void GetWorkingDirectory([Out, MarshalAs(UnmanagedType.LPWStr)] Stri...
method SetWorkingDirectory (line 51) | void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string ps...
method GetArguments (line 52) | void GetArguments([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuild...
method SetArguments (line 53) | void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs);
method GetHotkey (line 54) | void GetHotkey(out short pwHotkey);
method SetHotkey (line 55) | void SetHotkey(short wHotkey);
method GetShowCmd (line 56) | void GetShowCmd(out int piShowCmd);
method SetShowCmd (line 57) | void SetShowCmd(int iShowCmd);
method GetIconLocation (line 58) | void GetIconLocation([Out, MarshalAs(UnmanagedType.LPWStr)] StringBu...
method SetIconLocation (line 59) | void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIco...
method SetRelativePath (line 60) | void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPat...
method Resolve (line 61) | void Resolve(IntPtr hwnd, int fFlags);
method SetPath (line 62) | void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile);
FILE: StabilityMatrix.Avalonia/Languages/Cultures.cs
class Cultures (line 12) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method GetSupportedCultureOrDefault (line 43) | public static CultureInfo GetSupportedCultureOrDefault(string? culture...
method SetSupportedCultureOrDefault (line 53) | public static void SetSupportedCultureOrDefault(string? cultureCode, N...
method SetSupportedCultureOrDefault (line 61) | public static void SetSupportedCultureOrDefault(string? cultureCode, N...
method TrySetSupportedCulture (line 69) | public static bool TrySetSupportedCulture(string? cultureCode)
method TrySetSupportedCulture (line 89) | public static bool TrySetSupportedCulture(string? cultureCode, NumberF...
method TrySetSupportedCulture (line 110) | public static bool TrySetSupportedCulture(string? cultureCode, NumberF...
method TrySetSupportedCulture (line 138) | public static bool TrySetSupportedCulture(CultureInfo? cultureInfo)
method TrySetSupportedCulture (line 143) | public static bool TrySetSupportedCulture(CultureInfo? cultureInfo, Nu...
method TrySetSupportedCulture (line 148) | public static bool TrySetSupportedCulture(CultureInfo? cultureInfo, Nu...
method GetCultureInfoWithNumberFormat (line 154) | private static CultureInfo GetCultureInfoWithNumberFormat(
FILE: StabilityMatrix.Avalonia/Languages/Resources.Designer.cs
class Resources (line 21) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 30) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: StabilityMatrix.Avalonia/Logging/RichNLogTheme.cs
type RichNLogThemeStyle (line 11) | public enum RichNLogThemeStyle
class RichNLogTheme (line 48) | [Localizable(false)]
method GetAnsiStyle (line 55) | public string GetAnsiStyle(RichNLogThemeStyle style) =>
method ApplyStyle (line 58) | public void ApplyStyle(TextWriter writer, RichNLogThemeStyle style, st...
class RichConsoleTarget (line 204) | [Localizable(false)]
method RichConsoleTarget (line 210) | public RichConsoleTarget()
method RichConsoleTarget (line 213) | public RichConsoleTarget(string name)
method Write (line 218) | protected override void Write(LogEventInfo logEvent)
method RenderLevel (line 271) | private void RenderLevel(TextWriter writer, LogLevel level)
method RenderMessage (line 462) | private void RenderMessage(TextWriter writer, LogEventInfo logEvent, R...
method ParsePlaceholder (line 530) | private static void ParsePlaceholder(
method FindClosingBrace (line 611) | private static int FindClosingBrace(string template, int startIndex)
method RenderProperties (line 635) | private void RenderProperties(TextWriter writer, IDictionary<object, o...
method RenderPropertiesBlock (line 665) | private void RenderPropertiesBlock(
method RenderPropertyValue (line 700) | private void RenderPropertyValue(
method RenderPropertyValue (line 929) | private void RenderPropertyValue(TextWriter writer, object? value, str...
method EscapeString (line 1054) | private string EscapeString(string? s)
method ApplyStyle (line 1061) | private void ApplyStyle(TextWriter writer, RichNLogThemeStyle style, s...
FILE: StabilityMatrix.Avalonia/MarkupExtensions/EnumValuesExtension.cs
class EnumValuesExtension (line 8) | public class EnumValuesExtension<TEnum> : MarkupExtension
method ProvideValue (line 17) | public override IEnumerable<TEnum> ProvideValue(IServiceProvider servi...
method ProvideValue (line 50) | public override IEnumerable<Enum> ProvideValue(IServiceProvider servic...
class EnumValuesExtension (line 40) | public class EnumValuesExtension : MarkupExtension
method ProvideValue (line 17) | public override IEnumerable<TEnum> ProvideValue(IServiceProvider servi...
method ProvideValue (line 50) | public override IEnumerable<Enum> ProvideValue(IServiceProvider servic...
FILE: StabilityMatrix.Avalonia/MarkupExtensions/TernaryExtension.cs
class TernaryExtension (line 13) | public class TernaryExtension : MarkupExtension
method TernaryExtension (line 33) | public TernaryExtension() { }
method TernaryExtension (line 35) | public TernaryExtension(object condition)
method ProvideValue (line 40) | public override object ProvideValue(IServiceProvider serviceProvider)
method EvaluateCondition (line 129) | private static bool EvaluateCondition(object? conditionValue)
class TernaryConverterParameters (line 152) | private class TernaryConverterParameters
class TernaryConverter (line 166) | private class TernaryConverter : IMultiValueConverter
method Convert (line 173) | public object? Convert(IList<object?> values, Type targetType, objec...
method ConvertBack (line 214) | public object[]? ConvertBack(
FILE: StabilityMatrix.Avalonia/Models/AdvancedObservableList.cs
class AdvancedObservableList (line 11) | public class AdvancedObservableList<T> : AvaloniaList<T>
method AdvancedObservableList (line 14) | public AdvancedObservableList()
method AdvancedObservableList (line 20) | public AdvancedObservableList(IEnumerable<T> items)
method CollectionChangedEventRegistrationHandler (line 26) | private void CollectionChangedEventRegistrationHandler(object? sender,...
method OnItemRemoveRequested (line 44) | private void OnItemRemoveRequested(object? sender, EventArgs e)
method TryRegisterRemovableListItem (line 52) | private bool TryRegisterRemovableListItem(T item)
method TryUnregisterRemovableListItem (line 62) | private bool TryUnregisterRemovableListItem(T item)
FILE: StabilityMatrix.Avalonia/Models/AppArgs.cs
class AppArgs (line 8) | public class AppArgs
FILE: StabilityMatrix.Avalonia/Models/AvaloniaResource.cs
type AvaloniaResource (line 9) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
FILE: StabilityMatrix.Avalonia/Models/CheckpointCategory.cs
class CheckpointCategory (line 6) | public partial class CheckpointCategory : TreeViewDirectory
method Flatten (line 19) | public IEnumerable<CheckpointCategory> Flatten()
method GetId (line 32) | public string GetId() => $@"{Name};{Flatten().Count()}";
FILE: StabilityMatrix.Avalonia/Models/CommandItem.cs
type CommandItem (line 9) | public partial record CommandItem
FILE: StabilityMatrix.Avalonia/Models/ContentDialogValueResult.cs
type ContentDialogValueResult (line 6) | public record ContentDialogValueResult<T>(ContentDialogResult Result, [p...
FILE: StabilityMatrix.Avalonia/Models/DirectionalNavigationEventArgs.cs
class DirectionalNavigationEventArgs (line 6) | public class DirectionalNavigationEventArgs : EventArgs
method DirectionalNavigationEventArgs (line 10) | public DirectionalNavigationEventArgs(Vector2 direction)
FILE: StabilityMatrix.Avalonia/Models/HuggingFace/HuggingFaceModelType.cs
type HuggingFaceModelType (line 8) | [JsonConverter(typeof(DefaultUnknownEnumConverter<HuggingFaceModelType>))]
FILE: StabilityMatrix.Avalonia/Models/HuggingFace/HuggingfaceItem.cs
class HuggingfaceItem (line 3) | public class HuggingfaceItem
FILE: StabilityMatrix.Avalonia/Models/IInfinitelyScroll.cs
type IInfinitelyScroll (line 5) | public interface IInfinitelyScroll
method LoadNextPageAsync (line 7) | Task LoadNextPageAsync();
FILE: StabilityMatrix.Avalonia/Models/IJsonLoadableState.cs
type IJsonLoadableState (line 5) | public interface IJsonLoadableState
method LoadStateFromJsonObject (line 7) | void LoadStateFromJsonObject(JsonObject state, int version);
method LoadStateFromJsonObject (line 9) | void LoadStateFromJsonObject(JsonObject state);
method SaveStateToJsonObject (line 11) | JsonObject SaveStateToJsonObject();
FILE: StabilityMatrix.Avalonia/Models/IParametersLoadableState.cs
type IParametersLoadableState (line 5) | public interface IParametersLoadableState
method LoadStateFromParameters (line 7) | void LoadStateFromParameters(GenerationParameters parameters);
method SaveStateToParameters (line 9) | GenerationParameters SaveStateToParameters(GenerationParameters parame...
method SaveStateToParameters (line 11) | public GenerationParameters SaveStateToParameters()
FILE: StabilityMatrix.Avalonia/Models/IPersistentViewProvider.cs
type IPersistentViewProvider (line 5) | public interface IPersistentViewProvider
FILE: StabilityMatrix.Avalonia/Models/IRemovableListItem.cs
type IRemovableListItem (line 5) | public interface IRemovableListItem
FILE: StabilityMatrix.Avalonia/Models/ITemplateKey.cs
type ITemplateKey (line 6) | public interface ITemplateKey<out T>
FILE: StabilityMatrix.Avalonia/Models/IconData.cs
type IconData (line 5) | public record IconData
FILE: StabilityMatrix.Avalonia/Models/ImageCacheProviders.cs
class ImageCacheProviders (line 7) | public static class ImageCacheProviders
FILE: StabilityMatrix.Avalonia/Models/ImageSource.cs
type ImageSource (line 19) | public record ImageSource : IDisposable, ITemplateKey<ImageSourceTemplat...
FILE: StabilityMatrix.Avalonia/Models/ImageSourceTemplateType.cs
type ImageSourceTemplateType (line 3) | public enum ImageSourceTemplateType
FILE: StabilityMatrix.Avalonia/Models/Inference/EditableModule.cs
type EditableModule (line 9) | public record EditableModule : StringValue
FILE: StabilityMatrix.Avalonia/Models/Inference/FileNameFormat.cs
type FileNameFormat (line 9) | public record FileNameFormat
FILE: StabilityMatrix.Avalonia/Models/Inference/FileNameFormatPart.cs
class FileNameFormatPart (line 6) | [GenerateOneOf]
FILE: StabilityMatrix.Avalonia/Models/Inference/FileNameFormatProvider.cs
class FileNameFormatProvider (line 16) | public partial class FileNameFormatProvider
method Validate (line 65) | [Pure]
method GetParts (line 92) | public IEnumerable<FileNameFormatPart> GetParts(string template)
method GetSample (line 164) | public static FileNameFormatProvider GetSample()
method GetSampleForModelBrowser (line 174) | public static FileNameFormatProvider GetSampleForModelBrowser()
method ExtractVariableAndSlice (line 204) | private static (string Variable, Slice? Slice) ExtractVariableAndSlice...
method BracketRegex (line 230) | [GeneratedRegex(@"\{([a-z_:\d\[\]]+)\}")]
method IndexRegex (line 236) | [GeneratedRegex(@"\[(?:(?<start>-?\d+)?)\:(?:(?<end>-?\d+)?)?(?:\:(?<s...
type Slice (line 239) | private record Slice(int? Start, int? End, int? Step);
FILE: StabilityMatrix.Avalonia/Models/Inference/FileNameFormatVar.cs
type FileNameFormatVar (line 3) | public record FileNameFormatVar
FILE: StabilityMatrix.Avalonia/Models/Inference/GenerateFlags.cs
type GenerateFlags (line 5) | [Flags]
FILE: StabilityMatrix.Avalonia/Models/Inference/GenerateOverrides.cs
class GenerateOverrides (line 3) | public class GenerateOverrides
method FromFlags (line 8) | public static GenerateOverrides FromFlags(GenerateFlags flags)
FILE: StabilityMatrix.Avalonia/Models/Inference/IComfyStep.cs
type IComfyStep (line 3) | public interface IComfyStep
method ApplyStep (line 5) | void ApplyStep(ModuleApplyStepEventArgs e);
FILE: StabilityMatrix.Avalonia/Models/Inference/IInputImageProvider.cs
type IInputImageProvider (line 5) | public interface IInputImageProvider
method GetInputImages (line 7) | IEnumerable<ImageSource> GetInputImages();
FILE: StabilityMatrix.Avalonia/Models/Inference/IValidatableModule.cs
type IValidatableModule (line 5) | public interface IValidatableModule
method Validate (line 7) | public Task<bool> Validate();
FILE: StabilityMatrix.Avalonia/Models/Inference/InferenceTextToImageModel.cs
class InferenceTextToImageModel (line 5) | public class InferenceTextToImageModel
FILE: StabilityMatrix.Avalonia/Models/Inference/LatentType.cs
type LatentType (line 3) | public enum LatentType
FILE: StabilityMatrix.Avalonia/Models/Inference/LoadViewStateEventArgs.cs
class LoadViewStateEventArgs (line 8) | public class LoadViewStateEventArgs : EventArgs
FILE: StabilityMatrix.Avalonia/Models/Inference/ModuleApplyStepEventArgs.cs
class ModuleApplyStepEventArgs (line 16) | public class ModuleApplyStepEventArgs : EventArgs
method InvokeAllPreOutputActions (line 33) | public void InvokeAllPreOutputActions()
method CreateTempFromBuilder (line 45) | public ModuleApplyStepTemporaryArgs CreateTempFromBuilder()
method AddFileTransfer (line 60) | public void AddFileTransfer(string sourcePath, string destinationRelat...
method AddFileTransferToConfigs (line 69) | public string AddFileTransferToConfigs(string sourcePath)
FILE: StabilityMatrix.Avalonia/Models/Inference/NoiseType.cs
type NoiseType (line 3) | public enum NoiseType
FILE: StabilityMatrix.Avalonia/Models/Inference/Prompt.cs
type Prompt (line 22) | public record Prompt
FILE: StabilityMatrix.Avalonia/Models/Inference/PromptAmplifierMode.cs
type PromptAmplifierMode (line 3) | public enum PromptAmplifierMode
FILE: StabilityMatrix.Avalonia/Models/Inference/PromptCardModel.cs
class PromptCardModel (line 5) | public class PromptCardModel
FILE: StabilityMatrix.Avalonia/Models/Inference/SamplerCardModel.cs
class SamplerCardModel (line 3) | public class SamplerCardModel
FILE: StabilityMatrix.Avalonia/Models/Inference/SaveViewStateEventArgs.cs
class SaveViewStateEventArgs (line 9) | public class SaveViewStateEventArgs : EventArgs
FILE: StabilityMatrix.Avalonia/Models/Inference/SeedCardModel.cs
type SeedCardModel (line 5) | [JsonSerializable(typeof(SeedCardModel))]
FILE: StabilityMatrix.Avalonia/Models/Inference/StackCardModel.cs
class StackCardModel (line 6) | public class StackCardModel
FILE: StabilityMatrix.Avalonia/Models/Inference/StackExpanderModel.cs
class StackExpanderModel (line 3) | public class StackExpanderModel : StackCardModel
FILE: StabilityMatrix.Avalonia/Models/Inference/UpscalerCardModel.cs
class UpscalerCardModel (line 5) | public class UpscalerCardModel
FILE: StabilityMatrix.Avalonia/Models/Inference/VideoOutputMethod.cs
type VideoOutputMethod (line 5) | [JsonConverter(typeof(JsonStringEnumConverter<VideoOutputMethod>))]
FILE: StabilityMatrix.Avalonia/Models/Inference/ViewState.cs
class ViewState (line 6) | public class ViewState
FILE: StabilityMatrix.Avalonia/Models/InferenceProjectDocument.cs
class InferenceProjectDocument (line 14) | public class InferenceProjectDocument : ICloneable
method FromLoadable (line 27) | public static InferenceProjectDocument FromLoadable(IJsonLoadableState...
method VerifyVersion (line 45) | public void VerifyVersion()
method GetSeedModel (line 56) | public SeedCardModel? GetSeedModel()
method WithState (line 70) | public InferenceProjectDocument WithState(Action<JsonObject?> stateMod...
method TryUpdateModel (line 77) | public bool TryUpdateModel<T>(string key, Func<T, T> modifier)
method TryUpdateModel (line 99) | public bool TryUpdateModel(string key, Func<JsonNode, JsonNode> modifier)
method WithBatchSize (line 114) | public InferenceProjectDocument WithBatchSize(int batchSize, int batch...
method Clone (line 131) | public object Clone()
FILE: StabilityMatrix.Avalonia/Models/ObservableDictionary.cs
class ObservableDictionary (line 9) | public class ObservableDictionary<TKey, TValue> : IDictionary<TKey, TVal...
method GetEnumerator (line 16) | public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator() => dict...
method GetEnumerator (line 18) | IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
method ObservableDictionary (line 20) | public ObservableDictionary()
method ObservableDictionary (line 25) | public ObservableDictionary(Dictionary<TKey, TValue> dictionary)
method Add (line 30) | public void Add(KeyValuePair<TKey, TValue> item)
method Clear (line 40) | public void Clear()
method Contains (line 50) | public bool Contains(KeyValuePair<TKey, TValue> item) => dictionary.Co...
method CopyTo (line 52) | public void CopyTo(KeyValuePair<TKey, TValue>[] array, int arrayIndex)
method Remove (line 57) | public bool Remove(KeyValuePair<TKey, TValue> item)
method Add (line 74) | public void Add(TKey key, TValue value)
method ContainsKey (line 85) | public bool ContainsKey(TKey key) => dictionary.ContainsKey(key);
method Remove (line 87) | public bool Remove(TKey key)
method TryGetValue (line 102) | public bool TryGetValue([NotNull] TKey key, [MaybeNullWhen(false)] out...
FILE: StabilityMatrix.Avalonia/Models/OpenArtCustomNode.cs
class OpenArtCustomNode (line 5) | public class OpenArtCustomNode
FILE: StabilityMatrix.Avalonia/Models/OpenArtMetadata.cs
class OpenArtMetadata (line 10) | public class OpenArtMetadata
FILE: StabilityMatrix.Avalonia/Models/PackageManagerNavigationOptions.cs
type PackageManagerNavigationOptions (line 5) | public record PackageManagerNavigationOptions
FILE: StabilityMatrix.Avalonia/Models/PackageSteps/UnpackSiteCustomizeStep.cs
class UnpackSiteCustomizeStep (line 10) | public class UnpackSiteCustomizeStep(DirectoryPath venvPath) : IPackageStep
method ExecuteAsync (line 12) | public async Task ExecuteAsync(IProgress<ProgressReport>? progress = n...
FILE: StabilityMatrix.Avalonia/Models/PaintCanvasTool.cs
type PaintCanvasTool (line 3) | public enum PaintCanvasTool
FILE: StabilityMatrix.Avalonia/Models/PythonPackageSpecifiersItem.cs
class PythonPackageSpecifiersItem (line 9) | public class PythonPackageSpecifiersItem
method FromSpecifier (line 16) | public static PythonPackageSpecifiersItem FromSpecifier(PipPackageSpec...
method ToSpecifier (line 27) | public PipPackageSpecifierOverride ToSpecifier()
FILE: StabilityMatrix.Avalonia/Models/SelectableItem.cs
class SelectableItem (line 10) | [PublicAPI]
method Equals (line 26) | public bool Equals(SelectableItem<T>? other)
method Equals (line 36) | public override bool Equals(object? obj)
method GetHashCode (line 48) | public override int GetHashCode()
FILE: StabilityMatrix.Avalonia/Models/SharedState.cs
class SharedState (line 9) | [RegisterSingleton<SharedState>]
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/CompletionProvider.cs
class CompletionProvider (line 29) | [RegisterSingleton<ICompletionProvider, CompletionProvider>]
method BracketsRegex (line 34) | [GeneratedRegex(@"([\[\]()<>])")]
method CompletionProvider (line 63) | public CompletionProvider(
method PrepareInsertionText_Process (line 108) | private string PrepareInsertionText_Process(ICompletionData data)
method BackgroundLoadFromFile (line 130) | public void BackgroundLoadFromFile(FilePath path, bool recreate = false)
method Setup (line 153) | public async Task Setup()
method LoadFromFile (line 224) | public async Task LoadFromFile(FilePath path, bool recreate = false)
method GetCompletions (line 304) | public IEnumerable<ICompletionData> GetCompletions(
method GetCompletionNetworks (line 332) | private IEnumerable<ICompletionData> GetCompletionNetworks(
method GetCompletionNetworkTypes (line 355) | private IEnumerable<ICompletionData> GetCompletionNetworkTypes(string ...
method GetCompletionTags (line 371) | private IEnumerable<ICompletionData> GetCompletionTags(string searchTe...
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/CompletionType.cs
type CompletionType (line 8) | [Flags]
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/EditorCompletionRequest.cs
type EditorCompletionRequest (line 5) | public record EditorCompletionRequest : TextCompletionRequest
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/ICompletionProvider.cs
type ICompletionProvider (line 9) | public interface ICompletionProvider
method Setup (line 24) | Task Setup();
method LoadFromFile (line 29) | Task LoadFromFile(FilePath path, bool recreate = false);
method BackgroundLoadFromFile (line 34) | void BackgroundLoadFromFile(FilePath path, bool recreate = false);
method GetCompletions (line 39) | public IEnumerable<ICompletionData> GetCompletions(
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/ITokenizerProvider.cs
type ITokenizerProvider (line 5) | public interface ITokenizerProvider
method TokenizeLine (line 10) | ITokenizeLineResult TokenizeLine(string lineText);
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/ModelCompletionData.cs
class ModelCompletionData (line 10) | public class ModelCompletionData : CompletionData
method ModelCompletionData (line 15) | public ModelCompletionData(string text, PromptExtraNetworkType network...
method FromLocalModel (line 23) | public static ModelCompletionData FromLocalModel(
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/ModelTypeCompletionData.cs
class ModelTypeCompletionData (line 7) | public class ModelTypeCompletionData : CompletionData
method ModelTypeCompletionData (line 12) | public ModelTypeCompletionData(string text, PromptExtraNetworkType net...
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/TagCompletionData.cs
class TagCompletionData (line 6) | public class TagCompletionData : CompletionData
method TagCompletionData (line 11) | public TagCompletionData(string text, TagType tagType) : base(text)
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/TagCsvEntry.cs
type TagCsvEntry (line 3) | public record TagCsvEntry
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/TagType.cs
type TagType (line 6) | [JsonConverter(typeof(DefaultUnknownEnumConverter<TagType>))]
class TagTypeExtensions (line 20) | public static class TagTypeExtensions
method FromE621 (line 22) | public static TagType FromE621(int tag)
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/TextCompletionRequest.cs
type TextCompletionRequest (line 5) | public record TextCompletionRequest
FILE: StabilityMatrix.Avalonia/Models/TagCompletion/TokenizerProvider.cs
class TokenizerProvider (line 9) | [RegisterSingleton<ITokenizerProvider, TokenizerProvider>]
method TokenizeLine (line 16) | public ITokenizeLineResult TokenizeLine(string lineText)
method SetPromptGrammar (line 25) | [MemberNotNull(nameof(grammar))]
method SetGrammar (line 32) | public void SetGrammar(string scopeName)
FILE: StabilityMatrix.Avalonia/Models/TextEditorPreset.cs
type TextEditorPreset (line 3) | public enum TextEditorPreset
FILE: StabilityMatrix.Avalonia/Models/TreeFileExplorer/TreeFileExplorerDirectory.cs
class TreeFileExplorerDirectory (line 8) | public class TreeFileExplorerDirectory(IPathObject path, TreeFileExplore...
method GetChildren (line 16) | private static IEnumerable<TreeFileExplorerItem> GetChildren(
method GetChildren (line 29) | private static IEnumerable<TreeFileExplorerItem> GetChildren(
FILE: StabilityMatrix.Avalonia/Models/TreeFileExplorer/TreeFileExplorerFile.cs
class TreeFileExplorerFile (line 5) | public class TreeFileExplorerFile(IPathObject path, TreeFileExplorerOpti...
FILE: StabilityMatrix.Avalonia/Models/TreeFileExplorer/TreeFileExplorerItem.cs
class TreeFileExplorerItem (line 5) | public class TreeFileExplorerItem(IPathObject path, TreeFileExplorerOpti...
FILE: StabilityMatrix.Avalonia/Models/TreeFileExplorer/TreeFileExplorerOptions.cs
type TreeFileExplorerOptions (line 5) | [Flags]
FILE: StabilityMatrix.Avalonia/Models/TreeFileExplorer/TreeFileExplorerType.cs
type TreeFileExplorerType (line 3) | public enum TreeFileExplorerType
FILE: StabilityMatrix.Avalonia/Models/TreeViewDirectory.cs
class TreeViewDirectory (line 6) | public partial class TreeViewDirectory : ObservableObject
FILE: StabilityMatrix.Avalonia/Models/TypedNavigationEventArgs.cs
class TypedNavigationEventArgs (line 5) | public class TypedNavigationEventArgs : EventArgs
FILE: StabilityMatrix.Avalonia/Models/UpdateChannelCard.cs
class UpdateChannelCard (line 10) | public partial class UpdateChannelCard : ObservableObject
FILE: StabilityMatrix.Avalonia/Models/ViewModelState.cs
type ViewModelState (line 8) | [Flags]
FILE: StabilityMatrix.Avalonia/Program.cs
class Program (line 36) | public static class Program
method Main (line 54) | [STAThread]
method HandleUriScheme (line 135) | [DoesNotReturn]
method SetupAvaloniaApp (line 161) | internal static void SetupAvaloniaApp()
method BuildAvaloniaApp (line 181) | public static AppBuilder BuildAvaloniaApp()
method HandleUpdateReplacement (line 227) | private static void HandleUpdateReplacement()
method HandleUpdateCleanup (line 313) | private static void HandleUpdateCleanup()
method WaitForPidExit (line 335) | private static void WaitForPidExit(int pid, TimeSpan timeout)
method ConfigureSentry (line 357) | private static void ConfigureSentry()
method TaskScheduler_UnobservedTaskException (line 389) | private static void TaskScheduler_UnobservedTaskException(
method CurrentDomain_UnhandledException (line 400) | private static void CurrentDomain_UnhandledException(object sender, Un...
method ExitWithException (line 465) | [DoesNotReturn]
method SetDebugBuild (line 477) | [Conditional("DEBUG")]
FILE: StabilityMatrix.Avalonia/Services/AccountsService.cs
class AccountsService (line 26) | [RegisterSingleton<IAccountsService, AccountsService>]
method AccountsService (line 52) | public AccountsService(
method HasStoredLykosAccountAsync (line 76) | public async Task<bool> HasStoredLykosAccountAsync()
method LykosLoginAsync (line 88) | public async Task LykosLoginAsync(string email, string password)
method LykosLoginViaGoogleOAuthAsync (line 101) | public async Task LykosLoginViaGoogleOAuthAsync(string code, string st...
method LykosSignupAsync (line 114) | public async Task LykosSignupAsync(string email, string password, stri...
method LykosLogoutAsync (line 129) | public async Task LykosLogoutAsync()
method LykosAccountV2LoginAsync (line 137) | public async Task LykosAccountV2LoginAsync(LykosAccountV2Tokens tokens)
method LykosAccountV2LogoutAsync (line 146) | public async Task LykosAccountV2LogoutAsync()
method LykosPatreonOAuthLogoutAsync (line 155) | public async Task LykosPatreonOAuthLogoutAsync()
method CivitLoginAsync (line 170) | public async Task CivitLoginAsync(string apiToken)
method CivitLogoutAsync (line 192) | public async Task CivitLogoutAsync()
method RefreshAsync (line 200) | public async Task RefreshAsync()
method RefreshLykosAsync (line 209) | public async Task RefreshLykosAsync()
method RefreshHuggingFaceAsync (line 216) | public async Task RefreshHuggingFaceAsync()
method RefreshLykosAsync (line 222) | private async Task RefreshLykosAsync(Secrets secrets)
method RefreshHuggingFaceAsync (line 277) | private async Task RefreshHuggingFaceAsync(Secrets secrets)
method RefreshCivitAsync (line 344) | private async Task RefreshCivitAsync(Secrets secrets)
method OnLykosAccountStatusUpdate (line 378) | private void OnLykosAccountStatusUpdate(LykosAccountStatusUpdateEventA...
method OnCivitAccountStatusUpdate (line 396) | private void OnCivitAccountStatusUpdate(CivitAccountStatusUpdateEventA...
method OnHuggingFaceAccountStatusUpdate (line 414) | private void OnHuggingFaceAccountStatusUpdate(HuggingFaceAccountStatus...
method HuggingFaceLoginAsync (line 435) | public async Task HuggingFaceLoginAsync(string token)
method HuggingFaceLogoutAsync (line 443) | public async Task HuggingFaceLogoutAsync()
FILE: StabilityMatrix.Avalonia/Services/CivitBaseModelTypeService.cs
class CivitBaseModelTypeService (line 12) | [RegisterSingleton<ICivitBaseModelTypeService, CivitBaseModelTypeService>]
method GetBaseModelTypes (line 25) | public async Task<List<string>> GetBaseModelTypes(bool forceRefresh = ...
method ClearCache (line 90) | public void ClearCache()
FILE: StabilityMatrix.Avalonia/Services/ConnectedServiceManager.cs
class ConnectedServiceManager (line 15) | [Localizable(false)]
method PromptEnableCivitUseDiscoveryApi (line 27) | public async Task<bool> PromptEnableCivitUseDiscoveryApi()
method PromptLoginIfRequired (line 60) | public async Task<bool> PromptLoginIfRequired()
FILE: StabilityMatrix.Avalonia/Services/DiscordRichPresenceService.cs
class DiscordRichPresenceService (line 12) | public class DiscordRichPresenceService : IDiscordRichPresenceService
method DiscordRichPresenceService (line 37) | public DiscordRichPresenceService(
method OnReady (line 65) | private void OnReady(object sender, ReadyMessage args)
method OnError (line 70) | private void OnError(object sender, ErrorMessage args)
method OnClose (line 75) | private void OnClose(object sender, CloseMessage args)
method OnPresenceUpdate (line 80) | private void OnPresenceUpdate(object sender, PresenceMessage args)
method OnRunningPackageStatusChanged (line 85) | private void OnRunningPackageStatusChanged(object? sender, RunningPack...
method UpdateState (line 139) | public void UpdateState()
method Dispose (line 166) | public void Dispose()
FILE: StabilityMatrix.Avalonia/Services/IAccountsService.cs
type IAccountsService (line 8) | public interface IAccountsService
method HasStoredLykosAccountAsync (line 22) | Task<bool> HasStoredLykosAccountAsync();
method LykosSignupAsync (line 24) | [Obsolete]
method LykosLoginAsync (line 27) | [Obsolete]
method LykosLoginViaGoogleOAuthAsync (line 30) | [Obsolete]
method LykosLogoutAsync (line 33) | [Obsolete]
method LykosAccountV2LoginAsync (line 36) | Task LykosAccountV2LoginAsync(LykosAccountV2Tokens tokens);
method LykosAccountV2LogoutAsync (line 38) | Task LykosAccountV2LogoutAsync();
method LykosPatreonOAuthLogoutAsync (line 40) | Task LykosPatreonOAuthLogoutAsync();
method CivitLoginAsync (line 42) | Task CivitLoginAsync(string apiToken);
method CivitLogoutAsync (line 44) | Task CivitLogoutAsync();
method RefreshAsync (line 46) | Task RefreshAsync();
method RefreshLykosAsync (line 48) | Task RefreshLykosAsync();
method HuggingFaceLoginAsync (line 50) | Task HuggingFaceLoginAsync(string token);
method HuggingFaceLogoutAsync (line 51) | Task HuggingFaceLogoutAsync();
method RefreshHuggingFaceAsync (line 52) | Task RefreshHuggingFaceAsync();
FILE: StabilityMatrix.Avalonia/Services/ICivitBaseModelTypeService.cs
type ICivitBaseModelTypeService (line 3) | public interface ICivitBaseModelTypeService
method GetBaseModelTypes (line 5) | Task<List<string>> GetBaseModelTypes(bool forceRefresh = false, bool i...
method ClearCache (line 6) | void ClearCache();
FILE: StabilityMatrix.Avalonia/Services/IConnectedServiceManager.cs
type IConnectedServiceManager (line 3) | public interface IConnectedServiceManager
method PromptEnableCivitUseDiscoveryApi (line 8) | Task<bool> PromptEnableCivitUseDiscoveryApi();
method PromptLoginIfRequired (line 14) | Task<bool> PromptLoginIfRequired();
FILE: StabilityMatrix.Avalonia/Services/IDiscordRichPresenceService.cs
type IDiscordRichPresenceService (line 5) | public interface IDiscordRichPresenceService : IDisposable
method UpdateState (line 7) | public void UpdateState();
FILE: StabilityMatrix.Avalonia/Services/IInferenceClientManager.cs
type IInferenceClientManager (line 16) | public interface IInferenceClientManager : IDisposable, INotifyPropertyC...
method CopyImageToInputAsync (line 57) | Task CopyImageToInputAsync(FilePath imageFile, CancellationToken cance...
method UploadInputImageAsync (line 59) | Task UploadInputImageAsync(ImageSource image, CancellationToken cancel...
method WriteImageToInputAsync (line 61) | Task WriteImageToInputAsync(ImageSource imageSource, CancellationToken...
method ConnectAsync (line 63) | Task ConnectAsync(CancellationToken cancellationToken = default);
method ConnectAsync (line 65) | Task ConnectAsync(PackagePair packagePair, CancellationToken cancellat...
method CloseAsync (line 67) | Task CloseAsync();
FILE: StabilityMatrix.Avalonia/Services/IModelDownloadLinkHandler.cs
type IModelDownloadLinkHandler (line 5) | public interface IModelDownloadLinkHandler
method StartListening (line 7) | Task StartListening();
FILE: StabilityMatrix.Avalonia/Services/IModelImportService.cs
type IModelImportService (line 13) | public interface IModelImportService
method SavePreviewImage (line 21) | Task<FilePath?> SavePreviewImage(CivitModelVersion modelVersion, FileP...
method DoImport (line 23) | Task DoImport(
method DoOpenModelDbImport (line 39) | Task DoOpenModelDbImport(
method DoCustomImport (line 56) | Task DoCustomImport(
method DoCustomImport (line 85) | Task DoCustomImport(
FILE: StabilityMatrix.Avalonia/Services/INavigationService.cs
type INavigationService (line 10) | public interface INavigationService<[SuppressMessage("ReSharper", "Unuse...
method SetFrame (line 17) | void SetFrame(Frame frame);
method NavigateTo (line 22) | void NavigateTo<TViewModel>(NavigationTransitionInfo? transitionInfo =...
method NavigateTo (line 28) | void NavigateTo(
method NavigateTo (line 37) | void NavigateTo(ViewModelBase viewModel, NavigationTransitionInfo? tra...
method GoBack (line 39) | bool GoBack();
FILE: StabilityMatrix.Avalonia/Services/INotificationService.cs
type INotificationService (line 12) | public interface INotificationService
method Initialize (line 14) | public void Initialize(
method Show (line 20) | public void Show(INotification notification);
method TryAsync (line 29) | Task<TaskResult<T>> TryAsync<T>(
method TryAsync (line 44) | Task<TaskResult<bool>> TryAsync(
method ShowPersistentAsync (line 54) | Task ShowPersistentAsync(NotificationKey key, DesktopNotifications.Not...
method ShowAsync (line 59) | Task ShowAsync(
method Show (line 68) | void Show(
method ShowPersistent (line 81) | void ShowPersistent(
method ShowPersistent (line 90) | void ShowPersistent(
method GetNativeNotificationManagerAsync (line 99) | Task<DesktopNotifications.INotificationManager?> GetNativeNotification...
FILE: StabilityMatrix.Avalonia/Services/IServiceManager.cs
type IServiceManager (line 5) | [Localizable(false)]
method Register (line 11) | IServiceManager<T> Register<TService>(TService instance)
method Register (line 17) | IServiceManager<T> Register<TService>(Func<TService> provider)
method Register (line 20) | void Register(Type type, Func<T> providerFunc);
method RegisterProvider (line 26) | IServiceManager<T> RegisterProvider<TService>(IServiceProvider provider)
method RegisterScoped (line 33) | IServiceManager<T> RegisterScoped<TService>(Func<IServiceProvider, TSe...
method CreateScope (line 40) | IServiceManagerScope<T> CreateScope();
method Get (line 45) | T Get(Type serviceType);
method Get (line 50) | TService Get<TService>()
method Get (line 56) | public TService Get<TService>(Func<TService, TService> initializer)
method Get (line 66) | public TService Get<TService>(Action<TService> initializer)
method RegisterScoped (line 78) | IServiceManager<T> RegisterScoped(Type type, Func<IServiceProvider, T>...
FILE: StabilityMatrix.Avalonia/Services/IServiceManagerScope.cs
type IServiceManagerScope (line 3) | public interface IServiceManagerScope<T> : IDisposable
FILE: StabilityMatrix.Avalonia/Services/InferenceClientManager.cs
class InferenceClientManager (line 36) | [RegisterSingleton<IInferenceClientManager, InferenceClientManager>]
method InferenceClientManager (line 158) | public InferenceClientManager(
method EnsureConnected (line 353) | [MemberNotNull(nameof(Client))]
method LoadSharedPropertiesAsync (line 360) | protected virtual async Task LoadSharedPropertiesAsync()
method ResetSharedProperties (line 534) | protected void ResetSharedProperties()
method UploadInputImageAsync (line 670) | public async Task UploadInputImageAsync(ImageSource image, Cancellatio...
method CopyImageToInputAsync (line 715) | public async Task CopyImageToInputAsync(FilePath imageFile, Cancellati...
method WriteImageToInputAsync (line 744) | public async Task WriteImageToInputAsync(
method ConnectAsyncImpl (line 761) | [MemberNotNull(nameof(Client))]
method MigrateLinksIfNeeded (line 792) | private async Task MigrateLinksIfNeeded(PackagePair packagePair)
method ConnectAsync (line 829) | public virtual Task ConnectAsync(CancellationToken cancellationToken =...
method ConnectAsync (line 835) | public virtual async Task ConnectAsync(
method CloseAsync (line 880) | public async Task CloseAsync()
method Dispose (line 890) | public void Dispose()
FILE: StabilityMatrix.Avalonia/Services/ModelDownloadLinkHandler.cs
class ModelDownloadLinkHandler (line 21) | [RegisterSingleton<IModelDownloadLinkHandler, ModelDownloadLinkHandler>]
method StartListening (line 34) | public async Task StartListening()
method DisposeAsync (line 42) | public async ValueTask DisposeAsync()
method UriReceivedHandler (line 51) | private void UriReceivedHandler(Uri receivedUri)
FILE: StabilityMatrix.Avalonia/Services/ModelImportService.cs
class ModelImportService (line 15) | [RegisterSingleton<IModelImportService, ModelImportService>]
method SaveCmInfo (line 22) | public static async Task<FilePath> SaveCmInfo(
method SavePreviewImage (line 66) | public async Task<FilePath?> SavePreviewImage(CivitModelVersion modelV...
method DoImport (line 94) | public async Task DoImport(
method DoOpenModelDbImport (line 232) | public Task DoOpenModelDbImport(
method DoCustomImport (line 267) | public async Task DoCustomImport(
method GenerateUniqueFileName (line 342) | private string GenerateUniqueFileName(string folder, string fileName)
FILE: StabilityMatrix.Avalonia/Services/NavigationService.cs
class NavigationService (line 17) | [RegisterSingleton<INavigationService<MainWindowViewModel>, NavigationSe...
method SetFrame (line 27) | public void SetFrame(Frame frame)
method NavigateTo (line 33) | public void NavigateTo<TViewModel>(NavigationTransitionInfo? transitio...
method NavigateTo (line 71) | public void NavigateTo(
method NavigateTo (line 118) | public void NavigateTo(ViewModelBase viewModel, NavigationTransitionIn...
method GoBack (line 156) | public bool GoBack()
FILE: StabilityMatrix.Avalonia/Services/NotificationService.cs
class NotificationService (line 22) | [RegisterSingleton<INotificationService, NotificationService>]
method Initialize (line 33) | public void Initialize(
method Show (line 48) | public void Show(INotification notification)
method ShowPersistentAsync (line 54) | public Task ShowPersistentAsync(NotificationKey key, DesktopNotificati...
method ShowAsync (line 60) | public Task ShowAsync(
method ShowAsyncCore (line 72) | private async Task ShowAsyncCore(
method Show (line 162) | public void Show(
method ShowPersistent (line 172) | public void ShowPersistent(
method ShowPersistent (line 182) | public void ShowPersistent(
method TryAsync (line 195) | public async Task<TaskResult<T>> TryAsync<T>(
method TryAsync (line 214) | public async Task<TaskResult<bool>> TryAsync(
method Dispose (line 234) | public void Dispose()
method GetNativeNotificationManagerAsync (line 241) | public async Task<INotificationManager?> GetNativeNotificationManagerA...
FILE: StabilityMatrix.Avalonia/Services/RunningPackageService.cs
class RunningPackageService (line 24) | [RegisterSingleton<RunningPackageService>]
method StartPackage (line 42) | public async Task<PackagePair?> StartPackage(
method StopPackage (line 266) | public async Task StopPackage(Guid id, CancellationToken cancellationT...
method GetRunningPackageViewModel (line 286) | public RunningPackageViewModel? GetRunningPackageViewModel(Guid id) =>
method UnpackSiteCustomize (line 289) | private static async Task UnpackSiteCustomize(DirectoryPath venvPath)
method Dispose (line 297) | public void Dispose()
FILE: StabilityMatrix.Avalonia/Services/ScopedServiceManager.cs
class ScopedServiceManager (line 5) | internal class ScopedServiceManager<T> : IServiceManager<T>
method ScopedServiceManager (line 10) | internal ScopedServiceManager(ServiceManager<T> parentManager, IServic...
method Register (line 18) | public IServiceManager<T> Register<TService>(TService instance)
method Register (line 24) | public IServiceManager<T> Register<TService>(Func<TService> provider)
method Register (line 30) | public void Register(Type type, Func<T> providerFunc)
method RegisterProvider (line 35) | public IServiceManager<T> RegisterProvider<TService>(IServiceProvider ...
method RegisterScoped (line 41) | public IServiceManager<T> RegisterScoped<TService>(Func<IServiceProvid...
method RegisterScoped (line 47) | public IServiceManager<T> RegisterScoped(Type type, Func<IServiceProvi...
method CreateScope (line 52) | public IServiceManagerScope<T> CreateScope()
method Get (line 57) | public TService Get<TService>()
method Get (line 63) | public T Get(Type serviceType)
FILE: StabilityMatrix.Avalonia/Services/ServiceManager.cs
class ServiceManager (line 8) | [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
method Register (line 24) | public IServiceManager<T> Register<TService>(TService instance)
method Register (line 48) | public IServiceManager<T> Register<TService>(Func<TService> provider)
method Register (line 68) | public void Register(Type type, Func<T> providerFunc)
method RegisterScoped (line 85) | public IServiceManager<T> RegisterScoped<TService>(Func<IServiceProvid...
method RegisterScoped (line 108) | public IServiceManager<T> RegisterScoped(Type type, Func<IServiceProvi...
method RegisterProvider (line 128) | public IServiceManager<T> RegisterProvider<TService>(IServiceProvider ...
method CreateScope (line 152) | public IServiceManagerScope<T> CreateScope()
method TryGetScopedProvider (line 159) | internal bool TryGetScopedProvider(
method Get (line 170) | [SuppressMessage("ReSharper", "InconsistentlySynchronizedField")]
method Get (line 207) | [SuppressMessage("ReSharper", "InconsistentlySynchronizedField")]
FILE: StabilityMatrix.Avalonia/Services/ServiceManagerScope.cs
class ServiceManagerScope (line 6) | internal class ServiceManagerScope<T>(
method Dispose (line 13) | public void Dispose()
FILE: StabilityMatrix.Avalonia/Services/TabContext.cs
class TabContext (line 11) | [RegisterScoped<TabContext>]
method OnSelectedModelChanged (line 20) | partial void OnSelectedModelChanged(HybridModelFile? value)
method OnStateChanged (line 25) | protected virtual void OnStateChanged(string propertyName)
class TabStateChangedEventArgs (line 30) | public class TabStateChangedEventArgs(string propertyName) : EventArgs
FILE: StabilityMatrix.Avalonia/Styles/Markdown/MarkdownStyleFluentAvalonia.axaml.cs
class MarkdownStyleFluentAvalonia (line 5) | public partial class MarkdownStyleFluentAvalonia : global::Avalonia.Styl...
method MarkdownStyleFluentAvalonia (line 7) | public MarkdownStyleFluentAvalonia()
FILE: StabilityMatrix.Avalonia/Styles/SemiStyles.axaml.cs
class SemiStyles (line 6) | public partial class SemiStyles : global::Avalonia.Styling.Styles
method SemiStyles (line 8) | public SemiStyles(IServiceProvider? provider = null)
FILE: StabilityMatrix.Avalonia/Styles/ThemeColors.cs
class ThemeColors (line 5) | public static class ThemeColors
FILE: StabilityMatrix.Avalonia/ViewLocator.cs
class ViewLocator (line 12) | public class ViewLocator : IDataTemplate, INavigationPageFactory
method Build (line 22) | public Control Build(object? data)
method GetView (line 38) | private Control GetView(Type viewType)
method GetView (line 48) | private Control GetView(Type viewType, object context, bool persistent)
method Match (line 96) | public bool Match(object? data)
method GetPage (line 102) | public Control? GetPage(Type srcType)
method GetPageFromObject (line 120) | public Control GetPageFromObject(object target)
FILE: StabilityMatrix.Avalonia/ViewModels/Base/ConsoleProgressViewModel.cs
class ConsoleProgressViewModel (line 5) | public partial class ConsoleProgressViewModel : ProgressViewModel
FILE: StabilityMatrix.Avalonia/ViewModels/Base/ContentDialogProgressViewModelBase.cs
class ContentDialogProgressViewModelBase (line 7) | public partial class ContentDialogProgressViewModelBase : ConsoleProgres...
method OnPrimaryButtonClick (line 19) | public virtual void OnPrimaryButtonClick()
method OnSecondaryButtonClick (line 24) | public virtual void OnSecondaryButtonClick()
method OnCloseButtonClick (line 29) | public virtual void OnCloseButtonClick()
FILE: StabilityMatrix.Avalonia/ViewModels/Base/ContentDialogViewModelBase.cs
class ContentDialogViewModelBase (line 8) | public class ContentDialogViewModelBase : DisposableViewModelBase
method OnPrimaryButtonClick (line 17) | public virtual void OnPrimaryButtonClick()
method OnSecondaryButtonClick (line 22) | public virtual void OnSecondaryButtonClick()
method OnCloseButtonClick (line 27) | public virtual void OnCloseButtonClick()
method GetDialog (line 35) | public virtual BetterContentDialog GetDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Base/DisposableLoadableViewModelBase.cs
class DisposableLoadableViewModelBase (line 7) | public abstract class DisposableLoadableViewModelBase : LoadableViewMode...
method AddDisposable (line 15) | protected void AddDisposable([HandlesResourceDisposal] IDisposable dis...
method AddDisposable (line 24) | protected void AddDisposable([HandlesResourceDisposal] params IDisposa...
method AddDisposable (line 38) | protected T AddDisposable<T>([HandlesResourceDisposal] T disposable)
method AddDisposable (line 51) | protected T[] AddDisposable<T>([HandlesResourceDisposal] params T[] di...
method Dispose (line 62) | protected virtual void Dispose(bool disposing)
method Dispose (line 70) | public void Dispose()
FILE: StabilityMatrix.Avalonia/ViewModels/Base/DisposableViewModelBase.cs
class DisposableViewModelBase (line 7) | public abstract class DisposableViewModelBase : ViewModelBase, IDisposable
method AddDisposable (line 15) | protected void AddDisposable([HandlesResourceDisposal] IDisposable dis...
method AddDisposable (line 24) | protected void AddDisposable([HandlesResourceDisposal] params IDisposa...
method AddDisposable (line 38) | protected T AddDisposable<T>([HandlesResourceDisposal] T disposable)
method AddDisposable (line 51) | protected T[] AddDisposable<T>([HandlesResourceDisposal] params T[] di...
method Dispose (line 62) | protected virtual void Dispose(bool disposing)
method Dispose (line 70) | public void Dispose()
FILE: StabilityMatrix.Avalonia/ViewModels/Base/InferenceGenerationViewModelBase.cs
class InferenceGenerationViewModelBase (line 54) | [SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
method InferenceGenerationViewModelBase (line 79) | protected InferenceGenerationViewModelBase(
method WriteOutputImageAsync (line 104) | protected Task<FilePath> WriteOutputImageAsync(
method WriteOutputImageAsync (line 130) | protected async Task<FilePath> WriteOutputImageAsync(
method BuildPrompt (line 207) | protected virtual void BuildPrompt(BuildPromptEventArgs args) { }
method UploadPromptFiles (line 212) | protected virtual async Task UploadPromptFiles(
method GetInputImages (line 232) | protected virtual IEnumerable<ImageSource> GetInputImages()
method UploadInputImages (line 237) | protected async Task UploadInputImages(ComfyClient client)
method RunCustomGeneration (line 245) | public async Task RunCustomGeneration(
method RunGeneration (line 273) | protected async Task RunGeneration(ImageGenerationEventArgs args, Canc...
method ProcessAllOutputImages (line 433) | private async Task<IEnumerable<ImageSource>> ProcessAllOutputImages(
method ProcessOutputImages (line 457) | private async Task<List<ImageSource>> ProcessOutputImages(
method GenerateImageImpl (line 605) | protected virtual Task GenerateImageImpl(GenerateOverrides overrides, ...
method GenerateImage (line 615) | [RelayCommand(IncludeCancelCommand = true, FlowExceptionsToTaskSchedul...
method CheckClientConnectedWithPrompt (line 641) | protected async Task<bool> CheckClientConnectedWithPrompt()
method CheckPromptExtensionsInstalled (line 655) | private async Task<bool> CheckPromptExtensionsInstalled(NodeDictionary...
method OnPreviewImageReceived (line 824) | protected virtual void OnPreviewImageReceived(object? sender, ComfyWeb...
method OnProgressUpdateReceived (line 833) | protected virtual void OnProgressUpdateReceived(object? sender, ComfyP...
method AttachRunningNodeChangedHandler (line 846) | private void AttachRunningNodeChangedHandler(ComfyTask comfyTask)
method OnRunningNodeChanged (line 860) | protected virtual void OnRunningNodeChanged(object? sender, string? no...
class ImageGenerationEventArgs (line 883) | public class ImageGenerationEventArgs : EventArgs
class BuildPromptEventArgs (line 895) | public class BuildPromptEventArgs : EventArgs
method ToModuleApplyStepEventArgs (line 902) | public ModuleApplyStepEventArgs ToModuleApplyStepEventArgs()
FILE: StabilityMatrix.Avalonia/ViewModels/Base/InferenceTabViewModelBase.cs
class InferenceTabViewModelBase (line 35) | public abstract partial class InferenceTabViewModelBase
method LoadViewState (line 81) | protected void LoadViewState(LoadViewStateEventArgs args) =>
method ResetViewState (line 84) | protected void ResetViewState() => LoadViewState(new LoadViewStateEven...
method SaveViewState (line 98) | protected async Task<ViewState> SaveViewState()
method InferenceTabViewModelBase (line 115) | protected InferenceTabViewModelBase(INotificationService notificationS...
method RestoreDefaultViewState (line 120) | [RelayCommand]
method DebugSaveViewState (line 132) | [RelayCommand]
method DebugLoadViewState (line 146) | [RelayCommand]
method Dispose (line 160) | protected override void Dispose(bool disposing)
method LoadImageMetadata (line 175) | public void LoadImageMetadata(FilePath? filePath)
method LoadImageMetadata (line 193) | public void LoadImageMetadata(LocalImageFile localImageFile)
method LoadImageMetadata (line 205) | private void LoadImageMetadata(
method DragOver (line 324) | public void DragOver(object? sender, DragEventArgs e)
method Drop (line 349) | public void Drop(object? sender, DragEventArgs e)
FILE: StabilityMatrix.Avalonia/ViewModels/Base/LoadableViewModelBase.cs
class LoadableViewModelBase (line 16) | [JsonDerivedType(typeof(StackExpanderViewModel), StackExpanderViewModel....
method ShouldIgnoreProperty (line 61) | private static bool ShouldIgnoreProperty(PropertyInfo property)
method ShouldIncludeProperty (line 98) | private static bool ShouldIncludeProperty(PropertyInfo property)
method LoadStateFromJsonObject (line 122) | public virtual void LoadStateFromJsonObject(JsonObject state)
method SaveStateToJsonObject (line 218) | public virtual JsonObject SaveStateToJsonObject()
method LoadStateFromJsonObject (line 286) | public virtual void LoadStateFromJsonObject(JsonObject state, int vers...
method SerializeModel (line 294) | protected static JsonObject SerializeModel<T>(T model)
method DeserializeModel (line 304) | protected static T DeserializeModel<T>(JsonObject state)
FILE: StabilityMatrix.Avalonia/ViewModels/Base/PageViewModelBase.cs
class PageViewModelBase (line 8) | public abstract class PageViewModelBase : DisposableViewModelBase
FILE: StabilityMatrix.Avalonia/ViewModels/Base/PausableProgressItemViewModelBase.cs
class PausableProgressItemViewModelBase (line 9) | [SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
method Pause (line 42) | public virtual Task Pause() => Task.CompletedTask;
method Resume (line 47) | public virtual Task Resume() => Task.CompletedTask;
method Cancel (line 52) | public virtual Task Cancel() => Task.CompletedTask;
method TogglePauseResume (line 54) | [RelayCommand]
FILE: StabilityMatrix.Avalonia/ViewModels/Base/ProgressItemViewModelBase.cs
class ProgressItemViewModelBase (line 6) | public abstract partial class ProgressItemViewModelBase : ViewModelBase
FILE: StabilityMatrix.Avalonia/ViewModels/Base/ProgressViewModel.cs
class ProgressViewModel (line 8) | public partial class ProgressViewModel : DisposableViewModelBase
method ClearProgress (line 33) | public void ClearProgress()
FILE: StabilityMatrix.Avalonia/ViewModels/Base/SelectableViewModelBase.cs
class SelectableViewModelBase (line 6) | public partial class SelectableViewModelBase : DisposableViewModelBase
method ToggleSelection (line 11) | [RelayCommand]
FILE: StabilityMatrix.Avalonia/ViewModels/Base/TabViewModelBase.cs
class TabViewModelBase (line 3) | public abstract class TabViewModelBase : DisposableViewModelBase
FILE: StabilityMatrix.Avalonia/ViewModels/Base/TaskDialogViewModelBase.cs
class TaskDialogViewModelBase (line 12) | public abstract class TaskDialogViewModelBase : ViewModelBase
method GetCommandButton (line 18) | protected static TaskDialogCommand GetCommandButton(string text, IComm...
method GetCloseButton (line 30) | protected static TaskDialogButton GetCloseButton()
method GetCloseButton (line 39) | protected static TaskDialogButton GetCloseButton(string text)
method GetDialog (line 47) | public virtual TaskDialog GetDialog()
method ShowDialogAsync (line 74) | public async Task<TaskDialogStandardResult> ShowDialogAsync()
method CloseDialog (line 79) | protected void CloseDialog(TaskDialogStandardResult result)
method OnDialogClosing (line 84) | protected virtual async void OnDialogClosing(object? sender, TaskDialo...
FILE: StabilityMatrix.Avalonia/ViewModels/Base/ViewModelBase.cs
class ViewModelBase (line 12) | public partial class ViewModelBase : ObservableValidator, IRemovableList...
method RemoveFromParentList (line 29) | [RelayCommand]
method OnLoaded (line 40) | public virtual void OnLoaded()
method OnInitialLoaded (line 56) | protected virtual void OnInitialLoaded() { }
method OnLoadedAsync (line 63) | public virtual Task OnLoadedAsync() => Task.CompletedTask;
method OnInitialLoadedAsync (line 69) | protected virtual Task OnInitialLoadedAsync() => Task.CompletedTask;
method OnUnloaded (line 74) | public virtual void OnUnloaded() { }
method OnUnloadedAsync (line 81) | public virtual Task OnUnloadedAsync() => Task.CompletedTask;
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CheckpointBrowserCardViewModel.cs
class CheckpointBrowserCardViewModel (line 24) | [ManagedService]
method CheckpointBrowserCardViewModel (line 80) | public CheckpointBrowserCardViewModel(
method CheckIfInstalled (line 119) | private void CheckIfInstalled()
method UpdateImage (line 166) | private void UpdateImage()
method OpenModel (line 191) | [RelayCommand]
method ToggleFavorite (line 197) | [RelayCommand]
method SearchAuthor (line 212) | [RelayCommand]
method DoImport (line 218) | private async Task DoImport(
method DelayedClearProgress (line 295) | private void DelayedClearProgress(TimeSpan delay)
method HtmlRegex (line 307) | [GeneratedRegex("<[^>]+>")]
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitAiBrowserViewModel.cs
class CivitAiBrowserViewModel (line 38) | [View(typeof(CivitAiBrowserPage))]
method CivitAiBrowserViewModel (line 142) | public CivitAiBrowserViewModel(
method OnNavigateAndFindCivitAuthorRequested (line 301) | private void OnNavigateAndFindCivitAuthorRequested(object? sender, str...
method OnNavigateAndFindCivitModelRequested (line 310) | private void OnNavigateAndFindCivitModelRequested(object? sender, int e)
method OnLoaded (line 319) | public override void OnLoaded()
method OnInitialLoadedAsync (line 347) | protected override async Task OnInitialLoadedAsync()
method OnLoadedAsync (line 360) | public override async Task OnLoadedAsync()
method FilterModelCardsPredicate (line 380) | private bool FilterModelCardsPredicate(CheckpointBrowserCardViewModel ...
method OnUseDiscoveryToggle (line 395) | [RelayCommand]
method CivitModelQuery (line 423) | private async Task CivitModelQuery(CivitModelsRequest request, bool is...
method UpdateModelCards (line 635) | private void UpdateModelCards(List<CivitModel>? models, bool addCards ...
method SearchModels (line 665) | [RelayCommand]
method ClearOrSelectAllBaseModels (line 836) | [RelayCommand]
method ShowVersionDialog (line 845) | [RelayCommand]
method ClearSearchQuery (line 878) | public void ClearSearchQuery()
method LoadNextPageAsync (line 883) | public async Task LoadNextPageAsync()
method OnSelectedPeriodChanged (line 891) | partial void OnSelectedPeriodChanged(CivitPeriod value)
method OnSortModeChanged (line 900) | partial void OnSortModeChanged(CivitSortMode value)
method OnSelectedModelTypeChanged (line 914) | partial void OnSelectedModelTypeChanged(CivitModelType value)
method TrySearchAgain (line 923) | private async Task TrySearchAgain(bool shouldUpdatePageNumber = true)
method UpdateResultsText (line 939) | private void UpdateResultsText()
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/CivitDetailsPageViewModel.cs
class CivitDetailsPageViewModel (line 42) | [View(typeof(CivitDetailsPage))]
method OnInitialLoadedAsync (line 184) | protected override async Task OnInitialLoadedAsync()
method GoBack (line 362) | [RelayCommand]
method DownloadModelAsync (line 365) | public async Task DownloadModelAsync(CivitFileViewModel viewModel, str...
method ShowBulkDownloadDialogAsync (line 523) | [RelayCommand]
method ShowImageDialog (line 570) | [RelayCommand]
method SearchByAuthor (line 653) | [RelayCommand]
method DeleteModelVersion (line 660) | [RelayCommand]
method NextModel (line 736) | [RelayCommand]
method PreviousModel (line 739) | [RelayCommand]
method NavigateToModelByIndexOffset (line 742) | private async Task NavigateToModelByIndexOffset(int offset)
method VmOnNavigateToModelRequested (line 776) | private void VmOnNavigateToModelRequested(object? sender, int modelId)
method ShouldIncludeCivitFile (line 790) | private bool ShouldIncludeCivitFile(CivitFile file)
method OnSelectedVersionChanged (line 798) | partial void OnSelectedVersionChanged(ModelVersionViewModel? value)
method OnUnloaded (line 809) | public override void OnUnloaded()
method ValidateModelFileNameFormat (line 817) | public static ValidationResult ValidateModelFileNameFormat(string? for...
method ShouldShowNsfw (line 822) | private bool ShouldShowNsfw(CivitImage? image)
method ShouldIncludeVersion (line 837) | private bool ShouldIncludeVersion(ModelVersionViewModel? versionVm)
method LoadInstallLocations (line 853) | private ObservableCollection<string> LoadInstallLocations(CivitFile se...
method GetSharedFolderPath (line 904) | private static DirectoryPath GetSharedFolderPath(
method GetOtherMetadata (line 934) | private IReadOnlyDictionary<string, string> GetOtherMetadata(CivitImag...
method ParseFileNameFormat (line 961) | private string ParseFileNameFormat(
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/HuggingFacePageViewModel.cs
class HuggingFacePageViewModel (line 33) | [View(typeof(Views.HuggingFacePage))]
method HuggingFacePageViewModel (line 63) | public HuggingFacePageViewModel(
method OnLoaded (line 108) | public override void OnLoaded()
method ClearSelection (line 123) | public void ClearSelection()
method SelectAll (line 132) | public void SelectAll()
method Refresh (line 140) | public void Refresh()
method ImportSelected (line 146) | [RelayCommand]
method DownloadOnProgressUpdate (line 197) | private void DownloadOnProgressUpdate(object? sender, ProgressReport e)
method OnTotalProgressChanged (line 205) | partial void OnTotalProgressChanged(ProgressReport value)
method DelayedClearProgress (line 221) | private void DelayedClearProgress(TimeSpan delay)
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/OpenModelDbBrowserCardViewModel.cs
class OpenModelDbBrowserCardViewModel (line 13) | [Localizable(false)]
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/OpenModelDbBrowserViewModel.Filters.cs
class OpenModelDbBrowserViewModel (line 14) | public partial class OpenModelDbBrowserViewModel
method CreateSearchQueryPredicate (line 38) | private static Func<OpenModelDbModel, bool> CreateSearchQueryPredicate...
method GetSortComparer (line 50) | private static SortExpressionComparer<OpenModelDbBrowserCardViewModel>...
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowser/OpenModelDbBrowserViewModel.cs
class OpenModelDbBrowserViewModel (line 27) | [View(typeof(OpenModelDbBrowserPage))]
method OnInitialLoaded (line 53) | protected override void OnInitialLoaded()
method SearchAsync (line 67) | [RelayCommand]
method OpenModelCardAsync (line 83) | [RelayCommand]
method LoadDataAsync (line 102) | private async Task LoadDataAsync(Priority priority = default)
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointBrowserViewModel.cs
class CheckpointBrowserViewModel (line 19) | [View(typeof(CheckpointBrowserPage))]
method CheckpointBrowserViewModel (line 33) | public CheckpointBrowserViewModel(
method OnNavigateAndFindCivitModelRequested (line 48) | private void OnNavigateAndFindCivitModelRequested(object? sender, int e)
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointManager/BaseModelOptionViewModel.cs
class BaseModelOptionViewModel (line 5) | public partial class BaseModelOptionViewModel : ObservableObject
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointManager/CheckpointFileViewModel.cs
class CheckpointFileViewModel (line 25) | public partial class CheckpointFileViewModel : SelectableViewModelBase
method CheckpointFileViewModel (line 73) | public CheckpointFileViewModel(
method CopyTriggerWords (line 109) | [RelayCommand]
method FindOnModelBrowser (line 119) | [RelayCommand]
method OpenOnCivitAi (line 130) | [RelayCommand]
method CopyModelUrl (line 139) | [RelayCommand]
method FindConnectedMetadata (line 162) | [RelayCommand]
method DeleteAsync (line 212) | [RelayCommand]
method RenameAsync (line 258) | [RelayCommand]
method OpenSafetensorMetadataViewer (line 325) | [RelayCommand]
method OpenMetadataEditor (line 368) | [RelayCommand]
method OpenInExplorer (line 515) | [RelayCommand]
method GetFileSize (line 524) | private long GetFileSize(string filePath)
method GetLastModified (line 533) | private DateTimeOffset GetLastModified(string filePath)
method GetCreated (line 542) | private DateTimeOffset GetCreated(string filePath)
method UpdateImage (line 551) | private void UpdateImage()
FILE: StabilityMatrix.Avalonia/ViewModels/CheckpointsPageViewModel.cs
class CheckpointsPageViewModel (line 48) | [View(typeof(CheckpointsPage))]
method OnInitialLoadedAsync (line 156) | protected override async Task OnInitialLoadedAsync()
method OnLoadedAsync (line 485) | public override async Task OnLoadedAsync()
method ClearSearchQuery (line 497) | public void ClearSearchQuery()
method Refresh (line 502) | [RelayCommand]
method ClearSelection (line 509) | [RelayCommand]
method DeleteAsync (line 519) | [RelayCommand]
method ScanMetadata (line 557) | [RelayCommand]
method OnItemClick (line 593) | [RelayCommand]
method ShowVersionDialog (line 607) | [RelayCommand]
method ShowCivitVersionDialog (line 630) | private void ShowCivitVersionDialog(CheckpointFileViewModel item)
method ShowOpenModelDbDialog (line 662) | private async Task ShowOpenModelDbDialog(CheckpointFileViewModel item)
method ClearOrSelectAllBaseModels (line 692) | [RelayCommand]
method CreateFolder (line 701) | [RelayCommand]
method OpenFolderFromTreeview (line 742) | [RelayCommand]
method DeleteFolderAsync (line 750) | [RelayCommand]
method SelectAll (line 781) | [RelayCommand]
method ShowFolderReference (line 787) | [RelayCommand]
method ImportFilesAsync (line 794) | public async Task ImportFilesAsync(IEnumerable<string> files, Director...
method MoveBetweenFolders (line 846) | public async Task MoveBetweenFolders(
method MoveBetweenFolders (line 929) | public async Task MoveBetweenFolders(LocalModelFile sourceFile, Direct...
method RefreshCategories (line 992) | private void RefreshCategories()
method GetSubfolders (line 1087) | private ObservableCollection<CheckpointCategory> GetSubfolders(string ...
method GetConnectedModelInfoFilePath (line 1129) | private string GetConnectedModelInfoFilePath(string filePath)
method DelayedClearProgress (line 1141) | private void DelayedClearProgress(TimeSpan delay)
method DelayedClearViewModelProgress (line 1151) | private void DelayedClearViewModelProgress(CheckpointFileViewModel vie...
method FilterModels (line 1161) | private bool FilterModels(LocalModelFile file)
method FilterCategories (line 1211) | private bool FilterCategories(CheckpointCategory category)
method ShowFolderMapTipIfNecessaryAsync (line 1216) | private async Task ShowFolderMapTipIfNecessaryAsync()
FILE: StabilityMatrix.Avalonia/ViewModels/ConsoleViewModel.cs
class ConsoleViewModel (line 22) | public partial class ConsoleViewModel : ObservableObject, IDisposable, I...
method StartUpdates (line 75) | public void StartUpdates()
method StopUpdatesAsync (line 88) | public async Task StopUpdatesAsync()
method Clear (line 123) | public async Task Clear()
method ResetWriteCursor (line 137) | public async Task ResetWriteCursor()
method CopySelection (line 147) | [RelayCommand]
method SelectAll (line 153) | [RelayCommand]
method SearchWithGoogle (line 159) | [Localizable(false)]
method SearchWithChatGpt (line 167) | [Localizable(false)]
method ConsoleUpdateLoop (line 175) | private async Task ConsoleUpdateLoop()
method ConsoleUpdateOne (line 236) | private void ConsoleUpdateOne(ProcessOutput output)
method DirectWriteLinesToConsole (line 350) | private void DirectWriteLinesToConsole(string text)
method DirectWriteToConsole (line 401) | private void DirectWriteToConsole(string text)
method CheckMaxLines (line 437) | private void CheckMaxLines()
method DebugPrintDocument (line 494) | [Conditional("DEBUG")]
method Post (line 542) | public void Post(ProcessOutput output)
method Post (line 559) | public void Post(string text)
method PostLine (line 568) | public void PostLine(string text)
method Dispose (line 573) | public void Dispose()
method DisposeAsync (line 609) | public async ValueTask DisposeAsync()
FILE: StabilityMatrix.Avalonia/ViewModels/Controls/GitVersionSelectorViewModel.cs
class GitVersionSelectorViewModel (line 15) | public partial class GitVersionSelectorViewModel : ObservableObject
method GetDialog (line 64) | public BetterContentDialog GetDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Controls/PaintCanvasViewModel.Serializer.cs
class PaintCanvasViewModel (line 15) | public partial class PaintCanvasViewModel
method SaveStateToJsonObject (line 17) | public override JsonObject SaveStateToJsonObject()
method LoadStateFromJsonObject (line 27) | public override void LoadStateFromJsonObject(JsonObject state)
method SaveState (line 39) | protected PaintCanvasModel SaveState()
method LoadState (line 58) | protected void LoadState(PaintCanvasModel model)
class PaintCanvasModel (line 79) | public class PaintCanvasModel
class PaintCanvasModelSerializerContext (line 93) | [JsonSourceGenerationOptions(DefaultIgnoreCondition = JsonIgnoreCondit...
FILE: StabilityMatrix.Avalonia/ViewModels/Controls/PaintCanvasViewModel.cs
class PaintCanvasViewModel (line 25) | [RegisterTransient<PaintCanvasViewModel>]
method SetSourceCanvas (line 109) | public void SetSourceCanvas(SKCanvas canvas)
method LoadCanvasFromBitmap (line 115) | public void LoadCanvasFromBitmap(SKBitmap bitmap)
method Undo (line 122) | [RelayCommand(CanExecute = nameof(CanExecuteUndo))]
method CanExecuteUndo (line 138) | private bool CanExecuteUndo()
method RenderToWhiteChannelImage (line 143) | public SKImage? RenderToWhiteChannelImage()
method RenderToImage (line 179) | public SKImage? RenderToImage()
method RenderToSurface (line 196) | public void RenderToSurface(
method RenderPenPath (line 291) | private static void RenderPenPath(SKCanvas canvas, PenPath penPath, SK...
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/AnalyticsOptInViewModel.cs
class AnalyticsOptInViewModel (line 11) | [View(typeof(AnalyticsOptInDialog))]
method GetDialog (line 20) | public override BetterContentDialog GetDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/CivitFileDisplayViewModel.cs
class CivitFileDisplayViewModel (line 5) | public class CivitFileDisplayViewModel
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/CivitFileViewModel.cs
class CivitFileViewModel (line 20) | public partial class CivitFileViewModel : DisposableViewModelBase
method CivitFileViewModel (line 43) | public CivitFileViewModel(
method ModelIndexChanged (line 92) | private void ModelIndexChanged(object? sender, EventArgs e)
method DownloadToDefaultAsync (line 103) | [RelayCommand(CanExecute = nameof(CanExecuteDownload))]
method DownloadToSelectedLocationAsync (line 112) | [RelayCommand(CanExecute = nameof(CanExecuteDownload))]
method Delete (line 121) | [RelayCommand]
method CanExecuteDownload (line 192) | private bool CanExecuteDownload()
method Dispose (line 197) | protected override void Dispose(bool disposing)
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/CivitImageViewModel.cs
class CivitImageViewModel (line 6) | public partial class CivitImageViewModel : ObservableObject
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/ConfirmBulkDownloadDialogViewModel.cs
class ConfirmBulkDownloadDialogViewModel (line 20) | [View(typeof(ConfirmBulkDownloadDialog))]
method OnLoadedAsync (line 55) | public override async Task OnLoadedAsync()
method GetDialog (line 190) | public override BetterContentDialog GetDialog()
method IsPreferredPrecision (line 203) | private bool IsPreferredPrecision(CivitFileViewModel file)
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/ConfirmDeleteDialogViewModel.cs
class ConfirmDeleteDialogViewModel (line 15) | [View(typeof(ConfirmDeleteDialog))]
method GetDialog (line 53) | public override BetterContentDialog GetDialog()
method OnConfirmDeleteClick (line 66) | [RelayCommand(CanExecute = nameof(CanExecuteConfirmDelete))]
method CanExecuteConfirmDelete (line 72) | private bool CanExecuteConfirmDelete()
method IsValid (line 77) | private bool IsValid()
method ExecuteCurrentDeleteOperationAsync (line 82) | public async Task ExecuteCurrentDeleteOperationAsync(bool ignoreErrors...
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/ConfirmPackageDeleteDialogViewModel.cs
class ConfirmPackageDeleteDialogViewModel (line 11) | [View(typeof(ConfirmPackageDeleteDialog))]
method CopyExpectedPackageName (line 48) | [RelayCommand]
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/DownloadResourceViewModel.cs
class DownloadResourceViewModel (line 20) | [View(typeof(DownloadResourceDialog))]
method OnLoadedAsync (line 47) | public override async Task OnLoadedAsync()
method OpenInfoUrl (line 58) | [RelayCommand]
method StartDownload (line 67) | public TrackedDownload StartDownload()
method GetDialog (line 99) | public override BetterContentDialog GetDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/EnvVarsViewModel.cs
class EnvVarsViewModel (line 16) | [View(typeof(EnvVarsDialog))]
method AddRow (line 29) | [RelayCommand]
method RemoveSelectedRow (line 35) | [RelayCommand]
method GetDialog (line 48) | public override BetterContentDialog GetDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/ExceptionViewModel.cs
class ExceptionViewModel (line 24) | [View(typeof(ExceptionDialog))]
method CreateLogFolderZip (line 48) | public static async Task<string> CreateLogFolderZip()
method OpenLogZipInFileBrowser (line 102) | [RelayCommand]
method FormatAsMarkdown (line 113) | [Localizable(false)]
method GetIssueUrl (line 157) | [Localizable(false)]
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/ImageViewerViewModel.cs
class ImageViewerViewModel (line 29) | [View(typeof(ImageViewerDialog))]
method OnLocalImageFileChanged (line 73) | partial void OnLocalImageFileChanged(LocalImageFile? value)
method OnImageSourceChanged (line 81) | partial void OnImageSourceChanged(ImageSource? value)
method OnCivitImageMetadataChanged (line 90) | partial void OnCivitImageMetadataChanged(CivitImageGenerationDataRespo...
method OnNavigateNext (line 98) | [RelayCommand]
method OnNavigatePrevious (line 104) | [RelayCommand]
method OnNavigateToModel (line 110) | [RelayCommand]
method CopyImage (line 116) | [RelayCommand]
method CopyImageAsBitmap (line 141) | [RelayCommand]
method CopyThingToClipboard (line 157) | [RelayCommand]
method GetDialog (line 166) | public override BetterContentDialog GetDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/InferenceConnectionHelpViewModel.cs
class InferenceConnectionHelpViewModel (line 25) | [View(typeof(InferenceConnectionHelpDialog))]
method InferenceConnectionHelpViewModel (line 59) | public InferenceConnectionHelpViewModel(
method NavigateToInstall (line 106) | [RelayCommand]
method LaunchSelectedPackage (line 127) | [RelayCommand]
method CreateDialog (line 139) | public BetterContentDialog CreateDialog()
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/LaunchOptionsViewModel.cs
class LaunchOptionsViewModel (line 16) | [View(typeof(LaunchOptionsDialog))]
method GetFilteredCards (line 41) | private IReadOnlyList<LaunchOptionCard>? GetFilteredCards(string? text)
method UpdateFilterCards (line 66) | public void UpdateFilterCards() => FilteredCards = GetFilteredCards(Se...
method LaunchOptionsViewModel (line 68) | public LaunchOptionsViewModel(ILogger<LaunchOptionsViewModel> logger)
method OnLoaded (line 84) | public override void OnLoaded()
method AsLaunchArgs (line 93) | public List<LaunchOption> AsLaunchArgs()
FILE: StabilityMatrix.Avalonia/ViewModels/Dialogs/LykosLoginViewModel.cs
class LykosLoginViewModel (line 18) | [View(typeof(LykosLoginDialog))]
method CanExecuteContinueButtonClick (line 63) | private bool CanExecuteContinueButtonClick()
method OnContinueButtonClick (line 68) | [RelayCommand(CanExecute = nameof(CanExecuteContinueButtonClick))]
method LoginAsync (line 74) | private async Task LoginAsync()
method SignupAsync (line 99) | private async Task SignupAsync()
method OnGoogleOAuthButtonClick (line 117) | [RelayCommand]
method GetDialog (line 129) | public override TaskDialog GetDialog()
method IsValid (line 140) | private bool IsValid()
FILE: StabilityMatrix.
Condensed preview — 1529 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,562K chars).
[
{
"path": ".aiexclude",
"chars": 495,
"preview": "# Docs\nLICENSE\nCHANGELOG.md\n\n# Legacy\nStabilityMatrix/\n\n# Tests\n*.verified.*\n\n# Misc projects\nStabilityMatrix.Native/\nSt"
},
{
"path": ".backportrc.json",
"chars": 246,
"preview": "{\n \"sourceBranch\": \"dev\",\n \"targetBranch\": \"main\",\n \"mainline\": 1,\n \"fork\": false,\n \"targetPRLabels\": [\"backport\"],"
},
{
"path": ".config/.csharpierrc.json",
"chars": 91,
"preview": "{\n \"printWidth\": 110,\n \"preprocessorSymbolSets\": [\"\", \"DEBUG\", \"DEBUG,CODE_STYLE\"]\n}\n"
},
{
"path": ".config/dotnet-tools.json",
"chars": 701,
"preview": "{\n \"version\": 1,\n \"isRoot\": true,\n \"tools\": {\n \"husky\": {\n \"version\": \"0.7.2\",\n \"commands\": [\n \"h"
},
{
"path": ".csharpierrc.yaml",
"chars": 16,
"preview": "printWidth: 110\n"
},
{
"path": ".editorconfig",
"chars": 5527,
"preview": "root = true\n\n[*.cs]\nmax_line_length = 120\ncsharp_style_var_for_built_in_types = true:suggestion\ndotnet_sort_system_direc"
},
{
"path": ".gitattributes",
"chars": 66,
"preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 48,
"preview": "patreon: StabilityMatrix\nko_fi: StabilityMatrix\n"
},
{
"path": ".github/ISSUE_TEMPLATE/1-bug.yml",
"chars": 2483,
"preview": "name: Bug report\ndescription: Submit a bug report\nlabels: [\"bug\", \"triage\"]\nbody:\n - type: markdown\n attributes:\n "
},
{
"path": ".github/ISSUE_TEMPLATE/2-bug-crash.yml",
"chars": 2076,
"preview": "name: Crash report\ndescription: A crash of Stability Matrix, likely with the \"An unexpected error occurred\" dialog\nlabe"
},
{
"path": ".github/ISSUE_TEMPLATE/3-bug-package.yml",
"chars": 2672,
"preview": "name: Package issue\ndescription: Report an issue with installing, updating, or running a Package\nlabels: [\"bug\", \"area:"
},
{
"path": ".github/ISSUE_TEMPLATE/4-feature-request.yml",
"chars": 633,
"preview": "name: Feature or enhancement\ndescription: Submit a proposal for a new Stability Matrix feature or enhancement\nlabels: ["
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 239,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Getting help\n url: https://link.lykos.ai/discord?ref=github-iss"
},
{
"path": ".github/dependabot.yml",
"chars": 109,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"nuget\"\n directory: \"/\"\n schedule:\n interval: \"weekly\"\n"
},
{
"path": ".github/workflows/backport.yml",
"chars": 1481,
"preview": "name: Automatic Backport\n\non:\n pull_request:\n types: [\"closed\", \"labeled\"]\n\njobs:\n backport:\n if: ${{ (github.ev"
},
{
"path": ".github/workflows/build.yml",
"chars": 795,
"preview": "name: Build\n\non:\n push:\n branches: [ main ]\n pull_request:\n branches: [ main ]\n\nconcurrency:\n group: build-${{ "
},
{
"path": ".github/workflows/cla.yml",
"chars": 1663,
"preview": "name: \"CLA Assistant\"\n\non:\n issue_comment:\n types: [created]\n pull_request_target:\n types: [opened,closed,synchr"
},
{
"path": ".github/workflows/release.yml",
"chars": 18325,
"preview": "name: Release\n\npermissions:\n contents: write\n\non:\n workflow_dispatch:\n inputs:\n version:\n type: string\n"
},
{
"path": ".github/workflows/stale.yml",
"chars": 1538,
"preview": "name: 'Close stale issues'\n\npermissions:\n issues: write\n pull-requests: write\n\non:\n workflow_dispatch:\n schedule:\n "
},
{
"path": ".github/workflows/test-ui.yml",
"chars": 587,
"preview": "name: UI Tests\n\non:\n workflow_dispatch:\n\nconcurrency:\n group: build-${{ github.event.pull_request.number || github.re"
},
{
"path": ".github/workflows/version-bump.yml",
"chars": 898,
"preview": "name: Version Bump\n\non:\n workflow_dispatch:\n inputs:\n version_mask:\n type: string\n description: "
},
{
"path": ".gitignore",
"chars": 6918,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": ".husky/task-runner.json",
"chars": 910,
"preview": "{\n \"tasks\": [\n {\n \"name\": \"Run csharpier\",\n \"group\": \"pre-commit\",\n \"command\": \"dotnet\",\n"
},
{
"path": "Avalonia.Gif/Avalonia.Gif.csproj",
"chars": 660,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<Import Project=\"..\\Runtimes.Default.props\" />\n\t\n\t<PropertyGroup>\n\t\t<LangVersion>late"
},
{
"path": "Avalonia.Gif/BgWorkerCommand.cs",
"chars": 133,
"preview": "namespace Avalonia.Gif\n{\n internal enum BgWorkerCommand\n {\n Null,\n Play,\n Pause,\n Dis"
},
{
"path": "Avalonia.Gif/BgWorkerState.cs",
"chars": 168,
"preview": "namespace Avalonia.Gif\n{\n internal enum BgWorkerState\n {\n Null,\n Start,\n Running,\n Pa"
},
{
"path": "Avalonia.Gif/Decoding/BlockTypes.cs",
"chars": 178,
"preview": "namespace Avalonia.Gif.Decoding\n{\n internal enum BlockTypes\n {\n Empty = 0,\n Extension = 0x21,\n "
},
{
"path": "Avalonia.Gif/Decoding/ExtensionType.cs",
"chars": 139,
"preview": "namespace Avalonia.Gif.Decoding\n{\n internal enum ExtensionType\n {\n GraphicsControl = 0xF9,\n Applicat"
},
{
"path": "Avalonia.Gif/Decoding/FrameDisposal.cs",
"chars": 162,
"preview": "namespace Avalonia.Gif.Decoding\n{\n public enum FrameDisposal\n {\n Unknown = 0,\n Leave = 1,\n Ba"
},
{
"path": "Avalonia.Gif/Decoding/GifColor.cs",
"chars": 872,
"preview": "using System.Runtime.InteropServices;\n\nnamespace Avalonia.Gif\n{\n [StructLayout(LayoutKind.Explicit)]\n public reado"
},
{
"path": "Avalonia.Gif/Decoding/GifDecoder.cs",
"chars": 23131,
"preview": "// This source file's Lempel-Ziv-Welch algorithm is derived from Chromium's Android GifPlayer\n// as seen here (https://g"
},
{
"path": "Avalonia.Gif/Decoding/GifFrame.cs",
"chars": 535,
"preview": "using System;\n\nnamespace Avalonia.Gif.Decoding\n{\n public class GifFrame\n {\n public bool HasTransparency,\n "
},
{
"path": "Avalonia.Gif/Decoding/GifHeader.cs",
"chars": 584,
"preview": "// Licensed under the MIT License.\n// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.\n\nnamespace Avalonia.Gif.D"
},
{
"path": "Avalonia.Gif/Decoding/GifRect.cs",
"chars": 1116,
"preview": "namespace Avalonia.Gif.Decoding\n{\n public readonly struct GifRect\n {\n public int X { get; }\n public "
},
{
"path": "Avalonia.Gif/Decoding/GifRepeatBehavior.cs",
"chars": 170,
"preview": "namespace Avalonia.Gif.Decoding\n{\n public class GifRepeatBehavior\n {\n public bool LoopForever { get; set; "
},
{
"path": "Avalonia.Gif/Decoding/InvalidGifStreamException.cs",
"chars": 487,
"preview": "// Licensed under the MIT License.\n// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.\n\nnamespace Avalonia.Gif.D"
},
{
"path": "Avalonia.Gif/Decoding/LzwDecompressionException.cs",
"chars": 487,
"preview": "// Licensed under the MIT License.\n// Copyright (C) 2018 Jumar A. Macato, All Rights Reserved.\n\nnamespace Avalonia.Gif.D"
},
{
"path": "Avalonia.Gif/Extensions/StreamExtensions.cs",
"chars": 2701,
"preview": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Runtime.CompilerServices;\n\nnamespace Avalonia.Gif."
},
{
"path": "Avalonia.Gif/GifImage.cs",
"chars": 10071,
"preview": "using System;\nusing System.IO;\nusing System.Numerics;\nusing Avalonia;\nusing Avalonia.Animation;\nusing Avalonia.Controls"
},
{
"path": "Avalonia.Gif/GifInstance.cs",
"chars": 5352,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading;\nusing Avalon"
},
{
"path": "Avalonia.Gif/IGifInstance.cs",
"chars": 417,
"preview": "using Avalonia.Animation;\nusing Avalonia.Media.Imaging;\n\nnamespace Avalonia.Gif;\n\npublic interface IGifInstance : IDisp"
},
{
"path": "Avalonia.Gif/InvalidGifStreamException.cs",
"chars": 384,
"preview": "namespace Avalonia.Gif\n{\n [Serializable]\n internal class InvalidGifStreamException : Exception\n {\n publi"
},
{
"path": "Avalonia.Gif/WebpInstance.cs",
"chars": 6391,
"preview": "using Avalonia.Animation;\nusing Avalonia.Media.Imaging;\nusing Avalonia.Platform;\nusing SkiaSharp;\n\nnamespace Avalonia.G"
},
{
"path": "Build/AppEntitlements.entitlements",
"chars": 263,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Build/EmbeddedEntitlements.entitlements",
"chars": 437,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "Build/_utils.sh",
"chars": 202,
"preview": "#!/bin/bash\n\nprint_hyperlink() {\n local url=\"$1\"\n local text=\"$2\"\n \n # macOS Terminal supports clickable lin"
},
{
"path": "Build/build_macos_app.sh",
"chars": 1387,
"preview": "#!/bin/bash\n\noutput_dir=\"$(pwd)/out/osx-arm64/\"\napp_name=\"Stability Matrix.app\"\n\n. \"./_utils.sh\" > /dev/null 2>&1 || . \""
},
{
"path": "Build/codesign_embedded_macos.sh",
"chars": 2160,
"preview": "#!/bin/sh\n\necho \"Signing file: $1\"\n\n# Setup keychain in CI\nif [ -n \"$CI\" ]; then\n # Turn our base64-encoded certifica"
},
{
"path": "Build/codesign_macos.sh",
"chars": 1436,
"preview": "#!/bin/sh\n\necho \"Signing file: $1\"\n\n# Setup keychain in CI\nif [ -n \"$CI\" ]; then\n # Turn our base64-encoded certifica"
},
{
"path": "Build/notarize_macos.sh",
"chars": 1305,
"preview": "#!/bin/sh\n\necho \"Notarizing file: $1\"\n\n# Store the notarization credentials so that we can prevent a UI password dialog\n"
},
{
"path": "CHANGELOG.md",
"chars": 165720,
"preview": "# Changelog\n\nAll notable changes to Stability Matrix will be documented in this file.\n\nThe format is based on [Keep a Ch"
},
{
"path": "CONTRIBUTING.md",
"chars": 4081,
"preview": "# Building\n## Running & Debug\n- If building using managed IDEs like Rider or Visual Studio, ensure that a valid `--runti"
},
{
"path": "ConditionalSymbols.props",
"chars": 1231,
"preview": "<Project>\n <PropertyGroup Label=\"Compile Options\">\n <!-- true to include all conditional paths / attributes, mainly "
},
{
"path": "Directory.Build.props",
"chars": 932,
"preview": "<Project>\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <LangVersion>preview</LangVersi"
},
{
"path": "Directory.Packages.props",
"chars": 9271,
"preview": "<Project>\n <ItemGroup>\n <PackageVersion Include=\"Apizr\" Version=\"6.3.0\" />\n <PackageVersion Include=\"Apizr.Extens"
},
{
"path": "Jenkinsfile",
"chars": 1605,
"preview": "node(\"Diligence\") {\n def repoName = \"StabilityMatrix\"\n def author = \"ionite34\"\n def version = \"\"\n\n stage('Cl"
},
{
"path": "LICENSE",
"chars": 34522,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "NuGet.Config",
"chars": 597,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n <packageSources>\n <add key=\"nuget.org\" value=\"https:/"
},
{
"path": "README.md",
"chars": 8981,
"preview": "# Stability Matrix\n\n[](https:/"
},
{
"path": "Runtimes.Default.props",
"chars": 1158,
"preview": "<Project>\n <PropertyGroup>\n <RuntimeIdentifiers>win-x64;linux-x64;osx-x64;osx-arm64</RuntimeIdentifiers>\n </Propert"
},
{
"path": "StabilityMatrix/App.xaml",
"chars": 727,
"preview": "<Application\n Exit=\"App_OnExit\"\n Startup=\"App_OnStartup\"\n x:Class=\"StabilityMatrix.App\"\n xmlns=\"http://schem"
},
{
"path": "StabilityMatrix/App.xaml.cs",
"chars": 18233,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Diagnostics.CodeAnalysis;\nusing "
},
{
"path": "StabilityMatrix/AppxManifest.xml",
"chars": 1870,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\""
},
{
"path": "StabilityMatrix/AssemblyInfo.cs",
"chars": 595,
"preview": "using System.Windows;\n\n[assembly: ThemeInfo(\n ResourceDictionaryLocation.None, //where theme specific resource dictio"
},
{
"path": "StabilityMatrix/Assets/7za - LICENSE.txt",
"chars": 1256,
"preview": "7-Zip Extra 18.01\n-----------------\n\n7-Zip Extra is package of extra modules of 7-Zip. \n\n7-Zip Copyright (C) 1999-2018 I"
},
{
"path": "StabilityMatrix/Assets/Python310/LICENSE.txt",
"chars": 32181,
"preview": "A. HISTORY OF THE SOFTWARE\n==========================\n\nPython was created in the early 1990s by Guido van Rossum at Stic"
},
{
"path": "StabilityMatrix/Assets/Python310/python310._pth",
"chars": 74,
"preview": "python310.zip\n.\n\n# Uncomment to run site.main() automatically\nimport site\n"
},
{
"path": "StabilityMatrix/Assets/automatic_vladmandic.sm-package.yml",
"chars": 799,
"preview": "name: automatic\ndisplay-name: SD.Next Web UI\nauthor: vladmandic\n\ndownload:\n steps:\n - uses: git\n with:\n "
},
{
"path": "StabilityMatrix/Assets/licenses.json",
"chars": 8183,
"preview": "[{\"PackageName\":\"7-Zip.CommandLine\",\"PackageVersion\":\"18.1.0\",\"PackageUrl\":\"http://www.7-zip.org/\",\"Copyright\":\"7-Zip Co"
},
{
"path": "StabilityMatrix/Assets/sm-package.schema.json",
"chars": 1960,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \""
},
{
"path": "StabilityMatrix/Assets/venv/__init__.py",
"chars": 23997,
"preview": "\"\"\"\nVirtual environment (venv) package for Python. Based on PEP 405.\n\nCopyright (C) 2011-2014 Vinay Sajip.\nLicensed to t"
},
{
"path": "StabilityMatrix/Assets/venv/__main__.py",
"chars": 145,
"preview": "import sys\nfrom . import main\n\nrc = 1\ntry:\n main()\n rc = 0\nexcept Exception as e:\n print('Error: %s' % e, file="
},
{
"path": "StabilityMatrix/Assets/venv/scripts/common/Activate.ps1",
"chars": 8786,
"preview": "<#\n.Synopsis\nActivate a Python virtual environment for the current PowerShell session.\n\n.Description\nPushes the python e"
},
{
"path": "StabilityMatrix/Assets/venv/scripts/common/activate",
"chars": 2009,
"preview": "# This file must be used with \"source bin/activate\" *from bash*\n# you cannot run it directly\n\ndeactivate () {\n # rese"
},
{
"path": "StabilityMatrix/Assets/venv/scripts/nt/activate.bat",
"chars": 973,
"preview": "@echo off\n\nrem This file is UTF-8 encoded, so we need to update the current code page while executing it\nfor /f \"tokens="
},
{
"path": "StabilityMatrix/Assets/venv/scripts/nt/deactivate.bat",
"chars": 371,
"preview": "@echo off\n\nif defined _OLD_VIRTUAL_PROMPT (\n set \"PROMPT=%_OLD_VIRTUAL_PROMPT%\"\n)\nset _OLD_VIRTUAL_PROMPT=\n\nif define"
},
{
"path": "StabilityMatrix/Assets/venv/scripts/posix/activate.csh",
"chars": 935,
"preview": "# This file must be used with \"source bin/activate.csh\" *from csh*.\n# You cannot run it directly.\n# Created by Davide Di"
},
{
"path": "StabilityMatrix/Assets/venv/scripts/posix/activate.fish",
"chars": 2215,
"preview": "# This file must be used with \"source <venv>/bin/activate.fish\" *from fish*\n# (https://fishshell.com/); you cannot run i"
},
{
"path": "StabilityMatrix/CheckpointBrowserPage.xaml",
"chars": 12614,
"preview": "<Page\n Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n Loaded=\"CheckpointBrowserPage_OnLoaded\"\n d:Da"
},
{
"path": "StabilityMatrix/CheckpointBrowserPage.xaml.cs",
"chars": 1124,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing StabilityMatrix.ViewModels;\n\nnam"
},
{
"path": "StabilityMatrix/CheckpointManagerPage.xaml",
"chars": 28835,
"preview": "<Page\n Loaded=\"CheckpointManagerPage_OnLoaded\"\n d:DataContext=\"{d:DesignInstance Type=designData:MockCheckpointMa"
},
{
"path": "StabilityMatrix/CheckpointManagerPage.xaml.cs",
"chars": 1212,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing StabilityMatrix.ViewModels;\n\nnam"
},
{
"path": "StabilityMatrix/Controls/AppBrushes.cs",
"chars": 479,
"preview": "using System.Windows.Media;\n\nnamespace StabilityMatrix.Controls;\n\npublic static class AppBrushes\n{\n public static re"
},
{
"path": "StabilityMatrix/Controls/ProgressBarSmoother.cs",
"chars": 1031,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing System.Windows.Med"
},
{
"path": "StabilityMatrix/Controls/RefreshBadge.xaml",
"chars": 2442,
"preview": "<UserControl\n HorizontalAlignment=\"Stretch\"\n VerticalAlignment=\"Stretch\"\n d:DataContext=\"{d:DesignInstance Typ"
},
{
"path": "StabilityMatrix/Controls/RefreshBadge.xaml.cs",
"chars": 190,
"preview": "using System.Windows.Controls;\n\nnamespace StabilityMatrix.Controls;\n\npublic partial class RefreshBadge : UserControl\n{\n"
},
{
"path": "StabilityMatrix/Converters/BoolNegationConverter.cs",
"chars": 648,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.Converters;\n\n[ValueConv"
},
{
"path": "StabilityMatrix/Converters/BooleanToHiddenVisibleConverter.cs",
"chars": 844,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.C"
},
{
"path": "StabilityMatrix/Converters/IntDoubleConverter.cs",
"chars": 922,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.Converters;\n\npublic cla"
},
{
"path": "StabilityMatrix/Converters/IsStringNullOrWhitespaceConverter.cs",
"chars": 688,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.Converters;\n\n[ValueConv"
},
{
"path": "StabilityMatrix/Converters/LaunchOptionConverter.cs",
"chars": 1211,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.Converters;\n\npublic cla"
},
{
"path": "StabilityMatrix/Converters/LaunchOptionIntDoubleConverter.cs",
"chars": 973,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.Converters;\n\npublic cla"
},
{
"path": "StabilityMatrix/Converters/NullToVisibilityConverter.cs",
"chars": 535,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.C"
},
{
"path": "StabilityMatrix/Converters/StringNullOrEmptyToVisibilityConverter.cs",
"chars": 562,
"preview": "using System;\nusing System.Windows;\nusing System.Windows.Data;\n\nnamespace StabilityMatrix.Converters;\n\npublic class Str"
},
{
"path": "StabilityMatrix/Converters/UriToBitmapConverter.cs",
"chars": 697,
"preview": "using System;\nusing System.Globalization;\nusing System.Windows.Data;\nusing System.Windows.Media.Imaging;\n\nnamespace Sta"
},
{
"path": "StabilityMatrix/Converters/ValueConverterGroup.cs",
"chars": 643,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Data;\n\nnamespace StabilityMatri"
},
{
"path": "StabilityMatrix/DataDirectoryMigrationDialog.xaml",
"chars": 6250,
"preview": "<ui:ContentDialog\n CloseButtonText=\"Close\"\n Loaded=\"DataDirectoryMigrationDialog_OnLoaded\"\n Title=\"Package Inf"
},
{
"path": "StabilityMatrix/DataDirectoryMigrationDialog.xaml.cs",
"chars": 1407,
"preview": "using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing AsyncAwaitBestPractices;\nusing StabilityMatrix."
},
{
"path": "StabilityMatrix/DesignData/MockCheckpointBrowserViewModel.cs",
"chars": 2725,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusin"
},
{
"path": "StabilityMatrix/DesignData/MockCheckpointFolder.cs",
"chars": 239,
"preview": "using StabilityMatrix.Models;\n\nnamespace StabilityMatrix.DesignData;\n\npublic class MockCheckpointFolder : CheckpointFol"
},
{
"path": "StabilityMatrix/DesignData/MockCheckpointManagerViewModel.cs",
"chars": 2958,
"preview": "using System.ComponentModel;\nusing StabilityMatrix.Core.Models.Api;\nusing StabilityMatrix.ViewModels;\n\nnamespace Stabil"
},
{
"path": "StabilityMatrix/DesignData/MockFirstLaunchSetupViewModel.cs",
"chars": 367,
"preview": "using StabilityMatrix.Core.Models.Progress;\nusing StabilityMatrix.ViewModels;\n\nnamespace StabilityMatrix.DesignData;\n\np"
},
{
"path": "StabilityMatrix/DesignData/MockLaunchViewModel.cs",
"chars": 742,
"preview": "using System.ComponentModel;\nusing StabilityMatrix.ViewModels;\n\nnamespace StabilityMatrix.DesignData;\n\n[DesignOnly(true"
},
{
"path": "StabilityMatrix/DesignData/MockModelVersionDialogViewModel.cs",
"chars": 1808,
"preview": "using System.Collections.Generic;\nusing StabilityMatrix.Core.Models.Api;\nusing StabilityMatrix.Core.Services;\nusing Sta"
},
{
"path": "StabilityMatrix/ExceptionWindow.xaml",
"chars": 5042,
"preview": "<ui:FluentWindow\n ExtendsContentIntoTitleBar=\"True\"\n Height=\"500\"\n Loaded=\"ExceptionWindow_OnLoaded\"\n Resiz"
},
{
"path": "StabilityMatrix/ExceptionWindow.xaml.cs",
"chars": 346,
"preview": "using System.Windows;\nusing Wpf.Ui.Controls.Window;\n\nnamespace StabilityMatrix;\n\npublic partial class ExceptionWindow :"
},
{
"path": "StabilityMatrix/FirstLaunchSetupWindow.xaml",
"chars": 5530,
"preview": "<ui:FluentWindow\n ExtendsContentIntoTitleBar=\"True\"\n Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n "
},
{
"path": "StabilityMatrix/FirstLaunchSetupWindow.xaml.cs",
"chars": 755,
"preview": "using System.Windows;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Controls.Window;\n\nnamespace StabilityMatrix;\n\npubl"
},
{
"path": "StabilityMatrix/Helper/AsyncDispatchTimer.cs",
"chars": 1052,
"preview": "using System;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\nusing System.Windows.Threading;\n\nnamespace Stabil"
},
{
"path": "StabilityMatrix/Helper/DialogFactory.cs",
"chars": 7203,
"preview": "using System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.W"
},
{
"path": "StabilityMatrix/Helper/IDialogFactory.cs",
"chars": 1486,
"preview": "using System.Collections.Generic;\nusing System.Threading.Tasks;\nusing StabilityMatrix.Core.Models;\nusing StabilityMatri"
},
{
"path": "StabilityMatrix/Helper/ISnackbarService.cs",
"chars": 2814,
"preview": "using System;\nusing System.Threading.Tasks;\nusing StabilityMatrix.Core.Models;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Contro"
},
{
"path": "StabilityMatrix/Helper/ScreenExtensions.cs",
"chars": 5762,
"preview": "using System;\nusing System.IO;\nusing System.Runtime.InteropServices;\nusing System.Runtime.Versioning;\n\nnamespace Stabil"
},
{
"path": "StabilityMatrix/Helper/SnackbarService.cs",
"chars": 2556,
"preview": "using System.Threading.Tasks;\nusing System;\nusing AsyncAwaitBestPractices;\nusing StabilityMatrix.Core.Models;\nusing Sta"
},
{
"path": "StabilityMatrix/InstallerWindow.xaml",
"chars": 13015,
"preview": "<ui:FluentWindow\n ExtendsContentIntoTitleBar=\"True\"\n Height=\"700\"\n Icon=\"pack://application:,,,/Assets/Icon.ico"
},
{
"path": "StabilityMatrix/InstallerWindow.xaml.cs",
"chars": 1182,
"preview": "using System.Windows;\nusing StabilityMatrix.Services;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Controls.Window;\n\n"
},
{
"path": "StabilityMatrix/Interactions/EventTriggerWithoutPropogation.cs",
"chars": 436,
"preview": "using System.Windows;\n\nnamespace StabilityMatrix.Interactions;\n\npublic class EventTriggerWithoutPropagation : Microsoft"
},
{
"path": "StabilityMatrix/LaunchOptionsDialog.xaml",
"chars": 9198,
"preview": "<ui:ContentDialog\n CloseButtonText=\"Close\"\n DialogHeight=\"616\"\n DialogWidth=\"760\"\n Loaded=\"LaunchOptionsDia"
},
{
"path": "StabilityMatrix/LaunchOptionsDialog.xaml.cs",
"chars": 816,
"preview": "using System.Collections.Generic;\nusing System.Windows;\nusing StabilityMatrix.Core.Models;\nusing StabilityMatrix.ViewMo"
},
{
"path": "StabilityMatrix/LaunchPage.xaml",
"chars": 9933,
"preview": "<Page\n Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n Loaded=\"LaunchPage_OnLoaded\"\n Title=\"LaunchPa"
},
{
"path": "StabilityMatrix/LaunchPage.xaml.cs",
"chars": 564,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing StabilityMatrix.ViewModels;\n\nnamespace StabilityMatrix;\n\npub"
},
{
"path": "StabilityMatrix/MainWindow.xaml",
"chars": 8723,
"preview": "<ui:FluentWindow\n Closing=\"MainWindow_OnClosing\"\n Closed=\"MainWindow_OnClosed\"\n ExtendsContentIntoTitleBar=\"Tru"
},
{
"path": "StabilityMatrix/MainWindow.xaml.cs",
"chars": 4241,
"preview": "using System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Reactive.Linq;\nusing System.Threading;"
},
{
"path": "StabilityMatrix/Models/CheckpointFile.cs",
"chars": 7878,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing S"
},
{
"path": "StabilityMatrix/Models/CheckpointFolder.cs",
"chars": 13060,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Collections.Speciali"
},
{
"path": "StabilityMatrix/OneClickInstallDialog.xaml",
"chars": 3874,
"preview": "<ui:ContentDialog\n CloseButtonText=\"Close\"\n Loaded=\"OneClickInstallDialog_OnLoaded\"\n Title=\"Stable Diffusion W"
},
{
"path": "StabilityMatrix/OneClickInstallDialog.xaml.cs",
"chars": 672,
"preview": "using System.Windows;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Contracts;\nusing Wpf.Ui.Controls.ContentDialogCont"
},
{
"path": "StabilityMatrix/Package.appxmanifest",
"chars": 1609,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<Package\n xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows"
},
{
"path": "StabilityMatrix/PackageManagerPage.xaml",
"chars": 6915,
"preview": "<Page\n Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n Loaded=\"InstallPage_OnLoaded\"\n d:DataContext="
},
{
"path": "StabilityMatrix/PackageManagerPage.xaml.cs",
"chars": 853,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing StabilityMatrix.ViewModels;\n\n// To learn more about WinUI, t"
},
{
"path": "StabilityMatrix/Properties/launchSettings.json",
"chars": 570,
"preview": "{\n \"profiles\": {\n \"StabilityMatrix (Package)\": {\n \"commandName\": \"MsixPackage\",\n \"environmentVariables\": {"
},
{
"path": "StabilityMatrix/SelectInstallLocationsDialog.xaml",
"chars": 5791,
"preview": "<ui:ContentDialog\n CloseButtonText=\"Close\"\n Loaded=\"SelectInstallLocationsDialog_OnLoaded\"\n Title=\"Select Data"
},
{
"path": "StabilityMatrix/SelectInstallLocationsDialog.xaml.cs",
"chars": 773,
"preview": "using System.Windows;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Contracts;\nusing Wpf.Ui.Controls.ContentDialogCont"
},
{
"path": "StabilityMatrix/SelectModelVersionDialog.xaml",
"chars": 4696,
"preview": "<ui:ContentDialog\n CloseButtonText=\"Close\"\n Title=\"{Binding CivitModel.Name}\"\n d:DataContext=\"{d:DesignInstanc"
},
{
"path": "StabilityMatrix/SelectModelVersionDialog.xaml.cs",
"chars": 1323,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing StabilityMatrix.ViewModels;\nusin"
},
{
"path": "StabilityMatrix/Services/INotificationBarService.cs",
"chars": 170,
"preview": "using Wpf.Ui.Contracts;\n\nnamespace StabilityMatrix.Services;\n\npublic interface INotificationBarService : ISnackbarServi"
},
{
"path": "StabilityMatrix/Services/InstallerWindowDialogService.cs",
"chars": 136,
"preview": "using Wpf.Ui.Services;\n\nnamespace StabilityMatrix.Services;\n\npublic class InstallerWindowDialogService : ContentDialogS"
},
{
"path": "StabilityMatrix/Services/NotificationBarService.cs",
"chars": 1063,
"preview": "using AsyncAwaitBestPractices;\nusing StabilityMatrix.Core.Services;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing W"
},
{
"path": "StabilityMatrix/Services/PageContentDialogService.cs",
"chars": 132,
"preview": "using Wpf.Ui.Services;\n\nnamespace StabilityMatrix.Services;\n\npublic class PageContentDialogService : ContentDialogServi"
},
{
"path": "StabilityMatrix/Services/PageService.cs",
"chars": 1128,
"preview": "using System;\nusing System.Windows;\nusing Wpf.Ui.Contracts;\n\nnamespace StabilityMatrix.Services;\n\npublic class PageServ"
},
{
"path": "StabilityMatrix/SettingsPage.xaml",
"chars": 14688,
"preview": "<Page\n Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n Loaded=\"SettingsPage_OnLoaded\"\n d:DataContext="
},
{
"path": "StabilityMatrix/SettingsPage.xaml.cs",
"chars": 923,
"preview": "using System.Windows;\nusing MdXaml;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Controls.Navigation;\n\nnamespace Stabi"
},
{
"path": "StabilityMatrix/StabilityMatrix.csproj",
"chars": 5135,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <OutputType>WinExe</OutputType>\n <TargetFramework>net7.0-win"
},
{
"path": "StabilityMatrix/Styles/Styles.xaml",
"chars": 4862,
"preview": "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n xmlns:ui=\"htt"
},
{
"path": "StabilityMatrix/TextToImagePage.xaml",
"chars": 10458,
"preview": "<Page\n Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n Loaded=\"TextToImagePage_OnLoaded\"\n Title=\"Tex"
},
{
"path": "StabilityMatrix/TextToImagePage.xaml.cs",
"chars": 1992,
"preview": "using System.Windows;\nusing System.Windows.Controls;\nusing StabilityMatrix.Services;\nusing StabilityMatrix.ViewModels;\n"
},
{
"path": "StabilityMatrix/UpdateWindow.xaml",
"chars": 5368,
"preview": "<ui:FluentWindow\n ExtendsContentIntoTitleBar=\"True\"\n Height=\"700\"\n Icon=\"pack://application:,,,/Assets/Icon.ic"
},
{
"path": "StabilityMatrix/UpdateWindow.xaml.cs",
"chars": 630,
"preview": "using System.Windows;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Controls.Window;\n\nnamespace StabilityMatrix;\n\npubl"
},
{
"path": "StabilityMatrix/ViewModels/CheckpointBrowserCardViewModel.cs",
"chars": 10537,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net.Http;\nusing System"
},
{
"path": "StabilityMatrix/ViewModels/CheckpointBrowserViewModel.cs",
"chars": 13649,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.ComponentModel;\nusin"
},
{
"path": "StabilityMatrix/ViewModels/CheckpointManagerViewModel.cs",
"chars": 3527,
"preview": "using System.Collections.Concurrent;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing System.IO;\nu"
},
{
"path": "StabilityMatrix/ViewModels/DataDirectoryMigrationViewModel.cs",
"chars": 7939,
"preview": "using System;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing CommunityToolkit.Mvvm.ComponentMo"
},
{
"path": "StabilityMatrix/ViewModels/ExceptionWindowViewModel.cs",
"chars": 208,
"preview": "using System;\n\nnamespace StabilityMatrix.ViewModels;\n\npublic class ExceptionWindowViewModel\n{\n public Exception Exce"
},
{
"path": "StabilityMatrix/ViewModels/FirstLaunchSetupViewModel.cs",
"chars": 2106,
"preview": "using System.Linq;\nusing System.Threading.Tasks;\nusing AsyncAwaitBestPractices;\nusing CommunityToolkit.Mvvm.ComponentMo"
},
{
"path": "StabilityMatrix/ViewModels/InstallerViewModel.cs",
"chars": 14131,
"preview": "using System;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading"
},
{
"path": "StabilityMatrix/ViewModels/LaunchOptionsDialogViewModel.cs",
"chars": 5817,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.Immutable;\nusing System.Collections.ObjectMode"
},
{
"path": "StabilityMatrix/ViewModels/LaunchViewModel.cs",
"chars": 12715,
"preview": "using System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windo"
},
{
"path": "StabilityMatrix/ViewModels/MainWindowViewModel.cs",
"chars": 9343,
"preview": "using System;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Wind"
},
{
"path": "StabilityMatrix/ViewModels/OneClickInstallViewModel.cs",
"chars": 7328,
"preview": "using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing CommunityToolkit.Mvvm.ComponentModel;\nusing Com"
},
{
"path": "StabilityMatrix/ViewModels/PackageManagerViewModel.cs",
"chars": 11589,
"preview": "using System;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Threading.Tasks;\nusing StabilityMatri"
},
{
"path": "StabilityMatrix/ViewModels/ProgressViewModel.cs",
"chars": 836,
"preview": "using System.Windows;\nusing CommunityToolkit.Mvvm.ComponentModel;\n\nnamespace StabilityMatrix.ViewModels;\n\n/// <summary>"
},
{
"path": "StabilityMatrix/ViewModels/RefreshBadgeViewModel.cs",
"chars": 3234,
"preview": "using System;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing System.Windows.Media;\nusing CommunityTool"
},
{
"path": "StabilityMatrix/ViewModels/SelectInstallLocationsViewModel.cs",
"chars": 5452,
"preview": "using System;\nusing System.IO;\nusing System.Linq;\nusing System.Text.Json;\nusing System.Text.Json.Serialization;\nusing S"
},
{
"path": "StabilityMatrix/ViewModels/SelectModelVersionDialogViewModel.cs",
"chars": 2191,
"preview": "using System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.Windows.Media.Imaging;\nusing Commun"
},
{
"path": "StabilityMatrix/ViewModels/SettingsViewModel.cs",
"chars": 16951,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing Sy"
},
{
"path": "StabilityMatrix/ViewModels/SnackbarViewModel.cs",
"chars": 913,
"preview": "using CommunityToolkit.Mvvm.ComponentModel;\nusing CommunityToolkit.Mvvm.Input;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Contra"
},
{
"path": "StabilityMatrix/ViewModels/TextToImageViewModel.cs",
"chars": 9221,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing"
},
{
"path": "StabilityMatrix/ViewModels/UpdateWindowViewModel.cs",
"chars": 2748,
"preview": "using System;\nusing System.Diagnostics;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing System.Windows;\nusin"
},
{
"path": "StabilityMatrix/ViewModels/WebLoginViewModel.cs",
"chars": 2438,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing CommunityToo"
},
{
"path": "StabilityMatrix/WebLoginDialog.xaml",
"chars": 2817,
"preview": "<ui:ContentDialog\n CloseButtonText=\"Close\"\n DialogMaxHeight=\"750\"\n DialogMaxWidth=\"600\"\n Loaded=\"WebLoginDi"
},
{
"path": "StabilityMatrix/WebLoginDialog.xaml.cs",
"chars": 1973,
"preview": "using System.Windows;\nusing Microsoft.Web.WebView2.Core;\nusing StabilityMatrix.ViewModels;\nusing Wpf.Ui.Contracts;\nusin"
},
{
"path": "StabilityMatrix/app.manifest",
"chars": 1298,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n <asse"
},
{
"path": "StabilityMatrix/appsettings.Development.json",
"chars": 125,
"preview": "{\n \"GithubApiKey\": \"\",\n \"DebugOptions\": {\n \"TempDatabase\": false,\n \"ShowOneClickInstall\": false\n "
},
{
"path": "StabilityMatrix/appsettings.json",
"chars": 26,
"preview": "{\n \"GithubApiKey\": \"\"\n}\n"
},
{
"path": "StabilityMatrix.Analyzers.CodeFixes/StabilityMatrix.Analyzers.CodeFixes.csproj",
"chars": 223,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <Impli"
},
{
"path": "StabilityMatrix.Avalonia/Animations/BaseTransitionInfo.cs",
"chars": 326,
"preview": "using System;\nusing FluentAvalonia.UI.Media.Animation;\n\nnamespace StabilityMatrix.Avalonia.Animations;\n\npublic abstract"
},
{
"path": "StabilityMatrix.Avalonia/Animations/BetterDrillInNavigationTransition.cs",
"chars": 1921,
"preview": "using System;\nusing System.Threading;\nusing Avalonia;\nusing Avalonia.Animation;\nusing Avalonia.Animation.Easings;\nusing"
},
{
"path": "StabilityMatrix.Avalonia/Animations/BetterEntranceNavigationTransition.cs",
"chars": 1995,
"preview": "using System;\nusing System.Threading;\nusing Avalonia;\nusing Avalonia.Animation;\nusing Avalonia.Animation.Easings;\nusing"
},
{
"path": "StabilityMatrix.Avalonia/Animations/BetterSlideNavigationTransition.cs",
"chars": 3992,
"preview": "using System;\nusing System.Threading;\nusing Avalonia;\nusing Avalonia.Animation;\nusing Avalonia.Animation.Easings;\nusing"
},
{
"path": "StabilityMatrix.Avalonia/Animations/ItemsRepeaterArrangeAnimation.cs",
"chars": 3553,
"preview": "using System;\nusing Avalonia;\nusing Avalonia.Controls;\nusing Avalonia.Rendering.Composition;\n\nnamespace StabilityMatrix"
},
{
"path": "StabilityMatrix.Avalonia/App.axaml",
"chars": 9216,
"preview": "<Application\n x:Class=\"StabilityMatrix.Avalonia.App\"\n xmlns=\"https://github.com/avaloniaui\"\n xmlns:x=\"http://s"
},
{
"path": "StabilityMatrix.Avalonia/App.axaml.cs",
"chars": 45464,
"preview": "using System.Diagnostics;\nusing System.Diagnostics.CodeAnalysis;\nusing System.Net;\nusing System.Net.Http.Headers;\nusing "
},
{
"path": "StabilityMatrix.Avalonia/Assets/Fonts/NotoSansJP/OFL.txt",
"chars": 4387,
"preview": "Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'\n\nThis Font Software is licensed unde"
},
{
"path": "StabilityMatrix.Avalonia/Assets/ImagePrompt.tmLanguage.json",
"chars": 8019,
"preview": "{\n \"name\": \"Image Prompt\",\n \"scopeName\": \"source.prompt\",\n \"uuid\": \"A5283894-BA62-4BFE-BB29-7892AE7ACCDC\",\n \"folding"
},
{
"path": "StabilityMatrix.Avalonia/Assets/ThemeMatrixDark.json",
"chars": 16910,
"preview": "{\n \"type\": \"dark\",\n \"colors\": {\n \"dropdown.background\": \"#525252\",\n \"list.activeSelectionBackground\": \"#707070\","
},
{
"path": "StabilityMatrix.Avalonia/Assets/hf-packages.json",
"chars": 34463,
"preview": "[\n {\n \"ModelCategory\": \"BaseModel\",\n \"ModelName\": \"Stable Diffusion 1.5\",\n \"RepositoryPath\": \"runwayml/stable-"
},
{
"path": "StabilityMatrix.Avalonia/Assets/licenses.json",
"chars": 57455,
"preview": "[{\"PackageName\":\"AsyncImageLoader.Avalonia\",\"PackageVersion\":\"3.0.0-avalonia11-preview6\",\"PackageUrl\":\"https://github.co"
},
{
"path": "StabilityMatrix.Avalonia/Assets/linux-x64/7zzs - LICENSE.txt",
"chars": 3858,
"preview": " 7-Zip\n ~~~~~\n License for use and distribution\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n 7-Zip Copyright (C) 1999-2023 I"
},
{
"path": "StabilityMatrix.Avalonia/Assets/macos-arm64/7zz - LICENSE.txt",
"chars": 3858,
"preview": " 7-Zip\n ~~~~~\n License for use and distribution\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n 7-Zip Copyright (C) 1999-2023 I"
},
{
"path": "StabilityMatrix.Avalonia/Assets/markdown.css",
"chars": 21983,
"preview": "/* dark */\n.markdown-body {\n color-scheme: dark;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;"
},
{
"path": "StabilityMatrix.Avalonia/Assets/sdprompt.xshd",
"chars": 3260,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<SyntaxDefinition name=\"ImagePrompt\" extensions=\".prompt\" xmlns=\"http://icsharp"
},
{
"path": "StabilityMatrix.Avalonia/Assets/sitecustomize.py",
"chars": 2608,
"preview": "\"\"\"\nStartup site customization for Stability Matrix.\n\nCurrently this installs an audit hook to notify the parent proces"
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/7za - LICENSE.txt",
"chars": 1256,
"preview": "7-Zip Extra 18.01\n-----------------\n\n7-Zip Extra is package of extra modules of 7-Zip. \n\n7-Zip Copyright (C) 1999-2018 I"
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/__init__.py",
"chars": 23997,
"preview": "\"\"\"\nVirtual environment (venv) package for Python. Based on PEP 405.\n\nCopyright (C) 2011-2014 Vinay Sajip.\nLicensed to t"
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/__main__.py",
"chars": 145,
"preview": "import sys\nfrom . import main\n\nrc = 1\ntry:\n main()\n rc = 0\nexcept Exception as e:\n print('Error: %s' % e, file="
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/scripts/common/Activate.ps1",
"chars": 8786,
"preview": "<#\n.Synopsis\nActivate a Python virtual environment for the current PowerShell session.\n\n.Description\nPushes the python e"
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/scripts/common/activate",
"chars": 2009,
"preview": "# This file must be used with \"source bin/activate\" *from bash*\n# you cannot run it directly\n\ndeactivate () {\n # rese"
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/scripts/nt/activate.bat",
"chars": 973,
"preview": "@echo off\n\nrem This file is UTF-8 encoded, so we need to update the current code page while executing it\nfor /f \"tokens="
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/scripts/nt/deactivate.bat",
"chars": 371,
"preview": "@echo off\n\nif defined _OLD_VIRTUAL_PROMPT (\n set \"PROMPT=%_OLD_VIRTUAL_PROMPT%\"\n)\nset _OLD_VIRTUAL_PROMPT=\n\nif define"
},
{
"path": "StabilityMatrix.Avalonia/Assets/win-x64/venv/scripts/posix/activate.csh",
"chars": 935,
"preview": "# This file must be used with \"source bin/activate.csh\" *from csh*.\n# You cannot run it directly.\n# Created by Davide Di"
}
]
// ... and 1329 more files (download for full content)
About this extraction
This page contains the full source code of the LykosAI/StabilityMatrix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1529 files (7.7 MB), approximately 2.1M tokens, and a symbol index with 5812 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.