Files
SubMiner/backlog/tasks/task-71 - Split-main.ts-into-domain-runtime-modules-round-2.md

1.5 KiB

id, title, status, assignee, created_date, updated_date, labels, dependencies, priority
id title status assignee created_date updated_date labels dependencies priority
TASK-71 Split main.ts into domain runtime modules round 2 To Do
2026-02-18 11:35 2026-02-18 11:35
architecture
refactor
maintainability
high

Description

src/main.ts remains >3k LOC and still mixes composition, runtime state mutation, domain workflows (Jellyfin, AniList), tray/UI setup, and IPC wiring. This creates high cognitive load and broad change blast radius.

Action Steps

  1. Extract cohesive runtime modules:
    • AniList runtime orchestration
    • Jellyfin runtime orchestration
    • tray runtime
    • MPV event binding/runtime hooks
  2. Keep main.ts as composition root only (state wiring + module registration).
  3. Define narrow service/deps interfaces per module to reduce closure capture.
  4. Add/adjust unit tests for extracted modules.
  5. Preserve existing CLI/IPC behavior exactly.
  6. Update architecture docs with new ownership boundaries.

Acceptance Criteria

  • #1 src/main.ts responsibilities reduced to composition/wiring concerns
  • #2 Extracted runtime modules have focused interfaces and isolated tests
  • #3 No CLI/IPC regressions in existing test suite
  • #4 Docs reflect new module boundaries

Definition of Done

  • #1 bun run test:fast passes
  • #2 Architecture docs updated