Repository navigation
v0.12.0
Before you upgrade
This upgrade is one-way. Migrations run forward only. An older
binary opens a newer database without complaint and then runs every
destination with an empty stream key — enabled, live, publishing
nothing, with no error anywhere. Rolling back is not a supported
recovery path; restoring your backup is.
Back up the whole data directory, not just polyemesis.db.
Since 0.7.0 destination stream keys are sealed at rest with
secret.key. A database restored without that file comes back with
every destination disabled — by design, because a key that will not
open disables its destination rather than failing open. That restore
looks completely successful until someone goes live.
Re-run install.sh before upgrading an install older than 0.7.0.
update.sh and uninstall.sh are written to disk when you install,
so an older install is running older helpers — including one whose
backup check does not know to look for secret.key. Re-running the
installer regenerates them. See
docs/UPGRADING.md.
Windows is tested, not operated. One known unresolved defect:
recordings are truncated on service stop. (#440, the intermittent Go
runtime abort, was fixed in 0.9.0.) See
docs/INSTALL.md.
Verify your download against SHA256SUMS, published below, and
that this project's release workflow built it with
gh attestation verify <file> --repo rainmanjam/polyemesis. See
docs/INSTALL.md.
What's Changed
- Post-0.11.0 backlog: audit fix, stop-generation race, stall baseline, lock-order coverage, verified PromQL by @rainmanjam in #871
- chore(deps-dev): bump the dev-tooling group across 1 directory with 5 updates by @dependabot[bot] in #864
- chore(deps): bump motion from 13.4.0 to 13.4.4 in /web by @dependabot[bot] in #866
- chore(deps-dev): bump the dev-tooling group across 1 directory with 4 updates by @dependabot[bot] in #863
- chore(deps): bump astro from 7.3.3 to 7.3.5 in /web by @dependabot[bot] in #865
- chore(deps): bump motion from 13.4.1 to 13.4.4 in /ui by @dependabot[bot] in #867
- chore(deps): bump @astrojs/markdown-satteri from 0.4.1 to 0.4.2 in /web by @dependabot[bot] in #868
- chore(deps): bump lucide-react from 1.47.0 to 1.48.0 in /ui by @dependabot[bot] in #869
- October maintenance: fix main's red security/ci (Go 1.27.2 + npm advisories), failover header, settings copy, site screenshot, motion 14 by @rainmanjam in #894
- chore(deps): batch the October Dependabot updates by @rainmanjam in #895
- UX overhaul: 34 UX Council findings, Stream Deck plugin, live track mute and gain by @rainmanjam in #915
- fix(automod): a model verdict missing abusive or confidence is a failure, not a pass by @rainmanjam in #922
- chore(deps): bump go-chi/chi to v5.4.0 (GHSA-j6qf-3m9c-vwj3) by @rainmanjam in #923
- UX Council: close the remaining gaps (B2 B3 A1 A2 A5 A6 A7 A8 A14 A17 A18 A19 S1 S5 S7) by @rainmanjam in #924
- fix(oauth): turn on PKCE for Twitch now that Twitch advertises S256 by @rainmanjam in #926
- UX follow-up: ingest uptime on the shared listener, header chip and preset defaults per programme by @rainmanjam in #927
- Wave 1: failure reasons, events API, Grafana, MCP server, chat overlay by @rainmanjam in #925
- Site: positive banner and comparison framing by @rainmanjam in #928
- chore(deps): batch the late-October Dependabot updates by @rainmanjam in #930
- Fix audio drift on destinations not restarted at a format-changing failover by @rainmanjam in #931
- FFmpeg 9.0.2 compatibility: installer download fix, 9.0/9.0.1 warning, compat CI by @rainmanjam in #929
- Wave 2: OBS bridge, broadcast delay, chat polls, SRTLA failover, automod model checkers, Stream Deck signals by @rainmanjam in #932
- test(obsbridge): fix the stream-event race in the emission test by @rainmanjam in #935
- Fix audio drift on multi-track destinations after a format-changing failover by @rainmanjam in #934
- fix(scripts): OAuth acceptance live step creates no broadcast by default by @rainmanjam in #936
- ui(platforms): label each credential pair in the platform console's own words by @rainmanjam in #938
- test(engine): wait for the whole drain teardown before reading the drained status (windows flake) by @rainmanjam in #939
- test(api): make the planted recordings a fixed point of the recording manager's scan by @rainmanjam in #940
- fix(engine): count restarts the live-gain path causes by @rainmanjam in #933
- chore: retire Trovo, which shut down on 30 June 2026 by @rainmanjam in #937
- UX overhaul: Settings redesign and app-wide council fixes (Phase 1 + 2) by @rainmanjam in #941
- chore(ffmpeg): require FFmpeg 8.0+; CI tests the latest 8.x and 9.x by @rainmanjam in #943
- Wave 3: X (gated), YouTube vertical, live captions, Twitch VOD track, recurring events, planned rollover + follow-up fixes by @rainmanjam in #942
- test(api): floor bcrypt in the engine-backed fixtures (internal/api -race 1260s -> 377s) by @rainmanjam in #944
- feat(chat): automod flags and sanction state readable on Chat (UX Council A48) by @rainmanjam in #945
- fix(ui): rollover panel reads its programme off the card, not a second GET by @rainmanjam in #947
- Wave 4 #9: public player upgrades (UX, offline card, QoE beacons, HEVC/AV1 fallback) by @rainmanjam in #946
- fix: deliver the stdio relay's refusal answer; bind the srtla dual-stack test to an explicit port by @rainmanjam in #952
- ci(streamdeck): validate and pack the plugin, attach it to releases by @rainmanjam in #948
- Wave 4 #10: S3-compatible offload (mirror mode) + CDN-ready player origin by @rainmanjam in #949
- Wave 4 #4: cross-platform analytics (sampler, live panel, per-stream report, Prometheus/MQTT/CSV, Stream Deck Viewers) by @rainmanjam in #950
- Broadcast delay: Dump, and Cut now on the Stream Deck (#11) by @rainmanjam in #951
- fix(scripts): test-in-docker.sh derives its Go image from go.mod by @rainmanjam in #954
- chore(deps): November batch of safe minor/patch updates and digest pins by @rainmanjam in #955
- fix(ffmpeg): escape filter values at both filtergraph levels on the live path by @rainmanjam in #956
- Wave 4 #5a/#5b: highlight suggestions and vertical shorts in the clip editor by @rainmanjam in #953
- Installer: install caption fonts (fontconfig, DejaVu, Noto CJK) in binary mode by @rainmanjam in #957
- ci: save caches on main only, upload suite logs on failure only by @rainmanjam in #958
- fix(alerts): route Notifier.Flush through the run loop while Run is live by @rainmanjam in #959
- fix(api,recording): root-cause two macOS internal/api flakes by @rainmanjam in #961
- design: broadcast palette tokens (console + website) by @rainmanjam in #960
- Fix five flaky tests at their causes; stop the job tier before the store closes by @rainmanjam in #962
- site: design-review quick wins (rows 3–6, 9, 10, 12, 20–24, 26) by @rainmanjam in #963
- site: one card grid, aligned to the column on every page by @rainmanjam in #965
- design: console quick wins from the 2026-11 design review by @rainmanjam in #964
- test: stop Go tests depending on host free disk, the startup-sweep race and a leaking media.Exec by @rainmanjam in #966
- feat(clips): publish a clip or short to YouTube Shorts or TikTok (Wave 4 #5c) by @rainmanjam in #967
- test: fix two flaky tests (concurrent-dump abort, stuck-offload retry) by @rainmanjam in #968
- fix(offload): make Retry now's kick pass awaitable (flaky stuck-retry test) by @rainmanjam in #970
- release: date v0.12.0 (2026-11-03 UTC) and fold its upgrade notes by @rainmanjam in #969
Full Changelog: v0.11.0...v0.12.0