From 1b5207b5afbf261a85f1373b6828b08e49e7f9da Mon Sep 17 00:00:00 2001 From: Brian Krabach Date: Wed, 8 Apr 2026 08:32:05 -0700 Subject: [PATCH] chore: release v0.2.0 -- version bump, changelog, FastAPI version fix --- CHANGELOG.md | 16 ++++++++++++++++ muxplex/main.py | 2 +- pyproject.toml | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bffea5..ddb6ea7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## v0.2.0 (2026-04-08) + +### Features +- **Federation session deletion** -- kill sessions on remote devices from any muxplex client +- **Session creation error reporting** -- replaced fire-and-forget subprocess with async process that checks exit codes, surfaces stderr, and pre-flight checks the command binary on PATH +- **TTY-attach resilience** -- session commands that exit non-zero but still create the tmux session (e.g. `amplifier-workspace` which tries to attach after create) are detected and treated as success + +### Bug Fixes +- **Federation key preservation on URL edit** -- editing a remote instance URL (e.g. `http://` to `https://`) no longer erases the federation key; added position-based fallback alongside the existing URL-based key restoration +- **PWA manifest auth bypass** -- added `.json` to the static extension allowlist so `/manifest.json` is not auth-gated; previously produced "Syntax error" in the browser console +- **`auto_open` toggle** -- fixed three-way key mismatch (`auto_open` vs `auto_open_created`) that made the auto-open setting completely non-functional +- **Session enumeration crash** -- `enumerate_sessions()` now catches `FileNotFoundError` when the session command binary is missing from PATH, preventing poll loop crashes +- **Settings PATCH key leak** -- the `PATCH /api/settings` response now redacts sensitive keys, matching the existing `GET /api/settings` behavior +- **Federation 503 diagnostics** -- all federation proxy 503 errors now include the exception type and message instead of just the remote URL +- **FastAPI version string** -- corrected the hardcoded `version` in the FastAPI app from `0.1.0` to match the release + ## v0.1.1 (2026-04-07) ### Features diff --git a/muxplex/main.py b/muxplex/main.py index 9d755e7..cb403f6 100644 --- a/muxplex/main.py +++ b/muxplex/main.py @@ -209,7 +209,7 @@ async def lifespan(app: FastAPI): # App # --------------------------------------------------------------------------- -app = FastAPI(title="muxplex", version="0.1.0", lifespan=lifespan) +app = FastAPI(title="muxplex", version="0.2.0", lifespan=lifespan) # --------------------------------------------------------------------------- diff --git a/pyproject.toml b/pyproject.toml index d207d99..eb841f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "muxplex" -version = "0.1.1" +version = "0.2.0" description = "Web-based tmux session dashboard — access all your tmux sessions from any browser" readme = "README.md" license = { text = "MIT" }