Improve Duncan AI context for Finance and local models
Details
Three changes to fix Duncan giving poor/irrelevant responses when
users ask about their budget:
1. Increased RAG chunk limits for local models (Mistral): result
limit 6→8, max chunk chars 400→800. Mistral's 8K context can
handle this and the budget data was being severely truncated.
2. When FetchActiveItemEntityAsync fails to find an entity via SDK
or DataSourceProvider (e.g. finance_budget synthetic types), fall
back to formatting InfoPanelDetailField entries into the active
item context instead of leaving it as just a title string.
3. Bumped desktop to 1.60.2.
Add NotEquals variant to FilterOperator enum
Details
The dataset view filter system was missing a NotEquals operator,
causing deserialization failures when views used not-equals filters.
Added the variant to the FilterOperator enum so it serializes as
"not_equals" via serde rename_all snake_case. Bumped workspace
version to 1.15.1.
Fix RAG index never starting on app launch
Details
RagIndexService was registered as a lazy singleton but never resolved
during startup — only when downloading the embedding model or seeding.
Its constructor contains a 5-second delayed auto-init task that calls
StartFullIndexAsync, but since the singleton was never constructed, the
RAG pipeline was completely dead on normal launches. Duncan had zero
indexed context for every chat message.
Eagerly resolve RagIndexService in the deferred background services
block so its constructor runs and the auto-init fires.
Bump version to 1.60.1.
Fix </s> stop tokens leaking into Duncan chat responses
Details
Two bugs: (1) The ChatTokenPattern regex only matched <|token|> format but
not bare </s> from Mistral models. Added "s" to the alternation group.
(2) Cloud provider responses bypassed Sanitize() entirely, allowing any
stray tokens or formatting artifacts through. Now all responses go through
the same sanitization pipeline regardless of provider.
Bump version to 1.58.8.
Exclude test/runner projects from plugin build loop
Details
Added case filter to skip *.Tests and *.TestRunner csproj matches in the
dev build script. These are test utilities, not runtime plugins, and
should not be built alongside actual plugins.
Get notified about new releases