Commit Graph
4651 Commits
Author SHA1 Message Date
Martin Vogel ea892c5349 Merge pull request #2817 from DeusData/feat/drift-reminder-hook
feat(cli): note when a Claude Code session keeps searching without the graph
2026-10-28 18:07:44 +01:00
Martin Vogel 820cd02307 Merge pull request #2161 from htarnacki/fix/discover-external-fast-mode
fix(discover): retain external source directories in fast mode (#2151)
2026-10-28 07:47:51 +01:00
Martin Vogel 1f934b6afb Merge pull request #2774 from RithvikReddy0-0/python-prefixed-string-urls
extract: fold prefixed and triple-quoted Python string URLs
2026-10-28 03:07:57 +01:00
Martin Vogel b956413eb4 Merge pull request #2423 from harshitaajoshi/fix/2386-bm25-label-window
fix(mcp): apply search_graph label filter inside the BM25 candidate window (#2386)
2026-10-28 02:27:53 +01:00
Martin Vogel 5810183b3b Merge pull request #2430 from AmirF194/fix/2276-incremental-reindex-root-path-stale
fix(pipeline): refresh the projects row's root_path on the delta route
2026-10-28 01:08:02 +01:00
Martin Vogel df2c35f841 Merge origin/main into fix/discover-external-fast-mode
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 20:03:02 +01:00
Martin Vogel 8fd93a2e08 test(smoke): pin the Claude PostToolUse matcher that covers the graph tools
Smoke check 8d required Claude's PostToolUse matcher to be exactly Read. The
drift note widens it on purpose to Read|mcp__.*codebase-memory-mcp__.*, so a
graph tool call can reset the search count, and the macOS PR smoke failed on
it. 8d now requires exactly the new matcher, and besides a Search matcher it
also refuses a catch-all ("*" or empty) matcher, as its comment promised.

Checked against real installs: the previous binary's Read-only settings fail
8d, the new install passes, and the new install plus a catch-all PostToolUse
entry fails.

Refs #509

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 19:32:04 +01:00
Martin Vogel 27c1cdd955 Merge origin/main into python-prefixed-string-urls
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 19:15:32 +01:00
Martin Vogel cb0e6b5a2b Merge origin/main into fix/2386-bm25-label-window
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 19:15:17 +01:00
Martin Vogel 7ca765f69a Merge origin/main into fix/2276-incremental-reindex-root-path-stale
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 19:15:09 +01:00
Martin Vogel 83109dde52 Merge pull request #2802 from harshitaajoshi/fix/2797-relative-import-exact-path
fix(pipeline): never guess a same-named sibling for explicit ./ and ../ imports (#2797)
2026-10-27 19:12:29 +01:00
Martin Vogel e73eb9d6ae Merge pull request #2777 from gaurav0107/fix/1818-daemon-autoindex-skipped-omits-the-effec
fix(daemon): log the effective auto_index_limit in daemon.autoindex.skipped
2026-10-27 19:12:23 +01:00
Martin Vogel 70cd1a5568 Merge pull request #2622 from Lixsp11/fix/windows-sqlite-writer-64bit-offsets
fix(store): use 64-bit file offsets in the SQLite page writer
2026-10-27 19:12:17 +01:00
Martin Vogel 6ef815540d Merge pull request #2422 from Fieldnote-Echo/fix/py-definitions-oom
fix(py-lsp): walk each lambda body at most once per call chain
2026-10-27 19:12:10 +01:00
Martin Vogel aaf9021582 Merge pull request #1730 from henry-hz/upstream-pr/elixir-channels
fix(elixir): Phoenix channel extraction is unreachable in both branches
2026-10-27 19:12:04 +01:00
Martin Vogel 4edc6b7b30 Merge pull request #2724 from tmonestudio/fix/java-skip-dirs-and-typed-calls
fix(discover): keep JVM packages named like build dirs (part of #2661)
2026-10-27 19:11:57 +01:00
Martin Vogel 5948316c3d Merge pull request #2800 from WarGloom/fix/objectscript-empty-deserialize
fix: guard empty ObjectScript scanner state
2026-10-27 19:11:51 +01:00
Martin Vogel 5dcf253b45 Merge pull request #2555 from lorenzozanee/fix/js-template-leading-substitution-url
test(pipeline): guard base-URL constant in JS/TS template fetch URLs (#2540)
2026-10-27 19:11:44 +01:00
Martin Vogel 69b26df9f0 Merge pull request #2372 from lorenzozanee/fix/search-code-cancellation-observability
fix(mcp): report request timing in mcp.request logs
2026-10-27 19:11:15 +01:00
Martin Vogel 402617555c feat(cli): note when a Claude Code session keeps searching without the graph
The search hook gives each Grep, Glob or Bash search the matching graph
symbols, but a session can keep searching text for questions the graph answers
in one call (#509). Once a session has run three searches with no
codebase-memory-mcp tool call, the next augmentation now adds one factual line
saying so. The next note comes after six searches, then twelve, and any graph
tool call resets the count.

- State: a per-session counter in the process that runs hook requests (the
  daemon), keyed by the payload's session_id, in a bounded 64-slot table that
  evicts the least recently used session, behind a spin lock. Only searches
  that reach the graph lookup count. A search without an augmentation still
  counts, and the note waits for the next augmentation.
- Reset: Claude's managed PostToolUse entry now matches
  "Read|mcp__.*codebase-memory-mcp__.*", covering plain and plugin server
  names. The previous Read-only entry, as installs up to v0.12 wrote it, is
  recognized as owned, so install replaces it in place and uninstall removes
  either.
- Scope: Claude Code only. Codex sends the same event payload with a turn_id
  but has no reset hook, so its sessions are not tracked, and payloads without
  a session_id are not tracked either.
- Cost: a graph tool call now runs one hook round-trip to the daemon for the
  reset, about 130 ms on a local build.

Refs #509

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-27 19:04:47 +01:00
Martin Vogel 129443a0b7 Merge pull request #2801 from DeusData/feat/copilot-posttooluse-hook
feat(cli): give Copilot searches graph context through a PostToolUse hook
2026-10-27 19:04:13 +01:00
Martin Vogel 8530c8cd1c Merge pull request #2675 from attilaolah/musl
Fix build against musl
2026-10-26 02:29:09 +01:00
Martin Vogel d6109bfdfe Merge origin/main into fix/windows-sqlite-writer-64bit-offsets
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 02:26:54 +01:00
Martin Vogel a49481df70 Merge pull request #2602 from bline/fix/doc-link-moved-directory
fix(doc-links): report references into a moved directory as missing (#2588)
2026-10-26 02:18:59 +01:00
Martin Vogel 25665c6e4d Merge origin/main into fix/search-code-cancellation-observability
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>

# Conflicts:
#	src/mcp/mcp.c
2026-10-26 02:00:28 +01:00
Martin Vogel 14bf8f0c6c fix(mcp): keep request timing, defer protocol behaviour changes
Split the PR along the line the review asked for. The request timing and
transport fields stay: every mcp.request log line carries
handler_duration_ms, response_serialization_ms, cancelled and timed_out,
and a search that reaches its deadline logs status=timeout.

The behaviour changes go back to the base text and need a separate
maintainer decision: stricter jsonrpc/id parsing, dropping "result":null,
NULL returns from the response formatters, leaving the stdio loop on a
missing response or an input/output failure, the removed blocking-poll
fallback, the HTTP 500 path, the daemon session end on a missing response,
and the update-notice warning. Their tests go with them. The list_projects
sort guard is dropped as well (main has the same fix).

cbm_mcp_server_handle formats its three responses with
cbm_jsonrpc_format_response directly; a NULL reply still marks the request
as an error. The cbm_log_mcp_request checks in tests/test_log.c are back
with the new signature, plus checks for the new fields and for
status=timeout. clang-format on the new lines.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 01:58:34 +01:00
Martin Vogel f05c221e9c Merge pull request #2744 from harshitaajoshi/fix/2591-cypher-where-property-compare
fix(cypher): support property-to-property comparisons in WHERE (#2591)
2026-10-26 01:58:25 +01:00
Martin Vogel 4ef2d23b1d Merge pull request #2234 from lorenzozanee/fix/framework-entry-dead-code
fix(ui): preserve framework route entry points from dead-code status
2026-10-26 01:57:50 +01:00
Martin Vogel 9e7794b04f Merge pull request #2443 from bmcnaboe/docs/help-daemon-subcommand
docs(cli): list daemon <start|stop|status> in --help
2026-10-26 01:45:17 +01:00
Martin Vogel 807a780feb Merge origin/main into fix/js-template-leading-substitution-url
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 01:42:42 +01:00
Martin Vogel 0c83f60442 Merge origin/main into fix/2276-incremental-reindex-root-path-stale
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 01:39:54 +01:00
Martin Vogel f0f88b9c4d Merge origin/main into upstream-pr/elixir-channels
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 01:26:17 +01:00
Martin Vogel f05eccefa2 test(doc-links): move JVM not_indexed fixtures to a skipped layout (#2661)
The Java and Kotlin doc-link reason tests modelled "a package in a
directory discovery skips" with src/main/java/a/env/ and
src/main/kotlin/k/env/. Discovery now keeps packages below
src/<set>/<lang>/, so those files are indexed and the two not_indexed
assertions failed. Move both fixtures to a plain src/<pkg>/ layout,
which discovery still skips by name (the open part of #2661), and
reword the comments. Assertions unchanged.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 00:54:53 +01:00
Martin Vogel ca419635ee Merge origin/main into fix/1818-daemon-autoindex-skipped-omits-the-effec
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 00:53:54 +01:00
Martin Vogel 4cedb8d7a6 Merge origin/main into python-prefixed-string-urls
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 00:47:54 +01:00
Martin Vogel 0433142a15 Merge pull request #2764 from gaurav0107/fix/2742-cypher-return-zero-for-ungrouped-count-o
fix(cypher): return one row for an ungrouped aggregate over empty input
2026-10-26 00:45:45 +01:00
Martin Vogel 8b428eb1d4 Merge pull request #2085 from AmirF194/fix/2001-manifest-walk-skip-unreadable-subdir
fix(pipeline): skip an unreadable subdirectory in the control-file walk instead of aborting the whole index
2026-10-26 00:39:16 +01:00
Martin Vogel 5e9f146e7b Merge pull request #2289 from halindrome/fix/cohort-lock-tmp-cleaner
fix(daemon): keep held runtime files fresh and exit when one is lost
2026-10-26 00:38:49 +01:00
Martin Vogel 5be2e8824d Merge origin/main into fix/py-definitions-oom
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-26 00:35:59 +01:00
Martin Vogel 07e73a3bce Merge pull request #2766 from RithvikReddy0-0/install-ps1-layout-mismatch
install.ps1: report a checksum-verified layout mismatch separately from an unsafe archive
2026-10-26 00:35:22 +01:00
Martin Vogel 4ad22bf307 Merge pull request #2798 from DeusData/fix/pr-ack-strip-hidden-note
fix(ci): post the PR acknowledgement without its hidden maintainer note
2026-10-25 21:56:04 +01:00
harshitaajoshi 2d06fe300a fix(pipeline): never guess a same-named sibling for explicit ./ and ../ imports (#2797)
Signed-off-by: harshitaajoshi <j.harshitaa06@gmail.com>
2026-10-25 15:43:31 -05:00
harshitaajoshi 1cc2377c14 fix(cypher): support property-to-property comparisons in WHERE (#2591)
Signed-off-by: harshitaajoshi <j.harshitaa06@gmail.com>
2026-10-25 15:05:28 -05:00
Martin Vogel 5350b5b83e fix(cli): render the Copilot manifest through the memory core
The PostToolUse change rendered the manifest twice per install and uninstall
(current and previous generation) and freed both with free(), which grew the
raw allocator count in src/cli/cli.c past its baseline (lint-memory-core).
The manifest is now written with cbm_json_writer_allocator() and released with
cbm_free(CBM_MEM_CLASS_OTHER, ...), including the frees that predate the
change, so cli.c drops from 170 to 166 raw sites and its baseline is lowered
to match. The rendered bytes are unchanged, so byte-exact ownership of
manifests written by earlier installs still holds.

Refs #509

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 20:57:54 +01:00
Martin Vogel 31ba586de4 Merge pull request #2738 from petterip/fix/route-properties-json
fix(pipeline): emit and reconstruct route properties as valid JSON
2026-10-25 20:30:24 +01:00
Martin Vogel 10df7bc294 Merge pull request #2761 from tmonestudio/feat/glsl-stage-mapping
feat(language): map GLSL compute, geometry and tessellation stages
2026-10-25 20:27:52 +01:00
Martin Vogel eaed3cdf6e Merge origin/main into fix/objectscript-empty-deserialize
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 20:26:27 +01:00
Martin Vogel 760cb9ccae Merge origin/main into fix/2386-bm25-label-window
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 20:22:16 +01:00
Martin Vogel 5f0f862df6 Merge origin/main into docs/help-daemon-subcommand
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 20:19:05 +01:00
Martin Vogel a74d528e8c Merge pull request #2755 from DeusData/codex/ci-cppcheck-parallel
ci: parallelize cppcheck with isolated whole-program analysis
2026-10-25 20:16:44 +01:00