Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- CI covering fmt, clippy, tests, MSRV, coverage floor, rustdoc, `cargo-deny` and a publish
dry-run, plus a tag-driven crates.io release workflow

### Fixed

- Rust trait methods declared without a default body (`fn greet(&self);`) are now extracted. They
parse as `function_signature_item` rather than `function_item` and were previously classified as
nothing at all, so a trait interface produced no graph node and no chunk — invisible to both
structural and semantic search. Such declarations are indexed as definitions but deliberately are
**not** call targets: a call dispatches to an implementation, and letting declarations compete for
the same name would have made every single-impl trait method call ambiguous, and therefore dropped.
- Binary content can no longer reach chunk output. The NUL sniff lived only in `chunk_file`, which
the graph-enabled walk never calls, so a binary blob that happens to be valid UTF-8 was windowed
with raw NUL bytes in `Chunk::content`. The guard now sits where a chunk is produced and in the
walk ahead of both consumers, so the graph no longer ingests binary content either. Skipped files
are reported via the new `WalkStats::files_skipped_binary` counter instead of vanishing.

### Security

- `pdf-extract` is floored at 0.12, the first release depending on `lopdf >= 0.42`, which patches
[RUSTSEC-2026-0187](https://rustsec.org/advisories/RUSTSEC-2026-0187) — unbounded recursion on
deeply nested PDF objects that aborts the process with `SIGABRT`. Because that is an abort and
not a panic, the crate's `catch_unwind` guard could not contain it.

[0.1.0]: https://github.com/vymalo/codegraph/releases/tag/v0.1.0
[0.1.0]: https://github.com/vymalo/lci-codegraph/releases/tag/v0.1.0
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ edition = "2024"
# 1.87 fails, 1.88 passes. Do not lower this to match lopdf's own manifest.
rust-version = "1.88"
license = "MIT"
repository = "https://github.com/vymalo/codegraph"
homepage = "https://github.com/vymalo/codegraph"
repository = "https://github.com/vymalo/lci-codegraph"
homepage = "https://github.com/vymalo/lci-codegraph"
documentation = "https://docs.rs/lci-codegraph"
description = "Code-graph extractor: semantic chunking, a cross-file structural call graph, and embedding-prep over one tree-sitter parse."
readme = "README.md"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# lci-codegraph

[![CI](https://github.com/vymalo/codegraph/actions/workflows/ci.yml/badge.svg)](https://github.com/vymalo/codegraph/actions/workflows/ci.yml)
[![CI](https://github.com/vymalo/lci-codegraph/actions/workflows/ci.yml/badge.svg)](https://github.com/vymalo/lci-codegraph/actions/workflows/ci.yml)
[![Crates.io](https://img.shields.io/crates/v/lci-codegraph.svg)](https://crates.io/crates/lci-codegraph)
[![docs.rs](https://img.shields.io/docsrs/lci-codegraph)](https://docs.rs/lci-codegraph)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
Expand Down
Loading