From 95d9ed4aa65882e9baf43bf06f703bd5b4b35f74 Mon Sep 17 00:00:00 2001 From: npeter83 Date: Sat, 19 Sep 2026 19:53:32 +0200 Subject: [PATCH] chore(release): 0.92.0 --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ VERSION | 2 +- frontend/src/lib/releaseNotes.ts | 28 ++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eec53d1c..ad1f016b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,35 @@ edit the release notes and re-run the generator. Upgrading, pinning a version and rolling back: [docs/self-hosting.md](docs/self-hosting.md#upgrading). +## 0.92.0 — 2026-09-19 + +A debt burn: every item the roadmap had deferred is done or dropped — Plex playback per viewer, refusals said in your language, controls that keep the keyboard focus, and a screen reader that hears Hungarian. + +### Features + +- The command palette has a visible way in: a Ctrl K key cap in the header's search field, and a “Jump to…” pill on pages without one. +- The Playlists rail says, under “Missing a list? Why?”, which lists YouTube's API does not hand out (Watch later, History, lists saved from other channels). +- The last native drop-downs are the app's own controls: the live search's result count, rows per page, a download format's content, audio format and quality, and the download dialog's format. +- Plex plays one session per viewer, so two accounts can watch the same film at once; an administrator sets the ceiling on concurrent sessions (Configuration → Plex). + +### Fixes + +- A YouTube action YouTube refuses says what to do — wait for tomorrow's quota, reconnect the account, or try again later — instead of a server error; a passing Google hiccup no longer asks you to reconnect. +- Every refusal the server gives is said in your language, and every label a screen reader or tooltip reads is translated. +- Dragging to reorder a list is announced in your language and with the right position, and a Plex playlist keeps a drag within the list it started in. +- A button that turns itself off, or a row that removes itself, leaves the keyboard focus where it was; Back from a Plex title returns the focus to the tile you opened, even after using a button there. +- With Plex turned off, the Home shelf shows your YouTube pins only, and reordering it leaves the hidden Plex pins in their places; two reorders at once can no longer put two pins on one slot. +- The Home hero from a pinned show offers to unpin the show, and “Surprise me” from the command palette really asks for a surprise. +- A finished Plex title scrobbles once and gets no resume point pushed after it; a subtitle pass that stalled resumes instead of starting over. +- Tables keep their j/k keys after the window is resized across the phone breakpoint, and boxes grow with the text-size setting. +- Whitelisting an address and activating its account happen in one step, and the audit log names the entry. + +### Internal + +- Every mutation answers `ok`, and route helpers leave the commit to the request — both held by tests; a request that leaves a write uncommitted now fails its test. +- New lint rules and contracts: no native select, no hover that ignores aria-disabled, no untranslated accessible text, no unused translation key. +- Two adversarial review rounds at the epic's end: 23 findings, all fixed, each regression test proven to fail with its own fix removed. + ## 0.91.0 — 2026-09-19 What a test run on the live instance turned up, fixed: new videos keep arriving while YouTube's feeds are down, an open tab survives a release, and Back returns to what you left. diff --git a/VERSION b/VERSION index 8f63f4f9..36545ad3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.91.0 +0.92.0 diff --git a/frontend/src/lib/releaseNotes.ts b/frontend/src/lib/releaseNotes.ts index 8695e96a..5c57fc68 100644 --- a/frontend/src/lib/releaseNotes.ts +++ b/frontend/src/lib/releaseNotes.ts @@ -14,6 +14,34 @@ export interface ReleaseEntry { } export const RELEASE_NOTES: ReleaseEntry[] = [ + { + version: "0.92.0", + date: "2026-09-19", + summary: + "A debt burn: every item the roadmap had deferred is done or dropped — Plex playback per viewer, refusals said in your language, controls that keep the keyboard focus, and a screen reader that hears Hungarian.", + features: [ + "The command palette has a visible way in: a Ctrl K key cap in the header's search field, and a “Jump to…” pill on pages without one.", + "The Playlists rail says, under “Missing a list? Why?”, which lists YouTube's API does not hand out (Watch later, History, lists saved from other channels).", + "The last native drop-downs are the app's own controls: the live search's result count, rows per page, a download format's content, audio format and quality, and the download dialog's format.", + "Plex plays one session per viewer, so two accounts can watch the same film at once; an administrator sets the ceiling on concurrent sessions (Configuration → Plex).", + ], + fixes: [ + "A YouTube action YouTube refuses says what to do — wait for tomorrow's quota, reconnect the account, or try again later — instead of a server error; a passing Google hiccup no longer asks you to reconnect.", + "Every refusal the server gives is said in your language, and every label a screen reader or tooltip reads is translated.", + "Dragging to reorder a list is announced in your language and with the right position, and a Plex playlist keeps a drag within the list it started in.", + "A button that turns itself off, or a row that removes itself, leaves the keyboard focus where it was; Back from a Plex title returns the focus to the tile you opened, even after using a button there.", + "With Plex turned off, the Home shelf shows your YouTube pins only, and reordering it leaves the hidden Plex pins in their places; two reorders at once can no longer put two pins on one slot.", + "The Home hero from a pinned show offers to unpin the show, and “Surprise me” from the command palette really asks for a surprise.", + "A finished Plex title scrobbles once and gets no resume point pushed after it; a subtitle pass that stalled resumes instead of starting over.", + "Tables keep their j/k keys after the window is resized across the phone breakpoint, and boxes grow with the text-size setting.", + "Whitelisting an address and activating its account happen in one step, and the audit log names the entry.", + ], + chores: [ + "Every mutation answers `ok`, and route helpers leave the commit to the request — both held by tests; a request that leaves a write uncommitted now fails its test.", + "New lint rules and contracts: no native select, no hover that ignores aria-disabled, no untranslated accessible text, no unused translation key.", + "Two adversarial review rounds at the epic's end: 23 findings, all fixed, each regression test proven to fail with its own fix removed.", + ], + }, { version: "0.91.0", date: "2026-09-19",