Skip to content

Per-Title Playback Memory & Overrides #45

Description

@HamadTheIronside

Remember every per-title tweak — subtitle sync, audio track, aspect/zoom, dialogue boost, playback speed, skip prefs — for that exact title, series, library, or globally. "THIS anime always needs Japanese audio + this sub timing," "THIS podcast at 1.3x."

Why 10x

High power-user love; removes the constant re-fiddling that makes playback feel unfinished. Scored 20/30.

How it maps to the architecture

  • Scoped (episode / series / library / global), persisted, and synced cross-device via config_sync_provider.
  • Reuses subtitleDelayProvider and the per-load re-apply in loadVideo() — the re-apply hook already exists.

Scope

M. True zoom/pan is net-new and mpv-only — scope it as a follow-on, not part of the core loop.

Dependencies

Rides the Night-Mode audio plumbing (dialogue boost per title) and the BasePlayer capability matrix (for what each backend can persist/apply). New synced fields should land after Settings Sync 2.0 so they're synced-by-construction.

Definition of done

Unit tests for scope-resolution (episode→series→library→global precedence) and persistence round-trip; flutter analyze lib/ clean; dart format --line-length 120.

Source: product-vision analysis (2026-07). Part of the Driftfin 10x tracking issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions