Highlights
- CI Improvements: Automated linting and formatting on pull requests via pre-commit.ci, and a Sonar zero-issues merge gate have been implemented.
- Graph Indexing: The name property is now indexed for improved graph read-path lookups. SQL routines are also indexed to resolve calls that name their target in a string.
- Duplicate Code Detection: An AST-based duplicate code detection system has been introduced, alongside fixes for duplicate detection across multiple repositories.
- Agentic QA: A new agentic QA benchmark harness and indexing-time benchmark have been added.
- Enhanced Documentation: Several documentation updates clarify various aspects including piwheels failures, relationship columns, macOS OpenSSL requirements, and the use of
--cleanwith backfilling.
What's Changed
- ci: configure pre-commit.ci to auto-fix lint and format on PRs by @vitali87 in #1389
- fix: index the name property for graph read-path lookups by @vitali87 in #1384
- feat: return relationship context from generated caller queries by @vitali87 in #1386
- fix(tests): make the well-known-symbols dead-code e2e observable and passing by @vitali87 in #1393
- ci: promote every release highlight to a news entry by @vitali87 in #1391
- feat: agentic QA benchmark harness and indexing-time bench by @vitali87 in #1388
- feat: AST-based duplicate code detection (cgr duplicates + agent tool) by @vitali87 in #1392
- fix(readme): render every latest-release highlight in Latest News by @vitali87 in #1395
- feat: index SQL routines and resolve calls that name their target in a string by @vitali87 in #1394
- ci: gate merges on a 5/5 Greptile review of the head commit by @vitali87 in #1396
- feat: duplicates eval plus fixes for five bugs found dogfooding clone detection across 14 repos by @vitali87 in #1404
- refactor: reduce cognitive complexity of _similar_groups and _emit_duplicates below Sonar threshold by @vitali87 in #1406
- ci: add Sonar zero-issues merge gate by @vitali87 in #1407
- fix: warn about public compose ports when the stack is already running (#1380) by @vitali87 in #1408
- test: skip grammar-dependent tests when optional tree-sitter grammars are absent (#1371) by @vitali87 in #1411
- fix: make cgr help work with typer's vendored click (#1409) by @vitali87 in #1412
- test: skip non-grammar optional-dependency tests on a base install and add a base-install CI job (#1410) by @vitali87 in #1413
- fix: C# ref write-back sees through interface and abstract dispatch with a sole implementer (#1356) by @vitali87 in #1414
- fix: C# internal namespace imports target the referenced Module nodes (#1347) by @vitali87 in #1416
- docs: explain the piwheels Bookworm failure and document the Python 3.12 floor by @vitali87 in #1417
- docs: clarify the relationship-column warning in the query_graph description by @vitali87 in #1418
- docs: document macOS pymgclient source-build OpenSSL requirements by @vitali87 in #1419
- feat: fingerprint macro_rules definitions from their token trees by @vitali87 in #1420
- docs: accept and document the same-qn bodied module node merge with a pin test by @vitali87 in #1422
- docs: accept and pin the shadow-unaware nested factory identity resolution as a documented limitation by @vitali87 in #1423
- feat: clickable editor links in the duplicates report plus --open side-by-side diff by @vitali87 in #1421
- docs: exclude globs must be quoted and cover the whole path by @vitali87 in #1424
- feat: parse markdown headings into a nested Section graph by @vitali87 in #1428
- fix: re-parse ast-grep and document files on watched edits by @vitali87 in #1430
- docs: add the claimed label for coordinating concurrent agent sessions by @vitali87 in #1431
- feat: agent-level trust boundary for web_search via a sandboxed research sub-agent by @vitali87 in #1425
- fix: keep ast-grep modules distinct when file stems collide across extensions by @vitali87 in #1435
- fix: keep uv.lock's project version in step with releases by @vitali87 in #1433
- fix: validate labels.yml on the PR that changes it rather than after merge by @vitali87 in #1440
- test: assert the suffix-distinct module names, not merely that they differ by @vitali87 in #1436
- docs: note that document module names carry their extension by @vitali87 in #1437
- docs: state what --clean costs when backfilling fingerprints by @vitali87 in #1439
- feat: LINKS_TO edges from markdown links to repository files by @vitali87 in #1445
- feat: Ruby structure oracle graded against Prism by @vitali87 in #1450
- feat: build orchestrator prompt search sections conditionally on registered tools by @vitali87 in #1446
- fix: recommend 'cgr start --clean --update-graph' instead of bare --clean by @vitali87 in #1444
- fix: skip the live dotnet-trace test when the tool cannot run by @vitali87 in #1451
- fix: finding nodes were dropped from the protobuf index by @vitali87 in #1453
- test: pin python frontend column conversions to absolute values by @vitali87 in #1458
- feat: C++ libclang frontend behind the EmittingFrontend protocol by @vitali87 in #1459
- feat: record per-module frontend degradation instead of hiding it by @vitali87 in #1464
- docs: how to add a language frontend by @vitali87 in #1457
- fix: dispatch EMITTING_FRONTENDS generically by phase by @vitali87 in #1461
- fix: bound frontend helper-tool builds so a wedged toolchain degrades by @vitali87 in #1463
- fix: fingerprint external tool versions, not just the frontend mode by @vitali87 in #1466
Full Changelog: v0.0.720...v0.0.770