Auto-sync: background watcher polls indexed projects for file changes
(mtime+size) and triggers incremental re-indexing automatically. Adaptive
polling interval scales with repo size (1s-60s). Non-blocking — uses
TryLock to skip if manual index_repository is in progress.
WithTransaction: changed signature to return a transaction-scoped Store
instead of mutating the shared querier field. Eliminates a data race
where concurrent read handlers could use a committed transaction.
Infrastructure file indexing: new pipeline pass indexes Dockerfiles,
docker-compose, cloudbuild, .env, Terraform, and YAML config files as
InfraFile nodes with structured properties.
Also includes: indexMu mutex on Server for safe concurrent access,
Claude Code skill file in repo, updated README with auto-sync docs.
Clarify that search_graph relationship filter counts node degrees
(not edges), direct users to query_graph Cypher for listing
HTTP_CALLS/ASYNC_CALLS edges with properties, and recommend
direction=both in trace_call_path for full cross-service context.
- detect_platform() now checks hw.optional.arm64 sysctl on macOS to
pick the arm64 binary even when bash runs under Rosetta (uname -m
reports x86_64 in that case)
- Move tmpdir to a global CLEANUP_DIR so the EXIT trap does not hit
an unbound variable error from set -u after the function returns
Lead with pre-built binary download (no toolchain needed), then setup
scripts for automation, then build-from-source for contributors.
- Add platform table with all 5 targets including linux-arm64
- Add Windows SmartScreen guidance for unsigned binary
- Document checksums.txt for integrity verification
- Credit @Flipper1994 for WSL2 workaround (closes#1)
Extract the handler function from .POST("/path", h.Handler) registrations
and create CALLS edges from the registering function to the handler.
Resolve route group prefixes defined in separate files by scanning for
.Group() assignments and matching them to route registrations.
Return total count, offset, limit, and has_more in responses so LLM
clients can page through large result sets without fetching everything.
Default limit is 100 (was unlimited).
Use type_spec and type_alias tree-sitter nodes instead of type_declaration,
then inspect the child node kind to distinguish interface_type (→ Interface)
from struct_type (→ Class) and everything else (→ Type).
Adds tests for standalone and grouped type declarations.
- search_graph: add `project` parameter to scope searches to a single project
- httplink: resolve Go gin router Group() prefixes into Route node paths
- pipeline: recognize @app.middleware, @app.exception_handler, @app.on_event as entry points
- search_graph/search_code: make `limit` optional (no default cap, no max 200)
- Fix cypher test assertions after previous SubmitOrder rename
MCP server that indexes codebases into a queryable knowledge graph.
Single Go binary, SQLite storage, 12 languages via tree-sitter.
Features: call graph, cross-service HTTP linking, dead code detection,
route nodes, Cypher queries, incremental reindex, JSON config scanning.