Skip to content

v0.6.0 — API audit, NabError, structural refactoring

Choose a tag to compare

@MikkoParkkola MikkoParkkola released this 14 Mar 16:51
· 310 commits to main since this release

Highlights

Typed error hierarchyNabError with 9 semantic variants replaces bare anyhow::Error at public API boundaries. Consumers can now match on InvalidUrl, SsrfBlocked, ProviderError, AuthError, etc.

Structural refactoring — 5 monolithic files (up to 2172 LOC) decomposed into focused submodules. No file exceeds 800 LOC. Public API surface reduced (13 internal re-exports removed).

Safety hardening — ~10 unwrap()/expect() calls replaced with proper error propagation. UTF-8 truncation panics eliminated.

What's New

  • NabError typed error hierarchy (9 variants)
  • Config structs replace positional parameters across all CLI commands
  • 6 shared helpers consolidated in cmd/mod.rs

Breaking Changes (Library API)

  • Public functions now return Result<T, NabError> instead of Result<T, anyhow::Error>
  • 13 internal re-exports removed from lib.rs
  • SSRF validation returns NabError::SsrfBlocked instead of generic error

Bug Fixes

  • Silent TOML field mismatch in concurrent_fetch_custom_item_limit
  • UTF-8 truncation panics across cmd/ layer
  • SPA status messages moved from stdout to stderr

Install

cargo install nab
# or
brew install nab
# or
cargo binstall nab

Full changelog: https://github.com/MikkoParkkola/nab/blob/main/CHANGELOG.md