Releases: revelaction/privage
v0.31.1
Release v0.31.0 — Atomic Writes and Terminology Alignment
This release introduces significant improvements to data integrity through atomic file operations, enforces stricter naming conventions, and aligns terminology across the codebase and documentation.
🚀 New Features
- Atomic File Writes: Implemented atomic write operations for encrypted files. Data is now written to a temporary file and moved to its final destination only upon success, preventing data corruption during interruptions.
- Naming Convention Enforcement: The CLI now strictly enforces the .privage file naming convention for improved security and repository consistency.
🛠 Improvements & Refactoring
- Terminology Migration: Transitioned from "repository" to "directory" and finalized the move from the .age extension to the native .privage extension.
- Modular Architecture: Moved header hashing logic into the header package to improve separation of concerns.
- Robust Error Handling: Enhanced error propagation in the headerGenerator and improved failure handling within the list command.
- Optimized Validation: Simplified internal hex character validation logic.
📝 Documentation
- Installation Guides: Updated installation instructions to cover multiple platforms and updated terminology to match the new standards.
- Terminology Refresh: All help text and README sections now consistently use "directory" and .privage.
🧪 Testing
- Added comprehensive unit tests for isPrivageFile to ensure naming conventions are correctly validated.
- Introduced new error handling tests for the list command.
- Cleaned up integration test data and resolved underlying test suite merge conflicts.
🐛 Bug Fixes
- Ensured proper cleanup of temporary files during encryption failures.
- Corrected mismatched error message expectations in integration tests to align with actual CLI output.
Full Changelog: v0.30.0...v0.31.1
v0.30.0
Release v0.30.0
Refactoring & CLI Improvements:
- Centralized command parsing logic into parse.go for better maintainability.
- Improved CLI flag parsing and error handling consistency.
- Centralized error printing using FprintErr.
- Improved error handling and cleanup in the encryptSave process.
Test Coverage & Quality:
- Significantly increased unit test coverage.
- Added comprehensive unit tests for add, delete, bash, and setup commands.
- Added error path coverage for encryption and file operations.
- Refactored existing tests to use subtests for better clarity.
CI/CD:
- Excluded integration tests from the default test suite.
Documentation:
- Fixed badge labels and updated documentation.
Full Changelog: v0.29.0...v0.30.0
v0.29.0
Release v0.29.0
This release features a significant overhaul of the CLI architecture, improved error handling, and enhanced testability and coverage.
Major Highlights:
- CLI Architecture: Centralized flag parsing and command dispatching in the main package.
- Testability: Unified command signatures and injected UI (Stdout/Stderr) dependencies.
- Error Handling: Implemented sentinel errors and improved error reporting across all subcommands.
- UX Improvements: Correctly separated diagnostic messages (stderr) from data output (stdout).
- Validation: Added checks to prevent duplicate labels in the 'add' command.
- Quality: Resolved numerous linting issues (errcheck, staticcheck, typecheck).
- Coverage: Added comprehensive unit and integration tests for core logic and setup.
Refactorings:
- Moved pre-flight checks to the 'init' command.
- Consolidated test helpers and removed unused types.
- Simplified setup logic and improved auto-discovery tests.
Full Changelog: v0.28.0...v0.29.0
v0.28.0
Release v0.28.0
Features:
- New
versioncommand: Added a dedicated command to display version, commit hash, and Yubikey support status. - Bash Completion: Added autocomplete support for the
versioncommand. - Improved Version Output:
privage version(and help) now clearly indicates if the binary was built with Yubikey support enabled or disabled. - Status UX:
initandstatuscommands now display full paths for config and identity files for better clarity.
Infrastructure & Quality:
- Integration Testing: Introduced a robust integration test suite using
testscript. - CI: Added a new GitHub Actions workflow (
test-integration.yml) to run integration tests on every push. - Tests: Added scenarios for basic flow, credential lifecycle, crypto operations, and error handling.
Fixes:
- Resolved linter errors in test files.
- Fixed unused imports in status command.
- Updated documentation with integration test status badge.
Full Changelog: v0.27.0...v0.28.0
v0.27.0
Full Changelog: v0.26.0...v0.27.0
v0.26.0
Full Changelog: v0.25.0...v0.26.0
v0.25.0
feat: add noyubikey build tag for CGO-less builds
refactor: fix file descriptor leaks and improve I/O architecture
fix: ensure robust error handling for Flush and Close operations
ci: improve version embedding and multi-target build support
Full Changelog: v0.24.0...v0.25.0
v0.23.0 piv-go v2
Core Improvements:
- Major refactor of PIV/YubiKey identity management with abstract device I/O.
- Improved PIV security by enforcing RSA for Age key protection.
- Refactored headerGenerator to use filepath.WalkDir with SkipDir for efficient, non-recursive streaming.
- Clarified and enforced flat repository structure (subdirectories are now ignored).
Architectural Changes:
- Introduced 'fs' package to centralize and mock filesystem operations.
- Improved error handling across the codebase, specifically for file Close operations.
- Updated piv-go dependency to v2.4.0.
- Decoupled setup and configuration logic for better testability.
Testing & Quality:
- Added comprehensive unit tests for header generator, identity, and config packages.
- Significant increase in test coverage (from ~15% to ~25%).
- Resolved multiple errcheck linting issues.
- Fixed resource leaks (file descriptors) in directory scanning.
Full Changelog: v0.22.0...v0.23.0
build targets
Full Changelog: v0.20.0...v0.22.0
The show
show accepts second argument for credential field retrieval
Full Changelog: v0.12.0...v0.20.1