Repository navigation
Releases: LizardByte/Themerr
Release list
v2026.1009.123621
What's Changed
- fix: handle duplicate dashboard items for Plex and Jellyfin by @ReenigneArcher in #627
- chore(deps): update dependency fastapi to v0.143.0 by @renovate[bot] in #629
- chore(deps): update apple-actions/import-codesign-certs action to v7.1.0 by @renovate[bot] in #628
Full Changelog: v2026.1008.3030...v2026.1009.123621
Contributors
📦 Assets:
| ⬇️ Download | #️⃣ Download Count | 🛡️ VirusTotal |
|---|---|---|
| Themerr_Linux_aarch64.zip | ||
| Themerr_Linux_x86_64.zip | ||
| Themerr_Windows_AMD64.zip | ||
| Themerr_Windows_ARM64.zip | ||
| Themerr_macOS_arm64.zip | ||
| Themerr_macOS_x86_64.zip |
v2026.1008.184351
What's Changed
- fix: handle duplicate dashboard items for Plex and Jellyfin by @ReenigneArcher in #627
Full Changelog: v2026.1008.3030...v2026.1008.184351
Contributors
📦 Assets:
| ⬇️ Download | #️⃣ Download Count | 🛡️ VirusTotal |
|---|---|---|
| Themerr_Linux_aarch64.zip | ||
| Themerr_Linux_x86_64.zip | ||
| Themerr_Windows_AMD64.zip | ||
| Themerr_Windows_ARM64.zip | ||
| Themerr_macOS_arm64.zip | ||
| Themerr_macOS_x86_64.zip |
v2026.1008.3030
‼️ Attention: Themerr now supports Plex and Jellyfin!
Themerr-plex has been renamed to Themerr! Manage Plex and Jellyfin servers from the same standalone application, with shared library browsing, theme playback, and processing history. This release also provides a migration path from the older Themerr-jellyfin plugin. (#600)
⚠️ Breaking changes and migration notes
- Update launchers and Docker references. Release archives now use the Themerr name. Launch
themerr, orthemerr.appon macOS, and update Docker deployments tolizardbyte/themerr. Preserve your existing configuration directory or/configvolume to retain saved settings, server connections, and history. - Keep your existing credential encryption key. Docker and headless installations use
THEMERR_TOKEN_KEY_FILE. The previousTHEMERR_PLEX_TOKEN_KEY_FILEname remains supported; use the same key file when changing the variable name. This key also protects saved YouTube cookies. - Review Jellyfin migration settings before connecting. Connect through Servers > Jellyfin using a Jellyfin API key. By default, Themerr recognizes unchanged themes from the older Themerr-jellyfin plugin and removes that plugin and its repository after connecting. These preferences are available under Settings > Jellyfin.
- Make Themerr reachable from Jellyfin. Save a Themerr address on the connected server card so Jellyfin can install its connector. With Themerr's default self-signed certificate, use the connector repository on HTTP port
9495and publish that port in Docker. Use an address reachable from the Jellyfin server;localhostinside another container refers to that container. - Older Plex plugin installations still require migration. If upgrading from
v2024.813.13709or earlier, follow the standalone application migration notes before starting this release.
✨ Highlights
- Jellyfin integration. Add themes to movies, series, and collections on Jellyfin 10.11.x and stable Jellyfin 12.x starting at 12.1, including 12.2. Existing user themes are protected by default, with optional replacement and backups. (#600, #613)
- Automatic Jellyfin connector management. Themerr installs and updates the matching connector, waits for playback to finish before automatic restarts, and fixes connector replacement restart loops. (#600, #606)
- Remote Plex cleanup over SSH. Remove older uploaded themes, posters, and artwork through SFTP when Plex runs on another machine. Configure password or private-key authentication with server fingerprint verification directly from the updated server cards. (#619)
- Safer YouTube cookie storage. Saved cookies are encrypted and masked in Settings, with explicit controls to reveal, replace, or clear them. Existing saved cookies are encrypted automatically when upgrading. (#612)
- Accurate ThemerrDB deployment status. The deployment indicator now reads the timestamp from ThemerrDB's published metadata. (#615)
- Updated Docker packaging. Docker images now use an Alpine runtime with the packaged Themerr application and bundled Jellyfin connectors. (#625)
For a comprehensive list of changes, see below.
What's Changed
- feat: support Jellyfin and rename repo to Themerr by @ReenigneArcher in #600
- chore(deps): lock file maintenance by @renovate[bot] in #601
- chore(deps): update dependency lucide to v1.52.0 by @renovate[bot] in #603
- chore(l10n): update translations by @ReenigneArcher in #604
- chore: add sonar property files by @ReenigneArcher in #605
- fix(jellyfin): prevent connector replacement restart loops by @ReenigneArcher in #606
- ci: reuse preinstalled OpenSSL on Windows ARM64 by @ReenigneArcher in #610
- fix: securely store YouTube cookies by @ReenigneArcher in #612
- feat(jellyfin): support compatibility series and runtime validation by @ReenigneArcher in #613
- chore(l10n): new babel updates by @LizardByte-bot in #614
- fix: read ThemerrDB deployment timestamp from published metadata by @ReenigneArcher in #615
- fix(l10n): keep JavaScript extraction consistent across platforms by @ReenigneArcher in #617
- feat: add secure Plex SSH cleanup and refine server cards by @ReenigneArcher in #619
- chore(deps): update mcr.microsoft.com/dotnet/sdk docker tag to v11 by @renovate[bot] in #618
- chore(l10n): update translations by @ReenigneArcher in #607
- chore(deps): update official github actions by @renovate[bot] in #620
- chore(deps): update dependency sqlalchemy to v2.1.4 by @renovate[bot] in #623
- chore(deps): update dependency fastapi to v0.142.4 by @renovate[bot] in #624
- build(docker): package Themerr in an Alpine runtime image by @ReenigneArcher in #625
- chore(deps): lock file maintenance by @renovate[bot] in #622
Full Changelog: v2026.1004.152244...v2026.1008.3030
Contributors
📦 Assets:
| ⬇️ Download | #️⃣ Download Count | 🛡️ VirusTotal |
|---|---|---|
| Themerr_Linux_aarch64.zip | ||
| Themerr_Linux_x86_64.zip | ||
| Themerr_Windows_AMD64.zip | ||
| [Themerr_Windows_ARM64.zip](https://github.com/LizardByte/Themerr/releases/download/v202... |
v2026.1004.152244
‼️ 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](https://github.com/Reenig...
v2024.813.13709
Attention
This is the final release that will be a plugin for Plex, due to the recent Plex announcement. The next release following this one will be a standalone version.
What's Changed
- build(deps): bump third-party/youtube-dl from
16f5bbctoe1b3fa2by @dependabot in #481 - build(deps): bump third-party/youtube-dl from
e1b3fa2toc509896by @dependabot in #489 - build(deps): bump LizardByte/setup-release-action from 2024.717.220227 to 2024.801.192524 by @dependabot in #487
- build(deps-dev): bump plexhints from 2023.1211.160853 to 2024.809.14117 by @dependabot in #494
- build(deps): bump LizardByte/plexhints from 2024.715.173608 to 2024.809.14117 by @dependabot in #492
- chore: update global workflows by @LizardByte-bot in #476
- chore: update global workflows by @LizardByte-bot in #498
Full Changelog: v2024.717.231002...v2024.813.13709
Contributors
v2024.717.231002
What's Changed
- ci: use prerelease logic by @ReenigneArcher in #431
- chore: update global workflows by @LizardByte-bot in #416
- build(deps): bump bootstrap from 5.3.2 to 5.3.3 by @dependabot in #355
- build(deps): bump @fortawesome/fontawesome-free from 6.5.1 to 6.5.2 by @dependabot in #412
- build(deps): bump @fontsource/open-sans from 5.0.20 to 5.0.28 by @dependabot in #419
- New Crowdin updates by @ReenigneArcher in #413
- chore: update global workflows by @LizardByte-bot in #440
- build(deps): bump LizardByte/create-release-action from 2024.520.180003 to 2024.524.143912 by @dependabot in #442
- build(deps): bump LizardByte/setup-release-action from 2024.520.181643 to 2024.524.1411 by @dependabot in #441
- chore: update global workflows by @LizardByte-bot in #444
- build(deps): bump LizardByte/setup-release-action from 2024.524.1411 to 2024.608.210128 by @dependabot in #448
- build(deps): bump LizardByte/create-release-action from 2024.524.143912 to 2024.609.5014 by @dependabot in #447
- build(deps): bump LizardByte/setup-python-action from 2024.202.205923 to 2024.609.5111 by @dependabot in #445
- build(deps): bump LizardByte/create-release-action from 2024.609.5014 to 2024.611.132610 by @dependabot in #453
- build(deps): bump LizardByte/create-release-action from 2024.611.132610 to 2024.614.221009 by @dependabot in #455
- chore: update global workflows by @LizardByte-bot in #457
- build(deps): bump third-party/youtube-dl from
820fae3to16f5bbcby @dependabot in #459 - build(deps): bump LizardByte/setup-release-action from 2024.608.210128 to 2024.714.140421 by @dependabot in #458
- build(deps): bump LizardByte/plexhints from 2024.521.1558 to 2024.715.173608 by @dependabot in #460
- New Crowdin updates by @ReenigneArcher in #454
- ci(codecov): notify after all builds complete by @ReenigneArcher in #464
- build(deps): bump LizardByte/setup-release-action from 2024.714.140421 to 2024.716.220208 by @dependabot in #468
- build(deps): bump @fortawesome/fontawesome-free from 6.5.2 to 6.6.0 by @dependabot in #471
- ci(pytest): add colored output by @ReenigneArcher in #470
- build(deps): bump LizardByte/setup-release-action from 2024.716.220208 to 2024.717.220227 by @dependabot in #474
Full Changelog: v2024.419.413...2024.717.231002
Contributors
v2024.419.413
What's Changed
- build(deps): bump codecov/codecov-action from 3 to 4 by @dependabot in #385
Full Changelog: v2024.321.173613...v2024.419.413
v2024.321.173613
What's Changed
- build(i18n): update dest options for crowdin config by @ReenigneArcher in #408
Full Changelog: v2024.321.132311...v2024.321.173613
v2024.321.132311
What's Changed
- New Crowdin updates by @ReenigneArcher in #405
- build(i18n): add crowdin update_option by @ReenigneArcher in #406
Full Changelog: v2024.320.141633...v2024.321.132311
v2024.320.141633
What's Changed
- build(i18n): rename source strings on crowdin by @ReenigneArcher in #403
Full Changelog: v2024.320.132907...v2024.320.141633