Skip to Content
Changelog

Changelog

All notable changes to Brewwery.

v1.1.1 - Reliability & Background Saving

Fixed

  • Packaging uses SwiftPM’s actual product directory and verifies the executable’s compiled version/build against Info.plist, both architectures, resources, signatures, and linked Mach-O UUIDs.
  • Mutating operations reserve their slot before Homebrew detection. Metadata updates, taps, and pinning share the coordinator; the runner independently rejects overlapping mutations.
  • Buffered commands support cancellation, timeouts, and explicit output-size errors. Live output and pending UI events are bounded, with split UTF-8 characters preserved.
  • Package and service lists refresh after failure or cancellation because Homebrew may have applied part of a change.
  • Detail drawers ignore stale responses. Failed dependent checks show Retry instead of claiming that no packages depend on a formula.
  • Option-shaped package, cask, service, tap, and search arguments are rejected before spawn.
  • Appcast generation uses only the current DMG, avoiding stale enclosure URLs and unpublished delta updates.

Improved

  • Favorites and History encode, back up, and atomically write JSON on a serial background queue. Rapid changes keep only the latest pending snapshot per store.
  • Normal quit waits for pending saves. Storage errors remain visible with Retry, and quitting after a failed save asks before discarding changes. Unreadable JSON is backed up before replacement.
  • About and Settings credit by Made Büro . Bundles include the MIT license and Sparkle’s third-party notices.
  • Isolated tests and universal packaging checks run in native CI. A dedicated QA profile supports clean-profile install and restart checks without replacing the working profile.

Verification scope

  • 218 isolated tests passed; a packaged clean QA-profile install and restart passed on the local Apple Silicon Mac.
  • Intel hardware, macOS 14, and a complete manual VoiceOver pass remain untested. Initial JSON reads and manual History export remain synchronous; force-quit can lose changes not yet saved.

v1.1.0 — Report, Brewfile & Pinning

Ways to act on what Brewwery shows: report a problem without leaving the app, install a Brewfile’s missing packages, hold a formula at its version — and a German interface.

Added

  • Report a problem from Settings, the Help menu, and the menu bar, and Report this failure from a failed operation or History entry. You review the report, then open it as a GitHub issue or an email and send it yourself. Nothing is sent automatically.
  • Brewfile: compare a Brewfile with this Mac and install only what is missing. Brewwery writes its own install list, so Homebrew never runs Ruby from a file someone sent you.
  • Pin formulae: a pinned formula keeps its version, is skipped by Upgrade all, and is not counted as outdated.
  • A Go menu: ⌘1…⌘9 switch between the first nine pages.
  • German interface. French, Spanish, and Portuguese are planned for the next version.

Changed

  • Page headers move their buttons onto a second row when a translation makes them too wide.

Fixed

  • Settings › About no longer lists Apple Silicon as the only primary platform.

v1.0.1 — One Outdated Count

The Dock badge counted outdated packages on its own, so nothing inside the window explained the number and it stayed stale after an upgrade. There is now one list, and every counter reads it.

Added

  • The outdated count appears next to Updates in the sidebar, in the status bar, and in the menu bar.
  • The Updates page names the command behind the count and when it last ran.
  • A Dock section in Settings switches the badge off.

Changed

  • The outdated list loads at launch alongside the installed packages.
  • Background refreshes are silent, and a failed background check keeps the last good list.
  • Page headers keep their buttons at full width; longer subtitles wrap instead.

Fixed

  • Upgrading from inside Brewwery clears the Dock badge immediately.
  • A silent refresh no longer leaves the Updates page showing “Loading updates…“.

v1.0.0 — Native macOS App

Brewwery is now a native macOS application. It replaces the Electron, React, and Rust build of 0.9.7 with Swift 6, SwiftUI, and AppKit, and keeps the same features, Homebrew commands, and validation rules.

Added

  • Universal app for Apple Silicon and Intel Macs.
  • Developer ID signing and Apple notarization.
  • Automatic app updates with Sparkle, including an option for pre-release versions.
  • Brewfiles can be opened with a file picker as well as by typing a path.

Changed

  • Rebuilt natively: no Electron, Node.js, or Rust runtime is shipped, and the download is a fraction of the size.
  • The title bar is gone. Search and Settings sit in each page’s header next to that page’s actions; the search field is compact and widens while you type.
  • Packages, Casks, and History filter from the page header instead of a second search box.
  • Successful operations close their progress panel automatically; failures stay open with the full output.
  • The first-launch overlay is removed; the “Homebrew not found” panel and Settings cover the same ground.
  • The Dashboard no longer repeats the “Homebrew not found” error inside every card.
  • The logo is rendered from the original vector artwork.

Fixed

  • Cancelling an operation now stops Homebrew’s own child processes, such as git and curl, as well as brew itself.
  • Validating a custom Homebrew path can no longer report a broken executable as valid.

Security

  • Homebrew runs through a closed set of typed commands with no shell.
  • Formula names containing a .. path segment are rejected before Homebrew runs.
  • Hardened runtime with no entitlements.

Requirements

  • macOS 14 Sonoma or later.

v0.9.7 — Package Intelligence & Taps

Added

  • Dedicated Homebrew Taps page with validated add/remove actions and confirmations.
  • Homebrew Leaves filter and installed dependents in formula details.
  • Read-only background outdated checks with a macOS Dock badge count.
  • Virtualized Packages and Casks lists with keyboard row navigation.

Security

  • Background checks only run brew outdated --json=v2 and never mutate Homebrew state.
  • Tap names use a strict owner/repository allowlist and tap mutations require confirmation.

v0.9.6 — Accessibility & Docs Consistency

Added

  • Shared keyboard focus rings for buttons, inputs, and tabs.
  • Accessible confirmation dialogs and package detail drawers with Escape-to-close behavior.

Changed

  • Release documentation and known limitations now match the current Release Candidate.
  • Accessibility labels identify the package affected by detail drawer actions.

Security

  • No new Homebrew commands, IPC channels, telemetry, cloud sync, accounts, or paid feature surface were added.

v0.9.5 — Cleanup & Services Streaming

Added

  • Live stdout/stderr progress for service start, stop, and restart actions.
  • Live stdout/stderr progress for confirmed Homebrew cleanup runs.
  • Cancellation and timeout controls for service and cleanup operations.
  • Context-aware progress summaries for package, service, and cleanup work.

Changed

  • Services now use a 5-minute fixed safety timeout.
  • Cleanup now uses a 30-minute fixed safety timeout and still requires preview plus confirmation.
  • Service and cleanup history entries use final streamed output and distinguish cancellation from failure.

Security

  • Service names remain strictly validated before reaching the streaming runner.
  • Cleanup streaming exposes only the fixed brew cleanup operation.
  • No generic command, arbitrary argument, PID, signal, or timeout input is exposed to renderer code.

v0.9.4 — Operation Safety

Added

  • Confirmation-gated cancellation for active install, uninstall, and upgrade operations.
  • Fixed safety timeouts: 15 minutes for uninstall and 45 minutes for install/upgrade.
  • Dedicated cancelled and timed-out progress states with readable status messaging.
  • Cancelled operation status, filter, count, and neutral toast in History.

Changed

  • Only one streaming mutating Homebrew operation can run per renderer at a time.
  • Active child processes are stopped if their owner window is destroyed.
  • Cancel requests are scoped to an active operation ID owned by the requesting renderer.

Security

  • Cancellation does not expose PID access, arbitrary signals, or generic process control to the renderer.
  • Existing shell: false, command allowlists, validation, and confirmation requirements remain intact.

v0.9.3 — Stability & Error Recovery

Added

  • Retry actions for formulae, casks, updates, services, cleanup preview, and doctor error states.
  • Thirteen Rust unit tests covering Homebrew JSON normalization, parsers, and identifier validation.
  • napi-rs test configuration that allows Rust tests to run without a Node host.

Changed

  • Streaming install, uninstall, and upgrade output is bounded in both Electron main and renderer memory.
  • Large live logs preserve useful beginning and ending sections with a visible trim marker.
  • Known issues now distinguish external release constraints from actionable engineering follow-ups.

Security

  • Formula, cask, search, and service validation now have regression tests for rejected shell metacharacters and invalid identifiers.
  • No new command, IPC, telemetry, account, cloud, paid, or sudo surface was added.

v0.9.2 — RC QA Fixes

Added

  • Settings Check Homebrew action for explicit brew update with confirmation
  • Discover collection summary for installed, favorite, available, and total packages

Fixed

  • Package detail drawer now scrolls internally, so lower actions and raw details remain reachable
  • Search installed status now uses a green installed badge instead of muted text
  • Tapped formula identifiers containing / are accepted for package info, install, uninstall, and upgrade
  • Favorite buttons update immediately after toggling
  • Tray menu no longer shows a disabled app-name item and uses Settings instead of Open Terminal

Security

  • brew update remains confirmation-gated
  • Formula slash support still rejects spaces, shell metacharacters, leading/trailing slashes, repeated slashes, redirection characters, and newlines

v0.9.1 — Discover & Favorites

Added

  • Favorites — mark any formula or cask as a favorite and access them instantly from a dedicated Favorites view
  • Favorites persist across sessions via local settings
  • Favorites badge on package cards and detail drawers
  • APP_CHANNEL updated to v0.9.1 Discover & Favorites

Improved

  • Search & Discovery page performance and result rendering
  • Package detail cards now show favorite status inline
  • All documentation updated for v0.9.1

v0.9.0 — Release Candidate

Added

  • APP_CHANNEL is now Release Candidate
  • Release Candidate release notes and QA checklist
  • Signing and notarization preparation guide
  • macOS signing entitlements for future Developer ID builds

Improved

  • All documentation updated for v0.9.0 Release Candidate status
  • Known limitations documented as release decisions
  • Feature freeze documented before v1.0

Known

  • Unsigned and not notarized while signing assets are prepared
  • Apple Silicon is the primary verified build target
  • Cleanup and service actions show final output only (no streaming progress)

v0.8.2 — Light Theme QA Polish

Fixed

  • Light theme sidebar logo readability
  • Light theme status color contrast
  • macOS window resize, maximize, and fullscreen controls
  • Window centering reliability

Improved

  • Status badges, toasts, progress panels use shared theme tokens

v0.8.1 — Light Theme & Visual Polish

Added

  • Working theme selector: System, Dark, and warm Light
  • Theme persistence in local settings
  • Theme tokens across all components

v0.8.0 — Launch Candidate

Added

  • pnpm release:verify verification command
  • GitHub issue templates for bugs and feature requests

Improved

  • Standardized button labels
  • Hidden placeholder actions from UI

v0.7.x — Private Beta

  • History render batching for large logs
  • History and progress output trimming
  • Friendly error messages with expandable technical details
  • Search installed state reconciliation
  • Invalid discovery search query handling
  • Explicit Check for updates action
  • Window centering and sizing fixes

v0.6.x — Private Alpha

  • Settings Copy diagnostics action
  • Dashboard last-refreshed state and services preview
  • History failed-only filter
  • Alpha/beta verification and clean-install commands
  • ZIP and .app local verification paths

v0.5.x — Distribution & Polish

  • Production electron-builder macOS config
  • Unsigned Apple Silicon DMG/ZIP packaging
  • GitHub Actions CI and release workflows
  • Tray menu, keyboard shortcuts, onboarding
  • Settings page with Homebrew path, theme, history, About
  • Custom Homebrew path validation in Rust
  • Local .app testing workflow

v0.4.x — Search & Discovery

  • Dedicated Homebrew discovery/search page
  • Package install and uninstall with confirmation
  • Streaming progress output for install/uninstall/upgrade
  • Strict package name validation

v0.3.x — Cleanup, Doctor & Brewfile

  • Cleanup preview and execution with confirmation
  • Brew doctor diagnostics parsing
  • Brewfile export and read
  • Local operation history with search and export
  • Result toasts

v0.2.0 — Updates & Services

  • Outdated package detection and upgrade flows
  • Service status and start/stop/restart with confirmation
  • Dashboard backed by real data

v0.1.x — Foundation

  • pnpm workspace scaffold
  • Electron + React + Vite + TypeScript
  • Tailwind CSS dark theme
  • Rust napi-rs core
  • Homebrew detection and package/cask listing
  • Package detail drawers with search, sort, filter
  • Read-only operation model
Last updated on