Ariver
2026-07-02 cf4a1ad4dbc8f4a3f61a0a1a32f63d31c3562b27
Record TagLauncher 8.3.2 release freeze
8 files added
507 ■■■■■ changed files
src/Release/AppStore-8.3.2-20260702.0231/APP_REVIEW_NOTES.md 48 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/APP_STORE_CONNECT_METADATA.md 130 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/APP_STORE_RELEASE_CHECKLIST.md 80 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/PKG_PREFLIGHT_REPORT.md 43 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/README.md 29 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/RELEASE_MANIFEST.md 92 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/SHA256SUMS.txt 2 ●●●●● patch | view | raw | blame | history
src/Release/Freeze-8.3.2-20260702.0231/FREEZE_MANIFEST.md 83 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.3.2-20260702.0231/APP_REVIEW_NOTES.md
New file
@@ -0,0 +1,48 @@
# App Review Notes
## English
TagLauncher is a local macOS utility for organizing and launching installed apps by tag. No account or demo login is required.
Important monetization change for this submission:
TagLauncher is moving from a paid download to a free download with an optional non-consumable Pro unlock. Existing customers who previously purchased the paid macOS app retain equivalent Pro functionality and are not required to purchase Pro again. New users can download the app for free and optionally unlock Pro through the non-consumable In-App Purchase product `com.taglauncher.pro.lifetime`.
How to test:
1. Launch TagLauncher.
2. Open the App Grid from the menu bar icon or press Option-Shift-Space.
3. Use Quick Search from the grid by pressing Space.
4. Open Settings > Pro to view the Free / Pro feature comparison.
5. Use Settings > General or Settings > Theme to see Pro-gated display options. Free users can preview premium visual styles for five minutes; Pro users have full access.
6. Use Settings > Tags to create or edit tags. Free users can maintain up to 6 custom tags; Pro users have no custom tag limit.
7. Use Settings > Hotkeys to view custom hotkey controls. Custom global hotkeys are Pro-gated.
8. Purchase and Restore Purchases are available from Settings > Pro and from Pro-gated feature prompts.
The app does not collect user data and does not use analytics, ads, tracking, accounts, or cloud sync. Tags, notes, preferences, app order, tips visibility, and layout data stay on the user's Mac.
If the Dock icon is hidden, the menu bar icon remains available. The Dock visibility setting can be changed in Settings > General.
## Simplified Chinese
TagLauncher 是一个本地 macOS 工具,用于按标签整理和启动已安装的应用。不需要账号或演示登录。
本次提交的重要商业模式变化:
TagLauncher 将从付费下载调整为免费下载,并通过非消耗型 App 内购买解锁 Pro。此前已经购买过付费版 macOS App 的用户会保留等价 Pro 功能,不需要再次购买 Pro。新用户可以免费下载 App,并可通过非消耗型 App 内购买产品 `com.taglauncher.pro.lifetime` 解锁 Pro。
测试方式:
1. 启动 TagLauncher。
2. 点击菜单栏图标打开 App Grid,或按 Option-Shift-Space。
3. 在 App Grid 中按 Space 打开 Quick Search。
4. 打开 Settings > Pro 查看免费版 / Pro 版功能差异。
5. 打开 Settings > General 或 Settings > Theme 查看 Pro 限定显示选项。免费用户可预览高级视觉样式 5 分钟;Pro 用户可完整使用。
6. 打开 Settings > Tags 创建或编辑标签。免费用户最多可维护 6 个自定义标签;Pro 用户不限数量。
7. 打开 Settings > Hotkeys 查看自定义快捷键。自定义全局快捷键属于 Pro 功能。
8. 购买和恢复购买入口位于 Settings > Pro,也会出现在 Pro 功能提示中。
本应用不收集用户数据,不包含分析、广告、追踪、账号或云同步。标签、备注、偏好设置、应用排序、提示显示状态和布局数据都会保留在用户本机。
如果 Dock 图标被隐藏,菜单栏图标仍可使用。Dock 显示设置可在 Settings > General 中调整。
src/Release/AppStore-8.3.2-20260702.0231/APP_STORE_CONNECT_METADATA.md
New file
@@ -0,0 +1,130 @@
# App Store Connect Metadata Draft
Generated: 2026-07-02
## App Information
- Name: `TagLauncher`
- Bundle ID: `com.taglauncher.app`
- SKU: `taglauncher-macos`
- Category: `Utilities`
- Version: `8.3.2`
- Build: `20260702.0231`
- Minimum macOS: `14.0`
- App ID: `6777149496`
## URLs
- Marketing URL: `https://shanghai3168.github.io/taglauncher/index.html`
- Support URL: `https://shanghai3168.github.io/taglauncher/support.html`
- Privacy Policy URL: `https://shanghai3168.github.io/taglauncher/privacy.html`
- Chinese Privacy Policy URL: `https://shanghai3168.github.io/taglauncher/privacy-zh.html`
## In-App Purchase
- Product ID: `com.taglauncher.pro.lifetime`
- Type: Non-Consumable
- Purpose: unlock Pro features permanently on the user's Apple ID.
- Required App Store Connect action: attach this IAP to the `8.3.2` version submission if it has not been approved before.
## Pricing
- Target base app price for the `8.3.2` release window: Free.
- Existing paid users are grandfathered by app original version. The app code treats original App Store versions earlier than `8.3.2` as legacy paid users with Pro access.
- Do not make live `8.2.9` free before `8.3.2` is approved / ready to release.
## Subtitle
- English: `Tag-based app launcher`
- Simplified Chinese: `基于标签的应用启动器`
## What's New
### English
Prepared TagLauncher for free download with optional Pro unlock.
Existing paid-download customers keep Pro access automatically.
Improved stability around tag editing, Quick Search input, and local settings interactions.
### Simplified Chinese
支持 TagLauncher 调整为免费下载,并通过 Pro 解锁高级功能。
此前购买过付费下载版的用户会自动保留 Pro 权益。
改进标签编辑、Quick Search 输入和本地设置交互稳定性。
## Description Draft
### English
TagLauncher — Tag-based app launcher.
TagLauncher uses tags as containers to organize all your apps on one screen.
No more wondering which folder an app belongs in. One app can belong to multiple tags you define.
If you only remember a tag or purpose, you can add notes and use Quick Search to quickly find the right app.
Categories, ordering, and layout can be exported as JSON, so you can restore your organization after changing Macs or reinstalling.
Your data stays entirely on your Mac. The app works offline and this version has no account, cloud sync, ads, or tracking.
### Simplified Chinese
TagLauncher — 基于标签的应用启动器。
TagLauncher 用标签作为容器,把所有应用整理到一屏里。
再也不用纠结一个应用究竟该放进哪个文件夹。现在,一个应用可以同时属于多个你定义的标签。
只记得标签或用途也没关系,可以添加备注,并用 Quick Search 快速找到正确应用。
分类、排序和布局可以导出为 JSON,换机或重装后可以随时恢复分类与布局数据。
数据完全留在你的 Mac。App 可离线使用,本版本没有账号、云同步、广告或追踪。
## Keywords
English:
`TagLauncher,tags,app launcher,app organizer,quick search,notes,sorting,backup,productivity,Mac`
Simplified Chinese:
`TagLauncher,标签,应用整理,应用启动,快捷搜索,应用备注,排序,备份恢复,效率,Mac`
## Promotional Text
English:
`Organize apps with tags, assign one app to multiple tags, reorder containers and apps by drag, add notes, and launch faster with Quick Search.`
Simplified Chinese:
`用标签把应用整理到一屏:同一应用可归入多个标签,拖拽调整容器和应用顺序,添加备注,用 Quick Search 快速找到并启动。`
## App Privacy Recommended Answers
- Data collection: `No, this app does not collect data`
- Tracking: `No`
- Analytics: `No`
- Ads: `No`
- Data linked to user: `No`
Explanation:
TagLauncher indexes installed apps locally so users can organize and launch them. Tags, notes, preferences, app order, tips visibility, and layout data stay on the user's Mac. The app does not include ads, analytics SDKs, tracking, account registration, or cloud sync in this build.
## App Review Information
- Demo account required: `No`
- Contact email: `shanghai3168@gmail.com`
- Review notes: use `APP_REVIEW_NOTES.md`
## Missing Compliance
If App Store Connect shows `Missing Compliance`, answer the export compliance encryption question according to the current implementation: `None of the algorithms mentioned above`.
src/Release/AppStore-8.3.2-20260702.0231/APP_STORE_RELEASE_CHECKLIST.md
New file
@@ -0,0 +1,80 @@
# App Store Release Checklist
Version: `8.3.2`
Build: `20260702.0231`
Submission type: new App Store build for version `8.3.2`.
## Before Upload
- [x] Source commit frozen: `b2a06ec5ebc86c0241e635782ae5a032ab5aad0a`
- [ ] Release tag created: `v8.3.2-build20260702.0231`
- [x] Release directory created under `src/Release/AppStore-8.3.2-20260702.0231`
- [x] Marketing version set to `8.3.2`
- [x] Build set to `20260702.0231`
- [x] `CHANGELOG.md` includes 8.3.2
- [x] CODEGRAPH records the `8.3.2` first free+Pro migration boundary
- [x] Current App Store monetization risk reviewed with operations: live 8.2.9 should not be made free before 8.3.2 release window
- [x] Cumulative changelog range reviewed from 8.2.9 through `8.3.2`
- [x] DMG generated and verified for local rollback only
- [x] App Store `.pkg` generated with Installer certificate
- [x] Final `.pkg` expanded and inspected
- [x] Bundle ID, version, build, category, and minimum macOS verified
- [x] Embedded provisioning profile verified
- [x] Signed entitlements verified
- [x] `com.apple.quarantine` absent from expanded embedded provisioning profile
- [x] AppleDouble `._*` files reviewed as known non-blocking package artifact, consistent with previous accepted packages
- [x] SHA256 recorded
- [x] ASC metadata draft scanned for SOP forbidden words
## Upload With Transporter
1. Open Transporter for macOS.
2. Add this package:
```text
/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg
```
3. Deliver the package.
4. Wait for App Store Connect processing to finish.
5. In App Store Connect, open the TagLauncher macOS version page and create / select version `8.3.2`.
6. Select build `8.3.2 (20260702.0231)`.
7. If `Missing Compliance` appears, complete the export compliance question and choose `None of the algorithms mentioned above`.
8. Confirm non-consumable IAP `com.taglauncher.pro.lifetime` is configured and attached to the `8.3.2` submission if this is the first IAP review.
9. Confirm App Store base price will become Free only for the `8.3.2` release window.
10. Fill What's New from `APP_STORE_CONNECT_METADATA.md`.
11. Fill review notes from `APP_REVIEW_NOTES.md`.
12. Submit for Review.
13. Confirm the final status is Waiting for Review / 正在等待审核.
## Do Not Upload
- Do not upload `Archive/TagLauncher-8.3.2-build20260702.0231.dmg`.
- Do not upload any temporary package under `/private/tmp` or `/var/folders`.
- Do not leave an older build selected on the App Store Connect version page.
- Do not make live `8.2.9` free before the `8.3.2` release window, because `8.2.9` would then incorrectly grant legacy paid Pro to new free download users.
## SOP Forbidden Metadata Terms
The prepared metadata must not include:
- `Launchpad`
- `LaunchPad`
- `启动台`
- `Spotlight 替代`
- `Launchpad 替代`
- `超越原生 LaunchPad`
- Finder / Dock / Spotlight comparison marketing claims
## After Upload
- Record Transporter upload result.
- Record App Store Connect processing result.
- Record whether Missing Compliance appeared and how it was answered.
- Record the App Store baseline / replaced version used to generate cumulative What's New.
- Record IAP attachment / submission status.
- Record app pricing status and timing.
- If Apple rejects the binary, do not reuse the same build number for a new package. Increment `CFBundleVersion` with a new `YYYYMMDD.HHMM` build.
src/Release/AppStore-8.3.2-20260702.0231/PKG_PREFLIGHT_REPORT.md
New file
@@ -0,0 +1,43 @@
# PKG Preflight Report - TagLauncher 8.3.2 build 20260702.0231
Package:
`Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.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.3.2` |
| `CFBundleVersion` | `20260702.0231` |
| `LSMinimumSystemVersion` | `14.0` |
| `Contents/embedded.provisionprofile` | PASS |
| `codesign --verify --deep --strict` on expanded app | PASS |
| `com.apple.security.app-sandbox` | PASS |
| `com.apple.security.files.user-selected.read-write` | PASS |
| `com.apple.quarantine` | Absent from embedded provisioning profile in expanded payload |
| AppleDouble `._*` payload entries | Present in `pkgutil --payload-files`; this matches the previously accepted 8.2.8 / 8.2.9 package pattern and no quarantine xattr was found in the expanded profile |
## Upload Reminder
Use this file in Transporter:
`/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg`
Do not upload the DMG from `Archive/`.
src/Release/AppStore-8.3.2-20260702.0231/README.md
New file
@@ -0,0 +1,29 @@
# TagLauncher 8.3.2 App Store Release
Release directory for TagLauncher `8.3.2` build `20260702.0231`.
Upload artifact:
`Upload/TagLauncher-8.3.2-build20260702.0231.pkg`
Do not upload the DMG from `Archive/`; it is kept only as a local rollback / install artifact.
This build is the first App Store candidate for moving TagLauncher from paid download to free download with optional Pro unlock by non-consumable In-App Purchase.
Critical monetization boundary:
- `ProEntitlementConfig.firstFreeProVersion = "8.3.2"`.
- App Store users whose original download version is earlier than `8.3.2` are treated as legacy paid users and keep Pro access.
- New users who first download `8.3.2` or later are free users unless they unlock Pro through `com.taglauncher.pro.lifetime`.
Release coordination:
- Do not set the existing live `8.2.9` app price to free before this `8.3.2` build is approved and ready to release.
- In the 8.3.2 release window, set the base app price to Free and submit / attach the Pro non-consumable In-App Purchase.
- If the first IAP is not approved yet, attach it to the 8.3.2 app version submission in App Store Connect.
Local artifacts:
- Local rollback DMG: `Archive/TagLauncher-8.3.2-build20260702.0231.dmg`
- App Store upload PKG: `Upload/TagLauncher-8.3.2-build20260702.0231.pkg`
src/Release/AppStore-8.3.2-20260702.0231/RELEASE_MANIFEST.md
New file
@@ -0,0 +1,92 @@
# Release Manifest - TagLauncher 8.3.2 build 20260702.0231
## Identity
- Product: TagLauncher
- Version: `8.3.2`
- Build: `20260702.0231`
- Bundle ID: `com.taglauncher.app`
- Minimum macOS: `14.0`
- Category: `public.app-category.utilities`
- Generated at: `2026-07-02 03:01 CST`
- Branch: `codex/pro-custom-hotkeys-8.2.0`
- Source commit: `b2a06ec5ebc86c0241e635782ae5a032ab5aad0a`
- Release tag: `v8.3.2-build20260702.0231`
## Artifacts
- Local rollback DMG: `Release/AppStore-8.3.2-20260702.0231/Archive/TagLauncher-8.3.2-build20260702.0231.dmg`
- App Store upload PKG: `Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg`
- DMG SHA256: `0d0b62aa620c0a9a3f1ceeb6edb50d3dc2f18d0ecdea4803d953d6484693bf11`
- PKG SHA256: `d3b95e3e0e878769e36b90382f8e215e9bb3c180d0940a23387094200976fa91`
- DMG size: `6338779` bytes
- PKG size: `6160760` bytes
## Source Freeze
The source freeze manifest is:
`/Users/ar/Projects/Taglauncher/src/Release/Freeze-8.3.2-20260702.0231/FREEZE_MANIFEST.md`
## Build And Package Commands
```bash
cd /Users/ar/Projects/Taglauncher/src
APP_BUILD=20260702.0231 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
- Changes the paid-download to free-download Pro migration boundary to `8.3.2`.
- Preserves Pro for users who originally purchased TagLauncher before `8.3.2`, including the paid `8.2.9` App Store build.
- Keeps new `8.3.2` users on Free state until they unlock Pro through the non-consumable IAP product `com.taglauncher.pro.lifetime`.
- Adds QA coverage for the `8.3.2` StoreKit legacy boundary.
- Includes prior input and event safety hardening for Quick Search, tag editing, Usage Tips, and App Note bubbles.
## QA Evidence
All commands were run from `/Users/ar/Projects/Taglauncher/src`.
```bash
bash Scripts/pro_feature_gate_qa.sh
bash Scripts/pro_custom_hotkeys_qa.sh
bash Scripts/pro_custom_container_quota_qa.sh
bash Scripts/pro_display_mode_preview_qa.sh
bash Scripts/usage_tips_qa.sh
bash Scripts/app_note_bubble_input_qa.sh
bash Scripts/windowserver_event_safety_qa.sh
bash Scripts/tag_editor_mouse_event_qa.sh
bash Scripts/quick_search_launch_contract_qa.sh
bash Scripts/pro_localization_qa.sh
bash Scripts/theme_settings_qa.sh
bash Scripts/app_ordering_data_qa.sh
bash Scripts/settings_language_title_qa.sh
bash Scripts/quick_search_app_name_qa.sh
bash Scripts/quick_search_system_app_qa.sh
bash Scripts/macos14_availability_typecheck_qa.sh
APP_BUILD=20260702.0231 bash build.sh
bash Scripts/macos14_build_metadata_qa.sh build/TagLauncher.app
codesign --verify --deep --strict --verbose=2 build/TagLauncher.app
hdiutil verify Release/AppStore-8.3.2-20260702.0231/Archive/TagLauncher-8.3.2-build20260702.0231.dmg
pkgutil --check-signature Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg
pkgutil --expand-full Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg Release/AppStore-8.3.2-20260702.0231/Preflight/expanded
```
Result: PASS.
`Scripts/quick_search_app_name_qa.sh` skipped the Sunlogin wrapper-app case because Sunlogin was not installed, then `Scripts/quick_search_system_app_qa.sh` passed the Keychain Access indexed search candidate check.
## App Store Connect Status
Pending at freeze time:
- Upload `Upload/TagLauncher-8.3.2-build20260702.0231.pkg`.
- Create or select macOS version `8.3.2`.
- Select build `8.3.2 (20260702.0231)` after processing.
- Attach non-consumable IAP `com.taglauncher.pro.lifetime` if this is the first IAP submission.
- Confirm base app pricing is changed to Free only for the 8.3.2 release window.
- Complete export compliance if App Store Connect shows Missing Compliance.
- Submit for review after build and IAP configuration are complete.
src/Release/AppStore-8.3.2-20260702.0231/SHA256SUMS.txt
New file
@@ -0,0 +1,2 @@
d3b95e3e0e878769e36b90382f8e215e9bb3c180d0940a23387094200976fa91  Upload/TagLauncher-8.3.2-build20260702.0231.pkg
0d0b62aa620c0a9a3f1ceeb6edb50d3dc2f18d0ecdea4803d953d6484693bf11  Archive/TagLauncher-8.3.2-build20260702.0231.dmg
src/Release/Freeze-8.3.2-20260702.0231/FREEZE_MANIFEST.md
New file
@@ -0,0 +1,83 @@
# Freeze Manifest - TagLauncher 8.3.2 build 20260702.0231
## Freeze Identity
- Product: TagLauncher
- Version: `8.3.2`
- Build: `20260702.0231`
- Freeze time: `2026-07-02 03:01 CST`
- Branch: `codex/pro-custom-hotkeys-8.2.0`
- Source commit: `b2a06ec5ebc86c0241e635782ae5a032ab5aad0a`
- Release tag: `v8.3.2-build20260702.0231`
## Freeze Scope
This freeze prepares TagLauncher for the App Store business-model change from paid download to free download with optional Pro unlock.
Protected monetization rule:
- Original App Store version earlier than `8.3.2`: legacy paid user, Pro enabled.
- Original App Store version `8.3.2` or later: free user unless Pro is unlocked through IAP.
- IAP product ID: `com.taglauncher.pro.lifetime`.
## Code Changes Included
- `ProEntitlementConfig.firstFreeProVersion` set to `8.3.2`.
- Pro QA gate updated to assert the new legacy-paid cutoff.
- App version and build updated to `8.3.2 (20260702.0231)`.
- Release notes and CODEGRAPH updated for the App Store pricing / entitlement boundary.
- Prior WindowServer and input hardening work retained.
## QA Gate
All relevant release QA passed before package generation:
```bash
bash Scripts/pro_feature_gate_qa.sh
bash Scripts/pro_custom_hotkeys_qa.sh
bash Scripts/pro_custom_container_quota_qa.sh
bash Scripts/pro_display_mode_preview_qa.sh
bash Scripts/usage_tips_qa.sh
bash Scripts/app_note_bubble_input_qa.sh
bash Scripts/windowserver_event_safety_qa.sh
bash Scripts/tag_editor_mouse_event_qa.sh
bash Scripts/quick_search_launch_contract_qa.sh
bash Scripts/pro_localization_qa.sh
bash Scripts/theme_settings_qa.sh
bash Scripts/app_ordering_data_qa.sh
bash Scripts/settings_language_title_qa.sh
bash Scripts/quick_search_app_name_qa.sh
bash Scripts/quick_search_system_app_qa.sh
bash Scripts/macos14_availability_typecheck_qa.sh
APP_BUILD=20260702.0231 bash build.sh
bash Scripts/macos14_build_metadata_qa.sh build/TagLauncher.app
codesign --verify --deep --strict --verbose=2 build/TagLauncher.app
```
Package QA:
```bash
hdiutil verify Release/AppStore-8.3.2-20260702.0231/Archive/TagLauncher-8.3.2-build20260702.0231.dmg
pkgutil --check-signature Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg
pkgutil --expand-full Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg Release/AppStore-8.3.2-20260702.0231/Preflight/expanded
codesign --verify --deep --strict --verbose=2 Release/AppStore-8.3.2-20260702.0231/Preflight/expanded/com.taglauncher.app.pkg/Payload/TagLauncher.app
```
Result: PASS.
## Artifacts
- Local rollback DMG: `/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.3.2-20260702.0231/Archive/TagLauncher-8.3.2-build20260702.0231.dmg`
- App Store upload PKG: `/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.3.2-20260702.0231/Upload/TagLauncher-8.3.2-build20260702.0231.pkg`
- DMG SHA256: `0d0b62aa620c0a9a3f1ceeb6edb50d3dc2f18d0ecdea4803d953d6484693bf11`
- PKG SHA256: `d3b95e3e0e878769e36b90382f8e215e9bb3c180d0940a23387094200976fa91`
## Go / No-Go
Go for App Store upload after this manifest is committed and tagged.
Submission must also complete App Store Connect configuration:
- app base price Free for the `8.3.2` release window;
- Pro non-consumable IAP configured and attached if required;
- review notes include legacy paid-user migration explanation.