Skip to content

chore: Merge branch dev to main - #2

Merged
hashtagbasit merged 28 commits into
mainfrom
dev
Sep 6, 2026
Merged

hashtagbasit merged 28 commits into
mainfrom
dev

Conversation

@github-actions

Copy link
Copy Markdown

This pull request will Merge branch dev to main.

hashtagbasit and others added 28 commits August 25, 2026 14:42
Adds a CC row to the floating panel with size, font, background and edge controls. Both apps render captions with media3 SubtitleView and keep its styling API un-obfuscated, so this is all reflection: setApplyEmbeddedStyles(false) so the broadcaster's own formatting stops overriding, setFractionalTextSize for size, and setStyle with a CaptionStyleCompat built from setStyle's own parameter type (the class is obfuscated to a different name in each app). Re-applied when a new player attaches. Crunchyroll is not covered - it draws ASS frames to a canvas rather than using SubtitleView.
# [1.1.0-dev.1](v1.0.2...v1.1.0-dev.1) (2026-08-25)

### Features

* subtitle styling for HBO Max and Disney+ ([6514870](6514870))
Crunchyroll renders subtitles with libass straight to bitmaps, so there is no text left to restyle by the time anything reaches a View - which is why the media3 approach used for HBO Max and Disney+ does not reach it. The whole ASS script does pass through SubtitlesRendererImpl.loadTrack(String) on its way to the native library though, and ASS keeps its styling as plain text, so the script is rewritten there instead. Adds size, font and outline/box chips behind a CC toggle. Column positions are read from the Format line rather than assumed, and any parse failure returns the original script untouched.
# [1.1.0-dev.2](v1.1.0-dev.1...v1.1.0-dev.2) (2026-08-25)

### Features

* subtitle styling for Crunchyroll ([7f247cb](7f247cb))
The settings read straight from SharedPreferences and treated a null instance as all-defaults. The only thing that created that instance was the player view attaching, so a tap could be discarded and isModified() stayed false, leaving the script untouched - toggling appeared to do nothing. The values now live in memory as the source of truth, storage is best-effort on top, and the Context is resolved from the running Application rather than depending on a hook, because the subtitle track can load before any view hook runs. Adds logging under the StreamPlayback tag and a flag so the UI can tell 'no track loaded yet' apart from 'the patch was never applied'.
# [1.1.0-dev.3](v1.1.0-dev.2...v1.1.0-dev.3) (2026-08-25)

### Bug Fixes

* make Crunchyroll subtitle settings actually take effect ([9f8683e](9f8683e))
Hooks SubtitlesRendererImpl.initialize to set a flag as soon as the subtitle renderer starts, so the controls can distinguish a missing patch from a subtitle track that has not loaded yet. Those two look identical from the player, because the CC chips come from the aspect ratio patch and appear either way.
# [1.1.0-dev.4](v1.1.0-dev.3...v1.1.0-dev.4) (2026-08-25)

### Bug Fixes

* report whether the Crunchyroll subtitle hook is actually present ([74948b6](74948b6))
The diagnostic hook on SubtitlesRendererImpl.initialize coincided with subtitles not loading at all. It only ever existed to tell a missing patch apart from a not-yet-loaded track, which is not worth breaking playback for, so it is removed. Only the loadTrack hook remains.
# [1.1.0-dev.5](v1.1.0-dev.4...v1.1.0-dev.5) (2026-08-25)

### Bug Fixes

* drop the initialize hook that stopped subtitles loading ([27f203b](27f203b))
# [1.1.0-dev.6](v1.1.0-dev.5...v1.1.0-dev.6) (2026-08-25)

### Features

* add Viki ad removal and HD unlock patches ([9e779e9](9e779e9))
# [1.1.0-dev.7](v1.1.0-dev.6...v1.1.0-dev.7) (2026-08-25)

### Features

* give the Viki player the whole screen on unfolded foldables ([1188522](1188522))
# [1.1.0-dev.8](v1.1.0-dev.7...v1.1.0-dev.8) (2026-08-25)

### Bug Fixes

* add the missing Viki side-panel extension class ([e06d8d8](e06d8d8))
# [1.1.0-dev.9](v1.1.0-dev.8...v1.1.0-dev.9) (2026-08-25)

### Bug Fixes

* attach only the current release's .mpp, not the previous one too ([f7dec69](f7dec69))
"Enable speed control" unhid the player's speed menu; "Add fast playback
speeds" widened the table behind it from {1.0, 0.75, 0.5} to 0.5x-2.0x.
Neither was any use without the other - the flag alone unhides a menu that
cannot speed anything up, and the wider table alone is written into a menu
that is never shown - so there was no combination worth offering as a
separate toggle. They are now one patch, "Playback speed".

It also declares extendWith, which "Add fast playback speeds" never did
despite calling into SpeedHelper; it only ever worked because the aspect
ratio and subtitle patches pulled the extension in.

Drops SpeedHelper.isSpeedControlEnabled() with them, dead since the flag
started being forced in bytecode rather than read from the extension.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0182tbUpUHZC4CWLgr3xG4AS
The intro still described three apps and promised "no ad, tracker, region
or unlock patches here". Viki has been in the bundle since v1.1.0-dev.6
with an ad patch and a full-screen player patch, and subtitle styling
landed for all four apps, so both claims were wrong.

Adds Viki to the app table, keeps the DRM/entitlement disclaimer that is
still true, writes up why the Viki HD unlock was removed, and covers the
Crunchyroll libass subtitle rewrite, Viki's missing setPlaybackSpeed and
the foldable comments panel in "How it works".

The generated patch list is left for CI to regenerate on the next release;
the Crunchyroll rows are corrected in place so the tree is not
self-contradicting in the meantime.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0182tbUpUHZC4CWLgr3xG4AS
@hashtagbasit
hashtagbasit merged commit aa4f658 into main Sep 6, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants