Skip to content
This repository was archived by the owner on Jul 7, 2026. It is now read-only.
This repository was archived by the owner on Jul 7, 2026. It is now read-only.

Harden downloads and offline playback #125

Description

@zachyzissou

Problem

Downloads/offline playback need a reliability pass so interrupted downloads, cleanup, storage state, and offline playback are dependable.

Acceptance criteria

  • Reconcile interrupted downloads on launch and after network loss.
  • Verify downloaded episodes play offline and respect playback position/rate.
  • Add cleanup and retry UX for failed downloads.
  • Surface storage/download state clearly in Library, Episode Detail, and Player.
  • Preserve existing download service tests and add missing edge coverage.

Agent execution contract

Readiness: agent:needs-spec
Lane: Downloads/offline

Start in these files:

  • OffScript/DownloadService.swift
  • OffScript/DownloadButton.swift
  • OffScript/EpisodeDetailView.swift
  • OffScript/PlayerView.swift
  • OffScriptTests/OffScriptTests.swift

Required verification:

  • xcodebuild test -project OffScript.xcodeproj -scheme OffScript -destination 'platform=iOS Simulator,OS=latest,name=iPhone 17 Pro' -only-testing:OffScriptTests CODE_SIGNING_ALLOWED=NO
  • Offline playback/manual file-state checklist for touched paths.

Non-goals / guardrails:

  • Do not delete user files without explicit state/retry UI.
  • Do not claim offline playback fixed without offline smoke.

PR expectation: Needs narrowed edge-case spec before low-thinking implementation.

Low-thinking agents must follow docs/AGENT_EXECUTION_RUNBOOK.md. If the touched code falls outside the files above, stop and tighten the issue or ask for senior review before continuing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:needs-specNeeds a tighter executable spec before implementationarea:appleApple platform integrations and entitlementsarea:performanceRuntime, import, scrolling, and startup performanceenhancementNew feature or requestpriority:mediumImportant but not release-blocking

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions