1.9 KiB
1.9 KiB
MeTube project notes
Versioning rule
- The version number checked into git (recorded in
DEPLOY.md) is the current online version — the version of the latest published Docker image. - When any changes are made, the new Docker image version must bump the minor number of the latest git version (e.g. latest is
1.9→ new image is1.10). - The version is injected into the image at build time via
--build-arg VERSION=<version>(exposed asMETUBE_VERSIONand served by the/versionendpoint). - Whenever a new image is built and pushed, update the build/push commands in
DEPLOY.mdin the same commit so the checked-in version always matches the published image. - Use
./publish.shto publish: it bumps the minor version fromDEPLOY.md, updatesDEPLOY.md, builds and pushes the image. Pass an explicit version (./publish.sh 2.0) to override. Do not run it unless the user asked to publish.
UI
- Angular app in
ui/. Build withcd ui && npm run build. The Docker image builds the UI itself (seeDockerfile), so no need to commitui/dist.
Media library (organize/browse) feature
LIBRARY_DIR(empty = feature off) points to a separate media library directory, mounted as its own volume. SeeLIBRARY_ORGANIZE_DESIGN.mdfor the full design.- Library state is read from disk on demand — no DB/index.
/library/foldersis cached ~60s in memory; organize/delete invalidate it. - Organizing a completed download moves its file into the library and removes the done entry (a
clearedsocket event updates the UI). - At organize time a hidden sidecar
.<filename>.metube.jsonis written next to the video with source metadata (url,title,uploader,website,downloaded_at) — seelibrary_meta_path()inapp/ytdl.py./library/filesattaches it asmeta; library delete removes it. Files organized before this existed have no sidecar.