Caption translation research, regression tests and upstream contributions for Morphe. This is a subtitle-focused project, not a fork of Morphe.
Universal Captions is now integrated into official Morphe. PR #3891 was merged into Morphe dev on 21 October 2026. For the current caption features, use the official Morphe patch source; do not add this repository as a second Morphe Manager source.
The upstream integration provides additional auto-translate choices from a reviewed 156-code YouTube Web snapshot, signed caption URL and source-validation safeguards, missing Auto-translate menu recovery and a readability fix for styled translated captions. YouTube's servers still determine which translations work for each video.
- Caption regressions: additional upstream-compatible tests alongside Morphe's own Java/Kotlin test suite.
- Research and contributions: source selection, audio-track routing, regional language codes, signed timedtext URLs and caption styling.
- Experimental development: our own 3.1.0 Java/Kotlin prototype and its tests are available under
experiments/3.1.0/. They are research implementations, not the active Morphe runtime or CI source. - Previous standalone releases: v3.0.1 is preserved with all its original source at the immutable
v3.0.1tag. It is historical, not the recommended installation path.
Our Java/Kotlin work is accessible directly, without copying the whole Morphe repository:
| Area | Code |
|---|---|
| Native translation source selection and missing language targets | AutoTranslateCaptionsPatch.java |
| Caption styling, nested decoder scopes | TranslatedCaptionPensPatch.java |
| Bytecode integration | Translation Kotlin hooks · Styling Kotlin hooks |
| Experimental tests | 3.1.0 test suite |
| Current Morphe regression tests | MorpheCaptionUpstreamRegressionTest.java |
See Experiments for status and upstream differences. The shipped implementation remains in official Morphe.
GitHub Actions checks out official MorpheApp/morphe-patches dev on every main push or pull request, then runs Morphe's tests plus our 8 additional caption regressions. Only one supplemental Java test file is added; no Morphe production code is overwritten.
To validate a new caption fix before opening a PR, open Validate upstream Morphe captions → Run workflow on main:
- Set Morphe source to
itolkien/morphe-patches. - Enter your branch name or commit SHA (e.g.
fix/caption-fallback). - Leave Build MPP off for a quick test, or turn it on for Android testing.
Manual runs record the selected repository and exact resolved commit. The optional MPP is a complete bundle of the chosen Morphe revision, not an additional Universal Captions patch. No MPP is built or released on normal pushes; upstream-only changes do not trigger an automatic run here.
See Upstream validation for inputs, safeguards and device test guidance. Passing unit tests does not prove APK or backend translation compatibility.
- Upstream CI and test procedure
- Architecture, historical versions and experiments
- APK compatibility guidance
- Historical experimental 3.1.0 parity report
See LICENSE and NOTICE. Prior release source, authorship and commit history remain available via tags and Git history. No patched YouTube APK is distributed.