0.1.6 - 2026-06-17
Release Notes
Added
-
Structured tracing-based logging facade — All diagnostics now flow through
tracing
to stderr (preserving clean stdout for JSON-RPC and CLI data). Logs are leveled (debug,
info,warn,error) and filterable viaRUST_LOG. New global flags:-v, --verbose(repeatable;-vvfor trace level)--log-format pretty|json(defaultpretty; JSON for machine consumption)--timing— opt-in per-operation timing spans (index/embed/query/sync durations, e.g.
INFO sync{rev=HEAD~1}: … in 1.8s). Off by default so routine runs stay quiet; the
end-of-commanddone … in Nssummary still prints atinforegardless.--silentnow maps to a quiet log filter (errorlevel), forces--timingoff, and
still suppresses CLI output
Default behavior:
infolevel, pretty format, no per-op timing, stderr.
RUST_LOG=semanticastindexer=debugoverrides all flags (power-user priority). Themcp
subcommand now keeps stdout clean of diagnostic noise, enabling write-mode (--allow-write)
with strict stdio clients (e.g. Grok). -
logging:config block — Set logginglevel/format/timingdefaults project-wide in
sai-cfg.yml. It is the lowest-precedence tier (RUST_LOGand the CLI flags override it), and
is read silently before the subscriber is installed so a missing/malformed file falls back to the
built-in defaults without breaking the stdout boundary. Primarily for the MCP server, whose
client launches the binary with a fixed command/env — raise its verbosity without per-client edits.
initnow renders a documented (commented)logging:block in generated configs. -
-V, --versionflag — print the binary version (was previously unsupported). -
updateskips a no-op reinstall —updatenow checks the latest GitHub release and exits
early ("already the latest release") when the running binary already matches, instead of always
re-running the installer. Falls back to a plain reinstall if the version check fails (offline).
Fixed
- MCP
--allow-writestdout corruption — Write-mode MCP was broken for strict JSON-RPC
clients (e.g. Grok) because backend diagnostics (e.g. "using existing collection") were printed
to stdout, corrupting the JSON-RPC stream. All such diagnostics now route to stderr via
tracing. In-sessionsai_refreshandsai_syncare now usable with strict-client MCP
integrations. - Git diagnostics leaking to stderr — the dirty-state check (
git diff --quiet) inherited the
process stdio, so running outside a git repo (or any git error) leaked raw git text to stderr.
Its output is now silenced; diagnostics come only from thetracingsubscriber. - DuckDB VSS extension load: origin conflict & install race — Loading the VSS extension could
hard-fail with "extension 'vss' is already installed but the origin is different" whenvsswas
already present from the default repo (extensions.duckdb.org) and the fallback tried
INSTALL vss FROM community.load_vssnow re-downloads from the default repo via
FORCE INSTALL vss(no origin conflict) before the community fallback, and serializes the
INSTALL attempts process-wide so parallel connections/tests sharing DuckDB's per-machine
extension cache no longer race (intermittent failures on Windows CI runners).
Install semanticastindexer 0.1.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/maadgrom/semanticastindexer/releases/download/v0.1.6/semanticastindexer-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/maadgrom/semanticastindexer/releases/download/v0.1.6/semanticastindexer-installer.ps1 | iex"Download semanticastindexer 0.1.6
| File | Platform | Checksum |
|---|---|---|
| semanticastindexer-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| semanticastindexer-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
| semanticastindexer-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| semanticastindexer-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| semanticastindexer-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |