Files
terebi/TODO.md
T

1.9 KiB

Terebi handoff: restore opening/ending metadata for ZokoAnime

Finding: ZokoAnime already returns episode-relative timestamps in its decoded configuration:

"skip": {
  "intro": {"start": 49, "end": 144},
  "outro": {"start": 1357, "end": 1451}
}

Values are seconds. Verified on Cowboy Bebop episode 1—including /stream/mal/1/1/sub, the actual resolver path—and Attack on Titan S3 Part 2 episode 1.

Status: implemented locally.

  • ZokoResolver.swift retains optional, independently decoded provider intervals through resolution and source preparation.
  • TerebiApp.swift feeds anilist: provider intervals into the existing metadata/display lifecycle without a Miruro lookup.

Requested change: retain optional provider intervals through resolution/source preparation and feed the existing metadata/display lifecycle for anilist: identities. No Tubular changes, Miruro lookup, or external timing service needed.

Acceptance: preserve fractional seconds; validate finite, nonnegative, ordered boundaries against actual media duration; missing/malformed intervals must not block playback. Clear stale intervals on media replacement and retain cancellation/generation guards. Cover direct launches, queues, and saved-episode reopening without changing existing display/skip policy.

Verification: make check-zoko check-zoko-intervals check-source check-miruro-metadata all and .build/resolved-playback-check --metadata-lifecycle passed. Local native playback covers direct/sidebar launches, fractional bands/manual skip, saved fresh-model reopening, queues/revisits, invalid/missing timing and stale source/metadata rejection. Visual rendering and live-provider alignment still need a user check.

Evidence: research note. Metadata verified; player rendering and timestamp alignment were not.