‼️ 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)
⚠️ 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-Insdirectory, 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 setTHEMERR_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, setup and usage guide, and Docker instructions.
✨ 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)
- Better troubleshooting and customization. Browse searchable logs with session history, choose automatic/light/dark appearance, and exclude libraries per server. (#592, #593, #595)
- Desktop notifications. Receive configurable alerts for new releases and increased theme coverage. (#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 in #509
- build(deps): bump LizardByte/create-release-action from 2024.614.221009 to 2024.919.143026 by @dependabot[bot] in #505
- build(deps): bump LizardByte/setup-release-action from 2024.801.192524 to 2024.919.143601 by @dependabot[bot] in #506
- build(deps): bump @fontsource/open-sans from 5.0.28 to 5.1.0 by @dependabot[bot] in #504
- build(deps): bump peter-evans/create-pull-request from 6 to 7 by @dependabot[bot] in #502
- chore: update global workflows by @LizardByte-bot in #501
- chore: update global workflows by @LizardByte-bot in #535
- chore: update global workflows by @LizardByte-bot in #537
- chore: update global workflows by @LizardByte-bot in #538
- chore: update global workflows by @LizardByte-bot in #548
- chore: update global workflows by @LizardByte-bot in #552
- chore: update global workflows by @LizardByte-bot in #564
- chore: update global workflows by @LizardByte-bot in #565
- chore: update global workflows by @LizardByte-bot in #566
- refactor!: move project to standalone version by @ReenigneArcher in #497
- chore(l10n): new babel updates by @LizardByte-bot in #567
- ci: correct release permissions and Babel output by @ReenigneArcher in #569
- chore(deps): update dependency cryptography to v50.0.2 by @renovate[bot] in #570
- chore(deps): update dependency sqlalchemy to v2.1.2 by @renovate[bot] in #571
- chore(deps): pin ghcr.io/astral-sh/uv docker tag to v0.12 by @renovate[bot] in #572
- chore(deps): update lizardbyte/actions action to v2026.928.123224 by @renovate[bot] in #573
- chore(deps): update actions/download-artifact action to v8 by @renovate[bot] in #574
- chore(deps): update dependency lucide to v1.50.0 by @renovate[bot] in #575
- ci: add native ARM64 builds and architecture-specific artifacts by @ReenigneArcher in #576
- ci: sign macOS PyInstaller release builds by @ReenigneArcher in #577
- refactor: sonar fixes by @ReenigneArcher in #578
- chore(l10n): new babel updates by @LizardByte-bot in #579
- chore(deps): lock file maintenance by @renovate[bot] in #581
- chore(l10n): update translations by @LizardByte-bot in #583
- chore(l10n): new babel updates by @LizardByte-bot in #584
- chore(l10n): update translations by @LizardByte-bot in #585
- chore(deps): update dependency av to v19.0.1 by @renovate[bot] in #588
- chore(deps): update dependency sqlalchemy to v2.1.3 by @renovate[bot] in #580
- feat(web): migrate to FastAPI and add interactive API docs by @ReenigneArcher in #589
- feat(web): add log viewer with full session history by @ReenigneArcher in #592
- feat(web): add automatic light and dark theme switcher by @ReenigneArcher in #593
- feat: add persistent theme player widget by @ReenigneArcher in #594
- feat: add per-server ignored library multi-select by @ReenigneArcher in #595
- feat: add desktop release and theme coverage notifications by @ReenigneArcher in #596
- chore(l10n): extract locale template before commits by @ReenigneArcher in #597
- ci(windows): add code signing by @ReenigneArcher in #598
- ci(localize): add workflow permissions by @ReenigneArcher in #599
- chore(l10n): update translations by @LizardByte-bot in #591
New Contributors
- @renovate[bot] made their first contribution in #570
Full Changelog: https://github.com/LizardByte/Themerr-plex/compare/v2024.813.13709…v2026.1004.152244
Contributors
📦 Assets:
| ⬇️ Download | #️⃣ Download Count | 🛡️ VirusTotal |
|---|---|---|
| Themerr-plex_Linux_aarch64.zip | ||
| Themerr-plex_Linux_x86_64.zip | ||
| Themerr-plex_Windows_AMD64.zip | ||
| Themerr-plex_Windows_ARM64.zip | ||
| Themerr-plex_macOS_arm64.zip | ||
| Themerr-plex_macOS_x86_64.zip |
#CommissionsEarned | As an Amazon Associate we earn from qualifying purchases.