Ariver
2026-06-26 f6277821216390d417195af0860eca0e8d8e37ae
Archive 8.1.0 App Store release
10 files added
390 ■■■■■ changed files
src/Release/AppStore-8.1.0-20260626.1726/APP_REVIEW_NOTES.md 49 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/APP_STORE_CONNECT_METADATA.md 44 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/APP_STORE_RELEASE_CHECKLIST.md 85 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/Archive/TagLauncher-8.1.0-build20260626.1726.dmg patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/PKG_PREFLIGHT_REPORT.md 40 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/QA_RELEASE_EVIDENCE.md 52 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/README.md 29 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/RELEASE_MANIFEST.md 89 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/SHA256SUMS.txt 2 ●●●●● patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg patch | view | raw | blame | history
src/Release/AppStore-8.1.0-20260626.1726/APP_REVIEW_NOTES.md
New file
@@ -0,0 +1,49 @@
# 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.
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. Create or use a tag group, then drag an app icon within the same group to preview display ordering.
5. Create an empty tag in Settings > Tags; the empty tag remains visible in the App Grid with a minimal placeholder container.
6. Drag an app to blank space outside containers to remove that tag assignment.
7. Open Settings > General to hide or show App Grid usage tips.
8. Open Settings > Theme to switch between free themes. Premium themes show the Pro unlock prompt and can be previewed.
9. Open Settings > Data to export or import the local category layout. These actions are Pro features and show the Pro unlock prompt when locked.
Version 8.1.0 build 20260626.1726 adds the Free + Pro model. Core app organization, launching, Quick Search, local tag editing, and the default/free themes remain usable without purchase. Pro unlock is a one-time purchase for premium themes, layout import/export, unlimited custom app notes, and persistent app ordering. Users who originally purchased TagLauncher before this Free + Pro version are automatically unlocked as Pro users.
The in-app purchase product identifier is `com.taglauncher.pro.lifetime`.
The app does not collect user data and does not use analytics, ads, tracking, accounts, or cloud sync. Local import/export uses user-selected files only.
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 工具,用于按标签整理和启动已安装的应用。不需要账号或演示登录。
测试方式:
1. 启动 TagLauncher。
2. 点击菜单栏图标打开 App Grid,或按 Option-Shift-Space。
3. 在 App Grid 中按 Space 打开 Quick Search。
4. 创建或使用一个标签分组,在同一个分组内拖动应用图标,可以预览显示顺序。
5. 在 Settings > Tags 创建一个空标签;空标签会继续显示在 App Grid 中,并带有最小占位容器。
6. 把应用拖到容器外空白处,可以移除该标签归属。
7. 打开 Settings > General,可以关闭或开启 App Grid 底部使用技巧。
8. 打开 Settings > Theme,可以切换免费主题。高级主题会显示 Pro 解锁提示,并允许预览。
9. 打开 Settings > Data,可以导出或导入本地分类布局。这两项属于 Pro 功能,锁定时会显示 Pro 解锁提示。
版本 8.1.0 build 20260626.1726 新增免费版 + Pro 模式。应用整理、启动、Quick Search、本地标签编辑和默认 / 免费主题无需购买即可使用。Pro 是一次性购买,用于解锁高级主题、布局导入导出、无限自定义应用备注和应用排序持久化。早于免费版 + Pro 版本购买过 TagLauncher 的用户会自动获得 Pro。
内购商品 ID 为 `com.taglauncher.pro.lifetime`。
本应用不收集用户数据,不包含分析、广告、追踪、账号或云同步。本地导入导出只使用用户主动选择的文件。
如果 Dock 图标被隐藏,菜单栏图标仍可使用。Dock 显示设置可在 Settings > General 中调整。
src/Release/AppStore-8.1.0-20260626.1726/APP_STORE_CONNECT_METADATA.md
New file
@@ -0,0 +1,44 @@
# App Store Connect Metadata Draft - 8.1.0
## Version
- Version: `8.1.0`
- Build: `20260626.1726`
- Upload package: `Upload/TagLauncher-8.1.0-build20260626.1726.pkg`
- In-app purchase product: `com.taglauncher.pro.lifetime`
## What's New - English
TagLauncher now includes a Free + Pro model. Core local app organization, tag editing, launching, Quick Search, and the default/free themes remain available without purchase. Pro unlock is a one-time purchase for premium themes, layout import/export, unlimited custom notes, and persistent app ordering.
This update also protects free previews from changing real user data and adds full localization coverage for the new Pro screens.
## What's New - Simplified Chinese
TagLauncher 现在加入免费版 + Pro 模式。基础的本地应用整理、标签编辑、应用启动、Quick Search 和默认 / 免费主题仍可免费使用。Pro 为一次性购买,可解锁高级主题、布局导入导出、无限自定义备注和应用排序持久化。
本次更新也保护免费预览不写脏真实用户数据,并补齐了 Pro 相关界面的多语言文案。
## Review Notes Source
Use `APP_REVIEW_NOTES.md` for App Review Notes.
## SOP Gate
Before final App Store Connect submission:
- Confirm the current App Store baseline / replaced build.
- Review cumulative user-visible changelog entries from the baseline through `8.1.0`.
- Confirm `com.taglauncher.pro.lifetime` exists and is attached to this app version.
- Confirm Missing Compliance if App Store Connect asks for it.
## Forbidden Terms Check
The draft above intentionally avoids:
- `Launchpad`
- `LaunchPad`
- `启动台`
- `Spotlight 替代`
- `Launchpad 替代`
- Finder / Dock / Spotlight comparison marketing claims
src/Release/AppStore-8.1.0-20260626.1726/APP_STORE_RELEASE_CHECKLIST.md
New file
@@ -0,0 +1,85 @@
# App Store Release Checklist
Version: `8.1.0`
Build: `20260626.1726`
Submission type: new App Store build for version `8.1.0`.
## Before Upload
- [x] Source commit frozen: `2c36a4a39da126c30a5a5daedf501229412b2e1a`
- [x] Release tag created: `v8.1.0-build20260626.1726`
- [x] Release directory created under `src/Release/AppStore-8.1.0-20260626.1726`
- [x] Marketing version set to `8.1.0`
- [x] Build set to `20260626.1726`
- [x] `CHANGELOG.md` includes 8.1.0
- [x] CODEGRAPH checked and updated
- [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 package
- [x] AppleDouble `._*` files absent from expanded package
- [x] SHA256 recorded
- [x] ASC metadata draft scanned for SOP forbidden words
- [ ] In-app purchase product `com.taglauncher.pro.lifetime` confirmed in App Store Connect
- [ ] In-app purchase product attached to version `8.1.0`
- [ ] Current App Store baseline / version being replaced confirmed before filling What's New
- [ ] Cumulative changelog range reviewed from the current App Store baseline through `8.1.0`
- [ ] User-visible changes from all intermediate versions considered for What's New
- [ ] Excluded changelog items have explicit reasons: internal QA, build tooling, refactor, or non-user-visible
- [ ] Simplified Chinese and English What's New reviewed by the user before final ASC submission
## Upload With Transporter
1. Open Transporter for macOS.
2. Add this package:
```text
/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg
```
3. Deliver the package.
4. Wait for App Store Connect processing to finish.
5. In App Store Connect, open the TagLauncher macOS version `8.1.0` page.
6. Select build `20260626.1726`.
7. Attach / confirm in-app purchase product `com.taglauncher.pro.lifetime`.
8. If `Missing Compliance` appears, complete the export compliance question and choose `None of the algorithms mentioned above`.
9. Before filling What's New, confirm the current App Store baseline / version being replaced and review the cumulative `CHANGELOG.md` range through `8.1.0`.
10. Fill metadata from `APP_STORE_CONNECT_METADATA.md`, but only after the cumulative What's New copy has been reviewed by the user.
11. Fill review notes from `APP_REVIEW_NOTES.md`.
12. Check both Simplified Chinese and English metadata for forbidden trademark-risk phrases.
13. Add for Review only after user approval of What's New.
14. Submit for Review.
15. Confirm the final status is Waiting for Review / 正在等待审核.
## Do Not Upload
- Do not upload `Archive/TagLauncher-8.1.0-build20260626.1726.dmg`.
- Do not upload any temporary package under `/private/tmp`, `/tmp`, or `/var/folders`.
- Do not leave an older build selected on the App Store Connect version page.
- Do not submit before `com.taglauncher.pro.lifetime` is configured for review.
## 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 whether the in-app purchase product was attached.
- Record the App Store baseline / replaced version used to generate cumulative What's New.
- 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.1.0-20260626.1726/Archive/TagLauncher-8.1.0-build20260626.1726.dmg
Binary files differ
src/Release/AppStore-8.1.0-20260626.1726/PKG_PREFLIGHT_REPORT.md
New file
@@ -0,0 +1,40 @@
# PKG Preflight Report - TagLauncher 8.1.0 build 20260626.1726
Package:
`Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg`
## Signing
| Item | Value |
| --- | --- |
| App signing identity | `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)` |
| Team ID | `CR3J54M8BQ` |
| Profile | `TagLauncher Mac App Store 20260605.2337` |
| Profile expiration | `2027-06-04T13:48:21Z` |
## Expanded Package Checks
| Check | Result |
| --- | --- |
| `pkgutil --expand-full` | PASS |
| `CFBundleIdentifier` | `com.taglauncher.app` |
| `CFBundleShortVersionString` | `8.1.0` |
| `CFBundleVersion` | `20260626.1726` |
| `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 |
| AppleDouble `._*` files | Absent |
## Upload Reminder
Use this file in Transporter:
`/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg`
Do not upload the DMG from `Archive/`.
src/Release/AppStore-8.1.0-20260626.1726/QA_RELEASE_EVIDENCE.md
New file
@@ -0,0 +1,52 @@
# QA Release Evidence - TagLauncher 8.1.0 build 20260626.1726
## Source Freeze
| Item | Result |
| --- | --- |
| Source commit | `2c36a4a39da126c30a5a5daedf501229412b2e1a` |
| Release tag | `v8.1.0-build20260626.1726` |
| Version / build in app bundle | `8.1.0` / `20260626.1726` |
| Minimum macOS | `14.0` |
| CODEGRAPH | Updated and committed |
## QA Commands
| Command | Result |
| --- | --- |
| `bash Scripts/pro_feature_gate_qa.sh` | PASS |
| `bash Scripts/pro_localization_qa.sh` | PASS |
| `bash Scripts/theme_settings_qa.sh` | PASS |
| `bash Scripts/app_ordering_data_qa.sh` | PASS |
| `bash Scripts/appgrid_startup_loading_qa.sh` | PASS |
| `bash Scripts/usage_tips_qa.sh` | PASS |
| `bash Scripts/usage_tips_close_reminder_qa.sh` | PASS |
| `bash Scripts/smart_category_localization_qa.sh` | PASS |
| `bash Scripts/apple_default_note_policy_qa.sh` | PASS |
| `bash Scripts/apple_default_apps_resource_qa.sh` | PASS |
| `bash Scripts/window_logic_qa.sh` | PASS |
| `bash Scripts/macos14_build_metadata_qa.sh` | PASS |
| `bash Scripts/macos14_availability_typecheck_qa.sh` | PASS |
| `bash Scripts/quick_search_app_name_qa.sh` | SKIP/PASS: Sunlogin wrapper fixture not installed; script exited 0 |
## Build Verification
| Check | Result |
| --- | --- |
| `APP_BUILD=20260626.1726 bash build.sh` | PASS |
| `codesign --verify --deep --strict --verbose=2 build/TagLauncher.app` | PASS |
| `spctl --assess --type execute --verbose=4 build/TagLauncher.app` | Local ad-hoc build rejected by Gatekeeper; expected for non-notarized local DMG |
| `hdiutil verify build/TagLauncher-8.1.0-build20260626.1726.dmg` | PASS |
| Mounted DMG contains `TagLauncher.app` | PASS |
| Mounted DMG contains `Applications -> /Applications` symlink | PASS |
| `pkgutil --check-signature build/AppStore/TagLauncher-8.1.0-build20260626.1726.pkg` | PASS |
| Expanded PKG bundle id/version/build | PASS: `com.taglauncher.app`, `8.1.0`, `20260626.1726` |
| Expanded PKG embedded provisioning profile | PASS |
| Expanded PKG sandbox entitlements | PASS |
| Expanded PKG quarantine xattr absent | PASS |
| Expanded PKG AppleDouble files absent | PASS |
## Notes
- Pro translation QA intentionally uses static completeness and fallback checks only; no `translategemma` / Ollama call is used in this release.
- The App Store package uses the Mac App Store signing path. Upload `Upload/*.pkg`; keep `Archive/*.dmg` only for local install and rollback.
src/Release/AppStore-8.1.0-20260626.1726/README.md
New file
@@ -0,0 +1,29 @@
# TagLauncher 8.1.0 build 20260626.1726 Release Pack
This directory contains the App Store release materials for TagLauncher `8.1.0` build `20260626.1726`.
## Upload Artifact
Upload this file with Transporter:
`/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg`
## Local Rollback Artifact
Use this file for local install / rollback testing only:
`/Users/ar/Projects/Taglauncher/src/Release/AppStore-8.1.0-20260626.1726/Archive/TagLauncher-8.1.0-build20260626.1726.dmg`
## Fixed Source Point
- Commit: `2c36a4a39da126c30a5a5daedf501229412b2e1a`
- Tag: `v8.1.0-build20260626.1726`
## Documents
- `RELEASE_MANIFEST.md`: build identity, artifacts, hashes, commands, scope.
- `QA_RELEASE_EVIDENCE.md`: QA and package verification evidence.
- `PKG_PREFLIGHT_REPORT.md`: expanded package signing and entitlement checks.
- `APP_STORE_CONNECT_METADATA.md`: metadata draft and What's New starter copy.
- `APP_REVIEW_NOTES.md`: review notes in English and Simplified Chinese.
- `APP_STORE_RELEASE_CHECKLIST.md`: Transporter / App Store Connect checklist.
src/Release/AppStore-8.1.0-20260626.1726/RELEASE_MANIFEST.md
New file
@@ -0,0 +1,89 @@
# Release Manifest - TagLauncher 8.1.0 build 20260626.1726
## Identity
- Product: TagLauncher
- Version: `8.1.0`
- Build: `20260626.1726`
- Bundle ID: `com.taglauncher.app`
- Minimum macOS: `14.0`
- Category: `public.app-category.utilities`
- Generated at: `2026-06-26 18:03 CST`
- Branch: `codex/appgrid-usage-tips`
- Source commit: `2c36a4a39da126c30a5a5daedf501229412b2e1a`
- Release tag: `v8.1.0-build20260626.1726`
- CODEGRAPH status: checked and updated in source commit `2c36a4a`.
## Artifacts
- Local rollback DMG: `Release/AppStore-8.1.0-20260626.1726/Archive/TagLauncher-8.1.0-build20260626.1726.dmg`
- App Store upload PKG: `Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg`
- DMG SHA256: `346fc3c9bd0fcdb346d3f4ca83ffa46b34d3a5187155253d5dae7d999c39060f`
- PKG SHA256: `32de0ef0af979b2a35d60c2b1bca7461292db86781e4c64e694128470ddde264`
- App binary SHA256: `710073b46e176ce6224f5acfaca4e0e5d86b286355fc0bef335cab0d69f02884`
- DMG size: `6241554` bytes
- PKG size: `6011051` bytes
## Build Commands
```bash
cd /Users/ar/Projects/Taglauncher/src
APP_BUILD=20260626.1726 bash build.sh
bash make_dmg.sh
cp build/TagLauncher.dmg build/TagLauncher-8.1.0-build20260626.1726.dmg
```
## App Store Package Commands
```bash
cd /Users/ar/Projects/Taglauncher/src
PROFILE="$HOME/Library/MobileDevice/Provisioning Profiles/TagLauncher_Mac_App_Store_202606052337.provisionprofile"
APP_IDENTITY="0D7D5484FDE4EC1CA2C9225F1E71E65A256A1E7C"
INSTALLER_IDENTITY="3rd Party Mac Developer Installer: Hainan Wanxing Technology Co., Ltd. (CR3J54M8BQ)"
# Copy build/TagLauncher.app to a temporary staging directory, embed the profile,
# clear xattrs, sign with runtime + sandbox entitlements, then productbuild.
productbuild --component /tmp/.../stage/TagLauncher.app /Applications \
  --sign "$INSTALLER_IDENTITY" \
  build/AppStore/TagLauncher-8.1.0-build20260626.1726.pkg
```
The staged App Store app was signed with:
- `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`
- `keychain-access-groups = [CR3J54M8BQ.*]`
## Verification Commands
```bash
bash Scripts/pro_feature_gate_qa.sh
bash Scripts/pro_localization_qa.sh
bash Scripts/macos14_build_metadata_qa.sh
bash Scripts/macos14_availability_typecheck_qa.sh
codesign --verify --deep --strict --verbose=2 build/TagLauncher.app
hdiutil verify build/TagLauncher-8.1.0-build20260626.1726.dmg
hdiutil attach -readonly -nobrowse build/TagLauncher-8.1.0-build20260626.1726.dmg
pkgutil --check-signature build/AppStore/TagLauncher-8.1.0-build20260626.1726.pkg
pkgutil --expand-full build/AppStore/TagLauncher-8.1.0-build20260626.1726.pkg /tmp/taglauncher-pkg-preflight-8.1.0-180303
codesign --verify --deep --strict --verbose=2 /tmp/taglauncher-pkg-preflight-8.1.0-180303/com.taglauncher.app.pkg/Payload/TagLauncher.app
```
## Release Scope
- Adds the Free + Pro unlock model for TagLauncher.
- Keeps core local tagging, app launching, Quick Search, default themes, Deep Blue, and Black available for free users.
- Locks premium themes, layout import/export, unlimited custom notes, and persistent app sorting behind Pro.
- Adds StoreKit 2 purchase, restore, transaction update listening, offline entitlement cache, and legacy paid-user unlock.
- Protects free previews from dirtying real user data: premium theme previews do not persist, free sorting previews do not write container order, blocked notes do not mutate stored notes, and import/export is gated before file reads or writes.
- Adds 29-language Pro copy and static QA for Pro localization and feature gates.
## App Store Upload
- Upload `Upload/TagLauncher-8.1.0-build20260626.1726.pkg`, not the DMG in `Archive/`.
- Confirm the non-consumable in-app purchase product `com.taglauncher.pro.lifetime` exists in App Store Connect and is associated with version `8.1.0`.
- If `Missing Compliance` appears, answer the encryption question with `None of the algorithms mentioned above`.
- Before filling What's New, confirm the current App Store baseline / replaced build and review cumulative changelog entries through `8.1.0`.
src/Release/AppStore-8.1.0-20260626.1726/SHA256SUMS.txt
New file
@@ -0,0 +1,2 @@
346fc3c9bd0fcdb346d3f4ca83ffa46b34d3a5187155253d5dae7d999c39060f  Archive/TagLauncher-8.1.0-build20260626.1726.dmg
32de0ef0af979b2a35d60c2b1bca7461292db86781e4c64e694128470ddde264  Upload/TagLauncher-8.1.0-build20260626.1726.pkg
src/Release/AppStore-8.1.0-20260626.1726/Upload/TagLauncher-8.1.0-build20260626.1726.pkg
Binary files differ