Changes for version 0.08 - 2026-08-07
- Enhancements
- Update to shogo82148/actions-setup-perl@v1.42.0
- Bug Fixes
- Fixed false-positive in Analyzer::has_outdated_runners: the unanchored alternation /ubuntu-18.04|ubuntu-16.04|macos-10\.15/ matched any runner name that contained those strings as a substring (e.g. a self-hosted runner named "my-ubuntu-18.04-builder" was incorrectly flagged as outdated). Anchored with \A...\z so only exact GitHub-hosted runner labels are matched.
- Changed greedy (.+) to non-greedy (.+?) in Fixer::fix_unpinned_actions /^(.+?)\@(?:master|main)$/. Both forms produce identical captures when @master or @main appears only once (the common case), because the `$` anchor forces both to find the same split point. Non-greedy is preferred because it reaches a match with fewer backtrack steps on short strings.
- Internal
- Replaced all unnecessary capturing groups with non-capturing (?:...) across Analyzer.pm, Fixer.pm, CostEstimator.pm, Detector.pm, Interactive.pm, and bin/ghgen. Affected patterns: (master|main), (install|ci), (build|test), (node|python|go|ruby), (npm|pytest|cargo|go), (cpp|cc|cxx|hpp|hxx|h), y(es)?, n(o)?. No behaviour change; removes pointless capture-register allocation on every match.
- Eliminated DRY violation in action-version knowledge: the %updates hash that was defined identically as a local my %updates in both Analyzer::find_outdated_actions and Fixer::update_actions is now a single our %ACTION_UPDATES declared in Fixer.pm and exported/imported by Analyzer.pm. Detection and fix capability are now provably in sync: every action flagged by the Analyzer can be fixed by the Fixer, and vice versa.
- Replaced the 8-branch elsif chain in Fixer::apply_fixes with a file-scope dispatch table @_APPLY_RULES. Each entry is a three-element array [type, compiled-pattern, handler]. Cyclomatic complexity drops from 8 to 1; adding a new fix type requires appending a single row rather than editing a conditional chain. Anonymous delegate wrappers (sub($wf){...}) around each handler ensure symbol-table mocks work correctly in tests.
Modules
GitHub Actions workflow generator, analyzer, and optimizer
Analyze GitHub Actions workflows
Estimate CI costs and savings
Detect project type from repository contents
Auto-fix workflow issues
Generate GitHub Actions workflows
Interactive workflow customization
Customize Perl workflows based on project requirements
Generate reports for GitHub integration