Fix table separator regex not matching dash characters
Details
The IsTableSeparator regex character class [\s:_-|] treated _-| as a
range (0x5F–0x7C), which excluded the literal dash character (0x2D).
This meant separator rows like |---|---| never matched, so markdown
tables were never detected and fell through as paragraph text.
Replaced the regex approach with a simpler character check that strips
pipes and verifies the remainder is only dashes, colons, and spaces.
Also made IsTableRow more lenient — trailing pipe is now optional since
some models omit it. Version 1.54.3 → 1.54.4.
Make insight orchestrator model-aware for context and output scaling
Details
The orchestrator now queries AiService.GetActiveModelInfo() to determine
the active model's context window. Cloud models (>=100K tokens) get the
full system prompt with all 9 chart types, formatting instructions
(tables, dividers), 20K char sample budget, and 12K max output tokens.
Local models (<100K) get a compact prompt with only bar/line/pie charts,
no formatting instructions, 6K char sample budget, and 2K max output
tokens. This prevents local models from being overwhelmed by instructions
they can't follow while letting cloud models produce richer, more
detailed insight documents. Version 1.54.2 → 1.54.3.
Add divider and markdown table parsing to AI insight pages
Details
InsightPageBuilder now supports BuildDividerBlock (horizontal_rule) and
BuildTableBlock (inline table from parsed markdown pipe syntax).
DatasetInsightOrchestrator.BuildSectionBlocks detects --- divider lines
and markdown pipe tables in AI responses, converting them to proper
Notes page blocks instead of raw paragraph text. The AI system prompt
now instructs models to use markdown tables for structured data and ---
for visual section dividers. Version 1.54.1 → 1.54.2.
Fix GeminiProvider crash on missing candidates in API response
Details
The Gemini API can return responses without a candidates array (quota
exceeded, safety block, empty response, API errors). The previous code
used GetProperty which throws KeyNotFoundException on missing keys.
Now uses TryGetProperty throughout the response parsing path and returns
structured AiResponse with Success=false and descriptive ErrorMessage
for all failure modes: API errors, blocked prompts, empty candidates,
non-STOP finish reasons, and missing content.
Expand AI insight chart generation to all chart types
Details
Updates the dataset insight AI prompt to describe all 9 usable chart types
(bar, line, pie, donut, area, scatter, stacked_bar, grouped_bar, horizontal_bar)
with guidance on when each is appropriate. The AI now suggests varied chart types
across insight sections rather than only bar/line/pie.
Expands ValidChartTypes to accept the new types in chart marker parsing.
InsightPageBuilder.BuildChartBlock now emits orientation for horizontal_bar,
inner_radius_ratio for donut, and enables show_legend for multi-series types.
Bumps Desktop from 1.54.0 to 1.54.1.
Get notified about new releases