Avalonia Migration Refactor#4557
Open
taooceros wants to merge 4 commits into
Open
Conversation
This comment has been minimized.
This comment has been minimized.
fd20405 to
f290f41
Compare
d252f54 to
b0ec04b
Compare
cd86075 to
3e7be8e
Compare
3e7be8e to
88ea811
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Migration to Avalonia, based on
dev, with unrelated fixes split out.could potentially resolves #894.
Build/artifact wiring
Flow.Launcher.slnaddsFlow.Launcher.Avaloniaso solution builds produce the Avalonia host.Flow.Launcher.Avalonia/Flow.Launcher.Avalonia.csprojwrites host output toOutput\Avalonia\$(Configuration)..csprojfiles copy plugin outputs intoOutput\Avalonia\$(Configuration)\Plugins\...for Avalonia runtime loading.Scripts/post_build.ps1packages Avalonia setup/portable artifacts separately underOutput\Packages\Avalonia..github/workflows/dotnet.ymluploadsAvalonia SetupandAvalonia Portable Versionartifacts.What changed in the existing WPF/shared surface
These are the non-
Flow.Launcher.Avalonia/changes reviewers should expect:Flow.Launcher/Languages/en.xaml— shared localization keys used by Avalonia UI.Flow.Launcher.Infrastructure/Hotkey/GlobalHotkey.cs— exposes hotkey callback/key conversion needed by the Avalonia host.Flow.Launcher.Plugin/Interfaces/ISettingProvider.cs— addsCreateSettingPanelAvalonia()for native Avalonia plugin settings without exposing Avalonia types to WPF plugin reflection..csproj,Main.cs, andViews/Avalonia/*files — native Avalonia settings views and copy targets.Flow.Launcher.sln— includes the Avalonia project in normal solution builds.Scripts/post_build.ps1andScripts/flowlauncher-avalonia.nuspec— create Avalonia setup/portable artifacts without changing release deployment workflows..github/workflows/dotnet.yml— uploads Avalonia CI artifacts only.Existing WPF behavior intentionally left alone
Verification
CI artifact sizes from run
28725559998before the JsonStorage split cleanup:Flow Installer: 101,089,952 bytesPortable Version: 204,621,638 bytesAvalonia Setup: 85,188,274 bytesAvalonia Portable Version: 172,204,291 bytesThe original Flow Launcher installer works.
The Avalonia installer works.
Review notes
Highest-risk areas:
Flow.Launcher.Avalonia/AvaloniaPublicAPI.csplugin API compatibility.Flow.Launcher.Avalonia/ViewModel/MainViewModel.csquery/result lifecycle and plugin async query behavior.Flow.Launcher.Avalonia/App.axaml.csstartup sequence, WPF resource compatibility shim, and plugin initialization.Output\Avalonia\$(Configuration)so WPF package inputs underOutput\Releaseremain close todev.