Priority downloads, YouTubeKit pin, TestFlight scheme - #145
Merged
Merged
Conversation
Every imported track resolved, then every ranged download got HTTP 403 →
IngestError.streamURLExpired → re-resolve → 403 again → scheduleRetry kept
the row .pending through 5 whole-track attempts (minutes of spinner) →
.failed (orange retry badge). Reproduced on the iOS Simulator with a live
probe: 0/8 tracks ready, every attempt "prep failed … streamURLExpired".
Root cause: Packages/ContinuityKit/Package.resolved pinned YouTubeKit at
7cc8190 (2026-07-05), whose stream URLs come from the ANDROID_VR InnerTube
client. Since mid-August 2026 YouTube serves only the first ~1 MB of those
URLs and 403s the rest, so the app's 1 MiB ranged downloader dies on chunk
("Update YouTube Changes (August 2026)") switches to the visionOS/web
clients plus an embed fallback; its URLs return 206 for every chunk.
- Package.swift: depend on YouTubeKit `exact: "0.4.9"` instead of floating
on `branch: "main"` (which resolved differently per machine and let the
app silently fall behind).
- Package.resolved: 0.4.9 / e5b7d03.
- Tests/IngestTests/LiveIngestProbeTests.swift: opt-in live-network probe
(skipped unless CONTINUITY_LIVE_PROBE=1) that drives the real
PreparationQueue and prints the failing stage/error per track — the tool
that found this. With 0.4.9: 8/8 and 6/6 tracks ready on the simulator.
- AGENTS.md / CLAUDE.md: record the gotcha and the diagnosis recipe.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Every TestFlight run since PR #127 died in the Archive step after ~30s with xcodebuild exit 65: "The project named "Continuity" does not contain a scheme named "Continuity"". project.yml declared no schemes, and XcodeGen only emits schemes a target asks for; the runs had been relying on xcodebuild auto-creating one, which Xcode 26.x no longer does (same XcodeGen 2.46.0 + Xcode 26.6 locally reproduces the failure, and the declared scheme makes `xcodebuild archive -scheme Continuity` succeed). Records the scheme gotcha in AGENTS.md / CLAUDE.md so it isn't rediscovered. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Let songs and playlists jump the ingest queue, surface byte-level progress, and restore playback before the launch resume pass so a large library doesn't block the first frame. Co-authored-by: Cursor <cursoragent@cursor.com>
private(set) is file-scoped, so the Jobs extension could not update the Downloads list and the device build failed. Co-authored-by: Cursor <cursoragent@cursor.com>
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
exact: "0.4.9"and declare the shared Continuity scheme so playlist imports stop 403ing after the first chunk and TestFlight archives can find-scheme Continuity.Test plan
ingestJobsinternal(set)fixxcodebuild -scheme Continuityarchive finds the schemeMade with Cursor