From 6dea81ebd24bcdb3c62ff8d2251a2670cb8b64c5 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 07 Jun 2026 01:13:34 +0800
Subject: [PATCH] Freeze TagLauncher 7.8.15 source recovery
---
Release/AppStore-7.8.15-20260605.2337/APP_STORE_ASSET_INVENTORY.md | 33 +
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png | 0
Apptag/ApptagApp.swift | 8
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png | 0
Release/APP_STORE_RELEASE_MANUAL_TODO.md | 388 +++++++++++++++++++
Apptag/Info.plist | 4
Release/AppStore-7.8.15-20260605.2337/QA_RELEASE_EVIDENCE.md | 32 +
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png | 0
Release/AppStore-7.8.15-20260605.2337/Assets/TagLauncher-AppIcon-1024.png | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png | 0
Release/AppStore-7.8.15-20260605.2337/RELEASE_MANIFEST.md | 45 ++
Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-16x9.jpg | 0
Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-2880x1800.jpg | 0
Release/AppStore-7.8.15-20260605.2337/Upload/.gitkeep | 0
Release/AppStore-7.8.15-20260605.2337/README.md | 74 +++
Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.zh-Hans.md | 11
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png | 0
Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.md | 11
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png | 0
Release/AppStore-7.8.15-20260605.2337/BUILD_SIGN_UPLOAD.md | 32 +
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png | 0
Release/AppStore-7.8.15-20260605.2337/APP_STORE_RELEASE_CHECKLIST.md | 23 +
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png | 0
Release/AppStore-7.8.15-20260605.2337/APP_STORE_CONNECT_METADATA.md | 71 +++
Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png | 0
Release/AppStore-7.8.15-20260605.2337/SHA256SUMS.txt | 1
CHANGELOG.md | 6
Release/AppStore-7.8.15-20260605.2337/Review/APP_REVIEW_NOTES.md | 24 +
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png | 0
Release/AppStore-7.8.15-20260605.2337/FIRST_TIME_MAC_APP_STORE_TODO.md | 15
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png | 0
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep | 0
Release/AppStore-7.8.15-20260605.2337/Submitted/.gitkeep | 0
Release/AppStore-7.8.15-20260605.2337/APP_STORE_MARKETING_AND_METADATA.md | 325 ++++++++++++++++
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png | 0
Apptag/ContentView.swift | 10
Release/AppStore-7.8.15-20260605.2337/Support/SUPPORT.md | 25 +
Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md | 26 +
43 files changed, 1,160 insertions(+), 4 deletions(-)
diff --git a/Apptag/ApptagApp.swift b/Apptag/ApptagApp.swift
index a70b9e2..b26b6f7 100644
--- a/Apptag/ApptagApp.swift
+++ b/Apptag/ApptagApp.swift
@@ -210,6 +210,14 @@
setupLaunchAtLogin()
suppressReopenUntil = Date().addingTimeInterval(1.0)
configureApplicationMenuWhenAvailable(retries: 200)
+ warmAppIndexInBackground()
+ }
+
+ /// Pre-scan application folders so the first App Grid open can hydrate from cache quickly.
+ private func warmAppIndexInBackground() {
+ DispatchQueue.global(qos: .utility).async {
+ _ = AppIndexer.scan(useCache: true)
+ }
}
func applicationDidBecomeActive(_ notification: Notification) {
diff --git a/Apptag/ContentView.swift b/Apptag/ContentView.swift
index 59964a3..b9cd83f 100644
--- a/Apptag/ContentView.swift
+++ b/Apptag/ContentView.swift
@@ -1814,12 +1814,18 @@
}
private func refreshAppsForOverlay() {
- guard AppIndexer.shouldRefreshForSearchPathChanges() else { return }
+ // Each overlay show creates a fresh ContentView with empty `allApps`. The indexer
+ // cache may still be warm from a prior overlay/settings scan, so path-signature
+ // alone must not skip the first hydrate or the grid spinner never clears.
+ guard allApps.isEmpty || AppIndexer.shouldRefreshForSearchPathChanges() else { return }
refreshApps()
}
private func refreshAppsForQuickSearch() {
- guard AppIndexer.shouldRefreshForSearchPathChanges() else { return }
+ guard allApps.isEmpty
+ || quickSearchDocuments.isEmpty
+ || AppIndexer.shouldRefreshForSearchPathChanges()
+ else { return }
refreshApps()
}
diff --git a/Apptag/Info.plist b/Apptag/Info.plist
index 9633589..d1738b0 100644
--- a/Apptag/Info.plist
+++ b/Apptag/Info.plist
@@ -19,9 +19,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>7.8.14</string>
+ <string>7.8.15</string>
<key>CFBundleVersion</key>
- <string>20260605.0150</string>
+ <string>20260605.2337</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>LSMinimumSystemVersion</key>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8b7b06d..44456e0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# TagLauncher Changelog
+## [7.8.15] — 2026-06-05
+
+- 修复 App Grid 再次打开时可能一直转圈、无法显示应用图标的问题:overlay 每次新建 `ContentView` 时,即使应用索引缓存仍有效也会先 hydrate 界面数据
+- 应用启动后在后台预热应用索引,减轻首次打开 App Grid 的等待时间
+- 版本号更新为 `7.8.15`,Build 更新为 `20260605.2337`(2332 为同版本首次构建)
+
## [7.8.14] — 2026-06-05
- 修复 Quick Search 和 App Grid 没有扫描 `/System/Library/CoreServices/Applications`,导致“钥匙串访问 / Keychain Access”等系统应用无法被检索和启动的问题
diff --git a/Release/APP_STORE_RELEASE_MANUAL_TODO.md b/Release/APP_STORE_RELEASE_MANUAL_TODO.md
new file mode 100644
index 0000000..276b02c
--- /dev/null
+++ b/Release/APP_STORE_RELEASE_MANUAL_TODO.md
@@ -0,0 +1,388 @@
+# Mac App Store 发布手工 TODO
+
+适用版本:
+
+- App:TagLauncher
+- Version:`7.6.0`
+- 冻结 Build:`20260527.0124`
+- 冻结 Git tag:`appstore-7.6.0-20260527.0124`
+- 发布资料目录:`Release/AppStore-7.6.0-20260527.0124`
+
+这份清单面向第一次去 Mac App Store 发布。重点列出你需要在 Apple Developer / App Store Connect / GitHub 网页里手工完成的事项,以及容易成为卡点的地方。
+
+## 0. 先明确一个原则
+
+- [ ] 不要上传 `build/TagLauncher.dmg` 到 App Store Connect。DMG 只是本地留档和自测安装包。
+- [ ] App Store Connect 需要的是经过 Mac App Store 签名和上传流程处理的 build,通常通过 Xcode Organizer、Transporter,或签名后的 `.pkg` 上传。
+- [ ] 当前发布冻结点以 Git tag 为准:`appstore-7.6.0-20260527.0124`。
+- [ ] 如果 App Store 上传失败后需要重新传包,每次重新上传都必须增加 `CFBundleVersion`。Version 可以仍然是 `7.6.0`,但 Build 号要递增。
+
+## 1. Apple 账号和权限
+
+- [ ] 确认 Apple Developer Program 会员是有效状态。
+- [ ] 登录 App Store Connect:`https://appstoreconnect.apple.com/`
+- [ ] 确认你登录的是 Account Holder,或者至少有 Admin / App Manager 权限。
+- [ ] 进入 `Business / Agreements, Tax, and Banking`,确认没有待签署协议。
+- [ ] 如果只发布免费 App:一般不需要先完成 Paid Apps Agreement。
+- [ ] 如果未来要收费、内购、订阅:需要签 Paid Apps Agreement,并填写税务和银行信息。
+
+容易卡点:
+
+- 账号如果有协议待处理,可能无法提交或无法上架。
+- 如果你选择收费,税务/银行信息可能需要较长时间审核。
+- 个人开发者账号可能会显示你的个人开发者名称;公司账号会显示公司/组织名称。
+
+## 2. 身份、税务、银行信息
+
+你问到“用户协议是不是要填写我的个人身份证”。这里要分开看:
+
+- [ ] 隐私政策 / 用户协议本身通常不需要写身份证号。
+- [ ] 隐私政策里需要写清楚开发者/联系邮箱/数据处理方式。
+- [ ] Apple Developer 账号注册、协议、收款、税务、银行信息,可能要求填写真实姓名、地址、税务身份信息、银行账户信息。
+- [ ] 如果是中国大陆个人开发者,具体是否要身份证、税号、银行账户名,以 App Store Connect 当前表单为准。
+- [ ] 如果是免费 App 且不收款,税务/银行压力会小很多;但 Apple 仍可能要求账号资料完整。
+
+建议你准备:
+
+- [ ] Apple ID 登录信息和双重认证设备。
+- [ ] 真实姓名或开发者主体名称。
+- [ ] 联系邮箱:建议使用 `shanghai3168@gmail.com` 或你准备公开作为支持邮箱的地址。
+- [ ] 联系地址。
+- [ ] 如果要收费:银行卡信息、税务身份信息、可能需要的身份证/证件信息。
+- [ ] 如果是公司主体:营业执照/公司英文名/D-U-N-S 等资料可能会用到。
+
+不要放进公开网页:
+
+- 身份证号
+- 银行卡号
+- 家庭详细地址
+- Apple ID 密码
+- App-specific password
+- 证书私钥
+- provisioning profile 私密文件
+
+## 3. GitHub 上发布隐私政策和支持页面
+
+App Store Connect 需要公开可访问的 URL。建议用你的 GitHub 仓库发布。
+
+仓库建议:
+
+- [ ] 使用公开仓库,例如:`https://github.com/shanghai3168/taglauncher`
+- [ ] 开启 GitHub Pages。
+- [ ] 放至少两个公开页面:
+ - Privacy Policy:隐私政策
+ - Support:支持页面
+
+当前已有草稿:
+
+- `Release/AppStore-7.6.0-20260527.0124/Legal/PRIVACY_POLICY.md`
+- `Release/AppStore-7.6.0-20260527.0124/Legal/PRIVACY_POLICY.zh-Hans.md`
+- `Release/AppStore-7.6.0-20260527.0124/Support/SUPPORT.md`
+- `Release/AppStore-7.6.0-20260527.0124/Support/GITHUB_PAGES_PUBLICATION_GUIDE.md`
+
+手工操作:
+
+- [ ] 把隐私政策英文版发布成一个公网 URL。
+- [ ] 把中文隐私政策也可以发布,但 App Store Connect 至少要填一个 Privacy Policy URL。
+- [ ] 把支持页面发布成一个公网 URL。
+- [ ] 用浏览器无痕窗口打开这两个 URL,确认不需要登录 GitHub 也能访问。
+- [ ] 在 App Store Connect 填:
+ - Privacy Policy URL
+ - Support URL
+
+隐私政策内容必须覆盖:
+
+- [ ] TagLauncher 是否收集个人信息。
+- [ ] 是否有网络上传。
+- [ ] 是否有 analytics / tracking / ads。
+- [ ] 是否把数据卖给第三方。
+- [ ] 应用扫描本机已安装 App 的用途。
+- [ ] 标签、备注、设置保存在哪里。
+- [ ] 用户如何联系你。
+- [ ] 生效日期。
+
+容易卡点:
+
+- Apple 要求所有 App 都有 Privacy Policy URL。
+- URL 不能是本地文件,不能需要登录,不能是未公开 GitHub private 页面。
+- App Privacy 问卷和隐私政策内容要一致。
+
+## 4. App Privacy 问卷
+
+初步判断 TagLauncher 当前更接近:
+
+- 不使用广告 SDK。
+- 不使用 analytics SDK。
+- 不做 tracking。
+- 不上传用户数据到服务器。
+- 标签、设置、备注主要本地保存。
+- 会在本机扫描已安装 App,用于生成启动器列表。
+
+你在 App Store Connect 手工填写时要逐项确认:
+
+- [ ] 是否收集 Contact Info:通常选 No,除非你在 App 内收集邮箱/姓名。
+- [ ] 是否收集 Identifiers:通常选 No,除非集成 analytics / ads / account。
+- [ ] 是否收集 Usage Data:通常选 No,除非有统计/遥测。
+- [ ] 是否收集 Diagnostics:通常选 No,除非接入 crash reporting SDK。
+- [ ] 是否收集 User Content:通常选 No,App 本地备注如果不上传,一般不算收集到开发者服务器。
+- [ ] 是否用于 Tracking:当前应为 No。
+- [ ] 是否数据链接到用户身份:当前应为 No。
+
+容易卡点:
+
+- 如果以后加入第三方 SDK,要重新审查 App Privacy。
+- App Privacy 是自我声明,Apple 审核可能会对照二进制和行为检查。
+- 隐私政策 URL 和 App Privacy 问卷不一致,可能导致审核问题。
+
+## 5. App Store Connect 创建 App 记录
+
+手工填写:
+
+- [ ] Platform:`macOS`
+- [ ] Name:`TagLauncher`
+- [ ] Primary Language:建议 `English (U.S.)`,如果你主要面向中文用户,也可以选 Simplified Chinese。
+- [ ] Bundle ID:`com.taglauncher.app`
+- [ ] SKU:例如 `taglauncher-macos`
+- [ ] Category:`Utilities`
+- [ ] Version:`7.6.0`
+- [ ] Release option:建议选 `Manual release after approval`,审核通过后你再手工发布。
+
+容易卡点:
+
+- App 名称如果已被占用,需要换名字或处理品牌问题。
+- Bundle ID 一旦关联 App 记录,后续不能随便换。
+- Primary Language 会影响默认展示语言。
+
+## 6. App 信息和文案
+
+可从这里复制草稿:
+
+- `Release/AppStore-7.6.0-20260527.0124/APP_STORE_CONNECT_METADATA.md`
+
+手工填写:
+
+- [ ] App Name:`TagLauncher`
+- [ ] Subtitle:建议英文 `Tag-based app launcher`
+- [ ] Description:复制英文描述,或再润色。
+- [ ] Keywords:英文关键词不要超过限制。
+- [ ] Support URL:填 GitHub Pages 支持页。
+- [ ] Privacy Policy URL:填 GitHub Pages 隐私政策页。
+- [ ] Marketing URL:可空。
+- [ ] Copyright:例如 `© 2026 [你的姓名或开发者名称]`
+- [ ] Contact 信息:填写 App Review 能联系到你的邮箱/电话。
+
+容易卡点:
+
+- 文案不要承诺不存在的功能。
+- 截图里展示的功能必须和实际 App 一致。
+- 支持邮箱最好和隐私政策里的邮箱一致。
+
+## 7. 截图准备
+
+Apple 对 Mac App 截图有固定尺寸要求。Mac 截图需要 16:10,常见可接受尺寸包括:
+
+- `1280 x 800`
+- `1440 x 900`
+- `2560 x 1600`
+- `2880 x 1800`
+
+建议准备 5 张:
+
+- [ ] `01-app-grid.png`:主界面 App Grid,展示多个标签分组。
+- [ ] `02-quick-search.png`:Quick Search,展示输入和选中条。
+- [ ] `03-settings-general.png`:设置页,展示通用/布局/语言。
+- [ ] `04-hotkeys.png`:快捷键设置或说明 Quick Search 工作方式。
+- [ ] `05-about-help.png`:关于页或 Help PDF 下载入口,强调多语言帮助。
+
+截图注意:
+
+- [ ] 不显示私人聊天、私人文件名、账号、浏览器敏感页面。
+- [ ] 不显示未授权品牌素材。
+- [ ] 不显示明显测试数据、红色标注、调试窗口。
+- [ ] 尽量统一语言。若主 App Store 页面英文,就截图英文 UI;如果要中国区本地化,再准备中文截图。
+- [ ] 截图必须真实反映 App,不要做虚假功能图。
+
+截图存放建议:
+
+- 原图:`Release/AppStore-7.6.0-20260527.0124/Screenshots/raw/`
+- 最终上传图:`Release/AppStore-7.6.0-20260527.0124/Screenshots/AppStore/`
+
+可选 resize 命令:
+
+```bash
+mkdir -p Release/AppStore-7.6.0-20260527.0124/Screenshots/AppStore
+for file in Release/AppStore-7.6.0-20260527.0124/Screenshots/raw/*.png; do
+ name="$(basename "$file")"
+ sips -z 1800 2880 "$file" --out "Release/AppStore-7.6.0-20260527.0124/Screenshots/AppStore/$name"
+done
+```
+
+## 8. 是否需要视频录屏 / App Preview
+
+结论:
+
+- [ ] 不必须。
+- [ ] 第一次发布建议先不做视频,除非你已经有非常干净、专业、无隐私信息的录屏。
+- [ ] 如果做视频,重点展示 15-30 秒核心流程:打开 App Grid、Quick Search、设置/帮助。
+
+视频容易卡点:
+
+- 尺寸、编码、时长、设备类型要求更严格。
+- 容易露出私人桌面、通知、账号、浏览器标签。
+- 审核会按视频里展示的功能理解 App,如果视频显示了 App 没有的能力,可能引发问题。
+
+建议:
+
+- 第一版先用 3-5 张高质量截图,不上传 App Preview。
+- 审核通过后,后续版本再考虑做视频。
+
+## 9. 年龄分级、内容权利、加密合规
+
+手工填写:
+
+- [ ] Age Rating:按工具类 App 正常回答;没有暴力、色情、赌博、用户生成公开内容。
+- [ ] Content Rights:确认截图、图标、文案、帮助 PDF 都是你有权使用的内容。
+- [ ] Export Compliance / Encryption:
+ - 如果 App 只使用 Apple 系统 HTTPS/网络能力打开帮助 PDF,通常按 Apple 表单如实选择。
+ - 如果没有自研加密、VPN、加密通信功能,通常不会走复杂加密文件上传。
+ - 最终答案以 App Store Connect 当前问题为准。
+
+容易卡点:
+
+- 不确定加密问题时不要乱选“有复杂加密”。先看表单说明。
+- 如果 App 内未来加入账号登录、云同步、VPN、代理、加密通信,要重新审查。
+
+## 10. 签名、证书、上传包
+
+当前本地 DMG:
+
+- `Release/AppStore-7.6.0-20260527.0124/Archive/TagLauncher-7.6.0-20260527.0124-local-QA.dmg`
+
+它不是 App Store 上传包。
+
+你需要准备:
+
+- [ ] Mac App Distribution / Apple Distribution 证书。
+- [ ] Mac Installer Distribution 证书,如果用 `.pkg` 上传。
+- [ ] Mac App Store provisioning profile,Bundle ID 是 `com.taglauncher.app`。
+- [ ] App Sandbox entitlements 确认开启。
+- [ ] 使用 Xcode Organizer / Transporter / CLI 上传。
+
+当前项目已有说明:
+
+- `Release/AppStore-7.6.0-20260527.0124/BUILD_SIGN_UPLOAD.md`
+
+容易卡点:
+
+- 普通 ad-hoc 签名包不能直接上传 App Store。
+- 每次上传失败重试,Build 号要增加。
+- 证书过期、profile 不匹配、Bundle ID 不一致都会导致上传失败。
+- Mac App Store 一般要求 sandbox。
+
+## 11. App Review Notes
+
+从这里复制:
+
+- `Release/AppStore-7.6.0-20260527.0124/Review/APP_REVIEW_NOTES.md`
+
+建议在 App Review Notes 里写:
+
+- [ ] 这是 macOS 应用启动器。
+- [ ] 主流程:启动 App -> `Option-Shift-Space` 打开 App Grid -> 按 `Space` 打开 Quick Search。
+- [ ] `Escape` 一次关闭 Quick Search,再按一次关闭 App Grid。
+- [ ] 全屏/Split View 下 App Grid、Quick Search、Settings 会保持在当前 Space。
+- [ ] 不需要 demo account。
+- [ ] 如果审核员无法触发快捷键,请让他从菜单栏打开 App Grid。
+
+容易卡点:
+
+- 审核员不知道快捷键,会误以为 App 没反应。
+- App 的浮层窗口行为比较特殊,要在 notes 里说明这是预期功能。
+- 如果 App 请求权限,说明权限用途。
+
+## 12. TestFlight / 自测
+
+建议:
+
+- [ ] 上传后先等 App Store Connect 处理完成。
+- [ ] 如果可以,先用 TestFlight 或处理后的 build 做一次安装测试。
+- [ ] 检查首次启动。
+- [ ] 检查全局快捷键。
+- [ ] 检查 App Grid。
+- [ ] 检查 Quick Search 上下键和 Return。
+- [ ] 检查 Settings。
+- [ ] 检查 Help PDF 链接。
+- [ ] 检查退出和重新打开。
+
+## 13. 提交审核前最后检查
+
+- [ ] App Store Connect 每个页面都没有红色缺失提示。
+- [ ] Build 已经处理完成并已选中。
+- [ ] 版本号是 `7.6.0`。
+- [ ] Build 号是你最终上传的 build。
+- [ ] Privacy Policy URL 能公开打开。
+- [ ] Support URL 能公开打开。
+- [ ] App Privacy 问卷已提交。
+- [ ] 截图尺寸正确。
+- [ ] App Review Notes 已填。
+- [ ] 联系电话/邮箱可用。
+- [ ] 选择 `Manual release after approval`。
+- [ ] 点 `Submit for Review`。
+
+## 14. 审核中和审核后
+
+- [ ] 留意邮箱和 App Store Connect 消息。
+- [ ] 如果被拒,先不要急着改代码,把拒绝原因复制保存到:
+ `Release/AppStore-7.6.0-20260527.0124/Review/`
+- [ ] 如果只是元数据问题,优先在 App Store Connect 改文案/截图/说明。
+- [ ] 如果是二进制问题,再改代码并增加 Build 号重新上传。
+- [ ] 审核通过后,不建议立刻自动发布;先确认页面、截图、隐私信息无误,再手工发布。
+
+## 15. 公开资料不要遗漏
+
+必须:
+
+- [ ] Privacy Policy URL
+- [ ] Support URL
+- [ ] App screenshots
+- [ ] App Privacy questionnaire
+- [ ] App Review contact
+- [ ] App Review notes
+- [ ] Age rating
+- [ ] Export compliance
+- [ ] Pricing and availability
+
+可选:
+
+- [ ] Marketing URL
+- [ ] App Preview 视频
+- [ ] 更多本地化语言的 App Store 页面
+- [ ] GitHub README 产品介绍页
+
+## 16. 本项目当前发布文件索引
+
+- 发布包:`Release/AppStore-7.6.0-20260527.0124/`
+- 发布包 README:`Release/AppStore-7.6.0-20260527.0124/README.md`
+- App Store 文案:`Release/AppStore-7.6.0-20260527.0124/APP_STORE_CONNECT_METADATA.md`
+- 首次提交 checklist:`Release/AppStore-7.6.0-20260527.0124/FIRST_TIME_MAC_APP_STORE_TODO.md`
+- 签名上传说明:`Release/AppStore-7.6.0-20260527.0124/BUILD_SIGN_UPLOAD.md`
+- 审核 notes:`Release/AppStore-7.6.0-20260527.0124/Review/APP_REVIEW_NOTES.md`
+- 隐私政策:`Release/AppStore-7.6.0-20260527.0124/Legal/PRIVACY_POLICY.md`
+- 中文隐私政策:`Release/AppStore-7.6.0-20260527.0124/Legal/PRIVACY_POLICY.zh-Hans.md`
+- 支持页面:`Release/AppStore-7.6.0-20260527.0124/Support/SUPPORT.md`
+- GitHub Pages 指南:`Release/AppStore-7.6.0-20260527.0124/Support/GITHUB_PAGES_PUBLICATION_GUIDE.md`
+- 截图指南:`Release/AppStore-7.6.0-20260527.0124/Screenshots/SCREENSHOT_SHOT_LIST.md`
+- 本地 QA DMG:`Release/AppStore-7.6.0-20260527.0124/Archive/TagLauncher-7.6.0-20260527.0124-local-QA.dmg`
+
+## 17. 官方参考链接
+
+- App Store Connect:https://appstoreconnect.apple.com/
+- Apple Developer 账号:https://developer.apple.com/account/
+- Screenshot specifications:https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications
+- App Privacy Details:https://developer.apple.com/app-store/app-privacy-details/
+- App Privacy reference:https://developer.apple.com/help/app-store-connect/reference/app-privacy/
+- Manage App Privacy:https://developer.apple.com/help/app-store-connect/manage-app-information/manage-app-privacy
+- Agreements, Tax, and Banking:https://developer.apple.com/help/app-store-connect/manage-agreements/sign-and-update-agreements/
+- Tax information:https://developer.apple.com/help/app-store-connect/manage-tax-information/provide-tax-information
+- App Review Guidelines:https://developer.apple.com/app-store/review/guidelines
+
diff --git a/Release/AppStore-7.8.15-20260605.2337/APP_STORE_ASSET_INVENTORY.md b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_ASSET_INVENTORY.md
new file mode 100644
index 0000000..c3e0d08
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_ASSET_INVENTORY.md
@@ -0,0 +1,33 @@
+# App Store Asset Inventory
+
+## Icon
+
+- `Assets/TagLauncher-AppIcon-1024.png`
+
+## Screenshots
+
+- Upload candidates: `Screenshots/AppStore/`
+- Count: 8
+- Size: 2880 x 1800
+- Format: PNG
+
+## Raw Screenshots
+
+- Raw source files: `Screenshots/raw/`
+- Count: 8
+- Size: 3420 x 2224
+
+The App Store candidates were generated from the raw screenshots and are already in an accepted Mac screenshot size.
+
+## 3D promotional hero (no UI text)
+
+Pure CGI marketing art for website OG image, social banners, or optional App Store feature graphics. No interface copy.
+
+| File | Size | Use |
+|------|------|-----|
+| `Marketing/taglauncher-hero-3d-promo-2880x1800.jpg` | 2880 x 1800 | Mac App Store–compatible 16:9; GitHub Pages OG |
+| `Marketing/taglauncher-hero-3d-promo-16x9.jpg` | 1408 x 768 | Lighter web embed |
+
+Visual metaphors: app grid + rainbow tag stack (matches icon), glass grid panel, memo speech bubble, `{ }` backup cube.
+
+Also published at `publish-website/docs/assets/` (same filenames).
diff --git a/Release/AppStore-7.8.15-20260605.2337/APP_STORE_CONNECT_METADATA.md b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_CONNECT_METADATA.md
new file mode 100644
index 0000000..c4275b2
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_CONNECT_METADATA.md
@@ -0,0 +1,71 @@
+# App Store Connect Metadata Draft
+
+## App Information
+
+- Name: `TagLauncher`
+- Bundle ID: `com.taglauncher.app`
+- SKU: `taglauncher-macos`
+- Category: `Utilities`
+- Version: `7.8.15`
+- Build: `20260605.2337`
+- Minimum macOS: `15.0`
+
+## Subtitle Options
+
+- `Tag-based app launcher`
+- `Launch apps by tag`
+- `标签化应用启动器`
+
+## Description Draft
+
+TagLauncher is a fast tag-based launcher for Mac apps.
+
+Organize installed apps into visual tag groups, open a fullscreen-friendly app grid from a global hotkey, and jump directly to apps with Quick Search. It is designed for people who have many apps and want a calmer, faster way to find the right one without hunting through Launchpad, Finder, or the Dock.
+
+Highlights:
+
+- Open the app grid with Option-Shift-Space.
+- Search apps, tags, and notes with Quick Search.
+- Group apps by custom tags.
+- Tune icon size, tag position, app list style, and Dock visibility.
+- Import and export your category layout.
+- Works across multiple displays and fullscreen Spaces.
+
+## Chinese Description Draft
+
+TagLauncher 是一个基于标签的 Mac 应用启动器。
+
+你可以把已安装的应用整理成可视化标签分组,用全局快捷键唤出应用网格,也可以通过 Quick Search 直接搜索应用、标签和备注。它适合安装了很多应用、希望更快找到目标应用的人。
+
+亮点:
+
+- 使用 Option-Shift-Space 打开应用网格。
+- 使用 Quick Search 搜索应用、标签和备注。
+- 用自定义标签整理应用。
+- 可调整图标大小、标签位置、列表样式和 Dock 显示。
+- 支持分类布局的导入和导出。
+- 支持多显示器和全屏 Space 场景。
+
+## Keywords
+
+English:
+
+`launcher,tags,apps,productivity,quick search,utility,mac`
+
+Simplified Chinese:
+
+`启动器,标签,应用,效率,搜索,工具,Mac`
+
+## What's New
+
+Version 7.8.15:
+
+- Fixed an issue where the App Grid could show an endless loading spinner when reopened.
+- Improved first-open responsiveness by warming the local app index in the background at launch.
+- Includes the 7.8.14 fix for Apple system apps under CoreServices Applications, including Keychain Access.
+
+中文:
+
+- 修复再次打开 App Grid 时可能一直转圈、无法显示应用图标的问题。
+- 应用启动后在后台预热应用索引,减轻首次打开 App Grid 的等待。
+- 继续包含 7.8.14 对 CoreServices Applications 下系统应用(如钥匙串访问)的检索支持。
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/APP_STORE_MARKETING_AND_METADATA.md b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_MARKETING_AND_METADATA.md
new file mode 100644
index 0000000..1bf6be1
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_MARKETING_AND_METADATA.md
@@ -0,0 +1,325 @@
+# TagLauncher 7.8.15 App Store 上架文案与卖点手册
+
+生成日期:2026-06-05
+适用版本:**7.8.15** / Build **20260605.2337**
+用途:App Store Connect 填写、审核沟通、官网/支持页引用。
+
+---
+
+## 一、产品一句话定位
+
+**中文:** TagLauncher 是用「标签」而不是「文件夹」管理 Mac 应用的启动器——一屏浏览、多标签归类、可写备忘、布局可备份,用快捷键比 Launchpad 更快找到应用。
+
+**English:** TagLauncher is a tag-based Mac app launcher: browse apps on one scrollable grid, assign multiple tags, add notes, back up your layout, and open apps faster than Launchpad with global hotkeys.
+
+---
+
+## 二、相对 macOS Launchpad 的核心优势(上架重点)
+
+你关心的四点,加上产品本身能力,建议对外统一成下面这张对比表(审核备注、描述、官网都能用)。
+
+| 维度 | macOS Launchpad | TagLauncher |
+|------|-----------------|-------------|
+| **浏览方式** | 分页翻屏,一屏只能看一部分图标 | **可滚动的大网格**,连续浏览,减少「找图标在哪一页」的心智负担 |
+| **归类逻辑** | 主要靠**文件夹**,一个 App 通常只能放进一个文件夹 | **标签(Tag)**:同一 App 可同时属于多个标签(如「设计」+「办公」) |
+| **备忘说明** | 几乎无法给单个 App 写用途说明 | 支持 **App 用途备忘**,Quick Search 也能搜到备注 |
+| **布局备份** | 用户布局难以导出、迁移、恢复 | **一键导出/导入 JSON**,换机或重装后可恢复分类与布局 |
+| **启动方式** | 手势或 F4,与全屏/多桌面体验一般 | **全局快捷键**(默认 Option-Shift-Space)+ **Quick Search**(Fn+Space) |
+| **搜索** | 系统聚焦搜索,不按你的标签体系组织 | 搜 **应用名、标签、备忘**,支持拼音等候选(视语言环境) |
+| **显示样式** | 固定 Launchpad 样式 | 多种列表样式(平铺 / 容器 / 网格)、可调图标大小、标签栏位置 |
+| **多显示器 / 全屏** | 易触发 Space 切换等干扰 | 针对全屏、Split View、多屏做了窗口层级优化 |
+| **智能整理** | 无 | **Smart Start** 可按场景给新应用建议标签(可选应用) |
+
+### 可写进「What's New / 审核说明」的短句(中文)
+
+- 不用 Launchpad 翻页找图标:打开即是可滚动的应用网格。
+- 不用文件夹硬塞分类:一个 App 可挂多个标签,贴近真实使用场景。
+- 给常用/不常用 App 写用途备忘,搜索时直接命中。
+- 分类与布局可导出 JSON,备份、迁移、恢复都方便。
+
+---
+
+## 三、产品功能卖点清单(来自帮助文档与 7.8.x 能力)
+
+填写描述时可从中勾选,不必全部塞进 4000 字上限。
+
+### 启动与效率
+
+- 全局快捷键唤起 **App Grid**(默认 `Option-Shift-Space`)
+- **Quick Search**:在网格内按 `Space`,或 `Fn+Space` 快速搜索
+- 支持菜单栏常驻、可选登录启动、可选隐藏 Dock 图标
+- 多显示器、全屏 Space 场景下仍可在当前空间使用
+
+### 整理与浏览
+
+- 自定义标签:新建、配色、排序、侧边/顶部导航
+- **五种应用列表样式**:平铺、无色/彩色容器、无色/彩色网格
+- 可调图标大小、标签字号、是否显示应用名
+- 编辑模式:批量给多个 App 添加/移除标签
+- 拖拽:App 图标拖到标签名上即可建立关联
+- 「不常用」分组 + 气泡提示(大号名称 + 备忘)
+
+### 搜索与记忆
+
+- 搜索范围:应用名、标签名、用途备忘
+- 本地索引扫描已安装应用(含部分系统目录应用,如钥匙串访问)
+- 应用目录变化时轻量刷新,避免每次打开都全量重扫
+
+### 数据与迁移
+
+- **导出 / 导入**「分类与布局」JSON(设置 → 数据)
+- 本地存储,无账号、无云端上传(隐私友好)
+
+### 语言与帮助
+
+- 应用内 **29 种界面语言**(设置中切换)
+- 内置多语言帮助 PDF(GitHub Release 托管)
+
+### 7.8.15 本次更新(What's New 必写)
+
+- 修复再次打开 App Grid 时可能一直转圈的问题
+- 启动后后台预热应用索引,首次打开更快
+- 延续 7.8.14:CoreServices 系统应用(如钥匙串访问)可检索
+
+---
+
+## 四、App Store Connect 字段(可直接复制)
+
+以下按 [App Store Connect](https://appstoreconnect.apple.com/) 常见字段整理。字符数请在提交前用 Connect 界面再核对(不同地区略有差异)。
+
+### 4.1 基础信息
+
+| 字段 | 建议值 |
+|------|--------|
+| **Name** | TagLauncher |
+| **Subtitle(≤30 字符)** | 见下方中英备选 |
+| **Bundle ID** | com.taglauncher.app |
+| **SKU** | taglauncher-macos |
+| **Primary Category** | Utilities |
+| **Secondary Category(可选)** | Productivity |
+| **Copyright** | © 2026 海南万幸科技有限公司 / Hainan Wanxing Technology Co., Ltd. |
+| **Minimum macOS** | 15.0 |
+
+**Subtitle 备选(任选其一,注意 30 字符限制)**
+
+| 语言 | 文案 | 说明 |
+|------|------|------|
+| 英文 | `Tags, notes, one grid` | 24 字符 |
+| 英文 | `Beyond Launchpad folders` | 26 字符 |
+| 英文 | `Tag-based app launcher` | 22 字符 |
+| 简体中文 | `标签启动器,胜过启动台` | 需数 Connect 是否按字符计 |
+| 简体中文 | `多标签、可备忘、可备份` | 强调差异点 |
+
+推荐英文主字幕:**`Tag-based app launcher`** 或 **`Beyond Launchpad folders`**。
+
+---
+
+### 4.2 关键词 Keywords(≤100 字符,逗号分隔,不要重复 App 名称)
+
+**English(99 字符示例)**
+
+```text
+launcher,launchpad,tags,apps,organizer,notes,backup,hotkey,search,utility,macos,productivity
+```
+
+**简体中文(若 Connect 该本地化支持关键词)**
+
+```text
+启动器,启动台,标签,应用,整理,备忘,备份,快捷键,搜索,效率,工具,Mac
+```
+
+说明:App Store **不会**把关键词当 SEO 堆砌排名用,但可覆盖用户搜索习惯词;避免空格占额度,用英文逗号。
+
+---
+
+### 4.3 推广文本 Promotional Text(≤170 字符,可随时改,无需新版本)
+
+**English**
+
+```text
+Tired of flipping Launchpad pages? TagLauncher shows a scrollable app grid, multi-tag apps, per-app notes, and JSON layout backup—open with Option-Shift-Space.
+```
+
+**简体中文**
+
+```text
+厌倦启动台翻页?TagLauncher 用可滚动应用网格、多标签归类、应用备忘和布局备份,Option-Shift-Space 一键唤起。
+```
+
+---
+
+### 4.4 描述 Description(建议英文为主语言撰写,≤4000 字符)
+
+#### English(主描述,可直接粘贴)
+
+```text
+TagLauncher is a tag-based launcher for Mac power users who have outgrown Launchpad.
+
+WHY NOT JUST LAUNCHPAD?
+• One scrollable grid instead of flipping through pages to find an icon
+• Tags instead of folders—put the same app in Design and Work at once
+• Per-app notes you can search later (purpose, version, reminders)
+• Export and import your categories and layout as JSON—easy backup and migration
+
+HOW YOU WORK WITH TAGLAUNCHER
+• Press Option-Shift-Space to open the App Grid over your current Space
+• Press Space in the grid (or Fn+Space) for Quick Search across apps, tags, and notes
+• Create colored tags, drag apps onto tag names, and batch-edit assignments
+• Choose list styles: flat, containers, or aligned grids; tune icon and tag sizes
+• Mark rarely used apps as Uncommon and show a large name + note bubble on hover
+• Optional Smart Start suggestions to categorize newly installed apps
+• Import/export your layout from Settings → Data
+
+BUILT FOR REAL MAC SETUPS
+• Works with multiple displays and fullscreen Spaces
+• Menu bar access, optional login item, optional Dock icon
+• Local-only indexing—no account, no analytics SDK in this build
+• Interface available in 29 languages inside the app
+
+TagLauncher helps you see all your apps, organize them the way you actually think, and launch them in seconds—without hunting through Launchpad pages or single-folder limits.
+```
+
+#### 简体中文(若添加「简体中文」本地化,可粘贴)
+
+```text
+TagLauncher 是一款面向「应用很多」的 Mac 用户的标签化启动器——当你觉得启动台不够用,它会是一个更顺手的日常入口。
+
+为什么不只是启动台?
+• 可滚动的应用网格,不必一页一页翻图标
+• 用标签代替文件夹:同一个 App 可同时属于「设计」「办公」等多个标签
+• 给每个 App 写用途备忘,之后搜索直达
+• 分类与布局可导出/导入 JSON,备份、换机、恢复都方便
+
+日常使用
+• Option-Shift-Space 打开应用网格,覆盖在当前空间之上
+• 在网格内按 Space,或 Fn+Space 打开 Quick Search,搜索应用、标签与备忘
+• 自定义彩色标签,拖拽图标到标签名即可归类,支持批量编辑
+• 五种列表样式、可调图标与标签字号
+• 「不常用」应用可显示大号名称与备忘气泡
+• 可选 Smart Start,为新安装应用建议标签
+• 设置 → 数据:导出/导入布局
+
+为真实 Mac 场景设计
+• 多显示器、全屏与 Split View 场景优化
+• 菜单栏、登录启动、Dock 显示可配置
+• 本地扫描与本地数据,无需账号
+• 应用内提供 29 种界面语言
+
+TagLauncher 让你一屏掌握应用、按真实习惯归类,并用快捷键秒开——告别启动台翻页和「一个 App 只能进一个文件夹」的限制。
+```
+
+---
+
+### 4.5 此版本更新 What's New(7.8.15)
+
+**English**
+
+```text
+• Fixed an issue where the App Grid could stay on a loading spinner when reopened
+• Faster first open by warming the app index in the background at launch
+• Still includes improved discovery for system apps such as Keychain Access (from 7.8.14)
+```
+
+**简体中文**
+
+```text
+• 修复再次打开应用网格时可能一直转圈的问题
+• 启动后后台预热应用索引,首次打开更快
+• 继续支持钥匙串访问等 CoreServices 系统应用的检索(7.8.14)
+```
+
+---
+
+### 4.6 审核备注(给 App Review,见 `Review/APP_REVIEW_NOTES.md`)
+
+补充一句与 Launchpad 的差异即可,避免过长:
+
+> TagLauncher is an alternative to Launchpad for users who want multi-tag organization, per-app notes, and exportable layouts. It does not replace or modify system Launchpad; it adds a separate overlay invoked by hotkey.
+
+---
+
+## 五、截图与副图文案建议(8 张,沿用 7.8.14 资产)
+
+| 顺序 | 画面建议 | caption 思路(可选,部分商店支持) |
+|------|----------|-------------------------------------|
+| 1 | App Grid + 顶部标签 | 一屏浏览,无需像启动台那样翻页 |
+| 2 | Quick Search 输入 | 搜应用、标签、备忘 |
+| 3 | 编辑标签 / 多标签 | 一个 App,多个标签 |
+| 4 | 用途备忘气泡 | 给 App 写说明,不再忘记用途 |
+| 5 | 设置 → 数据 导出 | 布局 JSON 备份与恢复 |
+| 6 | 多种列表样式 | 平铺 / 网格 / 容器 |
+| 7 | 全屏场景下的网格 | 全屏 Space 仍可用 |
+| 8 | 设置 / 语言 | 29 种界面语言(应用内) |
+
+7.8.15 为修复版,**无需重截**,见 `Screenshots/SCREENSHOT_SHOT_LIST.md`。
+
+---
+
+## 六、29 种语言:应用内 vs App Store 资料(建议读这一节)
+
+### 结论(直接建议)
+
+| 类型 | 是否必须 29 种 | 建议 |
+|------|----------------|------|
+| **应用内界面**(你已做) | 否,但已是产品亮点 | 保持 29 种;设置里可切换 |
+| **App Store Connect 商店文案** | **否** | **首版先做好 2 种:英文 + 简体中文** |
+
+不必为上架第一天准备 29 套商店描述、关键词和截图说明。
+
+### 原因说明
+
+1. **Apple 不要求**商店本地化数量与应用内语言一致。没有填写的语言会回退到「主要语言」(Primary Language)。
+2. **维护成本**:29 套描述 + 关键词 + 推广文本 + What's New,每次发版都要同步,极易漏翻或过时。
+3. **转化优先级**:Mac App Store 流量仍以 **English** 为主;若你主要面向中文用户,再加 **简体中文** 即可覆盖大部分需求。
+4. **繁体、日文、韩文**等:有精力时作为 **第二批** 在 Connect 里「添加本地化」,不必阻塞首次提交。
+
+### 推荐上架语言策略(分阶段)
+
+**阶段 A — 首次提审(现在)**
+
+- Primary Language:**English(U.S.)** 或 **English(Australia)**(二选一,全文案用英文填齐)
+- 额外本地化:**简体中文(中国)**(描述 + 关键词 + What's New + 推广文本)
+- 截图:一套即可(界面已是多语言,不必 29 套截图)
+
+**阶段 B — 上架后 1~2 个版本**
+
+按下载地区加:**繁体中文(台湾)**、**日语**、**韩语**、**德语**、**法语**(选你真有用户的地区)
+
+**阶段 C — 长期**
+
+其余语言可逐步补;或仅保留应用内 29 语言,商店仍用英文主文案(很多独立开发者这样做)。
+
+### 和「29 种语言」卖点的关系
+
+- **在英文/中文描述里写一句**:「App interface available in 29 languages」——这是事实,也是差异化,**不需要**为 29 种各写一整页商店文案。
+- 帮助 PDF 已有 29 语言,上架后可在支持页放链接,不必全部搬进 Connect。
+
+---
+
+## 七、Connect 填写顺序 checklist(今日上架)
+
+- [ ] 创建/确认 App 记录,Bundle ID `com.taglauncher.app`
+- [ ] Primary Language:English,粘贴第四节英文稿
+- [ ] 添加本地化:简体中文,粘贴中文稿
+- [ ] Subtitle、Keywords、Promotional Text、Description、What's New
+- [ ] 上传 8 张截图(`Screenshots/AppStore/`)
+- [ ] 隐私政策 URL、支持 URL(公开可访问)
+- [ ] App Privacy 问卷(本地数据、不收集个人数据为主)
+- [ ] 上传 build `20260605.2337`(签名 pkg,非 DMG)
+- [ ] 审核备注引用 Launchpad 差异与测试步骤(`Review/APP_REVIEW_NOTES.md`)
+
+---
+
+## 八、相关文件
+
+| 文件 | 用途 |
+|------|------|
+| `APP_STORE_CONNECT_METADATA.md` | 精简版元数据草稿 |
+| `Review/APP_REVIEW_NOTES.md` | 审核操作步骤 |
+| `APP_STORE_RELEASE_CHECKLIST.md` | 提交前清单 |
+| `BUILD_SIGN_UPLOAD.md` | 证书签名与 pkg 上传 |
+| `Docs/Help/v7.6.0/Taglauncher-help-zh.pdf` | 用户帮助(功能细节) |
+
+---
+
+*本文档随 7.8.15 发布包维护;下次发版请同步更新 What's New 与版本号。*
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/APP_STORE_RELEASE_CHECKLIST.md b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_RELEASE_CHECKLIST.md
new file mode 100644
index 0000000..c8d1ca6
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/APP_STORE_RELEASE_CHECKLIST.md
@@ -0,0 +1,23 @@
+# App Store Release Checklist
+
+## 本地冻结
+
+- [x] 版本为 `7.8.15`
+- [x] Build 为 `20260605.2337`
+- [ ] Release tag:`v7.8.15-build20260605.2337`(提交前打 tag)
+- [x] DMG 已归档
+- [x] SHA256 已记录
+- [x] 上架截图已生成(沿用 7.8.14 资产)
+- [x] App Store 文案、审核备注、隐私政策草稿、支持页草稿已准备
+
+## 提交 App Store 前
+
+- [x] 发布最终隐私政策 URL:`https://shanghai3168.github.io/taglauncher/privacy-zh.html`(英文:`privacy.html`)
+- [x] 发布最终支持 URL:`https://shanghai3168.github.io/taglauncher/support.html`
+- [ ] 在 Apple Developer 账号中确认证书和 provisioning profile
+- [ ] 用 `BUILD_SIGN_UPLOAD.md` 生成 App Store 上传 `.pkg`
+- [ ] 用 Transporter、Xcode 或 altool 上传 build
+- [ ] 在 App Store Connect 选择 build `20260605.2337`
+- [ ] 上传 `Screenshots/AppStore/` 内截图
+- [ ] 填写 App Privacy、Age Rating、Export Compliance
+- [ ] 提交审核
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg b/Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg
new file mode 100644
index 0000000..aadc885
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Assets/TagLauncher-AppIcon-1024.png b/Release/AppStore-7.8.15-20260605.2337/Assets/TagLauncher-AppIcon-1024.png
new file mode 100644
index 0000000..5266150
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Assets/TagLauncher-AppIcon-1024.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/BUILD_SIGN_UPLOAD.md b/Release/AppStore-7.8.15-20260605.2337/BUILD_SIGN_UPLOAD.md
new file mode 100644
index 0000000..54ee95e
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/BUILD_SIGN_UPLOAD.md
@@ -0,0 +1,32 @@
+# Build, Sign, Package, Upload
+
+本目录内 DMG 是本地可回滚候选包,不是 App Store Connect 最终上传包。
+
+## App Store Signing
+
+```bash
+APP_STORE=1 \
+APP_BUILD=20260605.2337 \
+CODESIGN_IDENTITY="Mac App Distribution: YOUR NAME (TEAMID)" \
+zsh ./build.sh
+```
+
+## Package
+
+```bash
+mkdir -p build/AppStore
+productbuild \
+ --component build/TagLauncher.app /Applications \
+ --sign "Mac Installer Distribution: YOUR NAME (TEAMID)" \
+ build/AppStore/TagLauncher-7.8.15-build20260605.2337.pkg
+```
+
+## Verify
+
+```bash
+pkgutil --check-signature build/AppStore/TagLauncher-7.8.15-build20260605.2337.pkg
+```
+
+## Upload
+
+Use Transporter, Xcode, or `xcrun altool` to upload the signed `.pkg`.
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/FIRST_TIME_MAC_APP_STORE_TODO.md b/Release/AppStore-7.8.15-20260605.2337/FIRST_TIME_MAC_APP_STORE_TODO.md
new file mode 100644
index 0000000..90d44fc
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/FIRST_TIME_MAC_APP_STORE_TODO.md
@@ -0,0 +1,15 @@
+# First-Time Mac App Store Todo
+
+- [ ] Apple Developer Program 有效
+- [ ] App Store Connect app record 已创建
+- [ ] Bundle ID 为 `com.taglauncher.app`
+- [ ] SKU 为 `taglauncher-macos`
+- [ ] Category 为 Utilities
+- [ ] 隐私政策 URL 已发布
+- [ ] 支持 URL 已发布
+- [ ] Mac App Distribution / Apple Distribution 证书可用
+- [ ] Mac Installer Distribution 证书可用
+- [ ] Mac App Store provisioning profile 已安装
+- [ ] 上传 `.pkg` 已生成并通过签名检查
+- [ ] Build `20260605.2337` 已上传并 Processing 完成
+- [ ] What's New 使用 `APP_STORE_CONNECT_METADATA.md` 中的 7.8.15 文案
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.md b/Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.md
new file mode 100644
index 0000000..d012de5
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.md
@@ -0,0 +1,11 @@
+# TagLauncher Privacy Policy Draft
+
+Effective date: 2026-06-05
+
+TagLauncher is a macOS utility for organizing and launching installed applications. The current 7.8.15 build works locally on the user's Mac and does not collect personal data.
+
+The app stores preferences and launcher configuration locally. It scans installed applications locally to build its launcher index. It does not include analytics, advertising, tracking, crash reporting, or third-party telemetry SDKs in the current build.
+
+Support email: shanghai3168@gmail.com
+
+Privacy policy URL: https://shanghai3168.github.io/taglauncher/privacy.html
diff --git a/Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.zh-Hans.md b/Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.zh-Hans.md
new file mode 100644
index 0000000..5986233
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.zh-Hans.md
@@ -0,0 +1,11 @@
+# TagLauncher 隐私政策草稿
+
+生效日期:2026-06-05
+
+TagLauncher 是一个用于整理和启动已安装应用的 macOS 工具。当前 7.8.15 版本在用户 Mac 本地工作,不收集个人数据。
+
+应用会在本地保存偏好设置和启动器配置,并在本地扫描已安装应用来建立启动器索引。当前版本不包含 analytics SDK、广告 SDK、tracking SDK、崩溃上报 SDK 或第三方遥测 SDK。
+
+支持邮箱:shanghai3168@gmail.com
+
+隐私政策 URL:https://shanghai3168.github.io/taglauncher/privacy-zh.html
diff --git a/Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-16x9.jpg b/Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-16x9.jpg
new file mode 100644
index 0000000..aff0a16
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-16x9.jpg
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-2880x1800.jpg b/Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-2880x1800.jpg
new file mode 100644
index 0000000..e9027e4
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-2880x1800.jpg
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/QA_RELEASE_EVIDENCE.md b/Release/AppStore-7.8.15-20260605.2337/QA_RELEASE_EVIDENCE.md
new file mode 100644
index 0000000..b08bb20
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/QA_RELEASE_EVIDENCE.md
@@ -0,0 +1,32 @@
+# QA Release Evidence
+
+## Build Under Test
+
+- Version: 7.8.15
+- Build: 20260605.2337
+- Source commit: ed43ee83789cb99b1cb95db340fee939dd0dedec
+- Artifact: Archive/TagLauncher-7.8.15-build20260605.2337.dmg
+
+## Passed
+
+- Build completed with fixed build number `20260605.2337`.
+- App signing verification passed.
+- App version/build matched `7.8.15 / 20260605.2337`.
+- DMG verification passed.
+- DMG mount verification passed.
+- Screenshot dimensions verified as `2880 x 1800` (assets reused from 7.8.14).
+- `SHA256SUMS.txt` recorded.
+
+## Manual QA Recommended Before Submit
+
+- Open App Grid with `Option-Shift-Space`, press `Escape`, reopen App Grid — icons should appear without an endless spinner.
+- Optional regression: `Scripts/quick_search_system_app_qa.sh` for Keychain Access indexing (carried from 7.8.14).
+
+## App Grid Regression (7.8.15)
+
+Expected:
+
+1. Launch TagLauncher.
+2. Press `Option-Shift-Space` — App Grid shows app icons.
+3. Press `Escape` to close.
+4. Press `Option-Shift-Space` again — App Grid shows icons immediately (no endless spinner).
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/README.md b/Release/AppStore-7.8.15-20260605.2337/README.md
new file mode 100644
index 0000000..a3819dc
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/README.md
@@ -0,0 +1,74 @@
+# TagLauncher 7.8.15 App Store 最终上架资料
+
+生成时间:2026-06-05 23:41:00 HKT
+
+## 冻结信息
+
+- 产品:TagLauncher
+- 版本:7.8.15
+- Build:20260605.2337
+- Bundle ID:com.taglauncher.app
+- 最低系统版本:macOS 15.0
+- 源码分支:codex/fix-quick-search-focus-routing
+- 源码提交:ed43ee83789cb99b1cb95db340fee939dd0dedec
+- 冻结 tag:`v7.8.15-build20260605.2337`(提交前创建)
+
+## 上架结论
+
+- 7.8.15 build 20260605.2337 是当前准备提交 App Store 的最终候选。
+- 7.8.14、7.8.13 及更早 build 都不要再提交市场。
+- 本目录内 DMG 是本地可回滚候选包;App Store Connect 最终上传仍需要按 `BUILD_SIGN_UPLOAD.md` 用 Apple Developer 账号证书生成 `.pkg`。
+
+## 安装包
+
+- DMG:Archive/TagLauncher-7.8.15-build20260605.2337.dmg
+- SHA256:ed1938afe16ee22cb28adc90231f6f9d6566c186025371c70c9da9c7f04ea493
+- 大小:5991360 bytes
+
+## 截图
+
+- App Store 上传候选:`Screenshots/AppStore/`
+- 数量:8
+- 尺寸:2880 x 1800
+- 格式:PNG
+- 原始截图备份:`Screenshots/raw/`
+- 说明:7.8.15 为 App Grid 加载修复,UI 无变化,沿用 7.8.14 截图资产。
+
+## 官网(GitHub Pages)
+
+- 首页:https://shanghai3168.github.io/taglauncher/
+- 支持:https://shanghai3168.github.io/taglauncher/support.html
+- 隐私(中文):https://shanghai3168.github.io/taglauncher/privacy-zh.html
+- 隐私(英文):https://shanghai3168.github.io/taglauncher/privacy.html
+
+源码在公开仓库 `shanghai3168/taglauncher` 的 `docs/` 目录;本地副本见项目内 `publish-website/docs/`。
+
+## 资料入口
+
+- `APP_STORE_MARKETING_AND_METADATA.md`:卖点、对比 Launchpad、Connect 全文案(中英)
+- `APP_STORE_CONNECT_METADATA.md`:App Store Connect 精简草稿
+- `APP_STORE_RELEASE_CHECKLIST.md`:提交前检查清单
+- `APP_STORE_ASSET_INVENTORY.md`:图标和截图清单
+- `BUILD_SIGN_UPLOAD.md`:签名、pkg、上传说明
+- `FIRST_TIME_MAC_APP_STORE_TODO.md`:账号侧待办
+- `Review/APP_REVIEW_NOTES.md`:审核备注
+- `Legal/PRIVACY_POLICY.md`:英文隐私政策草稿
+- `Legal/PRIVACY_POLICY.zh-Hans.md`:中文隐私政策草稿
+- `Support/SUPPORT.md`:支持页草稿
+
+## 已完成验证
+
+- `APP_BUILD=20260605.2337 zsh ./build.sh` 通过
+- `codesign --verify --deep --strict build/TagLauncher.app` 通过
+- App 版本/build 校验通过:`7.8.15 / 20260605.2337`
+- `hdiutil verify build/TagLauncher-7.8.15-build20260605.2337.dmg` 通过
+- DMG 挂载检查通过,包含 `TagLauncher.app` 和 `Applications -> /Applications`
+
+## Apple 官方资料入口
+
+- Screenshot specifications: https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications
+- Upload screenshots: https://developer.apple.com/help/app-store-connect/manage-app-information/upload-app-previews-and-screenshots/
+- Upload builds: https://developer.apple.com/help/app-store-connect/manage-builds/upload-builds/
+- App privacy: https://developer.apple.com/help/app-store-connect/manage-app-information/manage-app-privacy/
+- Certificates: https://developer.apple.com/help/account/certificates/certificates-overview/
+- App Store provisioning profile: https://developer.apple.com/help/account/provisioning-profiles/create-an-app-store-provisioning-profile/
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/RELEASE_MANIFEST.md b/Release/AppStore-7.8.15-20260605.2337/RELEASE_MANIFEST.md
new file mode 100644
index 0000000..fe7f55a
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/RELEASE_MANIFEST.md
@@ -0,0 +1,45 @@
+# Release Manifest
+
+## Identity
+
+- Product: TagLauncher
+- Version: 7.8.15
+- Build: 20260605.2337
+- Bundle ID: com.taglauncher.app
+- Minimum macOS: 15.0
+- Generated at: 2026-06-05 23:41:00 HKT
+- Branch: codex/fix-quick-search-focus-routing
+- Source commit: ed43ee83789cb99b1cb95db340fee939dd0dedec
+- Release tag: v7.8.15-build20260605.2337
+
+## Artifact
+
+- Build artifact: build/TagLauncher-7.8.15-build20260605.2337.dmg
+- Archived artifact: Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg
+- SHA256: ed1938afe16ee22cb28adc90231f6f9d6566c186025371c70c9da9c7f04ea493
+- Size: 5991360 bytes
+
+## Commands
+
+```bash
+APP_BUILD=20260605.2337 zsh ./build.sh
+zsh ./make_dmg.sh
+mv build/TagLauncher.dmg build/TagLauncher-7.8.15-build20260605.2337.dmg
+```
+
+## Verification Results
+
+- App version check: passed, returned `7.8.15`
+- App build check: passed, returned `20260605.2337`
+- Code signing verification: passed
+- DMG verification: passed
+- DMG mount metadata check: passed
+- DMG contains `TagLauncher.app`
+- DMG contains `Applications -> /Applications`
+
+## Release Scope
+
+- This build is the final 7.8.15 App Store submission candidate.
+- Fixes App Grid showing an endless loading spinner when reopened while the in-memory app index cache is still valid.
+- Warms the app index in the background at launch to reduce first-open wait time.
+- Retains 7.8.14 CoreServices system app indexing (Keychain Access) and 7.8.13 lightweight directory-signature refresh behavior.
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/Review/APP_REVIEW_NOTES.md b/Release/AppStore-7.8.15-20260605.2337/Review/APP_REVIEW_NOTES.md
new file mode 100644
index 0000000..6f97e5f
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Review/APP_REVIEW_NOTES.md
@@ -0,0 +1,24 @@
+# App Review Notes
+
+TagLauncher is a macOS utility for organizing installed applications into visual tag groups and launching them from a keyboard-accessible app grid.
+
+No demo account is required.
+
+## Review Flow
+
+1. Launch TagLauncher.
+2. Press `Option-Shift-Space` to show the app grid.
+3. Press `Space` while the app grid is visible to open Quick Search.
+4. Type part of an installed app name to search.
+5. Press `Escape` once to close Quick Search.
+6. Press `Escape` again to close the app grid.
+7. Press `Option-Shift-Space` again — the app grid should show icons without staying on a loading spinner.
+8. Open Settings from the menu bar or with `Command-Comma`.
+
+## 7.8.15 Note
+
+Version 7.8.15 fixes an issue where reopening the App Grid could remain on a loading spinner even though the local app index was already cached. Reviewers should verify step 7 above.
+
+## 7.8.14 Note (still included)
+
+Version 7.8.14 includes Apple system apps under `/System/Library/CoreServices/Applications` in the local app index. This lets users find Keychain Access by English name, localized name, or pinyin candidates.
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/SHA256SUMS.txt b/Release/AppStore-7.8.15-20260605.2337/SHA256SUMS.txt
new file mode 100644
index 0000000..8f81fc4
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/SHA256SUMS.txt
@@ -0,0 +1 @@
+ed1938afe16ee22cb28adc90231f6f9d6566c186025371c70c9da9c7f04ea493 Archive/TagLauncher-7.8.15-build20260605.2337.dmg
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png
new file mode 100644
index 0000000..cce1776
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png
new file mode 100644
index 0000000..dfa585d
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png
new file mode 100644
index 0000000..e7ac50c
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png
new file mode 100644
index 0000000..7eefd03
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png
new file mode 100644
index 0000000..9458988
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png
new file mode 100644
index 0000000..8070a63
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png
new file mode 100644
index 0000000..d01d4b4
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png
new file mode 100644
index 0000000..a14b151
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md b/Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md
new file mode 100644
index 0000000..255faa7
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md
@@ -0,0 +1,26 @@
+# Screenshot Shot List
+
+## 上传目录
+
+`Screenshots/AppStore/`
+
+## 文件
+
+1. `mac-01-SCR-20260604-jwdv-2880x1800.png`
+2. `mac-02-SCR-20260604-jwen-2880x1800.png`
+3. `mac-03-SCR-20260604-jwgb-2880x1800.png`
+4. `mac-04-SCR-20260604-jwgq-2880x1800.png`
+5. `mac-05-SCR-20260604-jwhd-2880x1800.png`
+6. `mac-06-SCR-20260604-jwic-2880x1800.png`
+7. `mac-07-SCR-20260604-jwji-2880x1800.png`
+8. `mac-08-SCR-20260604-jwkh-2880x1800.png`
+
+## 规格
+
+- 2880 x 1800
+- PNG
+- Mac 16:10
+
+## 7.8.15 说明
+
+7.8.15 为 App Grid 加载修复,UI 无变化,沿用 7.8.14 截图,无需重新截屏。
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png
new file mode 100644
index 0000000..07ea6f0
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png
new file mode 100644
index 0000000..2f538ff
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png
new file mode 100644
index 0000000..ea15cc2
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png
new file mode 100644
index 0000000..4373e26
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png
new file mode 100644
index 0000000..28b2260
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png
new file mode 100644
index 0000000..049de8e
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png
new file mode 100644
index 0000000..70b97e3
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png
new file mode 100644
index 0000000..fd61666
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png
Binary files differ
diff --git a/Release/AppStore-7.8.15-20260605.2337/Submitted/.gitkeep b/Release/AppStore-7.8.15-20260605.2337/Submitted/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Submitted/.gitkeep
diff --git a/Release/AppStore-7.8.15-20260605.2337/Support/SUPPORT.md b/Release/AppStore-7.8.15-20260605.2337/Support/SUPPORT.md
new file mode 100644
index 0000000..90c9771
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Support/SUPPORT.md
@@ -0,0 +1,25 @@
+# TagLauncher Support Draft
+
+## Current Version
+
+- Version: 7.8.15
+- Build: 20260605.2337
+- Minimum macOS: 15.0
+
+## Getting Started
+
+1. Launch TagLauncher.
+2. Press `Option-Shift-Space` to open the app grid.
+3. Press `Space` in the app grid to open Quick Search.
+
+## Troubleshooting
+
+If the app grid shows a loading spinner that never finishes, quit and relaunch TagLauncher, then update to 7.8.15 or later.
+
+## Contact
+
+Support email: shanghai3168@gmail.com
+
+Support URL: https://shanghai3168.github.io/taglauncher/support.html
+
+Privacy policy: https://shanghai3168.github.io/taglauncher/privacy.html
\ No newline at end of file
diff --git a/Release/AppStore-7.8.15-20260605.2337/Upload/.gitkeep b/Release/AppStore-7.8.15-20260605.2337/Upload/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Release/AppStore-7.8.15-20260605.2337/Upload/.gitkeep
--
Gitblit v1.9.3