macOS GUI dual-track bundle — SwiftUI app + sign/notarize/staple pipeline#93
Merged
Conversation
…e pipeline (#87) New bestasr-gui SwiftUI app (BestASRGUICore session state machine over an injected CommandCore runner; file picker + drag-and-drop, language/effort/ format pickers persisted via AppStorage, stage+elapsed progress, result preview + reveal-in-Finder, verbatim typed-error failure state) and scripts/release-app.sh (universal build → bundle assembly → Developer ID sign nested-first → notarize → staple + validate → zip; --assemble-only unsigned mode for tests/CI). The CLI ships inside the bundle as bestasr-cli: default APFS is case-insensitive, so a 'bestasr' entry is the same file as the 'bestASR' GUI executable — the issue's original layout silently overwrites the GUI (caught by BundleAssemblyTests; spec/design updated first per Spectra discipline). swift build takes one --product per invocation — the script loops (a triple-flag call silently builds only the last product). 335 tests green; real universal (arm64+x86_64) assemble verified; GUI launch smoke OK. Refs #87
…ed version parse (verify #87) HIGH: /bin/bash 3.2 (the shebang/stock-macOS shell) aborts on expanding an empty array under set -u — "${BUILD_ENV[@]}" killed the build exactly on the recommended Xcode-toolchain path. Guarded as ${BUILD_ENV[@]+...} in release-app.sh, and the same latent defect in release-mcp.sh and install.sh (sister-occurrence sweep). Verified empirically under /bin/bash 3.2. MEDIUM: the Info.plist version parse is now scoped to the BestASRVersion enum block and semver-shape-asserted — a second numeric 'static let current' elsewhere in DataModels.swift can no longer be silently baked into a release. Also: design D4 no longer implies a GUI diarize control (defaults false, no v1 control); install.sh notes the bare build now rides along the GUI target. Refs #87
kiki830621
marked this pull request as ready for review
July 10, 2026 00:15
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.
Implements the #87 roadmap item as Spectra change
gui-app-dual-track(4 artifacts in-repo).What
bestasr-guiSwiftUI app (new SwiftPM target pair:BestASRGUICoretestable logic + thin executable): file picker/drag-and-drop, language/effort/format pickers (persisted via AppStorage, vocabularies derived from core types), stage+elapsed progress (honest — engines expose no percentage), result preview + reveal-in-Finder, verbatim typed-error failure state. Written underapple-xcode-skills:swiftui-specialist(per-section View structs, @mainactor @observable, Equatable payloads, narrow inputs).scripts/release-app.sh: universal build →bestASR.appassembly → Developer ID sign (nested-first) → notarize → staple + validate (the bundle-only offline-Gatekeeper win) → zip;--assemble-onlyunsigned mode keeps structure testable without credentials.Field notes
bestasrISbestASR, so copying the CLI overwrote the GUI. Caught by the smoke test's first run; the CLI ships asbestasr-cli, spec/design updated first per Spectra discipline.swift buildaccepts one--productper invocation (a triple-flag call silently builds only the last) — the script loops.set -u, which would kill the release build exactly on the recommended Xcode-toolchain path — guarded in release-app.sh and the same latent defect in release-mcp.sh + install.sh (sister sweep). Plus a MEDIUM (version parse now enum-scoped + semver-asserted).Verification
lipoconfirms arm64+x86_64); GUI launch smoke OK.Additive: CLI / MCP server / plugin
~/bindistribution untouched (only Package.swift + README touched among existing files).Refs #87