diff --git a/_posts/releases/themerr-plex/2026-10-04-v2026.1004.152244.md b/_posts/releases/themerr-plex/2026-10-04-v2026.1004.152244.md new file mode 100644 index 00000000..080e8d14 --- /dev/null +++ b/_posts/releases/themerr-plex/2026-10-04-v2026.1004.152244.md @@ -0,0 +1,106 @@ +--- +layout: release +title: Themerr-plex v2026.1004.152244 Released +release-tag: v2026.1004.152244 +gh-repo: LizardByte/Themerr-plex +gh-badge: [follow, fork, star] +tags: [release, themerr-plex] +thumbnail-img: https://app.lizardbyte.dev/dashboard/github/openGraphImages/Themerr-plex_624x312.png +comments: true +authors: + - github: LizardByte-bot +--- + +## ‼️ Attention: Themerr-plex is back! + +After being archived, Themerr-plex has been revived with a major rewrite since the last stable release in August 2024. + +**Themerr-plex now runs as a standalone application alongside Plex Media Server. Upgrading from `v2024.813.13709` or earlier requires migration to the new application.** Installation, configuration, and Plex authentication have changed. ([#497](https://github.com/LizardByte/Themerr-plex/pull/497)) + +## ⚠️ Breaking changes and migration notes + +- **Remove the old plug-in before starting the standalone application.** Stop Plex Media Server, remove the Themerr-plex bundle from its `Plug-Ins` directory, and restart Plex. Install the standalone release archive or Docker image, and keep Themerr-plex running to process library updates. +- **Complete the new account setup.** On first launch, use the one-time setup link shown in the console to create your Themerr administrator account. The default web UI is available at `https://localhost:9494`; its locally generated certificate may trigger a browser warning. +- **Reconnect Plex and configure your settings.** In **Servers**, select **Sign in with Plex**, then connect the servers you want to manage. Your Themerr administrator account protects the application; your Plex account authorizes server access. Review your processing, overwrite, and ignored-library settings in the new application. +- **Use the modern Plex metadata agents.** Theme processing supports **Plex Movie** and **Plex Series** libraries. Legacy metadata agents are no longer supported. +- **Check locked fields when migrating.** Older Themerr-plex versions may have left themes or collection metadata locked. Enable **Ignore locked fields** if you want Themerr to update those fields. +- **Plex data-directory access is needed for cleanup.** Theme uploads use the Plex API. Removing older uploaded themes, posters, or artwork also requires access to the server’s Plex data directory. If that directory is unavailable, disable the three **Remove unused** settings. +- **Docker requires persistent configuration and a token encryption key.** Persist `/config`, mount a private key file outside that volume, and set `THEMERR_PLEX_TOKEN_KEY_FILE`. Keep the same key when recreating the container. +- **YouTube extraction has changed.** Themerr now uses `yt-dlp`, with Deno bundled in release archives. If YouTube requires sign-in, the **YouTube Cookies** setting accepts a JSON cookie export. + +See the [installation guide](https://docs.lizardbyte.dev/projects/themerr-plex/latest/about/installation.html), [setup and usage guide](https://docs.lizardbyte.dev/projects/themerr-plex/latest/about/usage.html), and [Docker instructions](https://docs.lizardbyte.dev/projects/themerr-plex/latest/about/docker.html). + +## ✨ Highlights + +- **A dedicated management interface.** Manage multiple Plex servers, inspect theme coverage, search and filter your libraries, and monitor scans and upload failures. +- **Persistent theme playback.** Listen while navigating the application, with seeking, volume, shuffle, repeat, and supported system media controls. ([#594](https://github.com/LizardByte/Themerr-plex/pull/594)) +- **Better troubleshooting and customization.** Browse searchable logs with session history, choose automatic/light/dark appearance, and exclude libraries per server. ([#592](https://github.com/LizardByte/Themerr-plex/pull/592), [#593](https://github.com/LizardByte/Themerr-plex/pull/593), [#595](https://github.com/LizardByte/Themerr-plex/pull/595)) +- **Desktop notifications.** Receive configurable alerts for new releases and increased theme coverage. ([#596](https://github.com/LizardByte/Themerr-plex/pull/596)) +- **Broader installation choices.** Native x86-64 and ARM64 archives are available for Windows, Linux, and macOS, alongside Docker images. + +## What's Changed +* ci(l10n): fix pr title for babel updates by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#509](https://github.com/LizardByte/Themerr-plex/pull/509) +* build(deps): bump LizardByte/create-release-action from 2024.614.221009 to 2024.919.143026 by [@dependabot[bot]](https://github.com/apps/dependabot) in [#505](https://github.com/LizardByte/Themerr-plex/pull/505) +* build(deps): bump LizardByte/setup-release-action from 2024.801.192524 to 2024.919.143601 by [@dependabot[bot]](https://github.com/apps/dependabot) in [#506](https://github.com/LizardByte/Themerr-plex/pull/506) +* build(deps): bump @fontsource/open-sans from 5.0.28 to 5.1.0 by [@dependabot[bot]](https://github.com/apps/dependabot) in [#504](https://github.com/LizardByte/Themerr-plex/pull/504) +* build(deps): bump peter-evans/create-pull-request from 6 to 7 by [@dependabot[bot]](https://github.com/apps/dependabot) in [#502](https://github.com/LizardByte/Themerr-plex/pull/502) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#501](https://github.com/LizardByte/Themerr-plex/pull/501) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#535](https://github.com/LizardByte/Themerr-plex/pull/535) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#537](https://github.com/LizardByte/Themerr-plex/pull/537) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#538](https://github.com/LizardByte/Themerr-plex/pull/538) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#548](https://github.com/LizardByte/Themerr-plex/pull/548) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#552](https://github.com/LizardByte/Themerr-plex/pull/552) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#564](https://github.com/LizardByte/Themerr-plex/pull/564) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#565](https://github.com/LizardByte/Themerr-plex/pull/565) +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#566](https://github.com/LizardByte/Themerr-plex/pull/566) +* refactor!: move project to standalone version by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#497](https://github.com/LizardByte/Themerr-plex/pull/497) +* chore(l10n): new babel updates by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#567](https://github.com/LizardByte/Themerr-plex/pull/567) +* ci: correct release permissions and Babel output by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#569](https://github.com/LizardByte/Themerr-plex/pull/569) +* chore(deps): update dependency cryptography to v50.0.2 by [@renovate[bot]](https://github.com/apps/renovate) in [#570](https://github.com/LizardByte/Themerr-plex/pull/570) +* chore(deps): update dependency sqlalchemy to v2.1.2 by [@renovate[bot]](https://github.com/apps/renovate) in [#571](https://github.com/LizardByte/Themerr-plex/pull/571) +* chore(deps): pin ghcr.io/astral-sh/uv docker tag to v0.12 by [@renovate[bot]](https://github.com/apps/renovate) in [#572](https://github.com/LizardByte/Themerr-plex/pull/572) +* chore(deps): update lizardbyte/actions action to v2026.928.123224 by [@renovate[bot]](https://github.com/apps/renovate) in [#573](https://github.com/LizardByte/Themerr-plex/pull/573) +* chore(deps): update actions/download-artifact action to v8 by [@renovate[bot]](https://github.com/apps/renovate) in [#574](https://github.com/LizardByte/Themerr-plex/pull/574) +* chore(deps): update dependency lucide to v1.50.0 by [@renovate[bot]](https://github.com/apps/renovate) in [#575](https://github.com/LizardByte/Themerr-plex/pull/575) +* ci: add native ARM64 builds and architecture-specific artifacts by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#576](https://github.com/LizardByte/Themerr-plex/pull/576) +* ci: sign macOS PyInstaller release builds by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#577](https://github.com/LizardByte/Themerr-plex/pull/577) +* refactor: sonar fixes by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#578](https://github.com/LizardByte/Themerr-plex/pull/578) +* chore(l10n): new babel updates by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#579](https://github.com/LizardByte/Themerr-plex/pull/579) +* chore(deps): lock file maintenance by [@renovate[bot]](https://github.com/apps/renovate) in [#581](https://github.com/LizardByte/Themerr-plex/pull/581) +* chore(l10n): update translations by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#583](https://github.com/LizardByte/Themerr-plex/pull/583) +* chore(l10n): new babel updates by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#584](https://github.com/LizardByte/Themerr-plex/pull/584) +* chore(l10n): update translations by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#585](https://github.com/LizardByte/Themerr-plex/pull/585) +* chore(deps): update dependency av to v19.0.1 by [@renovate[bot]](https://github.com/apps/renovate) in [#588](https://github.com/LizardByte/Themerr-plex/pull/588) +* chore(deps): update dependency sqlalchemy to v2.1.3 by [@renovate[bot]](https://github.com/apps/renovate) in [#580](https://github.com/LizardByte/Themerr-plex/pull/580) +* feat(web): migrate to FastAPI and add interactive API docs by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#589](https://github.com/LizardByte/Themerr-plex/pull/589) +* feat(web): add log viewer with full session history by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#592](https://github.com/LizardByte/Themerr-plex/pull/592) +* feat(web): add automatic light and dark theme switcher by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#593](https://github.com/LizardByte/Themerr-plex/pull/593) +* feat: add persistent theme player widget by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#594](https://github.com/LizardByte/Themerr-plex/pull/594) +* feat: add per-server ignored library multi-select by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#595](https://github.com/LizardByte/Themerr-plex/pull/595) +* feat: add desktop release and theme coverage notifications by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#596](https://github.com/LizardByte/Themerr-plex/pull/596) +* chore(l10n): extract locale template before commits by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#597](https://github.com/LizardByte/Themerr-plex/pull/597) +* ci(windows): add code signing by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#598](https://github.com/LizardByte/Themerr-plex/pull/598) +* ci(localize): add workflow permissions by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#599](https://github.com/LizardByte/Themerr-plex/pull/599) +* chore(l10n): update translations by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#591](https://github.com/LizardByte/Themerr-plex/pull/591) + +## New Contributors +* [@renovate[bot]](https://github.com/apps/renovate) made their first contribution in [#570](https://github.com/LizardByte/Themerr-plex/pull/570) + +**Full Changelog**: https://github.com/LizardByte/Themerr-plex/compare/v2024.813.13709...v2026.1004.152244 + +--- +## Contributors +LizardByte-botReenigneArcherrenovate[bot]dependabot[bot] + + +--- +📦 **Assets:** + +| ⬇️ Download | #️⃣ Download Count | 🛡️ VirusTotal | +|-------------|-------------------|---------------| +| [Themerr-plex_Linux_aarch64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Linux_aarch64.zip) | ![Downloads](https://img.shields.io/github/downloads/LizardByte/Themerr-plex/v2026.1004.152244/Themerr-plex_Linux_aarch64.zip?style=flat-square&label=&displayAssetName=false) | [![VirusTotal](https://badges.cssnr.com/vt/id/sha256:8f2a763d2682473387039760a724ac6c6b23b5a509ddc44bd207875d160dd51f?style=flat-square&icon=virustotal&label=)](https://www.virustotal.com/gui/file-analysis/ZmMyZmYwNDIwOTIzNjBlYjY1MDAxNzQ3NWEzNDczZTk6MTc5MTEyODA3Mg==) | +| [Themerr-plex_Linux_x86_64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Linux_x86_64.zip) | ![Downloads](https://img.shields.io/github/downloads/LizardByte/Themerr-plex/v2026.1004.152244/Themerr-plex_Linux_x86_64.zip?style=flat-square&label=&displayAssetName=false) | [![VirusTotal](https://badges.cssnr.com/vt/id/sha256:9a6cf52ead12c6e366911d6a4f06a69c19f6492f0b50aad6812f4642692709c1?style=flat-square&icon=virustotal&label=)](https://www.virustotal.com/gui/file-analysis/OTRiYzVjMjhiYWQzMWRjMThlMGVkZDFjNjcwMWU3YmI6MTc5MTEyODA3OA==) | +| [Themerr-plex_Windows_AMD64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Windows_AMD64.zip) | ![Downloads](https://img.shields.io/github/downloads/LizardByte/Themerr-plex/v2026.1004.152244/Themerr-plex_Windows_AMD64.zip?style=flat-square&label=&displayAssetName=false) | [![VirusTotal](https://badges.cssnr.com/vt/id/sha256:9e5964f4145ed2b967281e0e4d87543912c6b9b261bd4604535ce39f4d0ff406?style=flat-square&icon=virustotal&label=)](https://www.virustotal.com/gui/file-analysis/ZDA3NmIyYzM1YmJlY2YyMzlkZmU2YWRlMzRhYWJiMDA6MTc5MTEyODA4Mg==) | +| [Themerr-plex_Windows_ARM64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Windows_ARM64.zip) | ![Downloads](https://img.shields.io/github/downloads/LizardByte/Themerr-plex/v2026.1004.152244/Themerr-plex_Windows_ARM64.zip?style=flat-square&label=&displayAssetName=false) | [![VirusTotal](https://badges.cssnr.com/vt/id/sha256:12777b1c35a567271392d1249458ada05a9b42b83c04a29a4d3a7f20dc9825f0?style=flat-square&icon=virustotal&label=)](https://www.virustotal.com/gui/file-analysis/NDc1NjgwZDk5N2U2MmU4NTZjZmI0NTljNDcyMmU1N2U6MTc5MTEyODA4NA==) | +| [Themerr-plex_macOS_arm64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_macOS_arm64.zip) | ![Downloads](https://img.shields.io/github/downloads/LizardByte/Themerr-plex/v2026.1004.152244/Themerr-plex_macOS_arm64.zip?style=flat-square&label=&displayAssetName=false) | [![VirusTotal](https://badges.cssnr.com/vt/id/sha256:15f22fa3a21c97175e2a26be899616b6efd01ad8a71672b2d0dce0ff405b1ea3?style=flat-square&icon=virustotal&label=)](https://www.virustotal.com/gui/file-analysis/ZTQxYTRjMzNkNzM5NzgwYjdmYmQwZTZmZmU5NWM4NDY6MTc5MTEyODEzMg==) | +| [Themerr-plex_macOS_x86_64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_macOS_x86_64.zip) | ![Downloads](https://img.shields.io/github/downloads/LizardByte/Themerr-plex/v2026.1004.152244/Themerr-plex_macOS_x86_64.zip?style=flat-square&label=&displayAssetName=false) | [![VirusTotal](https://badges.cssnr.com/vt/id/sha256:386318565659f7b5fdc400fb7962a542bb6f207b6d656c3b358b0d264065cae6?style=flat-square&icon=virustotal&label=)](https://www.virustotal.com/gui/file-analysis/M2RlMDMxOGFlODgwOTUxMTkwMDQ4YTdmM2YwZTI2NDg6MTc5MTEyODEzNw==) |