Repository navigation
Add standalone macOS Xcode extension - #5702
Merged
Merged
Conversation
Marc-André Moreau (mamoreau-devolutions)
marked this pull request as ready for review
November 12, 2026 18:43
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Marc-André Moreau (mamoreau-devolutions)
force-pushed
the
xcode-extension
branch
from
November 12, 2026 19:08
010d07f to
06636d1
Compare
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Marc-André Moreau (mamoreau-devolutions)
merged commit Nov 12, 2026
07300b2
into
main
10 checks passed
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.
If the same issue can be reproduced outside UniGetUI with the relevant package manager or with the package itself, please report it there first. UniGetUI should only be used to track issues that are specific to UniGetUI's behavior or integration.
Summary
Adds an optional, off-by-default Xcode extension on macOS 13+ (
Settings > Extensions > Xcode) for browsing, downloading, installing, updating, and switching between side-by-side Xcode versions and Simulator runtimes — implemented natively in standalone C# (src/UniGetUI.Extensions.Xcode) with no externalxcodesCLI or Xcodes.app dependency.EnableXcodeExtension/UNIGETUI_XCODE_EXTENSION): Enabled by default when building on macOS or targetingosx-*RIDs, excluded fromUniGetUI.Windows.slnx, and stripped from Windows and Linux builds (UniGetUI.Avalonia.csproj,Directory.Build.props,AppExtensions).AppleAuth/):s2k/s2k_fo), hashcash proof-of-work, and trusted-device / SMS 2FA sign-in in C# using source-generated JSON metadata (AppleAuthJsonContext)./usr/bin/curl -qoverstdin(AppleCurlTransport) with an empty environment and RFC 6265 cookie handling so credentials, tokens, cookies, and URLs stay out of.NETHTTP diagnostics, process arguments, and environment variables.com.devolutions.unigetui.xcode), never reading other tools' Keychain items. Uses unencrypted Keychain item attributes (kSecReturnAttributes+kSecAttrGeneric) for account status and external-change checks so startup and browsing never trigger a Keychain prompt; secrets are unlocked at most once when an Apple operation runs.Local/):xcodereleases.com) with Apple's authenticated download catalog (listDownloads.action), includingADCDownloadAuthcookie authorization and automatic re-authentication if Apple's developer download session expires (resultCode: 1100)..xipand.xip.aeaarchive downloads (XcodeArchiveDownloader) verified by SHA-1 / strong ETag validators and guarded by per-cache file locks.xip/aa), verifies build identity, Apple code-signing authority, and Gatekeeper (spctl), names side-by-side bundles (Xcode-26.6.app, build-disambiguated when needed), and runs privilegedxcode-select/DevToolsSecurity/_developergroup / license / first-launch setup (XcodeArchiveInstaller,XcodeSelector).xcrun simctl) alongside Apple's downloadable catalog, supportingxcodebuild -downloadPlatform, runtime.dmgexport, and direct public CDN.dmgdownloads.Installed onlyfilters, active/installed header summary pill with click-to-focus, macOS compatibility warnings, scheduled update checks, and opt-in automatic updates.XcodeAccountCard), dedicated settings page (XcodeSettings), and CLI/IPC support (unigetui app navigate xcode, documented indocs/CLI.md).src/UniGetUI.Extensions.Xcode/THIRD_PARTY_NOTICES.mdattributing MIT-licensedXcodesOrg/xcodes,XcodesOrg/XcodesKit,XcodesOrg/XcodesApp, andblacktop/ipsw(test vectors).Testing
UniGetUI.Extensions.Xcode.Tests): 718 passed, 0 failed (including live macOS Keychain round-trip tests withUNIGETUI_KEYCHAIN_TESTS=1and loopback TLScurltransport tests).XcodeTests,SettingsSearchIndexTests): 375 passed, 0 failed (covering browser filtering/grouping, installed summary & focus flows, account/Keychain states, prompts, simulator runtimes, live-region safety, and responsive layout bounds).dotnet format whitespace src --folder --verify-no-changes --verbosity minimalpassed.dotnet format style src/UniGetUI.Avalonia.slnx --no-restore --verify-no-changes --verbosity minimalpassed.pwsh ./scripts/translation/Verify-Translations.ps1validated all 60 language files.osx-arm64andosx-x64NativeAOT publishes,linux-x64/EnableXcodeExtension=falsebuilds excludingUniGetUI.Extensions.Xcode, and interactive live testing inUniGetUI.appon macOS (Apple ID + SMS 2FA sign-in, deferred Keychain behavior, and authenticated Apple download handshake).Known Limitations
xcode-selecttarget verifies its Apple code signature before returning without re-running privileged directory ownership/ACL remediation.unigetui tui) does not include an Xcode page.Closes: N/A
Relates to: N/A