Changelog
What's New in Optiq
Every update, improvement, and fix we ship. Follow along as we build.
April 17, 2026
Security
Client-Side Encryption
- ·Per-repo AES-256-GCM encryption keys generated on your device — sent to server during indexing for encryption, then discarded
- ·API responses always return encrypted code content — decryption happens exclusively on the CLI
- ·Encryption keys stored locally at ~/.optiq/keys/ with restricted file permissions
- ·Persistent audit log tracking logins, role changes, key creation, and account deletions
- ·GDPR-compliant account deletion — all user data purged across every table
Performance
Faster Indexing & Production Hardening
- ·Indexing 7x faster — embedding batch size increased, file nodes skipped, backfill eliminated
- ·Thread-safe DuckDB with connection-per-thread pooling
- ·Database indexes on all hot lookup columns for faster auth and queries
- ·LRU engine cache with configurable max size (prevents OOM on large deployments)
- ·Structured JSON logging with request ID tracking across all log entries
- ·systemd service management with auto-restart and boot-on-startup
- ·Automated hourly database backups with 7-day retention
Platform
API & Dashboard Improvements
- ·Pagination on all list endpoints (repos, keys, users, usage)
- ·X-RateLimit-Limit/Remaining/Reset headers on every API response
- ·Deep health check endpoint verifying DB connectivity and engine cache state
- ·/metrics endpoint with request counts, error rates, latency, and queue depth
- ·Admin panel uses global stats for role distribution and top users
- ·Persistent rate limits that survive server restarts
- ·Email validation on auth endpoints
- ·CORS localhost restricted to development environments only
Engine
C# Support & Search Improvements
- ·Full C# language support — parsing, chunking, symbol resolution, import tracking
- ·optiq_search now accepts a path parameter for direct directory-based search
- ·Repo ID sanitization for folder names with spaces and special characters
- ·Status page now shows service data to all visitors
April 6, 2026
Performance
Rust-Powered Search Engine
- ·Search engine hot path rewritten in Rust via a new optiq-core native module
- ·Engine startup reduced from 36s to ~3.5s for a 20K-node repo
- ·Cold search dropped from 46.7s to ~2.4s, warm searches complete in ~1.7s
- ·Advanced ranker initializes 5x faster using parallel tokenization via rayon
- ·Bulk decryption is 16x faster
- ·Binary graph cache enables near-instant subsequent server restarts instead of rebuilding from the database every time
Retrieval
Graph-Aware Query Expansion
- ·Flow-intent queries now surface related code across files — searching "how are slash commands registered and executed" correctly returns both registration-side code and execution-side code
- ·Query classifier detects flow-intent queries and enables graph expansion, following call edges between files to find related code that pure semantic search misses
- ·Reranker filters out false positives like unrelated files that happen to share a filename keyword
April 3, 2026
Retrieval
Smarter Query Understanding
- ·Search queries now understand domain synonyms — searching "how does authentication work" finds functions like verifyToken, checkAuth, and loginUser even if they never mention the word "authentication"
- ·The engine detects what kind of query you're running and adjusts its strategy. Identifier searches lean on exact keyword matching, abstract questions lean on semantic understanding
- ·Queries asking "where is X" now return the actual file alongside individual functions instead of dropping file-level results
- ·Reranking prioritizes functions that directly implement the queried feature over generic utilities, formatters, loggers, and trivial wrappers
Quality
Chunk Naming & Extraction Fixes
- ·Auto-generated code chunks now receive descriptive, context-aware names instead of generic labels like block_1 or handler_2
- ·Fixed duplicate node extraction — inner functions inside large components were being indexed as standalone symbols, causing the parent's logic to get dropped during dedup
- ·Fixed double-extraction of exported functions that were being indexed twice
- ·Named sub-chunks no longer incorrectly removed as "redundant" — only auto-generated block/chunk labels are filtered
- ·Reranker now sees the actual matched code region instead of the first few boilerplate lines of large promoted functions
- ·Fixed HNSW vector index key mapping that could return the wrong node
March 31, 2026
Retrieval
Critical Keyword Search Fix
- ·Fixed a critical bug where keyword search was completely dead for all repos — every query was running on semantic similarity alone with zero keyword/BM25 signal
- ·Root cause: the full-text index was never built during indexing, only on a close() call that never happened
- ·All existing repos have been rebuilt with working keyword indexes
- ·Query terms now match against filenames — searching "pricing" boosts Pricing.tsx even in natural language queries
- ·Stale or schema-mismatched indexes are now auto-detected and rebuilt on first search instead of silently failing
MCP
Automatic Repository Detection
- ·optiq_search now automatically detects the current repository instead of requiring the agent to specify it on every query
March 30, 2026
Dashboard
Usage Page Improvements
- ·7D/30D/90D period selectors now work correctly
- ·Hover tooltips on chart bars show query count and date
- ·Removed excess spacing between chart header and bars
- ·Stats below chart (Total, Average/day, Peak) update with selected period
MCP
optiq_repos Tool Rework
- ·No longer dumps all repos to the agent
- ·Takes an optional path param, defaults to current working directory
- ·Checks if that specific directory is indexed and returns its status
- ·If not indexed, tells the agent to run optiq_index instead