# Changelog

All notable TailMux changes are tracked through conventional commits and GitHub Releases.

## Unreleased

## v0.1.1 - 2026-07-14

- The menu-bar panel now sizes itself to its content and only scrolls when the available screen height requires it; larger tunnel configurations switch to a compact total, active, and inactive summary with direct access to Manage Tunnels.
- Right-click or Control-click the TailMux menu-bar icon to open Options, About, or Quit, and use the configurable global shortcut to bring Options forward.
- TailMux now stays running after its windows are closed and exits only when you explicitly choose Quit.
- Embedded profiles now pick up peers that join or leave a tailnet without waiting for a router restart or manual refresh, keeping MagicDNS and peer routes current.
- Release notes and product improvements are now available from the public changelog at `tailmux.app/changelog`.

## v0.1.0 - 2026-07-10

- Service Tunnels: expose a database, RDP, or SMB service on a fixed `127.0.0.1` port through the profile you choose — managed from the app's new Tunnels page or `tailmux tunnel`, with live start/stop and no router restart.
- Tunnels can forward through an SSH bastion for services only reachable inside the remote network, authenticating with your ssh-agent, a key file, or a password stored in the macOS Keychain.
- Errored tunnels show a retry button in the menu bar and the Tunnels page that bounces the tunnel and clears the error.
- New `tailmux ssh <host>`: an interactive SSH session routed through the profile that owns the hostname — no ProxyCommand to write.
- Install with Homebrew: `brew install --cask cq-fabrication/tap/tailmux` on macOS, or the `cq-fabrication/tap/tailmux` formula for the Linux CLI.
- CLI commands (`connect`, `tunnel`, `ssh`, `diag fetch`) now start only the profile that owns the target instead of every configured profile, and reuse a running TailMux service instead of cold-starting embedded profiles.
- `tailmux up` refuses to start while a TailMux service is already running, and `tailmux dns query` resolves through the running service's control API.
- The menu bar icon now pulses while profiles are still connecting at launch instead of flashing an alert badge, and turns green on its own within seconds.
- Polished the quit dialog and unified the warning banner style across the app.
- Routed HTTP, HTTPS CONNECT, and `tailmux connect` through profile SOCKS5 tunnels to reduce streaming and SSE latency.
- Added `tailmux diag path` for route, profile status, DERP/direct ping, optional netcheck, and HTTP timing diagnostics.
- Added `tailmux profile login --hostname`, `tailmux profile login --reset`, and `tailmux profile logout`.
- Added explicit TailMux profile device hostnames for clear Tailscale approval names.
- Changed generated profile defaults to fixed unique UDP ports for more stable peer-to-peer path discovery.
- Updated example configs and `tailmux init` output to use `backend: "tsnet"` as the recommended starting point.
- Reworked documentation around the current embedded `tsnet` architecture, Safari PAC setup, diagnostics, performance findings, GUI/TUI roadmap, and custom-domain routing aliases, and documented the macOS clean login and node-key recovery procedure.
