Releases: kioku/aperture
Releases · kioku/aperture
v0.1.9
[0.1.9] - 2026-03-04
⚙️ Miscellaneous Tasks
- Batch update cargo dependencies (#112)
- Trigger binary-size workflow on push to feature branch
- Echo binary sizes to stdout for log capture
- Correct job output names and Windows step ID in binary-size workflow
- Remove dead push trigger and unused DATE env var from binary-size workflow
- Fix matrix output aggregation in binary-size workflow
- Align artifact action versions with rest of project
- Bump version to 0.1.9
🐛 Bug Fixes
- Ensure dependent batch captures raw unfiltered response
- Validate duplicate operation IDs in batch dependency graph
- Track all capture_append providers for implicit dependencies
- Include operation IDs in cycle detection error messages
- Replace tautological assertion in dry-run integration test
- Treat capture failure as operation failure in batch result
- Store interpolated args in dependent batch operation results
- Remove false-positive dependency detection from literal {{ in args
- Reduce extract_variable_references visibility to module-private
- Treat empty capture/depends_on as absent in dependency detection
- Preserve JSON capture semantics for dependent workflows
- Preserve captured string values and JSON-escape list interpolation
- Apply batch rate limits in dependent execution mode
- Reject empty-string capture results
- Report concrete dependency cycle paths
- Resolve ast-grep no-println lint warnings
- Raise default log level to warn so spec-load warnings are visible
- Revert tracing::error! to eprintln! for user-facing usage errors
- Suppress no-println for errors.rs via rule ignores instead of per-call comments
- Restore multi-line eprintln! and add constraint rationale to ignores
- Use required_unless_present so --body-file satisfies required body
- Add body_file to --describe-json batch manifest
- Interpolate body_file path in dependent batch operations
- Reject body_file field when --body-file or --body appears in args
- Trim trailing whitespace from body read via --body-file
- Catch --body-file= equals-sign form in body_file conflict guard
- Restrict write_error visibility to private — test submodule accesses it as a child module
- Hoist wiremock imports to module level in resilience tests — remove redundant inner use statements
- Assert touch exit code in test_cleanup_removes_stale_tmp_files — distinguish spawn failure from non-zero exit
- Replace touch -d with File::set_modified for cross-platform mtime backdating
- Switch to platform-conditional TLS crypto provider
- Install platform-specific rustls crypto provider before client creation
- Correct PaginationInfo serde attrs and add PaginationInfo imports
- Prevent infinite loop when Link header URL has no query string
- Set PaginationManifestInfo default strategy to "none"
- Align pagination field indentation in docs_tests.rs
- Emit structured NDJSON error on mid-stream pagination failure
- Derive Copy on PaginationStrategy (fieldless enum)
- Warn when --jq is combined with --auto-paginate
- Document $ref response limitation in pagination heuristics
- Treat "skip" as record-offset in advance_offset_strategy
- Warn when --format is ignored with --auto-paginate
📚 Documentation
- Update changelog for v0.1.8 and automate via release CI
- Add documentation for v0.1.8 features
- Remove author attributions and agent-specific guidance files
- Update README performance claims to match measured values
- Add documentation for dependent batch workflows
- Document --body-file flag and body_file batch field
- Update cli/errors module comment to reflect writer-injection design
- Update binary size optimization doc for platform-conditional TLS
- Record v0.1.9 per-platform binary size measurements
- Update binary size claim to < 6 MB (default features, all platforms)
- Add --auto-paginate section to agent integration guide
🚀 Features
- Extend BatchOperation with capture, capture_append, and depends_on fields
- Implement dependency graph validation and topological sort
- Implement variable interpolation engine
- Implement JQ-based value extraction for batch captures
- Wire dependent batch execution with topological ordering
- Expose batch schema and dependent workflow capabilities in --describe-json
- Add --body-file arg to generator command tree
- Extend extract_body to handle --body-file
- Add body_file field to BatchOperation
- Add binary-sizes.json and automate population from CI
- Implement --auto-paginate flag with cursor, offset, and link-header strategies
🧪 Testing
- Add integration tests for dependent batch workflows
- Add coverage for --body-file flag
- Verify batch execution reads request body from body_file
- Cover body_file path interpolation in dependent batch
- Cover all print_error network branches via write_error
- Unit tests for execute_with_retry and execute_with_retry_tracking
- Cover cache management methods and temp-file cleanup
- To_json() coverage for all ErrorKind variants and external error types
- Extract FailThenSucceed responder to module level in resilience tests
- Add message assertion to test_to_json_http_request_kind
- Clarify doc comment on test_to_json_network_status_fallback_no_context
- Tighten retry exhaustion assertion — drop dead disjunct
v0.1.8
[0.1.8] - 2026-02-15
Arch
- Decouple execution core from CLI layer (clap, stdout) (#77)
Deps
- Add tracing and tracing-subscriber for logging
⚙️ Miscellaneous Tasks
- Remove duplicate crates.io publish step
- Move entire release process to GitHub Actions
- Apply rustfmt formatting
- Add conventional commit message hook
- Add cargo-deny configuration
- Add Dependabot configuration for cargo and github-actions
- Upgrade CI workflow
- Upgrade release workflow
- Add exclude list to Cargo.toml for crates.io hygiene
- Add fail-fast: false to integration-tests matrix
- Bump oas3 from 0.17.0 to 0.20.1
- Replace bincode with postcard for cache serialization
- Add nix build and flake check steps to CI workflow
- Add nix result symlink to .gitignore
- Release v0.1.8
🐛 Bug Fixes
- Prevent panic on Unicode body truncation in logging
- Standardize redaction markers to [REDACTED]
- cache: Scrub auth headers before storing CachedRequestInfo
- cache: Skip caching for authenticated requests by default
- deps: Upgrade bytes to 1.11.1 to resolve RUSTSEC-2026-0007
- Validate API context names to prevent path traversal (#74)
- Address review findings for atomic I/O and advisory locking
- Resolve clippy warnings in cache_fingerprint_tests for CI
- Resolve ast-grep and clippy linting violations
- Honor global output format when api command uses default
- Resolve PR review findings for batch cache path and legacy docs
- Restore Zlib license in deny.toml
- Move unix-gated dependencies to cross-platform section
- Overlay command mapping fields onto --describe-json manifest
- Use effective display names in exec shortcut resolution paths
- Align mapping collision detection with generator name resolution
- Align search effective_command_path with generator name resolution
- Prevent secret removal from erasing command mappings and environment URLs
- Correct minor issues in search and shortcut resolution
- Align build_full_command group fallback with generator and search
- Add conflicts_with between --group and --operation in set-mapping
- Add conflicts_with between --group and --operation in remove-mapping
- Reject empty string values in command mapping configuration
- Avoid creating empty operation mapping entries
- Validate spec existence for mapping removals
- Honor mapped command names in help and listings
- Resolve mapped command names in operation translation
📚 Documentation
- Add homebrew and cargo-binstall installation options
- Add comprehensive debugging and logging guide
- Update debugging guide with new logging features
- adr: Document cache policy for authenticated requests
- Add Nix installation instructions to README
- Add ADR 009 for custom command mapping approach
🚀 Features
- Initialize tracing-subscriber for debug logging
- Add -v flag for debug logging control
- Create logging module with redaction utilities
- Integrate logging into HTTP request/response execution
- Enhance logging security with expanded redaction
- Add APERTURE_LOG_FILE for file-based logging
- Add dynamic x-aperture-secret redaction in logs
- Warn on invalid APERTURE_LOG_FORMAT values
- cache: Add allow_authenticated config option
- cache: Add scrub_auth_headers utility function
- Spec cache fingerprint invalidation when source file changes (#75)
- Add flake.nix with package variants and devShell
- Add CommandMapping and OperationMapping models to ApiConfig
- Add display_group, display_name, aliases, hidden fields to CachedCommand
- Apply command mappings during spec transformation
- Update command tree generator to use display names, aliases, and hidden
- Update search and shortcuts to recognize display names and aliases
- Include mapping fields in --describe-json capability manifest
- Add CLI commands for managing command mappings
- Add --remove-alias flag to config set-mapping command
🚜 Refactor
- Resolve PR review findings for executor/CLI decoupling
🧪 Testing
- Add integration tests for logging functionality
- cache: Add security tests for auth header scrubbing
- Add domain, translate, render, and executor decoupling coverage
- Add integration tests for command mapping feature
- Add unit tests for command mapping config manager methods
- Add search tests for display_name, alias, and display_group matching
v0.1.7
⚙️ Miscellaneous Tasks
- Add ast-grep configuration with custom Rust linting rules
- Suppress no-println warnings with ast-grep-ignore comments
- Exclude files with test modules from no-unwrap rule
- Update slab to 0.4.11 to fix RUSTSEC-2025-0047
- Suppress ast-grep no-println warnings in output module
- Update dependencies to latest versions
- Upgrade toml from 0.8 to 0.9
- Upgrade reqwest from 0.12 to 0.13
- Improve pre-commit hooks for better local testing
🎨 Styling
- Fix ast-grep linting issues
🐛 Bug Fixes
- Use sibling relationship for #[cfg(test)] module exclusion
- Resolve clippy warnings in test files and align pre-commit with CI
- Parse EDITOR env var to support commands with arguments
- ci: Override target-cpu=native to prevent SIGILL on cached builds
- test: Handle Windows .exe extension in binary name assertion
- Make quiet mode behavior consistent across all commands
- Show data in quiet mode for list-secrets and list-urls
- Switch from native-tls to rustls for cross-compilation support
- Use aws-lc-rs crypto backend instead of ring for Apple Silicon support
- Initialize rustls crypto provider for test compatibility
- ci: Add --force to cargo-nextest install for cache consistency
- ci: Add fallback check for cargo-nextest availability
- Filter skipped endpoints from --describe-json manifest
- config: Add debug assertions for type mismatches in set_setting
- Commit changelog before cargo release
📚 Documentation
- Restructure README and split into focused documentation (#61)
- Update binary size to 4.0MB (aws-lc-rs crypto backend)
- config: Add checklist for adding new settings
- Add documentation for v0.1.7 features
🚀 Features
- agent: Expose response schemas in describe manifest (#60)
- Add quiet mode for agent-friendly output suppression
- Hide global flags from dynamic command help
- Add multi-platform release workflow with cargo-binstall support
- Auto-update homebrew formula on release
- Add endpoint statistics showing X of Y endpoints available
- Add toml_edit for comment-preserving config edits
- Add SettingKey enum and validation for config settings
- Add Set, Get, Settings subcommands to config
- Implement ConfigManager methods for settings
- Implement command handlers for set/get/settings
- config: Add timeout range validation
- Add Retry-After header parsing support
- Add RetryInfo and RetryResult for retry tracking
- Add RetryDefaults configuration struct
- Add retry settings to settings system
- Add retry-related command line flags
- Thread retry configuration through executor
- Wire retry configuration from CLI to executor
- Add retry fields to BatchOperation
- Integrate retry logic into batch execution
- Enhance JSON error output with detailed retry info
🚜 Refactor
- Replace .unwrap() with .expect() in production code
- Eliminate all nested if statements (138 violations)
- Eliminate all max-nesting-depth violations (21 errors)
- Refine no-nested-if rule to reduce false positives
- Fix remaining no-nested-if violations after rule refinement
- Consolidate bonus score helpers into single generic function
- config: Extract value_from_config helper to reduce duplication
- Extract print_settings_list to reduce nesting depth
- Improve retry logic code quality
- Remove unused retry_status_codes config field
🧪 Testing
- Add batch operations quiet mode integration test
- Add assertion verifying command count matches available endpoints
- Add unit tests for ConfigManager settings methods
- Add integration tests for config set/get/settings commands
- Add test verifying TOML comments are preserved by set_setting
- Add comprehensive unit tests for is_retryable_status
- Add integration tests for retry behavior
- Update settings count expectation for retry config
v0.1.6
⚙️ Miscellaneous Tasks
- Clean up unused imports and fix warnings
- Enhance release script with changelog automation
🐛 Bug Fixes
- Resolve panic conditions and improve error handling
- Resolve panic conditions and improve error handling for production stability
- Rename help command to docs to avoid clap conflict
- docs: Replace .unwrap() with .ok() for consistency
- Resolve compilation errors with openapi31 and jq features
- Resolve variable shadowing to enable jq feature compilation
- Migrate to jaq v2.x to resolve compilation and functionality issues
- Convert tags with spaces to kebab-case for CLI compatibility
- Convert tags to kebab-case in documentation generator
- Resolve clap panic from parameter name conflicts and add boolean parameter support
- Enforce required boolean parameters with proper validation
- Make boolean path parameters consistently optional
- Ensure boolean parameters work correctly in positional args mode
📚 Documentation
- Update CLAUDE.md to reflect working jq feature with v2.x
- Update README to reflect working jq feature
🚀 Features
- Add search command to CLI interface
- Add enhanced help with examples
- Improve error messages with smart suggestions
- Implement command shortcuts and aliases
- Integrate comprehensive documentation features
- Add original_tags field for full tag consistency in JSON manifests
- Add boolean header parameter support
🚜 Refactor
- Break down long generate_command_help function
- Move inline imports to module/function level for better performance and readability
- Eliminate remaining high-priority inline imports in production code
- Fix final production code inline import in transformer.rs
- Complete inline import elimination - move all remaining imports to proper scope
- Complete standardization of import patterns
🧪 Testing
- Fix list-commands assertion to expect 'General' instead of 'default'
- Add integration tests for --show-examples execution path