Skip to content

Commit 913ebf9

Browse files
authored
Merge pull request LykosAI#1222 from ionite34/downmerg-stuff
Downmerg stuff
2 parents 96cfc53 + 2ed82eb commit 913ebf9

21 files changed

Lines changed: 1441 additions & 108 deletions

File tree

.github/workflows/cla.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
path-to-document: 'https://lykos.ai/cla'
3232
# branch should not be protected
3333
branch: 'main'
34-
allowlist: ionite34,mohnjiles,bot*
34+
allowlist: ionite34,mohnjiles,claude,bot*
3535
# the followings are the optional inputs - If the optional inputs are not given, then default values will be taken
3636
remote-organization-name: LykosAI
3737
remote-repository-name: clabot-config

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2
1010
- Added single-instance window activation signaling so reopening the app restores and focuses the existing desktop window instead of launching a duplicate instance
1111
- Added notification system with localizable banner and markdown detail dialog UI
1212
- Added warning in data directory selector when an OneDrive folder is selected
13+
- Added support in the Checkpoints page to distinguish standard updates from Early Access-only updates - thanks to @x0x0b!
14+
- Added torch index for Strix/Gorgon Point Ryzen AI APUs on Windows - thanks to @NeuralFault!
15+
### Changed
16+
- Settings file saves are now atomic to prevent corruption from interrupted writes
1317
### Fixed
1418
- Fixed an issue where `Align Your Steps` scheduler and Unet Loader workflows ignored Regional Prompting (and other addon) conditioning modifiers.
1519
- Potentially fixed [#1578](https://github.com/LykosAI/StabilityMatrix/issues/1578) - `SocketException: Address already in use` on Linux startup by cleaning stale interprocess socket files and reactivating the existing window
@@ -20,6 +24,9 @@ and this project adheres to [Semantic Versioning 2.0](https://semver.org/spec/v2
2024
- Fixed download progress bar showing 100% immediately for fresh downloads due to missing Content-Length fallback when Content-Range header is absent
2125
- Fixed downloads failing with "The request message was already sent" when the server doesn't return Content-Length on the first attempt, caused by reusing a consumed HttpRequestMessage in the retry loop
2226
- Fixed downloads from sources that redirect to CivitAI/HuggingFace (e.g. CivArchive) failing with Unauthorized by resolving the redirect target URL and applying auth headers for the correct domain
27+
- Fixed dropdown menu overlayed in Inference UI Model Cards not being scrollable on Linux - thanks to @NeuralFault!
28+
- Fixed [#1590](https://github.com/LykosAI/StabilityMatrix/issues/1590) - Startup crash when settings file is corrupted. Settings files are now self-healing with automatic recovery from null bytes, truncated JSON, and missing brackets
29+
- Fixed [#1397](https://github.com/LykosAI/StabilityMatrix/issues/1397), [#610](https://github.com/LykosAI/StabilityMatrix/issues/610) - duplicate pip package entries in results - thanks to @e-nord!
2330

2431
## v2.15.6
2532
### Added

StabilityMatrix.Avalonia/Controls/FADownloadableComboBox.cs

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,17 @@
22
using System.Threading.Tasks;
33
using AsyncAwaitBestPractices;
44
using Avalonia.Controls;
5+
using Avalonia.Controls.Primitives;
6+
using Avalonia.Input;
7+
using Avalonia.Interactivity;
8+
using Avalonia.VisualTree;
59
using CommunityToolkit.Mvvm.Input;
610
using FluentAvalonia.UI.Controls;
711
using Microsoft.Extensions.DependencyInjection;
812
using StabilityMatrix.Avalonia.Services;
913
using StabilityMatrix.Avalonia.ViewModels.Base;
1014
using StabilityMatrix.Avalonia.ViewModels.Dialogs;
15+
using StabilityMatrix.Core.Helper;
1116
using StabilityMatrix.Core.Models;
1217

1318
namespace StabilityMatrix.Avalonia.Controls;
@@ -17,6 +22,66 @@ public partial class FADownloadableComboBox : FAComboBox
1722
{
1823
protected override Type StyleKeyOverride => typeof(FAComboBox);
1924

25+
private Popup? dropDownPopup;
26+
private IDisposable? openSubscription;
27+
28+
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
29+
{
30+
base.OnApplyTemplate(e);
31+
32+
CleanupSubscription();
33+
DropDownOpened -= OnDropDownOpenedHandler;
34+
DropDownClosed -= OnDropDownClosedHandler;
35+
36+
// Template part name is "Popup" per FAComboBox.properties.cs (s_tpPopup = "Popup")
37+
dropDownPopup = e.NameScope.Find<Popup>("Popup");
38+
39+
DropDownOpened += OnDropDownOpenedHandler;
40+
DropDownClosed += OnDropDownClosedHandler;
41+
}
42+
43+
private void OnDropDownOpenedHandler(object? sender, EventArgs e)
44+
{
45+
CleanupSubscription();
46+
47+
if (dropDownPopup?.Child is not Control popupChild)
48+
return;
49+
50+
var scrollViewer = popupChild.GetVisualDescendants().OfType<ScrollViewer>().FirstOrDefault();
51+
52+
if (scrollViewer == null)
53+
return;
54+
55+
// On Unix-like systems, overlay popups share the same TopLevel visual root as the main window.
56+
// FAComboBox.OnPopupOpened adds a TopLevel tunnel handler that marks all wheel eventsas handled while the dropdown is open,
57+
// which inadvertently blocks scroll-wheelevents in popup menus in Inference model cards.
58+
// Resetting e.Handled on the ScrollViewer's tunnel phase counters this.
59+
if (!Compat.IsUnix)
60+
return;
61+
62+
openSubscription = scrollViewer.AddDisposableHandler(
63+
PointerWheelChangedEvent,
64+
static (_, ev) =>
65+
{
66+
if (ev.Handled)
67+
ev.Handled = false;
68+
},
69+
RoutingStrategies.Tunnel,
70+
handledEventsToo: true
71+
);
72+
}
73+
74+
private void OnDropDownClosedHandler(object? sender, EventArgs e)
75+
{
76+
CleanupSubscription();
77+
}
78+
79+
private void CleanupSubscription()
80+
{
81+
openSubscription?.Dispose();
82+
openSubscription = null;
83+
}
84+
2085
static FADownloadableComboBox()
2186
{
2287
SelectionChangedEvent.AddClassHandler<FADownloadableComboBox>(

StabilityMatrix.Avalonia/Languages/Resources.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

StabilityMatrix.Avalonia/Languages/Resources.ja-JP.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@
231231
<data name="Label_UpdateAvailable" xml:space="preserve">
232232
<value>更新あり</value>
233233
</data>
234+
<data name="Label_EarlyAccessUpdateAvailable" xml:space="preserve">
235+
<value>Early Accessの更新あり</value>
236+
</data>
234237
<data name="Label_BecomeAPatron" xml:space="preserve">
235238
<value>Patreonになる</value>
236239
</data>
@@ -1432,4 +1435,4 @@ Sparkは兆レベルのパラメータを持つ基盤モデルで、膨大なパ
14321435
### 🔒 プライバシーファースト
14331436
私たちはプライバシーを最優先に考えています。([生成AI利用規約](https://lykos.ai/gen-ai-terms)) **あなたのプロンプトや出力内容は、Lykos AIや必要なクラウドインフラパートナーによるAI学習には一切使用されません。** 処理はお客様の質問に対する返答を生成するためだけに安全を重視して使われ、**その後はプロンプト内容そのものではなく、メタデータ(タイムスタンプやトークン数など)のみを保存します。** あなたのデータが販売や共有されることは決してありません。</value>
14341437
</data>
1435-
</root>
1438+
</root>

StabilityMatrix.Avalonia/Languages/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,9 @@
231231
<data name="Label_UpdateAvailable" xml:space="preserve">
232232
<value>Update Available</value>
233233
</data>
234+
<data name="Label_EarlyAccessUpdateAvailable" xml:space="preserve">
235+
<value>Early Access Update Available</value>
236+
</data>
234237
<data name="Label_BecomeAPatron" xml:space="preserve">
235238
<value>Become a Patron</value>
236239
</data>

StabilityMatrix.Avalonia/Styles/Card.axaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@
9494
</Style>
9595
</Style>
9696

97+
<!-- Early Access -->
98+
<Style Selector="controls|Card.early-access">
99+
<Setter Property="Background" Value="{DynamicResource ThemeDeepOrangeColorTransparent}" />
100+
<Setter Property="BorderBrush" Value="{DynamicResource ThemeDeepOrangeColorTransparent}" />
101+
<Style Selector="^ /template/ ContentPresenter#PART_ContentPresenter">
102+
<Setter Property="Foreground" Value="{DynamicResource ButtonForeground}" />
103+
</Style>
104+
</Style>
105+
97106
<!-- Info -->
98107
<Style Selector="controls|Card.info">
99108
<Setter Property="Background" Value="{DynamicResource ThemeDarkBlueColorTransparent}" />
Lines changed: 47 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
<ResourceDictionary xmlns="https://github.com/avaloniaui"
2-
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
3-
xmlns:sty="clr-namespace:FluentAvalonia.Styling;assembly=FluentAvalonia">
4-
<!-- Static colors -->
1+
<ResourceDictionary
2+
xmlns="https://github.com/avaloniaui"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:sty="clr-namespace:FluentAvalonia.Styling;assembly=FluentAvalonia">
5+
<!-- Static colors -->
56
<Color x:Key="ThemePrimaryColor">#333333</Color>
67
<Color x:Key="ThemeDarkDarkRedColor">#952923</Color>
78
<Color x:Key="ThemeDarkRedColor">#C2362E</Color>
@@ -32,58 +33,59 @@
3233
<Color x:Key="ThemeAmberColor">#FFC107</Color>
3334
<Color x:Key="ThemeOrangeColor">#FF9800</Color>
3435
<Color x:Key="ThemeDeepOrangeColor">#FF5722</Color>
36+
<Color x:Key="ThemeDeepOrangeColorTransparent">#AAFF5722</Color>
3537
<Color x:Key="ThemeEldenRingOrangeColor">#FF4F00</Color>
3638
<Color x:Key="ThemeBrownColor">#795548</Color>
3739
<Color x:Key="ThemeGreyColor">#9E9E9E</Color>
3840
<Color x:Key="ThemeLightGreyColor">#C0C0C0</Color>
3941
<Color x:Key="ThemeBlueGreyColor">#607D8B</Color>
40-
41-
<!-- Dark / light dynamic colors -->
42+
43+
<!-- Dark / light dynamic colors -->
4244
<ResourceDictionary.ThemeDictionaries>
4345
<ResourceDictionary x:Key="Default">
44-
<SolidColorBrush x:Key="ThemeBackgroundBrush" Color="#AAAAAA"/>
45-
<SolidColorBrush x:Key="ThemeDarkAccentForegroundBrush" Color="#AAAAAA"/>
46-
<SolidColorBrush x:Key="ThemeDarkAccentBackgroundBrush" Color="#686868"/>
47-
<SolidColorBrush x:Key="RegionColor" Color="#AAAAAA"/>
48-
49-
<SolidColorBrush x:Key="CompletionBorderBrush" Color="#43454A"/>
50-
<SolidColorBrush x:Key="CompletionBackgroundBrush" Color="#2B2D30"/>
51-
<SolidColorBrush x:Key="CompletionSecondaryBackgroundBrush" Color="#393B40"/>
52-
<SolidColorBrush x:Key="CompletionForegroundBrush" Color="#B4B8BF"/>
53-
<SolidColorBrush x:Key="CompletionSecondaryForegroundBrush" Color="#878B8D"/>
54-
<SolidColorBrush x:Key="CompletionSelectionBackgroundBrush" Color="#2E436E"/>
55-
<SolidColorBrush x:Key="CompletionSelectionForegroundBrush" Color="#5389F4"/>
46+
<SolidColorBrush x:Key="ThemeBackgroundBrush" Color="#AAAAAA" />
47+
<SolidColorBrush x:Key="ThemeDarkAccentForegroundBrush" Color="#AAAAAA" />
48+
<SolidColorBrush x:Key="ThemeDarkAccentBackgroundBrush" Color="#686868" />
49+
<SolidColorBrush x:Key="RegionColor" Color="#AAAAAA" />
50+
51+
<SolidColorBrush x:Key="CompletionBorderBrush" Color="#43454A" />
52+
<SolidColorBrush x:Key="CompletionBackgroundBrush" Color="#2B2D30" />
53+
<SolidColorBrush x:Key="CompletionSecondaryBackgroundBrush" Color="#393B40" />
54+
<SolidColorBrush x:Key="CompletionForegroundBrush" Color="#B4B8BF" />
55+
<SolidColorBrush x:Key="CompletionSecondaryForegroundBrush" Color="#878B8D" />
56+
<SolidColorBrush x:Key="CompletionSelectionBackgroundBrush" Color="#2E436E" />
57+
<SolidColorBrush x:Key="CompletionSelectionForegroundBrush" Color="#5389F4" />
5658
</ResourceDictionary>
57-
59+
5860
<ResourceDictionary x:Key="Dark">
59-
<SolidColorBrush x:Key="ThemeBackgroundBrush" Color="#282828"/>
60-
<SolidColorBrush x:Key="ThemeDarkAccentForegroundBrush" Color="#AAAAAA"/>
61-
<SolidColorBrush x:Key="ThemeDarkAccentBackgroundBrush" Color="#252525"/>
62-
<SolidColorBrush x:Key="RegionColor" Color="#282828"/>
63-
64-
<SolidColorBrush x:Key="CompletionBorderBrush" Color="#43454A"/>
65-
<SolidColorBrush x:Key="CompletionBackgroundBrush" Color="#2B2D30"/>
66-
<SolidColorBrush x:Key="CompletionSecondaryBackgroundBrush" Color="#393B40"/>
67-
<SolidColorBrush x:Key="CompletionForegroundBrush" Color="#B4B8BF"/>
68-
<SolidColorBrush x:Key="CompletionSecondaryForegroundBrush" Color="#878B8D"/>
69-
<SolidColorBrush x:Key="CompletionSelectionBackgroundBrush" Color="#2E436E"/>
70-
<SolidColorBrush x:Key="CompletionSelectionForegroundBrush" Color="#5389F4"/>
61+
<SolidColorBrush x:Key="ThemeBackgroundBrush" Color="#282828" />
62+
<SolidColorBrush x:Key="ThemeDarkAccentForegroundBrush" Color="#AAAAAA" />
63+
<SolidColorBrush x:Key="ThemeDarkAccentBackgroundBrush" Color="#252525" />
64+
<SolidColorBrush x:Key="RegionColor" Color="#282828" />
65+
66+
<SolidColorBrush x:Key="CompletionBorderBrush" Color="#43454A" />
67+
<SolidColorBrush x:Key="CompletionBackgroundBrush" Color="#2B2D30" />
68+
<SolidColorBrush x:Key="CompletionSecondaryBackgroundBrush" Color="#393B40" />
69+
<SolidColorBrush x:Key="CompletionForegroundBrush" Color="#B4B8BF" />
70+
<SolidColorBrush x:Key="CompletionSecondaryForegroundBrush" Color="#878B8D" />
71+
<SolidColorBrush x:Key="CompletionSelectionBackgroundBrush" Color="#2E436E" />
72+
<SolidColorBrush x:Key="CompletionSelectionForegroundBrush" Color="#5389F4" />
7173
</ResourceDictionary>
72-
74+
7375
<ResourceDictionary x:Key="{x:Static sty:FluentAvaloniaTheme.HighContrastTheme}">
74-
<SolidColorBrush x:Key="ThemeBackgroundBrush" Color="#AAAAAA"/>
75-
<SolidColorBrush x:Key="ThemeDarkAccentForegroundBrush" Color="#AAAAAA"/>
76-
<SolidColorBrush x:Key="ThemeDarkAccentBackgroundBrush" Color="#686868"/>
77-
<SolidColorBrush x:Key="RegionColor" Color="#AAAAAA"/>
78-
79-
<SolidColorBrush x:Key="CompletionBorderBrush" Color="#43454A"/>
80-
<SolidColorBrush x:Key="CompletionBackgroundBrush" Color="#2B2D30"/>
81-
<SolidColorBrush x:Key="CompletionSecondaryBackgroundBrush" Color="#393B40"/>
82-
<SolidColorBrush x:Key="CompletionForegroundBrush" Color="#B4B8BF"/>
83-
<SolidColorBrush x:Key="CompletionSecondaryForegroundBrush" Color="#878B8D"/>
84-
<SolidColorBrush x:Key="CompletionSelectionBackgroundBrush" Color="#2E436E"/>
85-
<SolidColorBrush x:Key="CompletionSelectionForegroundBrush" Color="#5389F4"/>
76+
<SolidColorBrush x:Key="ThemeBackgroundBrush" Color="#AAAAAA" />
77+
<SolidColorBrush x:Key="ThemeDarkAccentForegroundBrush" Color="#AAAAAA" />
78+
<SolidColorBrush x:Key="ThemeDarkAccentBackgroundBrush" Color="#686868" />
79+
<SolidColorBrush x:Key="RegionColor" Color="#AAAAAA" />
80+
81+
<SolidColorBrush x:Key="CompletionBorderBrush" Color="#43454A" />
82+
<SolidColorBrush x:Key="CompletionBackgroundBrush" Color="#2B2D30" />
83+
<SolidColorBrush x:Key="CompletionSecondaryBackgroundBrush" Color="#393B40" />
84+
<SolidColorBrush x:Key="CompletionForegroundBrush" Color="#B4B8BF" />
85+
<SolidColorBrush x:Key="CompletionSecondaryForegroundBrush" Color="#878B8D" />
86+
<SolidColorBrush x:Key="CompletionSelectionBackgroundBrush" Color="#2E436E" />
87+
<SolidColorBrush x:Key="CompletionSelectionForegroundBrush" Color="#5389F4" />
8688
</ResourceDictionary>
8789
</ResourceDictionary.ThemeDictionaries>
88-
90+
8991
</ResourceDictionary>

StabilityMatrix.Avalonia/ViewModels/CheckpointManager/CheckpointFileViewModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ namespace StabilityMatrix.Avalonia.ViewModels.CheckpointManager;
2525
public partial class CheckpointFileViewModel : SelectableViewModelBase
2626
{
2727
[ObservableProperty]
28+
[NotifyPropertyChangedFor(nameof(HasEarlyAccessUpdateOnly))]
29+
[NotifyPropertyChangedFor(nameof(HasStandardUpdate))]
2830
private LocalModelFile checkpointFile;
2931

3032
[ObservableProperty]
@@ -64,6 +66,8 @@ public partial class CheckpointFileViewModel : SelectableViewModelBase
6466
public bool CanShowTriggerWords => CheckpointFile.ConnectedModelInfo?.TrainedWords?.Length > 0;
6567
public string BaseModelName => CheckpointFile.ConnectedModelInfo?.BaseModel ?? string.Empty;
6668
public CivitModelType ModelType => CheckpointFile.ConnectedModelInfo?.ModelType ?? CivitModelType.Unknown;
69+
public bool HasEarlyAccessUpdateOnly => CheckpointFile.HasEarlyAccessUpdateOnly;
70+
public bool HasStandardUpdate => CheckpointFile.HasUpdate && !CheckpointFile.HasEarlyAccessUpdateOnly;
6771

6872
/// <inheritdoc/>
6973
public CheckpointFileViewModel(

StabilityMatrix.Avalonia/Views/CheckpointsPage.axaml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@
629629
HorizontalAlignment="Left"
630630
VerticalAlignment="Top"
631631
Classes="success"
632-
IsVisible="{Binding CheckpointFile.HasUpdate}">
632+
IsVisible="{Binding HasStandardUpdate}">
633633

634634
<TextBlock
635635
HorizontalAlignment="Center"
@@ -640,6 +640,24 @@
640640
<Run Text="{Binding CheckpointFile.LatestModelInfo.LatestVersionCreatedAt}" />
641641
</TextBlock>
642642
</controls:Card>
643+
<controls:Card
644+
Height="24"
645+
Margin="4,8,0,0"
646+
Padding="4"
647+
HorizontalAlignment="Left"
648+
VerticalAlignment="Top"
649+
Classes="early-access"
650+
IsVisible="{Binding HasEarlyAccessUpdateOnly}">
651+
652+
<TextBlock
653+
HorizontalAlignment="Center"
654+
VerticalAlignment="Center"
655+
FontSize="11"
656+
FontWeight="Medium">
657+
<Run Text="{x:Static lang:Resources.Label_EarlyAccessUpdateAvailable}" />
658+
<Run Text="{Binding CheckpointFile.LatestModelInfo.LatestVersionCreatedAt}" />
659+
</TextBlock>
660+
</controls:Card>
643661
</WrapPanel>
644662
</LayoutTransformControl>
645663

0 commit comments

Comments
 (0)