Skip to content

Commit 5420879

Browse files
chore(release): prep v0.8.0 — version bump, changelog
Hardening release ahead of going public. Minor bump: adds config keys (tunarr_username/tunarr_password), an endpoint (POST /api/test-connection), and UI, with no breaking changes to channels.json, the pipeline, or existing APIs. Docker parity verified before tagging — the release image built from this trunk and run against the real Plex/Tunarr: SPA serves, Tunarr 1.3.13 detected, 11 libraries across 4 servers, 156 channels read, 3288 movies / 281 shows faceted, and the new decade buckets surfaced 132 pre-1970 films that were previously invisible to the Planner. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent efc931f commit 5420879

2 files changed

Lines changed: 80 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,85 @@ All notable changes to Programmarr are documented here. This project follows
44
[Semantic Versioning](https://semver.org/) and the spirit of
55
[Keep a Changelog](https://keepachangelog.com/).
66

7+
## [0.8.0] — 2026-08-19
8+
9+
Hardening release ahead of going public. Programmarr had only ever run against its
10+
author's Plex and Tunarr; this release is the result of auditing it for everything that
11+
breaks, misleads, or silently does nothing on *somebody else's* setup.
12+
13+
### Added
14+
15+
- **Tunarr basic auth support.** Tunarr gained optional HTTP basic auth on its API;
16+
Programmarr sent no credentials at all, so a locked-down Tunarr failed everywhere.
17+
New `tunarr_username` / `tunarr_password` config keys, editable in
18+
Settings → Connections (and in onboarding). Every Tunarr call in every module now
19+
goes through one shared header builder, so enabling auth can't half-work.
20+
- **Test connections in onboarding** (`POST /api/test-connection`). Saving config never
21+
contacted Tunarr or Plex, so a typo'd URL produced a green "Setup complete" and a
22+
broken install. The wizard now validates what you typed *before* writing it. A failed
23+
test warns but still lets you continue — it informs, it doesn't gatekeep.
24+
- **Pre-delete lineup backups.** Deploy can delete Tunarr channels, which is
25+
irreversible. Programmarr now writes a gzipped snapshot of everything it's about to
26+
remove — each channel plus its full programming — to `tunarr_backup_*.json.gz` in your
27+
data directory before the first delete. The 3 most recent are kept; dry runs write
28+
nothing. See the new **Backups** section in the README.
29+
- **Tunarr version reporting.** The Dashboard's connection status now includes Tunarr's
30+
self-reported version, so bug reports can state it without digging.
31+
- **Issue templates and Discussions**, so bug reports arrive with the version and log
32+
information needed to actually act on them.
33+
34+
### Fixed
35+
36+
- **Channel numbering order was ignored by the AI path.** `PROMPT.md` had been rewritten
37+
to a numbered list while the code still matched the old wording, so the function that
38+
rewrites the numbering scheme was silently doing nothing — the LLM always received the
39+
*default* category order regardless of Settings → Channel Numbering. A non-match now
40+
warns loudly instead of passing the content through unchanged.
41+
- **Pre-1970 films were invisible to the decade facet.** Decade buckets started at 1970,
42+
so a classic-film collection contributed nothing at all. Buckets now run from the
43+
1920s. (On the author's library this made 132 previously-unreachable films eligible for
44+
decade channels.) New labels are spelled in full — "1950s", not "50s", which would be
45+
ambiguous beside "2020s". Existing 70s/80s/90s labels are unchanged, so current channel
46+
names and saved planner state keep matching.
47+
- **A failed library fetch looked like an empty library.** Every API error collapsed to
48+
"no results", so an outage reported "Indexed 0 movies" and would deploy channels with
49+
nothing on them. Failures are now distinguished from genuinely empty libraries: all
50+
libraries failing raises, a partial failure warns and continues.
51+
- **Misleading errors for unsupported setups.** "No Plex source found in Tunarr" covered
52+
four unrelated situations and sent Jellyfin users off debugging Plex. Now each is named
53+
specifically: an unreachable Tunarr, a Tunarr with no media sources, a non-Plex source
54+
("Found: jellyfin"), a Tunarr too old to have the required endpoint, and — separately —
55+
credentials that are missing versus credentials that are wrong.
56+
- **A broken pipeline run hung the UI forever.** The progress stream ends on a completion
57+
event; anything failing after the response started (a subprocess that won't launch, a
58+
dead pipe, an unwritable log) killed the stream with no error and no exit code, leaving
59+
a spinner. Every failure path now terminates properly.
60+
- **An empty library picker with no explanation.** A Plex failure while listing libraries
61+
was swallowed by a comment claiming the UI showed the error elsewhere. It didn't.
62+
- **A wrong Plex token could pass the connection test.** Many self-hosted Plex servers
63+
allow unauthenticated access on the local network, so *every* local request succeeds —
64+
even with no token. That result is now flagged as unverified rather than reported as a
65+
validated token.
66+
- **Empty Planner sections now say why.** "No TV channels available — run Export" was
67+
shown for three different situations, including to users who had already exported. A
68+
movies-only library is now told plainly there are no TV channels to build; a library
69+
with shows that don't qualify gets the actual thresholds named.
70+
71+
### Changed
72+
73+
- Deploy-time backups are gzipped and retention is 3 rather than 10. Measured on a real
74+
156-channel server: 151 MB raw, 12 MB compressed — at the old retention that was 1.5 GB
75+
quietly accumulating in a data directory.
76+
- README quick start now includes the compose file inline; previously only the TrueNAS
77+
section had one, so anyone who hadn't cloned the repo had nothing to run. Requirements
78+
now state Tunarr 1.x + Plex explicitly, and that Jellyfin/Emby are not supported.
79+
80+
### Notes
81+
82+
Plex remains required. If you'd like Jellyfin or Emby support, add a reaction to
83+
[#36](https://github.com/AlpineArchitecture/programmarr/issues/36) — demand decides
84+
priority.
85+
786
## [0.7.1] — 2026-06-20
887

988
### Fixed

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "programmarr",
3-
"version": "0.7.1",
3+
"version": "0.8.0",
44
"private": true,
55
"type": "module",
66
"scripts": {

0 commit comments

Comments
 (0)