Update all project files from net9.0 to net10.0:
- Core projects: net9.0-windows → net10.0-windows
- App projects: net9.0-windows10.0.19041.0 → net10.0-windows10.0.19041.0
- All plugin projects updated
- Microsoft.Extensions packages updated to 10.0.0-preview.1
Build verified with 1220 warnings (pre-existing), 0 errors.
💘 Generated with Crush
Assisted-by: Kimi for Coding via Crush <crush@charm.land>
- Remove PowerShell-based duplicate DLL cleanup targets from Avalonia csproj
- Remove unnecessary runtime folder cleanup targets
- Update WPF packages.lock.json dependencies
These cleanup steps are now handled differently or are no longer needed.
💘 Generated with Crush
Assisted-by: Kimi for Coding via Crush <crush@charm.land>
- Add HotkeyRecorderDialog with global keyboard hook for capturing hotkeys
- Implement manual modifier state tracking to handle swallowed key events
- Add HotkeyControl button that opens the recorder dialog
- Add CheckAvailability and RemoveToggleHotkey to HotKeyMapper
- Expose GetKeyFromVk helper in GlobalHotkey infrastructure
- Add Settings pages (General, Plugin, Theme, Proxy, About)
- Add PreviewPanel for result previews in main window
- Fix hook reuse issue by clearing callback on close instead of disposing
- Embed SegoeFluentIcons.ttf as an AvaloniaResource
- Register SegoeFluentIcons FontFamily in App.axaml using avares URI
- Create FontLoader helper for robust font resolution (Embedded > System > File)
- Add safety checks to FontLoader to prevent rendering crashes if fonts are invalid
- Update ResultViewModel and ResultListBox to use resolved GlyphFontFamily
- Use DynamicData SourceList with automatic sorting by score descending
- Add ReplaceResults() with EditDiff for minimal UI updates (reduces flickering)
- Keep previous results visible while typing until new results arrive
- Add ImageLoader with Windows Shell API (IShellItemImageFactory) for exe/ico icons
- Use AlphaFormat.Unpremul to correctly render transparent icons without white borders
- Query all plugins in parallel and merge/sort results globally
- Load settings from disk via FlowLauncherJsonStorage
- Initialize PluginManager and query plugins on text change
- Add minimal AvaloniaPublicAPI implementing IPublicAPI
- Execute plugin results on Enter key
- Add WPF framework reference for IPublicAPI compatibility
Create Flow.Launcher.Avalonia project as foundation for migrating from WPF to Avalonia UI framework.
Key components:
- MainWindow with query box and results list (matching WPF layout)
- ViewModels: MainViewModel, ResultsViewModel, ResultViewModel
- Themes/Base.axaml with converted styles from WPF
- FluentAvaloniaUI for Windows 11 styling
- References existing Core/Infrastructure/Plugin projects
The project builds and runs alongside the existing WPF application.
This is Phase 1 of the incremental migration approach.