Unified global AI suggestion tray replacing IntentSuggestionTray (v1.49.0)
Details
Merges the shell's intent suggestion tray and plugin-local AI panels into a
single global "AI Suggestions" tray owned by the desktop shell.
New files:
- AiSuggestionServiceImpl: wraps WeakReferenceMessenger for Push/Update/Remove
- AiSuggestionTrayViewModel: subscribes to IntentEngine events + content
suggestion messages, aggregates both card types into one ObservableCollection
- ContentSuggestionCardViewModel: wraps ContentSuggestionCard, sends
ActionRequested/Dismissed messages back to owning plugin
- IAiTrayCardViewModel: common interface for Intent and Content card VMs
- AiSuggestionTray.axaml: DataTemplate-based rendering for both card types
Removed:
- IntentSuggestionTrayViewModel (replaced by AiSuggestionTrayViewModel)
- IntentSuggestionTray.axaml (replaced by AiSuggestionTray.axaml)
Renamed in MainWindowViewModel:
- IntentTrayVM → AiTrayVM, IsIntentTrayOpen → IsAiTrayOpen
- ToggleIntentTray → ToggleAiTray
Updated MainWindow.axaml bindings, Keyboard.cs escape handler, PluginHost/
PluginHostFactory wiring, and ServiceRegistration DI container.
Desktop version 1.48.3 → 1.49.0.
Add IAiSuggestionService SDK types for unified AI tray (v1.49.0)
Details
Introduces the SDK contract for the global AI suggestion tray:
- ContentSuggestionCard, SuggestionAction, ContentSuggestionState models
- Messenger messages: Push/Update/Remove/ActionRequested/Dismissed
- IAiSuggestionService interface (Push, Update, Remove)
- IPluginHost.Suggestions property for plugin access
- SDK version bump 1.48.0 → 1.49.0
Plugins can now push content suggestion cards (summaries, rewrites, etc.)
into a shell-owned unified tray via Host.Suggestions. Action clicks route
back to the owning plugin via ContentSuggestionActionRequestedMessage on
the messenger bus, keeping block-level operations inside the plugin while
the shell renders cards uniformly alongside intent suggestion cards.
Add AggregateGroupedAsync to Data plugin
Details
Implements the new IDataObjectProvider.AggregateGroupedAsync method,
delegating to the underlying IDatasetService for multi-series grouped
aggregate queries. Bumps Data plugin version from 1.17.0 to 1.18.0.
Add Generate Insights button to Data plugin, bump to 1.17.0
Details
New "Generate Insights" button in the dataset browse header. Clicking it
queries the first 100 rows, pushes a Loading suggestion card to the AI tray,
and sends DatasetInsightRequestMessage to the shell orchestrator for AI
analysis. The orchestrator handles the AI call and note creation.
New partial class DatasetBrowseViewModel.Insights.cs keeps insight logic
separate. IAiSuggestionService wired through DataPlugin → DataViewModel →
DatasetBrowseViewModel.
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.
Get notified about new releases