Repository navigation
Flag unchanged auto_updates apps as outdated - #24382
Conversation
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Outdatedness check and documented behaviour Library/Homebrew/cask/cask.rb, Library/Homebrew/test/cask/cask_spec.rb, docs/FAQ.md |
The check treats a single-entry CSV version as outdated when the installed short version matches the installation record. Tests cover differing version segments, self-updated versions, and CSV candidates. The FAQ describes when upgrades include the cask. |
Priority:
Merge Risk: 
Minimal · up to 7c285
-
The FAQ now describes the limited upgrade exception without implying that a conclusive rollback will be upgraded. The change is ready to merge after normal checks.
Pre-merge checks: 
4
-
Full details: Title check
-
Explanation
The title "Flag unchanged auto_updates apps as outdated" matches the main change. The diff makes Cask#auto_updates_bundle_outdated? return true when the app's short version still matches the installed cask version and the version comparison is inconclusive, so unchanged auto_updates apps are flagged as outdated. The title is specific and uses no vague terms.
Full details: Description check
-
Explanation
The description explains the problem: compare_version_strings returns nil when segment counts differ, so Firefox 158.0 installed against cask 158.0.1 was never reported as outdated. It states the new behaviour for non-CSV versions, the unchanged decisive comparisons, the CSV exception, and the FAQ update. It also gives the testing done and the reason for the change. It is directly related to the changeset.
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
There was a problem hiding this comment.
Actionable comments posted: 1

Review info
-
Run configuration-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: Organization UI
- Review profile: CHILL
- Plan: Advanced
- Run ID:
50f8787a-3d20-468b-a0ad-46e94e649870
Files selected for processing: 3-
Library/Homebrew/cask/cask.rbLibrary/Homebrew/test/cask/cask_spec.rbdocs/FAQ.md
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.
-
- `compare_version_strings` returns `nil` when the app bundle and tap versions have different segment counts, so `auto_updates` casks such as Firefox weren't reported as outdated going from 158.0 to 158.0.1 or from 156.0.1 to 157.0. - An app whose short version still matches the installed cask version shows no sign of having updated itself, so treat a different non-CSV tap version as outdated, as for casks without `auto_updates`. - CSV tap versions still go through the bundle version comparisons, since their build component can be compared with the app's. Signed-off-by: Patrick Linnane <patrick@linnane.io>
334a802 to
7c285c6
Compare
Cask#auto_updates_bundle_outdated?getsnilfromcompare_version_stringswhen the app's version and the cask version have different segment counts, so Firefox installed at 158.0 was never reported as outdated against 158.0.1, nor 156.0.1 against 157.0, and the defaultbrew upgradeskipped it. When that comparison is inconclusive and the app's short version still matches the installed cask version, a different non-CSV cask version is now treated as outdated, as for casks withoutauto_updates, including an older version after a rollback or a change of numbering scheme. Decisive comparisons are unchanged, so same-shape rollbacks such as 2.62 to 2.61 are still skipped, CSV versions still go through the build comparisons and the FAQ notes the exception.brew benchmarkresults.brewcommands to reproduce the bug?brew lgtm(style, typechecking and tests) locally?Claude Code (Opus 5.5) wrote the change and tests, checked that the new outdated examples fail without the change and ran
brew lgtm --online. Codex (GPT-6 Astra) reviewed it and suggested the CSV guard and the rollback example.