DomT4/homebrew-autoupdate
64.2
Adequate · 19 September 2026
836
lines of production code
Ruby
with Swift
1
measurement over time
What this system is
This system is a macOS-specific extension for Homebrew that automates background package updates using launchd. It provides a CLI interface to schedule updates via fixed intervals or specific clock times, manage the update lifecycle, and view logs. The system integrates a native Swift application to deliver status notifications to the user.
Features
Introduce \`brew autoupdate\` command with subcommands and scheduling options
Users can now use the new \brew autoupdate\ command to automatically update Homebrew in the background using \launchd\. The command supports several subcommands: \start\ (with options like \--upgrade\, \--cleanup\, \--immediate\, \--sudo\, \--only\, \--leaves-only\, \--greedy\, \--ac-only\, and scheduling intervals or clock times), \stop\, \delete\, \status\, \version\, and \logs\ (with \--follow\ and \--lines\ options). This feature is macOS-only.
cmd · high confidence
Introduction of autoupdate library module
The lib directory now includes the autoupdate.rb file, which serves as the central entry point for the autoupdate feature. This file establishes the module's dependencies by requiring core components such as cleanup, core logic, deletion, interval management, notifications, start/stop/status/version handling, and logs, alongside standard utilities like date, fileutils, tap, and path utilities.
lib · high confidence
Support for daily clock-time scheduling in addition to duration intervals
Users can now configure the update interval using a specific time of day (e.g., \00:00\) to run the job daily at that clock time, rather than only specifying a relative duration (e.g., \1d\, \12h\). The \Interval\ module parses these new calendar-based inputs and provides human-readable descriptions for both duration and clock-time configurations.
ruby · high confidence
Behavioural changes
Autoupdate command restructured into modular subcommands
The \lib/autoupdate\ library has been refactored from a monolithic structure into distinct, modular components (\core\, \start\, \stop\, \delete\, \status\, \logs\, \cleanup\, \notify\). This change introduces a dedicated \Autoupdate::Core\ module to centralize path and configuration logic, while separating lifecycle management (\start\, \stop\, \delete\) and diagnostics (\status\, \logs\) into their own files. For users, this underpins the new \brew autoupdate status\ command, which now provides a detailed summary of the current configuration (including schedule, upgrade scope, and notification settings), and improves the reliability of log viewing and cleanup operations by using explicit, isolated helper methods.
lib/autoupdate · high confidence
Brew-autoupdate notifier applet updated to version 4.0.0
The brew-autoupdate notifier applet has been regenerated and codesigned, updating its version to 4.0.0. The app bundle now targets macOS 11.0 or later and includes a new code signature to ensure integrity.
notifier/brew-autoupdate.app · high confidence
Native macOS notification app for autoupdate results
The notifier component now uses a dedicated Swift application (brew-autoupdate.app) leveraging the macOS UserNotifications framework to display autoupdate status. This native helper receives the title, subtitle, and message from the notify.sh script and presents them as system notifications, replacing any previous method of displaying update summaries. The build process compiles the Swift source into a signed, universal binary (arm64/x86\_64) and the script handles filtering notifications based on success/failure status and configured modes.
notifier · high confidence
Version 4.0.0 release with updated documentation and trust requirements
This release bumps the tool to version 4.0.0 and updates the README to reflect new installation requirements, specifically the need to explicitly trust the command via \brew trust --command\ due to Homebrew's new tap trust enforcement. The documentation also clarifies that casks with built-in auto-updates are excluded by default, details the new \--greedy\ flag to include them, and notes the requirement for \pinentry-mac\ when using the \--sudo\ flag for GUI password prompts.
(repo-wide) · high confidence
Test coverage
Added CLI contract, interval parsing, and macOS notifier tests
Added comprehensive test coverage for the Homebrew autoupdate CLI, the interval parsing logic, and the macOS notification helper. The new tests verify that the CLI help output correctly lists subcommands and options, that invalid intervals and clock times are rejected, and that upgrade options enforce their dependencies and mutual exclusions. They also validate the interval parser's ability to handle duration suffixes and 24-hour clock times, and confirm that the macOS notifier script correctly invokes the native Swift executable, respects the shared version file, and handles notification summaries and failures gracefully.
test · high confidence
Dependencies
Added Swift Package Manifest for Brew Autoupdate Notifier
A new Package.swift file has been added to define the Swift Package for the 'homebrew-autoupdate' project. This manifest configures the package to target macOS 11.0 and defines an executable product named 'brew-autoupdate-notifier', which is built from the 'BrewAutoupdateNotifier' target located in the 'notifier' directory. The package structure excludes specific non-source files like README.md and app icons from the build process.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 64.
Lenses
- Code Health 95
- Architecture 69
- Maturity 59
- Readiness 65
- Security 70
Changes since last survey
- 300 commits — 263 feature/other, 37 fixes
By area
- (repo) — 127 commits
- lib/autoupdate — 58 commits
- .github/workflows — 36 commits
- (root) — 35 commits
- cmd/autoupdate.rb — 20 commits
- notifier/brew-autoupdate.app — 8 commits
- notifier/notifier.scpt — 5 commits
- .github/generate-help-output.py — 3 commits
- gui/getpass.sh — 2 commits
- test/command_test.rb — 2 commits
- .github/FUNDING.yml — 1 commit
- .github/dependabot.yml — 1 commit
- notifier/notify.sh — 1 commit
- test/notifier_test.rb — 1 commit
Notable commits
- fix: Fix "useless assignment to variable"
- fix: Fix RuboCop style: add blank line before module_function
- fix: Fix Style/InvertibleUnlessCondition violation
- fix: Fix launchctl helpers for Homebrew 7 compatibility
- fix: Fix undefined method errors for 'opoo' and 'odie'
- fix: Fixed Style/HashSyntax: Omit the hash value.
- fix: Fixed dynamic log path
- fix: Fixed indent
- fix: Fixed space in path to script
- fix: Fixed style
- fix: Merge branch 'master' into fix-notifier-scpt
- fix: Merge branch 'master' into fix-notifier-scpt
- fix: Merge branch 'master' into fix-notifier-scpt
- fix: Merge branch 'master' into fix-sudo-script-file-creation
- fix: Merge branch 'master' into fix-sudo-script-file-creation
- fix: Merge branch 'master' into fix-sudo-script-file-creation
- fix: Merge pull request #115 from swissbuechi/fix-sudo-script-file-creation
- fix: Merge pull request #118 from Rylan12/fix-style
- fix: Merge pull request #126 from p-linnane/autoupdate-style-fix
- fix: Merge pull request #136 from swissbuechi/fix-style-omit-the-hash-value
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
DomT4/homebrew-autoupdate was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit de56e134e79b797f43dfc4c93aa7b2c1d4375d63 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.