Commit graph

760 commits

Author SHA1 Message Date
TonyBlu
764114f5da Merge branch 'auto-download-pause-resume' 2026-05-25 22:50:33 +08:00
TonyBlu
0b66872d6b fix(ci): use UPSTREAM_TOKEN for both checkout and sync push
GITHUB_TOKEN cannot push commits that contain changes to
.github/workflows/ files (GitHub security restriction).
Use a Classic PAT with 'repo' + 'workflow' scopes instead.

Also add explicit checkout with fetch-depth:0 and ref:master
so the Fork-Sync action has full history for merging.
2026-05-25 22:50:00 +08:00
TonyBlu
d81d6654e5 fix(ci): resolve merge conflict in sync-upstream workflow 2026-05-25 22:39:29 +08:00
TonyBlu
e7f816a5bd fix(ci): align sync workflow with lobehub reference, use GITHUB_TOKEN
Revert to actions-cool/issues-helper and aormsby/Fork-Sync-With-Upstream-action
(matching lobehub/lobehub upstream sync pattern) with pinned SHA for v3.7.6.
Uses GITHUB_TOKEN which works when repo Settings > Actions > Workflow permissions
is set to 'Read and write permissions'.
2026-05-25 22:38:25 +08:00
TonyBlu
11c6f53468 fix(ci): resolve merge conflict, use PAT-only token for fork sync 2026-05-25 22:31:07 +08:00
TonyBlu
c0e7232a64 fix(ci): require UPSTREAM_TOKEN PAT for fork sync push
GITHUB_TOKEN cannot push to fork repos in scheduled workflows.
Remove the GITHUB_TOKEN fallback so the workflow fails explicitly
when UPSTREAM_TOKEN is missing, instead of silently 403-ing.
Also add issues:write permission and git user config for merges.
2026-05-25 22:29:58 +08:00
TonyBlu
ad12521ea4 fix(ci): rewrite sync-upstream workflow to avoid third-party actions
Replace actions-cool/issues-helper and aormsby/Fork-Sync-With-Upstream-action
with native git commands and actions/github-script. This fixes the
'Repository access blocked' error caused by GitHub restricting access
to third-party actions in fork repositories.
2026-05-25 22:27:32 +08:00
TonyBlu
a85a564ed5 fix(ci): rewrite sync-upstream workflow to avoid third-party actions
Replace actions-cool/issues-helper and aormsby/Fork-Sync-With-Upstream-action
with native git commands and actions/github-script. This fixes the
'Repository access blocked' error caused by GitHub restricting access
to third-party actions in fork repositories.
2026-05-25 22:26:01 +08:00
TonyBlu
6e65441eba
Merge pull request #4 from TonyBlur/auto-download-pause-resume
feat: support auto download, pause and resume and download phase label
2026-05-25 22:10:59 +08:00
TonyBlu
33e6ae3388 fix: clear() deletes chapter/subtitle files + persist subtitle_files
Bug fixes from full codebase review:
- clear() with DELETE_FILE_ON_TRASHCAN now also deletes chapter_files
  and subtitle_files, not just the primary filename
- _PERSISTED_DOWNLOAD_FIELDS now includes 'subtitle_files' so subtitle
  file info survives app restart

Tests:
- Added test_subtitle_lang_list_with_region_variant_input (zh-Hans)
- Added test_subtitle_lang_list_dedup_region_variant (pt-BR)
2026-05-25 21:51:37 +08:00
TonyBlu
6d890021a6 feat(captions): P1/P2 improvements - region variant fallback, DownloadInfo init, subtitle_files UI
P1 fixes:
- _subtitle_lang_list now extracts base language from qualified tags
  (e.g. zh-Hans → zh base) so regional variants are still added as
  fallbacks. Original input is preserved as first priority.
- DownloadInfo.__init__ now explicitly initializes filename=None and
  chapter_files=[] to avoid AttributeError on dynamic attribute access.
- __setstate__ adds filename=None migration for old persistent data.
- Frontend Download interface gains subtitle_files field; completed
  downloads show each subtitle file with download link and CC icon.

P2 improvements:
- _LANGUAGE_REGION_VARIANTS expanded from 10 to 30 languages covering
  it/ja/ko/hi/th/vi/id/pl/uk/ru/cs/sv/da/no/fi/tr/el/he/hu/bn/ta.
- Languages with no regional variants use empty tuple (they still get
  -orig suffix when include_orig=True).
2026-05-25 21:48:27 +08:00
TonyBlu
b31f4e2fea fix(tests): update subtitle language list assertions for variant fallback
Update test expectations to match the new _subtitle_lang_list() output
which includes regional variants (e.g. fr-FR, en-GB) for better
subtitle matching.
2026-05-25 21:27:10 +08:00
TonyBlu
b25a2ad80a fix(captions): use getattr for filename check in _post_download_cleanup
DownloadInfo doesn't have a 'filename' attribute by default — it's only
set dynamically in update_status when a 'downloaded' status is received.
When captions are silently skipped by yt-dlp (no matching language), the
'downloaded' status is never emitted, so 'filename' doesn't exist on the
object at all. Using getattr(download.info, 'filename', None) instead of
direct attribute access prevents AttributeError.
2026-05-25 21:23:06 +08:00
TonyBlu
36b397ae93 fix(captions): add language variant fallback + error on no files
Two fixes for captions downloads:

1. Language variant fallback: When user requests 'en' but the video only
   has 'en-GB' (or other regional variants), yt-dlp silently skips
   subtitle extraction because it uses exact language matching. Now the
   subtitleslangs list includes common regional variants (e.g. en-US,
   en-GB, en-AU, etc.) so yt-dlp can match the first available variant.

2. Error on no files: When yt-dlp completes successfully (ret=0) but
   produces no subtitle files (e.g. no matching language at all), the
   download was incorrectly shown as 'completed'. Now it's marked as
   'error' with a descriptive message like 'No subtitles found for
   language "en"'. Same treatment for thumbnail downloads.
2026-05-25 21:16:10 +08:00
TonyBlu
e639caa21d fix: Codex review P2 issues + frontend test failure
- Reset download_phase when transitioning to paused (pause(), update_status(),
  _post_download_cleanup()) so UI shows 'Paused' instead of stale phase label
- Reset download_phase when starting/resuming download (start() preparing state)
- Count 'postprocessing' as active download in updateMetrics() so dashboard
  shows accurate counts during ffmpeg post-processing
- Add missing completedDownload Subject to DownloadsServiceStub in app.spec.ts
- Add Download type import to app.spec.ts

Fixes: TypeError Cannot read properties of undefined (reading 'pipe')
       at app.ts:300 (completedDownload not in test stub)
2026-05-25 20:09:17 +08:00
TonyBlu
03cee14948 fix: download phase label not working during downloads
- _download_phase_from_status now falls back to checking requested_formats
  when top-level vcodec/acodec are both 'none' (common when yt-dlp uses
  separate downloaders for video+audio streams)
- Clear download_phase on download completion/error (was persisting stale
  phase value in finished state)
- Add debug logging in put_status for phase detection
- Update docker-compose.local.yml to match docker-compose.yml structure
  with local image build (adds TARGETARCH build arg)
2026-05-25 19:45:43 +08:00
TonyBlur
0791d08e7b Add local compose debug setup 2026-05-25 17:16:28 +08:00
TonyBlur
6e161f4b4b Add auto download and pause resume controls 2026-05-25 16:28:15 +08:00
github-actions[bot]
e9243f65de
fix: Fixed audio file suffix when quality is 'best' and minor UI fixes 2026-05-18 19:56:08 +00:00
TonyBlur
0311df0b06 fix: Fixed audio file suffix when quality is 'best' and minor UI fixes 2026-05-07 07:25:54 +08:00
TonyBlur
8723ab0afe fix: Fixed suffix when quality is 'best' 2026-05-06 14:03:05 +08:00
TonyBlur
de11f5c638 fix: Clear buttons now effective immediately
- Updated navbar to fit theme
- Updated workflow
- Fixed clear buttons not effective immediately
2026-05-06 10:41:49 +08:00
TonyBlur
5639b5432c fix: configure QEMU for multi-platform builds 2026-05-04 14:49:48 +08:00
TonyBlur
c755f394d1 feat: update icons, add suffix and fix bugs
- Removed shadow from URL entry wrap in app.html for a cleaner look.
- Updated various icon files to improve visual consistency across the application.
- Add suffix to identify different files of same video
- Fixed invisible download for short link

Co-authored-by: Copilot <copilot@github.com>
2026-05-04 14:14:26 +08:00
TonyBlur
eb43d4655d Update DockerHub password secret to use DOCKERHUB_TOKEN 2026-05-01 15:05:22 +08:00
TonyBlur
44e3b7d0cb Specify dynamic platform for Node.js builder in Dockerfile 2026-05-01 14:47:54 +08:00
TonyBlur
87f8d50544 Specify platform for Node.js builder in Dockerfile 2026-05-01 14:37:10 +08:00
TonyBlur
e0a10eea52 Add step to prepare lowercase GHCR repository name in CI workflow 2026-05-01 14:30:32 +08:00
TonyBlur
85fd7e0328 Fix browser path in test environment setup to reflect project name change 2026-05-01 13:31:59 +08:00
TonyBlu
5569550398
Merge pull request #3 from TonyBlur/codex/rename-project-to-mytube-and-update-references-m4byy1
more fixes
2026-05-01 13:24:32 +08:00
TonyBlu
f10c0d9369
Merge branch 'master' into codex/rename-project-to-mytube-and-update-references-m4byy1 2026-05-01 13:22:45 +08:00
TonyBlu
e7b5cc3a2f
Merge pull request #2 from TonyBlur/codex/rename-project-to-mytube-and-update-references-xpf5ex
fixes
2026-05-01 13:21:41 +08:00
TonyBlu
d78bc41124 Route public canceled events by composite download key 2026-05-01 13:19:37 +08:00
TonyBlu
82a6a51b21 Fix public download ownership routing by key 2026-05-01 12:23:45 +08:00
TonyBlu
d41bd21b60
Merge branch 'master' into codex/rename-project-to-mytube-and-update-references-xpf5ex 2026-05-01 12:10:31 +08:00
TonyBlu
5fec503512 Fix downloads service tests with optional visit header 2026-05-01 11:54:30 +08:00
TonyBlu
0ac4769ca3
Merge pull request #1 from TonyBlur/codex/rename-project-to-mytube-and-update-references
Rebrand to MyTube, add PUBLIC_MODE, update UI and workflows
2026-05-01 11:32:15 +08:00
TonyBlur
6656efabba update README and docker-compose configuration
Co-authored-by: Copilot <copilot@github.com>
2026-05-01 10:24:22 +08:00
TonyBlu
3c32421b2a Use backend download key in frontend queue/done maps 2026-05-01 09:33:45 +08:00
TonyBlu
b0fa114663 Allow same URL downloads for different output types 2026-05-01 09:14:54 +08:00
TonyBlu
85b86cb47f Fix thumbnail completed filename detection 2026-05-01 08:47:18 +08:00
TonyBlu
bcb2560347 Support multi-link input parsing and multiline URL composer UI 2026-05-01 07:47:32 +08:00
TonyBlu
6f1723b44d Add PUBLIC_MODE and ENV_FILE defaults to Dockerfile 2026-04-30 20:56:31 +08:00
TonyBlu
57350924a5 Support loading env vars from .env files in container 2026-04-30 20:51:01 +08:00
TonyBlu
0c3860cf9b Make PUBLIC_MODE per-visit isolated sessions like reclip 2026-04-30 16:11:06 +08:00
TonyBlu
b6da1e0e7a Tighten PUBLIC_MODE isolation and hide subscription option controls 2026-04-30 16:04:03 +08:00
TonyBlu
fdecd20bbc Enforce PUBLIC_MODE client isolation and hide subscribe UI 2026-04-30 15:55:16 +08:00
TonyBlu
d6fa81b5de Fix dist path rename to mytube for Docker/runtime 2026-04-30 15:35:12 +08:00
TonyBlu
44c42b3773 Refresh frontend with cohesive modern UI styling 2026-04-30 14:58:14 +08:00
Alex Shnitman
5d96a581b9 allow filtering out members-only videos in subscriptions (closes #971) 2026-04-28 22:02:05 +03:00