Commit Graph
4586 Commits
Author SHA1 Message Date
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 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 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 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 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 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 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 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
Martin Vogel 87b346ee51 Merge origin/main into fix/framework-entry-dead-code
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 20:14:14 +01:00
Martin Vogel d0937940a9 docs(readme): name the Codex PreToolUse and Copilot PostToolUse search hooks
The Codex CLI row still listed only SessionStart and SubagentStart after the
PreToolUse Bash hook landed (#2719), and the hook section described only
Claude Code's search context. The row now names the Codex search hook, and the
section says how Codex, Copilot CLI and VS Code's Copilot runtime get search
context.

Refs #509

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 20:03:40 +01:00
Martin Vogel a18b4a4574 feat(cli): give Copilot searches graph context through a PostToolUse hook
Copilot CLI's preToolUse output can only decide permissions, and its command
hooks fail closed on errors, so the graph context that Claude Code and Codex
searches get could not ride a pre-tool hook there. postToolUse
additionalContext is appended to the tool result the model sees on the same
turn (github/docs content/copilot/reference/hooks-reference.md). VS Code's
agent mode shares the Copilot harness and reads the same ~/.copilot/hooks
manifest.

- Manifest: $COPILOT_HOME/hooks/codebase-memory-mcp.json adds a PascalCase
  PostToolUse entry, matcher "Bash|Grep|Glob|bash|powershell|grep|rg|glob",
  running hook-augment --event PostToolUse --dialect copilot. The previous
  lifecycle-only manifest, as installs up to v0.12 wrote it, stays recognized
  as owned: install upgrades it in place and uninstall removes either
  generation. A foreign manifest still fails closed.
- hook-augment: the Copilot dialect reads either payload form
  (tool_name/tool_input or toolName/toolArgs), maps runtime tool names to the
  Claude names (bash/powershell to Bash, grep/rg to Grep, glob to Glob),
  parses arguments passed as a JSON string, and answers with top-level
  additionalContext.
- Fast path: Copilot's forced PostToolUse goes through the no-op gate before
  executable-identity hashing. The gate also skips tools the augmenter does
  not read, because VS Code's local hook parser ignores matchers, so a
  non-search shell call or an edit exits in about 20 ms instead of paying the
  full round-trip of about 130 ms.
- The context header no longer says the search results are "below": after a
  post-tool hook they are above it.
- Tests: the three Copilot foreign-manifest tests now create
  .copilot/mcp-config.json. Without it Copilot CLI was never detected, so
  install and uninstall never reached the manifest, and the tests also passed
  with the ownership checks removed.

Refs #509

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 19:50:35 +01:00
Martin Vogel 619192a990 Merge pull request #2719 from DeusData/feat/codex-pretooluse-hook
feat(cli): give Codex shell searches graph context through a PreToolUse hook
2026-10-25 19:48:37 +01:00
Martin Vogel ced508f6a4 Merge pull request #2381 from wcy12378/fix/221-windows-cli-detection
fix(cli): resolve Windows CLI detection for long PATH and npm/mise/scoop shims (#221)
2026-10-25 19:37:14 +01:00
Martin Vogel e2f93baf5c Merge pull request #2231 from yasmoradi/fix/csharp14-extension-members
fix(extraction): recover C# 14 extension block members
2026-10-25 19:37:01 +01:00
Martin Vogel 4a1e6d1103 Merge pull request #2091 from CaptainMittens/fix/ts-lsp-walk-stack-drops-nodes
fix: grow the ts_lsp AST walk stacks so wide files keep every declaration
2026-10-25 19:36:39 +01:00
Martin Vogel f2dad9ac7a Merge origin/main into fix/cohort-lock-tmp-cleaner
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 19:16:41 +01:00
Martin Vogel 0a045b588b Merge origin/main into fix/2001-manifest-walk-skip-unreadable-subdir
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 19:10:33 +01:00
Martin Vogel 6efe33b730 Merge pull request #1999 from mikemikimike/fix/ts-inferred-receiver-calls-1974
test(ts): add regression for inferred imported receiver
2026-10-25 19:09:43 +01:00
Martin Vogel 023e997fd8 Merge pull request #2281 from knewstimek/pr/windows-aligned-delete-fix
fix(windows): use matching deallocator for CRT aligned blocks
2026-10-25 19:09:31 +01:00
Martin Vogel 46c01c479d Merge pull request #2737 from WarGloom/fix/session-index-watch-registration
fix: watch explicit MCP index targets
2026-10-25 19:04:01 +01:00
Martin Vogel b870019680 Merge pull request #2508 from lorenzozanee/fix/issue-1115-indexed-project-discovery
test(mcp): cover project discovery after store switches (#1115)
2026-10-25 19:03:20 +01:00
Martin Vogel 61f185c7fa Merge pull request #2762 from DeusData/dependabot/npm_and_yarn/graph-ui/npm_and_yarn-49322df965
build(deps): Bump @vitest/mocker from 4.1.11 to 4.1.12 in /graph-ui in the npm_and_yarn group across 1 directory
2026-10-25 18:49:12 +01:00
Martin Vogel 282f0e6412 fix(ci): post the PR acknowledgement without its hidden maintainer note
The template opens with an HTML-comment note for maintainers, and the
workflow posted the file verbatim, so every acknowledgement comment
carried text a contributor cannot see but a tool reads. Our own PR
screening holds every comment with such hidden text, which parked nine
contributor PRs on a note we wrote ourselves.

Strip HTML comments (an unterminated one runs to the end, as GitHub
renders it) into a temporary body file and post that. The posted text is
byte-identical to what rendered before. A template whose only content is
the note now counts as blank, which is the documented off switch.

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 18:40:50 +01:00
Martin Vogel 869fc2b54c Merge pull request #2757 from DeusData/codex/codeql-main-alerts
fix: preserve literal input and static asset boundaries
2026-10-25 18:39:47 +01:00
Martin Vogel 18d7273b74 test(config): a v0.10.2 Codex block now upgrades in place to the PreToolUse block
config_toml_codex_accepts_v0102_managed_windows_crlf asserted that re-upserting
over the v0.10.2 lifecycle-only block left the file byte-identical. That block
is now the previous generation: the upsert accepts it as owned and upgrades it
in place. The test now pins that upgrade (one PreToolUse table, BOM, CRLF and
the surrounding tables kept) and that a second upsert is byte-identical.

Refs #715

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 17:56:40 +01:00
Martin Vogel 3e5234f660 feat(cli): give Codex shell searches graph context through a PreToolUse hook
Codex runs its hooks with the same contract as Claude Code: its shell tool is
named Bash, tool_input.command is a string, and PreToolUse hookSpecificOutput
additionalContext reaches the model (openai/codex hooks/src/events/
pre_tool_use.rs, core/src/hook_runtime.rs). Codex only had the SessionStart and
SubagentStart reminders (#330), so its grep and rg calls never got the graph
context Claude Code's searches get (#715).

- config.toml: the managed block adds [[hooks.PreToolUse]] matcher = "Bash"
  running the same hook-augment command. The previous block (lifecycle pair
  only, as installs up to v0.12 wrote it) stays recognized as owned, so an
  upgrade replaces it in place and uninstall removes either generation.
- Inline forms (#1432): Codex's inline rewrite of our PreToolUse is replaced.
  A user's own inline hooks.PreToolUse is kept and our block then leaves
  PreToolUse out, because TOML cannot hold an inline array and array-of-tables
  entries for the same key; install says so instead of failing.
- hooks.json: the Codex-only PreToolUse Bash entry is added and removed next to
  the lifecycle pair, touching only the entry whose command is ours.

Codex asks users to re-trust changed hook definitions (/hooks).

Refs #715, #509

Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-25 17:56:39 +01:00
Kris 7d01caeb6e Merge branch 'main' into fix/221-windows-cli-detection 2026-10-24 10:08:07 +08:00
Mukkara Rithvik Reddy 2809f88d6e install.ps1: report checksum-verified layout mismatch separately from unsafe archive
Refs #1218

Signed-off-by: Mukkara Rithvik Reddy <rithvikreddymukkara@gmail.com>
2026-10-22 16:41:03 +05:30
Petteri Ponsimaa a791790324 Merge main to pick up the CI contract fixes (#2732)
Signed-off-by: Petteri Ponsimaa <petterip@gmail.com>
2026-10-22 13:38:28 +03:00
Gaurav Dubey 9a7d53b47b fix(cypher): return one row for an ungrouped aggregate over empty input
A RETURN made only of aggregates is one group over the whole input, so it
answers exactly one row. The RETURN aggregation sink emitted one row per
group it had seen, and when MATCH/WHERE produced no bindings it had seen
none: `MATCH (f:Function) WHERE f.name = "nope" RETURN count(*) AS total`
answered no rows instead of total = 0.

ret_sink_finish now emits that row when no group was created and every
RETURN item is an aggregate: count and sum are 0, collect is [], and
avg/min/max are null (""). A grouped aggregation over empty input still
returns no rows, and the row goes through the usual DISTINCT / ORDER BY /
SKIP / LIMIT post-pass.

Fixes #2742

Signed-off-by: Gaurav Dubey <gauravdubey0107@gmail.com>
2026-10-22 06:27:04 +00:00
dependabot[bot] c9d353440b build(deps): Bump @vitest/mocker
Bumps the npm_and_yarn group with 1 update in the /graph-ui directory: [@vitest/mocker](https://github.com/vitest-dev/vitest/tree/HEAD/packages/mocker).


Updates `@vitest/mocker` from 4.1.11 to 4.1.12
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.12/packages/mocker)

---
updated-dependencies:
- dependency-name: "@vitest/mocker"
  dependency-version: 4.1.12
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-22 02:01:23 +00:00
Leonardo trindade mirandaandClaude Opus 5.5 b5eacb1237 feat(language): map GLSL compute, geometry and tessellation stages
.comp, .geom, .tesc and .tese are the glslang stage extensions next to the
already-mapped .vert and .frag; Vulkan compute shaders were not indexed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Leonardo trindade miranda <tmonestudio@gmail.com>
Signed-off-by: mbrl <mbrl@local>
2026-10-21 22:57:18 -03:00
Martin Vogel 10ab613de3 Merge pull request #1766 from Yyunozor/fix/1355-external-import-shadow
fix(registry): stop external package imports binding to project homonyms
2026-10-22 02:54:58 +02:00
Martin Vogel a3d266d705 Merge pull request #2739 from DeusData/codex/dependabot-alerts-41-44
fix(deps): patch Vite and certifi security advisories
2026-10-22 02:36:35 +02:00
Martin Vogel dad6a01a80 Merge shared UI CI repair from main
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-22 02:27:07 +02:00
Martin Vogel 7028640495 fix(csharp): preserve escaped constructors and conditional extension members
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-22 02:26:28 +02:00
Martin Vogel 67695d4162 Merge current main to refresh required CI
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-22 02:13:21 +02:00
Martin Vogel ff28841eed Merge pull request #2753 from DeusData/codex/fix-ui-reader-focus-loading
fix(ui): hide stale focus warning while arranging graph
2026-10-22 02:11:50 +02:00
Martin Vogel 5e6b1bb3f6 Merge main to include shared CI contract repair
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
2026-10-22 02:03:54 +02:00