Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@ All notable changes to this project 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](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2026-06-07

### Changed

- Upgraded the desktop app to Avalonia 12 and Flowery.NET 2.0.6.
- Updated eligible direct NuGet dependencies that were older than seven days, including OpenCvSharp, SkiaSharp, System.Text.Json, System.Drawing.Common, YamlDotNet, LlmTornado, Microsoft.SqlServer.TransactSql.ScriptDom, and MSTest packages.
- Replaced deprecated Avalonia placeholder APIs across the UI with `PlaceholderText`.
- Updated fullscreen image viewer window chrome settings for Avalonia 12.
- Updated MSTest exception assertions for the MSTest 4 assertion API.

### Fixed

- Restored text clipboard copy behavior after Avalonia 12 moved clipboard text helpers to extension methods.
- Preserved duplicate validation-plugin removal behavior after Avalonia 12 made the binding plugin container non-public.

## [0.2.3] - 2026-05-18

### Security
Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.AI/OpenSourceToolkit.AI.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
Expand All @@ -15,7 +15,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="System.Text.Json" Version="10.0.7" />
<PackageReference Include="System.Text.Json" Version="10.0.8" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
</ItemGroup>

Expand Down
10 changes: 5 additions & 5 deletions OpenSourceToolkit.Converters/OpenSourceToolkit.Converters.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

<ItemGroup>
<PackageReference Include="Magick.NET-Q8-AnyCPU" Version="14.13.1" />
<PackageReference Include="OpenCvSharp4" Version="4.13.0.20260427" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.13.0.20260302" />
<PackageReference Include="System.Drawing.Common" Version="10.0.7" />
<PackageReference Include="System.Text.Json" Version="10.0.7" />
<PackageReference Include="YamlDotNet" Version="16.3.0" />
<PackageReference Include="OpenCvSharp4" Version="4.13.0.20260528" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.13.0.20260528" />
<PackageReference Include="System.Drawing.Common" Version="10.0.8" />
<PackageReference Include="System.Text.Json" Version="10.0.8" />
<PackageReference Include="YamlDotNet" Version="18.0.0" />
</ItemGroup>

<PropertyGroup>
Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.Hardware/OpenSourceToolkit.Hardware.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
<ItemGroup>
<PackageReference Include="NAudio" Version="2.3.0" />
<PackageReference Include="NAudio.Lame" Version="2.1.0" />
<PackageReference Include="OpenCvSharp4" Version="4.13.0.20260427" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.13.0.20260302" />
<PackageReference Include="OpenCvSharp4" Version="4.13.0.20260528" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.13.0.20260528" />
</ItemGroup>

<PropertyGroup>
Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.Media/OpenSourceToolkit.Media.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="FIGLet" Version="1.1.0" />
<PackageReference Include="SkiaSharp" Version="3.119.2" />
<PackageReference Include="FIGLet" Version="2.0.14" />
<PackageReference Include="SkiaSharp" Version="3.119.4" />
</ItemGroup>

</Project>
23 changes: 15 additions & 8 deletions OpenSourceToolkit.NET/App.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
#nullable enable
#nullable enable
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Data.Core;
using Avalonia.Data.Core.Plugins;
using Avalonia.Media;
using Avalonia.Styling;
using System;
using System.Globalization;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;
Expand Down Expand Up @@ -286,14 +285,22 @@ public static bool ApplyThemeInPlace(string themeName, bool saveToSettings = tru

private void DisableAvaloniaDataAnnotationValidation()
{
// Get an array of plugins to remove
var dataValidationPluginsToRemove =
BindingPlugins.DataValidators.OfType<DataAnnotationsValidationPlugin>().ToArray();
var bindingPluginsType = typeof(Application).Assembly.GetType("Avalonia.Data.Core.Plugins.BindingPlugins");
var dataValidatorsProperty = bindingPluginsType?.GetProperty(
"DataValidators",
BindingFlags.Static | BindingFlags.Public);
var dataValidators = dataValidatorsProperty?.GetValue(null) as System.Collections.IList;
if (dataValidators == null)
return;

var dataValidationPluginsToRemove = dataValidators
.Cast<object>()
.Where(plugin => plugin.GetType().FullName == "Avalonia.Data.Core.Plugins.DataAnnotationsValidationPlugin")
.ToArray();

// remove each entry found
foreach (var plugin in dataValidationPluginsToRemove)
{
BindingPlugins.DataValidators.Remove(plugin);
dataValidators.Remove(plugin);
}
}

Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.NET/Controls/CopyableInput.axaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/avaloniaui"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Expand All @@ -9,7 +9,7 @@
MinWidth="120">
<Grid ColumnDefinitions="*,Auto">
<daisy:DaisyInput Text="{Binding Text, ElementName=Root, Mode=TwoWay}"
Watermark="{Binding Watermark, ElementName=Root}"
PlaceholderText="{Binding Watermark, ElementName=Root}"
IsReadOnly="{Binding IsReadOnly, ElementName=Root}"
VerticalAlignment="Center"
HorizontalAlignment="Stretch" />
Expand Down
3 changes: 2 additions & 1 deletion OpenSourceToolkit.NET/Controls/CopyableInput.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.Input.Platform;

namespace OpenSourceToolkit.NET.Controls
{
Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.NET/Controls/CopyableTextBox.axaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/avaloniaui"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Expand All @@ -8,7 +8,7 @@
x:Name="Root">
<Grid ColumnDefinitions="*,Auto">
<daisy:DaisyTextArea Text="{Binding Text, ElementName=Root, Mode=TwoWay}"
Watermark="{Binding Watermark, ElementName=Root}"
PlaceholderText="{Binding Watermark, ElementName=Root}"
IsReadOnly="{Binding IsReadOnly, ElementName=Root}"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch" />
Expand Down
3 changes: 2 additions & 1 deletion OpenSourceToolkit.NET/Controls/CopyableTextBox.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Avalonia;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Data;
using Avalonia.Input.Platform;
using Avalonia.Media;
using System.Windows.Input;

Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.NET/Controls/DragDropTextBox.axaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/avaloniaui"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:OpenSourceToolkit.NET.Controls"
x:Class="OpenSourceToolkit.NET.Controls.DragDropTextBox"
Expand All @@ -10,7 +10,7 @@
<TextBox x:Name="PART_TextBox"
IsVisible="{Binding !ShowLineNumbers, ElementName=Root}"
Text="{Binding Text, ElementName=Root, Mode=TwoWay}"
Watermark="{Binding Watermark, ElementName=Root}"
PlaceholderText="{Binding Watermark, ElementName=Root}"
AcceptsReturn="{Binding AcceptsReturn, ElementName=Root}"
TextWrapping="{Binding TextWrapping, ElementName=Root}"
FontSize="{Binding FontSize, ElementName=Root}"
Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.NET/Controls/LineNumberTextBox.axaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/avaloniaui"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="OpenSourceToolkit.NET.Controls.LineNumberTextBox"
x:Name="Root"
Expand Down Expand Up @@ -30,7 +30,7 @@
<!-- Text Editor -->
<TextBox x:Name="PART_TextBox" Grid.Column="1"
Text="{Binding Text, ElementName=Root, Mode=TwoWay}"
Watermark="{Binding Watermark, ElementName=Root}"
PlaceholderText="{Binding Watermark, ElementName=Root}"
AcceptsReturn="{Binding AcceptsReturn, ElementName=Root}"
TextWrapping="{Binding TextWrapping, ElementName=Root}"
FontFamily="{Binding FontFamily, ElementName=Root}"
Expand Down
4 changes: 2 additions & 2 deletions OpenSourceToolkit.NET/Controls/NumericEntry.axaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/avaloniaui"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Expand All @@ -9,7 +9,7 @@
<daisy:DaisyInput x:Name="Input"
Size="Small"
HorizontalAlignment="Stretch"
Watermark="{Binding Watermark, ElementName=Root}"
PlaceholderText="{Binding Watermark, ElementName=Root}"
MaxLength="{Binding MaxLength, ElementName=Root}"
Foreground="{DynamicResource DaisyBaseContentBrush}" />
</UserControl>
34 changes: 17 additions & 17 deletions OpenSourceToolkit.NET/OpenSourceToolkit.NET.csproj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Version>0.2.3</Version>
<AssemblyVersion>0.2.3.0</AssemblyVersion>
<FileVersion>0.2.3.0</FileVersion>
<Version>1.0.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<LangVersion>latest</LangVersion>
<ImplicitUsings>disable</ImplicitUsings>
<OutputPath Condition="'$(Configuration)'=='Debug'">..\bin\debug\</OutputPath>
Expand Down Expand Up @@ -50,10 +50,10 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Avalonia" Version="11.3.12" />
<PackageReference Include="Avalonia.Desktop" Version="11.3.12" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.3.12" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.3.12" />
<PackageReference Include="Avalonia" Version="12.0.4" />
<PackageReference Include="Avalonia.Desktop" Version="12.0.4" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="12.0.4" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="12.0.4" />

<!-- Flowery.NET: Conditional reference (local project vs NuGet) -->
</ItemGroup>
Expand All @@ -65,27 +65,27 @@

<!-- Use NuGet package when UseLocalFlowery is false or not set -->
<ItemGroup Condition="'$(UseLocalFlowery)' != 'true'">
<PackageReference Include="Flowery.NET" Version="1.9.2" />
<PackageReference Include="Flowery.NET" Version="2.0.6" />
</ItemGroup>

<ItemGroup>
<PackageReference Include="Material.Icons.Avalonia" Version="3.0.0-preview3.1" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="11.3.12" />
<PackageReference Include="Avalonia.Diagnostics" Version="11.3.12">
<PackageReference Include="Material.Icons.Avalonia" Version="3.0.3-nightly.0.2" />
<PackageReference Include="Avalonia.Controls.DataGrid" Version="12.0.0" />
<PackageReference Include="Avalonia.Diagnostics" Version="11.3.17">
<IncludeAssets Condition="'$(Configuration)' != 'Debug'">None</IncludeAssets>
<PrivateAssets Condition="'$(Configuration)' != 'Debug'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.2" />
<PackageReference Include="DnsClient" Version="1.8.0" />
<PackageReference Include="Magick.NET-Q8-AnyCPU" Version="14.13.1" />
<PackageReference Include="OpenCvSharp4" Version="4.13.0.20260427" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.13.0.20260302" />
<PackageReference Include="System.Text.Json" Version="10.0.7" />
<PackageReference Include="OpenCvSharp4" Version="4.13.0.20260528" />
<PackageReference Include="OpenCvSharp4.runtime.win" Version="4.13.0.20260528" />
<PackageReference Include="System.Text.Json" Version="10.0.8" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.18.0" />
<PackageReference Include="NCrontab" Version="3.4.0" />
<PackageReference Include="PDFsharp" Version="6.2.4" />
<PackageReference Include="Microsoft.SqlServer.TransactSql.ScriptDom" Version="170.191.0" />
<PackageReference Include="LlmTornado" Version="3.8.55" />
<PackageReference Include="Microsoft.SqlServer.TransactSql.ScriptDom" Version="180.18.1" />
<PackageReference Include="LlmTornado" Version="3.8.57" />
</ItemGroup>

<ItemGroup>
Expand Down
14 changes: 7 additions & 7 deletions OpenSourceToolkit.NET/Views/SettingsWindow.axaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Window xmlns="https://github.com/avaloniaui"
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:OpenSourceToolkit.NET.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Expand Down Expand Up @@ -143,7 +143,7 @@

<daisy:DaisyInput Text="{Binding GitHubToken}"
PasswordChar="•"
Watermark="ghp_xxxxxxxxxxxxxxxxxxxx"
PlaceholderText="ghp_xxxxxxxxxxxxxxxxxxxx"
HorizontalAlignment="Stretch"/>

<TextBlock TextWrapping="Wrap" FontSize="11" Foreground="{DynamicResource DaisyBaseContentBrush}">
Expand Down Expand Up @@ -266,7 +266,7 @@
<TextBlock Grid.Row="0" Grid.Column="0" Text="{loc:Localize Settings_Connections_Name}" VerticalAlignment="Center"
Foreground="{DynamicResource DaisyBaseContentBrush}"/>
<daisy:DaisyInput Grid.Row="0" Grid.Column="1" Text="{Binding EditConnectionName}"
Watermark="{loc:Localize Settings_Connections_NameWatermark}" HorizontalAlignment="Stretch"/>
PlaceholderText="{loc:Localize Settings_Connections_NameWatermark}" HorizontalAlignment="Stretch"/>

<!-- Provider -->
<TextBlock Grid.Row="1" Grid.Column="0" Text="{loc:Localize Settings_Connections_Provider}" VerticalAlignment="Center"
Expand All @@ -292,7 +292,7 @@
<daisy:DaisyButton Content="{loc:Localize Settings_Connections_OverrideApiKey}" Command="{Binding ShowCustomApiKeyCommand}"
IsVisible="{Binding !EditShowCustomApiKey}" HorizontalAlignment="Left"/>
<daisy:DaisyInput Text="{Binding EditCustomApiKey}" PasswordChar="•"
Watermark="{loc:Localize Settings_Connections_CustomApiKeyWatermark}"
PlaceholderText="{loc:Localize Settings_Connections_CustomApiKeyWatermark}"
IsVisible="{Binding EditShowCustomApiKey}"
HorizontalAlignment="Stretch"/>
</StackPanel>
Expand Down Expand Up @@ -421,13 +421,13 @@

<daisy:DaisyInput Text="{Binding SelectedProviderApiKey.ApiKey}"
PasswordChar="•"
Watermark="{loc:Localize Settings_Providers_ApiKeyWatermark}"
PlaceholderText="{loc:Localize Settings_Providers_ApiKeyWatermark}"
HorizontalAlignment="Stretch"/>

<TextBlock Text="{loc:Localize Settings_Providers_Endpoint}" FontWeight="Medium" Margin="0,8,0,0"
Foreground="{DynamicResource DaisyBaseContentBrush}"/>
<daisy:DaisyInput Text="{Binding SelectedProviderApiKey.CustomEndpoint}"
Watermark="{loc:Localize Settings_Providers_EndpointWatermark}"
PlaceholderText="{loc:Localize Settings_Providers_EndpointWatermark}"
HorizontalAlignment="Stretch"/>

<!-- Test Connection -->
Expand Down Expand Up @@ -466,7 +466,7 @@
<!-- Add Model -->
<Grid Grid.Row="3" ColumnDefinitions="*,Auto" Margin="0,0,0,8">
<daisy:DaisyInput Grid.Column="0" Text="{Binding NewModelName}"
Watermark="{loc:Localize Settings_Providers_NewModelWatermark}" Margin="0,0,8,0"/>
PlaceholderText="{loc:Localize Settings_Providers_NewModelWatermark}" Margin="0,0,8,0"/>
<daisy:DaisyButton Grid.Column="1" Command="{Binding AddModelCommand}">
<StackPanel Orientation="Horizontal" Spacing="4">
<materialIcons:MaterialIcon Kind="Plus" Width="16" Height="16"/>
Expand Down
Loading
Loading