From fd3bed0c820142535a252395bc08f50153bc3e47 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 30 Jun 2026 16:34:11 +0800
Subject: [PATCH] Freeze TagLauncher 8.2.9 build 20260630.1617

---
 src/Release/Freeze-8.2.9-20260630.1617/SHA256SUMS.txt            |    3 
 src/Release/AppStore-8.2.9-20260630.1617/RELEASE_MANIFEST.md     |   52 ++++++++++
 src/Release/Freeze-8.2.9-20260630.1617/FREEZE_MANIFEST.md        |  143 ++++++++++++++++++++++++++++
 src/Release/AppStore-8.2.9-20260630.1617/README.md               |   12 ++
 src/Release/AppStore-8.2.9-20260630.1617/PKG_PREFLIGHT_REPORT.md |   44 ++++++++
 src/Release/AppStore-8.2.9-20260630.1617/SHA256SUMS.txt          |    2 
 6 files changed, 256 insertions(+), 0 deletions(-)

diff --git a/src/Release/AppStore-8.2.9-20260630.1617/PKG_PREFLIGHT_REPORT.md b/src/Release/AppStore-8.2.9-20260630.1617/PKG_PREFLIGHT_REPORT.md
new file mode 100644
index 0000000..c4321e3
--- /dev/null
+++ b/src/Release/AppStore-8.2.9-20260630.1617/PKG_PREFLIGHT_REPORT.md
@@ -0,0 +1,44 @@
+# PKG Preflight Report - TagLauncher 8.2.9 build 20260630.1617
+
+Package:
+
+`Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+
+## Signing
+
+| Item | Value |
+| --- | --- |
+| App signing identity | `0D7D5484FDE4EC1CA2C9225F1E71E65A256A1E7C` |
+| App signing name | `3rd Party Mac Developer Application: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)` |
+| Installer signing identity | `3rd Party Mac Developer Installer: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)` |
+| Installer signing SHA1 | `AABC76560111D01F55B1E932A6BBA3C3E16363B1` |
+| Team ID | `CR3J54M8BQ` |
+| Profile | `TagLauncher Mac App Store 20260605.2337` |
+| Profile expiration | `2027-06-04 21:48:21 CST` |
+| Profile-bound app certificate | `0D7D5484FDE4EC1CA2C9225F1E71E65A256A1E7C` |
+
+## Expanded Package Checks
+
+| Check | Result |
+| --- | --- |
+| `pkgutil --expand-full` | PASS |
+| `CFBundleIdentifier` | `com.taglauncher.app` |
+| `CFBundleShortVersionString` | `8.2.9` |
+| `CFBundleVersion` | `20260630.1617` |
+| `Contents/embedded.provisionprofile` | PASS |
+| `codesign --verify --deep --strict` on expanded app | PASS |
+| `com.apple.application-identifier` | `CR3J54M8BQ.com.taglauncher.app` |
+| `com.apple.developer.team-identifier` | `CR3J54M8BQ` |
+| `com.apple.security.app-sandbox` | PASS |
+| `com.apple.security.files.user-selected.read-write` | PASS |
+| `com.apple.quarantine` | Absent in expanded payload |
+| AppleDouble `._*` payload entries | Present in `pkgutil --payload-files`; this matched the previously accepted 8.2.8 package and no quarantine xattr was found in the expanded payload |
+
+## Upload Reminder
+
+Use this file in Transporter:
+
+`/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+
+Do not upload the DMG from `Archive/`.
+
diff --git a/src/Release/AppStore-8.2.9-20260630.1617/README.md b/src/Release/AppStore-8.2.9-20260630.1617/README.md
new file mode 100644
index 0000000..4f1d88a
--- /dev/null
+++ b/src/Release/AppStore-8.2.9-20260630.1617/README.md
@@ -0,0 +1,12 @@
+# TagLauncher 8.2.9 App Store Release
+
+Release directory for TagLauncher `8.2.9` build `20260630.1617`.
+
+Upload artifact:
+
+`Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+
+Do not upload the DMG from `Archive/`; it is kept only as a local rollback / install artifact.
+
+This build supersedes the previously uploaded `8.2.8 (20260630.0128)` build and only adds the final Pro status-row UI / localization corrections requested after that upload.
+
diff --git a/src/Release/AppStore-8.2.9-20260630.1617/RELEASE_MANIFEST.md b/src/Release/AppStore-8.2.9-20260630.1617/RELEASE_MANIFEST.md
new file mode 100644
index 0000000..9f287ba
--- /dev/null
+++ b/src/Release/AppStore-8.2.9-20260630.1617/RELEASE_MANIFEST.md
@@ -0,0 +1,52 @@
+# Release Manifest - TagLauncher 8.2.9 build 20260630.1617
+
+## Identity
+
+- Product: TagLauncher
+- Version: `8.2.9`
+- Build: `20260630.1617`
+- Bundle ID: `com.taglauncher.app`
+- Minimum macOS: `14.0`
+- Category: `public.app-category.utilities`
+- Generated at: `2026-06-30 16:31 CST`
+- Branch: `codex/pro-custom-hotkeys-8.2.0`
+- Source commit: `70a1cc2e63d2c49a135bd89cec3ffb1d427d90ee`
+- Release tag: `v8.2.9-build20260630.1617`
+
+## Artifacts
+
+- Local rollback DMG: `Release/AppStore-8.2.9-20260630.1617/Archive/TagLauncher-8.2.9-build20260630.1617.dmg`
+- App Store upload PKG: `Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+- DMG SHA256: `41aeb7e8fc1de547caee9124e93ffd111e6cfe5f4b570e5e81ed4258b5376b01`
+- PKG SHA256: `5d6b74b12b6872712dbf761bd13e45cd48fde367c1dcb8c012a6c3ef993bcede`
+- DMG size: `6309632` bytes
+- PKG size: `6124825` bytes
+
+## Source Freeze
+
+The source freeze manifest is:
+
+`/Users/ar/Projects/Taglauncher/src/Release/Freeze-8.2.9-20260630.1617/FREEZE_MANIFEST.md`
+
+## Build And Package Commands
+
+```bash
+cd /Users/ar/Projects/Taglauncher/src
+APP_BUILD=20260630.1617 bash build.sh
+bash make_dmg.sh
+```
+
+The App Store package was generated by embedding the `TagLauncher Mac App Store 20260605.2337` provisioning profile, signing with the profile-bound app certificate `0D7D5484FDE4EC1CA2C9225F1E71E65A256A1E7C`, and packaging with `productbuild` using the installer identity `3rd Party Mac Developer Installer: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)`.
+
+## Release Scope
+
+- Centers the unlocked Pro identity row on Settings > Language, Settings > Pro, and Settings > About.
+- Renders the row as `Pro 已解锁` pill plus `您当前是尊贵的 Pro 用户` in Simplified Chinese.
+- Removes duplicated crown icons from `settings.proStatus.proUser` in all 29 language packs.
+- Keeps the 8.2.8 Quick Search click-launch fix and Pro feature batch intact.
+
+## Transporter Status
+
+- Not uploaded in this freeze step.
+- Upload package prepared at: `Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+
diff --git a/src/Release/AppStore-8.2.9-20260630.1617/SHA256SUMS.txt b/src/Release/AppStore-8.2.9-20260630.1617/SHA256SUMS.txt
new file mode 100644
index 0000000..0dd72b3
--- /dev/null
+++ b/src/Release/AppStore-8.2.9-20260630.1617/SHA256SUMS.txt
@@ -0,0 +1,2 @@
+41aeb7e8fc1de547caee9124e93ffd111e6cfe5f4b570e5e81ed4258b5376b01  Release/AppStore-8.2.9-20260630.1617/Archive/TagLauncher-8.2.9-build20260630.1617.dmg
+5d6b74b12b6872712dbf761bd13e45cd48fde367c1dcb8c012a6c3ef993bcede  Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg
diff --git a/src/Release/Freeze-8.2.9-20260630.1617/FREEZE_MANIFEST.md b/src/Release/Freeze-8.2.9-20260630.1617/FREEZE_MANIFEST.md
new file mode 100644
index 0000000..ef42fff
--- /dev/null
+++ b/src/Release/Freeze-8.2.9-20260630.1617/FREEZE_MANIFEST.md
@@ -0,0 +1,143 @@
+# TagLauncher 8.2.9 Build 20260630.1617 Code Freeze
+
+## Freeze Scope
+
+- Version: `8.2.9`
+- Build: `20260630.1617`
+- Branch: `codex/pro-custom-hotkeys-8.2.0`
+- Source code commit: `70a1cc2e63d2c49a135bd89cec3ffb1d427d90ee`
+- Freeze tag: `v8.2.9-build20260630.1617`
+- Freeze commit: the commit pointed to by the freeze tag.
+- Freeze time: `2026-06-30 16:31:07 +0800`
+- Operator: Codex
+
+This freeze supersedes the earlier `8.2.8 (20260630.0128)` App Store build. It captures the final Pro status-row UI corrections requested after the previous upload package had been accepted by Transporter.
+
+## Included Product Changes Since 8.2.8
+
+- Settings top Pro status row:
+  - When Pro is unlocked and the selected settings tab is Language, Pro, or About, the row now centers a `Pro 已解锁` pill followed by `settings.proStatus.proUser`.
+  - In Simplified Chinese this renders as `Pro 已解锁` + `您当前是尊贵的 Pro 用户`.
+  - The crown icon belongs to the leading `ProStatusPill`; `settings.proStatus.proUser` no longer embeds a duplicate crown icon.
+- Localization:
+  - All 29 language packs remove the duplicate crown icon from `settings.proStatus.proUser`.
+  - Simplified Chinese is fixed to `您当前是尊贵的 Pro 用户`.
+- QA gates:
+  - `pro_feature_gate_qa.sh` now asserts that the centered unlocked identity row is limited to Language / Pro / About.
+  - `pro_localization_qa.sh` now asserts that `settings.proStatus.proUser` does not duplicate the crown icon and that Simplified Chinese uses the approved sentence.
+- Release metadata:
+  - `CFBundleShortVersionString` is updated to `8.2.9`.
+  - `CFBundleVersion` is updated to `20260630.1617`.
+  - `CHANGELOG.md` includes the `8.2.9` release entry.
+
+## Preserved 8.2.8 Scope
+
+This build still includes the 8.2.8 Pro feature batch and blocking Quick Search click-launch fix:
+
+- Pro custom hotkeys.
+- Pro custom tag colors.
+- Free 3-note quota and Pro unlimited notes.
+- Pro-gated colorful container / colorful grid display modes with 5-minute preview.
+- Dedicated Pro settings tab and Pro comparison table.
+- Quick Search mouse / trackpad candidate-row launch fix.
+- 29-language Pro, hotkey, data, bubble tip, and comparison UI localization.
+
+## QA Evidence
+
+Passed before source freeze:
+
+- `bash Scripts/pro_feature_gate_qa.sh`
+- `bash Scripts/pro_localization_qa.sh`
+- `bash Scripts/quick_search_launch_contract_qa.sh`
+- `bash Scripts/theme_settings_qa.sh`
+- `bash Scripts/app_ordering_data_qa.sh`
+- `bash Scripts/pro_custom_hotkeys_qa.sh`
+- `bash Scripts/pro_tag_custom_color_qa.sh`
+- `bash Scripts/pro_notes_quota_qa.sh`
+- `bash Scripts/pro_display_mode_preview_qa.sh`
+- `bash Scripts/pro_theme_preview_countdown_qa.sh`
+- `git diff --check -- CODEGRAPH.md src/CHANGELOG.md src/Apptag/Info.plist src/Apptag/PreferencesView.swift src/Apptag/Localization src/Scripts/pro_feature_gate_qa.sh src/Scripts/pro_localization_qa.sh`
+
+Build and artifact verification:
+
+- `APP_BUILD=20260630.1617 bash build.sh`: PASS.
+- `bash make_dmg.sh`: PASS.
+- `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app`: PASS.
+- `hdiutil verify build/TagLauncher.dmg`: PASS.
+- App Store package generation with `productbuild`: PASS.
+- `pkgutil --check-signature Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg`: PASS.
+- `pkgutil --expand-full` package preflight: PASS.
+- Expanded package metadata:
+  - `CFBundleIdentifier = com.taglauncher.app`
+  - `CFBundleShortVersionString = 8.2.9`
+  - `CFBundleVersion = 20260630.1617`
+- Expanded package signing:
+  - `codesign --verify --deep --strict --verbose=2`: PASS.
+  - `com.apple.application-identifier = CR3J54M8BQ.com.taglauncher.app`
+  - `com.apple.developer.team-identifier = CR3J54M8BQ`
+  - `com.apple.security.app-sandbox = true`
+  - `com.apple.security.files.user-selected.read-write = true`
+- Expanded package quarantine scan: PASS, no `com.apple.quarantine` xattr found.
+
+## Build Artifacts
+
+- Local rollback DMG: `/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.2.9-20260630.1617/Archive/TagLauncher-8.2.9-build20260630.1617.dmg`
+- App Store upload PKG: `/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+- DMG SHA256: `41aeb7e8fc1de547caee9124e93ffd111e6cfe5f4b570e5e81ed4258b5376b01`
+- PKG SHA256: `5d6b74b12b6872712dbf761bd13e45cd48fde367c1dcb8c012a6c3ef993bcede`
+- App Store signed executable SHA256: `0222efbc1f661d449cda12d97cb6afea35cefb36cdb2ce77804bdae22b7d0f49`
+- DMG size: `6309632` bytes
+- PKG size: `6124825` bytes
+
+## App Store Signing
+
+- App signing identity: `0D7D5484FDE4EC1CA2C9225F1E71E65A256A1E7C`
+- App signing name: `3rd Party Mac Developer Application: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)`
+- Installer signing identity: `3rd Party Mac Developer Installer: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)`
+- Installer signing identity SHA1: `AABC76560111D01F55B1E932A6BBA3C3E16363B1`
+- Provisioning profile: `TagLauncher Mac App Store 20260605.2337`
+- Profile path: `/Users/ar/Library/MobileDevice/Provisioning Profiles/da7839d6-2489-4272-b999-c61efccfe473.provisionprofile`
+- Profile expiration: `Fri Jun 04 21:48:21 CST 2027`
+- Team ID: `CR3J54M8BQ`
+
+The final package was signed with the same profile-bound app certificate as the previously accepted 8.2.8 upload. A first local 8.2.9 package was discarded because it used only the base sandbox entitlements and missed the App Store application identifier and team identifier entitlements.
+
+## CODEGRAPH Check
+
+- Checked: `/Users/ar/Projects/Taglauncher/CODEGRAPH.md`
+- This freeze changes settings UI behavior, Pro state copy, 29-language localized strings, release metadata, and QA gates.
+- Conclusion: `CODEGRAPH.md` has been updated with the Language / Pro / About centered unlocked Pro identity-row rule and the Pro comparison alignment rules already introduced during this correction batch.
+
+## Excluded Dirty Workspace Changes
+
+The working tree still contains unrelated dirty areas that are intentionally not included in this freeze tag:
+
+- Legacy `docs/` deletions and website assets.
+- Old `src/Release/AppStore-7.8.15-20260605.2337/...` screenshot deletions.
+- Existing edits in old release metadata under `src/Release/AppStore-7.9.1...` and `src/Release/AppStore-7.9.4...`.
+- Untracked planning / knowledge documents under `Docs/`, `canvas/`, and root-level local notes.
+- `.codex-sessionhistory/` records, which remain local evidence rather than release source.
+- The `Release/AppStore-8.2.9-20260630.1617/` binary artifacts are kept on disk for submission / rollback but are not part of the source freeze tag.
+
+## Rollback
+
+To inspect the frozen source without changing the current branch:
+
+```bash
+git switch --detach v8.2.9-build20260630.1617
+```
+
+To revert this freeze from a descendant branch:
+
+```bash
+git revert v8.2.9-build20260630.1617
+```
+
+## App Store Handoff
+
+Upload this package in Transporter / App Store Connect:
+
+`/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg`
+
+Do not upload the DMG; it is kept only as a local rollback / install artifact.
+
diff --git a/src/Release/Freeze-8.2.9-20260630.1617/SHA256SUMS.txt b/src/Release/Freeze-8.2.9-20260630.1617/SHA256SUMS.txt
new file mode 100644
index 0000000..a552618
--- /dev/null
+++ b/src/Release/Freeze-8.2.9-20260630.1617/SHA256SUMS.txt
@@ -0,0 +1,3 @@
+41aeb7e8fc1de547caee9124e93ffd111e6cfe5f4b570e5e81ed4258b5376b01  Release/AppStore-8.2.9-20260630.1617/Archive/TagLauncher-8.2.9-build20260630.1617.dmg
+5d6b74b12b6872712dbf761bd13e45cd48fde367c1dcb8c012a6c3ef993bcede  Release/AppStore-8.2.9-20260630.1617/Upload/TagLauncher-8.2.9-build20260630.1617.pkg
+0222efbc1f661d449cda12d97cb6afea35cefb36cdb2ce77804bdae22b7d0f49  Release/AppStore-8.2.9-20260630.1617/Preflight/expanded/com.taglauncher.app.pkg/Payload/TagLauncher.app/Contents/MacOS/TagLauncher

--
Gitblit v1.9.3