When `--install` succeeds, automatically remove on-disk private key
files (.key and .p12) since the Keychain becomes the canonical store.
The `--keep-key` flag opts out of this cleanup, and clear warnings are
emitted whenever key material remains on disk.
- Add `--platform` flag (ios, macos, tvos, catalyst) to select the
correct certificate and profile types per platform
- Map each platform/type combination to the appropriate ProfileType
- Extract `profileTypeNeedsDevices` helper to cover all dev/adhoc
profile types across platforms
- Auto-register the host Mac as a development device when no devices
are found and platform is macos/catalyst
- Fix `DeviceCreateRequest` to omit `deviceClass` and `model` fields
rather than hard-coding iPhone values
- Initialize profile relationship slices before appending so
json.Marshal emits `[]` instead of `null`
- Install P12 (or cert-only) into Keychain immediately after the
certificate is saved, before provisioning profile creation. This
ensures the codesigning identity is available even if the profile
step fails.
- Handle the no-generated-key case: when the user supplied their own
key, install the cert alone and still ensure WWDR G3 is present.
- Remove the now-redundant install block that previously ran after
profile creation (only profile install remains there).
- Fix bundle ID registration: replace dots in the identifier with
spaces for the ASC display name field, which requires alphanumeric
characters and spaces only.
- Bundle cert + generated key into a password-protected .p12 file
using go-pkcs12 (legacy 3DES for macOS Keychain compatibility)
- Import the .p12 via `security import` so cert and key are properly
paired as an identity in the login keychain
- Auto-download and install the Apple WWDR G3 intermediate cert to
ensure a valid codesigning trust chain
- Change `appstore cert rm` ID from a flag to a positional argument
- Fix missing `Content-Type` header on bundle ID registration request
- Add `GetBundleIDByIdentifier` to filter bundles by reverse-DNS
identifier via the API query param instead of fetching by resource ID
- Auto-register missing bundle IDs during profile provisioning
- Stop deleting cert/key files on profile step failure; the cert
already exists on Apple's servers so destroying the private key
would make it permanently unusable — warn with recovery instructions
instead