Add Rust grouped aggregate query and FFI export
Details
Implements aggregate_query_grouped in the dataset store which generates
GROUP BY x_column, group_column SQL and returns (x, group, y) triples.
The FFI layer pivots these triples into a GroupedAggregateQueryResponse
with shared x_labels and per-series value arrays, ready for multi-series
chart rendering on the C# side.
Add grouped aggregate SDK types for multi-series chart support
Details
Introduces GroupedAggregateQuery, AggregateSeriesResult, and GroupedAggregateResult
records to the SDK dataset models. Adds AggregateGroupedAsync method to both
IDatasetService and IDataObjectProvider interfaces, enabling plugins to request
multi-series chart data where a group_column produces separate value series sharing
a common x-axis. Bumps SDK version from 1.53.0 to 1.54.0.
Remove duplicate H1 titles, add chart block generation to insights
Details
Fixes the double title issue where page title and H1 heading both showed
the same text. Now only the page title is used — no redundant heading blocks
in either the parent or sub-pages.
AI prompt now instructs the model to suggest charts via [CHART: ...] markers
when data would be better understood visually. The orchestrator validates
column names against the actual dataset, parses chart markers, and creates
dataset-backed ChartBlock JSON (bar, line, pie) inline with the text.
Charts reference the source dataset by ID so they render live from the data.
Update AI provider models to current GA, add saved API keys UI
Details
Replace stale model lists across all three cloud providers: Gemini now
uses 2.5-series GA models (fixing 404 on retired preview), OpenAI adds
GPT-4.1 and o4-mini while dropping GPT-4 Turbo, Anthropic adds Claude
4.6 models. Settings panel now displays saved API keys with masked hints
and a delete button for each, backed by a new AiSavedKeyHints dictionary
in AppSettings. Deleting a key removes it from both the vault and the
persisted hints.
Add DatasetInsightOrchestrator for AI-powered dataset analysis
Details
Shell-side orchestrator that receives DatasetInsightRequestMessage from the
Data plugin, calls AiService.CompleteAsync with a structured analysis prompt,
parses the response into sections, and saves results as Notes pages under a
"Duncan Generated Data Insights" parent page with table of contents.
New files:
- DatasetInsightOrchestrator.cs: Message handler + AI call + note creation
- DatasetInsightModels.cs: Result/section record types
- InsightPageBuilder.cs: JSON payload builder for Notes page creation
DI wiring in ServiceRegistration + eager activation in MainWindowViewModel.
Desktop version bumped to 1.53.0.
Get notified about new releases