|
| 1 | +--- |
| 2 | +layout: release |
| 3 | +title: Themerr-plex v2026.1004.152244 Released |
| 4 | +release-tag: v2026.1004.152244 |
| 5 | +gh-repo: LizardByte/Themerr-plex |
| 6 | +gh-badge: [follow, fork, star] |
| 7 | +tags: [release, themerr-plex] |
| 8 | +thumbnail-img: https://app.lizardbyte.dev/dashboard/github/openGraphImages/Themerr-plex_624x312.png |
| 9 | +comments: true |
| 10 | +authors: |
| 11 | + - github: LizardByte-bot |
| 12 | +--- |
| 13 | + |
| 14 | +## ‼️ Attention: Themerr-plex is back! |
| 15 | + |
| 16 | +After being archived, Themerr-plex has been revived with a major rewrite since the last stable release in August 2024. |
| 17 | + |
| 18 | +**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)) |
| 19 | + |
| 20 | +## ⚠️ Breaking changes and migration notes |
| 21 | + |
| 22 | +- **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. |
| 23 | +- **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. |
| 24 | +- **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. |
| 25 | +- **Use the modern Plex metadata agents.** Theme processing supports **Plex Movie** and **Plex Series** libraries. Legacy metadata agents are no longer supported. |
| 26 | +- **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. |
| 27 | +- **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. |
| 28 | +- **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. |
| 29 | +- **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. |
| 30 | + |
| 31 | +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). |
| 32 | + |
| 33 | +## ✨ Highlights |
| 34 | + |
| 35 | +- **A dedicated management interface.** Manage multiple Plex servers, inspect theme coverage, search and filter your libraries, and monitor scans and upload failures. |
| 36 | +- **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)) |
| 37 | +- **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)) |
| 38 | +- **Desktop notifications.** Receive configurable alerts for new releases and increased theme coverage. ([#596](https://github.com/LizardByte/Themerr-plex/pull/596)) |
| 39 | +- **Broader installation choices.** Native x86-64 and ARM64 archives are available for Windows, Linux, and macOS, alongside Docker images. |
| 40 | + |
| 41 | +## What's Changed |
| 42 | +* ci(l10n): fix pr title for babel updates by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#509](https://github.com/LizardByte/Themerr-plex/pull/509) |
| 43 | +* 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) |
| 44 | +* 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) |
| 45 | +* 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) |
| 46 | +* 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) |
| 47 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#501](https://github.com/LizardByte/Themerr-plex/pull/501) |
| 48 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#535](https://github.com/LizardByte/Themerr-plex/pull/535) |
| 49 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#537](https://github.com/LizardByte/Themerr-plex/pull/537) |
| 50 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#538](https://github.com/LizardByte/Themerr-plex/pull/538) |
| 51 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#548](https://github.com/LizardByte/Themerr-plex/pull/548) |
| 52 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#552](https://github.com/LizardByte/Themerr-plex/pull/552) |
| 53 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#564](https://github.com/LizardByte/Themerr-plex/pull/564) |
| 54 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#565](https://github.com/LizardByte/Themerr-plex/pull/565) |
| 55 | +* chore: update global workflows by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#566](https://github.com/LizardByte/Themerr-plex/pull/566) |
| 56 | +* refactor!: move project to standalone version by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#497](https://github.com/LizardByte/Themerr-plex/pull/497) |
| 57 | +* chore(l10n): new babel updates by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#567](https://github.com/LizardByte/Themerr-plex/pull/567) |
| 58 | +* ci: correct release permissions and Babel output by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#569](https://github.com/LizardByte/Themerr-plex/pull/569) |
| 59 | +* 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) |
| 60 | +* 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) |
| 61 | +* 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) |
| 62 | +* 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) |
| 63 | +* 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) |
| 64 | +* 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) |
| 65 | +* 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) |
| 66 | +* ci: sign macOS PyInstaller release builds by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#577](https://github.com/LizardByte/Themerr-plex/pull/577) |
| 67 | +* refactor: sonar fixes by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#578](https://github.com/LizardByte/Themerr-plex/pull/578) |
| 68 | +* chore(l10n): new babel updates by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#579](https://github.com/LizardByte/Themerr-plex/pull/579) |
| 69 | +* chore(deps): lock file maintenance by [@renovate[bot]](https://github.com/apps/renovate) in [#581](https://github.com/LizardByte/Themerr-plex/pull/581) |
| 70 | +* chore(l10n): update translations by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#583](https://github.com/LizardByte/Themerr-plex/pull/583) |
| 71 | +* chore(l10n): new babel updates by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#584](https://github.com/LizardByte/Themerr-plex/pull/584) |
| 72 | +* chore(l10n): update translations by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#585](https://github.com/LizardByte/Themerr-plex/pull/585) |
| 73 | +* 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) |
| 74 | +* 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) |
| 75 | +* 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) |
| 76 | +* 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) |
| 77 | +* 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) |
| 78 | +* feat: add persistent theme player widget by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#594](https://github.com/LizardByte/Themerr-plex/pull/594) |
| 79 | +* feat: add per-server ignored library multi-select by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#595](https://github.com/LizardByte/Themerr-plex/pull/595) |
| 80 | +* feat: add desktop release and theme coverage notifications by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#596](https://github.com/LizardByte/Themerr-plex/pull/596) |
| 81 | +* chore(l10n): extract locale template before commits by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#597](https://github.com/LizardByte/Themerr-plex/pull/597) |
| 82 | +* ci(windows): add code signing by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#598](https://github.com/LizardByte/Themerr-plex/pull/598) |
| 83 | +* ci(localize): add workflow permissions by [@ReenigneArcher](https://github.com/ReenigneArcher) in [#599](https://github.com/LizardByte/Themerr-plex/pull/599) |
| 84 | +* chore(l10n): update translations by [@LizardByte-bot](https://github.com/LizardByte-bot) in [#591](https://github.com/LizardByte/Themerr-plex/pull/591) |
| 85 | + |
| 86 | +## New Contributors |
| 87 | +* [@renovate[bot]](https://github.com/apps/renovate) made their first contribution in [#570](https://github.com/LizardByte/Themerr-plex/pull/570) |
| 88 | + |
| 89 | +**Full Changelog**: https://github.com/LizardByte/Themerr-plex/compare/v2024.813.13709...v2026.1004.152244 |
| 90 | + |
| 91 | +--- |
| 92 | +## Contributors |
| 93 | +<a href="https://github.com/LizardByte-bot" target="_blank" rel="external noopener noreferrer" aria-label="GitHub profile of contributor, LizardByte-bot" ><img src="https://github.com/LizardByte-bot.png?size=40" width="40" height="40" alt="LizardByte-bot" title="LizardByte-bot: 15 merges" ></a><a href="https://github.com/ReenigneArcher" target="_blank" rel="external noopener noreferrer" aria-label="GitHub profile of contributor, ReenigneArcher" ><img src="https://github.com/ReenigneArcher.png?size=40" width="40" height="40" alt="ReenigneArcher" title="ReenigneArcher: 15 merges" ></a><a href="https://github.com/apps/renovate" target="_blank" rel="external noopener noreferrer" aria-label="GitHub profile of contributor, renovate[bot]" ><img src="https://avatars.githubusercontent.com/in/2740?size=40" width="40" height="40" alt="renovate[bot]" title="renovate[bot]: 9 merges" ></a><a href="https://github.com/apps/dependabot" target="_blank" rel="external noopener noreferrer" aria-label="GitHub profile of contributor, dependabot[bot]" ><img src="https://avatars.githubusercontent.com/in/29110?size=40" width="40" height="40" alt="dependabot[bot]" title="dependabot[bot]: 4 merges" ></a> |
| 94 | + |
| 95 | + |
| 96 | +--- |
| 97 | +📦 **Assets:** |
| 98 | + |
| 99 | +| ⬇️ Download | #️⃣ Download Count | 🛡️ VirusTotal | |
| 100 | +|-------------|-------------------|---------------| |
| 101 | +| [Themerr-plex_Linux_aarch64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Linux_aarch64.zip) |  | [](https://www.virustotal.com/gui/file-analysis/ZmMyZmYwNDIwOTIzNjBlYjY1MDAxNzQ3NWEzNDczZTk6MTc5MTEyODA3Mg==) | |
| 102 | +| [Themerr-plex_Linux_x86_64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Linux_x86_64.zip) |  | [](https://www.virustotal.com/gui/file-analysis/OTRiYzVjMjhiYWQzMWRjMThlMGVkZDFjNjcwMWU3YmI6MTc5MTEyODA3OA==) | |
| 103 | +| [Themerr-plex_Windows_AMD64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Windows_AMD64.zip) |  | [](https://www.virustotal.com/gui/file-analysis/ZDA3NmIyYzM1YmJlY2YyMzlkZmU2YWRlMzRhYWJiMDA6MTc5MTEyODA4Mg==) | |
| 104 | +| [Themerr-plex_Windows_ARM64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_Windows_ARM64.zip) |  | [](https://www.virustotal.com/gui/file-analysis/NDc1NjgwZDk5N2U2MmU4NTZjZmI0NTljNDcyMmU1N2U6MTc5MTEyODA4NA==) | |
| 105 | +| [Themerr-plex_macOS_arm64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_macOS_arm64.zip) |  | [](https://www.virustotal.com/gui/file-analysis/ZTQxYTRjMzNkNzM5NzgwYjdmYmQwZTZmZmU5NWM4NDY6MTc5MTEyODEzMg==) | |
| 106 | +| [Themerr-plex_macOS_x86_64.zip](https://github.com/LizardByte/Themerr-plex/releases/download/v2026.1004.152244/Themerr-plex_macOS_x86_64.zip) |  | [](https://www.virustotal.com/gui/file-analysis/M2RlMDMxOGFlODgwOTUxMTkwMDQ4YTdmM2YwZTI2NDg6MTc5MTEyODEzNw==) | |
0 commit comments