Skip to main content

Changelog

Every improvement, automatically tracked from our commit history.

Subscribe via Atom feed
← Prev Page 57 of 139 Next →
February 21, 2026
patch Desktop Shell

Split AI memories into personal vs data categories with audit UI

Desktop 1.57.1 → 1.57.2 | 4a1c7f77
Details

Add category-aware clear methods (ClearPersonalMemories, ClearDataMemories)

to AiMemoryService so personal memories (preference, personal) survive

data wipe/reseed while data memories (work, other, null) are cleared.

Settings UI now shows memory counts per category with individual clear

buttons, a "View All Memories" toggle to audit stored memories, and

inline edit/delete controls for individual memory entries. Users can

correct misunderstood memories or remove specific ones without clearing

everything.

SeedDataService.ClearAiState() now calls ClearDataMemories() instead of

ClearAll(), preserving user-shared personal facts across wipe/reseed.

Version bump 1.57.1 → 1.57.2.

patch CoreDesktop Shell

Clear AI state on data wipe and reseed

Core 1.14.0 → 1.14.1 | Desktop 1.57.0 → 1.57.1 | 8d7ac03c
Details

Add rag_delete_all FFI function to truncate the rag_vectors table.

Wire SeedDataService to clear RAG vectors, AI conversation history,

and AI memories when wiping or reseeding data. Add ClearAll() methods

to AiConversationStore and AiMemoryService. Prevents stale embeddings

and chat history from referencing deleted entities.

patch CoreDesktop Shell

Fix RAG pipeline build errors

Details

Switch EmbeddingService tokenizer from non-existent Tokenizer.CreateTiktokenForEncoding

to WordPieceTokenizer.Create for nomic-embed-text-v1.5 compatibility. Update

EmbeddingModelManager to download vocab.txt instead of tokenizer.json. Fix

System.Threading.Timer type ambiguity in RagIndexService debounce. Remove unused

to_c_string import from Rust rag.rs FFI module.

patch Desktop Shell

Wire embedding model download into Settings UI with auto-index on startup

Details

Adds "Semantic Search" card to AI settings with download/delete buttons,

progress bar, and status text. Uses nomic-embed-text-v1.5 (~260MB ONNX model).

After download completes, initializes EmbeddingService and kicks off full

RAG index in the background. On subsequent app starts, if model is already

downloaded, auto-initializes after a 5-second delay (to allow plugin activation)

and runs full index with content-hash skip for unchanged chunks.

SettingsViewModel.AI.cs: IsEmbeddingModelDownloading, CanDownloadEmbeddingModel,

EmbeddingModelDownloadLabel, DownloadEmbeddingModelCommand, DeleteEmbeddingModelCommand.

RagIndexService: deferred auto-init in constructor via Task.Run with 5s delay.

minor CoreDesktop ShellSDK

Add RAG pipeline: SDK interface, Rust FFI, embedding + index services

SDK 1.56.0 → 1.57.0 | Core 1.13.6 → 1.14.0 | Desktop 1.56.0 → 1.57.0 | b5ceaf7b
Details

Implements full semantic search infrastructure for cross-plugin content retrieval:

SDK: IIndexableContentProvider capability interface with ContentChunk/IndexableContentResult

DTOs enabling plugins to contribute text content for vector embedding.

Rust Core: rag_vectors table (entity_id, chunk_path, embedding DOUBLE[], content_hash)

with cosine similarity search via DuckDB list_cosine_similarity(). Four FFI functions:

rag_upsert, rag_search, rag_delete, rag_get_hashes with P/Invoke bindings.

Desktop: EmbeddingService wraps ONNX Runtime for nomic-embed-text-v1.5 (768-dim vectors)

with search_document/search_query task prefixes and L2 normalization.

EmbeddingModelManager handles HuggingFace model download with temp-file-and-rename.

RagIndexService is a Channel<T> bounded background worker that listens for

EntitySyncedMessage, debounces per-entity (500ms), and skips unchanged chunks via

content_hash comparison. RagSearchService provides the query API.

Auto-registers IIndexableContentProvider in PluginRegistry capability broker.

SDK 1.56.0 → 1.57.0, Desktop 1.56.0 → 1.57.0, Rust 1.13.6 → 1.14.0

← Prev Page 57 of 139 Next →

Get notified about new releases