edit | blame | history | raw

QuickSearch

生成日期:2026-07-09

当前状态

最近结论摘录

  • 基于前一轮排查,确认当前问题不应按中文个例打补丁,而应抽象为“用户可见显示名”和“搜索别名/内部标识”分层。
  • 复查当前实现中 AppInfo.localizedDisplayName(for:)localizedNamesByLanguagelocalizedNamesQuickSearchEngine.makeDocumentsL10n.supported 和 Apple 默认应用目录的语言 fallback。
  • 通用规律:一个 App 通常同时存在多种名称来源,包括当前语言本地化名、系统/Finder/Spotlight 显示名、Bundle 基础名、文件名、可执行名、bundle id 和 wrapper/helper 内部名。
  • 产品显示名应优先使用“用户当前语种的本地化可见名称”;内部名只应作为搜索别名,不能优先显示。
  • 嵌套 .app、helper、iOS-on-Mac wrapper 应归并到外层用户可见 App;内层标识最多参与搜索匹配,不应作为独立结果展示。
  • 2026-08-28 QSF-DEV-001 实现 Quick Search 标签筛选 V1:搜索框下方、结果列表上方新增单行横向标签条;只显示 全部 与真实标签,排除未分类 / Mac 自带 / 不常用;标签筛选为运行时单选状态,不持久化;选中标签后与关键词搜索取交集,空搜索 + 标签列出该标签下 App,结果仍使用长条候选项。
  • 2026-08-28 QSF-CR-001 独立代码审核通过,终态口令 CR_PASS_QSF。审核确认运行时单选、不持久化、不改 AppGrid / Pro / 数据结构;Return / Esc / 方向键、鼠标点击启动、IME composition 和焦点回到输入框契约未被破坏;后续仍需 QA 执行真实 UI / 视觉 / 鼠标 / IME 实机验收。
  • 2026-08-28 QSF-QA-001 正式 QA 失败,终态口令 QA_FAIL_QSF。自动门禁通过,但真实 UI 发现 全部 chip 不能稳定清除筛选,且含 未分类 等保护容器标签的数据触发 Swift fatal Duplicate values for key: '未分类'。QA PASS 前不得生成 8.4.0 可安装验收包。
  • 2026-08-28 QSF-QA-002 返修复测通过,终态口令 QA_PASS_QSF_FIX。真实 UI 确认 全部 chip 可稳定清除筛选,普通标签切换 / 同标签二次点击 / 标签 + 关键词交集 / 启动与关闭 / IME smoke 回归通过;保护容器 fixture 未再 duplicate-key 崩溃,保护名未进入 Quick Search 筛选条。PMO 消费后才能生成 8.4.0 可安装验收包。
  • 2026-08-28 QSF-PKG-001 完成,终态口令 LOCAL_TEST_READY_QSF8.4.0 (20260828.1732) 本地安装体验 DMG 已生成并通过基础验证;DMG 路径为 /Users/ar/Projects/Taglauncher/03-O/C2.builds/LocalTest-8.4.0-20260828.1732/Archive/TagLauncher-8.4.0-build20260828.1732-localtest.dmg,SHA256 为 76647a1133fbb96abdb8dd0531dc83819ac58815057071671204b746b781070f
  • 2026-08-28 用户安装体验 8.4.0 (20260828.1732) 后确认“没有找到问题”。PMO 随后完成正式冻结,终态状态 ASC_UPLOAD_READY_QSF:正式上传包为 /Users/ar/Projects/Taglauncher/03-O/K3.运营与发布资料/Release/AppStore-8.4.0-20260828.2219/Upload/TagLauncher-8.4.0-build20260828.2219.pkg,SHA256 为 0d374a03b25c11a4bf9bad19238defd7c3043b72386ee70f7857e01f4f9d6318
  • 2026-08-30 QSF-ASC-001 完成,终态口令 TESTFLIGHT_INTERNAL_READY_QSF8.4.0 (20260828.2219) 已上传 App Store Connect,Delivery UUID 482c12a7-543d-4dab-afac-aa4e1b4bb6d0,Apple 返回 VALID / BETA_INTERNAL_TESTING,下一步由 Owner 通过 TestFlight 测试几天。

核心事实补录

2026-06-09 legacy/codex-20260610/session-history/2026-06-09-helper过滤补强.md

- 确认 `/Applications/TagLauncher.app` 已是 `7.8.25 (20260609.1741)`,当前运行进程也是安装后的 `/Applications/TagLauncher.app/Contents/MacOS/TagLauncher`。
- 确认用户数据库 `tags.json` 未记录 `isunclient`,因此不是本地数据旧项。
- 确认系统相关 app 路径包括:
  - `/Applications/AweSun.app`
  - `/Applications/AweSun.app/Contents/Helpers/AweSun_Desktop.app`
  - `/Applications/贝锐向日葵被控.app`
  - `/Applications/贝锐向日葵被控.app/Wrapper/isunclient.app`
- 判断 `7.8.25` 只按 URL pathComponents 识别嵌套 `.app` 不够稳,需要把 wrapper/helper 路径识别升为通用过滤规则。
- 实现 `7.8.26`:
- 确认 `/Applications/TagLauncher.app` 已是 `7.8.25 (20260609.1741)`,当前运行进程也是安装后的 `/Applications/TagLauncher.app/Contents/MacOS/TagLauncher`。
- 确认用户数据库 `tags.json` 未记录 `isunclient`,因此不是本地数据旧项。
- 确认系统相关 app 路径包括:
  - `/Applications/AweSun.app`
  - `/Applications/AweSun.app/Contents/Helpers/AweSun_Desktop.app`
  - `/Applications/贝锐向日葵被控.app`
  - `/Applications/贝锐向日葵被控.app/Wrapper/isunclient.app`
- 判断 `7.8.25` 只按 URL pathComponents 识别嵌套 `.app` 不够稳,需要把 wrapper/helper 路径识别升为通用过滤规则。
- 实现 `7.8.26`:
  - 扫描层过滤 `.app/.../*.app`、`/Wrapper/`、`/Contents/Helpers/`、`/Contents/XPCServices/`。
- QA 增加 helper path fixture。
  - 版本更新为 `7.8.26 (20260609.2004)`。
- 创建提交:`dd1c9fc Release 7.8.26 helper app filtering`。
- 生成本地验收 DMG:`/Users/ar/Projects/Taglauncher/src/build/TagLauncher-7.8.26-build20260609.2004.dmg`。
## 验证结果
- `Scripts/quick_search_app_name_qa.sh` 通过。
- `Scripts/quick_search_system_app_qa.sh` 通过。
- `APP_BUILD=20260609.2004 bash build.sh` 通过。

2026-06-09 legacy/codex-20260610/session-history/2026-06-09-向日葵显示名排查.md

排查 TagLauncher 搜索“向日葵”时命中结果显示为英文 `isunclient`,而 Spotlight 显示中文名的问题,判断原因和修复风险。
## 已完成事项
- 重新读取 `/Users/ar/.codex/AGENTS.md` 与 `/Users/ar/Projects/Taglauncher/AGENTS.md`,并遵守项目要求的代码治理、实现前讨论、QA 与会话记录规则。
- 只读检查当前源码中 `AppIndexer`、`QuickSearchEngine`、`AppLibraryController` 和现有 `quick_search_app_name_qa.sh`。
- 确认系统中存在:
  - `/Applications/AweSun.app`
  - `/Applications/AweSun.app/Contents/Helpers/AweSun_Desktop.app`
- 重新读取 `/Users/ar/.codex/AGENTS.md` 与 `/Users/ar/Projects/Taglauncher/AGENTS.md`,并遵守项目要求的代码治理、实现前讨论、QA 与会话记录规则。
- 只读检查当前源码中 `AppIndexer`、`QuickSearchEngine`、`AppLibraryController` 和现有 `quick_search_app_name_qa.sh`。
- 确认系统中存在:
  - `/Applications/AweSun.app`
  - `/Applications/AweSun.app/Contents/Helpers/AweSun_Desktop.app`
  - `/Applications/贝锐向日葵被控.app`
  - `/Applications/贝锐向日葵被控.app/Wrapper/isunclient.app`
- 确认用户数据 `tags.json` 记录的是外层 `/Applications/贝锐向日葵被控.app`,不是内层 `isunclient.app`。
- 临时运行当前扫描逻辑复现实验,当前源码只输出外层 `/Applications/贝锐向日葵被控.app`,可读到中文显示名,不输出内层 `Wrapper/isunclient.app`。
- `/Applications/贝锐向日葵被控.app/Wrapper/isunclient.app`
- 确认用户数据 `tags.json` 记录的是外层 `/Applications/贝锐向日葵被控.app`,不是内层 `isunclient.app`。
- 临时运行当前扫描逻辑复现实验,当前源码只输出外层 `/Applications/贝锐向日葵被控.app`,可读到中文显示名,不输出内层 `Wrapper/isunclient.app`。
- 发现本机 `/Applications/TagLauncher.app` 仍为 `7.8.22 (20260608.2346)`,不是已冻结的 `7.8.24 (20260609.1221)`。
- 运行现有 QA 脚本通过,但该脚本没有覆盖最终 QuickSearch 文档是否含有 `isunclient`,存在回归测试盲区。
## 关键判断
- 直接原因:向日葵“被控”包结构特殊,外层 `.app` 是包装器,真实 bundle 在 `Wrapper/isunclient.app`。旧扫描结果或旧构建若把内层 bundle 当成独立 App 收入 QuickSearch,就会显示内部文件名 `isunclient`。
- 当前源码侧扫描器已能过滤这个内层 helper,截图现象更可能来自旧安装版或旧内存扫描数据。

来源索引

时间线

2026-06-09 legacy/codex-20260610/session-history/2026-06-09-helper过滤补强.md

  • 原始标题:2026-06-09 helper过滤补强
  • 确认 /Applications/TagLauncher.app 已是 7.8.25 (20260609.1741),当前运行进程也是安装后的 /Applications/TagLauncher.app/Contents/MacOS/TagLauncher
  • 确认用户数据库 tags.json 未记录 isunclient,因此不是本地数据旧项。
  • 确认系统相关 app 路径包括:
  • /Applications/AweSun.app
  • /Applications/AweSun.app/Contents/Helpers/AweSun_Desktop.app

2026-06-09 legacy/codex-20260610/session-history/2026-06-09-向日葵显示名排查.md

  • 原始标题:2026-06-09 向日葵显示名排查
  • 重新读取 /Users/ar/.codex/AGENTS.md/Users/ar/Projects/Taglauncher/AGENTS.md,并遵守项目要求的代码治理、实现前讨论、QA 与会话记录规则。
  • 只读检查当前源码中 AppIndexerQuickSearchEngineAppLibraryController 和现有 quick_search_app_name_qa.sh
  • 确认系统中存在:
  • /Applications/AweSun.app
  • /Applications/AweSun.app/Contents/Helpers/AweSun_Desktop.app

2026-06-09 legacy/codex-20260610/session-history/2026-06-09-多语种显示名策略.md

  • 原始标题:2026-06-09 多语种显示名策略
  • 基于前一轮排查,确认当前问题不应按中文个例打补丁,而应抽象为“用户可见显示名”和“搜索别名/内部标识”分层。
  • 复查当前实现中 AppInfo.localizedDisplayName(for:)localizedNamesByLanguagelocalizedNamesQuickSearchEngine.makeDocumentsL10n.supported 和 Apple 默认应用目录的语言 fallback。
  • 通用规律:一个 App 通常同时存在多种名称来源,包括当前语言本地化名、系统/Finder/Spotlight 显示名、Bundle 基础名、文件名、可执行名、bundle id 和 wrapper/helper 内部名。
  • 产品显示名应优先使用“用户当前语种的本地化可见名称”;内部名只应作为搜索别名,不能优先显示。
  • 嵌套 .app、helper、iOS-on-Mac wrapper 应归并到外层用户可见 App;内层标识最多参与搜索匹配,不应作为独立结果展示。

2026-08-28 26.0828-Taglauncher.quicksearchfilter-开发实现.md

  • 原始标题:Taglauncher quicksearchfilter 开发实现。
  • QSF-DEV-001 终态口令为 DEV_READY_QSF,证据见 02-P/Round01-QuickSearchTagFilter/04-开发自测与回报-8.4.0.md
  • QuickSearchEngine.search 增加 selectedTagName,先按真实标签精确收窄文档,再和关键词 token 匹配。
  • ContentView 维护 quickSearchSelectedTagName 运行时状态,从当前索引与 tagDefinitions 生成可用标签,排除未分类、Mac 自带、不常用等保护容器名。
  • 新增 QuickSearchTagFilterBar / QuickSearchTagFilterChip,保持结果区使用原有长条候选项。
  • 自测通过 quick_search_tag_filter_qa.shquick_search_launch_contract_qa.shwindowserver_event_safety_qa.shquick_search_system_app_qa.shmacos14_availability_typecheck_qa.shgit diff --check

2026-08-28 26.0828-Taglauncher.quicksearchfilter-代码审核.md

  • 原始标题:Taglauncher quicksearchfilter 代码审核。
  • QSF-CR-001 终态口令为 CR_PASS_QSF,证据见 02-P/Round01-QuickSearchTagFilter/05-代码审核报告-8.4.0.md
  • 代码审核未发现需要开发返修的阻断问题。
  • 审核确认 Quick Search 标签筛选只做运行时单选,不持久化,不改 AppGrid / Pro / 数据结构。
  • 审核确认标签条不替换结果长条列表,不破坏 Return / Esc / 方向键、鼠标点击启动、IME composition 和焦点回到输入框契约。
  • 已复跑并通过标签筛选专项、启动契约、WindowServer 事件安全、系统应用索引、macOS 14 可用性 typecheck 和 scoped git diff --check

2026-08-28 26.0828-Taglauncher.quicksearchfilter-QA失败.md

  • 原始标题:Taglauncher quicksearchfilter QA失败。
  • QSF-QA-001 终态口令为 QA_FAIL_QSF,证据见 02-P/Round01-QuickSearchTagFilter/06-QA执行报告-8.4.0.md
  • 本轮真实 UI 对象确认为 /Users/ar/Projects/Taglauncher/03-O/C1.source/build/TagLauncher.app,旧 /Applications/TagLauncher.app 未计入 QA 证据。
  • 自动门禁全部通过,但真实 UI 发现两个阻断项:全部 chip 不能稳定清除筛选;含 未分类 等保护容器标签的数据触发 Swift fatal Duplicate values for key: '未分类'
  • QA PASS 前不得生成 8.4.0 可安装验收包,应先派回开发做最小返修。

2026-08-28 26.0828-Taglauncher.quicksearchfilter-QA返修复测.md

  • 原始标题:Taglauncher quicksearchfilter QA返修复测。
  • QSF-QA-002 终态口令为 QA_PASS_QSF_FIX,证据见 02-P/Round01-QuickSearchTagFilter/09-QA复测报告-8.4.0.mdQA-Retest-Evidence-8.4.0-20260828-QSF-QA-002/
  • 真实 UI 对象确认为 /Users/ar/Projects/Taglauncher/03-O/C1.source/build/TagLauncher.app,旧 /Applications/TagLauncher.app 未计入复测证据。
  • F1 复测通过:点击 全部 chip 可清除已选标签筛选并保持 Quick Search 面板稳定;普通标签切换、同标签二次点击清除、标签 + 关键词交集、鼠标结果行启动、Return 启动、方向键、Esc、外部点击和中文 IME smoke 回归通过。
  • F2 复测通过:隔离 fixture 覆盖 未分类Mac自带不常用__system.uncommon,未再触发 Duplicate values for key 崩溃,保护名未进入 Quick Search 筛选条。
  • 本 QA worker 未生成 DMG/pkg、未提交、未推远端、未改生产代码或版本 / 签名 / 发布链路;PMO 消费后才可生成 8.4.0 可安装验收包。

2026-08-28 26.0828-Taglauncher.quicksearchfilter-8.4.0本地包.md

  • 原始标题:Taglauncher quicksearchfilter 8.4.0 本地包。
  • PMO 消费 QA_PASS_QSF_FIX 后执行 QSF-PKG-001,终态口令为 LOCAL_TEST_READY_QSF
  • 版本收口为 8.4.0 (20260828.1732),源码冻结提交 c5bdc7f1eb3ff4287beeeebb17d4f02f376a8d38,归档提交 c8f827e
  • 本地安装体验包:/Users/ar/Projects/Taglauncher/03-O/C2.builds/LocalTest-8.4.0-20260828.1732/Archive/TagLauncher-8.4.0-build20260828.1732-localtest.dmg
  • SHA256:76647a1133fbb96abdb8dd0531dc83819ac58815057071671204b746b781070f
  • 验证通过专项 QA、构建、签名、macOS 14 build metadata、DMG 校验、只读挂载内容/权限检查和隔离启动 smoke。
  • 本包是 ad-hoc signed 本地安装体验包,不是 ASC/TestFlight 上传包,也不是 Developer ID 公证包;等待用户安装体验确认。

2026-08-28 26.0828-Taglauncher.quicksearchfilter-8.4.0正式冻结.md

  • 原始标题:Taglauncher quicksearchfilter 8.4.0 正式冻结。
  • 用户安装体验 8.4.0 (20260828.1732) 后确认“没有找到问题”,PMO 登记 Owner 验收并继续正式冻结。
  • 正式 App Store 上传版本为 8.4.0 (20260828.2219)
  • 源码冻结提交:7a94f69bb0dc5206a2e68d82486fd5959d16e664
  • Release archive 提交:e0b616c988e25d6db6e232c12056fb943c04e03e
  • Release tag:v8.4.0-build20260828.2219
  • App Store 上传包:/Users/ar/Projects/Taglauncher/03-O/K3.运营与发布资料/Release/AppStore-8.4.0-20260828.2219/Upload/TagLauncher-8.4.0-build20260828.2219.pkg
  • 上传包 SHA256:0d374a03b25c11a4bf9bad19238defd7c3043b72386ee70f7857e01f4f9d6318
  • 状态:ASC_UPLOAD_READY_QSF,等待 Transporter / App Store Connect 上传和 Apple 后台处理反馈。

2026-08-30 26.0830-Taglauncher.quicksearchfilter-TestFlight上传.md

  • 原始标题:Taglauncher quicksearchfilter 8.4.0 TestFlight 上传。
  • 用户要求上传到市场并走 TestFlight,以便再测试几天。
  • 上传版本:8.4.0 (20260828.2219)
  • Delivery UUID:482c12a7-543d-4dab-afac-aa4e1b4bb6d0
  • Apple 返回:import-status=VALIDprocessingState=VALIDbuild-status=BETA_INTERNAL_TESTINGbuildAudienceType=APP_STORE_ELIGIBLE
  • 状态:TESTFLIGHT_INTERNAL_READY_QSF;未提交 App Review,下一步是 Owner 通过 TestFlight 体验。