Files
SubMiner/backlog/tasks/task-84 - Migrate-AniSkip-metadatalookup-orchestration-to-launcher-Electron.md

3.2 KiB

id, title, status, assignee, created_date, updated_date, labels, dependencies, references, documentation, priority
id title status assignee created_date updated_date labels dependencies references documentation priority
TASK-84 Migrate AniSkip metadata+lookup orchestration to launcher/Electron Done
Codex
2026-03-03 08:31 2026-03-03 08:35
enhancement
aniskip
launcher
mpv-plugin
launcher/aniskip-metadata.ts
launcher/mpv.ts
plugin/subminer/aniskip.lua
plugin/subminer/options.lua
plugin/subminer/state.lua
plugin/subminer/lifecycle.lua
plugin/subminer/messages.lua
plugin/subminer.conf
launcher/aniskip-metadata.test.ts
docs/mpv-plugin.md
launcher/aniskip-metadata.ts
plugin/subminer/aniskip.lua
docs/architecture.md
medium

Description

Move AniSkip MAL/title-to-MAL lookup and intro payload resolution from mpv Lua to launcher Electron flow, while keeping mpv-side intro skip UX and chapter/chapter prompt behavior in plugin. Launcher should infer/analyze file metadata, fetch AniSkip payload when launching files, and pass resolved skip window via script options; plugin should trust launcher payload and fall back only when absent.

Acceptance Criteria

  • #1 Launcher infers AniSkip metadata for file targets using existing guessit/fallback logic and performs AniSkip MAL + payload resolution during mpv startup.
  • #2 Launcher injects script options containing resolved MAL id and intro window fields (or explicit lookup-failure status) into mpv startup.
  • #3 Lua plugin consumes launcher-provided AniSkip intro data and skips all network lookups when payload is present.
  • #4 Standalone mpv/plugin usage without launcher payload continues to function using existing async in-plugin lookup path.
  • #5 Docs and defaults are updated to document new script-option contract.
  • #6 Launcher tests cover payload generation contract and fallback behavior where metadata is unavailable.

Implementation Plan

  1. Add launcher-side AniSkip payload resolution helpers in launcher/aniskip-metadata.ts (MAL prefix lookup + AniSkip payload fetch + result normalization).
  2. Wire launcher/mpv.ts + buildSubminerScriptOpts to pass resolved AniSkip fields/mode in --script-opts for file playback.
  3. Update plugin/subminer/aniskip.lua plus options/state to consume injected payload: if intro_start/end present, apply immediately and skip network lookup; otherwise retain existing async behavior.
  4. Ensure fallback for standalone mpv usage remains intact for no-launcher/manual refresh.
  5. Add/update tests/docs/config references for new script-opt contract and edge cases.

Final Summary

Executed end-to-end migration so launcher resolves AniSkip title/MAL/payload before mpv start and injects it via --script-opts. Plugin now parses and consumes launcher payload (JSON/url/base64), applies OP intro from payload, tracks payload metadata in state, and keeps legacy async lookup path for non-launcher/absent payload playback. Added launcher config key aniskip_payload and updated launcher/aniskip-metadata tests for resolve/payload behavior and contract validation.