brew doctor report with every recommended fix, and runs them all with one confirmation (Fix All). Needs Homebrew 7.0brew vulns (Homebrew 7), with per-advisory detail, a Show Details view that expands every advisory in full, and an Upgrade action where the formula is also outdatedbinary, man pages, shell completions) gained Link Cask (⌘L) and Unlink Cask (⌘⇧L): each runs brew --dry-run first and lists the exact symlinks it would create or remove before you confirm. A cask that is already linked says so instead of running anything. Needs Homebrew 7.0brew install --dry-run would install or upgrade, with Install one keystroke awaybrew upgrade would actually do: every package with its version transition, its download size, the total to download, and any warning brew raises. It runs brew upgrade --dry-run only when you ask for it — the manifest lookups take a while on a long listbrew upgrade <package> alone would do: its version transition, download size and any warning, with Upgrade one keystroke away. Only offered where there is something to upgradeUpgrade is now the primary action for the selected formula or cask (nhojb)Upgrade All is the secondary action (if available) (nhojb)⌘⇧X shortcut (nhojb)⌘⇧A shortcut (nhojb)gcloud-cli needs python@3.14, for one)brew list --versions, added in 5.0 support). It had no caller and its cache read duplicated the main loader; installed packages already paint from cacheHOMEBREW_DEVELOPERbrew upgrade would do. Every per-package action the view offered (single upgrade, pin, copy/terminal commands, uninstall) remains on each row, and the command still answers to "outdated" in searchbrew update are not upgraded unreviewed; they remain visible — and selectable for a follow-up run — in the list afterwardsbrew update (and waits for it to release Homebrew's update lock) instead of asking the user to try again in a momentOutdatedCask.installed_versions type: brew outdated --json=v2 returns an array for casks, not a stringbrew update — its freshness test watched only local install state.brew upgrade refuses and Upgrade All skips, so keeping them out of the actionable list says so without the row having to.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.installed → available when they differ. It previously showed the available version labelled "installed", so an outdated package read as current.@raycast/api 2.x, and to a brace-expansion release without the denial-of-service advisory (GHSA-rgw5-rvv9-x895).brew install --adopt to reclaim an externally-installed package (e.g. installed via a .dmg or another package manager) into Homebrew so it is covered by brew upgrade.Outdated tag — formulae and casks both. The list component is shared, so the tag also appears for installed-and-outdated packages in Search resultsMaps, which serialise to {}, so the cached value was emptied on write and then re-served empty forever. The serialisable form is cached now and the lookups are rebuilt on read; cache entries written by earlier versions are discarded rather than trusted.stderr/stdout output available through the toast's Copy Logs action for debugging.--ignore-pinned upgrade flag.Warp as an option for terminalcleanup commandQuarantine preference to enable or disable quarantine of files downloaded by brew--ignore-pinned flag to brew upgrade command to avoid problems on systems that have pinned packages installedoutdated commandupgrade command