v0.12.0
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_treeexplores a remote GitHub or GitLab repository directory structure without cloning, andremote_filefetches the content of a single file with optional line-range slicing; both require a personal access token viaGITHUB_TOKENorGITLAB_TOKEN(#845)
Performance
- Persistent L2 disk cache for
analyze_*tools: A sled-backed on-disk cache sits behind the existing in-memory L1 layer foranalyze_directory,analyze_file,analyze_module, andanalyze_symbol; cache entries survive process restarts, reducing cold-start latency on repeated analysis of unchanged files;mokaremoved fromexec_command(#840) analyze_modulefast path:extract_module_infonow 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_treeandgithub_fetch_treenow 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.idandclient.nameare now recorded as span attributes at session init; acache_hits_totalcounter tracks L1/L2 cache hits across allanalyze_*tools;exec_commandJSONL records gainexit_codeandtimed_outfields (#837) - Metrics corrections:
mcp.server.operation.durationhistogram unit corrected frommstos; bucket boundaries aligned to OpenTelemetry conventions; MCP label set normalised; hardcodedMissremoved fromanalyze_symbolmetrics path (#834, #863) - Remote tool metrics:
remote_treeandremote_filenow 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
CryptoProviderat startup: The defaultrustlscrypto provider is now installed at server startup, resolving a panic that occurred when the remote crate was the first caller ofrustls(#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