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>
Text highlighting was already implemented via HighlightTextConverter
and TitleHighlightData/SubTitleHighlightData in ResultViewModel.
💘 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>
Resolved conflicts:
- Calculator.csproj: Keep Mages 3.0.1 (from dev) + Avalonia packages
- Explorer SettingsViewModel.cs: Use PromptUserSelectFileAsync for ShellPath
- ExplorerSettings.xaml: Removed (deleted in HEAD)
- packages.lock.json: Restored from dev
- Remove 13 codemap.md files from git index (Plugins/Flow.Launcher.Plugin.Explorer)
- Add **/codemap.md pattern to .gitignore
- Add .slim/ to .gitignore
- Add gold foreground color (#FFD700) for highlighted search matches
- Update HighlightTextConverter to use theme resource with fallback
- Fix TextBlockHelper to preserve Foreground property when copying Runs
- Fix highlight update bug: sync TitleHighlightData/SubTitleHighlightData/Score
for reused ResultViewModel instances when query changes
- Update migration checklist to mark HighlightTextConverter as done
- Add DropdownDataGeneric<T> helper for translated enum dropdowns
- Fix GeneralSettingsViewModel to use DropdownDataGeneric for enums:
- SearchWindowScreens, SearchWindowAligns, SearchPrecisionScore, LastQueryMode
- Fix ThemeSettingsViewModel to use DropdownDataGeneric for ColorSchemes
- Fix PluginsSettingsViewModel DisplayMode to use correct translation keys:
- DisplayModeOnOff, DisplayModePriority, DisplayModeSearchDelay, DisplayModeHomeOnOff
- Add missing translation keys to en.xaml for plugin types and display modes
- Update XAML bindings to use DisplayMemberPath/SelectedValuePath pattern
- Remove WPF views (ActionKeywordSetting, ExplorerSettings, PreviewPanel, QuickAccessLinkSettings)
- Fix NullReferenceException in ActionKeywordModel by initializing settings
- Fix (false,false) crash case in EditActionKeywordAsync
- Add null-safe dialog patterns for owner window
- Move Focus() to OnOpened for reliable control attachment
- Add using for Avalonia PreviewPanel namespace in ResultManager
- Update Main.cs to use AvaloniaControl return type
- Port ActionKeywordSetting window to Avalonia
- Includes keyword editing, enable/disable toggle, validation
- Handles Enter key to submit, Space key blocked in keyword input
- Add Net9.0-SelfContained.pubxml publish profile for Avalonia
- Add Publish-Self-Contained-Avalonia function to post_build.ps1
- Call Avalonia publish before cleanup in Main function
- Add Delete-Unused-Avalonia function to remove duplicate DLLs in Avalonia output
- Add Remove-CreateDumpExe-Avalonia function to clean up createdump.exe
- Call Avalonia processing functions in Main after WPF processing
- Add PluginStoreSettingsPage with header, language filters, and search
- Add PluginStoreSettingsViewModel with async loading and filtering
- Add PluginStoreItemViewModel for individual plugin cards with install/update/uninstall
- Connect AvaloniaPublicAPI to real PluginsManifest instead of empty stubs
- Use FluentAvalonia ItemsRepeater with UniformGridLayout for virtualization
- Fix icon visibility using ObjectConverters instead of StringConverters
- Delay setting desktop.MainWindow until plugins are initialized to prevent auto-show on startup
- Restore missing Hide() method in MainViewModel
- Fix Show() method which was incorrectly calling HideRequested
- Ensure OpenSettings cleanly hides MainWindow before showing SettingsWindow
- Call Hide() before scheduling SettingsWindow.Show() to ensure proper visibility state transition
- Use Dispatcher.UIThread.Post for showing the new window to avoid focus conflicts
- Remove Dispatcher.UIThread.Post which might cause timing issues
- Call Hide() before showing SettingsWindow to ensure proper focus and visibility transition
- Update ISettingProvider to support CreateSettingPanelAvalonia
- Create native Avalonia settings UI for Program Plugin (ProgramSetting.axaml)
- Implement ProgramSettingViewModel using CommunityToolkit.Mvvm
- Update PluginsSettingsViewModel to detect and load native Avalonia settings
- Replace ListBox with ItemsControl in PluginsSettingsPage to fix auto-scroll issues when expanding settings
- Align Avalonia package versions (11.2.3) across projects to fix type load errors
- Created WpfControlHost to host WPF controls using HwndSource
- Updated PluginItemViewModel to load settings via ISettingProvider
- Updated PluginsSettingsPage to display settings in an expander
- Implemented channel-based debouncing (20ms) in MainViewModel to fix result flickering (matches WPF behavior)
- Added ResultForUpdate struct and ProcessResultUpdatesAsync for batching updates
- Added HighlightTextConverter and TextBlockHelper for bolding matched query terms
- Updated ResultListBox to display highlighted title and subtitle
- 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
- Add Glyph and GlyphAvailable properties to ResultViewModel
- Set Glyph from plugin Result when creating result items
- Add resultGlyph style matching icon size (32x32)
- Update ResultListBox to show glyph or image icon based on ShowGlyph property
- ShowGlyph = true when UseGlyphIcons is enabled AND glyph is available
- MainWindowVisibility starts as false (window hidden)
- Window IsVisible bound to MainWindowVisibility
- Set MainWindowVisibility = true in OnPluginsReady() after plugins load
- Internationalization.Initialize() called in constructor when DI creates it
- Remove InitializeInternationalization() method from App.axaml.cs
- Update AvaloniaPublicAPI and LocalizeExtension to use Ioc.Default.GetService
- Reorder ConfigureDI before i18n initialization