Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
a420d93
Update brew extension
chrismessina Aug 28, 2026
a3783af
refactor: model install counts, not their ordering
chrismessina Aug 28, 2026
d27911b
fix: make popularity downloads cancellable; guard the ordering claims
chrismessina Aug 28, 2026
38581ad
fix: drop the ranks memo so one consumer cannot cancel for another
chrismessina Aug 28, 2026
fec8044
fix: make cache downloads atomic, and cache parsed ranks instead of t…
chrismessina Aug 28, 2026
d76c69e
fix: unique download temps, rename cleanup, partial sweep, generation…
chrismessina Aug 28, 2026
0790aa8
fix: never attribute one package\'s statistics to another; changelog …
chrismessina Aug 28, 2026
81cc3ab
fix: reserve the statistics rows, and show them in the Details view too
chrismessina Aug 28, 2026
663eb71
fix: key the search on rank version, and separate a failed fetch from…
chrismessina Aug 28, 2026
40e62c6
feat: mark an unfetchable statistic with Icon.QuestionMarkCircle
chrismessina Aug 28, 2026
0980ceb
Update brew extension
chrismessina Aug 29, 2026
edb949d
fix: skip a pinned formula on upgrade instead of letting brew reject it
chrismessina Aug 29, 2026
e362d96
fix: refuse to rank version shapes this module cannot order correctly
chrismessina Aug 30, 2026
66bbc51
feat: mark a skipped pinned formula in the outdated list
chrismessina Aug 30, 2026
30a2886
fix: use the tack icons for pinning, and the update arrow for upgrades
chrismessina Aug 30, 2026
7a94774
feat: group pinned formulae in Show Outdated, matching Show Installed
chrismessina Aug 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion extensions/brew/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
# Brew Changelog

## [Install statistics & popularity sort] - {PR_MERGE_DATE}

- Search: "Sort by Popularity" (⇧⌘P) orders results by installs over the last 30 days, ranking every match before the list is truncated — so the top rows are the most installed overall, not of the first hundred. An empty query lists the most installed packages outright.
- The detail sidebar and the Details view both show a package's install counts for 30, 90 and 365 days, plus build errors, matching the analytics table on its formulae.brew.sh page. Only the selected package is fetched.
- Deprecated and disabled packages carry a warning at the top of the sidebar, with the reason, the date, and the replacement package where Homebrew names one.
- "Hide Description" (⇧⌘Y) drops the description pane and shows the sidebar as a pure metadata list, with a Caveats indicator; the full caveats text stays in Show Details, which renders it as prose.
- "Show Details" is now offered even when the sidebar is open. It previously disappeared in that state, leaving "Show in Finder" as the default action on an installed package. Install and Upgrade remain the default where they apply.
- Display toggles are grouped in a "View" section. "Toggle Details" is now "Toggle Sidebar" (⇧⌘D), and works in Search too; "Hide Dependencies" no longer appears in Search, where nothing filtered by it. Show Installed adds an install date and marks pinned formulae.
- Search now marks an installed package as outdated when an update exists, and offers Upgrade on it. Previously only Show Outdated knew, because the installed cache never expired on `brew update` — its freshness test watched only local install state.
- Show Outdated groups pinned formulae into their own section, as Show Installed does. They are the ones `brew upgrade` refuses and Upgrade All skips, so keeping them out of the actionable list says so without the row having to.
- Pinning uses a tack rather than a map pin, and Show Outdated marks a pinned formula with that icon in place of the word "Pinned". Upgrade actions carry the same up-arrow as the row they act on, instead of a hammer.
- Upgrading a pinned formula now says so instead of failing. `brew upgrade` refuses a pinned package outright, so the action surfaced its error; it now skips with an explanation, matching Upgrade All which already skipped them.
- An available update is now marked the same way everywhere — a yellow up-arrow, replacing a red check in Search that clashed with the red used for a failed upgrade, and a grey check in Show Outdated that was the "upgraded" glyph greyed out.
- The Details view and the search sidebar now show the same metadata, built from one definition. They had drifted: statistics, the deprecation warning and the corrected version line each landed in one and not the other.
- The version row leads with the version you actually have, showing `installed → available` when they differ. It previously showed the available version labelled "installed", so an outdated package read as current.
- Cached downloads are now written atomically, so an interrupted one can no longer leave a partial file that later fails to load. This covers the package index every command depends on, not just the new statistics. Clear Cache removes leftover temporary files too.
- Updated to `@raycast/api` 2.x, and to a `brace-expansion` release without the denial-of-service advisory (GHSA-rgw5-rvv9-x895).

## [Upgrade View] - 2026-08-27

- The Upgrade command now lists the outdated formulae & casks, matching the Show Outdated command, instead of a list of progress steps.
Expand Down Expand Up @@ -34,7 +52,7 @@
- Added a "Manage Services" command to list Homebrew services and start, stop, or restart them individually or all at once. Actions update the list optimistically so it reflects the new state immediately.
- Added a "Services Menu Bar" command to control Homebrew services from the menu bar, with a submenu per service and start/stop/restart all. The menu refreshes on a configurable interval.

## [Bug fix] - 2026-05-21
## [Bug fix] - 2026-05-21

- Improves reliability of index cache
- Improves toast error message if fetch fails
Expand Down
14 changes: 14 additions & 0 deletions extensions/brew/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@ This extension uses several optimizations to provide a fast experience:
- **Lazy Loading**: Package details are fetched on-demand when viewing, not upfront.
- **Internal API Option**: When enabled, downloads are 96% smaller (~1 MB vs ~30 MB for formulae).

## Install Statistics

Selecting a package shows its install counts (30 / 90 / 365 days) and build errors, taken from the
[formulae.brew.sh](https://formulae.brew.sh) analytics API. Only the selected package is fetched —
about 5 KB per row you land on, and nothing at all for the rest of the list.

**Sort by Popularity** (⇧⌘P in Search) is different: ranking every result requires Homebrew's bulk
30-day rankings, about 2.6 MB for formulae and casks combined. That download happens the first time
you enable the sort, is cached on disk, and is never fetched if you don't use the sort. While it is
on, each row also shows its 30-day install count.

Homebrew's analytics are anonymous and aggregate, and cover macOS installs; a package with no
reported installs simply shows no statistics.

## Issue Tracker

[Report issues here](https://github.com/raycast/extensions/issues/new?body=%3C!--%0APlease%20update%20the%20title%20above%20to%20consisely%20describe%20the%20issue%0A--%3E%0A%0A%23%23%23%20Extension%0A%0Ahttps://www.raycast.com/nhojb/brew%0A%0A%23%23%23%20Description%0A%0A%3C!--%0APlease%20provide%20a%20clear%20and%20concise%20description%20of%20what%20the%20bug%20is.%20Include%0Ascreenshots%20if%20needed.%20Please%20test%20using%20the%20latest%20version%20of%20the%20extension,%20Raycast%20and%20API.%0A--%3E%0A%23%23%23%20Steps%20To%20Reproduce%0A%0A%3C!--%0AYour%20bug%20will%20get%20fixed%20much%20faster%20if%20the%20extension%20author%20can%20easily%20reproduce%20it.%20Issues%20without%20reproduction%20steps%20may%20be%20immediately%20closed%20as%20not%20actionable.%0A--%3E%0A%0A1.%20In%20this%20environment...%0A2.%20With%20this%20config...%0A3.%20Run%20%27...%27%0A4.%20See%20error...%0A%0A%23%23%23%20Current%20Behaviour%0A%0A%0A%23%23%23%20Expected%20Behaviour%0A%0A%23%23%23%20Raycast%20version%0AVersion:%201.103.9%0A&title=%5BBrew%5D%20...&template=extension_bug_report.yml&labels=extension,bug&extension-url=https://www.raycast.com/nhojb/brew&description).
Loading
Loading