Files
SubMiner/backlog/archive/tasks/task-30.2 - Implement-extension-resolver-service-search-episode-stream-resolution.md
2026-02-13 18:29:17 -08:00

1.8 KiB

id, title, status, assignee, created_date, updated_date, labels, dependencies, parent_task_id, priority
id title status assignee created_date updated_date labels dependencies parent_task_id priority
TASK-30.2 Implement extension resolver service (search + episode + stream resolution) To Do
2026-02-13 18:32 2026-02-13 18:34
TASK-30.1
TASK-30 high

Description

Build a dedicated service in main process that queries configured extension repos and normalizes results into a unified internal model, including optional playback metadata. Keep transport abstracted so future backends (local process, remote API, Manatán-compatible source) can be swapped without changing renderer contracts.

Acceptance Criteria

  • #1 Create a typed internal model for source, series, episode, and playable candidate with fields for quality/audio/headers/referrer/userAgent.
  • #2 Implement provider abstraction with pluggable fetch/execution strategy from config.
  • #3 Add services for searchAnime, listEpisodes, resolveStream (or equivalent) with cancellation/error boundaries.
  • #4 Normalize all provider responses into deterministic field names and stable IDs.
  • #5 Include resilient handling for empty/no-result/no-URL cases and network faults with explicit error categories.

Implementation Notes

Phase 2 — Core service: provider integration and stream resolution

Definition of Done

  • #1 Resolver never leaks raw provider payload to renderer.
  • #2 Streaming URL output includes reason for failure when unavailable.
  • #3 Service boundaries allow unit-level validation of request/response mapping logic.
  • #4 No blocking calls on Electron UI/main thread; all I/O is async and cancellable.