Parse unclosed ACTION blocks and strip LLM stop token artifacts
Details
Three chat quality fixes:
1. ACTION block parsing: AI models sometimes omit [/ACTION] closing tags
(e.g. two consecutive [ACTION]{...} blocks with no [/ACTION] between
them). Added UnclosedActionPattern regex that matches blocks terminated
by the next [ACTION], end of string, or a stray [/ACTION]. StrayActionTags
regex strips any remaining tag fragments from the displayed text.
2. Model stop token artifacts: Qwen models output a literal Ċ (U+010A)
character before stop tokens like <|im_end|>. The existing ChatTokenPattern
only stripped the tag itself, leaving the Ċ visible in chat. Updated the
regex to capture preceding U+010A/U+0120 chars, and added
TrailingModelArtifacts regex to clean any remaining instances at end of
output.
3. Cross-plugin action guidance: Updated ActionFormatHeader prompt to
explicitly tell the AI it can use actions from any plugin regardless of
which plugin the user is currently viewing.
Bumps Desktop to 1.64.2.
Add [[ wiki-link picker to chat input, fix intent ID resolution
Details
Three fixes for AI chat:
1. Wiki-link picker: typing [[ in the chat input opens a compact dropdown
that searches all ILinkableItemProvider instances. Keyboard nav (up/down/
enter/esc) and pointer selection insert [[type:id|Title]] into the chat
text, which the existing ResolveWikiLinksAsync then resolves for the AI.
2. Intent ID fuzzy fallback: IntentEngine.ExecuteDirectAsync now tries a
prefix match when exact match fails (e.g. AI sends "tasks.update" →
resolves to "tasks.update_task"). Logged as warning for monitoring.
3. Prompt improvements: ActionFormatHeader now explicitly instructs the AI
to use exact intent IDs, to use cross-plugin actions regardless of the
active plugin, and moves the "can't do that" fallback to only apply when
no matching action exists in the discovered descriptions.
Bumps Desktop to 1.64.1.
Add wiki-link resolution and conversational entity tracking to AI chat
Details
Extract and resolve wiki-links ([[type:id|Title]]) from user chat messages
via ILinkableItemProvider, injecting resolved entity metadata into the AI
system prompt so ACTION blocks can reference entities by ID. Track the last
successfully acted-on entity (ID + type) across the conversation so
pronouns like "that task" or "it" resolve correctly. Fields reset on new
chat. Bumps Desktop to 1.64.0.
Auto-initialize local LLM after model download
Details
After downloading a local model, the settings handler now pre-loads it
into memory immediately instead of requiring a restart. The download
status progresses through "Download complete — loading model..." to
"Ready — model loaded". Also auto-selects the model in settings if none
was previously selected. Added PreloadModelAsync to LocalLlamaProvider
for explicit warm-up without running inference. Bump to 1.63.7.
Hide chat input on Intents/History tabs and fix history overflow
Details
Chat input bar and token warning banner now only appear on the Chat tab.
Previously they were always visible across all three tabs. Also keeps
ClipToBounds on all panels to prevent content overflow. Bump to 1.63.6.
Get notified about new releases