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.
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.
Decompose TasksViewModel god object into partial classes
Details
Extract 4 partial classes from TasksViewModel.cs (5248 → 3277 lines):
- TasksViewModel.Board.cs (326 lines): Kanban columns, drag-drop reordering, status movement
- TasksViewModel.Filters.cs (485 lines): Filter/sort properties, ApplyFiltersAndSort, timeline groups
- TasksViewModel.Timer.cs (947 lines): Multi-timer management, auto-save, crash recovery, ITimerBehavior
- TasksViewModel.Projects.cs (353 lines): Project CRUD, assignment, statistics
Internal refactor only — no behavioral changes, no version bump.
Move test projects to tests/ directory, exclude from deploy pipeline
Details
Finance.Tests and Finance.TestRunner were at the repo root alongside
real plugins, causing the deploy workflow glob (PrivStack.Plugin.*/*)
to pick them up as deployable plugins. Moved both into tests/ and added
a safety guard in the workflow to skip *.Tests and *.TestRunner
directories. Updated ProjectReference and Compile Include paths to
reflect the new location.
Add content and tags slots to notes.create_note intent
Details
The notes.create_note intent previously only accepted a title, creating
empty pages. Duncan would tell users it couldn't add content to notes.
Now accepts:
- content (Text, optional): parsed into paragraph blocks, with support
for # headings and - bullet lists via lightweight markdown parsing
- tags (String, optional): comma-separated tags
After creating the page, if content is provided, it's converted to a
PageDocument via PageContentBuilder and saved with UpdatePageAsync.
This follows the same create-then-update pattern used by templates.
Bumps Notes plugin to 1.62.2.
Get notified about new releases