Search inside what you're watching. Type "where they open the vault" or a half-remembered line, and Driftfin seeks the player straight to that timestamp with a trickplay thumbnail preview. Cross-item, it turns every subtitled title into a searchable transcript.
Why 10x
No Jellyfin client (Swiftfin, Findroid, Streamyfin, JMP) — nor Plex or Infuse — ships this. It's the pragmatic, GPU-free, offline 90% of the multi-thousand-dollar "scene search" everyone else defers. For rewatchers, parents skipping to a scene, and quote-hunters it's a pure "how did I live without this." Highest-differentiation idea in the analysis (scored 23/30).
How it maps to the architecture
SubStreamModel (lib/models/items/media_streams_model.dart:360) already derives a downloadable .srt URL from Jellyfin's deliveryUrl (line 411–413, it even rewrites .vtt→.srt).
- Net-new: a VTT/SRT cue parser + a cue-index provider.
- UI: a new search panel in
video_player_options_sheet.dart (which already composes the subtitle / quality / queue / syncplay sub-sheets); seek via MediaControlsWrapper / videoPlayerProvider; render the preview from the existing TrickPlayModel / video_progress_bar code.
- No server plugin, no vision model.
Scope
L. Net-new work is the cue parser and the search UI.
Honest limitations
Coverage depends on text subtitle tracks — image-based PGS/DVBSUB carry no indexable text. Must degrade gracefully and clearly show which titles are searchable. In-video search first; cross-library transcript search is a follow-on.
Definition of done
Unit tests for the cue parser (SRT + VTT edge cases); widget test for the search panel + seek; flutter analyze lib/ clean; dart format --line-length 120.
Source: product-vision analysis (2026-07). Part of the Driftfin 10x tracking issue.
Search inside what you're watching. Type "where they open the vault" or a half-remembered line, and Driftfin seeks the player straight to that timestamp with a trickplay thumbnail preview. Cross-item, it turns every subtitled title into a searchable transcript.
Why 10x
No Jellyfin client (Swiftfin, Findroid, Streamyfin, JMP) — nor Plex or Infuse — ships this. It's the pragmatic, GPU-free, offline 90% of the multi-thousand-dollar "scene search" everyone else defers. For rewatchers, parents skipping to a scene, and quote-hunters it's a pure "how did I live without this." Highest-differentiation idea in the analysis (scored 23/30).
How it maps to the architecture
SubStreamModel(lib/models/items/media_streams_model.dart:360) already derives a downloadable.srtURL from Jellyfin'sdeliveryUrl(line 411–413, it even rewrites.vtt→.srt).video_player_options_sheet.dart(which already composes the subtitle / quality / queue / syncplay sub-sheets); seek viaMediaControlsWrapper/videoPlayerProvider; render the preview from the existingTrickPlayModel/video_progress_barcode.Scope
L. Net-new work is the cue parser and the search UI.
Honest limitations
Coverage depends on text subtitle tracks — image-based PGS/DVBSUB carry no indexable text. Must degrade gracefully and clearly show which titles are searchable. In-video search first; cross-library transcript search is a follow-on.
Definition of done
Unit tests for the cue parser (SRT + VTT edge cases); widget test for the search panel + seek;
flutter analyze lib/clean;dart format --line-length 120.Source: product-vision analysis (2026-07). Part of the Driftfin 10x tracking issue.