Changelog
All notable changes to rust-recursive-deps-updater (rrdu) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning and Conventional Commits.
[v0.0.5] - 2026-10-11
Added
- Interactive TUI & Sliding-Window Pagination: Terminal interface with directional pagination (
←/→), item navigation (↑/↓), line filler padding calculation, and keyboard navigation controls (Enter,Backspace,u,Esc). - Headless Audit Mode (
--headless): Pure-safe non-interactive CI execution displaying formatted dependency audit tables with exit code0(clean) or1(updates pending/error). - Diagnostics Reporting (
--report): Hardware and OS diagnostic markdown report usingsysinfowith privacy sanitization of user home directory tokens. - CLI Reference Help (
--help/-h): Detailed CLI argument help texts powered by Clap derive. - Criterion Benchmark Suite: Comprehensive performance benchmarks (
benches/rrdu_benchmarks.rs) across sample sizes of 10, 20, 50, 100, 500, and 1000 items. - CI Documentation & Benchmark Pipeline: Automated GitHub Actions workflow (
pages.yml) building mdBook and embedding interactive Criterion benchmark reports on GitHub Pages. - Non-TTY Stream Protection: Proactively detects non-interactive streams in interactive mode and exits with a guidance message pointing to
--headless.
Changed
- Legacy Configuration Cleanup: Removed
updater.auto-updateandupdater.auto-scanfrom config models with backwards-compatible, non-breaking deserialization. - Default Viewport Size: Reduced default
updater.max-linesfrom 50 to 10 entries for responsive terminal rendering.
[v0.0.4] - 2026-09-30
Added
- Two-Tier Registry Client: High-performance crates.io integration querying the sparse index (
https://index.crates.io/) for crate availability and web API (/api/v1/crates/<crate>) for detailed metadata. - Security Vulnerability Auditing: Direct integration with RustSec OSV advisory database (
https://rustsec.org/packages/<crate>.json) to identify security advisories and vulnerable dependency versions. - Persistent Tri-Cache Engine: Generic disk-backed caching layer (
CacheRegistry<T>) stored in~/.rrdu/cache/with individual TTL policies (24 hours for index/API metadata, 6 hours for RustSec advisories). - Rate Limiting & Compliant HTTP: Outgoing crates.io request throttling with a 1-second cooldown (
TIME_BETWEEN_REQUESTS) and compliantUser-Agentheaders. - Standardized Structured Logging: Structured logging architecture with standardized 4-digit status codes (
1YXX-6YXX) and typed status macros (simple_status!,meta_status!) backed by thelogfacade andsimple_logger. - Rustdoc Documentation Enforcement: 100% Rustdoc documentation coverage across all public APIs, strictly enforced via
.githooks/pre-commitand GitHub ActionsdocsCI workflow. - Real-World Test Fixtures: Comprehensive offline test suite featuring captured index, API, and RustSec responses across 14 diverse crates.
Changed
- Zero Raw Console Output: Replaced all raw
println!andeprintln!calls across production code paths with structured status logging macros to prevent terminal output pollution and CI reporting corruption. - Configuration Schema Update: Updated
updater.auto-updateoptions in.rrduconfigto supportnone,semver-safe, andfull. - Crate Metadata Links: Added explicit
homepage(releases) anddocumentationlinks toCargo.toml.
Fixed
- Nested Sub-Config Discovery Recursion: Prevented recursive traversal from entering subdirectories containing their own
.rrduconfig, respecting sub-project boundaries (fixes #5). - Sparse Index 3-Letter Path Resolution: Corrected sparse index directory prefix resolution for 3-letter crate names (
3/<first-char>/<crate>). - Defensive Deserialization: Made nullable and missing API and RustSec response fields optional (
Option<T>) to prevent deserialization failures on edge cases.
[v0.0.3] - 2026-09-27
Added
- Workspace & Standalone Crate Discovery: Native recursive filesystem traversal discovering all
Cargo.tomlmanifests across cargo workspaces and nested standalone crates. - Hierarchical Ignore Engine: Scoped ignore handling supporting
.gitignore,.rrduignore, hidden directory exclusions (.*), and automatic crate build/source folder filtering (target,src). - Dependency AST Representation: Support for all Cargo dependency definitions (simple strings, inline tables, explicit table sections, workspace dependencies, and target-specific dependencies).
- SemVer Classification Engine: Built-in Cargo SemVer comparison categorizing updates into compatible bumps (
[No migration needed]) and breaking bumps ([Need manual migration]). - Granular Exclusion Schema: Support for project-wide and section-specific dependency exclusions in
.rrduconfig. - Sub-Config Support: Ability to delegate sub-crate configuration via
sub-config: true. - Zero External Traversal Dependencies: Eliminated
walkdirin favor of pure standard librarystd::fs::read_dir. - Unit Test Coverage: 23 passing unit tests verifying discovery, path resolution, ignore scoping, and dependency parsing.
Changed
- Migrated
.rrduconfigschema:tomlrenamed topath, introduced granularexclude.projectandexclude.sectionmapping, addedupdater.version.
[v0.0.2] - 2026-09-21
Added
- Configuration engine with YAML parsing via
noyalib(#![forbid(unsafe_code)]). - Path traversal defense rejecting parent references (
../) and root paths (/). - Initial CLI configuration generator (
rrdu --init). - Domain-specific typed error hierarchy (
ConfigError).
[v0.0.1] - 2026-09-20
Added
- Project foundation, governance, GitHub Actions CI/CD workflows, and GPL-3.0 licensing.