Ariver
2026-06-07 6dea81ebd24bcdb3c62ff8d2251a2670cb8b64c5
Freeze TagLauncher 7.8.15 source recovery
4 files modified
39 files added
1164 ■■■■■ changed files
Apptag/ApptagApp.swift 8 ●●●●● patch | view | raw | blame | history
Apptag/ContentView.swift 10 ●●●● patch | view | raw | blame | history
Apptag/Info.plist 4 ●●●● patch | view | raw | blame | history
CHANGELOG.md 6 ●●●●● patch | view | raw | blame | history
Release/APP_STORE_RELEASE_MANUAL_TODO.md 388 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/APP_STORE_ASSET_INVENTORY.md 33 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/APP_STORE_CONNECT_METADATA.md 71 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/APP_STORE_MARKETING_AND_METADATA.md 325 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/APP_STORE_RELEASE_CHECKLIST.md 23 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Assets/TagLauncher-AppIcon-1024.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/BUILD_SIGN_UPLOAD.md 32 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/FIRST_TIME_MAC_APP_STORE_TODO.md 15 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.md 11 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.zh-Hans.md 11 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-16x9.jpg patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-2880x1800.jpg patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/QA_RELEASE_EVIDENCE.md 32 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/README.md 74 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/RELEASE_MANIFEST.md 45 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Review/APP_REVIEW_NOTES.md 24 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/SHA256SUMS.txt 1 ●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md 26 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Submitted/.gitkeep patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Support/SUPPORT.md 25 ●●●●● patch | view | raw | blame | history
Release/AppStore-7.8.15-20260605.2337/Upload/.gitkeep patch | view | raw | blame | history
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) {
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()
    }
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>
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”等系统应用无法被检索和启动的问题
Release/APP_STORE_RELEASE_MANUAL_TODO.md
New file
@@ -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
Release/AppStore-7.8.15-20260605.2337/APP_STORE_ASSET_INVENTORY.md
New file
@@ -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).
Release/AppStore-7.8.15-20260605.2337/APP_STORE_CONNECT_METADATA.md
New file
@@ -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 下系统应用(如钥匙串访问)的检索支持。
Release/AppStore-7.8.15-20260605.2337/APP_STORE_MARKETING_AND_METADATA.md
New file
@@ -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 与版本号。*
Release/AppStore-7.8.15-20260605.2337/APP_STORE_RELEASE_CHECKLIST.md
New file
@@ -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
- [ ] 提交审核
Release/AppStore-7.8.15-20260605.2337/Archive/TagLauncher-7.8.15-build20260605.2337.dmg
Binary files differ
Release/AppStore-7.8.15-20260605.2337/Assets/TagLauncher-AppIcon-1024.png
Release/AppStore-7.8.15-20260605.2337/BUILD_SIGN_UPLOAD.md
New file
@@ -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`.
Release/AppStore-7.8.15-20260605.2337/FIRST_TIME_MAC_APP_STORE_TODO.md
New file
@@ -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 文案
Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.md
New file
@@ -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
Release/AppStore-7.8.15-20260605.2337/Legal/PRIVACY_POLICY.zh-Hans.md
New file
@@ -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
Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-16x9.jpg
Release/AppStore-7.8.15-20260605.2337/Marketing/taglauncher-hero-3d-promo-2880x1800.jpg
Release/AppStore-7.8.15-20260605.2337/QA_RELEASE_EVIDENCE.md
New file
@@ -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).
Release/AppStore-7.8.15-20260605.2337/README.md
New file
@@ -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/
Release/AppStore-7.8.15-20260605.2337/RELEASE_MANIFEST.md
New file
@@ -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.
Release/AppStore-7.8.15-20260605.2337/Review/APP_REVIEW_NOTES.md
New file
@@ -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.
Release/AppStore-7.8.15-20260605.2337/SHA256SUMS.txt
New file
@@ -0,0 +1 @@
ed1938afe16ee22cb28adc90231f6f9d6566c186025371c70c9da9c7f04ea493  Archive/TagLauncher-7.8.15-build20260605.2337.dmg
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md
New file
@@ -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 截图,无需重新截屏。
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png
Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png
Release/AppStore-7.8.15-20260605.2337/Submitted/.gitkeep
Release/AppStore-7.8.15-20260605.2337/Support/SUPPORT.md
New file
@@ -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
Release/AppStore-7.8.15-20260605.2337/Upload/.gitkeep