A field report from @Sthaagg on playlist downloads, and the build fix that had to land with it.
🏷️ Playlist videos keep the title their creator published
YouTube serves playlist listings with the titles it auto-translates to the locale of the request. HomeTube named each file from that listing, so a French playlist landed on disk in English:
listed : Stop Mélenchon! - Pierre-Emmanuel Barré's Big Week
metadata : Arrêtons Mélenchon ! - La grosse semaine de Pierre-Emmanuel Barré
Every playlist video already gets its own metadata fetched before downloading, and that metadata carries the original title. HomeTube now names the file from there, and stores it in the playlist status so later renames follow. When a video is unavailable or carries no title, the listed one is still used.
The log says so when the two differ:
🏷️ Original title: Arrêtons Mélenchon ! - La grosse semaine de Pierre-Emmanuel Barré (listed as: Stop Mélenchon! - Pierre-Emmanuel Barré's Big Week)
Videos already downloaded under a translated name stay recognised through the playlist status, so nothing is fetched twice. The playlist preview in the interface still shows the listed titles — resolving all of them up front would mean one extraction per entry.
🐳 The image builds again
The base image, jauderho/yt-dlp:latest, moved to a uv-built virtualenv at /opt/venv that carries no pip, and every build died on No module named pip. The install is now driven from the system pip and aimed at whichever interpreter is first on PATH, so HomeTube lands in the environment the container actually runs in, with or without a venv. The layer ends on import streamlit and yt-dlp --version, so the next shift in that base breaks a build instead of a container.
This release is the first one the fix made possible.
⬆️ Upgrading
A patch release: no configuration, volume or default has changed. New downloads from a playlist take the original titles; files already on disk are left alone.
docker compose pull && docker compose up -dAvailable for linux/amd64 and linux/arm64 as ghcr.io/egalitarianmonkey/hometube:2.12.2 (also :2.12, :2 and :latest).
It also carries the Jellyfin hand-off rework and the Content notification change merged since v2.12.1 — see the changelog below.
What's Changed
🚀 Features
- feat(notifications): lead the Content note with the engine and job queue by @EgalitarianMonkey in #127
🐛 Fixes
- fix(playlist): name playlist videos with their original title by @EgalitarianMonkey in #142
- fix(docker): install into the interpreter the base image puts on PATH by @EgalitarianMonkey in #143
📚 Docs
- docs(legal): state copyright, authorship and contribution terms by @EgalitarianMonkey in #135
- refactor(integrations): reimplement the Jellyfin hand-off by @EgalitarianMonkey in #136
🧹 Maintenance
- chore(deps): bump the python-minor-patch group with 3 updates by @dependabot[bot] in #128
- chore(deps): bump pytz from 2025.2 to 2026.3.post1 by @dependabot[bot] in #129
- chore(deps): bump rpds-py from 0.27.1 to 2026.6.3 by @dependabot[bot] in #131
- chore(deps): bump tzdata from 2025.2 to 2026.3 by @dependabot[bot] in #132
- chore(deps): ignore websockets majors while streamlit pins them below 17 by @EgalitarianMonkey in #133
- chore(release): bump version to 2.12.2 by @EgalitarianMonkey in #144
Full Changelog: v2.12.1...v2.12.2