Semantiqv0.5.2
01Accueil
02Fonctionnalités
03Docs
04Blog
05Changelog
06Support
Commencer
  1. Home
  2. Changelog
Mises à jour

Changelog

Toutes les versions, fonctionnalités et corrections.

Dernière
v0.8.0
Versions
26
Modifications
185
Release History
26 versions
0.8.0Current8 mai 2026

Semantic Search Pipeline Repair

Bugfix release that repairs the semantic search pipeline. Six of seven natural-language queries returned zero results on real codebases due to accumulated orphan rows in the sqlite-vec virtual table. v4 → v5 migration runs automatically on first start and cleans existing residue.

Correction`chunks_vec` orphan rows — sqlite-vec virtual tables don't honor `FK ON DELETE CASCADE`, so every prior `INSERT INTO chunks` (after the delete-then-reinsert pattern in `insert_chunks`) left the previous chunk's vector behind. Over many reindex cycles those orphans dominated the KNN top-k and silently broke semantic search. All delete paths (`insert_chunks`, `delete_file`, `clear_all_data`, `check_and_prepare_for_reindex`) now purge `chunks_vec` in the same transaction. New integration test `vec_invariant` pins the contract
CorrectionGhost files with absolute paths — the legacy `path.strip_prefix(root).unwrap_or(path)` pattern silently fell through to absolute paths when `strip_prefix` failed, leaving duplicate rows in `files`. Replaced everywhere with `paths::to_relative_string`, which warns instead of failing silently
Correction`pub use` re-exports not extracted — `parse_rust_use_path` stripped `"use "` first, so any line starting with `pub` (or `pub(crate)`, `pub(super)`, `pub(in path)`) returned `None`. This broke `semantiq_deps` on every Rust `lib.rs`, since those files are mostly re-exports
Correction`symbol_kind` missing in semantic search results — `search_semantic` hard-coded `symbol_kind: None`, so output showed `Symbol: foo (unknown)` even though the kind was already in the database. Now batch-fetched per file and propagated
FonctionnalitéSchema v4 → v5 migration — purges existing `chunks_vec` orphans and ghost rows with absolute paths (POSIX, Windows drive paths, UNC). Wrapped in a single transaction for crash safety. Visible at startup as e.g. `Migrating schema v4 -> v5 (a): purged N orphan rows`
Fonctionnalité`IndexStore::count_orphan_chunk_vectors()` for diagnostics — the `RetrievalEngine` calls it at startup and emits a `WARN` if the invariant is broken
AméliorationNew `paths::to_relative_string` helper in `semantiq-index` — tries a literal `strip_prefix` first and only canonicalizes on the fallback path, keeping the hot indexing loop free of realpath syscalls
Amélioration~6× lower latency on natural-language queries via the MCP server now that the KNN top-k surfaces real chunks instead of zombie zero-vectors (28–93 ms vs 78–123 ms previously, on the reference repo)
0.7.07 mai 2026

Tree-sitter Query Extraction

BREAKING — all 18 languages migrated to tree-sitter query-based symbol extraction. PARSER_VERSION bumped to 6, triggering a full automatic reindex.

Breaking`PARSER_VERSION` 5 → 6 — triggers a full automatic reindex on next startup
BreakingMigrated all 18 languages to tree-sitter query extraction (`crates/semantiq-parser/queries/<lang>/tags.scm`); legacy recursive AST traversal kept internally as `pub(crate) extract_legacy` to serve as a test oracle
BreakingImports — extracted `name` is now the short name (last path segment) instead of the full declaration text. Rust `use std::collections::HashMap;` → `name = "HashMap"`; Python `import os` → `name = "os"`; PHP `use Foo\Bar;` → `name = "Bar"`
BreakingKotlin — `interface Greeter` is now captured as `Interface` (was `Class`); `enum class Status` is now `Enum` (was `Class`); methods in `class_body` are now `Method` (was `Function`); Kotlin imports (`import x.y.z`) are now captured
BreakingC++ — inline methods (`class C { int add(int) {} }`) are now extracted as `Method` with the parent class. Previously not captured. Destructors (`~C`) and operators (`operator+`) are also captured
BreakingElixir — `defmodule X` is `Module` (was `Function`); `def`, `defp`, `defmacro`, `defmacrop` are all captured; the `parent` of `def` reflects the enclosing `defmodule`; nested modules use `.` as separator (`MyApp.Outer.Inner`) instead of `::`
BreakingPython — decorated methods (`@staticmethod def m`) are no longer duplicated as `Method` + `Function`; a single `Method` is extracted
BreakingHTML — only top-level elements (direct children of `document`) are extracted, avoiding index explosion on real HTML where every nested `<div>`/`<p>` previously became a symbol
BreakingJSON / YAML / TOML — nested keys now carry a dot-separated `parent` (`a.b.c`); previously `parent = None` for all
BreakingRust — `impl_item` is no longer extracted as a spurious `Class`
Amélioration`QuerySymbolExtractor::new()` now panics if a `.scm` query fails to compile, with the full list of errors. Previously: silent `tracing::warn!` with hidden fallback to the legacy extractor
AméliorationRemoved the duplicated `QuerySymbolExtractor` instance in `LanguageSupport`; a single source of truth via the global `OnceLock`
0.6.24 mai 2026

Security Patches

rustls-webpki CVE fixes, dependency bumps, and a test module refactor in semantiq-mcp.

Correction[HIGH] Bumped `rustls-webpki` 0.103.9 → 0.103.13 to fix four CVEs (RUSTSEC-2026-0049, -0098, -0099, -0104)
Correction[HIGH] RUSTSEC-2026-0049 — CRLs not considered authoritative by Distribution Point due to faulty matching logic
Correction[HIGH] RUSTSEC-2026-0098 — Name constraints for URI names were incorrectly accepted
Correction[HIGH] RUSTSEC-2026-0099 — Name constraints accepted for certificates asserting a wildcard name
Correction[HIGH] RUSTSEC-2026-0104 — Reachable panic in certificate revocation list parsing
Correction[LOW] Bumped `rand` 0.9.2 → 0.9.4 (RUSTSEC-2026-0097, unsoundness with custom logger)
CorrectionBumped `openssl` 0.10.75 → 0.10.79
AméliorationSplit `crates/semantiq-mcp/src/server.rs` test module into per-tool files (`server/tests/{search,find_refs,deps,explain,server_handler,edge_cases}.rs`); `server.rs` shrinks from 931 to 479 lines, no behavior change
0.6.14 mai 2026

Migration Fixes & Internal Cleanup

Schema migration persistence fixes, regression tests for import edge cases, and visibility tightening across crates.

CorrectionPersist `SCHEMA_VERSION` in metadata after migration so future migrations can correctly detect that v3 → v4 was applied
Correction`IndexStore::open_in_memory` now runs `migrate_schema`, so test fixtures exercise the migration path
CorrectionAdded regression tests for path-traversal-escaping imports and Python 3-dot relative imports (`from ...top`)
AméliorationExtracted `PYTHON_STD_MODULES` from `imports.rs` (1148 → 929 lines) into a dedicated `python_stdlib` module
AméliorationConverted 10 `unused_self` methods to associated functions in `ChunkExtractor`, `QueryExpander`, `RetrievalEngine`, and `ThresholdCalibrator`
AméliorationTightened visibility of internal items in `semantiq` and `semantiq-retrieval` from `pub` to `pub(crate)` / `pub(super)`
AméliorationReplaced wildcard `use super::types::*` in HTTP routes with explicit imports
Amélioration`resolve_python_import` now returns `Vec<PathBuf>` instead of always-`Some` `Option<Vec<PathBuf>>`
0.6.018 févr. 2026

HTTP API Server & Local Import Resolution

New HTTP API server alternative to MCP stdio, local import path resolution, Python stdlib detection, and symbol parent tracking.

FonctionnalitéHTTP API server — Alternative to MCP stdio with `--http-port`, endpoints: `/health`, `/stats`, `/search`, `/find-refs`, `/deps`, `/explain`
FonctionnalitéHTTP middleware — 1MB body limit, 50 concurrent requests, CORS configurable via `--cors-origin`
FonctionnalitéLocal import resolution — Resolution of local import paths to actual files on disk (JS/TS, Python, Rust, Go)
Fonctionnalité`resolved_path` column — Dependencies now store the resolved path, improving `find_refs` accuracy
FonctionnalitéPython stdlib detection — Accurate classification of Python standard vs external imports (200+ modules, binary search)
FonctionnalitéSymbol parent tracking — Symbols now include their parent (e.g., method → struct/class)
FonctionnalitéDockerfile — Multi-stage Docker image for deployment (Railway-ready)
AméliorationSchema migration v3→v4 — Automatic incremental migration (adds `resolved_path` column, no reindex required)
AméliorationAuto-indexer and CLI `index` command use local import resolution
CorrectionCorrect git clone URL in Dockerfile
CorrectionResolve clippy `module_inception` warning in HTTP tests
CorrectionBump Rust version in Dockerfile to support edition 2024 and let-chains
0.5.210 févr. 2026

Security Hardening

Major security release with fixes for ReDoS, path traversal, and input validation vulnerabilities across the codebase.

Correction[HIGH] Fixed ReDoS vulnerability - user input is now escaped with `regex::escape()` in `TextSearcher::search()` before regex compilation
Correction[HIGH] Updated `bytes` crate 1.11.0 → 1.11.1 to fix integer overflow in `BytesMut::reserve` (RUSTSEC-2026-0007)
Correction[HIGH] Text search walker now uses `hidden(true)` and `should_exclude_entry` filtering, preventing reads from `.env`, `.git/`, and other sensitive directories
Correction[MEDIUM] Fixed path traversal in `read_file_lines()` - paths are now canonicalized and verified to stay within the project root
Correction[MEDIUM] Added input validation (empty, length ≤ 500, limit ≤ 1000) to `semantiq_find_refs`, `semantiq_explain`, and `semantiq_deps` MCP handlers
Correction[MEDIUM] Added path traversal rejection (`..`) in `semantiq_deps` file path parameter
Correction[MEDIUM] `resolve_project_root()` now canonicalizes paths to normalize `..` components and symlinks
Correction[LOW] FTS5 query escaping now strips null bytes and control characters
Correction[LOW] Query expansion limited to 10 terms to prevent amplification attacks
Correction[LOW] MCP error messages sanitized to avoid leaking internal file paths
Correction[LOW] Version check HTTP response limited to 10KB to prevent memory exhaustion
Correction[LOW] Poisoned mutex recovery in `DistanceCollector` now logs warnings instead of silently continuing
0.5.031 janv. 2026

Adaptive ML Thresholds

Automatic calibration of semantic search thresholds per programming language, new CLI commands, and codebase refactoring.

FonctionnalitéAdaptive ML thresholds - automatic calibration of semantic search thresholds per programming language
FonctionnalitéBootstrap mode - collects 100% of distance observations until 500 samples
FonctionnalitéProduction mode - switches to 10% sampling after bootstrap completes
FonctionnalitéAuto-calibration - triggers automatically when bootstrap completes
FonctionnalitéPercentile-based thresholds - uses p90 for max_distance, p10 for min_similarity
FonctionnalitéPer-language calibration with fallback cascade (language → global → defaults)
FonctionnalitéNew `calibrate` CLI command - manual threshold calibration with `--dry-run` option
FonctionnalitéML stats in `stats` command - shows bootstrap progress, observations per language, calibrated thresholds
FonctionnalitéNew database tables - `distance_observations` and `threshold_calibration` for ML data
FonctionnalitéCI workflows for `dev` branch - tests, Clippy, format checks, and multi-platform builds
AméliorationRefactored `store.rs` (2108 lines → 8 modules) - better code organization with dedicated modules for files, symbols, chunks, dependencies, observations, calibrations, and tests
AméliorationRefactored `engine.rs` (1049 lines → 5 modules) - cleaner architecture with dedicated modules for search, threshold, analysis, and tests
BreakingSchema version bumped to 3 - triggers automatic reindex on upgrade
0.4.028 janv. 2026

JSON Logging & MCP Tests

Structured JSON logging throughout the codebase, MCP test coverage, and CI/security workflows.

FonctionnalitéJSON logging support - structured logging throughout the codebase
FonctionnalitéJSON logging by default for `serve` command - better integration with log aggregators
FonctionnalitéMCP tests - test coverage for MCP server functionality
FonctionnalitéCI and security workflows - automated testing and security scanning
Amélioration`init-cursor` command is now language-agnostic - works with any project type
AméliorationUpdated `deny.toml` to v2 schema
0.3.420 janv. 2026

macOS Intel Support & Optional ONNX

Restored macOS Intel (x86_64) support and made ONNX feature optional for broader platform compatibility.

FonctionnalitémacOS Intel (x86_64-apple-darwin) support restored - binary now available for Intel Macs
FonctionnalitéCI build workflow - new build.yml for testing builds on push/PR without publishing
AméliorationONNX feature now optional - `--features onnx` required on supported platforms (Apple Silicon, Linux, Windows)
AméliorationIntel Mac builds use StubEmbeddingModel (no ONNX) due to missing prebuilt binaries
AméliorationUpdated CI to use macos-15 runner for Intel Mac cross-compilation
0.3.319 janv. 2026

Search Filtering Options

New search filtering capabilities for semantiq_search with min_score, file_type, and symbol_kind parameters.

Fonctionnalité`min_score` parameter for `semantiq_search` - minimum relevance score threshold (0.0-1.0, default: 0.35)
Fonctionnalité`file_type` parameter for `semantiq_search` - filter results by file extension
Fonctionnalité`symbol_kind` parameter for `semantiq_search` - filter by symbol type (function, class, etc.)
FonctionnalitéCLI flags `--min-score`, `--file-type`, `--symbol-kind` for `semantiq search` command
FonctionnalitéSmart default exclusions - automatically excludes non-code files from search
Fonctionnalité`SearchOptions` struct in `semantiq-retrieval` with builder pattern for flexible configuration
0.3.219 janv. 2026

Gitignore Support in init-cursor

The init-cursor command now automatically handles .gitignore entries for Semantiq database files.

Fonctionnalité`.gitignore` support in `init-cursor` - automatically adds Semantiq database entries
FonctionnalitéCreates `.gitignore` if not present
FonctionnalitéUpdates existing `.gitignore` preserving original content
FonctionnalitéSkips if entries already present (no duplication)
Fonctionnalité3 new tests for `.gitignore` handling in `init_cursor.rs`
0.3.119 janv. 2026

Cursor/VS Code Init Command

New init-cursor command for automatic Cursor/VS Code configuration setup, plus centralized CLI utilities.

FonctionnalitéNew `init-cursor` command for Cursor/VS Code configuration setup
FonctionnalitéCreates `.cursor/rules/project.mdc` (general project guidelines)
FonctionnalitéCreates `.cursor/rules/semantiq.mdc` (Semantiq MCP tools usage)
FonctionnalitéCreates `.cursor/mcp.json` (MCP server configuration)
FonctionnalitéCreates `.cursorignore` (indexing exclusions)
FonctionnalitéCreates `.vscode/` config (settings, tasks, launch, extensions)
FonctionnalitéPreserves existing files (skip instead of overwrite)
AméliorationCentralized `DEFAULT_DB_NAME` and path resolution utilities in `common.rs`
AméliorationRefactored all CLI commands to use shared utilities
AméliorationCLI description now generic ("for a project" instead of "for a Rust project")
Fonctionnalité7 new unit tests for `common.rs` and `init_cursor.rs`
0.3.019 janv. 2026

Vector Search & Auto-Indexing

sqlite-vec integration for semantic vector search, automatic initial indexing, and 6 new languages.

Fonctionnalitésqlite-vec integration for vector similarity search (384-dim MiniLM-L6-v2 embeddings)
FonctionnalitéAutomatic initial indexing when MCP server starts (no more manual `semantiq index` required)
Fonctionnalité6 new languages: HTML, JSON, YAML, TOML, Bash, Elixir (total: 15 languages)
Fonctionnalitéripgrep integration for fast regex text search via `TextSearcher`
FonctionnalitéNew `search_similar_chunks()` method for semantic vector search
FonctionnalitéNew `InitialIndexResult` struct for tracking initial indexing progress
Correction"Imported by" always empty in `semantiq_deps` - rewrote `get_dependents()` to match JS/TS import paths
CorrectionImport path resolution now handles basename matching with multiple extensions
AméliorationSchema version bumped to 2 (triggers automatic reindex)
AméliorationAdded `chunks_vec` virtual table for sqlite-vec embeddings
Amélioration`start_auto_indexer()` now runs `initial_index()` before watching for changes
AméliorationImproved dependency matching with multiple LIKE patterns and post-filtering
0.2.919 janv. 2026

Arrow Function Indexing

Improved TypeScript/JavaScript function detection - arrow functions and function expressions are now correctly classified as functions.

CorrectionArrow functions (const fn = () => {}) now correctly indexed as function instead of variable
CorrectionFunction expressions (const fn = function() {}) now correctly indexed as function
AméliorationAdded is_function_variable() helper to detect functions assigned to variables
AméliorationAdded arrow_function and lexical_declaration to chunk boundaries for TypeScript/JavaScript
AméliorationBumped PARSER_VERSION to 3 (triggers automatic reindex)
0.2.818 janv. 2026

Security Hardening

Critical security improvements including checksum verification, path traversal protection, and memory exhaustion prevention.

CorrectionCRITICAL: Added SHA-256 checksum verification for ONNX model downloads (TOFU + hardcoded support)
CorrectionCRITICAL: Added path traversal protection with canonicalization in validate_path()
CorrectionHIGH: Added MAX_AST_DEPTH=500 recursion limit in parser to prevent stack overflow attacks
CorrectionHIGH: Added safe_slice() function to prevent panic on invalid byte indices
CorrectionHIGH: Changed model directory fallback from "." to system temp dir (prevents writes to unexpected locations)
CorrectionHIGH: Added pagination for get_chunks_with_embeddings() to prevent memory exhaustion DoS
CorrectionHIGH: Reduced download size limit from 500MB to 100MB
CorrectionHIGH: Added restrictive file permissions (0600 on Unix) for downloaded models and database
CorrectionMEDIUM: Added explicit symlink handling (follow_links(false)) to prevent escape from project root
AméliorationRefactored download_file() with connection timeouts (30s connect, 5min global)
AméliorationImproved checksum verification with detailed warning messages
0.2.718 janv. 2026

Update Notifications

Automatic version update notifications at server startup with 24h local caching.

FonctionnalitéAutomatic version update notification at server startup
FonctionnalitéNon-blocking background check using GitHub Releases API
FonctionnalitéLocal cache (24h) to avoid repeated API calls
Fonctionnalité--no-update-check CLI flag to disable update notifications
FonctionnalitéSEMANTIQ_UPDATE_CHECK environment variable for configuration
AméliorationUpdated author info to keyldzn
0.2.618 janv. 2026

Automatic Reindexation

Automatic reindexation when parser version changes, plus improved TypeScript/JavaScript support.

FonctionnalitéAutomatic reindexation when parser version changes (no more manual --force needed)
FonctionnalitéPARSER_VERSION constant to track parser logic changes
FonctionnalitéSupport for const/let variable extraction in TypeScript/JavaScript
FonctionnalitéGitHub Sponsors funding configuration
AméliorationVersion detection uses atomic transactions to prevent race conditions
AméliorationDocumentation updated with known limitations and setup guides
CorrectionFilter out verbose ONNX Runtime logs during indexing
0.2.418 janv. 2026

ONNX Stability Fixes

Critical fixes for ONNX model download and inference, plus improved file exclusion handling.

CorrectionModel download failing in async Tokio context (replaced reqwest::blocking with ureq)
CorrectionDownload size limit too small for 90MB ONNX model (increased to 200MB)
CorrectionONNX inference crash due to missing token_type_ids input
CorrectionEmbeddings not generated during semantiq index command
Améliorationsemantiq index now generates embeddings for all chunks
AméliorationCentralized file exclusion logic into exclusions.rs module
AméliorationAuto-indexer and FileWatcher now use shared exclusion patterns
0.2.318 janv. 2026

Semantic Search with ONNX

Semantic code search via ONNX embeddings, automatic model download, and cosine similarity matching.

FonctionnalitéONNX embedding model integration for semantic search
FonctionnalitéAutomatic model download on first run
FonctionnalitéCosine similarity search for vector matching
FonctionnalitéAlternative installation via cargo install --git
FonctionnalitéCHANGELOG.md for version history
AméliorationEmbeddings now generated automatically during auto-indexing
AméliorationSwitch from OpenSSL to rustls for better cross-compilation support
AméliorationUse ort download-binaries for automatic ONNX Runtime provisioning
BreakingRemoved macOS Intel (x86_64-apple-darwin) binary - ONNX Runtime does not support this target
0.2.217 janv. 2026

CLAUDE.md Improvements

Updated CLAUDE.md template to prioritize Semantiq MCP tools.

AméliorationImproved CLAUDE.md template to prioritize Semantiq tools over grep/Glob
0.2.117 janv. 2026

Performance & Security Fixes

Critical fixes for error handling, security, and query performance.

CorrectionError handling with proper mutex propagation
CorrectionSQL injection vulnerability via LIKE escaping
CorrectionUTF-8 safety in tree-sitter text extraction
CorrectionN+1 query pattern in get_stats() (4 queries → 1)
AméliorationShared single Arc<IndexStore> instead of 3 separate DB connections
AméliorationImproved scoring algorithm with symbol type boosting
AméliorationResults limited to 500 to prevent memory issues
AméliorationAdded PRAGMA busy_timeout=5000 for concurrent access
0.2.017 janv. 2026

NPM Package Automation

Automatic npm package version synchronization from git tags.

FonctionnalitéAutomatic npm package version update from git tag
0.1.317 janv. 2026

Project Init Command

New init command for project setup with automatic configuration.

FonctionnalitéNew semantiq init command for easy project setup
FonctionnalitéAuto-creates .claude/settings.json, CLAUDE.md, updates .gitignore
FonctionnalitéRuns initial indexation automatically
0.1.217 janv. 2026

Auto-Indexing

Real-time file updates with automatic re-indexing on changes.

FonctionnalitéAuto-indexing for real-time file updates
FonctionnalitéFileWatcher integration with create/modify/delete events
FonctionnalitéBackground task with 2-second polling
0.1.117 janv. 2026

Documentation Update

Improved npm and project documentation.

Fonctionnaliténpm README documentation
AméliorationUpdated main README with correct npm package name
0.1.017 janv. 2026

Initial Release

First public release of Semantiq with core MCP functionality.

FonctionnalitéInitial release
FonctionnalitéMCP server with 4 tools: search, find_refs, deps, explain
FonctionnalitéSupport for 9 languages via tree-sitter
FonctionnalitéSQLite storage with FTS5 search
Semantiq

Serveur MCP écrit en Rust, parsing via Tree-sitter.

GitHub

Produit

  • Fonctionnalités
  • Documentation
  • Changelog

Ressources

  • Démarrage rapide
  • Référence CLI
  • Intégration MCP
  • Blog

Communauté

  • Support
  • GitHub
// 19 langages supportés
Rust
TypeScript
JavaScript
Python
Go
Java
C
C++
PHP
Ruby
C#
Kotlin
Scala
Bash
Elixir
HTML
JSON
YAML
TOML
© 2026 Semantiq.|v0.5.2|connecté
MIT·Construit avec Rust & Tree-sitter