Skip to content

Commit 534638d

Browse files
nlogozzoCopilot
andauthored
feat: NativeAOT (#116)
* feat: Update deps * Fix IL3050 NativeAOT warnings in WinUI and GNOME Program.cs (#115) * Initial plan * Fix IL3050 NativeAOT warnings by adding RequiresDynamicCode attribute to Main methods Co-authored-by: nlogozzo <17648453+nlogozzo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: nlogozzo <17648453+nlogozzo@users.noreply.github.com> * fix: Sources * fix: NativeAOT - replace reflection-based XAML bindings in SettingsPage (#117) * Initial plan * fix: replace DisplayMemberPath with compiled x:Bind ItemTemplate for NativeAOT compatibility Co-authored-by: nlogozzo <17648453+nlogozzo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: nlogozzo <17648453+nlogozzo@users.noreply.github.com> * feat: Update license * fix: Missing sources * feat: Bindable item * feat: Update deps --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: nlogozzo <17648453+nlogozzo@users.noreply.github.com>
1 parent 607173e commit 534638d

17 files changed

Lines changed: 374 additions & 268 deletions

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2025 Nickvision
3+
Copyright (c) 2026 Nickvision
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

Nickvision.Application.GNOME/Nickvision.Application.GNOME.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@
88
<Nullable>enable</Nullable>
99
<OutputType>Exe</OutputType>
1010
<Platforms>AnyCPU;ARM64;x64</Platforms>
11-
<Version>2026.2.0</Version>
11+
<Version>2026.3.0</Version>
12+
<PublishAot>true</PublishAot>
1213
</PropertyGroup>
1314

1415
<ItemGroup>
1516
<PackageReference Include="GirCore.Adw-1" Version="0.7.0" />
16-
<PackageReference Include="Nickvision.Desktop.GNOME" Version="2026.3.2" />
17+
<PackageReference Include="Nickvision.Desktop.GNOME" Version="2026.3.4" />
1718
</ItemGroup>
1819
<ItemGroup>
1920
<ProjectReference Include="..\Nickvision.Application.Shared\Nickvision.Application.Shared.csproj" />

Nickvision.Application.GNOME/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
using Nickvision.Application.GNOME.Views;
44
using Nickvision.Application.Shared.Helpers;
55
using Nickvision.Desktop.GNOME.Helpers;
6+
using System.Diagnostics.CodeAnalysis;
67
using System.Threading.Tasks;
78

89
namespace Nickvision.Application.GNOME;
910

1011
public class Program
1112
{
13+
[RequiresDynamicCode("Calls ConfigureAdw<T>() which may use dynamic code generation.")]
1214
public static async Task Main(string[] args)
1315
{
1416
var newArgs = new string[args.Length + 1];

Nickvision.Application.Shared/Controllers/MainWindowController.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Microsoft.Extensions.Logging;
2+
using Nickvision.Application.Shared.Helpers;
23
using Nickvision.Application.Shared.Models;
34
using Nickvision.Application.Shared.Services;
45
using Nickvision.Desktop.Application;
@@ -32,7 +33,7 @@ public MainWindowController(ILogger<MainWindowController> logger, AppInfo appInf
3233
_translationService = translationService;
3334
_updaterService = updaterService;
3435
_latestVersion = appInfo.Version!;
35-
_translationService.Language = _jsonFileService.Load<Configuration>(Configuration.Key).TranslationLanguage;
36+
_translationService.Language = _jsonFileService.Load(ApplicationJsonContext.Default.Configuration, Configuration.Key).TranslationLanguage;
3637
_logger.LogInformation($"Received command-line arguments: [{string.Join(", ", argumentsService.Data)}]");
3738
// Translate strings
3839
_appInfo.ShortName = _translationService._("Application");
@@ -58,24 +59,24 @@ public MainWindowController(ILogger<MainWindowController> logger, AppInfo appInf
5859
var _ => _translationService._("Good Day!")
5960
};
6061

61-
public Theme Theme => _jsonFileService.Load<Configuration>(Configuration.Key).Theme;
62+
public Theme Theme => _jsonFileService.Load(ApplicationJsonContext.Default.Configuration, Configuration.Key).Theme;
6263

6364
public WindowGeometry WindowGeometry
6465
{
65-
get => _jsonFileService.Load<Configuration>(Configuration.Key).WindowGeometry;
66+
get => _jsonFileService.Load(ApplicationJsonContext.Default.Configuration, Configuration.Key).WindowGeometry;
6667

6768
set
6869
{
69-
var config = _jsonFileService.Load<Configuration>(Configuration.Key);
70+
var config = _jsonFileService.Load(ApplicationJsonContext.Default.Configuration, Configuration.Key);
7071
config.WindowGeometry = value;
71-
_jsonFileService.Save(config, Configuration.Key);
72+
_jsonFileService.Save(config, ApplicationJsonContext.Default.Configuration, Configuration.Key);
7273
}
7374
}
7475

7576
public async Task CheckForUpdatesAsync(bool showNotificationForNoUpdates)
7677
{
7778
_logger.LogInformation("Checking for updates...");
78-
var config = _jsonFileService.Load<Configuration>(Configuration.Key);
79+
var config = _jsonFileService.Load(ApplicationJsonContext.Default.Configuration, Configuration.Key);
7980
var stableVersion = await _updaterService.GetLatestStableVersionAsync();
8081
if (stableVersion is not null)
8182
{

Nickvision.Application.Shared/Controllers/PreferencesViewController.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Nickvision.Application.Shared.Models;
1+
using Nickvision.Application.Shared.Helpers;
2+
using Nickvision.Application.Shared.Models;
23
using Nickvision.Desktop.Application;
34
using Nickvision.Desktop.Filesystem;
45
using Nickvision.Desktop.Globalization;
@@ -22,7 +23,7 @@ public PreferencesViewController(IJsonFileService jsonFileService, ITranslationS
2223
{
2324
_jsonFileService = jsonFileService;
2425
_translationService = translationService;
25-
_configuration = _jsonFileService.Load<Configuration>(Configuration.Key);
26+
_configuration = _jsonFileService.Load(ApplicationJsonContext.Default.Configuration, Configuration.Key);
2627
AvailableTranslationLanguages = new List<SelectionItem<string>>()
2728
{
2829
new SelectionItem<string>(string.Empty, _translationService._("System"), string.IsNullOrEmpty(_configuration.TranslationLanguage)),
@@ -58,5 +59,5 @@ public bool AllowPreviewUpdates
5859
set => _configuration.AllowPreviewUpdates = value;
5960
}
6061

61-
public Task SaveConfigurationAsync() => _jsonFileService.SaveAsync(_configuration, Configuration.Key);
62+
public Task SaveConfigurationAsync() => _jsonFileService.SaveAsync(_configuration, ApplicationJsonContext.Default.Configuration, Configuration.Key);
6263
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Nickvision.Application.Shared.Models;
2+
using System.Text.Json.Serialization;
3+
4+
namespace Nickvision.Application.Shared.Helpers;
5+
6+
[JsonSourceGenerationOptions(DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, WriteIndented = true)]
7+
[JsonSerializable(typeof(Configuration))]
8+
public partial class ApplicationJsonContext : JsonSerializerContext
9+
{
10+
11+
}

Nickvision.Application.Shared/Helpers/HostApplicationBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public IHostApplicationBuilder ConfigureApplication(string[] args)
1818
{
1919
var appInfo = new AppInfo("org.nickvision.application", "Nickvision Application", "Application")
2020
{
21-
Version = new AppVersion("2026.2.0-next"),
21+
Version = new AppVersion("2026.3.0-next"),
2222
Changelog = "- Initial release",
2323
SourceRepository = new Uri("https://github.com/NickvisionApps/Application"),
2424
IssueTracker = new Uri("https://github.com/NickvisionApps/Application/issues/new"),

Nickvision.Application.Shared/Nickvision.Application.Shared.csproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
<ImplicitUsings>disable</ImplicitUsings>
88
<Nullable>enable</Nullable>
99
<Platforms>AnyCPU;ARM64;x64</Platforms>
10-
<Version>2026.2.0</Version>
10+
<Version>2026.3.0</Version>
11+
<IsAotCompatible>true</IsAotCompatible>
1112
</PropertyGroup>
1213

1314
<ItemGroup>
14-
<PackageReference Include="Nickvision.Desktop" Version="2026.3.3" />
15+
<PackageReference Include="Nickvision.Desktop" Version="2026.3.6" />
1516
<PackageReference Include="NReco.Logging.File" Version="1.3.1" />
1617
</ItemGroup>
1718

Nickvision.Application.WinUI/Nickvision.Application.WinUI.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
<WindowsPackageType>None</WindowsPackageType>
1919
<DefineConstants>DISABLE_XAML_GENERATED_MAIN</DefineConstants>
2020
<StartupObject>Nickvision.Application.WinUI.Program</StartupObject>
21-
<Version>2026.2.0</Version>
21+
<Version>2026.3.0</Version>
22+
<PublishAot>true</PublishAot>
2223
</PropertyGroup>
2324

2425
<ItemGroup>
@@ -32,8 +33,8 @@
3233
<PackageReference Include="CommunityToolkit.WinUI.Controls.SettingsControls" Version="8.2.251219" />
3334
<PackageReference Include="CommunityToolkit.WinUI.Extensions" Version="8.2.251219" />
3435
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.7705" />
35-
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260209005" />
36-
<PackageReference Include="Nickvision.Desktop.WinUI" Version="2026.3.1" />
36+
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260317003" />
37+
<PackageReference Include="Nickvision.Desktop.WinUI" Version="2026.3.5" />
3738
</ItemGroup>
3839
<ItemGroup>
3940
<ProjectReference Include="..\Nickvision.Application.Shared\Nickvision.Application.Shared.csproj" />

Nickvision.Application.WinUI/Program.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Nickvision.Application.WinUI.Helpers;
44
using Nickvision.Desktop.WinUI.Helpers;
55
using System;
6+
using System.Diagnostics.CodeAnalysis;
67
using System.Runtime.InteropServices;
78

89
namespace Nickvision.Application.WinUI;
@@ -13,6 +14,7 @@ public static partial class Program
1314
private static partial void XamlCheckProcessRequirements();
1415

1516
[STAThread]
17+
[RequiresDynamicCode("Calls ConfigureWinUI<T>() which may use dynamic code generation.")]
1618
private static void Main(string[] args)
1719
{
1820
XamlCheckProcessRequirements();

0 commit comments

Comments
 (0)