Repository navigation
Include firmware helpers in normal Xcode app builds - #7
Merged
Merged
Conversation
hideouts-io
marked this pull request as ready for review
October 9, 2026 05:21
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.
Purpose
Normal Xcode Debug builds currently open the Firmware page without
idevicerestoreorirecovery. Make the app depend on a pinned-source helper build, then embed both universal executables, their license notices and the source manifest. Missing inputs, build failures and signing failures stop the build with an error.The helper builder finds Homebrew tools from GUI Xcode, serializes builds with a PID lock, and uses script-specific build state. A build-local Autoconf 2.73 launcher changes the reproduced stalled Perl
exechandoff to a child process while preserving failure status. Source pins, TLS verification, OpenSSL checksum verification and installed Homebrew tools are unchanged. Signing happens in Xcode's writable staging directory before copying declared outputs into the sandboxed app build phase.Add a bundle/UI smoke check and a stable identifier for the missing-helper warning. Check sidebar reachability through an actionable button before scrolling and clicking the target row. Give app and Swift CodeQL jobs the helper build tools/cache while preserving the verified Action pins, read-only extraction and separate upload jobs already merged in PR #8.
Verification
swift build -Xswiftc -warnings-as-errorsswift test -Xswiftc -warnings-as-errors --skip RealUSBMuxTests: 263 tests passed with live device, simulator and network opt-ins unset. The earlier focused Firmware run passed 51 tests.Fresh Debug
build-for-testingpassed with a minimal GUI-style PATH and no helper override. Run from the repository root:The fresh app's two helpers are executable and contain arm64 and x86_64. Both native and Rosetta version commands pass. Strict bundle signature verification and byte comparisons of all 16 notices plus
SOURCES.txtpass.All 17 workspaces rendered without
SQUEEZEDorOVERFLOWat the default size and requested900x560size; the window enforces an actual minimum height of 612.The four previously failing navigation cases plus Firmware bundling passed in a focused native run. The complete native UI suite then passed all 16 tests with
xcodebuild ... testusing the same Debug destination/DerivedData and no helper override. All bundle, reachability, filtering and demo-operation assertions remain enabled.No-device demo Firmware rendering passed without the missing-tools warning. No physical-device connection, firmware update or restore was attempted.
scripts/build-release.sh "" "$PWD/build-output/github-firmware-20261008/release"passed atf5f0b5e, before the picker/sidebar accessibility correction. The universal app, CLI and helpers were checked before packaging and after ZIP extraction; signatures, versions, library links, notices, SBOM, helper source archive and checksums passed. These are local ad hoc signed artifacts, not a published or notarized release. Release packaging also passed for the integrated candidate0b0b4e8in CI.All ten required checks passed at integrated candidate
0b0b4e8: Swift package tests; App build, UI tests, and layout; Real simulator end-to-end test; Release packaging; Analyze Swift; Analyze Actions; Upload Swift analysis; Upload Actions analysis; Code scanning uploads; Dependency review. CI passed 265 package tests, all 16 hosted UI tests including both Firmware cases, both simulator tests including the opt-in workflow, layout checks and Release ZIP verification. Dependency review passed.CodeQL completed both language analyses and SARIF uploads for test-merge
4d573370, whose source tree matches candidate0b0b4e8. Swift ran 27 rules and Actions ran 17. Inspection of Swift SARIF found zero compiler/error diagnostics, including entries labeledlevel: none; extraction recorded 1,710,912 AST nodes and zero unresolved nodes. File coverage metrics are unavailable for this PR ref; successful extraction does not establish complete imported-module semantics.Device and host coverage: local macOS 27 / Xcode 27; arm64 host, both arm64 and x86_64 helper execution. GitHub's macOS runner with Xcode 26.6 passed the complete hosted UI suite, Release packaging and the real simulator integration check at
0b0b4e8.Safety and privacy
Processcalls, shell execution or elevated privileges were introduced.Notes
PR #8 is merged. Integration commit
0b0b4e8preserves its workflow protections, the firmware helper dependencies/cache and all application/test sources fromcf9ac8e. Workflow YAML, Action pin and final diff checks passed. All required hosted checks and revision-specific uploads passed before merging. No installed app was replaced and no release was published. The simulator integration assertions remain intact.