Improve Duncan AI response quality and add model recommendation
Details
Three fixes for Duncan giving hallucinated, context-unaware responses:
1. System prompt now instructs Duncan to use provided data context and
never fabricate numbers — applies to both local and cloud prompts.
2. Local RAG context budget increased from 200 to 400 chars per chunk
(6 chunks max, up from 5) so budget data isn't truncated to nothing.
Mistral 7B context window increased from 4096 to 8192 tokens to
accommodate the richer context.
3. System RAM detection via GC.GetGCMemoryInfo().TotalAvailableMemoryBytes
drives a model recommendation in AI settings: 16+ GB gets Mistral 7B,
8+ GB gets Phi-3 Mini, smaller systems get Llama 3.2 1B. The recommended
model is labeled in the dropdown and an explanation shown below it.
Bump version to 1.59.0.
Extract ModalOverlay to UI.Adaptive, bump SDK to 1.61.0
Details
Add shared ModalOverlay control to PrivStack.UI.Adaptive replacing
duplicated per-plugin copies in Notes, Tasks, Calendar, and Email.
The control provides animated backdrop, centered card with title bar,
scrollable body, optional footer, Escape key and backdrop-click-to-close.
Built as a code-based Panel (matching EmptyState pattern) with no AXAML
theme file required.
Add CompositeDisposable lifecycle to ViewModelBase, bump SDK to 1.60.0
Details
ViewModelBase now implements IDisposable with a protected CompositeDisposable
property. Plugins can track subscriptions and event handlers via DisposeWith()
extension method to prevent memory leaks when ViewModels are deactivated.
Added System.Reactive dependency for CompositeDisposable. Added
DisposableExtensions.cs with DisposeWith<T> extension method matching the
ReactiveUI convention.
Add chart query error recovery and granular insight progress updates
Details
Add ChartQueryErrorMessage to SDK for cross-boundary error recovery
communication. When a chart's dataset query fails (e.g., missing
aggregation on GROUP BY), the orchestrator receives the error context,
sends it to the AI for a corrected chart config, and retries once.
Add intermediate progress updates to the insight generation pipeline
so users see status at each stage: sending to AI, processing response,
generating chart datasets, and saving to Notes.
SDK version bump to 1.59.0 for new message type.
Add Embedding Space tab to Graph plugin (v1.58.0)
Details
Integrate the 3D embedding space visualization as a second tab in the
Graph plugin. New EmbeddingDataService calls the rag_fetch_all FFI,
projects 768-dim embeddings to 3D via random projection, and computes
pairwise cosine similarity edges above a configurable threshold.
EmbeddingSpaceViewModel manages loading, parameters (similarity threshold,
max points, max neighbors, auto-rotate), entity type filtering, and
selection state. GraphViewModel gains GraphTab enum and ActiveTab property.
GraphView.axaml adds a tab strip with Knowledge Graph / Embedding Space
tabs, per-tab sidebar controls, and per-tab footer stats. GraphView
code-behind handles tab switching with lazy control creation.
GraphPlugin version bumped to 1.1.0, Desktop to 1.58.0.
Get notified about new releases