| New file |
| | |
| | | # 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. |
| | | |