Skip to content

feat: Add SponsorBlock integration and Dual Subtitles support#1323

Open
Eliaway wants to merge 5 commits into
NuvioMedia:cmp-rewritefrom
Eliaway:feature/advanced-player-features
Open

feat: Add SponsorBlock integration and Dual Subtitles support#1323
Eliaway wants to merge 5 commits into
NuvioMedia:cmp-rewritefrom
Eliaway:feature/advanced-player-features

Conversation

@Eliaway

@Eliaway Eliaway commented Jun 11, 2026

Copy link
Copy Markdown

SponsorBlock:

  • Full SponsorBlock API integration with privacy-preserving hash-based lookups
  • Configurable categories (sponsor, selfpromo, interaction, intro, outro, filler, etc.)
  • Auto-skip and manual skip button modes
  • Merged with existing IntroDb/AniSkip skip intervals (deduplication via overlap detection)
  • Per-platform SHA-256 implementations (Android/iOS/Desktop)
  • Settings UI with category toggles and privacy mode

Dual Subtitles:

  • Cross-platform SRT/WebVTT subtitle parser with binary search for O(log n) cue lookup
  • Secondary subtitle rendered as Compose overlay (zero interference with native player)
  • DualSubtitleSelector UI for picking secondary language from addon subtitles
  • Customizable secondary subtitle style (color, size, position)
  • Position-synced updates via existing playback snapshot pipeline

Modified files:

  • PlayerScreenRuntimeEffects.kt: SponsorBlock fetch + merge + dual subtitle position updates
  • PlayerPlaybackOverlays.kt: DualSubtitleOverlay placement
  • SkipIntroButton.kt: Added SponsorBlock category labels

Summary

PR type

  • Reproducible bug fix
  • UI glitch/bug fix
  • Behavior bug/regression fix
  • Small maintenance only, with no UI or behavior change
  • Docs accuracy fix
  • Translation/localization only
  • Approved larger or directional change

Why

Issue or approval

UI / behavior impact

  • No UI change
  • No behavior change
  • UI changed only to fix a documented glitch/bug
  • Behavior changed only to fix a documented bug/regression
  • UI change has explicit maintainer approval
  • Behavior change has explicit maintainer approval

Policy check

  • I have read and understood CONTRIBUTING.md.
  • This PR is small, focused, and limited to one problem.
  • This PR is not cosmetic-only.
  • Any UI change fixes a linked glitch/bug and includes visual proof, or this PR has no UI change.
  • Any behavior change fixes a linked bug/regression or has explicit approval, or this PR has no behavior change.
  • This PR does not bundle unrelated refactors, cleanups, formatting, or drive-by changes.
  • This PR does not add dependencies, architecture changes, migrations, or product-direction changes without explicit approval.
  • I listed the testing performed below.

UI polish, cosmetic-only changes, minor behavior tweaks, and unapproved product changes will be closed without review.

Scope boundaries

Testing

Screenshots / Video (UI changes only)

Breaking changes

Linked issues

Eliaway and others added 5 commits June 11, 2026 20:16
SponsorBlock:
- Full SponsorBlock API integration with privacy-preserving hash-based lookups
- Configurable categories (sponsor, selfpromo, interaction, intro, outro, filler, etc.)
- Auto-skip and manual skip button modes
- Merged with existing IntroDb/AniSkip skip intervals (deduplication via overlap detection)
- Per-platform SHA-256 implementations (Android/iOS/Desktop)
- Settings UI with category toggles and privacy mode

Dual Subtitles:
- Cross-platform SRT/WebVTT subtitle parser with binary search for O(log n) cue lookup
- Secondary subtitle rendered as Compose overlay (zero interference with native player)
- DualSubtitleSelector UI for picking secondary language from addon subtitles
- Customizable secondary subtitle style (color, size, position)
- Position-synced updates via existing playback snapshot pipeline

Modified files:
- PlayerScreenRuntimeEffects.kt: SponsorBlock fetch + merge + dual subtitle position updates
- PlayerPlaybackOverlays.kt: DualSubtitleOverlay placement
- SkipIntroButton.kt: Added SponsorBlock category labels
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.

1 participant