Docker Images
Docker images have been built and pushed:
Docker Hub:
alexta69/metube:latestalexta69/metube:2026.10.19
GitHub Container Registry:
ghcr.io/alexta69/metube:latestghcr.io/alexta69/metube:2026.10.19
Changes
- fix: stop yt-dlp from writing its default templates into YTDL_OPTIONS (cd1368b)
- test: let the queued-download test finish before its state dir is removed (920d4e4)
- test: run the ytdl helper tests against the real yt-dlp (04fa578)
- build: drop mutagen and curl-cffi as direct dependencies (d79d2dc)
- ci: run the compile check with the project's Python (9cc7759)
- ci: name yt-dlp by package in the nightly lock upgrade (c43e65e)
- fix: stop binding with SO_REUSEPORT, so a second instance cannot share the port (e18d026)
- fix: treat a blank YTDL_OPTIONS or YTDL_OPTIONS_PRESETS as unset (8bfd8a4)
- fix: sanitize extracted entries for the JSON state store, not for pickle (a7fd304)
- refactor(ui): fetch the version with a relative URL like every other call (24f003c)
- refactor(ui): use the shared actionError in the Subscriptions section (6755bc4)
- refactor(ui): drop the customDirsChanged subject nobody listened to (cffd819)
- fix: list custom folders relative to the base, and cache them plainly (9c5424e)
- refactor(ui): move the Completed section into its own component (d768e85)
- chore: anchor the runtime-state ignore patterns to the repo root (0e7b7b2)
- refactor(ui): move the Downloading section into its own component (713943a)
- refactor(ui): move batch import into a modal component of its own (8257431)
- refactor(ui): move the Subscriptions section into its own component (a486af9)
- refactor: one locked save-with-rollback helper for subscription changes (7bcef57)
- refactor: backfill old DownloadInfo records from one table of defaults (3e25760)
- fix: keep cancellations made during a playlist add when other adds overlap (733ff1c)
- refactor: carry a download's options as one DownloadOptions value (bd01f1f)
- fix(ui): keep form settings in localStorage instead of cookies (eff4646)
- fix(ui): send Retry failed a few requests at a time (8f84801)
- refactor: store validated integer settings as ints (8e6a198)
- fix: load completed records without running them through the format mapping (c13e922)
- fix: merge user outtmpl and paths into MeTube's instead of replacing them (27244ac)
- fix: record a download that fails to start as failed instead of stranding it (1b3f546)
- fix(ui): accept shared links that arrive without a text parameter (effa7d6)
- refactor(ui): handle queue and done changes in one subscription each (4b0abf9)
- fix(ui): stop the number fields from swallowing Enter and shortcuts (4476930)
- fix(ui): render cookie, version and copy results under OnPush (80f0135)
- fix: check CUSTOM_DIRS_EXCLUDE_REGEX, LOGLEVEL and DEFAULT_THEME at startup (b15d2c0)
- fix: keep SponsorBlock, audio tags and video password on failed-add records (dfb6b28)
- fix: validate the boolean, numeric and string fields of /add and /subscribe (2c32347)
- fix: keep reloading YTDL_OPTIONS_FILE after the file is replaced (6014508)