Martin Vogel
0f83f08653
Auto-detect WIN32_LIBS in Makefile, remove shell quoting entirely
2026-03-19 00:00:19 +01:00
Martin Vogel
b5f14f115d
Fix WIN32_LIBS quoting via env vars, add skip_lint to dry-run
...
- Use env: block instead of shell quoting for WIN32_LIBS in CI
- Forward WIN32_LIBS from environment in test.sh and build.sh
- Add skip_lint input to dry-run workflow for faster iteration
2026-03-18 23:35:35 +01:00
Martin Vogel
5c9f97b5b4
Switch to llvm-mingw for local Windows testing, fix CI quoting
...
- Replace mingw-w64 with llvm-mingw Docker image (mstorsjo/llvm-mingw)
for local cross-compilation — includes Wine for future test execution
- Fix WIN32_LIBS quoting: use single quotes so -Wl,--allow-multiple-
definition actually reaches the linker
- Install MSYS2 zlib into llvm-mingw sysroot for cross-compilation
2026-03-18 23:12:47 +01:00
Martin Vogel
fa6aa581aa
Fix Windows linker: allow-multiple-definition for MinGW CRT symbols
2026-03-18 22:32:18 +01:00
Martin Vogel
30505ec596
Switch Windows CI to CLANG64 for ASan/UBSan support
...
MinGW GCC does not ship ASan runtime on Windows. MSYS2 CLANG64
provides full sanitizer support via compiler-rt. All platforms
now run tests with ASan + UBSan — no exceptions.
2026-03-18 21:21:30 +01:00
Martin Vogel
9b22c1180c
Add Windows to test matrix, drop libsqlite3-dev dependency
...
- test-windows job runs scripts/test.sh under MSYS2 (same as build)
- Remove libsqlite3-dev from all CI steps (sqlite3 is vendored now)
- Both dry-run.yml and release.yml updated
2026-03-18 16:49:42 +01:00
Martin Vogel
8f225a37dd
Use cc (Apple Clang) on macOS, gcc on Linux — unified CI/local parity
...
- Add scripts/env.sh: detects true hardware arch (even under Rosetta),
verifies compiler supports target arch, adds arch prefix on macOS
- macOS uses cc/c++ everywhere (tests + builds) — ASan works natively
- Linux uses gcc/g++ everywhere — full sanitizer support
- Remove broken CC ?= gcc-14 from Makefile (GNU Make built-in overrides it)
- Scripts accept --arch flag and CC=/CXX= overrides
2026-03-18 13:08:33 +01:00
Martin Vogel
fd1640ec29
Add build scripts, fix GCC warnings, unify CI workflows
...
- Add scripts/clean.sh, test.sh, build.sh, lint.sh as single source
of truth for local and CI builds (always clean, always parallel)
- Fix -Wmissing-braces: replace {{0}} with memset for struct arrays
- Fix -Wrestrict: use intermediate buffer for same-struct snprintf
- Update dry-run.yml and release.yml to use the new scripts
2026-03-18 12:31:53 +01:00
Martin Vogel
f646da2935
Pin GCC everywhere: local (gcc-14), CI Ubuntu (gcc), CI macOS (gcc-14)
2026-03-18 12:03:28 +01:00
Martin Vogel
66bb2a7638
CI: fail-fast: false so one flaky test doesn't cancel other OS tests
2026-03-18 00:54:32 +01:00
Martin Vogel
1957612469
Unify dry-run + release pipelines: lint(format+cppcheck) → test → build → smoke → release
2026-03-18 00:17:59 +01:00
Martin Vogel
20b6932f82
CI: install cppcheck with cfg files, add to PATH
2026-03-17 23:52:01 +01:00
Martin Vogel
be10b73f55
CI: fix cppcheck tag (2.20.0), cache build, verify tool versions
2026-03-17 23:45:57 +01:00
Martin Vogel
ac527878c3
CI: pin LLVM 20 + cppcheck 2.20 from source, add _DEFAULT_SOURCE for POSIX compat
2026-03-17 23:40:38 +01:00
Martin Vogel
bfbe3d4502
CI: drop clang-tidy from CI (v18 vs v22 incompatible), keep clang-format + cppcheck
2026-03-17 23:34:44 +01:00
Martin Vogel
dc7bc91e84
CI: pin clang-format-18/clang-tidy-18, suppress cppcheck cross-version false positives
2026-03-17 23:23:17 +01:00
Martin Vogel
5b18f7da95
Fix CI: use Language: Cpp in clang-format (compatible with all versions)
2026-03-17 22:41:03 +01:00
Martin Vogel
50e0ff6244
Dry-run: lint → test → build (standard+UI) → smoke test pipeline
2026-03-17 22:33:50 +01:00
Martin Vogel
ce96ecc085
Add comprehensive smoke test: version + index + search + trace + folder integrity
2026-03-17 22:25:26 +01:00
Martin Vogel
18fa9979ee
Replace vmem with mimalloc global allocator, add extraction-phase prescan, fix __init__.py QN collision
...
Memory management:
- Vendor mimalloc v2.1.9 as global allocator (MI_OVERRIDE=1 in prod)
- New mem.h/mem.c: RSS-based budget tracking via mi_process_info()
- Remove vmem.c/vmem.h (mmap-based budget tracking)
- Remove slab tier2 bump allocator (~300 LOC); >64B goes to mimalloc
- Slab tier1 pages from malloc (= mimalloc) instead of vmem
- Arena blocks from malloc instead of vmem
- Budget raised from 35% to 50% RAM (no more untracked C++ heap)
Extraction-phase prescan (eliminates disk re-reads):
- HTTP call sites: keyword check + URL extraction during extraction
- HTTP routes: decorator + source-based extraction during extraction
- Config file refs: regex scan during extraction
- httplinks: 41.8s → 13ms on Linux kernel (3,212x faster)
- configlink: 41.4s → 0.8s on Linux kernel (54x faster)
- Linux kernel fast-mode total: 2m38s → 1m18s
Bug fixes:
- __init__.py Module QN no longer collides with Folder QN
- index.ts same fix for JS/TS packages
- 13 regression tests for QN collision at FQN + extraction layers
- search_graph/search_code default limit raised from 10 to 500k
- Resolve all clang-tidy, cppcheck, and clang-format warnings
Repo cleanup:
- tree-sitter-form, tree-sitter-magma moved to tools/
- .gitignore: build/, node_modules/, graph-ui/dist/, TEST_PLAN.md
2026-03-17 22:05:57 +01:00
Martin Vogel
bd6bbc2ab1
Add Go LSP hybrid type resolver, config store, and supporting infrastructure
...
- Go LSP cross-file type resolution engine (internal/cbm/lsp/) with C-based
type registry, scope tracking, and Go stdlib data (30K+ definitions)
- lsp_bridge.go: CrossFileDef struct and RunGoLSPCrossFile CGo bridge
- config.go: persistent ConfigStore (SQLite) for auto_index, mem_limit settings
- CLI config subcommand for get/set/list/delete operations
- Store: edge batch upsert, project config columns, goleak test harness
- Pipeline: prefetch parallelism, resolver improvements, memleak tests
- CI: dry-run workflow improvements, vendor-grammar.sh enhancements
2026-03-12 13:26:13 +01:00
Martin Vogel
26f686550c
Statically link Windows binary to fix missing DLL error
...
Add -extldflags '-static' to Windows build so libwinpthread-1.dll
and other MinGW runtime DLLs are embedded in the binary.
2026-03-06 21:29:58 +01:00
Martin Vogel
e292f875a9
Fix community issues #15 , #17 , #20 and add editor support #19
...
- Fix Continue.dev invalid_type error: add properties:{} to list_projects schema (#15 )
- Fix Windows paths: sanitize colons and backslashes in ProjectNameFromPath (#20 )
- Fix update double-v prefix: strip v from version before display (#17 )
- Fix update context canceled: DownloadAsset returns []byte, not ReadCloser (#17 )
- Strip v prefix in release workflow ldflags (Unix + Windows builds)
- Add Gemini CLI, VS Code Copilot, and Zed to install/uninstall commands (#19 )
- Add tests for new editor configs and Windows path cases
2026-03-06 19:51:47 +01:00
Martin Vogel
07f0beadc6
Add manual dry-run workflow for pre-release validation
...
Lint + test + build on all 5 OS targets without creating a release.
Trigger manually before running the release workflow.
2026-03-06 18:22:36 +01:00
Martin Vogel
03a99be966
Remove automatic CI workflow, keep manual-only releases
2026-03-06 18:11:57 +01:00
Martin Vogel
05a35ac9b1
v0.5.1: Fix C/C++/CUDA/GLSL function extraction, add config linker and tests
...
- Fix extract_defs.c declarator chain traversal for C-family function_definition
nodes (off-by-one in field name length, missing depth traversal)
- Add resolve_func_name() support for CommonLisp defun, Makefile rule, VimScript,
Julia, Elm value_declaration, Groovy field_function methods
- Add config linker pipeline: 3 strategies linking config keys to code symbols,
dependency manifest entries to imports, and config file path references
- Add regression tests (~150 cases across 50+ languages), language failure tests,
and config extraction tests
- Refactor discover.go, configures.go, configlink_strategies.go to reduce
cognitive complexity (extract helpers for gocognit compliance)
- Fix Louvain community detection: use map lookup instead of O(N) scan
2026-03-06 17:50:18 +01:00
Martin Vogel
59d40d4035
v0.5: CBM tree-sitter engine, 59 vendored language grammars
...
- Replace Go-binding tree-sitter with vendored C grammars compiled via
CGo (internal/cbm/); eliminates all Go module/linker fragility
- Add 32 new languages: Clojure, CMake, COBOL, Common Lisp, CUDA, Elm,
Emacs Lisp, Fortran, F#, GLSL, GraphQL, INI, JSON, Julia, Makefile,
Markdown, Meson, Nix, Protobuf, Svelte, Verilog, Vim Script, Vue, XML
(plus C, C#, Erlang, SQL, YAML quality improvements)
- Adaptive worker concurrency and mmap prefetch for faster indexing
- Graph buffer: batched SQLite writes for 3-5x throughput improvement
- Fix cancellation test: use 50ms timeout (pipeline now indexes 212-file
Erlang repo in ~400ms, well under the old 2s deadline)
- Fix isTestFunction: add "Test" prefix for C#, "test" prefix for Scala
2026-03-05 22:39:01 +01:00
Martin Vogel
7d1f56836e
Add replace option to release workflow
...
New boolean input allows re-releasing the same version by deleting
the existing release and force-updating the tag before rebuild.
2026-03-01 21:53:02 +01:00
Martin Vogel
3589a1bd1d
Fix release binary naming and Codex CLI MCP registration
...
- Release workflow: build binary as `codebase-memory-mcp` (not
`codebase-memory-mcp-<os>-<arch>`) inside tarballs. Users extract
and get the correct name without renaming.
- Codex CLI: replace broken `codex mcp add/remove` calls with direct
config.toml manipulation. Codex uses [mcp_servers.<name>] sections,
not CLI subcommands.
- README: add explicit extract-and-move step to Quick Start.
2026-03-01 19:43:07 +01:00
Martin Vogel
02bc3b7352
Release v0.3.0: 25 languages, install/update CLI, skills, benchmark
...
Language expansion (13 → 25):
Add Ruby, C, Bash, Zig, Elixir, Haskell, OCaml, HTML, CSS, YAML,
TOML, HCL with tree-sitter grammars and language specs.
Restore Erlang and SQL with extraction fixes.
CLI install/update/uninstall commands:
Auto-detect Claude Code and Codex CLI, register MCP server,
install task-specific skills, self-update with SHA-256 verification.
Embedded skills (4):
exploring, tracing, quality, reference — auto-trigger in Claude Code
for graph-first code discovery.
Pipeline improvements:
Docstring extraction, enrichment pass for params/returns/complexity,
graceful context cancellation, improved test detection.
35-language benchmark (BENCHMARK.md):
12 questions × 35 repos, 91.8% overall score, Linux kernel stress
test (20K nodes, zero timeouts). Replaces old benchmark artifacts.
2026-03-01 18:01:52 +01:00
Martin Vogel
6469cb641d
Restructure release workflow: lint gate, then test+build per platform
...
Pipeline: lint (ubuntu) -> test+build per OS (5 parallel) -> release
Lint failure stops early. Each platform runs its own tests before building.
2026-02-28 02:10:20 +01:00
Martin Vogel
600ec428d6
Fix lint (http.NoBody) and restructure release workflow
...
- Use http.NoBody instead of nil in checkForUpdate (gocritic httpNoBody)
- Restructure workflow: lint+test gate -> parallel builds -> release
Prevents wasted build compute when lint or tests fail.
2026-02-28 02:07:49 +01:00
Martin Vogel
6811faf82b
Add optional release_notes input to Release workflow
...
When provided, uses the custom notes as the release body.
When empty, falls back to auto-generated notes from commits.
2026-02-28 02:02:54 +01:00
Martin Vogel
97289ddae6
Fix CI: build golangci-lint from source for Go 1.26 compat
2026-02-26 20:17:20 +01:00
Martin Vogel
f932e87b6e
v0.1.4: CLI mode, query performance optimizations, Go 1.26
...
Add CLI mode for direct tool invocation from the shell — every MCP tool
can now be called without an MCP client. Useful for testing, scripting,
and CI pipelines.
Query engine rewrite: SQL LIKE pre-filtering extracts literal substrings
from regex patterns before scanning, batch degree counting replaces
per-node queries, and schema queries use id→label maps instead of 3-way
JOINs. Cypher relationship queries up to 600x faster on large graphs.
Incremental reindex 4x faster via content-hash skip optimization.
Upgrade to Go 1.26 (Green Tea GC) and SQLite v1.46.1.
2026-02-26 19:27:27 +01:00
Martin Vogel
97284a35fa
v0.1.0: Performance, incremental indexing, async boundary detection
...
Performance & quality:
- Transaction wrapping (Querier interface, single tx per index run)
- Composite indexes on edges table for faster traversals
- Cypher WHERE push-down (=, CONTAINS, STARTS WITH → SQL)
- golangci-lint with 25 linters, zero violations
- 11 benchmarks for pipeline, search, and BFS
Incremental indexing:
- Content-hash based file change detection
- Dependency-aware two-level invalidation (changed + dependents)
- Stale file cleanup for deleted files
Async boundary detection:
- Project-wide env var URL scanner (Dockerfile, YAML, .tf, .sh, .env,
TOML, properties files) with 3-layer secret exclusion
- Env var default extraction in constant propagation (getEnv, os.environ.get,
process.env with ||/?? fallback)
- ASYNC_CALLS edge type for Cloud Tasks, Pub/Sub, SQS/SNS, RabbitMQ, Kafka
dispatch patterns, separate from synchronous HTTP_CALLS
- Tool descriptions updated with all edge types
Other improvements:
- Type inference for method dispatch resolution
- Interface implementation detection (IMPLEMENTS edges)
- Improved tool descriptions for discoverability
2026-02-25 13:43:57 +01:00
Martin Vogel
56901bec27
Fix CI: replace deprecated macos-13 with macos-15-intel
...
macos-13 runners were removed in Dec 2025. macos-15-intel is the
free replacement for x86_64 macOS builds (available until Aug 2027).
2026-02-25 10:14:07 +01:00
Martin Vogel
3c6ad62ed0
Add cross-platform setup scripts and CI release workflow
...
- GitHub Actions workflow builds native binaries for 5 platforms:
darwin-arm64, darwin-amd64, linux-amd64, linux-arm64, windows-amd64
- Windows build uses MSYS2 UCRT64 toolchain for CGO compatibility
- setup.sh: macOS/Linux installer (binary download or --from-source)
- setup-windows.ps1: Windows installer (native .exe or -FromSource via WSL)
- Both scripts offer interactive Claude Code MCP auto-configuration
- Release includes checksums.txt with SHA-256 hashes
- PS5.1-compatible JSON handling (no -AsHashtable dependency)
2026-02-25 10:07:45 +01:00