Skip to content

Show platforms for installed Xcodes and fix the installed platforms window - #862

Draft
anciltech wants to merge 3 commits into
XcodesOrg:mainfrom
anciltech:fix/platforms-installed-sdks
Draft

anciltech wants to merge 3 commits into
XcodesOrg:mainfrom
anciltech:fix/platforms-installed-sdks

Conversation

@anciltech

Copy link
Copy Markdown

Summary

Platforms missing in the info pane. The Platforms section matched downloadable runtimes against the SDK builds from the release metadata. The Apple data source has no SDK metadata, and an installed Xcode that isn't matched to its release (e.g. a renamed beta) has none either, so no platforms were shown.

Installed Xcodes now read the ProductBuildVersion of each SDK in the bundle (Platforms/*.platform/Developer/SDKs/*.sdk, skipping versioned symlinks, cached per bundle and build) and prefer those. On a real Xcode 27.0 beta 6 these are exactly the builds xcodereleases lists (e.g. iPhoneOS 24A5422a).

Installed Platforms window. Runtimes were matched to installed simulators by build only, so a build published for both Apple Silicon and Universal was listed twice, and deleting the variant that isn't installed failed with "No simulator found". It now uses the architecture-aware lookup that deletion already uses, and reloads when the downloadable runtime list changes (not only the installed one), so it isn't empty when opened before the list loads.

Related: XcodesOrg/XcodesKit#9 fixes renamed betas (e.g. Xcode.app) being matched to the wrong seed; with this PR they show platforms either way.

Tests

  • test_InstalledSDKBuilds_ReadsEachRealSDKOnce: reads SDKs from a fake bundle, dedupes device/simulator builds, skips symlinks.
  • test_PlatformSDKBuilds_PreferInstalledBundleOverReleaseMetadata

🤖 Generated with Claude Code

anciltech and others added 3 commits September 29, 2026 08:04
The Platforms section matched downloadable runtimes against the SDK
builds from the release metadata. The Apple data source has no SDK
metadata, and an installed Xcode that isn't matched to its release
(e.g. a renamed beta) has none either, so no platforms were shown.

Installed Xcodes now read the ProductBuildVersion of each SDK in the
bundle (cached per bundle and build) and prefer those builds, which are
the same builds xcodereleases lists.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Runtimes were matched to installed simulators by build only, so a build
published for both Apple Silicon and Universal was listed twice, and
deleting the variant that isn't installed failed with "No simulator
found". Use the architecture-aware lookup that deletion already uses.

Also reload when the downloadable runtime list changes, not only the
installed one, so the window isn't empty if it opens before the list
has loaded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant