Ariver
2026-06-05 b9c96267831433fb040842e4038b6631482ed90d
Record App Store application identifier rebuild
4 files added
155 ■■■■■ changed files
02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md 39 ●●●●● patch | view | raw | blame | history
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/APP_STORE_CONNECT_SUBMISSION.md 37 ●●●●● patch | view | raw | blame | history
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/RELEASE_MANIFEST.md 78 ●●●●● patch | view | raw | blame | history
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/SHA256SUMS.txt 1 ●●●● patch | view | raw | blame | history
02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md
New file
@@ -0,0 +1,39 @@
# 2026-06-05 Mac App Store application identifier 签名修复
## 结论
- 版本: `2.1.28`
- 新 build: `20260605.0216`
- 源码 commit: `cfe4d647b4d7cc1ae41d7e193d45d546ae15b244`
- 修复原因: Transporter/TestFlight validation failed 90886。
- 修复内容: 将 provisioning profile 中的 `com.apple.application-identifier`、`com.apple.developer.team-identifier` 和 `keychain-access-groups` 合并进签名 entitlements。
## 产物
- `/Users/ar/Desktop/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg`
- `/Users/ar/Projects/PrivateVoice/X-运营资料/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg`
- `/Users/ar/Projects/PrivateVoice/Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg`
SHA256:
```text
9cb8a5806217219edec49cb88118803c1875cb57cd807335bbe2664e52950424  PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg
```
## 验证
- `go test ./internal/startup ./internal/model ./internal/modelselection`: PASS
- `bash -n privatevoice.src/scripts/build-macappstore-pkg-macos.sh`: PASS
- arm64 App Store signed package build: PASS
- x86_64 App Store signed package build: PASS
- universal app merge and re-sign: PASS
- `codesign -vvv --deep --strict` universal app: PASS
- `pkgutil --check-signature` universal pkg: PASS
- 展开 pkg 后读取 `Info.plist`,`LSApplicationCategoryType=public.app-category.productivity`: PASS
- 展开 pkg 后读取签名 entitlements,`com.apple.application-identifier=CR3J54M8BQ.com.shanghai3168.privatevoicedictation`: PASS
- 展开 pkg 后读取签名 entitlements,`com.apple.developer.team-identifier=CR3J54M8BQ`: PASS
- 三处 `.pkg` SHA256 一致: PASS
## 上传提示
请在 Transporter 中上传 `20260605.0216` 这个新包,不要再上传 `20260604.2353`。
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/APP_STORE_CONNECT_SUBMISSION.md
New file
@@ -0,0 +1,37 @@
# App Store Connect Submission Prep
## Build
- App: 私语输入法 / PrivateVoice Dictation
- Bundle ID: `com.shanghai3168.privatevoicedictation`
- Version: `2.1.28`
- Build: `20260605.0216`
- Platform: macOS
- Primary category: Productivity
- `LSApplicationCategoryType`: `public.app-category.productivity`
- Signed application identifier: `CR3J54M8BQ.com.shanghai3168.privatevoicedictation`
- Team ID: `CR3J54M8BQ`
- Minimum macOS for App Store sandbox build: `13.4`
- Support URL: `https://shanghai3168.github.io/privatevoice-dictation-support/support.html`
- Privacy Policy URL: `https://shanghai3168.github.io/privatevoice-dictation-support/privacy.html`
## Current Upload Package
```text
/Users/ar/Desktop/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg
```
This replaces the failed `20260604.2353` package. The new package signs the app with the same `com.apple.application-identifier` that is present in the embedded provisioning profile.
## Validation Evidence
- Universal `arm64` + `x86_64` app executable and bundled dylibs: PASS.
- App code signature: PASS.
- Installer package signature: PASS.
- Expanded package signed app entitlements include `com.apple.application-identifier=CR3J54M8BQ.com.shanghai3168.privatevoicedictation`: PASS.
- Expanded package signed app entitlements include `com.apple.developer.team-identifier=CR3J54M8BQ`: PASS.
- SHA256: `9cb8a5806217219edec49cb88118803c1875cb57cd807335bbe2664e52950424`.
## Upload
Open Transporter, remove the failed previous package, drag in the package above, and click `Deliver`.
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/RELEASE_MANIFEST.md
New file
@@ -0,0 +1,78 @@
# Release Manifest: PrivateVoice Dictation 2.1.28 build 20260605.0216
## Package Type
- Type: Mac App Store signed universal upload package
- Platform: macOS universal, `arm64` + `x86_64`
- Signing: Apple App Store distribution signing with embedded Mac App Store provisioning profile
- Generated at: 2026-06-04T18:22:31Z
- Operator: Codex
## Source
- Repository: `/Users/ar/Projects/PrivateVoice`
- Branch: `codex/privatevoice-freeze-2.1.25`
- Build source commit: `cfe4d647b4d7cc1ae41d7e193d45d546ae15b244`
- Version: `2.1.28`
- Build: `20260605.0216`
- Bundle ID: `com.shanghai3168.privatevoicedictation`
- App Store category UTI: `public.app-category.productivity`
## Scope
- Fixed Transporter/TestFlight validation failure 90886.
- The previous package embedded a provisioning profile with `com.apple.application-identifier`, but the signed app entitlements did not include the same identifier.
- Updated `privatevoice.src/scripts/build-macappstore-pkg-macos.sh` to merge profile entitlements into the signing entitlements:
  - `com.apple.application-identifier`
  - `com.apple.developer.team-identifier`
  - `keychain-access-groups`
- Rebuilt the Mac App Store upload package with a new build number.
## Build Commands
```bash
git diff --check -- privatevoice.src/scripts/build-macappstore-pkg-macos.sh privatevoice.src/app.go privatevoice.src/build/darwin/Info.plist
bash -n privatevoice.src/scripts/build-macappstore-pkg-macos.sh
go test ./internal/startup ./internal/model ./internal/modelselection
./privatevoice.src/scripts/build-macappstore-pkg-macos.sh arm64
./privatevoice.src/scripts/build-macappstore-pkg-macos.sh x86_64
```
The final universal app was assembled from the signed arm64 and x86_64 app bundles with `lipo`, then re-signed with the merged App Store entitlements and packaged with `productbuild`.
## Verification
- `go test ./internal/startup ./internal/model ./internal/modelselection`: PASS.
- `bash -n privatevoice.src/scripts/build-macappstore-pkg-macos.sh`: PASS.
- `npm run build`: PASS, with existing Svelte a11y warnings in `UpdateDialog.svelte` and `ToggleSwitch.svelte`.
- arm64 Mac App Store package build and signature verification: PASS.
- x86_64 Mac App Store package build and signature verification: PASS.
- Universal app executable contains `arm64` and `x86_64`: PASS.
- Bundled `libsherpa-onnx-c-api.dylib` contains `arm64` and `x86_64`: PASS.
- Bundled `libonnxruntime.1.24.4.dylib` contains `arm64` and `x86_64`: PASS.
- Universal app `codesign -vvv --deep --strict`: PASS.
- Universal package `pkgutil --check-signature`: PASS.
- Expanded package app `Info.plist` contains `CFBundleVersion=20260605.0216`: PASS.
- Expanded package app `Info.plist` contains `LSApplicationCategoryType=public.app-category.productivity`: PASS.
- Expanded package app signed entitlements contain `com.apple.application-identifier=CR3J54M8BQ.com.shanghai3168.privatevoicedictation`: PASS.
- Expanded package app signed entitlements contain `com.apple.developer.team-identifier=CR3J54M8BQ`: PASS.
- Expanded package app signed entitlements contain `com.apple.security.app-sandbox=true`: PASS.
- Release, desktop, and operations package SHA256 match: PASS.
## Artifact
```text
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg
/Users/ar/Desktop/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg
/Users/ar/Projects/PrivateVoice/X-运营资料/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg
```
SHA256:
```text
9cb8a5806217219edec49cb88118803c1875cb57cd807335bbe2664e52950424  PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg
```
## Upload Note
Use the `20260605.0216` package for Transporter. Do not upload the previous `20260604.2353` package, because it is missing `com.apple.application-identifier` in the signed app entitlements.
Release/PrivateVoice-Dictation-2.1.28-build20260605.0216/SHA256SUMS.txt
New file
@@ -0,0 +1 @@
9cb8a5806217219edec49cb88118803c1875cb57cd807335bbe2664e52950424  PrivateVoice-Dictation-2.1.28-build20260605.0216-universal-macappstore.pkg