Commit graph

10680 commits

Author SHA1 Message Date
Hongtao Zhang
32aa3ffdc5 Fix MainWindow visibility logic:
- Restore Hide() method in MainViewModel (accidentally deleted)
- Fix Show() method which was incorrectly calling HideRequested
- Ensure OpenSettings cleanly hides MainWindow before showing SettingsWindow
2026-01-19 00:16:59 -08:00
Hongtao Zhang
2b328e552a Fix OpenSettings command: ensure Main Window hides before showing Settings
- 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
2026-01-19 00:13:42 -08:00
Hongtao Zhang
19913fa1e6 Fix OpenSettings command: ensure Main Window hides before showing Settings
- Remove Dispatcher.UIThread.Post which might cause timing issues
- Call Hide() before showing SettingsWindow to ensure proper focus and visibility transition
2026-01-19 00:10:33 -08:00
Hongtao Zhang
dda587493b Migrate Program plugin settings to Avalonia and fix scroll issues
- 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
2026-01-19 00:06:36 -08:00
Hongtao Zhang
fb9721c7f2 refactor: move history storage to infrastructure and implement WPF settings window host in Avalonia 2026-01-18 23:28:56 -08:00
Hongtao Zhang
0e1af2279b Implement WPF plugin settings hosting in Avalonia
- Created WpfControlHost to host WPF controls using HwndSource

- Updated PluginItemViewModel to load settings via ISettingProvider

- Updated PluginsSettingsPage to display settings in an expander
2026-01-18 20:01:00 -08:00
Hongtao Zhang
1209ca5194 Fix flickering & add result highlighting
- 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
2026-01-18 13:13:05 -08:00
Hongtao Zhang
1d945654c1 Expand GeneralSettingsPage with ~25 settings using FluentAvalonia SettingsExpander
- Add Card, ExCard, CardGroup custom controls for settings pages
- Update GeneralSettingsViewModel with new properties:
  - Startup: UseLogonTaskForStartup, HideOnStartup
  - Behavior: HideNotifyIcon, IgnoreHotkeysOnFullscreen, AlwaysPreview
  - Updates: AutoUpdates, AutoUpdatePlugins
  - Search: SearchPrecision, LastQueryMode, SearchDelay
  - Home: ShowHomePage, ShowHistoryResults, MaxHistoryResults
  - Misc: AutoRestart, ShowWarning, AlwaysStartEn, ShouldUsePinyin
- Rewrite GeneralSettingsPage.axaml using SettingsExpander pattern
- Update migration checklist to ~35-40% progress
2026-01-18 02:25:47 -08:00
Hongtao Zhang
8a99881799 Add detailed Avalonia migration checklist 2026-01-18 02:16:15 -08:00
Hongtao Zhang
0f9b9329dd Add hotkey recorder with manual modifier tracking
- 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
2026-01-18 02:10:53 -08:00
Hongtao Zhang
29b26643cc Improve glyph support and embed Segoe Fluent Icons
- 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
2026-01-17 12:50:07 -08:00
Hongtao Zhang
ed668f3716 Add glyph icon support for results
- 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
2026-01-15 23:41:11 -08:00
Hongtao Zhang
c68a03e193 Delay window show until plugins are initialized
- MainWindowVisibility starts as false (window hidden)
- Window IsVisible bound to MainWindowVisibility
- Set MainWindowVisibility = true in OnPluginsReady() after plugins load
2026-01-15 23:31:30 -08:00
Hongtao Zhang
5d80816f84 Refactor i18n to be self-initializing via DI
- 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
2026-01-15 01:17:29 -08:00
Hongtao Zhang
36e3530a59 Add internationalization support for Avalonia UI
- Create Internationalization service that parses WPF XAML language files
- Load translations from main Languages/ folder and all plugin Languages/ folders
- Add LocalizeExtension markup extension and Translator helper for XAML/code
- Fix IPublicAPI.GetTranslation to use the i18n service for plugin context menus
- Update MainWindow to use localized placeholder text
2026-01-15 01:10:53 -08:00
Hongtao Zhang
192eb4d1c0 Add context menu support for results in Avalonia UI
- Add ActiveView enum to track Results vs ContextMenu view state
- Add ContextMenu ResultsViewModel and view switching logic
- Implement LoadContextMenuCommand using PluginManager.GetContextMenusForPlugin
- Add keyboard navigation: Shift+Enter/Right to open, Left/Escape to close
- Update SelectNextItem/SelectPrevItem to navigate appropriate list
- Update EscCommand to return from context menu before hiding
2026-01-15 00:53:14 -08:00
Hongtao Zhang
2466b907c4 Fix UI blocking by running plugin queries on thread pool
- Wrap each plugin query in Task.Run() to ensure synchronous plugin code
  doesn't block the UI thread
- Show results progressively as each plugin completes using ConcurrentBag
- Update UI after each plugin returns instead of waiting for all plugins
2026-01-15 00:30:46 -08:00
Hongtao Zhang
f3d3f80db8 Add DynamicData sorting, result persistence, and Windows Shell icon loading
- 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
2026-01-15 00:26:27 -08:00
Hongtao Zhang
065dc191ce Add global hotkey support for Avalonia UI 2026-01-14 23:50:54 -08:00
Hongtao Zhang
207953159a Fix MainWindow to use shared ViewModel from DI and add console logging 2026-01-14 23:29:10 -08:00
Hongtao Zhang
e961dc5668 Wire up Avalonia UI to actual plugin system
- 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
2026-01-14 23:20:19 -08:00
Hongtao Zhang
4120407ac3 Add initial Avalonia UI project for migration
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.
2026-01-14 23:01:35 -08:00
Jeremy Wu
229987ee90
Release 2.0.3 (#4121)
Some checks failed
Publish Default Plugins / publish (push) Has been cancelled
Build / build (push) Has been cancelled
2025-11-20 19:01:51 +08:00
Jeremy Wu
f37d4c47cc
Release 2.0.2 | Plugin 5.1.0 (#4046) 2025-10-14 13:49:29 +03:00
Jeremy Wu
a05e09908c
Release 2.0.1 (#3998) 2025-09-21 20:23:00 +08:00
Jeremy Wu
e0930924b1
Merge pull request #3904 from Flow-Launcher/dev
Release 2.0.0 | Plugin 5.0.0
2025-09-06 14:09:43 +10:00
Jeremy Wu
b898c466aa
Merge pull request #3929 from Flow-Launcher/bump_versions
Bump version for 2.0.0 release + update readme
2025-09-06 13:47:59 +10:00
Jeremy Wu
c7e26d3ab7
Merge pull request #3844 from Flow-Launcher/net9_readme
Update readme for .Net 9
2025-09-06 13:47:12 +10:00
Jeremy Wu
4fe8d8c233
New Crowdin updates (#3940) 2025-09-06 06:34:23 +03:00
Jack Ye
9b0498974c
Merge pull request #3946 from Flow-Launcher/dependabot/github_actions/actions/setup-python-6
Bump actions/setup-python from 5 to 6
2025-09-05 19:35:10 +08:00
Jack Ye
430216a345
Merge pull request #3945 from Flow-Launcher/dependabot/github_actions/actions/stale-10
Bump actions/stale from 9 to 10
2025-09-05 19:34:43 +08:00
VictoriousRaptor
0c9dd46239
Merge pull request #3947 from PatrikHed/dev
Added ISO 8601 date to the SettingsPaneThemeViewModel
2025-09-05 18:27:09 +08:00
Patrik Hedlund
860ef6081b Added ISO 8601 date to the SettingsPaneThemeViewModel 2025-09-05 10:42:56 +02:00
dependabot[bot]
d1c2298be9
Bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 22:05:24 +00:00
dependabot[bot]
7ffc5f7864
Bump actions/stale from 9 to 10
Bumps [actions/stale](https://github.com/actions/stale) from 9 to 10.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v9...v10)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: '10'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 22:05:21 +00:00
Jeremy Wu
738a27e9b6
Merge pull request #3943 from Flow-Launcher/update_manifest_url_fetch
Handle MinimumAppVersion parse fail and reorder last manifest fetch date
2025-09-04 23:14:38 +10:00
Jeremy Wu
5d297c1f19
update to log info for plugin version requirement failure 2025-09-04 22:36:43 +10:00
Jeremy
80b0b6031e handle version parse fail and reorder last manifest fetch date 2025-09-04 21:49:16 +10:00
Jack Ye
ec7b481d27
Merge branch 'dev' into bump_versions 2025-09-04 19:09:58 +08:00
Jack Ye
7208b72561
Merge pull request #3941 from Flow-Launcher/dependabot/github_actions/actions/setup-dotnet-5
Bump actions/setup-dotnet from 4 to 5
2025-09-04 19:09:32 +08:00
dependabot[bot]
668d89018d
Bump actions/setup-dotnet from 4 to 5
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 5.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-04 06:44:22 +00:00
Jack Ye
6d0288102d
Merge pull request #3936 from Flow-Launcher/always_preview_notification
Add maximum results shown warning when always preview is on
2025-09-04 13:32:08 +08:00
VictoriousRaptor
8ec5026e1b
Merge pull request #3933 from Flow-Launcher/point_pluginsmanifest_to_main
Switch plugins manifest file download URL to be from main branch
2025-09-04 08:47:16 +08:00
Jack251970
c8dedd50d5 Add maximum results shown warning when always preview is on 2025-09-03 21:42:47 +08:00
Jeremy
ffb7c25635 switch PluginsManifest download URL to be from main branch 2025-09-03 21:02:07 +10:00
Jack251970
96b93c904c Use new screenshot for plugin store 2025-09-03 16:24:58 +08:00
Jack251970
634a6aa3bb Add Set Flow Launcher Theme command 2025-09-03 12:13:42 +08:00
Jeremy Wu
09366f5bed
New Crowdin updates (#3931) 2025-09-03 09:32:29 +08:00
Jeremy Wu
9ee123b028
Merge pull request #3932 from Flow-Launcher/add_plugin_min_flow_version
Allow setting of minimum app version plugin requirement
2025-09-02 23:09:27 +10:00
Jeremy Wu
8392a025f3
fix typo 2025-09-02 22:46:37 +10:00