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