| | |
| | | - 冻结版本: `2.1.28` |
| | | - build: `20260604.0049` |
| | | - 分支: `codex/privatevoice-freeze-2.1.25` |
| | | - 源码冻结 commit: `9d3d275dca8e8dc442eb04434c8bd0fdad79bc04` |
| | | - release tag: `v2.1.28-build20260604.0049` |
| | | - 原始源码冻结 commit: `9d3d275dca8e8dc442eb04434c8bd0fdad79bc04` |
| | | - App Store 上传源码 commit: `3fecf01a4c6c8e84dff785945644ad6c01c6db40` |
| | | - 原始 release tag: `v2.1.28-build20260604.0049` |
| | | - App Store 上传冻结 tag: `v2.1.28-build20260604.0049-appstore-upload` |
| | | - release 记录目录: `Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/` |
| | | |
| | | ## 已完成 |
| | | |
| | | - 版本号和 build 编号已同步到 Go 常量、macOS `Info.plist`、Wails 配置、Windows manifest、前端 package 和关于页兜底版本。 |
| | | - Bundle ID 已按正式 App Store profile 统一为 `com.shanghai3168.privatevoicedictation`。 |
| | | - 已补充 Mac App Store `.pkg` 构建脚本: `privatevoice.src/scripts/build-macappstore-pkg-macos.sh`。 |
| | | - 已补充 Mac App Store `.pkg` 构建脚本的 provisioning profile 与 Bundle ID 一致性校验。 |
| | | - 已准备 App Store Connect 元数据草稿、隐私问卷建议、审核备注和上传命令: `Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/APP_STORE_CONNECT_SUBMISSION.md`。 |
| | | - 已生成本地 App Store sandbox POC DMG: |
| | | `Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/PrivateVoice Dictation-2.1.28-build20260604.0049-arm64-appstore-sandbox-poc.dmg`。 |
| | | - 已补生成 Intel x86_64 本地 App Store sandbox POC DMG: |
| | | `Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/PrivateVoice Dictation-2.1.28-build20260604.0049-x86_64-appstore-sandbox-poc.dmg`。 |
| | | - 已生成正式上传用签名通用 `.pkg`: |
| | | `Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/PrivateVoice-Dictation-2.1.28-build20260604.0049-universal-macappstore.pkg`。 |
| | | - 已复制正式上传包到桌面上架目录: |
| | | `/Users/ar/Desktop/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260604.0049-universal-macappstore.pkg`。 |
| | | - arm64 SHA256: `fcef2154aab52224f55874ea865d6a08efe71a2d09768d7fbc8858d319a64024`。 |
| | | - x86_64 SHA256: `899bf95f579455794f9cffbadc33d1e90dbba4b6fc1b3d237229115691373606`。 |
| | | - universal macappstore pkg SHA256: `84dc2bc2f6b38762e6f72f152603f831d2a3e515ca772c0b8f5e11dabedbb579`。 |
| | | |
| | | ## 验证 |
| | | |
| | | - `git diff --check`: PASS |
| | | - `bash -n privatevoice.src/scripts/build-macappstore-pkg-macos.sh`: PASS |
| | | - `npm run build`: PASS,只有既有 Svelte a11y warning |
| | | - `go test ./... -count=1`: PASS |
| | | - `go test ./internal/startup ./internal/model ./internal/modelselection`: PASS |
| | | - `./scripts/build-appstore-macos.sh arm64`: PASS |
| | | - `./scripts/build-appstore-macos.sh x86_64`: PASS |
| | | - Apple App Store app signing identity: PASS |
| | | - Apple Installer signing identity: PASS |
| | | - Apple WWDR G3 intermediate certificate: PASS |
| | | - provisioning profile App ID `CR3J54M8BQ.com.shanghai3168.privatevoicedictation` 与 app `CFBundleIdentifier` 匹配: PASS |
| | | - 正式上传 `.pkg` 的 app 主程序、`libsherpa-onnx-c-api.dylib`、`libonnxruntime.1.24.4.dylib` 均包含 `arm64` + `x86_64`: PASS |
| | | - `codesign -vvv --deep --strict` 正式上传 app: PASS |
| | | - `pkgutil --check-signature` 正式上传 `.pkg`: PASS |
| | | - `shasum -a 256 -c SHA256SUMS.txt`: PASS |
| | | - App Store sandbox POC DMG `hdiutil verify`: arm64 PASS,x86_64 PASS |
| | | - DMG 挂载内容包含 `.app` 和 `Applications` 链接: arm64 PASS,x86_64 PASS |
| | | - 包内版本为 `2.1.28 (build 20260604.0049)`: arm64 PASS,x86_64 PASS |
| | | - 包内包含 `en.lproj` 和 `zh-Hans.lproj` 本地化资源: arm64 PASS,x86_64 PASS |
| | | - x86_64 主程序架构为 `Mach-O 64-bit executable x86_64`: PASS |
| | | |
| | | ## 等待用户/外部环境 |
| | | ## 上传方式 |
| | | |
| | | 当前正在等待用户提供或安装 Apple 发布环境,原因是本机没有 Mac App Store 上传所需的 Apple 分发证书、Installer 证书和 provisioning profile。 |
| | | 正式上传包已经准备好。当前不在命令行内执行 `altool --upload-app`,原因是没有在 shell 中提供 App Store Connect Apple ID 与 app-specific password;也没有可复用的命令行 Transporter 登录会话。 |
| | | |
| | | 需要用户完成: |
| | | 推荐用户直接使用 Transporter: |
| | | |
| | | 1. 在 Apple Developer / App Store Connect 中创建或确认 bundle ID `com.privatevoice.input` 的 macOS App 记录。 |
| | | 2. 安装 App Store app signing identity: |
| | | `Apple Distribution: <Team> (<TeamID>)` 或 `3rd Party Mac Developer Application: <Team> (<TeamID>)`。 |
| | | 3. 安装 Installer signing identity: |
| | | `3rd Party Mac Developer Installer: <Team> (<TeamID>)`。 |
| | | 4. 下载 Mac App Store provisioning profile,并提供本地绝对路径。 |
| | | 5. 提供 App Store Connect 上传方式:Transporter 登录状态,或 altool 使用的 Apple ID / app-specific password。 |
| | | |
| | | 收到这些信息后,下一步执行: |
| | | |
| | | ```bash |
| | | cd /Users/ar/Projects/PrivateVoice/privatevoice.src |
| | | |
| | | PRIVATEVOICE_APPSTORE_APP_IDENTITY="Apple Distribution: <Team> (<TeamID>)" \ |
| | | PRIVATEVOICE_APPSTORE_INSTALLER_IDENTITY="3rd Party Mac Developer Installer: <Team> (<TeamID>)" \ |
| | | PRIVATEVOICE_APPSTORE_PROVISIONING_PROFILE="/absolute/path/to/profile.provisionprofile" \ |
| | | ./scripts/build-macappstore-pkg-macos.sh arm64 |
| | | ``` |
| | | |
| | | 然后用 `pkgutil --check-signature`、`xcrun altool --validate-app` 或 Transporter 验证并上传生成的 `.pkg`。 |
| | | 1. 打开 Transporter。 |
| | | 2. 登录 App Store Connect 账号。 |
| | | 3. 拖入 `/Users/ar/Desktop/PrivateVoice-26.0604上架/02-上传包/PrivateVoice-Dictation-2.1.28-build20260604.0049-universal-macappstore.pkg`。 |
| | | 4. 点击 `Deliver`。 |
| | | 5. 回到 App Store Connect,等待 build 处理完成后选中该 build,补齐截图、隐私问卷和审核信息并提交审核。 |