Skip to content

v0.12.0

Choose a tag to compare

@clouatre clouatre released this 12 May 16:00
v0.12.0
4142f07

Summary

Adds aptu-coder-remote, a new crate with two MCP tools for exploring and reading remote GitHub and GitLab repositories without cloning. Introduces a persistent L2 disk cache that survives process restarts across all analyze_* tools, an analyze_module fast path, and depth-limited traversal for the remote tools. Observability coverage is extended with new span attributes, a cache_hits_total counter, metrics unit corrections, and JSONL fields for exec_command. Two bug fixes address GitLab nested namespace URL construction and a rustls CryptoProvider panic at startup.

What's Changed

Features

  • Remote tools crate (aptu-coder-remote): New third crate ships two MCP tools -- remote_tree explores a remote GitHub or GitLab repository directory structure without cloning, and remote_file fetches the content of a single file with optional line-range slicing; both require a personal access token via GITHUB_TOKEN or GITLAB_TOKEN (#845)

Performance

  • Persistent L2 disk cache for analyze_* tools: A sled-backed on-disk cache sits behind the existing in-memory L1 layer for analyze_directory, analyze_file, analyze_module, and analyze_symbol; cache entries survive process restarts, reducing cold-start latency on repeated analysis of unchanged files; moka removed from exec_command (#840)
  • analyze_module fast path: extract_module_info now takes a dedicated fast path that skips full AST traversal when only the function/import index is needed, cutting latency for the lightest tool call in the suite (#865)
  • Depth-limited tree traversal for remote tools: gitlab_fetch_tree and github_fetch_tree now apply true depth pruning during traversal rather than filtering after the fact, eliminating unnecessary API round-trips on deep repositories (#864)

Observability

  • New telemetry fields: mcp.session.id and client.name are now recorded as span attributes at session init; a cache_hits_total counter tracks L1/L2 cache hits across all analyze_* tools; exec_command JSONL records gain exit_code and timed_out fields (#837)
  • Metrics corrections: mcp.server.operation.duration histogram unit corrected from ms to s; bucket boundaries aligned to OpenTelemetry conventions; MCP label set normalised; hardcoded Miss removed from analyze_symbol metrics path (#834, #863)
  • Remote tool metrics: remote_tree and remote_file now emit JSONL metrics records and respect description guards on startup (#861)

Bug Fixes

  • GitLab nested namespace URLs: Path segments for groups with more than one level of nesting are now joined correctly, fixing 404s on repositories under deep namespace hierarchies (#851)
  • rustls CryptoProvider at startup: The default rustls crypto provider is now installed at server startup, resolving a panic that occurred when the remote crate was the first caller of rustls (#855)

Documentation

  • Post-release audit: README.md, AGENTS.md, OBSERVABILITY.md, and tool descriptions updated to reflect the new crate structure, updated tool count (nine tools), MCP protocol version, install command, and dual-stream observability model (#838, #847, #868)

Breaking Changes

None - this release is fully backward compatible with v0.11.0.

Full Changelog: v0.11.0...v0.12.0