Repository navigation
Release v0.3.0-alpha.5: experimental Apple TV support and RSD fixes - #14
Merged
Merged
Conversation
- IPHONELOADLY_RSD_INSTALL=on lists the remotely paired iPhone and routes its install and refresh jobs over RSD (upgrading an existing app); only a verified install succeeds and records the team-suffixed bundle id. - The installed-apps list for that iPhone is read over RSD too. - Install responses carry an optional bounded signingDiagnostic. - Builds against the local isideload backport checkout (../../../isideload-80045-backport, branch rsd-production-install). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Uses lemehavit/isideload@54e2a20 (branch rsd-production-install), the same source as the production build, so the repo builds outside this workspace. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Collapse nested ifs, use unwrap_or, drop a needless deref, check the test read count, and mark the currently unused CoreDevice appservice helpers as allowed dead code. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Behind IPHONELOADLY_APPLE_TV=on (with IPHONELOADLY_RSD_INSTALL=on), the dashboard finds an Apple TV showing Remote App and Devices and pairs with the PIN it shows. The pairing is kept by its own WirelessPairingService next to the iPhone's, so install, refresh and app listing reuse the RSD path. The device class comes from the RSD handshake; an Apple TV is registered on its first install and signed with tvOS profiles through the isideload fork. Install jobs refuse an IPA built for the other platform before any Apple account work starts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4cV2GPhph8cvFzQDwvpSc
The 4-second window found nothing in the first live test although the host saw the Apple TV's manual pairing service. Use the same 10 seconds as the iPhone's RSD discovery, and log found, resolved and ignored services so the next test shows where discovery stops. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4cV2GPhph8cvFzQDwvpSc
The login stays in AwaitingTwoFactor until Apple answers, so the poll right after submit reopened the dialog. Move to Authenticating as soon as a response is accepted, and keep a single dashboard poll loop. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4cV2GPhph8cvFzQDwvpSc
mdns-sd enumerates interfaces through getifaddrs, which needs AF_NETLINK. Without it the Apple TV search sent no queries and found nothing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4cV2GPhph8cvFzQDwvpSc
…essages Loading and error statuses are written into these list containers, which replaced their inset-list class with the flex status layout. Rows rendered afterwards sat side by side and squeezed the text to one letter per line. Reset the list class before rendering rows, and let rows wrap so long action groups never squeeze the text column. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
NuvioTV for tvOS ships a 190 KB silent audio file that compresses 217:1, which tripped the 200:1 zip-bomb check on upload and on GitHub sync. Only apply the ratio check to entries of 1 MiB or more; the total expansion cap still applies. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4cV2GPhph8cvFzQDwvpSc
Install jobs only logged error_kind=signing_failed, which also covers device registration failures. Log the bounded SigningError and, when present, the classified signing diagnostic (stage, error class, HTTP status, Apple code, local I/O kind). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The install picker also lists the Apple TV now. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4cV2GPhph8cvFzQDwvpSc
An app whose stored IPA had disappeared failed every install with "The IPA could not be signed", could not be removed, and "download latest" kept answering unchanged because the sha256 matched. - Install jobs fail early with ipa_file_missing and a clear message. - Removing an app succeeds when its file is already gone. - A source download with an unchanged sha256 restores the file when it is missing. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Bump the version and move the Apple TV work and today's fixes into the 0.3.0-alpha.5 changelog section. Format the new missing-IPA test. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Brings
appletv-supportintomainfor the v0.3.0-alpha.5 release.mainis an ancestor of this branch, so there are no conflicts. It includes the RSD production work from v0.3.0-alpha.4 (rsd-production-install), which was tagged but never merged.What changes
Added
IPHONELOADLY_APPLE_TV=on(requiresIPHONELOADLY_RSD_INSTALL=on): discovery, PIN pairing, tvOS device registration and profiles (isideload fork30228c4), install, refresh and the app list over RSD.Changed
Fixed
AF_NETLINKis allowed in the API unit so mDNS can list interfaces. Without it, Apple TV discovery and iPhone RSD discovery found nothing.Verification
cargo fmt --all -- --check,cargo clippy --workspace --all-targets --all-features -- -D warningsandcargo test --workspacepass locally.a30ebb3; this PR adds only the version bump, the changelog and a formatting fix). The first Apple TV install (NuvioTV 3.4.5) succeeded.🤖 Generated with Claude Code