Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

84 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

brew-change

Make informed updates - see what changed in your Homebrew packages

πŸš€ Quick Start

# Show simple outdated list (like brew outdated)
brew-change

# Show outdated packages with version information
brew-change -v

# Show detailed changelog for specific package
brew-change node

# Show detailed changelogs for all outdated packages in parallel
brew-change -a

# Show changelogs with interactive upgrade prompt
brew-change -u

# Preview the no-signal package plan without executing it
brew-change -u --dry-run

# Highlight packages with breaking changes (-b implies -a)
brew-change -b

# Show version information
brew-change --version

# Show help
brew-change --help

🎯 Who This Is For

  • Developers who want to understand package changes before updating
  • DevOps Engineers managing production dependencies
  • Security-Conscious Users checking for vulnerability fixes
  • Power Users who like knowing what's changing in their tools
  • Curious Learners exploring how their tools evolve

✨ Key Features

  • Smart Package Detection: GitHub, npm, third-party taps, hybrid packages, and more
  • Parallel Processing: Handles multiple packages simultaneously (45-50s for 13 packages)
  • Honest Update Assessment: Separates packages into attention, no-signal, and unknown instead of claiming an update is safe
  • Preview Before Mutation: Shows Homebrew's upgrade --dry-run output, warns about dependency/dependent effects, and asks for final confirmation
  • TTY-Aware Progress: Animates interactive work while keeping piped output deterministic
  • Breaking Changes Detection: Highlights packages with breaking-change evidence using -b
  • Rich Release Info: Full changelogs, commit history, and helpful links
  • Revision Support: Advanced handling of Homebrew revision numbers
  • Performance Optimized: 75% faster than original with intelligent caching

Upgrade behavior

brew-change -u defaults only to packages whose fresh release evidence produced no risk signal. Packages marked attention or unknown are never bulk-selected. Before any upgrade, brew-change previews the exact named package list with Homebrew, then asks for immediate confirmation. Homebrew can still act on dependencies or dependents shown in that preview.

In a pipe or other non-interactive environment, brew-change prints guidance and never starts an upgrade.

πŸ“¦ Installation

Quick Install

# Install directly via Homebrew tap (dependencies included)
brew install shrwnsan/tap/brew-change

# Verify installation
brew-change --version

Dependencies

  • Homebrew: Core package manager
  • jq: JSON parsing and processing
  • curl: HTTP requests with retry logic
  • bash: Version 4.0+ for modern shell features

Platform Support

brew-change works seamlessly across all platforms where Homebrew is available:

Platform Homebrew Path Status
macOS (Intel) /usr/local/bin/brew βœ… Fully supported
macOS (Apple Silicon) /opt/homebrew/bin/brew βœ… Fully supported
Linux Detected with brew --prefix βœ… Fully supported
WSL (Windows Subsystem for Linux) Detected with brew --prefix βœ… Fully supported

The script automatically detects the correct library path using brew --prefix, ensuring compatibility across all Homebrew installations.

🎯 Package Types

brew-change intelligently handles different package sources:

  • GitHub packages: Full release notes with commit history
  • npm packages: Registry information with release dates
  • Hybrid packages: npm distribution + GitHub development
  • Third-party taps: Community tap support (charmbracelet, oven-sh/bun)
  • Modern CLI tools: Documentation-repository pattern (alpha)

β†’ See detailed package type examples: Package Types Documentation β†’ Full documentation index: All Documentation

πŸ› Troubleshooting

"Package not found" errors

brew info package-name    # Check if package exists
brew search package-name  # Search for similar packages

Slow performance

brew-change -a            # Auto-adjusts if system is busy
export BREW_CHANGE_JOBS=2 # Reduce parallel jobs manually

Network timeouts

curl -I https://api.github.com  # Check connectivity

Clear cache

rm -rf ~/.cache/brew-change/*

πŸ“ˆ Recent Updates

  • Unreleased trusted-update foundation: Honest three-state assessments, canonical cask identities, exact package previews, final confirmation, deterministic tests, signal-safe terminal cleanup, and a strict evidence URL policy
  • v1.11.0–v1.11.5: Made -u interactive by default, added --dry-run, and refined prompt/spinner behavior
  • v1.10.0–v1.10.1: Improved interactive upgrade UX and ensured Homebrew receives --yes
  • v1.9.0–v1.9.2: Removed prompt timeouts and simplified prompt formatting
  • v1.8.0–v1.8.8: Added selective upgrades and iteratively hardened /dev/tty prompt handling and animation
  • v1.7.0: Applied the post-refactor code-review fixes
  • v1.6.0: Added positional multi-package support

β†’ Full changelog: CHANGELOG.md

πŸ”— Related Projects

  • Homebrew - The missing package manager for macOS
  • jq - Command-line JSON processor
  • GitHub CLI - Official GitHub command-line tool

πŸ“„ License

MIT License - see LICENSE file for details.


Looking for more?

About

Make informed updates. See what changed in your Homebrew packages before updating. Get release notes, changelogs, and version details for outdated packages with smart package detection.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages