<!--
SPDX-FileCopyrightText: 2026 Contributors to brew-proxy <https://codeberg.org/HastD/brew-proxy>

SPDX-License-Identifier: Apache-2.0 OR MIT
-->

# Changelog

## [v0.3.1] - 2026-06-28

- Improve cask support by including `/home/linuxbrew/.local/share` in
  `XDG_DATA_DIRS`. This means casks that install application launchers will have
  those applications show up in menus as expected, and likewise for fonts,
  icons, and so on.

## [v0.3.0] - 2026-06-16

### brew bundle support

This release improves support for
[brew bundle](https://docs.brew.sh/Brew-Bundle-and-Brewfile), which works
differently from most brew commands in that it needs to read from and/or write
to a Brewfile in the user's current working directory.

On the client side, `brew bundle` commands are modified as follows:

- If the `-g` or `--global` option is used, it is unmodified, and `brew bundle`
  will read from and/or write to a global Brewfile in `/home/linuxbrew`.
- Otherwise, the command is modified to read from standard input and/or write to
  standard output using `--file=-`, and the client connects the specified
  Brewfile to the command's input and/or output.

(In particular, `brew bundle dump` writes to a Brewfile, the `add` and `remove`
subcommands both read from and write to a Brewfile, and other subcommands only
read from a Brewfile.)

This allows the core functionality of brew bundle (installing brew packages from
a Brewfile, dumping a list of installed packages to a Brewfile, etc.) to work as
expected. However, some brew bundle features, such as integration with other
package managers, is not expected to work properly, as the command is still
running as an isolated `linuxbrew` user.

### Other changes

- Support running brew commands with piped I/O when standard output is
  redirected to a file or another command. In this mode, standard output and
  standard error remain separate, and the brew command is not run in a PTY,
  which changes how brew handles output in various ways; for example, ANSI
  escape codes that provide text formatting in a terminal are omitted, and some
  output is formatted differently (such as `brew list` putting each package on a
  separate line).
- Add an SELinux policy for brew-proxy, available in a `brew-proxy-selinux`
  subpackage. This is necessary for piped I/O to function correctly on systems
  using Fedora's SELinux policy.
- Switch to using the Meson build system. This also adds a Justfile for various
  tasks, including building and installing a systemd sysext for brew-proxy,
  which is useful for testing development versions. (by [Tulip][0d05a8b])
- Configure `brew-proxy-daemon.service` to use `/home/linuxbrew` as its working
  directory.

[0d05a8b]: https://codeberg.org/HastD/brew-proxy/commit/0d05a8b4787cccd6a3fa77f7b9677180e81a5d83

## [v0.2.7] - 2026-06-11

- Make `brew services` run as the user who invoked it, not as the `linuxbrew`
  user. This is because `brew services` is basically a wrapper around
  `systemctl --user`; in terms of the user/linuxbrew security boundary, it acts
  much more like running a program installed by Homebrew than installing a
  Homebrew package. Also add a warning that brew-proxy only has limited support
  for `brew services`, and some service units may require manual modification.
- Also make some trivial commands like `brew --prefix` and `brew shellenv` run
  as the invoking user since they just print fixed strings. This also fixes an
  issue where piping these commands would sometimes run into problems due to
  extra carriage returns coming from the PTY output.

## [v0.2.6] - 2026-06-07

- Reduce default log level for daemon to `info` (instead of `debug`).

## [v0.2.5] - 2026-06-06

- Add support for `brew trust`/`brew untrust` commands.
- Add systemd sandboxing to `brew-proxy-daemon.service` and
  `brew-proxy-setup.service`.

## [v0.2.4] - 2026-04-25

- Print brew-proxy info to stderr before running selected commands. In
  particular, `brew --version` and `brew config` display a line showing the
  brew-proxy version number, and `brew doctor` displays a message noting that
  brew-proxy is in use and directing the user to report issues to the right
  place.

## [v0.2.3] - 2026-04-22

- Improved Polkit action logic so `brew <COMMAND> --help` is treated the same as
  `brew --help <COMMAND>`, that is, it can be run by all users without
  authentication.
- Removed obsolete `sh.brew.BrewProxy.Client` interface from DBus policy config.
  (This was a leftover from an earlier design and doesn't do anything anymore.)

## [v0.2.2] - 2026-04-19

- Refactored Polkit action logic so that the action type can depend on the
  arguments passed to the brew command, not just the main command. This is now
  used for `brew upgrade` to classify it as an admin command (requiring
  authentication for non-`linuxbrew` users) if it has arguments outside a
  hard-coded list.
- Removed some unused code, including the DBus method for calling brew with no
  arguments. (Just call `brew help` instead if you want it to produce the same
  text.)
- Improved handling of I/O errors when copying PTY output. This means that
  unexpected I/O errors will no longer be ignored.

## [v0.2.1] - 2026-04-14

- Added non-interactive mode: If `BREW_PROXY_NONINTERACTIVE=1` is set in the
  environment, Polkit is instructed to deny access if authentication would be
  required, rather than prompting the user for authentication.

## [v0.2.0] - 2026-04-14

- First version after major redesign. Earlier tagged versions (v0.1.\*) were
  early prototypes and I didn't keep a changelog.

[v0.3.1]: https://codeberg.org/HastD/brew-proxy/compare/v0.3.0...v0.3.1
[v0.3.0]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.7...v0.3.0
[v0.2.7]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.6...v0.2.7
[v0.2.6]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.5...v0.2.6
[v0.2.5]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.4...v0.2.5
[v0.2.4]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.3...v0.2.4
[v0.2.3]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.2...v0.2.3
[v0.2.2]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.1...v0.2.2
[v0.2.1]: https://codeberg.org/HastD/brew-proxy/compare/v0.2.0...v0.2.1
[v0.2.0]: https://codeberg.org/HastD/brew-proxy/src/tag/v0.2.0
