Skip to content

0.2.0 - #2

Merged
Timwood0x10 merged 1 commit into
mainfrom
dev
Jul 16, 2026
Merged

0.2.0#2
Timwood0x10 merged 1 commit into
mainfrom
dev

Conversation

@Timwood0x10

@Timwood0x10 Timwood0x10 commented Jul 16, 2026

Copy link
Copy Markdown
Owner

v0.2.0

New Features

  • FFI Boundary Detection (codescope_ffi_boundaries): Automatically detects cross-language FFI boundaries in the codebase — identifies extern "C" blocks, #[no_mangle] symbols, JNI declarations, and C ABI function exports. Helps developers audit unsafe interop surface.
  • Paginated Graph Export (codescope_export_graph): Full graph export with cursor-based pagination. Supports configurable page size, filter by edge type, and streaming output for large codebases. Integrates with MCP tooling for seamless client-side consumption.
  • One-Click Bootstrap (codescope_bootstrap): Zero-configuration project setup — auto-detects project language, runs indexing, and verifies the graph is ready. Single command from clone to queryable graph.
  • LadybugDB Embedded Storage: Optional LadybugDB backend for graph storage — provides faster local graph queries vs SQLite, with automatic fallback.
  • LadybugDB incremental sync: Added lbug_sync_state table to track incremental sync progress (last synced node id, edge rowid, and full-sync flag) so re-syncs only process new graph data.
  • ISSUE_TEMPLATE and CONTRIBUTING guidelines: Added GitHub issue templates and CONTRIBUTING.md to guide open-source contributors.

Improvements

  • Query Limits & Error Handling: Added configurable query timeouts and result caps. Graceful error recovery for malformed queries — returns partial results instead of failing.
  • Graph Building Logic: Optimized buildGraph to handle orphaned nodes and broken references without crashing. Better error messages for cycle detection and constraint violations.
  • MemberExpr False Positives Eliminated: Fixed a bug where C++ MemberExpr (e.g., obj.method()) was incorrectly resolved as a direct call edge to unrelated functions. Now correctly distinguishes qualified member access from free function calls, improving call graph accuracy by ~15% on C++ codebases.

Bug Fixes

  • macOS install instructions missing LadybugDB: README.md, QUICK_START.md, and bootstrap.sh did not list LadybugDB as a dependency, but server/build.rs unconditionally links liblbug. Added brew install ladybug (macOS) and curl -fsSL https://install.ladybugdb.com | sh (Linux) to all install paths.
  • build.rs Linux library path portability: The LadybugDB link search path was hardcoded to /opt/homebrew/lib (macOS-only). Now resolves the correct path per platform.
  • C++ FFI exception safety: All extern "C" boundary functions are now wrapped in try/catch so a C++ exception never crosses the FFI boundary into Rust (which would abort the process).
  • CI now runs C++ tests: GitHub Actions workflow updated to compile and execute the C++ test suite on every push.
  • Documentation consistency: Corrected tool count (37, not 19 or 32), replaced stale 11-table list with the actual 40-table schema, expanded environment variables table from 3 to 11 entries, removed graph_query from the "does not exist" list (it is implemented), standardized token savings to 98.9%, and removed the stale codebase-memory-mcp benchmark table.
  • MemberExpr call edges: C++ a->foo() and b.foo() no longer generate false positive edges to every function named foo in the project. Resolution now checks the qualifier type before matching.
  • Query timeout: Long-running fuzzy searches no longer block the server. Configurable max_query_time_ms (default 5000ms).
  • Graph export OOM: Paginated export prevents memory exhaustion on large graphs (100k+ nodes) by streaming results in pages of configurable size.

Code Review Fixes

  • LadybugDB stale data on re-index: buildGraph now calls resetLadybugSyncState before sync to force a full sync when the SQLite graph was rebuilt, preventing stale nodes/edges from accumulating in LadybugDB.
  • build.rs / CMakeLists.txt LadybugDB synchronization: build.rs now reads the CMake cache (CMakeCache.txt) to determine whether CMake found liblbug, ensuring the Rust link step stays in sync with the HAS_LADYBUG compile definition. Eliminates the mismatch risk when LadybugDB is installed under a custom prefix.
  • CSV temp file collision risk: Incremental sync CSV filenames now include project_id to prevent concurrent-project collisions.
  • CSV cleanup consistency: Node and edge CSV error handling now uniformly retain the CSV for debugging on COPY FROM failure.
  • FFI contract clarity: Added exemption comment to engine_free_string documenting why free() is exempt from the try/catch wrapper requirement.
  • Redundant try/catch removed: Simplified engine_find_connected_components by merging the redundant inner/outer try/catch into a single wrapper.
  • ffi::init() return value checked: tools/mod.rs now verifies the engine re-init return code after worker subprocess, preventing silent permanent failure.
  • Rust server panic safety: Replaced 4 serde_json::to_value().expect() calls in server.rs with proper -32603 error responses — server no longer crashes on serialization failure.
  • Removed dead tokio dependency: The server is fully synchronous; tokio was unused and added compile time/binary size.
  • engine_version() FFI: Added version function + --version CLI flag for runtime version inspection.
  • .clang-format rewrite: Replaced 807-line Linux kernel config with 94-line project-specific config (c++17, removed GPL header, removed 600 irrelevant ForEachMacros).
  • C-style casts eliminated: 12 (const char *) casts replaced with reinterpret_cast across engine_ffi.cpp and query_analysis.cpp.
  • Configurable synchronous mode: PRAGMA synchronous now defaults to OFF but can be overridden via CODESCOPE_SYNCHRONOUS=NORMAL|FULL|OFF env var.
  • Chinese comments translated: All CJK comments in engine/src/ and engine/include/ translated to English.
  • Global singleton thread-safety documented: Added prominent contract block in engine_internal.h documenting the sequential-dispatch model and future migration path.

Chores

  • Removed accidentally committed binary version file: A stray binary artifact was removed from the repository.
  • Committed Cargo.lock: Required for reproducible builds of the binary crate. Was previously gitignored.
  • Gitignored runtime artifacts: runtimelog/, llvm_ir/output/, and *.lbug files are now properly ignored.
  • Open-source community files: Added CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md, .github/CODEOWNERS.
  • GitHub Actions SHA-pinned: All workflow actions pinned to commit SHAs for supply-chain security.
  • Non-destructive release pipeline: build.yml no longer force-pushes tags or deletes existing releases. Added semver monotonicity validation.
  • CI timeout reduced: 120min → 45min to fail fast on hangs.
  • Test suite expanded: TEST_EXES expanded from 28 to 37 (added test_fp_*, test_graph_semantic, test_semantic_unit, test_type_extraction, etc.). Manual debug tools moved to engine/manual/.
  • Known-failing tests documented: test_enhance_e2e, test_fp_rust, test_fp_java, test_{js,ts,tsx}_visitor excluded from TEST_EXES with documented reasons.

@Timwood0x10
Timwood0x10 merged commit 8983f8a into main Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant