From ae7f204bc3ae724f4b696033c9c324ae85d49c70 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 04 Jun 2026 00:57:09 +0800
Subject: [PATCH] Add Mac App Store freeze records for 2.1.28

---
 Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/SHA256SUMS.txt      |    1 
 Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/RELEASE_MANIFEST.md |  103 ++++++++++++++++++++++++++++++++++
 02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md                     |   58 +++++++++++++++++++
 3 files changed, 162 insertions(+), 0 deletions(-)

diff --git a/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md b/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md
new file mode 100644
index 0000000..b8d5cb1
--- /dev/null
+++ b/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md
@@ -0,0 +1,58 @@
+# 2026-06-04 Mac App Store 发布冻结
+
+## 冻结结论
+
+- 冻结版本: `2.1.28`
+- build: `20260604.0049`
+- 分支: `codex/privatevoice-freeze-2.1.25`
+- 源码冻结 commit: `9d3d275dca8e8dc442eb04434c8bd0fdad79bc04`
+- release tag: `v2.1.28-build20260604.0049`
+- release 记录目录: `Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/`
+
+## 已完成
+
+- 版本号和 build 编号已同步到 Go 常量、macOS `Info.plist`、Wails 配置、Windows manifest、前端 package 和关于页兜底版本。
+- 已补充 Mac App Store `.pkg` 构建脚本: `privatevoice.src/scripts/build-macappstore-pkg-macos.sh`。
+- 已准备 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`。
+- SHA256: `fcef2154aab52224f55874ea865d6a08efe71a2d09768d7fbc8858d319a64024`。
+
+## 验证
+
+- `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
+- `./scripts/build-appstore-macos.sh arm64`: PASS
+- App Store sandbox POC DMG `hdiutil verify`: PASS
+- DMG 挂载内容包含 `.app` 和 `Applications` 链接: PASS
+- 包内版本为 `2.1.28 (build 20260604.0049)`: PASS
+- 包内包含 `en.lproj` 和 `zh-Hans.lproj` 本地化资源: PASS
+
+## 等待用户/外部环境
+
+当前正在等待用户提供或安装 Apple 发布环境,原因是本机没有 Mac App Store 上传所需的 Apple 分发证书、Installer 证书和 provisioning profile。
+
+需要用户完成:
+
+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`。
diff --git a/Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/RELEASE_MANIFEST.md b/Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/RELEASE_MANIFEST.md
new file mode 100644
index 0000000..5a0bd1e
--- /dev/null
+++ b/Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/RELEASE_MANIFEST.md
@@ -0,0 +1,103 @@
+# Release Manifest: PrivateVoice Dictation 2.1.28 build 20260604.0049
+
+## Package Type
+
+- Type: Mac App Store release freeze / local App Store sandbox POC
+- Platform: macOS arm64
+- Signing: local code signing identity for POC only, not Apple App Store distribution signing
+- Generated at: 2026-06-03T16:55:36Z
+- Operator: Codex
+
+## Source
+
+- Repository: `/Users/ar/Projects/PrivateVoice`
+- Branch: `codex/privatevoice-freeze-2.1.25`
+- Commit: `9d3d275dca8e8dc442eb04434c8bd0fdad79bc04`
+- Version: `2.1.28`
+- Build: `20260604.0049`
+- Tag: `v2.1.28-build20260604.0049`
+
+## Scope
+
+- Frozen code for Mac App Store release preparation.
+- Updated all app metadata to `2.1.28` and build `20260604.0049`.
+- Added Mac App Store `.pkg` build script:
+  `privatevoice.src/scripts/build-macappstore-pkg-macos.sh`.
+- Prepared App Store Connect metadata, privacy label recommendation, review notes, upload commands, and blocker list:
+  `APP_STORE_CONNECT_SUBMISSION.md`.
+- Built and verified a local App Store sandbox POC DMG using the `appstore` Go build tag and App Sandbox entitlements.
+
+## Build Commands
+
+```bash
+git diff --check
+bash -n privatevoice.src/scripts/build-macappstore-pkg-macos.sh
+npm run build
+go test ./... -count=1
+./privatevoice.src/scripts/build-macappstore-pkg-macos.sh arm64
+./privatevoice.src/scripts/build-appstore-macos.sh arm64
+```
+
+## Verification
+
+- Version metadata scan for `2.1.28` and `20260604.0049`: PASS.
+- `git diff --check`: 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`.
+- `go test ./... -count=1`: PASS.
+- Mac App Store `.pkg` script preflight: BLOCKED as expected because Apple signing environment variables and certificates are not available locally.
+- App Store sandbox POC build script: PASS.
+- App Store sandbox POC app `Info.plist` reports `CFBundleShortVersionString=2.1.28`, `CFBundleVersion=20260604.0049`, and `LSMinimumSystemVersion=13.4`: PASS.
+- App Store sandbox POC app resources include `en.lproj/InfoPlist.strings` and `zh-Hans.lproj/InfoPlist.strings`: PASS.
+- App Store sandbox POC entitlements include App Sandbox, audio input, user-selected read/write files, and network client: PASS.
+- App Store sandbox POC app code signature verification in build script: PASS.
+- App Store sandbox POC DMG `hdiutil verify`: PASS.
+- DMG contents include `PrivateVoice Dictation.app` and `Applications -> /Applications`: PASS.
+- Copied release DMG SHA256 verification: PASS.
+
+## Artifact
+
+```text
+Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/PrivateVoice Dictation-2.1.28-build20260604.0049-arm64-appstore-sandbox-poc.dmg
+```
+
+SHA256:
+
+```text
+fcef2154aab52224f55874ea865d6a08efe71a2d09768d7fbc8858d319a64024
+```
+
+## Mac App Store Upload Blocker
+
+This machine does not currently have Apple App Store signing assets installed:
+
+- Missing App Store app signing identity:
+  `Apple Distribution: <Team> (<TeamID>)` or `3rd Party Mac Developer Application: <Team> (<TeamID>)`.
+- Missing installer signing identity:
+  `3rd Party Mac Developer Installer: <Team> (<TeamID>)`.
+- Missing Mac App Store provisioning profile for bundle ID `com.privatevoice.input`.
+- Missing App Store Connect upload credentials or Transporter session.
+
+After those are available, run:
+
+```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
+```
+
+Expected upload package:
+
+```text
+/Users/ar/Projects/PrivateVoice/privatevoice.src/build/macappstore/arm64/PrivateVoice-Dictation-2.1.28-build20260604.0049-arm64-macappstore.pkg
+```
+
+## Known Notes
+
+- The DMG in this folder is a local sandbox POC for QA and review preparation. It is not a Mac App Store upload package.
+- The App Store upload artifact must be a signed `.pkg` produced after Apple signing assets are installed.
+- Build logs include existing Svelte accessibility warnings in unrelated components.
+- Build logs include the existing macOS deployment warning for `libonnxruntime.1.24.4.dylib`, which is built for macOS 14.0 while the App Store sandbox target remains macOS 13.4.
diff --git a/Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/SHA256SUMS.txt b/Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/SHA256SUMS.txt
new file mode 100644
index 0000000..f4d1443
--- /dev/null
+++ b/Release/PrivateVoice-Dictation-2.1.28-build20260604.0049/SHA256SUMS.txt
@@ -0,0 +1 @@
+fcef2154aab52224f55874ea865d6a08efe71a2d09768d7fbc8858d319a64024  PrivateVoice Dictation-2.1.28-build20260604.0049-arm64-appstore-sandbox-poc.dmg

--
Gitblit v1.9.3