Skip to content

Latest commit

 

History

History
117 lines (90 loc) · 6.14 KB

File metadata and controls

117 lines (90 loc) · 6.14 KB

Changelog

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.

[Unreleased]

[0.1.7] - 2026-05-10

Security

  • APT Clean() now respects DryRun. Previously, apt autoclean executed regardless of the DryRun option, 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 in manager/apt/apt_clean_dryrun_test.go.
  • Docker test runners no longer mask test failures. The compose entrypoints used bash -c with && chains and trailing || true on fixture-generation steps; due to bash operator precedence, the || true caught failures from earlier in the chain (including go test), letting failed tests pass CI silently. Switched to bash -ec with explicit ; separators so test failures abort immediately while fixture-generation steps remain individually allowed to fail.
  • Added read_only: true and no-new-privileges:true to the test-all aggregator service for defense-in-depth.

Changed

  • PackageInfo JSON 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 use omitempty. Consumers parsing JSON output must update field names. (#40, thanks @aijanai)

Fixed

  • go.mod now declares go 1.23.0 (full version) instead of go 1.23, resolving Go toolchain download failures in some environments. (#40)

[0.1.6] - 2025-11-01

Added

  • 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

Changed

  • Upgraded to Go 1.23/1.24 for CI/CD workflows
  • Enhanced CI/CD pipeline with multi-OS testing
  • Improved project structure and organization

Fixed

  • Technical debt cleanup and APT Upgrade method fix
  • APT Upgrade method now correctly uses apt install for specific packages

Recent Achievements ✅

Architecture & Code Quality

  • 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

  • Security Enhancements: Input validation for package names (Issue #23, PR #25)
  • Command Injection Prevention: Comprehensive ValidatePackageName implementation across all package managers

Bug Fixes

  • 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)

CI/CD Status

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

Infrastructure Status

  • 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

Active Development

Current development focus areas (see GitHub Issues and CLAUDE.md for detailed tracking):

High Priority Pending

  • Security scanning with Snyk - Add to CI/CD pipeline
  • CommandRunner migration - Complete Snap and Flatpak integration (Issues #28, #29)

Medium Priority Pending

  • 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

Low Priority Pending

  • New package managers - DNF, APK, Homebrew, Windows package managers
  • Bug fixes - APT multi-arch parsing (Issue #15), version parsing improvements

Platform Support Status

Currently Supported ✅

  • 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

In Development 🚧

  • DNF (Fedora/RHEL 9+) - Implementation in progress
  • APK (Alpine Linux) - Implementation in progress

Planned 📋

  • Homebrew (macOS) - Planned for cross-platform expansion
  • Chocolatey/Scoop/winget (Windows) - Planned for Windows support
  • Zypper (openSUSE) - Lower priority