- Version: 1.0.0 (stable)
- Tests: 2,158 passing, 15 skipped
- Coverage: ~78% overall
- CI/CD: All workflows passing on master (all green)
- Python Support: 3.12+ (with 3.13 compatibility)
- Security: 0 dependabot alerts, 0 secret scanning alerts, 0 CodeQL findings
- Linting: ruff clean, mypy clean
- Open Issues: 0
- Open PRs: 0
PR #118Dependency update —codecov/codecov-actionv5→v6PR #117Stabilisation P0–P5 — Homebrew cmd fix, progress config canonicalisation, CLI/handler drift, exception narrowing, README/TODO alignmentPR #115CI badges + mypy — test matrix badges, mypy consistency fix, CodeQL concurrencyPR #114Fuzzy matching + CI consolidation — fallback fix, pipeline cleanupPR #113Audit improvements — dead code removal, plugin CLI, test coverage
P10Async Homebrew wiring —check_brew_install_candidates()andcheck_brew_update_candidates()now route through async Homebrew API by default; deadlock bug inasync_check_brew_update_candidatesfixedP17Test coverage push — 77 new handler/utility tests; coverage 61% → 78%; non-public modules excluded from metricsP9Config split — extractedConfigLoaderclass with static methods for file I/O, env-var loading, brew detection, save, and generate_default_configP15Test coverage improvement — 122 new tests (matcher 98%, finder 78%, config 68%)P1–P8, P11–P14All completed in v0.8.2 (module migration, dead code removal, security fixes)
Objective: make the project operationally consistent before adding features. All P0–P5 complete. Stabilisation cycle done — ready for v1.0.
- Replace shell-substitution command with
brew info --json=v2 --eval-all --cask - Use
run_command_secure()(argv list) inget_all_homebrew_casks() - Fix
is_homebrew_available()to use configured brew path - Update tests to assert exact command/argv shape
-
setup_handlers.py: replace_config["ui"]["show_progress"]mutation withconfig.set("no_progress", True) -
setup_handlers.py: replace other_config[...]mutations withconfig.set()calls -
outdated_handlers.py: remove deadconfig.set("show_progress", False)call - Integration tests for
--no-progress(PR #122)
- Audit every
options.<name>in handlers and__main__.py - Add
--output-fileto Export Options group incli.py -
hasattr-gated dead paths (options.notify) left as-is — safe, low risk - Integration test for
--export --output-file(PR #122)
- Delay expensive config initialisation until CLI startup (
get_config()lazy init) -
Config()singleton no longer created at import time — eliminatesbrew --versionsubprocess on import -
conftest.pyreset_configfixture now correctly resets_config_instance
-
homebrew.pyget_homebrew_path:OSError+ re-raiseHomebrewError -
finder.pyasync availability check:AttributeError + RuntimeError -
finder.pyget_applicationsparsing:KeyError + IndexError + TypeError -
outdated_handlers.pyfilter fallback:ValueError + TypeError + AttributeError - Remaining broad catches in
__main__.pyand deeper handler paths (next cycle)
- Replace "Production-Ready" badge/heading with "Beta — Stabilising"
- Update test count (1,885 → 2,173) and coverage claim (61% → 78%)
- Rewrite TODO.md Active Work section with P0–P5 issue definitions
- Update CHANGELOG.md with user-visible behaviour changes (PR #121)
- Remove
PROJECT_REVIEW.mdfrom repo root (PR #121)
| File | Count | Root Cause | Action |
|---|---|---|---|
test_ui.py |
12 | Environment-specific terminal/colour | Leave as-is |
test_platform_compatibility.py |
2 | macOS-only guards | Leave as-is |
test_ui_new.py |
1 | Environment-specific colour | Leave as-is |
test_apps_extra.py |
1 | Complex mocking requirements | Consider fixing |
- Bump version to 0.9.0 in
__init__.pyandpyproject.toml - Update CHANGELOG.md with v0.9.0 entry
- Formula created at
docdyhr/homebrew-tapwith verified SHA256 -
brew install docdyhr/tap/macversiontrackertested and working - Legacy root
versiontracker.rbremoved (superseded by tap formula) -
release-homebrew.ymlworkflow updated to push to tap repo
- MacPorts integration
-
mas-clifor App Store applications - Unified interface for multiple package managers
- Apple Silicon vs Intel Homebrew path handling improvements
- macOS version compatibility matrix (Monterey through Sequoia)
- FastAPI-based web interface
- Real-time update monitoring dashboard
- Native SwiftUI macOS app (see
docs/future_roadmap.md)
- Vulnerability database integration (NVD, CVE)
- Security scoring for installed applications
- Alert on applications with known CVEs
- Enhance ML-powered recommendations with user feedback loop
- Usage pattern analysis for personalised suggestions
- Confidence scoring improvements for app-cask matching
- Async wiring for
get_casks_with_auto_updates()(deferred from P10)
For detailed strategic planning see docs/future_roadmap.md.
- Improve
test_ui.pyskip conditions withisatty()checks - Add integration tests for
app_handlers.py
- MacPorts integration
- Coverage push toward 85% (currently ~83.5%)
Last Updated: March 2026 Maintainer: @docdyhr