Commit graph

752 commits

Author SHA1 Message Date
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
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
Alex Shnitman
4f83174d05 implement time-clipped downloads (closes #969, replaces #907) 2026-04-26 23:07:50 +03:00
Alex Shnitman
91ee8312bf title filter for subscriptions (closes #968) 2026-04-26 22:51:48 +03:00
dependabot[bot]
d89a5ddbe5
Bump aquasecurity/trivy-action in the github-actions group
Bumps the github-actions group with 1 update: [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action).


Updates `aquasecurity/trivy-action` from 0.35.0 to 0.36.0
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](https://github.com/aquasecurity/trivy-action/compare/0.35.0...v0.36.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-26 16:12:39 +00:00
Alex Shnitman
abb9492d21 upgrade dependencies 2026-04-21 16:20:39 +03:00
Alex Shnitman
23de9824f0 cr fixes 2026-04-21 16:13:58 +03:00
rdiaz738
0ea934c08f Updated import and fixed race condition 2026-04-20 17:24:16 -07:00
Alex Shnitman
e9f979b349 fix yt-dlp options overrides (closes #958) 2026-04-18 08:46:29 +03:00
Alex Shnitman
ab42325db5 upgrade dependencies 2026-04-16 22:30:42 +03:00