SDK v1.66.1: spell check adorner, autocorrect, and Timer ambiguity fixes
Details
Adds SpellCheckAdorner (wavy underlines for misspelled words in TextBox),
SpellCheckBehavior (attached behavior to enable spell check), autocorrect
service, and spell check rendering utilities. Integrates spell check into
RichTextEditor with debounced recheck and dictionary change handling.
Fixes Timer ambiguity (System.Timers vs System.Threading) in SpellCheckAdorner
and RichTextEditor.SpellCheck by fully qualifying System.Timers.Timer. Fixes
IsAttachedToVisualTree → GetVisualRoot() and GetTemplateChildren →
GetVisualDescendants for Avalonia 11.3.x compatibility.
Fix Notes RAG indexing: blocks nested in content.content, not top-level
Details
The Notes RAG indexer was looking for a top-level "blocks" array on page
entities, but pages store content as content: { type: "doc", content:
[...blocks...] } (the PageDocument structure). This meant only page
titles were indexed — no actual block content reached the RAG vector
store. Fixed ExtractPageChunks to navigate content.content for the
blocks array, with legacy "blocks" fallback. Also extended
ExtractBlockText to handle bullet/numbered/task list items (text is
in items[].text) and nested children blocks.
Duncan persona: warm directness, adaptive technical depth, honest unknowns
Details
Enriched the cloud system prompt with personality traits: honest but
empathetic tone, balanced verbosity, clean dry humor, neutral error
handling that pivots to solutions. Technical depth now adapts to the
user via memory context rather than assuming expertise level.
RAG search: cross-plugin diversity with query-based plugin boosting
Details
RAG search results were dominated by the active plugin's data, making
cross-plugin queries (e.g. asking about Notes from Tasks) return no
results from the mentioned plugin. Fix: fetch 3x candidates, then
apply plugin diversity via round-robin interleaving. When the user
mentions a specific plugin by name (e.g. "notes", "calendar"),
half the result slots are reserved for that plugin's data.
Fix intent actions not surfacing in RAG — use dedicated intent search
Details
The root cause of the AI responding conversationally ("Shall I go ahead?"
"Creating those now!") without actually executing actions was that RAG
returned 0 intent_action chunks. Entity data (the user's actual tasks,
notes, etc.) crowded out intent_action chunks in the general semantic
search because task titles are closer to the query than "ACTION: Create
Task" descriptors.
Fix: BuildRagContextWithIntentsAsync now performs TWO parallel searches —
one general (for entity data + plugin context) and one specifically
filtered to intent_action entity type. Results are deduped and merged,
ensuring the AI always sees relevant available actions alongside the
user's data context.
Also fixed incorrect slot names in ActionFormatHeader for tasks.add_link
(was source_task_id/target_entity_id, corrected to task_id/target_id).
Desktop version 1.65.6 → 1.65.7.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Get notified about new releases