SuncodeSoftware.SuperSDK.UI
3.7.1
dotnet add package SuncodeSoftware.SuperSDK.UI --version 3.7.1
NuGet\Install-Package SuncodeSoftware.SuperSDK.UI -Version 3.7.1
<PackageReference Include="SuncodeSoftware.SuperSDK.UI" Version="3.7.1" />
<PackageVersion Include="SuncodeSoftware.SuperSDK.UI" Version="3.7.1" />
<PackageReference Include="SuncodeSoftware.SuperSDK.UI" />
paket add SuncodeSoftware.SuperSDK.UI --version 3.7.1
#r "nuget: SuncodeSoftware.SuperSDK.UI, 3.7.1"
#:package SuncodeSoftware.SuperSDK.UI@3.7.1
#addin nuget:?package=SuncodeSoftware.SuperSDK.UI&version=3.7.1
#tool nuget:?package=SuncodeSoftware.SuperSDK.UI&version=3.7.1
SuperSDK.UI
Avalonia UI 通用组件库,提供统一风格的 UI 组件和工具。
🎯 核心功能
1. 窗口组件
- GzTitleBarCtrl - 统一风格的自定义标题栏(必须使用)
- GzAboutView - 关于窗口
- GzLoggerView - 日志查看器
- GzSqlDebugView - SQL 调试工具
2. 自定义按钮组件(支持主题切换)
所有按钮默认 Auto 模式,自动跟随全局主题切换(Dark/Light)
- GzConfirmButton - 确认按钮(对勾图标,绿色)
- GzSaveButton - 保存按钮(对勾图标,绿色)
- GzDeleteButton - 删除按钮(X 图标,红色)
- GzCancelButton - 取消按钮(撤销箭头图标,橙色)
- GzAddButton - 添加按钮(加号图标,绿色)
- GzEditButton - 编辑按钮(笔图标,橙色)
- GzOpenFolderButton - 打开文件夹按钮(文件夹图标,橙黄色)
- GzFilterButton - 过滤按钮(漏斗图标,青色)
- GzGenerateButton - 生成按钮(闪电图标,粉色)
- GzLoadButton - 加载/下载按钮(下箭头图标,蓝色)
- GzRefreshButton - 刷新按钮(循环箭头图标,蓝色)
- GzRunButton - 运行按钮(播放图标,绿色)
- GzPreviewButton - 预览按钮(眼睛图标,紫色)
- GzSettingsButton - 设置按钮(齿轮图标,灰色)
- GzMoveUpButton - 上移按钮(向上箭头图标,蓝色)
- GzMoveDownButton - 下移按钮(向下箭头图标,蓝色)
- GzMoveLeftButton - 左移按钮(向左箭头图标,蓝色)
- GzMoveRightButton - 右移按钮(向右箭头图标,蓝色)
- GzSetDataButton - 设置数据按钮(列表图标,蓝色)
- GzSetHeaderButton - 设置表头按钮(文档表头图标,蓝色)
- GzSelectAllButton - 全选按钮(勾选框图标,蓝色)
- GzDeselectAllButton - 全不选按钮(空框图标,蓝色)
🎨 按钮色系统计表
所有按钮均支持 Dark/Light 主题自动切换,以下是各按钮使用的颜色(适用于自定义控件开发):
| 色系 | 按钮 | Dark 模式 | Light 模式 | 用途 |
|---|---|---|---|---|
| 🟢 绿色系 | 成功/确认/添加 | |||
| GzConfirmButton | #52C176 → #6DD494 |
#66D68A → #80E8A0 |
确认按钮 | |
| GzSaveButton | #52C176 → #6DD494 |
#66D68A → #80E8A0 |
保存按钮 | |
| GzAddButton | #52C176 → #6DD494 |
#66D68A → #80E8A0 |
添加按钮 | |
| GzRunButton | #52C176 → #6DD494 |
#66D68A → #80E8A0 |
运行按钮 | |
| 🔴 红色系 | 删除/危险 | |||
| GzDeleteButton | #E57373 → #EF8E8E |
#FF8A80 → #FFA8A0 |
删除按钮 | |
| 🟠 橙色系 | 编辑/取消 | |||
| GzCancelButton | #FF9800 → #FFB74D |
#FFB74D → #FFCC80 |
取消按钮 | |
| GzEditButton | #FF9F5C → #FFB380 |
#FFB380 → #FFC799 |
编辑按钮 | |
| 🟡 橙黄色系 | 打开文件 | |||
| GzOpenFolderButton | #FFB84D → #FFC870 |
#FFC870 → #FFD88F |
打开文件夹 | |
| 🔵 蓝色系 | 数据操作/导航 | |||
| GzRefreshButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
刷新按钮 | |
| GzLoadButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
加载按钮 | |
| GzMoveUpButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
上移按钮 | |
| GzMoveDownButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
下移按钮 | |
| GzMoveLeftButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
左移按钮 | |
| GzMoveRightButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
右移按钮 | |
| GzSetDataButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
设置数据 | |
| GzSetHeaderButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
设置表头 | |
| GzSelectAllButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
全选按钮 | |
| GzDeselectAllButton | #5B9BD5 → #75B3E8 |
#75B3E8 → #8FC5F0 |
全不选按钮 | |
| 🔷 青色系 | 过滤/筛选 | |||
| GzFilterButton | #4DB6AC → #70C7BF |
#70C7BF → #8DD8D2 |
过滤按钮 | |
| 🩷 粉色系 | 生成/创建 | |||
| GzGenerateButton | #EC407A → #F06292 |
#F06292 → #F48FB1 |
生成按钮 | |
| 🟣 紫色系 | 预览/查看 | |||
| GzPreviewButton | #8B7EC8 → #A297DC |
#A297DC → #B9AFEA |
预览按钮 | |
| ⚪ 灰色系 | 设置/配置 | |||
| GzSettingsButton | #78909C → #90A4AE |
#90A4AE → #B0BEC5 |
设置按钮 |
色系使用建议:
- 绿色 - 表示成功、确认、添加等正向操作
- 红色 - 表示删除、危险、错误等警示操作
- 橙色 - 表示编辑、取消、警告等中性操作
- 蓝色 - 表示数据操作、导航、信息展示等常规操作
- 紫色 - 表示预览、查看等非修改操作
- 灰色 - 表示设置、配置等系统功能
3. 进度条组件
- GzProgressBar - 带渐变效果的进度条,支持主题切换(Dark/Light/Auto)
3. MVVM 基础
- ViewModelBase - ReactiveUI 基类,集成 MessageBus 自动清理
4. 主题管理
- ThemeManager - 全局主题管理器,支持 Dark/Light 模式切换
- UITheme - 主题枚举(Dark/Light/Auto)
5. 通知与对话框
- GzNotification - 轻量级通知(右上角弹窗)
- UIHelper - 模态对话框(错误/警告/信息)
6. 工具类
- UIThreadHelper - UI 线程调度
📐 UI 风格规范
✅ 必须遵守的规范
1. 使用 GzTitleBarCtrl 作为标题栏
<Window SystemDecorations="None"
Background="Transparent"
TransparencyLevelHint="Transparent">
<Border Background="{DynamicResource SemiColorBackground1}"
CornerRadius="6"
BorderBrush="{DynamicResource SemiColorBorder}"
BorderThickness="1">
<Grid RowDefinitions="Auto,*">
<views:GzTitleBarCtrl Grid.Row="0"
Title="我的窗口"
IsMaxEnabled="True"
IsMinEnabled="True"/>
<ContentControl Grid.Row="1" Content="{Binding}" />
</Grid>
</Border>
</Window>
2. 使用 DynamicResource 适配主题
❌ 错误示例(硬编码颜色):
<Border Background="#1e1e1e" BorderBrush="#3f3f46">
<TextBlock Foreground="#FFFFFF" Text="标题" />
</Border>
✅ 正确示例(使用 DynamicResource):
<Border Background="{DynamicResource SemiColorBackground1}"
BorderBrush="{DynamicResource SemiColorBorder}">
<TextBlock Foreground="{DynamicResource SemiColorText0}" Text="标题" />
</Border>
🎨 Semi.Avalonia 主题资源
| 资源名称 | 用途 | 示例 |
|---|---|---|
| 背景色 | ||
SemiColorBackground0 |
最深背景(工具栏) | #2b2b2b (Dark) |
SemiColorBackground1 |
主背景(窗口) | #1e1e1e (Dark) |
SemiColorBackground2 |
次级背景(面板) | #252526 (Dark) |
SemiColorBackground3 |
三级背景(卡片) | #18181B (Dark) |
SemiColorBackground4 |
最浅背景 | #27272A (Dark) |
| 文字色 | ||
SemiColorText0 |
主要文字 | #FFFFFF (Dark) |
SemiColorText1 |
次要文字 | #CCCCCC (Dark) |
SemiColorText2 |
辅助文字 | #808080 (Dark) |
SemiColorText3 |
禁用文字 | #666666 (Dark) |
| 边框色 | ||
SemiColorBorder |
普通边框 | #3f3f46 (Dark) |
SemiColorFocusBorder |
焦点边框 | #007ACC (Dark) |
| 填充色 | ||
SemiColorFill0 |
Hover 背景 | 半透明 |
SemiColorFill1 |
次级填充 | 半透明 |
SemiColorFill2 |
三级填充 | 半透明 |
| 语义色 | ||
SemiColorPrimary |
主题色(蓝) | #007ACC |
SemiColorSuccess |
成功(绿) | #28a745 |
SemiColorDanger |
危险(红) | #E81123 |
SemiColorWarning |
警告(黄) | #FFA500 |
SemiColorInformation |
信息(蓝) | #0064fa |
🖱️ 交互样式示例
ListBox Hover 和 Selected:
<ListBox.Styles>
<Style Selector="ListBoxItem:pointerover /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource SemiColorFill0}"/>
</Style>
<Style Selector="ListBoxItem:selected /template/ ContentPresenter">
<Setter Property="Background" Value="{DynamicResource SemiColorPrimary}"/>
</Style>
</ListBox.Styles>
🚀 组件使用
1. 主题管理
切换主题
在 SuperApp 中切换主题:
// 切换主题(Dark ↔ Light)
SuperApp.ToggleTheme();
// 获取当前主题
var currentTheme = ThemeManager.CurrentTheme; // Dark 或 Light
手动设置主题:
// 设置为深色主题
ThemeManager.CurrentTheme = UITheme.Dark;
// 设置为浅色主题
ThemeManager.CurrentTheme = UITheme.Light;
获取主题颜色(兼容 ThemeManager)
使用 GetAvaloniaDynamicColor 方法:
如果你的组件需要在 C# 代码中根据当前主题获取颜色,使用 ThemeManager.GetAvaloniaDynamicColor() 方法:
using SuperSDK.UI;
using Avalonia.Media;
// 获取当前主题的文字颜色
var textColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorText0");
if (textColor.HasValue)
{
var brush = new SolidColorBrush(textColor.Value);
myTextBlock.Foreground = brush;
}
// 获取背景色
var bgColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBackground1");
if (bgColor.HasValue)
{
myBorder.Background = new SolidColorBrush(bgColor.Value);
}
// 获取边框色
var borderColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBorder");
// 获取语义色
var primaryColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorPrimary");
var successColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorSuccess");
var dangerColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorDanger");
支持的颜色资源键:
| 资源键 | 说明 | Dark 模式 | Light 模式 |
|---|---|---|---|
SemiColorBackground0 |
最深背景 | #16161A |
White |
SemiColorBackground1 |
主背景 | #232429 |
White |
SemiColorBackground2 |
次级背景 | #35363C |
White |
SemiColorBackground3 |
三级背景 | #43444A |
White |
SemiColorBackground4 |
最浅背景 | #4F5159 |
White |
SemiColorText0 |
主要文字 | #F9F9F9 |
#1C1F23 |
SemiColorText1 |
次要文字 (80%) | #F9F9F9 @ 0.8 |
#1C1F23 @ 0.8 |
SemiColorText2 |
辅助文字 (60%) | #F9F9F9 @ 0.6 |
#1C1F23 @ 0.62 |
SemiColorText3 |
禁用文字 (35%) | #F9F9F9 @ 0.35 |
#1C1F23 @ 0.35 |
SemiColorBorder |
普通边框 | 白色 @ 0.08 | #1C1F23 @ 0.08 |
SemiColorFocusBorder |
焦点边框 | #54A9FF |
#0064FA |
SemiColorFill0 |
Hover 背景 (12%) | 白色 @ 0.12 | #2E3238 @ 0.05 |
SemiColorFill1 |
次级填充 (16%) | 白色 @ 0.16 | #2E3238 @ 0.09 |
SemiColorFill2 |
三级填充 (20%) | 白色 @ 0.20 | #2E3238 @ 0.13 |
SemiColorPrimary |
主题色 | #54A9FF |
#0064FA |
SemiColorSuccess |
成功色 | #5DC264 |
#3BB346 |
SemiColorWarning |
警告色 | #FFAE43 |
#FC8800 |
SemiColorDanger |
危险色 | #FC725A |
#F93920 |
SemiColorInformation |
信息色 | #54A9FF |
#0064FA |
响应主题变更:
// 订阅主题变更事件
ThemeManager.ThemeChanged += OnThemeChanged;
private void OnThemeChanged(object? sender, UITheme newTheme)
{
// 主题变更时更新颜色
var textColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorText0");
if (textColor.HasValue)
{
myTextBlock.Foreground = new SolidColorBrush(textColor.Value);
}
}
// 取消订阅(避免内存泄漏)
protected override void OnUnloaded(RoutedEventArgs e)
{
ThemeManager.ThemeChanged -= OnThemeChanged;
}
实用示例:创建主题感知的自定义控件
public class MyCustomControl : UserControl
{
private Border _border;
private TextBlock _textBlock;
public MyCustomControl()
{
_border = new Border();
_textBlock = new TextBlock { Text = "Hello" };
_border.Child = _textBlock;
Content = _border;
// 初始化颜色
UpdateColors();
// 订阅主题变更
ThemeManager.ThemeChanged += (s, e) => UpdateColors();
}
private void UpdateColors()
{
// 根据当前主题更新颜色
var bgColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBackground1");
var textColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorText0");
var borderColor = ThemeManager.GetAvaloniaDynamicColor("SemiColorBorder");
if (bgColor.HasValue)
_border.Background = new SolidColorBrush(bgColor.Value);
if (textColor.HasValue)
_textBlock.Foreground = new SolidColorBrush(textColor.Value);
if (borderColor.HasValue)
{
_border.BorderBrush = new SolidColorBrush(borderColor.Value);
_border.BorderThickness = new Thickness(1);
}
}
}
2. 自定义按钮
基础使用(自动跟随主题):
<Window xmlns:controls="clr-namespace:SuperSDK.UI.Controls;assembly=SuperSDK.UI">
<StackPanel Spacing="10" Orientation="Horizontal">
<controls:GzConfirmButton Command="{Binding ConfirmCommand}"/>
<controls:GzSaveButton Command="{Binding SaveCommand}"/>
<controls:GzDeleteButton Command="{Binding DeleteCommand}"/>
<controls:GzAddButton Command="{Binding AddCommand}"/>
<controls:GzEditButton Command="{Binding EditCommand}"/>
<controls:GzRefreshButton Command="{Binding RefreshCommand}"/>
<controls:GzRunButton Command="{Binding RunCommand}"/>
<controls:GzPreviewButton Command="{Binding PreviewCommand}"/>
<controls:GzOpenFolderButton Command="{Binding OpenFolderCommand}"/>
<controls:GzFilterButton Command="{Binding FilterCommand}"/>
<controls:GzGenerateButton Command="{Binding GenerateCommand}"/>
<controls:GzLoadButton Command="{Binding LoadCommand}"/>
<controls:GzSettingsButton Command="{Binding SettingsCommand}"/>
<controls:GzMoveUpButton Command="{Binding MoveUpCommand}"/>
<controls:GzMoveDownButton Command="{Binding MoveDownCommand}"/>
<controls:GzMoveLeftButton Command="{Binding MoveLeftCommand}"/>
<controls:GzMoveRightButton Command="{Binding MoveRightCommand}"/>
<controls:GzSetDataButton Command="{Binding SetDataCommand}"/>
<controls:GzSetHeaderButton Command="{Binding SetHeaderCommand}"/>
</StackPanel>
</Window>
自定义按钮大小:
<controls:GzSaveButton />
<controls:GzSaveButton ButtonSize="24"/>
<controls:GzEditButton ButtonSize="32"/>
<controls:GzRefreshButton ButtonSize="56"/>
固定按钮主题(不跟随全局主题):
<controls:GzSaveButton BtnTheme="Dark"/>
<controls:GzDeleteButton BtnTheme="Light"/>
<controls:GzAddButton BtnTheme="Auto"/>
3. 进度条 (GzProgressBar)
基础使用(自动跟随主题):
<controls:GzProgressBar Value="65"
Maximum="100"
Text="正在加载..."
BarHeight="28"/>
完整属性示例:
<controls:GzProgressBar Value="{Binding CurrentValue}"
Maximum="100"
Text="{Binding StatusText}"
ShowPercentage="True"
BarHeight="32"
BarCornerRadius="16"
BarTheme="Auto"/>
固定进度条主题:
<controls:GzProgressBar Value="50"
Maximum="100"
BarTheme="Dark"
Text="深色进度条"/>
<controls:GzProgressBar Value="75"
Maximum="100"
BarTheme="Light"
Text="浅色进度条"/>
<controls:GzProgressBar Value="30"
Maximum="100"
BarTheme="Auto"
Text="自动跟随主题"/>
自定义颜色:
<controls:GzProgressBar Value="60"
Maximum="100"
BackgroundColor="#2A2A2A"
ProgressColor="#52C176"
BarBorderBrush="#404040"
BarBorderThickness="1"
BarHeight="24"/>
属性说明:
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| Value | double | 0.0 | 当前进度值 |
| Maximum | double | 100.0 | 最大值 |
| Text | string | "" | 进度条下方描述文字 |
| ShowPercentage | bool | true | 是否显示百分比 |
| BarHeight | double | 24.0 | 进度条高度 |
| BarCornerRadius | CornerRadius | 12.0 | 圆角半径 |
| BarTheme | ProgressBarTheme | Auto | 主题模式(Dark/Light/Auto)|
| BackgroundColor | IBrush? | null | 自定义背景色(覆盖主题)|
| ProgressColor | IBrush? | null | 自定义进度色(覆盖主题)|
| BarBorderBrush | IBrush? | null | 自定义边框色 |
| BarBorderThickness | Thickness | 0 | 边框粗细 |
4. ViewModelBase
public class MyViewModel : ViewModelBase
{
private string _name = "";
public string Name
{
get => _name;
set => this.RaiseAndSetIfChanged(ref _name, value);
}
public override void RegisterMsg()
{
MessageBus.Subscribe<MyMessage>(this, OnMyMessage);
}
}
5. GzNotification 通知
// 显示通知
GzNotification.Instance.Show(
"操作成功",
"数据已保存",
NotificationType.Success
);
6. UIHelper 对话框
// 错误对话框
await UIHelper.GzShowErrorMsg(
"加载错误",
"文件不存在",
parentWindow: this
);
// 警告对话框
await UIHelper.GzShowWarningMsg("警告", "此操作无法撤销");
// 信息对话框
await UIHelper.GzShowInfoMsg("提示", "文件已保存");
// 确认对话框(返回 true/false)
var result = await UIHelper.GzShowConfirmDialog(
"确认删除",
"是否确定删除该项?",
this
);
if (result)
{
// 用户点击确定
}
5. UIThreadHelper
// UI 线程执行
await UIThreadHelper.RunOnUIThread(() =>
{
StatusText = "完成";
});
6. 窗口关闭事件处理
public partial class MyWindow : Window
{
public MyWindow()
{
InitializeComponent();
// 关闭前确认
Closing += async (sender, args) =>
{
args.Cancel = true;
var result = await UIHelper.GzShowConfirmDialog(
"确认", "是否关闭?", this
);
if (result)
{
Closing -= Closing;
Close();
}
};
}
}
📝 完整窗口模板
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:views="clr-namespace:SuperSDK.UI.Views;assembly=SuperSDK.UI"
SystemDecorations="None"
Background="Transparent"
TransparencyLevelHint="Transparent"
CanResize="True">
<Border Background="{DynamicResource SemiColorBackground1}"
BorderBrush="{DynamicResource SemiColorBorder}"
BorderThickness="1"
CornerRadius="6">
<Grid RowDefinitions="Auto,*,Auto">
<views:GzTitleBarCtrl Grid.Row="0"
Title="我的应用"
IsMaxEnabled="True"
IsMinEnabled="True"/>
<Border Grid.Row="1"
Background="{DynamicResource SemiColorBackground2}"
Padding="20">
<TextBlock Text="内容"
Foreground="{DynamicResource SemiColorText0}"/>
</Border>
<Border Grid.Row="2"
Background="{DynamicResource SemiColorBackground0}"
BorderBrush="{DynamicResource SemiColorBorder}"
BorderThickness="0,1,0,0"
Padding="16,8">
<Button Content="确定" Classes="Primary"/>
</Border>
</Grid>
</Border>
</Window>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net9.0
- Apache.Arrow (>= 22.1.0)
- Avalonia (>= 11.3.7)
- Avalonia.Controls.DataGrid (>= 11.3.7)
- Avalonia.ReactiveUI (>= 11.3.7)
- Semi.Avalonia (>= 11.3.7)
- Semi.Avalonia.DataGrid (>= 11.3.7)
- SuncodeSoftware.SuperSDK.Core (>= 3.7.1)
- SuncodeSoftware.SuperSDK.Data (>= 3.7.1)
- SuncodeSoftware.SuperSDK.License (>= 3.7.1)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on SuncodeSoftware.SuperSDK.UI:
| Package | Downloads |
|---|---|
|
SuncodeSoftware.SuperSDK.App
Application foundation framework for Avalonia-based Goes applications |
|
|
SuncodeSoftware.SuperSDK.Canvas
SuperSDK Canvas - 开箱即用的 Avalonia 画布组件,支持设备绘制、连线管理、缩放平移等功能 |
|
|
GoesSoftware.SuperSDK.Canvas
SuperSDK Canvas - 开箱即用的 Avalonia 画布组件,支持设备绘制、连线管理、缩放平移等功能 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.7.1 | 0 | 2/6/2026 |
| 3.7.0 | 0 | 2/6/2026 |
| 3.6.0 | 0 | 2/6/2026 |
| 3.5.0 | 0 | 2/6/2026 |
| 3.4.0 | 0 | 2/5/2026 |
| 3.3.0 | 0 | 2/5/2026 |
| 3.2.0 | 0 | 2/5/2026 |
| 3.1.1 | 19 | 2/5/2026 |
| 3.1.0 | 19 | 2/5/2026 |
| 3.0.0 | 37 | 2/5/2026 |
| 2.8.5 | 98 | 2/3/2026 |
| 2.8.4 | 104 | 2/3/2026 |
| 2.8.2 | 101 | 2/3/2026 |
| 2.8.1 | 106 | 2/3/2026 |
| 2.8.0 | 100 | 2/3/2026 |
| 2.7.0 | 102 | 2/3/2026 |
| 2.6.1 | 103 | 2/3/2026 |
| 2.6.0 | 107 | 2/3/2026 |
| 2.5.0 | 107 | 2/3/2026 |
| 2.4.0 | 110 | 2/2/2026 |
| 2.3.0 | 123 | 1/16/2026 |
| 2.2.0 | 124 | 1/16/2026 |
| 2.1.0 | 127 | 1/16/2026 |
| 2.0.8 | 121 | 1/15/2026 |
| 2.0.7 | 113 | 1/15/2026 |
| 2.0.6 | 125 | 1/15/2026 |
| 2.0.5 | 119 | 1/15/2026 |
| 2.0.4 | 120 | 1/15/2026 |
| 2.0.3 | 126 | 1/15/2026 |
| 2.0.2 | 119 | 1/15/2026 |
| 2.0.1 | 120 | 1/15/2026 |
| 2.0.0 | 127 | 1/15/2026 |
| 1.2.6 | 217 | 12/23/2025 |
| 1.2.5 | 211 | 12/23/2025 |
| 1.2.4 | 209 | 12/23/2025 |
| 1.2.2 | 209 | 12/23/2025 |
| 1.2.1 | 214 | 12/22/2025 |
| 1.2.0 | 210 | 12/22/2025 |
| 1.1.8 | 202 | 12/22/2025 |
| 1.1.7 | 208 | 12/22/2025 |
| 1.1.6 | 206 | 12/22/2025 |
| 1.1.5 | 203 | 12/22/2025 |
| 1.1.4 | 214 | 12/22/2025 |
| 1.1.3 | 215 | 12/22/2025 |
| 1.1.2 | 210 | 12/22/2025 |
| 1.1.1 | 208 | 12/22/2025 |
| 1.0.7 | 280 | 12/16/2025 |
| 1.0.6 | 280 | 12/16/2025 |
| 1.0.5 | 281 | 12/16/2025 |
| 1.0.4 | 283 | 12/16/2025 |
| 1.0.3 | 279 | 12/16/2025 |
| 1.0.2 | 281 | 12/16/2025 |
| 1.0.1 | 243 | 12/15/2025 |
| 1.0.0 | 222 | 12/15/2025 |
auto update