Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
d03a4a1
docs: add federation feature plan
Jun 23, 2026
7154fe9
feat(serve): add REST search/find/explore/chunk endpoints for federation
Jun 23, 2026
5ad7813
fix(serve): share embedding service across REST + MCP sessions
Jun 23, 2026
a2cada0
feat(federation): add remote-peer config + federated search/get_chunk…
Jun 23, 2026
03ce6e2
fix(federation): honest low_confidence for federated results
Jun 23, 2026
d4c7b06
docs: align federation plan with shipped Phase 1+2 reality
Jun 23, 2026
9228006
[worker] stage 1/2: surface project→group membership in scope_required
Jun 25, 2026
415b809
[worker] stage 2/2: add per-repo group membership to status(kind=proj…
Jun 25, 2026
d8d1d1c
[worker] final review: document implicit "all"-group exclusion in pro…
Jun 25, 2026
5c8f4ba
[worker] stage 1/3: add unauthenticated /healthz probe for ACA + clou…
Jun 25, 2026
2e2da4a
[worker] stage 2/3: container image, blob-sync entrypoint, serve clou…
Jun 25, 2026
7eb0f82
[worker] stage 2/3: fix Dockerfile for ACR/portable build
Jun 25, 2026
375b791
[worker] stage 2/3: fix entrypoint repo registration + azcopy + warm-…
Jun 26, 2026
519f2fe
[worker] stage 3/3: record live Azure deployment of federation cloud …
Jun 26, 2026
ae7c2b0
[worker] stage 1/1: add `codesearch remote` command for federation peers
Jun 26, 2026
bde176f
[worker] stage 1/1: fix review remarks on `remote` command
Jun 26, 2026
051ed1b
[worker] feat: split cloud entrypoint into serve / index-job modes
Jun 26, 2026
1e1b474
[worker] feat: robust index-job rebuild (DELETE+POST) + deployment doc
Jun 26, 2026
e38b79e
[worker] docs: honest cost note for index-job rebuild
Jun 26, 2026
753ebea
[worker] fix(index-job): incremental /reindex + pre-upload index guard
Jun 26, 2026
0732fb2
[worker] fix(index-job): stop corpus sync from deleting the index
Jun 26, 2026
ce58424
[worker] fix(index-job): let serve warmup own the refresh (no competi…
Jun 26, 2026
4be3591
[worker] stage 1/3: add FederationClient management API (list/add/rem…
Jun 27, 2026
1e89407
[worker] stage 2/3: add --remote flag to index verbs + Reindex variant
Jun 27, 2026
9c02edb
[worker] stage 2/3: fix review remarks (--json without --remote now r…
Jun 27, 2026
af34d63
[worker] stage 3/3: document the --remote index management flag in RE…
Jun 27, 2026
326bfd8
[worker] stage 3/3: fix review remarks (reconcile --remote docs with …
Jun 27, 2026
da487a3
[worker] stage 3/3: polish README caveat precision + note writable-pe…
Jun 27, 2026
2a4d8f5
[fix] index rm: resolve argument by alias before treating as path
Jun 27, 2026
f34b1b4
[cli] add `ls` visible alias to all `list` subcommands
Jun 27, 2026
7925333
[docker] serve: periodic KB git-pull loop (refresh custom KB without …
Jun 29, 2026
18b1bcd
[fix] serve: active_sessions underflowed to u64::MAX via per-request …
Jul 1, 2026
3e52d7b
[docs] 1.0 GA: federation security analysis, changelog [1.0.0], versi…
Jul 1, 2026
956b79e
Add Claude Code integration: enforce codesearch-over-grep via hooks
Jul 1, 2026
edd9aa1
[docs] 1.0 GA: disclose changelog condensation in [1.0.0], fix review…
Jul 1, 2026
5222b95
docs(federation): drop stale cloud-deployment plan; point to canonica…
Jul 1, 2026
ab462e2
[fix] serve: close LMDB env before DB delete (await FSW task) — Windo…
Jul 1, 2026
7531c06
[fix] serve: address review remarks (fsw_tasks hygiene + transient-ra…
Jul 1, 2026
d137069
[feat] serve: GET /remotes endpoint — list configured federation peer…
Jul 1, 2026
36ad374
[test] serve: regression test — /remotes never serializes api_key
Jul 1, 2026
9068413
[release] 1.1.0: federation GA — version bump
Jul 1, 2026
2aa49ce
[docs] drop federation-feature.md; document Claude Code hooks in README
Jul 1, 2026
2061dfd
[docs] generic cloud-deployment guide (integrations/cloud); mermaid +…
Jul 1, 2026
e08a981
[scrub] remove customer identifiers from tracked files (public repo p…
Jul 1, 2026
79c5cdb
[fmt] cargo fmt --all (repos.rs test assert, serve/mod.rs constants i…
Jul 1, 2026
70c617d
[fix] claude-code: grep-guard ignores running process, requires local…
Jul 1, 2026
74255f8
Fix claude-code hooks: tell the model to pass project=/group= in serv…
Jul 3, 2026
cbf38f6
[docs] AGENTS.md: fix stale version + doc links (v1.0.235 -> v1.1.0, …
Jul 3, 2026
e457624
[docs] escalate docs-repo warmup bug to HIGH; propose single-app scal…
Jul 4, 2026
c0fffb1
[fix] bound incremental-refresh embedding batches to prevent OOM cras…
Jul 4, 2026
b5fca8c
[fmt] cargo fmt + version bump for previous fix commit (pre-commit ho…
Jul 4, 2026
0bc2b65
[docs] plan: remote project mounting (1-to-1 passthrough federation)
Jul 6, 2026
c570fb1
[feat] stage 1/5: config model for mounted remote projects
Jul 6, 2026
7d83687
[fix] stage 1/5: address review remarks (enforce peer-name namespacin…
Jul 6, 2026
60999c5
✨ feat: route project=<peer>/<alias> to mounted remote projects (stag…
Jul 6, 2026
8977291
✨ feat: surface mounted remote projects in the TUI, italic (stage 4/5)
Jul 6, 2026
6651250
♻️ refactor: polish stage-4 review minors (remote discovery + detail)
Jul 6, 2026
ab2f9ff
✨ feat: split cloud indexer job into one repo per vendor (stage 5/5)
Jul 6, 2026
1c922ee
📝 docs: mark remote-mounting plan complete + DB_DIR_NAME safety note
Jul 6, 2026
d799da4
📝 docs: drop stale staging comment + clarify passthrough score doc
Jul 6, 2026
ac1ae0f
🔧 fix: silence warmer index-add output in Docker build
Jul 6, 2026
c3d7222
🔧 fix: fold model warmup into builder stage (ACR COPY --from chained-…
Jul 6, 2026
a7d107f
🔧 fix: ship warmed model cache as a tarball (ACR symlink-tree COPY ex…
Jul 6, 2026
f9e5923
fix(entrypoint): build vendor indexes sequentially to avoid OOM-kill
Jul 6, 2026
b4a4ffc
✨ feat: TUI info for remote mounts + disable inapplicable actions
Jul 6, 2026
6a287ee
📝 docs: document project-level mounting + cloud reindex hardening
Jul 6, 2026
f31afc2
✨ feat: flash feedback when a disabled action is pressed on a remote …
Jul 6, 2026
8ebf606
Merge features/codesearch-federation into develop
Jul 7, 2026
8210bd3
@
Jul 7, 2026
1a5b3fc
✨ feat: opt-in mounting of individual remote projects (remote_mounts …
Jul 7, 2026
9132c78
📝 docs: opt-in remote mount selection (remote_mounts allowlist)
Jul 7, 2026
b59307f
🐛 fix: prune orphaned remote rename-overrides unconditionally in reco…
Jul 7, 2026
1cea46b
✨ feat: show peer index stats in remote-mount info overlay
Jul 7, 2026
b7f8000
🐛 fix: harden remote-mount info fetch against stale/None resolve
Jul 7, 2026
24ad915
📝 docs: note peer index stats in remote-mount info overlay (CHANGELOG)
Jul 7, 2026
9306624
🐛 fix: scope federated get_chunk to remote project (fixes ambiguous_c…
Jul 7, 2026
86ab53b
✅ test: cover legacy no-alias get_chunk group fallback (review minor)
Jul 7, 2026
2cc66bb
✨ feat: split hooks command into `hooks git` and `hooks claude` (+ Cl…
Jul 7, 2026
4d83936
✨ feat: add web-guard hook — steer WebSearch/WebFetch to remote doc m…
Jul 7, 2026
89e21af
📝 docs: make web-guard guidance use get_chunk(chunk_ref=…) explicitly…
Jul 7, 2026
2d999de
📝 docs: align SearchResultItem chunk_ref/source docs with namespaced …
Jul 7, 2026
de9e7a9
📝 docs: add remote/federation + index --remote rows to CLI Reference …
Jul 7, 2026
007dddd
✅ test: replace fixed sleep with bounded readiness poll in live-peer …
Jul 7, 2026
4079509
📝 test: add remote-mount semantic-findability test scenario (Run 1: P…
Jul 7, 2026
61ef201
✨ feat: serve incrementally reindexes custom-kb on each KB pull
Jul 8, 2026
9dedc58
📝 docs: scope cloud "read-only serve" claims to the custom-kb reindex…
Jul 8, 2026
b3a455c
📝 test: add section F — cross-vendor overlap + isolation scenarios (R…
Jul 8, 2026
cb9fa07
🐛 fix: COPY integrations/claude-code/hooks into Docker builder
Jul 8, 2026
bdd9a2a
🐛 fix: pin shell scripts to LF via .gitattributes (CRLF broke cloud i…
Jul 8, 2026
b8208d8
🔧 chore: pre-commit hook does cargo fmt only (drop per-commit version…
Jul 8, 2026
cc43724
🔧 chore: pin extensionless hook scripts to LF in .gitattributes
Jul 8, 2026
bd90ec2
✨ feat(serve): KB near-instant propagation via cheap remote-HEAD poll
Jul 8, 2026
f65febb
docs: redact platform name -> example-dam to satisfy customer-ref pre…
Jul 8, 2026
9471ca2
Merge features/remote-mount-selection into develop
Jul 9, 2026
85c8052
📝 docs: add missing KB-propagation changelog entry + filter_path fede…
Jul 9, 2026
1241963
🐛 fix: apply federated filter_path client-side on namespaced result p…
Jul 9, 2026
c43fa78
🐛 fix: relativise filter_path against the routed project root in serv…
Jul 9, 2026
6bca8ce
🔒️ fix: scrub customer identifier (aprimo→vendor-a) in mcp tests
Jul 9, 2026
5ecad58
Merge features/serve-local-filter-path-root into develop
Jul 9, 2026
6d545b8
🐛 fix: harden `hooks git install` (windows path, worktree common-dir,…
Jul 9, 2026
d6a92d1
🐛 fix: gate post-checkout hook on branch-checkout flag ($3=1)
Jul 9, 2026
a58dfb2
Merge features/hooks-git-worktree-common-dir into develop
Jul 9, 2026
40c97f8
🔖 release: bump version to 1.1.29
Jul 9, 2026
14eade0
🐛 fix: silence clippy::question_mark in jupyter cell-source extraction
Jul 9, 2026
84b8e6a
📝 docs: clean AGENTS.md/CHANGELOG.md (compress completed plans, dedupe)
Jul 10, 2026
5721900
📝 docs: fix review remarks — restore deferred follow-ups, clarify squ…
Jul 10, 2026
5c99cd8
Merge docs/clean-agents-changelog-readme into develop
Jul 10, 2026
e0146eb
✨ feat: user-configurable extension→language map (closes #138)
Jul 10, 2026
27ed6d3
✅ test: fix review remarks on extension-map (hermeticity + loader)
Jul 10, 2026
f2f060b
Merge pull request #142 from flupkede/fix/php-inc-extension-mapping
flupkede Jul 10, 2026
23ad9d9
🔖 release: bump version to 1.1.30
Jul 10, 2026
4c477ea
📝 docs: derive release version from tags in /release (Part 0)
Jul 10, 2026
2bb8bed
Merge pull request #145 from flupkede/chore/release-version-reconcili…
flupkede Jul 10, 2026
d256db4
✅ test: skip .git-rename relocate tests on Windows (flaky, os error 5)
Jul 10, 2026
03d40ef
🔧 chore: untrack .claude/commands/release.md (local-only command)
Jul 10, 2026
7a7a9da
Merge pull request #146 from flupkede/chore/untrack-release-cmd-and-f…
flupkede Jul 10, 2026
ef2f4c1
[worker] stage 1-2/3: fix critical path traversal (Aikido groups 3064…
Jul 20, 2026
32dcc59
[worker] stage 3/3: add persist-credentials: false to all checkout steps
Jul 20, 2026
ae2d6fb
📝 docs: update before push
Jul 20, 2026
d7d27a2
[worker] stage 1/3: sanitize ANSI escapes in search output (Aikido 30…
Jul 20, 2026
0621d63
[worker] stage 2/3: reject ALWAYS_EXCLUDED-named roots in FileWalker:…
Jul 20, 2026
b974c61
[worker] stage 3/3: fix Unix backslash path collision in normalize_pa…
Jul 20, 2026
90545cb
[worker] bump rmcp + cargo update for transitive CVE patches (Aikido …
Jul 22, 2026
9e2b8aa
Merge pull request #151 from flupkede/security/aikido-critical-fixes
flupkede Jul 22, 2026
f32e54e
Merge pull request #152 from flupkede/security/aikido-defense-in-depth
flupkede Jul 22, 2026
946f3c9
Merge pull request #154 from flupkede/security/aikido-deps-update
flupkede Jul 22, 2026
83c4dfb
[worker] pin actions/checkout SHA in codeql.yml (Aikido supply-chain …
Jul 22, 2026
75744e5
Merge pull request #153 from flupkede/security/aikido-codeql-pin
flupkede Jul 22, 2026
e79e607
Add EmbeddingGemma retrieval support
markschroedr Jul 11, 2026
49744fb
Preserve existing model document formatting
markschroedr Jul 11, 2026
2b0f0ad
Harden embedding model selection
markschroedr Jul 11, 2026
0bba5a6
Fix test type mismatch: sanitize_for_terminal expects &str
Jul 22, 2026
a704de6
Fix test-linux: gate Windows-path tests to cfg(windows), add unix twins
Jul 22, 2026
3ef1d16
Fix clippy redundant_closure in search snippet rendering
Jul 22, 2026
3c92fb6
Fix flaky serve test: remove in-process double-open of LMDB env
Jul 22, 2026
a0ece3b
Merge pull request #155 from flupkede/feature/embeddinggemma-retrieval
flupkede Jul 22, 2026
07edae5
🐛 fix: raise RLIMIT_NOFILE at serve startup — fd exhaustion silently …
Jul 16, 2026
1adb93c
Merge pull request #150 from tony-nexartis/fix/serve-fd-limit
flupkede Jul 23, 2026
15a7729
[worker] skip CodeQL on fork PRs (SARIF upload cannot write security-…
Jul 23, 2026
b96c4a1
Merge pull request #156 from flupkede/fix/codeql-fork-pr-skip
flupkede Jul 23, 2026
ff7e123
fix: byte-boundary panic in search snippet (#148) + rmcp allowed_host…
Jul 23, 2026
5b2e244
Merge pull request #157 from flupkede/fix/issues-148-149
flupkede Jul 23, 2026
1c594e6
docs: changelog + README updates for PRs #150-#157 (Aikido security s…
Jul 23, 2026
f1a20d7
Merge pull request #158 from flupkede/docs/security-changelog-update
flupkede Jul 23, 2026
47c41fd
Merge master into release/v1.1.31 (resolve squash-merge history diver…
Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,9 @@ Quality gates: `cargo check`, `cargo clippy`, `cargo test --lib --bins`, `dotnet

## Tooling rules (IMPORTANT)

- **Do NOT use the `codesearch` CLI/exe to investigate this repo.** Codesearch is the project under development and is currently potentially brokenusing our own broken tool to debug itself is unreliable.
- **Codesearch must always be used via its MCP server tools** (when available), never via the bundled binary at the shell.
- **For this repo, fall back to `grep` / `Glob` / `Read`** for all discovery and navigation until codesearch is verified working again.
- **Use codesearch MCP tools first for discovery** on this repo. The MCP server is verified working and this repo is indexed (alias `codesearch-git`)`search` / `find` / `explore` are the default for "where/what/how" questions, per the global codesearch-first rule.
- **Never use the bundled `codesearch` CLI/exe to investigate this repo.** It's the project under development and may be broken/locked; debugging it with its own shell binary is unreliable. MCP server tools only.
- **`grep` / `Glob` / `Read` remain correct for:** inspecting a specific git ref or fetched PR head (e.g. `git show FETCH_HEAD:path` — codesearch only indexes the on-disk working tree, not arbitrary refs), exact literal/regex matching, and any case where codesearch returns nothing useful.

## Notes

Expand Down
64 changes: 0 additions & 64 deletions .claude/commands/release.md

This file was deleted.

6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:
steps:
# pin@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false
# pin@stable
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
# pin@v4
Expand All @@ -40,6 +42,8 @@ jobs:
steps:
# pin@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false
# pin@stable
- uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
# pin@v4
Expand All @@ -58,6 +62,8 @@ jobs:
steps:
# pin@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false
# pin@v4
- uses: actions/setup-dotnet@67a3573c9a986a3f9c594539f4ab511d57bb3ce9
with:
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ jobs:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 30
# Skip on fork pull requests: the restricted GITHUB_TOKEN for fork PRs
# cannot write `security-events` back to the upstream repo, so the
# `github/codeql-action/analyze` upload step fails with
# "Resource not accessible by integration". CodeQL still runs on push
# events to develop/master (where the token has full write scopes per
# the `permissions:` block below), so merged code is still scanned —
# this only skips the redundant, upload-failing fork-PR run.
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
permissions:
actions: read
contents: read
Expand All @@ -26,7 +34,9 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # pin@v4
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ jobs:
steps:
# pin@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false

- name: Install Rust
# pin@stable
Expand Down Expand Up @@ -126,6 +128,8 @@ jobs:
steps:
# pin@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
persist-credentials: false

- name: Install Rust
# pin@stable
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,4 @@ Common mistake: a subagent runs `/git pr create` with no explicit `--base`, the
- **Deploy:** `..\copy-to-common.ps1` — builds + copies both binaries to `~/.local/bin/`. A running `codesearch.exe` is file-locked on Windows; stop serve before deploying.
- **Canonical paths:** NEVER call `.canonicalize()` directly. Always use `safe_canonicalize()`.
- **LMDB rule:** No two `EnvOpenOptions::open()` on same dir in same process. All access via `get_or_open_stores()` → `Arc<SharedStores>`.
- **Tooling:** do not use the bundled `codesearch` binary to investigate this repo (it's the project under development). Use codesearch MCP tools when available, else `grep`/`Glob`/`Read`.
- **Tooling:** never use the bundled `codesearch` binary to investigate this repo (it's the project under development). Use codesearch **MCP tools first** for discovery (server verified working; this repo indexed as `codesearch-git`). `grep`/`Glob`/`Read` stay correct for a specific git ref / fetched PR head (codesearch only indexes the on-disk working tree), exact literal matching, or when MCP returns nothing.
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.1.31] - 2026-07-23

**Security hardening sweep (Aikido) + community bug/dependency fixes.**

### Added

- **EmbeddingGemma retrieval support (#155, original work by @markschroedr, superseding #147).** Adds support for Google's EmbeddingGemma embedding model as an additional embedder option, alongside model-selection hardening and improved error messages for unsupported/misconfigured embedding models.
- **`CODESEARCH_ALLOWED_HOSTS` / `CODESEARCH_DISABLE_HOST_VALIDATION` (#149, reported by @stdweird).** rmcp's DNS-rebinding defence defaults the MCP transport's `Host`-header allowlist to loopback-only, rejecting container/service hostnames in containerised deployments. `CODESEARCH_ALLOWED_HOSTS` lets you extend the allowlist with a comma-separated hostname list; `CODESEARCH_DISABLE_HOST_VALIDATION=1` disables the check entirely (only safe behind a reverse proxy). See README `## Security`.
- **`raise_fd_limit()` at serve startup (#150, contributed by @tony-nexartis).** `codesearch serve`'s fd demand scales with registered repo count; under process supervisors with a low default `ulimit -n` (notably macOS launchd, 256), this could silently exhaust file descriptors and wedge `accept()` with `EMFILE` while the daemon still looked healthy. Serve now raises its own soft `RLIMIT_NOFILE` to the hard limit at startup (Unix only) and warns if the effective limit still looks insufficient for the repo count.
- **`persist-credentials: false`** added to every `actions/checkout` step across all GitHub Actions workflows, and the CodeQL workflow's floating `actions/checkout@v4` pinned to the same SHA already used elsewhere — reduces the blast radius of a compromised CI step and closes a supply-chain drift gap.
- **CodeQL skipped on fork PRs.** Fork-originated PRs carry a restricted `GITHUB_TOKEN` that cannot upload SARIF results to the upstream repo, which was failing the CodeQL check on every external contribution (e.g. #150) with a confusing "Resource not accessible by integration" error unrelated to the PR's actual code. The analyze job is now skipped for fork PRs (still runs on `develop`/`master` push, same-repo PRs, and the schedule).

### Fixed

- **Panic on multi-byte UTF-8 boundary in search snippets (#148, reported by @tony-nexartis).** Search-result snippet truncation byte-sliced content at a fixed offset, panicking whenever that offset landed inside a multi-byte character (box-drawing glyphs, CJK, emoji). Now truncates on a char boundary.
- **Path-traversal hardening (critical).** `codesearch index`'s project-path resolution no longer silently falls back to the raw, unvalidated path when canonicalization fails — it now fails fast with an actionable error. The `.NET` symbol-helper CLI (`scip-csharp`) now canonicalizes every path argument (`--solution`, `--project`, `--output`, `--symbols-file`) before use, closing several path-traversal vectors flagged by Aikido SAST.
- **Registering a `.git`/build-artifact directory as a project root.** `codesearch index`/repo registration now rejects a root whose own directory name matches an always-excluded name (`.git`, `.svn`, `node_modules`, etc.), preventing accidental indexing and search-exposure of internal VCS metadata.
- **ANSI/control-sequence injection in terminal output.** Search results and sync/reindex logs now strip ANSI escape sequences (CSI, OSC, Fe) and stray control characters from indexed file content before printing, so a maliciously crafted file can no longer manipulate the user's terminal (clear screen, hide output, rewrite the title bar, etc.).
- **Unix path-cache key collision.** The path-normalization cache used for file metadata unconditionally converted `\` to `/`, which on Unix (where `\` is a legal filename character, not a separator) could collapse a literal-backslash filename with an unrelated subdirectory path into the same cache key. The conversion is now gated to Windows only.
- **Dependency CVE remediation.** `rmcp` floor bumped `1.5.0 → 1.8.0` (3 CVEs fixed); ~100 transitive dependencies refreshed via `cargo update`, including security-relevant bumps to `quinn-proto`, `h2`, `hyper`, `tokio`, `rustls`, `openssl`, `zerocopy`, `zeroize`, `webpki-roots`, `aws-lc-rs`.

## [1.1.30] - 2026-07-10

### Added
Expand Down
Loading