Changelog
All notable changes to msgvault, grouped by release.
0.14
2026-04-21New features
- Vector search (semantic and hybrid). msgvault can now embed your archive using a configured OpenAI-compatible embedding endpoint (Ollama, llama.cpp
server, LM Studio, etc.) and search it by meaning, not just keywords.msgvault search --mode vectorruns pure semantic search;--mode hybridfuses BM25 and vector similarity via Reciprocal Rank Fusion. Exposed through local CLI search (msgvault search), the HTTP API (GET /api/v1/search?mode=vector|hybrid), and the MCP server (search_messagesmode argument plus a newfind_similar_messagestool). See Vector Search. msgvault build-embeddingscommand to generate and maintain the local vector index. Incremental by default;--full-rebuildcreates a new generation and atomically activates it once pending work drains. Same-model rebuilds keep answering against the previous active generation while the new one is built; model or dimension changes returnindex_staleuntil activation.- Background embedding via the daemon scheduler. A new
[vector.embed.schedule]config block drives the embed worker on cron and/or after every successful scheduled sync, somsgvault servecan keep the vector index current without manual intervention. /api/v1/statsgains avector_searchsub-object reporting the active generation, any in-flight rebuild, and the total pending embedding queue depth.
Improvements
searchcommand gains--mode fts|vector|hybridand--explainflags.--explainincludes per-signal scores (RRF, BM25, vector) in table and JSON output for ranking inspection.- Configuration gains a full
[vector]block with sub-tables for the embedding endpoint, message preprocessing, hybrid ranking, and the embed scheduler. See Configuration: vector. remove-accountdeletes attachment files from disk when they were unique to the removed account. Files shared across multiple accounts are preserved automatically, and an in-progress sync on any account skips file deletion to avoid racing new attachment writes.
Bug fixes
remove-accountno longer leaves orphaned attachment files on disk after an account’s database rows are removed.
0.13.1
2026-04-15Bug fixes
- Fix importing older WhatsApp
msgstore.dbbackups.
0.13
2026-04-14New features
- Structured file logging with per-run correlation IDs. Every CLI invocation gets a unique
run_idon every log line, making it easy to trace a single run across shared log files. Newmsgvault logscommand for viewing and tailing logs. File logging is opt-in; see Configuration: Log for setup.
Improvements
- The terminal UI inherits your terminal background colors instead of forcing its own, so custom terminal themes (Dracula, Solarized, Nord, etc.) work naturally.
Bug fixes
- Improve full-text search performance across local archives.
- Improve terminal UI stability during rapid interactions (fix race condition where switching views could briefly show stale data).
0.12.1
2026-04-10New features
- Shell completion via
msgvault completionfor Bash, Zsh, Fish, and PowerShell. MSGVAULT_IMAP_PASSWORDenvironment variable and stdin piping for non-interactiveadd-imap(Docker, CI).- Advanced search: word-boundary regex matching replaces ILIKE substring matching across all search paths, and FTS5 prefix search for the SQLite full-text index.
- Expanded store API with structured query parsing for search (
SearchMessagesQuery).
Improvements
- Search result quality: text matching switched from ILIKE to word-boundary regex, reducing false positives from substring matches. SQLite aggregate sort ties are broken deterministically by key.
- Nix flake packaging metadata updated for 0.12.1.
- Docker image switched to
wolfi-basewithlibstdc++for CGO/DuckDB compatibility, non-root user, and health check.
Bug fixes
- IMAP label handling: standard folders (Sent, Drafts, Trash, Junk, etc.) are now classified as system labels via RFC 6154 attributes and fallback name matching.
import-mboxaccepts plain mbox files with any extension (ZIP entries still require.mbox/.mbx),--labelis repeatable/comma-separated, and re-imports update labels on existing messages instead of silently skipping.- API search now uses the full structured query parser (operators like
from:,subject:, date/size filters) instead of plain-text matching. completioncommand registered correctly in the CLI command tree.
0.12
2026-04-09New features
- SQL query interface via
msgvault query. Run arbitrary SQL against DuckDB over Parquet with--format json|csv|table. See SQL Queries. - Microsoft 365 OAuth2 support via
msgvault add-o365for Outlook.com and organizational accounts. Auto-detects personal vs. org IMAP hosts. - Text message import:
import-whatsapp,import-imessage, andimport-gvoicefor WhatsApp, iMessage, and Google Voice. See Text Messages. - TUI text mode: press
mto toggle between Email and Texts for browsing imported text conversations. --afterand--beforedate filters forsync-fullwith IMAP accounts.- CC and BCC recipients exposed in the message API responses.
- Claude Code skill for querying the archive via SQL views.
Improvements
delete-stagednow supports IMAP accounts (usesUID STORE \Deleted+UID EXPUNGE).- Analytics cache is automatically rebuilt after write operations (sync, import, delete-staged) so stats stay current.
msgvault queryauto-rebuilds a stale cache before executing SQL.- Improved archive query views and text-message search support.
Bug fixes
from:domain.comsearch now matches domain patterns automatically for common TLDs. Uncommon TLDs still require the explicit@prefix (from:@brand.pizza).- Wait for the IMAP server greeting before authenticating, fixing
unexpected EOFerrors with OAuth proxies. - Fix label name conflict handling when ensuring Gmail labels (use
ON CONFLICTupsert). - Open the MCP database in read-only mode to prevent concurrent session hangs when multiple AI sessions query the archive.
0.11
2026-03-24New features
- Support multiple Google OAuth apps for Google Workspace organizations.
- Add
source_conversation_idtosearchandshow-messageJSON output.
Improvements
- Show masked IMAP passwords with
*while typing during account setup. - Better protect local data and cache handling when SQLite state is corrupted or analytics cache data is empty.
Bug fixes
- Fix IMAP host parsing for IPv6 addresses in
add-imap. - Improve IMAP compatibility by removing
ESEARCH RETURN (ALL)for IMAP4rev1 servers.
0.10
2026-03-15New features
- IMAP account support via
add-imapcommand for syncing mail from any standard IMAP server. - Remote TUI support:
msgvault tuican connect to a remote server when[remote]is configured. --accountflag onsearchto limit results to a specific account.
Improvements
- Auto-discover Apple Mail accounts during
import-emlxby reading macOSAccounts4.sqlite. - Shorten overly long MIME parse error messages to keep terminal output readable.
Bug fixes
- Fix Apple Mail V10 import to discover
.emlxfiles in partition subdirectories. - Prevent sync re-authentication from mixing tokens between accounts by adding
login_hintand post-auth email validation.
0.9
2026-02-26New features
create-subsetcommand to generate smaller subset databases for testing or sharing.remove-accountcommand to delete an account and all its local data.
Improvements
- Support modern Apple Mail V10 directory layouts during
import-emlx. - Handle expired or revoked OAuth tokens with automatic re-authentication and a
--forceflag.
Bug fixes
- Fix a foreign key constraint failure during message ingest.
0.8
2026-02-24New features
import-mboxcommand to import local MBOX archives.import-emlxcommand to import Apple Mail.emlxexports.- MCP
stage_deletiontool for Claude-assisted staged email cleanup. - NAS/Docker deployment support with updated Compose templates.
Improvements
- Installation instructions for conda-forge and additional package managers.
Bug fixes
- Fix TUI label search and aggregate search behavior.
0.7
2026-02-09New features
- HTTP API server with daemon mode and scheduled background syncs.
- Account filters for MCP
search,list, andaggregatetools. - Hide-deleted message filter with a revamped filter modal in the TUI.
- Gmail thread ID support in query results.
- Nix flake for reproducible builds.
Improvements
- Optimize incremental sync to reduce sync time.
- Harden cache validation and handling.
Bug fixes
- Fix CPU pinning behavior during batch deletion.
- Fix batch deletion terminal UI workflow issues.
0.6
2026-02-05New features
- Secure file permissions with Windows DACL support.
- Windows update support with
.ziparchives and.exebinaries. --homeCLI flag to set the base directory for archives.- FTS5 full-text search index built and updated during sync, with automatic backfill for existing databases.
Improvements
- Strip surrounding quotes from CLI paths for Windows CMD compatibility.
- Suggest running
repair-encodingwhen encoding errors are detected during sync.
Bug fixes
- Fix TUI search and navigation issues (pagination, scrolling, stats, zero-result handling).
- Fix silent error handling in encoding repair.
- Fix command-injection risk when launching OAuth browser.
- Fix Windows TOML parsing error hints for backslashes.
- Preserve cursor position when scrolling page up/down in the message list.
- Fix invalid UTF-8 handling during sync to prevent failures.
0.5
2026-02-04New features
export-attachmentandexport-attachmentsCLI commands.- Windows support with installer, config path fixes, and
--configflag. - MCP attachment support with embedded resources and
export_attachmenttool. - Account management CLI with
add,list, andupdatecommands.
Improvements
- Improve Windows installer, remove
sqlite_scannerdependency, and harden test reliability.
Bug fixes
- Fix cache consistency after deletions.
- Fix incremental export losing junction table data.
- Fix SQL injection vulnerability in query handling.
- Fix MIME date parsing issues.
- Fix path traversal risk in attachment export, including symlink traversal.
- Fix non-functional
sync-fulllimit argument. - Fix DuckDB type handling errors.
- Prevent crash when rethrowing panics during export.
- Add missing bounds checks in MCP handlers.
0.4
2026-02-03New features
--listflag ondelete-stagedto preview staged deletions before executing.
Improvements
- Replace broken
--headlessdevice flow with clearer setup instructions.
0.3
2026-02-02New features
syncandsync-fullrun without arguments to sync all accounts.
Improvements
- Tighten private file permissions to
600for better local data security. - Improve deletion progress display and recovery behavior.
Bug fixes
- Fix deletion issues around scope escalation and checkpoint recovery.
- Fix missing
rows.Err()handling when batching participants.
0.2
2026-02-02Improvements
- Use MCP server for chat instead of the built-in chat command.
- Reduce memory use during string joins for better performance.
0.1
2026-02-02New features
- MCP server for AI-assisted email exploration.
Improvements
- Improve Linux compatibility by building against Ubuntu 20.04 (glibc 2.31).
- Rename
sync-incrementalcommand tosyncfor a simpler workflow. - Show full version tag in the TUI title bar.
- Show helpful OAuth setup instructions when
client_secretsis missing.
Bug fixes
- Fix TUI update notification to show commit and date info in release builds.
- Fix incorrect elapsed time reporting during sync.
- Fix recipient name filters to include BCC recipients.
0.0
2026-02-01Initial public release.