All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- APT
Clean()now respectsDryRun. Previously,apt autocleanexecuted regardless of theDryRunoption, silently defeating the safety mechanism users expect from dry-run mode. The YUM/Snap/Flatpak Clean implementations already honored DryRun; APT now matches that behavior. Regression tests added inmanager/apt/apt_clean_dryrun_test.go. - Docker test runners no longer mask test failures. The compose entrypoints used
bash -cwith&&chains and trailing|| trueon fixture-generation steps; due to bash operator precedence, the|| truecaught failures from earlier in the chain (includinggo test), letting failed tests pass CI silently. Switched tobash -ecwith explicit;separators so test failures abort immediately while fixture-generation steps remain individually allowed to fail. - Added
read_only: trueandno-new-privileges:trueto thetest-allaggregator service for defense-in-depth.
PackageInfoJSON output now uses snake_case field names (e.g.package_manager,new_version,additional_data) instead of Go's default PascalCase. Required fields (name,status,package_manager) are always emitted; optional fields useomitempty. Consumers parsing JSON output must update field names. (#40, thanks @aijanai)
go.modnow declaresgo 1.23.0(full version) instead ofgo 1.23, resolving Go toolchain download failures in some environments. (#40)
- YUM Package Manager Support: Full support for YUM package manager (RHEL/CentOS/Rocky Linux/AlmaLinux)
- Complete YUM implementation with all package operations (install, remove, upgrade, search, list)
- Comprehensive test suite including unit, integration, and mock tests
- YUM-specific exit code documentation and handling
- Real-world fixture-based testing with Rocky Linux outputs
- ARM64 Architecture Support: Docker testing now supports both AMD64 and ARM64 (Apple Silicon)
- Automatic architecture detection in all Dockerfiles
- Cross-platform development support for ARM64 machines
- Enhanced Testing Infrastructure:
- Multi-OS Docker testing support for Rocky Linux, AlmaLinux, Fedora, and Alpine
- Comprehensive fixture-based testing framework
- CommandRunner architecture for better testability
- Improved Documentation:
- Complete architecture documentation (ARCHITECTURE.md)
- Exit code documentation for all package managers
- Contributing guidelines (CONTRIBUTING.md)
- Enhanced development workflows and CI/CD documentation
- Upgraded to Go 1.23/1.24 for CI/CD workflows
- Enhanced CI/CD pipeline with multi-OS testing
- Improved project structure and organization
- Technical debt cleanup and APT Upgrade method fix
- APT Upgrade method now correctly uses
apt installfor specific packages
- ✅ CommandRunner Architecture: Complete architectural consistency (Issue #20, PR #26)
- ✅ APT & YUM executeCommand Pattern: Centralized command execution, eliminated code duplication
- ✅ Technical Debt Cleanup: Fixed APT Upgrade method bug, removed misleading TODOs, verified no resource leaks
- ✅ Security Enhancements: Input validation for package names (Issue #23, PR #25)
- ✅ Command Injection Prevention: Comprehensive ValidatePackageName implementation across all package managers
- ✅ APT Exit Code Bug: Fixed in commit 3751f45 - now properly propagates errors (Issue #21)
- ✅ Snap Exit Code Bug: Fixed in commit 3751f45 - now properly handles usage errors (Issue #22)
- ✅ Flatpak Exit Code Bug: Fixed in commit 3751f45 - now properly handles general errors (Issue #24)
| Workflow | Status | Description |
|---|---|---|
| Test and Coverage | ✅ | Go 1.23/1.24 testing with coverage reporting |
| Lint and Format | ✅ | golangci-lint, gofmt, go vet quality checks |
| Build | ✅ | Multi-version build verification |
| Multi-OS Tests | ✅ | Docker-based testing across Ubuntu, Rocky Linux, Alpine |
| Release Binaries | ✅ | Cross-platform binary releases |
- ✅ Pre-commit hooks: Automated code quality and security checks
- ✅ Go mod verification: Dependency integrity validation
- ✅ Multi-OS compatibility: Docker testing with Go 1.23.4 across distributions
- ✅ Fixture-based testing: Real package manager output validation
Current development focus areas (see GitHub Issues and CLAUDE.md for detailed tracking):
- Security scanning with Snyk - Add to CI/CD pipeline
- CommandRunner migration - Complete Snap and Flatpak integration (Issues #28, #29)
- Test coverage improvements - YUM gaps (Issue #32), Snap & Flatpak comprehensive suites
- CLI improvements - Upgrade display (Issue #3), macOS apt conflict (Issue #2)
- Code quality - Context support, custom error types, DRY principle improvements
- New package managers - DNF, APK, Homebrew, Windows package managers
- Bug fixes - APT multi-arch parsing (Issue #15), version parsing improvements
- APT (Ubuntu/Debian) - Full feature support
- YUM (Rocky Linux/AlmaLinux/RHEL) - Full feature support
- Snap (Universal packages) - Full feature support
- Flatpak (Universal packages) - Full feature support
- DNF (Fedora/RHEL 9+) - Implementation in progress
- APK (Alpine Linux) - Implementation in progress
- Homebrew (macOS) - Planned for cross-platform expansion
- Chocolatey/Scoop/winget (Windows) - Planned for Windows support
- Zypper (openSUSE) - Lower priority