Skip to content
GitHub stars

Changelog

All notable changes to msgvault, grouped by release.

0.14

2026-04-21

New 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 vector runs pure semantic search; --mode hybrid fuses 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_messages mode argument plus a new find_similar_messages tool). See Vector Search.
  • msgvault build-embeddings command to generate and maintain the local vector index. Incremental by default; --full-rebuild creates 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 return index_stale until 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, so msgvault serve can keep the vector index current without manual intervention.
  • /api/v1/stats gains a vector_search sub-object reporting the active generation, any in-flight rebuild, and the total pending embedding queue depth.

Improvements

  • search command gains --mode fts|vector|hybrid and --explain flags. --explain includes 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-account deletes 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-account no longer leaves orphaned attachment files on disk after an account’s database rows are removed.

0.13.1

2026-04-15

Bug fixes

  • Fix importing older WhatsApp msgstore.db backups.

0.13

2026-04-14

New features

  • Structured file logging with per-run correlation IDs. Every CLI invocation gets a unique run_id on every log line, making it easy to trace a single run across shared log files. New msgvault logs command 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-10

New features

  • Shell completion via msgvault completion for Bash, Zsh, Fish, and PowerShell.
  • MSGVAULT_IMAP_PASSWORD environment variable and stdin piping for non-interactive add-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-base with libstdc++ 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-mbox accepts plain mbox files with any extension (ZIP entries still require .mbox/.mbx), --label is 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.
  • completion command registered correctly in the CLI command tree.

0.12

2026-04-09

New 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-o365 for Outlook.com and organizational accounts. Auto-detects personal vs. org IMAP hosts.
  • Text message import: import-whatsapp, import-imessage, and import-gvoice for WhatsApp, iMessage, and Google Voice. See Text Messages.
  • TUI text mode: press m to toggle between Email and Texts for browsing imported text conversations.
  • --after and --before date filters for sync-full with IMAP accounts.
  • CC and BCC recipients exposed in the message API responses.
  • Claude Code skill for querying the archive via SQL views.

Improvements

  • delete-staged now supports IMAP accounts (uses UID STORE \Deleted + UID EXPUNGE).
  • Analytics cache is automatically rebuilt after write operations (sync, import, delete-staged) so stats stay current.
  • msgvault query auto-rebuilds a stale cache before executing SQL.
  • Improved archive query views and text-message search support.

Bug fixes

  • from:domain.com search 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 EOF errors with OAuth proxies.
  • Fix label name conflict handling when ensuring Gmail labels (use ON CONFLICT upsert).
  • Open the MCP database in read-only mode to prevent concurrent session hangs when multiple AI sessions query the archive.

0.11

2026-03-24

New features

  • Support multiple Google OAuth apps for Google Workspace organizations.
  • Add source_conversation_id to search and show-message JSON 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-15

New features

  • IMAP account support via add-imap command for syncing mail from any standard IMAP server.
  • Remote TUI support: msgvault tui can connect to a remote server when [remote] is configured.
  • --account flag on search to limit results to a specific account.

Improvements

  • Auto-discover Apple Mail accounts during import-emlx by reading macOS Accounts4.sqlite.
  • Shorten overly long MIME parse error messages to keep terminal output readable.

Bug fixes

  • Fix Apple Mail V10 import to discover .emlx files in partition subdirectories.
  • Prevent sync re-authentication from mixing tokens between accounts by adding login_hint and post-auth email validation.

0.9

2026-02-26

New features

  • create-subset command to generate smaller subset databases for testing or sharing.
  • remove-account command 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 --force flag.

Bug fixes

  • Fix a foreign key constraint failure during message ingest.

0.8

2026-02-24

New features

  • import-mbox command to import local MBOX archives.
  • import-emlx command to import Apple Mail .emlx exports.
  • MCP stage_deletion tool 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-09

New features

  • HTTP API server with daemon mode and scheduled background syncs.
  • Account filters for MCP search, list, and aggregate tools.
  • 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-05

New features

  • Secure file permissions with Windows DACL support.
  • Windows update support with .zip archives and .exe binaries.
  • --home CLI 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-encoding when 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-04

New features

  • export-attachment and export-attachments CLI commands.
  • Windows support with installer, config path fixes, and --config flag.
  • MCP attachment support with embedded resources and export_attachment tool.
  • Account management CLI with add, list, and update commands.

Improvements

  • Improve Windows installer, remove sqlite_scanner dependency, 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-full limit argument.
  • Fix DuckDB type handling errors.
  • Prevent crash when rethrowing panics during export.
  • Add missing bounds checks in MCP handlers.

0.4

2026-02-03

New features

  • --list flag on delete-staged to preview staged deletions before executing.

Improvements

  • Replace broken --headless device flow with clearer setup instructions.

0.3

2026-02-02

New features

  • sync and sync-full run without arguments to sync all accounts.

Improvements

  • Tighten private file permissions to 600 for 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-02

Improvements

  • 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-02

New features

  • MCP server for AI-assisted email exploration.

Improvements

  • Improve Linux compatibility by building against Ubuntu 20.04 (glibc 2.31).
  • Rename sync-incremental command to sync for a simpler workflow.
  • Show full version tag in the TUI title bar.
  • Show helpful OAuth setup instructions when client_secrets is 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-01

Initial public release.