Fix Cmd+K in text blocks + global quick actions (v1.48.0)
Details
Fixes global keyboard shortcuts (Cmd+K, Cmd+/, Cmd+\, etc.) not firing when
focus is inside TextBox or RichTextEditor controls. The root cause was that
MainWindow.OnKeyDown() used bubble-phase routing, so text controls consumed
KeyDown events before they reached the window. Switched to tunnel-phase
routing via AddHandler(KeyDownEvent, handler, RoutingStrategies.Tunnel),
matching the pattern already used by NavigationSidebar.
Split MainWindow.axaml.cs (593 lines) into three partial classes for
modularity: MainWindow.axaml.cs (lifecycle + pointer handlers),
MainWindow.Keyboard.cs (all global shortcut handling),
MainWindow.Speech.cs (speech-to-text helpers).
Added QuickActionService that aggregates IQuickActionProvider capabilities
from plugins and surfaces them as command palette entries. Wired quick action
overlay in MainWindow.axaml with modal backdrop, title bar, and dynamic
ContentPresenter. Added overlay state properties to MainWindowViewModel.
Registered IQuickActionProvider auto-discovery in PluginRegistry.ActivatePlugin
and QuickActionService as a command provider in SetMainViewModel.
Add IQuickActionProvider SDK capability interface (v1.48.0)
Details
Introduces IQuickActionProvider and QuickActionDescriptor to PrivStack.Sdk.
This capability allows plugins to register global quick actions that appear
in the command palette and can be invoked from any plugin tab. Actions can
either execute immediately or show a modal overlay with custom UI content
provided by the plugin. Follows the same descriptor+execution pattern as
IIntentProvider. SDK version bumped to 1.48.0.
Unified universal search bar replacing command palette overlay
Details
Replace the standalone CommandPalette overlay with an integrated
UniversalSearchDropdown that anchors below each plugin's toolbar search
pill. Cmd+K now focuses the toolbar search bar instead of opening a
separate modal. New UniversalSearchService bridges toolbar events to
CommandPaletteViewModel. Added context-aware ranking that boosts results
from the active plugin. Increased max search results from 12 to 15.
Deleted CommandPalette.axaml/.cs (UI ported to UniversalSearchDropdown).
Desktop version bumped to 1.47.0.
Add universal search bar API to PluginToolbar
Details
PluginToolbar now exposes SearchGotFocus, SearchLostFocus, SearchKeyDown
events and ActiveSearchPill/FocusSearchBox() for shell-level search
integration. Adds a platform-aware keyboard shortcut badge (⌘K / Ctrl+K)
to the search pill that hides on focus. Default watermark changed to
"Search..." for consistency across plugins. SDK version bumped to 1.47.0.
Add shell-level OAuth services for Google and Microsoft connections
Details
Create OAuthProviderConfig with combined scopes (Gmail + Calendar + identity
for Google, Outlook IMAP/SMTP + identity for Microsoft). Create
OAuthBrowserFlowService consolidating the PKCE loopback flow from the Email
plugin into a reusable shell service. Expand ConnectionService with multi-account
support: ConnectOAuthAsync orchestrates the full flow, ImportConnectionAsync
enables migration from plugin-level tokens, GetAccessTokenByIdAsync auto-refreshes
expired tokens with per-connection SemaphoreSlim concurrency control,
GetConnectionsWithScopesAsync filters by required scopes. Register
OAuthBrowserFlowService in DI. Desktop version bumped to 1.46.0.
Get notified about new releases