CodeNavi — Release Notes¶
Customer-visible changes per release of CodeNavi — the self-hosted, local-first semantic code search and intelligence server for AI coding agents. Every install includes a built-in security scanner (secret and PII redaction and prompt-injection defense across code, documents and crawled pages), a cosign-signed release channel with a shipped SBOM, and evidence-linked compliance reports (OWASP ASVS / Top 10 / EU Cyber Resilience Act). For support, see the vulnerability disclosure policy (security contact) and the setup guide (install & operations).
Entries since 1.3.3 open with their update impact — download size, whether a reindex is needed, and any hardware-requirement change. How updates apply, typical sizes, and the rollback path: Updating CodeNavi. Verifying a release you pulled (cosign signature, SBOM): Security model.
1.3.51 — 2026-10-12¶
Update impact: about 28 MB for both the standard and the AMD image — three code layers; applied in one container restart; no reindex needed; no hardware or driver change. Servers with two or more codebases: read the first item under Changed. The Windows installer and Claude Code plugin changes reach you on a fresh install or by re-running the install command over the install folder, not through an in-place update.
Added¶
- One-step cloud deploys for AWS and Google Cloud. A CloudFormation template
(
codenavi-ec2.yaml) and a Google Compute Engine startup script (codenavi-gce-startup.sh) create a GPU VM, install CodeNavi and index your repository on first boot. Both are on the Cloud GPU page with measured first-boot times from one real run each. - Claude Code plugin 0.5.20 (bundled): opt-in block mode, and the codebase named at
session start. With
CODENAVI_HOOK_GREP=blockin the environment, a tree grep the index already answers is declined and the agent is pointed at the matching CodeNavi tool and hits; the default stays the hint. On a server with several codebases the session-start message names the codebase the repo is indexed as, so the agent passescodebase=from its first call.
Changed¶
- On a server with several codebases, a call without
codebase=goes todefault_codebase. Setdefault_codebaseindata/settings.json(no restart needed) or passcodebase=<name>on each call. With neither,read_file,grep_search,list_directoryand the call-graph tools now return a message listing the codebase names;semantic_search,file_search,symbol_searchandfind_referenceskeep searching every codebase. Everygrep_searchandread_fileresult header names the codebase it ran against. Single-codebase servers are unaffected. - Several agents can search at once. Semantic and file search no longer hold one lock for
the whole call; only the two GPU phases (encode, rerank) take turns. Measured with four
clients on the vendor box: 10% more searches per second and a 31% lower median latency,
with a longer tail, so keep one or two semantic searches in flight.
read_file,grep_search,symbol_searchandfind_referencesnever wait on a search and are safe to run in parallel. The connect wizard's agent-instructions block and the plugin skills say the same. - Windows installs cache the update layers from the downloaded archive.
setup.ps1primes the update cache by extracting the archive it just installed from instead of exporting the image back out of Docker Desktop; on a slow disk that is several minutes less per install. - Bundled licence documents. The package's EULA is version 1.1 (effective 2026-10-11):
a Seat definition, automatic renewal with a full refund on request within 31 days of any
charge, and export-control and verification sections.
PRIVACY.mdnames the publisher (Cellpex LLC d/b/a CodeNavi) and states what the update check sends;MODEL-LICENSE.mdpoints to the EULA.
1.3.50 — 2026-10-09 (also covers 1.3.49)¶
Update impact: about 251 MB for both the standard and the AMD image — the Python base layers changed (no model change); applied in one container restart; no reindex needed; no hardware or driver change. The faster-update change below reaches you on a fresh install or by re-running the install command over the install folder, not through an in-place update.
- Python inside the image is updated to 3.12.15.1 Advisory
CN-SA-2026-006 — Critical (upstream CVE). Python 3.12.14
could crash, or use freed memory, in a TLS server whose
sni_callbackswaps the socket's context. CodeNavi serves plain HTTP and nothing in the image sets ansni_callback, so the flaw was not reachable; the image no longer carries it. The same update brings Debian's security fixes for OpenSSL, liblzma and PCRE2. - A Personal license serves up to 2 codebases. If more are configured, CodeNavi indexes
and searches the first 2 listed in
CODEBASE_CONFIG, and says which ones it left out: in the startup log, inlist_codebases, and when you reindex or connect to one of them. To choose which 2, reorderCODEBASE_CONFIG; for more codebases, move to Professional. Professional, Corporate and trial licenses are unchanged. - Updates load only what changed.
update.shandupdate.ps1now load just the image layers your container engine does not already hold, instead of the whole image, and check each download once instead of twice. The difference is largest on Docker Desktop for Windows, which unpacked the full image on every update.
1.3.48 — 2026-10-06 (also covers 1.3.47)¶
Update impact: ~27 MB download (code layers only) — applied in one container restart;
no reindex needed; no hardware or driver change. The installer and command-line changes
below reach you on a fresh install or by re-running the install command over the install
folder, not through an in-place update. 1.3.48 refreshed only the installer, so /health
keeps reporting 1.3.47.
Changed¶
- Podman installs start again on their own after a reboot. The installer now turns on podman's
restart service and runs CodeNavi with
restart: always, which every podman version honours. If you stop CodeNavi by hand withpodman stop, it starts again at the next boot. Existing installs pick this up when you re-run the installer over the install folder.
Fixed¶
- A power cut during indexing no longer blocks the next reindex. CodeNavi now saves its scan record in a way that survives an interrupted write, so indexing picks up normally after the machine comes back.
./codenaviand./reindex.shwork on Podman-only machines. On hosts that run Podman without adockercommand (the usual Fedora / RHEL setup), both now reach the CodeNavi container instead of reporting it as not running../reindex.sh --helpshows how to use it. A mistyped option now stops with an error that names it, instead of starting a reindex of every codebase.- Re-running the installer on an AMD machine keeps the AMD build. If the machine also held the standard image, a re-run could pick that one and then stop at the GPU check.
- A second install never shares a port with another one. The installer now treats the ports of every other CodeNavi install on the machine as taken, even while that install is stopped, and names it in the warning. Re-running the installer keeps your install's port and warns if another install is set to the same one.
- A new install next to an older, updated one starts on the current release. The installer's update step now checks the version that will actually start, so it applies the latest release instead of starting the older bundled one.
1.3.46 — 2026-10-05¶
Update impact: 6.0 GB for the standard image and 9.8 GB for the AMD image — the Python-library layer changed (no model or operating-system change); applied in one container restart; no full reindex needed — your next incremental reindex adds any compiled JavaScript files described under Fixed; no hardware or driver change.
Security¶
- The
sentence-transformersandPyJWTlibraries inside the image are updated.14 Advisory CN-SA-2026-005 — Critical (upstream CVEs). The earliersentence-transformerscould run Python files from a local model folder even with model code switched off; this affects you only if you setCODE_EMBEDDING_TRUST_REMOTE_CODE=falseand load an embedding model from a folder others can write to. The bundled models are not affected. CodeNavi does not use the affectedPyJWTcode path.
Added¶
- Chat helps plan changes, not only explain existing code. Ask "how could we add X?" and Chat proposes steps tied to the files it found in your codebase. Statements about your code stay cited to those files, and assumptions are labelled as assumptions.
- Long chat messages find the code they build on. When you paste a spec or a long description (300 characters or more), Chat also runs up to three extra searches aimed at the existing code the change touches, in addition to the search for your message.
- The Chat screen explains how it works. A "How this chat works" note under the input box covers what each question searches, how your model choice sets answer quality, and when a coding agent is the better tool.
Changed¶
- Wiki pages mark names they could not verify. After a page is compiled, every package, file path and symbol name it mentions is checked against its source documents and your code. A name found in neither is marked (unverified) in the text and listed above the page's Sources, so you and your agents can tell checked facts from guesses.
Fixed¶
- Compiled JavaScript with an inline source map is indexed. Readable
.js/.tsfiles that end in a//# sourceMappingURL=data:line are now searchable; the embedded map is never stored in the index. Genuinely minified files are still skipped. - A reindex keeps your index when a codebase folder goes missing or empty. If the
folder is gone, empty or no longer reachable through its bind mount, the reindex stops,
leaves your existing index and call graph as they were, and tells you the fix
(
docker compose up -d --force-recreate)./healthshows the problem per codebase. - The auto-restart recipe in Troubleshooting keeps retrying. The
codenavi.serviceexample now setsStartLimitIntervalSec=0under[Unit], where systemd applies it. If you installed the earlier example, copy the updated unit.
1.3.45 — 2026-09-29¶
Update impact: ~27 MB download (code layers only) — applied in one container restart; no full reindex needed — the call graph rebuilds itself once on your next incremental reindex; no hardware or driver change. The updater change below reaches you on a fresh install or by re-running the install command over the install folder, not through an update.
- The updater refuses to install an older release.13 Hardening — no advisory.
update.shandupdate.ps1compare the signed version of an offered update with the version you run, and refuse one that is older. If your CodeNavi contact asks you to roll back to an earlier release, run./update.sh --allow-downgrade(Windows:update.ps1 -AllowDowngrade). - CodeNavi stays responsive while a search runs. Health checks, the web UI, file reads and other agents get their answers while a search is in progress. Searches from several agents take turns on the GPU; one that waits more than 15 seconds returns a "busy" answer the agent can retry, instead of the client timing out.
- The call graph sees more of your code.
find_callers,impact_analysisandsymbol_searchnow name each shell-script function; before, every call in a script counted as coming from the file itself. Java and C# methods were sometimes named after their return type (User find()showed up asUser); they now use the method name. A file with a construct the parser cannot read no longer drops out of the call graph: everything around it is kept, and the coverage note on call-graph results tells you which files had such syntax. The call graph rebuilds itself once on your next reindex. Search-result chunk names update as files change, or all at once with a full reindex.
1.3.44 — 2026-09-28¶
Update impact: 6.0 GB for the standard image and 9.8 GB for the AMD image — the Python-library layer changed (no model or operating-system change); applied in one container restart; no full reindex needed — your next incremental reindex re-checks each codebase once against the updated scanner rules and keeps its search vectors (about a minute for a 30,000-chunk codebase); no hardware or driver change.
Security¶
- The
anyiolibrary inside the image is updated to 4.14.2.15 Advisory CN-SA-2026-004 — Critical (upstream CVE). The previous version could accept a spoofed TLS certificate for an internationalized (non-ASCII) host name. In CodeNavi that path is used only by the opt-in web crawler; host names written in plain ASCII were never affected. - The scanner now marks text written to steer an AI agent.12 Hardening — no advisory.
Four new rules recognise comments, strings and doc passages that address an AI agent and try
to redirect it: "forget all previous tasks", "I want you to act as…", "agent: delete the
tests", "do not mention it". A match never blocks or hides anything: the passage stays
searchable and reaches your agent marked
flagged, so the agent treats it as untrusted content. On a public benchmark of prompt-injection texts these rules recognise 29%, against 2% before, with no false matches on its benign examples. Files already in your index are re-checked on the next incremental reindex.
Changed¶
- Scanner changes now reach files that are already indexed, without a full reindex. This covers rule updates in a release, rules you add or edit in your own rules file, scanner settings you change on the Security screen, and files you allowlist. The next incremental reindex re-checks every indexed file and keeps the existing search vectors, so no GPU work is repeated. On a 29,554-chunk codebase this takes about a minute and gives the same result as a full reindex. The first incremental reindex after this update re-checks each codebase once.
- Documentation that mentions curl, fetch or webhooks is no longer marked untrusted.
The scanner's two exfiltration checks for documents now look for what an exfiltration
actually needs: a curl or wget command that sends secrets out (keys under
~/.ssh,.env,.awsand the like), or a known data-collection endpoint such as webhook.site, an ngrok address or Burp Collaborator. Install one-liners, API examples and "configure a webhook" instructions reach your agent unmarked. If you edited either rule in your own rules file, your version is kept. Files already in your index are re-checked on the next incremental reindex. - The per-client request budget is now 200 requests per 10 seconds (was 60).
Every agent session on one machine shares a budget, and so does a whole team
behind a NAT or a reverse proxy on another host unless that proxy is listed in
THROTTLE_TRUSTED_PROXIES— the old number could refuse a busy team that no single agent had overloaded. A runaway loop is still cut off within seconds. If you had setTHROTTLE_MAX_REQUESTSyourself, your value is unchanged.
1.3.43 — 2026-09-17 (also covers 1.3.41–1.3.42)¶
Update impact: code-layer download only (no model or operating-system change);
applied in one container restart; no reindex needed — the new index fingerprint
(see Added) is recorded by your next reindex, until then /health reports it
unverified; no hardware or driver change. The installer, updater and Windows
GPU-overlay changes below reach you on a fresh install or by re-running the install
command over the install folder, not through an update; /health reports the image
version (1.3.41) on every package of this day.
Security¶
- Update downloads accept https only. Hardening — no advisory. The updater
refuses any download address that is not
https://(and any redirect away from it), and reports a file as verified only after its checksum has passed. - One client can no longer starve the others, and guessing the token has a
ceiling.8 Hardening — no advisory. Every request now passes a per-client budget — 60 requests
per 10 seconds per client by default — and every address that presents 20
different wrong tokens within a minute is refused for the rest of that minute
(a browser tab re-sending one stale token is not a guessing run and never
triggers this). A refused
request gets
429 Too Many Requestswith aRetry-Afterheader; well-behaved agents wait and continue./health,/.well-known/and the console's page files are never throttled, so the plugin's start-up check and the statusline keep working. The limits are settings (THROTTLE_*in the configuration reference); behind a reverse proxy on another machine, list that proxy inTHROTTLE_TRUSTED_PROXIESso your clients are told apart. The/metricsendpoint counts refusals. - The web console and connect wizard now send browser hardening headers.7
Hardening — no advisory.
Every page under
/uiand/connectcarries a Content-Security-Policy that allows only same-origin scripts and connections, refuses to be embedded in another site's frame, and tells browsers not to guess content types. Nothing changes for the MCP endpoint, the API or your agent. If you had wrapped the console in an iframe of your own, that stops working by design. - Every instance publishes its security contact. Hardening — no advisory.
GET /.well-known/security.txt(no token needed) returns the standard RFC 9116 file with the vulnerability reporting address and policy link, so anyone who finds a CodeNavi port knows where to report responsibly. - Fixed vulnerabilities now have a public advisory record. Hardening — no advisory. Every Security item on this page states its class — an advisory id with a CVSS 3.1 severity for a fixed vulnerability, or Hardening — no advisory for a control added where none was missing — and the advisories page carries one record per fixed vulnerability (affected versions, impact, severity, fix, action), back-filled to 1.3.15.
Added¶
- One command removes CodeNavi completely.10
./setup.sh --purge(Windows:setup.ps1 -Purge) shows what it is about to remove — container, image, model volume, index, data, logs, reports,.env,.update.conf— asks you to typepurge, and does it. Your repository is never touched, and the command refuses to run if the repository sits inside the install folder. It warns that the licence key goes with the data — copy it out first if you may reinstall. The folder and the editor plugin are left for you to delete; nothing else remains. -
The server checks its own index for corruption.9 Every reindex records a fingerprint of the index; the server compares it with what is on disk after it starts and every six hours, and reports
ok,mismatchorunverifiedper codebase underindex_integrityin/health(token required) and as acodenavi_index_integritygauge on/metrics. A mismatch names what differs and is a warning only — search keeps working, and a full reindex rebuilds and re-records. Until your first reindex on this version the field readsunverified; that is expected. Interval:INDEX_INTEGRITY_CHECK_INTERVAL. -
Behind a reverse proxy or tunnel, the server can name its public address. Set
CODENAVI_PUBLIC_URL(scheme, host, optional port) and the OAuth resource metadata and/health'smcp_endpointpoint at that origin instead oflocalhost, so a client with a missing or wrong token gets a clear auth error rather than a pointer to its own machine. Default unchanged; TLS stays with your proxy. See HTTPS behind a proxy. - Larger documentation sets compile the wiki in one pass. The default LLM-call
budget for a wiki compile (
WIKI_MAX_LLM_CALLS) is now 500, sized for corpora of ~150 documents; a value you set yourself is unchanged. - A Cyber Resilience Act pack for the compliance checker.
/codenavi:compliance cra-annex1reviews an indexed codebase against Annex I of Regulation (EU) 2024/2847: one evidence-linked rule per Part I product requirement, plus the Part II vulnerability-handling points that leave evidence in code (SBOM, security-fix release record, security testing, disclosure policy, signed updates). The report states on its face who the Regulation binds — installable and on-prem software in scope, pure SaaS usually not — and is an input to your Annex VII technical file, not a conformity assessment. Needs Claude plugin 0.5.12 or later, shipped in your package underplugins/claude/. - Ask whether a dependency CVE reaches your code. With the same plugin, a
question such as "are we exposed to CVE-2026-1234 in package X?" makes the agent
confirm the pinned version, find the import sites, walk your own callers of the
vulnerable function through the call graph, and size the fix — with the limits
stated: it sees your source, not excluded
vendor/ornode_modules/trees.
Fixed¶
- Windows:
CODENAVI_GPU_DEVICEnow picks the card on Docker Desktop. On a machine with more than one NVIDIA GPU, the index in.envis honoured (counted asnvidia-smi -Lprints it). Single-GPU installs are unchanged. - Rootless podman: the installer tells you up front when there is no systemd
user session — the one thing that makes the container fail to start after
an otherwise clean install — and prints the
loginctl enable-lingercommand with thesudoit needs. setup.sh --purgeacts only on the folder it is run from. Run a second time from a folder it has already emptied, it now reports nothing to remove instead of looking for an install next door. Windows was never affected.- Documented: CodeNavi missing after a reboot on Docker.11 A timing
race at boot can leave the container in state
Created— Docker gives up on it before it ever runs, and the restart policy does not retry that case. The troubleshooting page now shows how to confirm it (docker inspecterror ends in host containers internal IP address is empty), the one-line fix (docker compose up -d), and a small systemd unit that retries the start after every boot so it stays fixed. No software change; the compose file is unchanged. - Windows fresh installs complete on the first run. The installer's
runtime-volume preparation now finishes under Windows PowerShell 5.1. A fresh
install made from a 1.3.36–1.3.41 package that stops with
Cannot write to /app/datais repaired by re-runningsetup.ps1from this package over the same folder — the licence, index and settings are kept. Updates were never affected.
1.3.40 — 2026-09-14¶
Update impact: code-layer download only (no model or operating-system change); applied in one container restart; no reindex needed — one scanner rule was narrowed (see Changed), and lines it had already redacted in indexed files stay redacted until those files are next re-indexed; no hardware or driver change. The installer and updater changes below reach you on a fresh install or by re-running the install command over the install folder, not through an update.
Security¶
- The container image ships without setuid binaries and with its model loaders
pinned offline.2 Hardening — no advisory. The privileged helper programs inherited from the base
operating system (
mount,su,passwdand the like) are stripped of their setuid bits at build time, and the image itself now refuses to download a model at runtime. Both were already blocked by the shipped container settings; they are now true of the image alone, so an audit of the image matches the security model. - The reranker setting accepts only the shipped models. Hardening — no advisory. A typo in that setting used to be saved and silently disabled reranking; it is now refused on save.
Added¶
- Wiki knowledge reaches your agent automatically. Compiled wiki pages now
appear in semantic search as clearly labelled advisory results that name the
source documents and the page to read in full — shown in addition to the
results you asked for, never in place of one; no extra tool call, no LLM call
at query time. Set
WIKI_SEARCH_BLEND=falseto keep the wiki browse-only. - Wiki pages merge across documents, and compiles are about three times cheaper. A topic described in several documents now lands on one page instead of near-duplicate single-source pages; only cross-document pages are written; and the page cap grows with the size of your documentation instead of a fixed
- Your existing wiki re-extracts once, automatically, on its next compile. The Wiki screen gains Wipe (start the next compile from scratch) and LLM settings buttons.
- Compliance reports are counted on the metrics endpoint (
codenavi_compliance_reports, with a matching Grafana panel), andlist_codebasesnames the host folder the reports land in. - Two sample compliance reports — OWASP Top 10 against Bugzilla and against Laravel — are on the docs site, so you can see the report shape before running one.
Changed¶
- LLM settings live in one place. The Chat screen's side rail no longer carries its own provider and model form; its LLM settings button (and the Wiki screen's) opens the Settings screen.
- The System screen's feedback card reads as ranking feedback, not a score. It shows ratings and the queries they came from, with results promoted or flagged as noise, and the Grafana dashboard matches. A thumbs-down is an agent marking one result as off-target for one query — several per query is normal.
- The secret scanner no longer redacts interpolated assignments such as
password = "${VAR}". A file read that was redacted says so in its header. - The updater tolerates an image whose layer chain repeats a layer. Both the Linux and the Windows updater compared the downloaded image's layer list against the signed manifest entry by entry, so a legitimately repeated layer was refused after the whole download. They now compare the set of layers; the ordered chain and the signature checks are unchanged. Installs updated from 1.3.39 or earlier keep their previous updater until the next fresh install.
Fixed¶
- Grafana panels show 0 instead of "No data" when there are no samples yet, and the feedback-votes gauge exports correctly.
grep_searchaccepts a list forpath_exclude, and the "index may be stale" advice checks for files newer than the index before recommending a reindex.- The installer no longer says "no terminal" one screen after asking for your repository. When the one-line install command runs over an install folder that already knows the repository, the summary now reads "already configured".
1.3.39 — 2026-09-13 (also covers 1.3.38)¶
Update impact: full image download — every layer changed in this release (the operating-system base was refreshed), 11 GB for the standard image and 14 GB for the AMD image; applied in one container restart; no reindex needed (the call graph rebuilds itself on the first start, in seconds); no hardware or driver change. The installer changes below reach you on a fresh install or by re-running the install command over the install folder, not through an update.
Security¶
- The operating-system packages inside the image are updated.3 Advisory CN-SA-2026-003 — Critical (upstream CVEs). The C library, Perl and OpenSSL move to Debian's current security releases, closing 34 Critical-severity CVEs that had fixes available. Every release is now checked against a CVE database before it ships, and a release is refused while a Critical finding with an available fix remains.
- Rejected sign-in attempts are logged.4 Hardening — no advisory. A wrong or missing bearer token on the HTTP API or the MCP endpoint leaves one log line with the client address and path (never the token); repeats from the same client are counted rather than repeated. The chat endpoint's error responses no longer include internal error text — the detail goes to the server log.
Added¶
- Your first index answers in seconds, not minutes. Call-graph and symbol tools
are ready as soon as the structural pass finishes; semantic search tells you exactly
how far the embedding pass is and what you can use meanwhile. Perl, SQL and template
files have no call-graph extractor, and the message says so instead of pointing you
at tools that would come back empty.
reindex_status,/reindex-statusand/healthreport the phase and progress. - The Index screen shows the reindex phase and progress, and each codebase card shows whether its call graph and its embeddings are ready.
- The Claude Code and Antigravity status lines show
◔ 34%while your codebase is encoding, and a plain◔while only the call graph is ready.
Changed¶
- A full reindex rebuilds the call graph from scratch too, not only the embeddings.
- The trial badge states the cap your licence actually grants, not the image's preset.
Fixed¶
- Podman on RHEL 9 / Rocky 9 installs cleanly. The installer rejects EPEL's podman-compose 1.5.0 up front (it cannot parse the compose file), names the compose command that exists on the box in its next steps, and reports a failed container start as what it is.
- The installer's ownership repair for the runtime directories works on Docker installs, so the recovery it exists for is available when a bind mount is owned by another user.
1.3.37 — 2026-09-12¶
Update impact: ~25 MB download (code layers only) — applied in one container restart; no reindex needed (the call graph rebuilds itself on the first start, in seconds); no hardware or driver change. The installer and updater changes below reach you on a fresh install or by re-running the install command over the install folder, not through an update.
Changed¶
- Under a trial file cap, your source code is indexed first. Test suites, fixtures
and spec files come last, and the reindex report names the folders the cap left out
(for example
over tier file cap (tests 2243)), so you can see what a larger tier would add. - The installer waits up to five minutes for the server to come up. On a freshly provisioned disk the models can take three or four minutes to load; if the server is still loading when the installer finishes, the completion screen says so and shows how to watch it, with the Connect step right after.
update.shwaits the same five minutes for the restarted server, matching the Windows updater, before reporting the result of an update.- The installer's free-space check now covers the image, its update cache and the index — about four times the package size, 35 GB for the standard image — and the setup guides ask for about 45 GB free.
Fixed¶
- The JavaScript and TypeScript call graph includes functions defined by
assignment — arrow functions,
exports.f = …, React components — sofind_callersandimpact_analysiscover a modern front end. On a large React codebase the share of call sites with a named caller went from 8% to 73%. The graph rebuilds itself on the first start after this update; the index is untouched. impact_analysisandfind_callerssay when a language's callers are mostly unnamed. The coverage note at the end of both answers now names any language where most call sites have no attributable caller, so a short caller list is not mistaken for a complete one.grep_searchscopespath_filterandpath_excludeto whole directories. A filter oft/means the directoryt, nevertemplate/; an exact file path still matches itself.grep_search's capped header counts every file with a hit. It now reads… across 30 files, 13 shown (804 files searched), so a truncated result is not reported as the whole population.
1.3.36 — 2026-09-10 (also covers 1.3.31–1.3.35)¶
Update impact: ~24 MB download (code layers only) — applied in one container restart; no reindex needed; no hardware or driver change. The installer changes below reach you on a fresh install or by re-extracting the package over the install folder, not through an update.
Added¶
- A new install starts on the current release. The image inside an install package
is now a base that changes only when the embedding model or the ML runtime does; an
install given an update token applies the current release before the server first
starts, as a small download. Nothing reaches the network without a token — an offline
install skips the step, and
CODENAVI_NO_INSTALL_UPDATE=1skips it on a connected machine. - A Windows install reports whether the GPU reached the container. After start-up the installer names the device the server loaded on. If it came up on the CPU it says so, with what to check in Docker Desktop — indexing on the CPU is roughly a hundred times slower.
- The Windows GPU walkthrough and the air-gapped update instructions ship inside the
package (
docs/setup-windows-gpu.htmland the README), so they are readable on a machine that cannot reach the website.
Changed¶
- The repository question is asked before the downloads. Answer it near the start and the rest of the install runs unattended; an install driven over SSH or from a script completes on its own.
- The installer checks prerequisites before it downloads anything. A missing system
tool is listed with the command to install it; GPU setup instructions name your
distribution's package manager (Fedora, RHEL, SUSE and Arch included); and on Debian
and Ubuntu, whose archived
podman-compose(1.3.0) cannot read CodeNavi's compose file, the installer names the working alternative:sudo apt install pipx && pipx install podman-compose. - Installs on AMD graphics are labelled ROCm in the reindex summary, the System
screen and the installer.
/healthgains acompute_backendfield beside the unchangedcompute_device.
Fixed¶
- Podman installs work end to end — Fedora, RHEL and anywhere else Podman is the container engine. The one-liner installer accepts Podman alongside Docker, the install starts the server, the GPU is reached through Podman's own device interface (the installer can enable that access for you), and updates apply to the running server and download only the layers that changed, as they already did on Docker.
- Re-running the installer does what you expect. It uses the repository path you enter and leaves your access token and the rest of your configuration alone; it starts CodeNavi on the GPU if the machine has gained one since the first install; and it works with no internet connection, using the image it has just loaded for every step.
- The auth token the installer shows is the token the server accepts. If your shell
exports
CODENAVI_AUTH_TOKEN, the installer adopts that value for the install rather than generating a second one. - Windows installs receive delta updates from their first update on. The installer fills the layer cache from the image it loads, hash-checking every layer. A Windows install from 1.3.30 or earlier still takes one full download on its next update; the one after that is a delta.
- Update problems say which problem you have. A server that does not recognise your install's token — trial ended, token re-issued, install copied from another machine — is reported as such, with the instruction to ask for a current download link. Network, DNS and TLS failures still read as network failures.
update.ps1reports the installed version on its check, shows accurate layer-caching progress, and explains how to enable updates when they are not configured.- Windows: a renewed licence takes effect. Put the new
license.keyindata\and re-runsetup.ps1; the README also gives a one-command alternative that needs no re-run. - Re-running the trial install command reuses the image you already downloaded. A trial still awaiting approval is reported as such, and a file that is not a licence is refused before the install rather than after it.
1.3.30 — 2026-09-07 (also covers 1.3.29)¶
Update impact: ~25 MB download (code layer only) — applied in one container restart; a full reindex is needed to pick up PowerShell files, and everything already indexed is unaffected; no hardware or driver change.
Added¶
- PowerShell scripts are indexed.
.ps1,.psm1and.psd1files are searchable by content and findable by name. They are split into line blocks, the same handling SQL and YAML get, and the secret and PII rules apply to them like any other file. - Install the Claude Code plugin straight from your server.
claude plugin marketplace add http://<your-server>:8765/plugins/claude.git, thenclaude plugin install codenavi@codenavi; later releases arrive withclaude plugin marketplace update codenavi, so the plugin always matches the server it talks to. The Codex and Antigravity bundles are served the same way, as a git repo or a.zip. The/pluginspaths are read-only and need no token. - Connect an agent running on a different machine than the server. Open
http://<your-server>:8765/connectfrom the client machine and every snippet is built for that address. For Claude Code,/codenavi:doctorwrites the one settings block (CODENAVI_HOST,CODENAVI_PORT,CODENAVI_AUTH_TOKEN) that points the MCP server, the statusline badge and the session hook at the same remote install; the Codex and Antigravity setup scripts take--host <address>. The full recipe is in the Same LAN section of the remote-access guide. Claude Code plugin 0.5.7 is bundled.
Changed¶
- Advanced tools run the moment your agent asks for one. On the default lean tool profile, a tool outside the everyday core is loaded and run in a single step, with the result returned straight back.
Fixed¶
- The Claude Code statusline works on Windows. If you enabled it on an earlier
version, run
/codenavi:status-line enableonce on plugin 0.5.8 to repair the setting. - A reindex started immediately after the server starts completes. It waits for warm-up and proceeds.
1.3.28 — 2026-09-06¶
Update impact: ~25 MB download (code layer only), applied in one container restart; no reindex needed; hardware requirement relaxed — a CPU-only host now runs within 8 GB of container memory (the Windows installer no longer asks for a 24 GB Docker VM).
- Hosts without a GPU start and search within the memory limit the installer sets. On CPU-only hosts the embedder now loads in its compact form: about 4 GB of RAM at peak instead of 16, so the default 8 GB container limit holds, and a search query embeds in under a second on a modern laptop CPU. Indexing on CPU remains slow and is still not recommended (see the setup guide's hardware tiers).
- Installs created before 1.3.15 apply this update with their original compose
file. Run
update.sh(or the Windows updater) as usual; no manual change to the install folder is needed. - Installing on a host with two or more NVIDIA GPUs completes reliably. The installer reads the first card's name and memory directly.
/healthnames the codebase on single-codebase installs, and the Claude Code statusline badge shows it. TheCODENAVI_CODEBASEpin documented for the statusline now takes effect on every server. Claude Code plugin 0.5.6 is bundled; existing installs pick it up withclaude plugin marketplace update codenavi.
1.3.27 — 2026-09-05 (also covers 1.3.26)¶
Update impact: ~25 MB download (code layer only), applied in one container restart; no reindex needed; no hardware or driver change. The 1.3.27 part is bundle-only — a refreshed Windows updater in the install package; the server image, the running container and your index are untouched, and existing installs pick it up by re-extracting the bundle over the install folder.
- Searches that name a symbol return its definition first. The query you type is what the engine searches for. Across five codebases, 20 of 20 identifier queries in our benchmark land on the defining file.
- Auto-generated query aliases are now opt-in. Hand-written aliases — the Search
screen's alias editor,
aliases.jsonand the per-codebase manual files — work unchanged. If your install relied on the generated per-codebase set, add"AUTO_ALIASES": truetodata/settings.jsonand restart the container; see the setup guide. - The Windows updater shows its progress. It announces how many layers it will download and their total size, draws a live bar per layer with speed and time remaining, and waits up to five minutes for the server to come back. An install whose image came from the bootstrap downloads the whole image once on its first update; the updater says so up front.
1.3.25 — 2026-09-04 (also covers 1.3.24)¶
Update impact: ~25 MB download, applied in one container restart; no reindex needed; no hardware or driver change. Podman installs on Fedora/RHEL re-extract the package once (see below).
Changed¶
- Search responds about 3x faster on 11 to 16 GB cards. The reranker now
runs on the GPU on those cards too, stepping to the CPU only while a reindex
is encoding: measured on an 11 GB card, a search drops from ~540 ms to
~190 ms. Installs made before 1.3.24 on such a card carry
RERANKER_DEVICE=cpuin.env; delete that line and restart the container to get the faster path. - Podman: CodeNavi keeps running after you log out. The installer enables
lingering for your user when the system lets it, and otherwise prints the
one-time
loginctl enable-lingercommand on its completion screen; the Podman guide covers that step and how to have the container restart itself at boot. - The installer says why a container did not start. When the server does not answer within two minutes, the installer reads the container log and prints its first error on the completion screen; the container's own startup check names an SELinux label denial when file ownership is already correct.
- Long wiki-compile and chat prompts on Ollama are processed whole. Each request sizes its context window to the prompt (up to 32768 tokens) instead of relying on Ollama's default.
- Podman + NVIDIA: regenerate the GPU spec after changing cards. The CDI file
Podman uses lists only the GPUs present when it was created, so re-run
nvidia-ctk cdi generateafter any GPU or driver change; the Podman guide and the multi-GPU notes say so. Docker installs are unaffected.
Fixed¶
- Podman with an NVIDIA GPU indexes on the GPU. The installer requests the
card as a CDI device through a dedicated compose overlay and warns after
start-up if a GPU install came up on the CPU; host prerequisites are in the
Podman guide, which now ships in the package. Existing podman +
NVIDIA installs: re-extract the current package and re-run
./setup.sh, which migrates your setup and restarts on the GPU. - Podman on SELinux-enforcing hosts works for CPU-only installs too. The installer applies the same SELinux setting the GPU overlays already use, so the container can write its data directories and read your codebase on Fedora and RHEL. Existing CPU-only Podman installs pick it up on the next package re-extract; the Podman guide has the one-file manual fix for older packages.
- Fedora/RHEL: the installer's NVIDIA toolkit auto-fix works with dnf and yum. Every toolkit hint includes NVIDIA's repository step, which those distributions need before the package installs.
- Re-running
./setup.sh --airgapin an existing install folder applies the current migrations (compose overlays, port publishing).
1.3.23 — 2026-09-02¶
Update impact: ~25 MB download, applied in one container restart; no reindex needed; no hardware or driver change. Windows: the installer bundle download drops from ~104 MB to ~53 MB (no bundled verifier executable).
Breaking¶
- Agents now see an 11-tool core by default.
tools/listadvertises search, browse, read, incremental reindex, reindex status and index stats, plusreveal_tools(); every other tool loads on demand —reveal_tools()lists them by group,reveal_tools(group="relations")loads a group. Measured against the full set this is about 57% less tool schema per conversation. Anything that calls a non-core tool directly over MCP — a CI bot allow-listingdiff_impact, a script — must callreveal_toolsfirst or talk to a server started withCODENAVI_TOOL_PROFILE=full; the CI recipes are updated. Claude Code applies the revealed list at the start of its next turn.56
Added¶
- Optional
git pullbefore every reindex. SetCODENAVI_GIT_PULL_BEFORE_REINDEX=trueand each git-checkout codebase fast-forwards before scanning — MCP tools,POST /reindex,reindex.shand the CLI all honour it. An in-container pull needs a read-write codebase mount; the team server page recommends host-side pulls instead. - New guide: Running CodeNavi as a team server. One shared
index on a host clone, kept fresh from cron, a post-receive hook or a forge
webhook, with every developer connecting through
/mcp/{codebase}.
Changed¶
- Windows installs verify release signatures natively.
setup.ps1andupdate.ps1check cosign signatures with built-in Windows cryptography, so the bundle ships no verifier executable for Smart App Control to inspect. Verification still fails closed. - The bundled Claude Code plugin is 0.5.2. Its commands know the lean
profile: they unlock the tools they need and tell you if a command has to be
run once more. Refresh it from
plugins/claude/.
Fixed¶
setup.ps1reads free disk space reliably on PowerShell 5.1, and a re-run keeps the port the install already uses instead of warning that it is busy.update.ps1 -Checkcompares the installed layer chain and reports "same build, nothing to apply" when there is nothing new.
1.3.22 — 2026-08-30¶
Update impact: ~25 MB download, applied in one container restart; no hardware or driver change. No reindex is required; your next incremental reindex picks up the improvements below automatically.
Breaking¶
- The
chatMCP tool is removed. Agents connected over MCP already answer from the search tools directly. Grounded Q&A is unchanged where people use it: the Chat screen in the web UI,POST /chat, and thecodenavi chatCLI. The bundled Claude Code plugin (v0.5.1) drops/codenavi:chat; refresh it fromplugins/claude/.
Added¶
- Investigation notes — agents can save what they learn about your code.
New tools
save_note,search_notes,list_notesanddelete_notelet any connected agent record findings server-side, and every other agent gets them back as clearly labelled advisory results. Notes are security-scanned on write and marked stale when the anchored code changes. Off switch:CODENAVI_NOTES_ENABLED=false. /codenavi:review— blast-radius review from Claude Code. Runs your diff throughdiff_impact, reads every affected caller, and reports a merge/hold verdict. Same flow as the CI review-bot recipe.- Extensionless scripts are indexed. A file whose first line is a shebang
is indexed as that language —
bin/deploynow gets the same treatment asdeploy.sh. - Reindex cooldown is per codebase, so reindexing one codebase no longer
delays another;
reindex_statuslists active cooldowns.
Changed¶
- Call-graph tools no longer cross languages by name. In a mixed-language
repo, a common name like
initorrenderno longer pulls in callers from other languages or raises false ⚠ Hub warnings. Hub scores refresh on your next reindex. To keep the old behaviour:CODENAVI_GRAPH_CROSS_LANGUAGE=true. - The Connect wizard's built-in docs now match codenavi.com/docs — one source, always current, still fully offline.
Fixed¶
crawlvalidates its arguments before starting — amode="url"call without a URL now errors instead of starting a site-wide crawl.max_charsis honoured, with omitted chunks counted in a newchunks_omittedfield; the top hit is still returned whole.- A miss no longer reports "index not built yet" on a healthy index, and an unknown codebase name lists the valid ones.
1.3.21 — 2026-08-26 (also covers 1.3.20)¶
Update impact: ~25 MB download (code layer only) plus a refreshed installer —
applied in one container restart; no hardware or driver change. No reindex is
required to update, but PII redaction applies at indexing time, so run a reindex
when convenient to redact PII in content indexed before this release. The new
engine and GPU options below apply to fresh installs, or to an existing install
by re-running ./setup.sh from a fresh bundle.
Security¶
- PII is now redacted by default. Hardening — no advisory. Payment card numbers (Luhn-validated)
and IBANs (mod-97-validated) found in indexed content are replaced with
[REDACTED:…]markers, exactly like secrets — in code, documents, PDFs/DOCX and crawled pages. An opt-in extended set adds SSNs, emails, phone numbers and public IPs. PII never blocks or quarantines a file, redaction touches the index only (source files are never modified), and any policy change is fully reversed by a reindex. The Security screen gains PII hit counters, the two toggles, and a policy-change audit log. Redaction applies at indexing time, so existing indexes pick it up at the next reindex.
Added¶
- Podman support — Docker is no longer required. On Fedora/RHEL hosts that ship Podman instead of Docker, the installer detects Podman (rootless included) and configures everything itself — same signed packages, same hardened container profile, same updates. AMD GPU indexing verified. GPU installs run under SELinux Enforcing as shipped; a CPU-only Podman install on an Enforcing host needs the relabel step in the Podman guide. NVIDIA under Podman is requested as a CDI device from 1.3.24 on (see that release's note); the guide lists the one-time host preparation.
- Choose which GPU CodeNavi uses on multi-GPU machines. Set
CODENAVI_GPU_DEVICE=<index>in.envand restart. CodeNavi runs on exactly one card, so a second install on the same machine takes the other card with a different index. - Central Settings screen. Every editable runtime setting in one place — search tuning, chat LLM, scanner, crawler and wiki — with per-setting descriptions. The quick controls on each screen stay where they are; both write the same settings.
- DeepSeek and other OpenAI-compatible chat providers. Pick provider
openaiand set the new Base URL field (for examplehttps://api.deepseek.com) to use any OpenAI-compatible API for chat. - Chat temperature control (0–2, blank = the provider's default) — lower for repeatable answers, higher for varied ones. Applies to every provider.
Fixed¶
- Cloud chat model choices saved in the web UI now survive container restarts.
1.3.19 — 2026-08-24 (also covers 1.3.16–1.3.18)¶
Update impact: from here on a code-only update is ~25 MB, applied in one container restart. Reaching this release from 1.3.15 or earlier is a one-time ~10–15 GB download (varies by GPU variant) — safe to skip and pick up with the next release. No reindex needed; no hardware or driver change.
- The System screen shows when your last reindex finished (for example "Last reindex — 24 Aug 2026, 5:00 pm"), so you can tell at a glance whether the index is fresh. The Index screen's badge shows the same.
- The Security screen's optional AI double-check now uses your Chat model instead of a fixed one — if Chat works, escalation works, and the override fields still let you pick a smaller model for it. If Chat points at a cloud provider and no local override is set, escalation is skipped rather than sending flagged code off your machine.
- Clearer browser tabs — each web-UI screen sets its own tab title and a one-line description, so multiple open CodeNavi tabs are distinguishable.
1.3.15 — 2026-08-22¶
Update impact: full server-image download (this release pre-dates the small delta updates introduced in 1.3.19), ~2.7 GB smaller than 1.3.14. One container restart; no reindex needed; no hardware or driver change.
Security¶
- Two fixes for a token holder's reach and a tokenless loopback server.
Neither is remotely exploitable and no install is known to be affected.
The settings API can no longer point the hook directory outside the
documented
/app/hooksmount — advisory CN-SA-2026-001, High (CVSS 3.1 7.2), requires the bearer token — and DNS-rebinding protection is now on for the one posture where it helps, a loopback server running with no token — advisory CN-SA-2026-002, Medium (CVSS 3.1 5.3).
Added¶
- See how much VRAM CodeNavi is using — a VRAM stat and time series on the
Grafana dashboard, and the same numbers in
/healthundergpu. Note that on Windows/WSL2 the total also counts Windows' own GPU use.
Changed¶
- The download is about 2.7 GB smaller. The embedder ships in its quantised form and is expanded on load — precision, GPU memory use and result quality are identical.
- The compliance report states your ASVS Level 1 result (for example "ASVS Level 1: 9 of 19 applicable L1 rules pass"), using the published OWASP ASVS 5.0 levels, and records the revision it was run against so later runs can be compared.
Fixed¶
- Searches on documentation-heavy repositories now find the code. Code
results get reserved room in the candidate shortlist; asking for docs
explicitly (
source_type='doc') steps the reservation aside. Code-heavy repositories are unchanged. - Scheduled differential crawls run without extra setup. If you don't use the optional crawler, nothing changes.
1.3.14 — 2026-08-11 (also covers 1.3.13)¶
Update impact: bundle-only — refreshed plugins, docs and scripts. The server image, the running container and your index are untouched.
- Check your codebase against OWASP — from Claude Code. The bundled plugin
adds
/codenavi:compliance: pick OWASP ASVS 5.0 core or OWASP Top 10 2025 and it checks every rule against your indexed code, writing a gap report with file:line evidence behind each verdict. Built for audit preparation — not a certification. Install or refresh the plugin fromplugins/claude/. AGENTS.md— for agents we don't bundle a plugin for. Copy it into a repo and Cursor, Windsurf, or any MCP-capable agent gets the connection details and usage rules without a plugin.- The Grafana dashboard and observability stack are included at
docs/observability/— dashboard JSON, Prometheus config, and a setup guide. update.shkeeps a clean, complete transcript of each run — if anything looks off, send it to support as-is.
1.3.12 — 2026-08-06¶
Update impact: server-image download (smaller than 1.3.11, see below) — one container restart; no reindex needed; no hardware or driver change.
Added¶
- NVIDIA GPUs with 8–10 GB of VRAM can now index. Smaller cards load a compact form of the embedder that produces exactly the same embeddings — search quality is untouched; indexing on those cards is ~25% slower.
- RTX 50-series works with the standard NVIDIA image — one build now covers RTX 20-series through 50-series.
Changed¶
- Smaller downloads — the AMD (ROCm) image is about a third smaller (~7 GB less) and the NVIDIA image ~1.5 GB smaller, by removing components CodeNavi's workload never executes.
Fixed¶
- Interrupted downloads resume instead of restarting, and
setup.sh --upgradealways writes a matching torch/CUDA pair.
1.3.11 — 2026-08-04¶
Update impact: server-image download — one container restart; no reindex needed; no hardware or driver change.
Security¶
- Offline installs now refuse an unverified download. Hardening — no
advisory. Installing from a
carried blob store (
--store) requires a valid cosign signature on the release manifest and stops if it can't verify one. Every package ships the key and verifier, so a standard offline install proceeds exactly as before;--allow-unsignedremains for deliberate use, with a clear warning.
Breaking¶
- Site-specific crawler URL mapping is now an optional add-on. Normal
crawling (base URL, links, sitemap) is unchanged; seeding from source-code
route references and
crawl changedneed a mapper for your framework — contact us if you rely on either (seedocs/api-reference.md→ Site route mappers). The crawler's destructive-action guard is unaffected and always on. - One MCP tool removed:
search_fixes. Drop it from any agent allow-list that names it.
Changed¶
- The web UI loads about 840 KB less — two bundled JavaScript libraries were replaced with inline icons and plain CSS charts.
codebase_overviewreturns identical output about twice as fast, using a fraction of the memory.
1.3.10 — 2026-08-02 (also covers 1.3.9)¶
Update impact: refreshed installer and scripts plus a server-image download — one container restart; no reindex needed; no hardware or driver change.
- Connect page — Copy buttons work when CodeNavi is opened at a LAN
address over plain HTTP,
/connect/with a trailing slash resolves, MCP clients show CodeNavi's version, and the generated Pi config is complete. - Installer — re-installing uses the release's own image; the install stops when the signature verifier is missing or unusable; trial renewals take effect on re-install; and the install summary lists exactly what the daily update check sends (your version number and trial token, never code).
- README now has a real air-gapped install guide — which files to download on a connected machine, where each goes on the offline box, and the one prerequisite to sort out before the machine goes offline.
1.3.8 — 2026-08-01 (also covers 1.3.4–1.3.7)¶
Update impact: bundle-only — refreshed installer; the server image, the
running container and your index are untouched. To pick it up, re-run the
install command from your trial email in the folder above your install; it
reuses the image you already have and keeps your .env, licence and index.
- The install shows what it is doing, start to finish — numbered steps
with real byte-by-byte progress through download and load, resumable
downloads, an opening banner naming the release, GPU build and download
size, and a complete transcript in
logs/setup.logthat is safe to send to support (it never contains your auth token). - Re-installing is fast — work already done is reused, your configured answers are offered back instead of re-asked, and two CodeNavi installs on one host stay out of each other's way.
./update.shrecognises the version you are already on instead of re-offering the update you just installed.- The install folder is organised — legal documents, updater internals and the bundled verifier moved into subfolders, so the top level holds the files you actually run.
1.3.3 — 2026-07-31¶
Update impact: server-image download — one container restart, then one full reindex per codebase (several search-quality fixes only materialise on a rebuild); no hardware or driver change. One breaking change for tokenless network-bound servers (see Breaking, below).
Breaking¶
- A network-bound server with no auth token now refuses to start. Loopback
installs are unaffected;
CODENAVI_ALLOW_NO_AUTH=1explicitly acknowledges the risk if you need the old behaviour. - The legacy standalone chat REPL is removed —
codenavi chatnow routes through the server's/chatendpoint with your configured LLM provider.
Added¶
- React and modern JS/TS projects index end-to-end —
.tsx,.jsx,.mjs,.cjs,.mts,.ctsare chunked as real components and functions and join the call graph. - Four more file families — Template Toolkit
.tmpl, MDX, YAML, and reStructuredText; the full matrix lives atdocs/supported-languages.md. - The skip ledger — reindex summaries,
index_stats, and zero-result searches name the files that were not indexed, and why. - Docs Wiki — a new screen that compiles knowledge pages from your indexed documentation with your configured LLM, source citations on every page, and two read-only MCP tools for agents. Remote providers require explicit consent per compile.
- Security screen — flagged chunks, quarantined files, allowlist management, and live scanner settings in one place.
- Interactive graph explorer — the call graph renders as an interactive MCP App in hosts that support it.
- AMD GPUs are first-class — dedicated ROCm builds, with your actual hardware detected before the first byte downloads.
- Per-codebase index filters — on multi-codebase servers, exclude/include
rules can be scoped as
codebase:path. - Prompt injection written as prose in documents is now detected — 15 new document-scoped rules; external PDFs/DOCX run through the full scanner pipeline.
- Impact analysis is coverage-aware — it answers "UNKNOWN" for code the
call graph cannot see instead of "low impact", and flags structurally
load-bearing symbols (
⚠ Hub).
Changed¶
- The package extracts to a stable
codenavi/folder and container name. Existing installs keep their current names; nothing to migrate. - Default file-size cap raised 100 KB → 250 KB, and
.dockerignoreis no longer treated as a source-ignore file — large generated files, tests and docs are indexed by default. - The product ships governing terms —
EULA.md.
Fixed¶
- Connected updates run end-to-end with zero manual steps — every package bundles the signature verifier, downloads print progress, and installs prime the layer cache so your first update is a real delta.
- Search scoring clarified — scores are documented as relative ranking
keys, a
low_signaldiagnostic tells you when a query found nothing on-topic, and leading doc comments attach to the function they document. - A reindex killed or cancelled mid-run reports its actual outcome, and cancelling now cancels the whole run.
- Update and connect correctness —
update.sh --checknever restarts anything, half-applied updates are detected and completed, and every shipped client-connect snippet carries the auth header it needs.
1.3.2 — 2026-07-05¶
Added¶
- License visibility on every surface — a License card on the System
screen, license details on
/health, and an app-wide expiry banner ahead of renewal. - Project ignore files respected + pre-reindex preview — indexing honours
your codebase's own
.gitignore, and the Index screen shows what would be indexed before you commit to a long reindex. - Provider-aware chat model picker — models listed live from self-hosted backends (Ollama, LM Studio, AnythingLLM, vLLM), Gemini support, and a clear "leaves this machine" warning on cloud providers. Local-first remains the default.
- Configurable crawler URL denylist and per-environment base-URL passthrough.
Changed¶
- Trial distribution split into installer + image artifacts, so installer fixes no longer force a multi-GB re-download.
EXCLUDE_DIRSis additive — your settings extend the safe defaults instead of replacing them.- GPU-aware builds (Turing through Blackwell) with a fail-loud preflight instead of silent zero-result searches on unsupported architectures.
Fixed¶
- Small-VRAM GPUs (11–12 GiB) no longer out-of-memory during indexing — batch size autotunes to the card.
- Reindex no longer drops the server for ~60 s —
/healthand MCP stay up throughout. - Crawler SSRF hardening, and PDF/DOCX documentation chunks survive code-only reindexes.
- Chat model choice is saved per provider.
1.3.0 — 2026-06-24¶
Added¶
- Connect wizard at
http://localhost:8765/connect— wires any MCP client (Claude Code, Codex CLI, Cursor, Windsurf, Cline, Antigravity, …) to your server with copy-paste configs and a live "indexed & reachable" check. - int8-quantized embedder as the GA default — half the image and package size at equivalent retrieval quality.
- Graph screen + graph API — explore the call-graph neighborhood of any symbol in the web UI.
- Lean tool profile (
CODENAVI_TOOL_PROFILE=lean) — a trimmed MCP tool set for agents that prefer a smaller surface, with on-demand discovery. - Prometheus
/metrics+ shippable Grafana dashboard + observability guide. - Three more AST-chunked languages — Swift, Kotlin, Scala (15 total), and
Perl/CGI support including legacy
.cgientry points. - Apple Silicon native path with MPS acceleration.
- Operator VRAM cap (
CODENAVI_VRAM_BUDGET_GIB) for shared-GPU hosts.
Changed¶
- Web UI reorganised — System is the landing tab; Search and Index are
separate screens; every setting lives on the screen it affects. The legacy
Streamlit UI is fully retired in favour of the built-in SPA at
/ui. - Reranking on by default for noticeably better result ordering.
Fixed¶
- No-op reindexes are cheap — unchanged indexes skip the table rebuild, backup, and model reload entirely.
- Search analytics now populate on the System screen.
- Oversized functions/classes are no longer truncated at embed time — long chunks split into overlapping sub-chunks.
1.2.0 – 1.2.3 — 2026-04¶
Added¶
- Multi-codebase support — one server indexes and searches multiple projects,
with per-codebase tables, a
codebaseparameter on every tool, and scoped endpoints (/mcp/{codebase}) that pin a client to one project. - Codebase exploration tools —
read_file(with secret redaction),grep_search, andlist_directorywork even without an index. - Grep-augmented semantic search — sparse vector results are backfilled by targeted text search, improving recall on rare identifiers.
- Full CLI parity — every MCP tool has a
codenavisubcommand; chat and reindex are available over HTTP endpoints as well.
Changed¶
- Vector-only retrieval with a wider rerank candidate pool — measurably better result quality than the previous hybrid search.
Fixed¶
- Scoped-endpoint streaming abort under concurrent clients; doc/web tables hidden by paginated table listing.
1.1.0 — 2026-04-08¶
- 11 AST-chunked languages (added Go, Java, Ruby, Rust, C#, Fortran).
- 22 secret-detection rules covering major cloud/token formats.
cancel_reindextool; feedback rate limiting; dynamic codebase overview;SECURITY.mddisclosure policy; SBOM shipped with the product.
1.0.0 — 2026-04-05¶
Initial release: semantic code search with AST-aware chunking (PHP, JavaScript, TypeScript, Python, Bash), documentation ingestion (PDF, DOCX, Markdown, text), opt-in web crawler, MCP tool suite for AI agents, built-in web UI, LLM chat over local or cloud providers, security scanner (secret redaction + prompt-injection detection), bearer-token authentication, Prometheus metrics, feedback loop with rating-based demotion, backup/restore, and Docker CPU/GPU deployment.
-
Vendor change reference CN-810. ↩
-
Vendor change reference CN-722. ↩
-
Vendor change reference CN-714. ↩
-
Vendor change reference CN-713. ↩
-
Vendor change reference CN-309. ↩
-
Vendor change reference CN-581. ↩
-
Vendor change reference CN-745. ↩
-
Vendor change reference CN-746. ↩
-
Vendor change reference CN-748. ↩
-
Vendor change reference CN-749. ↩
-
Vendor change reference CN-752. ↩
-
Vendor change reference CN-764. ↩
-
Vendor change reference CN-455. ↩
-
Vendor change reference CN-790. ↩
-
Vendor change reference CN-769. ↩