edit | blame | history | raw

WindowServer与性能稳定

生成日期:2026-07-09

当前状态

最近结论摘录

  • Usage Tips local mouse monitor 只处理同一 AppGrid 窗口的鼠标事件。
  • Usage Tips 坐标换算去掉跨窗口时基于 NSEvent.mouseLocation 的兜底,非本窗口事件直接返回 .zero
  • App note 泡泡编辑框从 SwiftUI TextField 改为 AppKit NSTextField 桥接。
  • App note 泡泡在 IME marked text 期间不覆盖、不截断、不提交文本,回车提交和 Esc 取消只在 marked text 结束后处理。
  • 新增 App note 泡泡输入静态 QA,并把 Usage Tips 同窗口收窄写进原有 QA。

核心事实补录

2026-07-01 2026-07-01-WindowServer会诊.md

# Taglauncher WindowServer 会诊
## 用户目标
- 作为代码审核员,基于管理员诊断说明会诊 TagLauncher 是否是 2026-07-01 大规模系统卡顿 / WindowServer watchdog 的重要原因之一。
- 按用户要求拉两位架构师和两位代码审核员共同做只读审查。
- 输出是否仍存在重大隐患,以及后续最小验证 / 缓解方向。
## 当前起点
- 作为代码审核员,基于管理员诊断说明会诊 TagLauncher 是否是 2026-07-01 大规模系统卡顿 / WindowServer watchdog 的重要原因之一。
- 按用户要求拉两位架构师和两位代码审核员共同做只读审查。
- 输出是否仍存在重大隐患,以及后续最小验证 / 缓解方向。
## 当前起点
- 项目:`/Users/ar/Projects/Taglauncher`
- 源码根目录:`/Users/ar/Projects/Taglauncher/src`
- 诊断说明:`/Users/ar/Documents/技术实验室/TagLauncher-WindowServer-CursorUIViewService-诊断说明-2026-07-01.md`
- 项目:`/Users/ar/Projects/Taglauncher`
- 源码根目录:`/Users/ar/Projects/Taglauncher/src`
- 诊断说明:`/Users/ar/Documents/技术实验室/TagLauncher-WindowServer-CursorUIViewService-诊断说明-2026-07-01.md`
- 开工时分支:`codex/pro-custom-hotkeys-8.2.0`
- 开工时 HEAD:`4c6f31c Remove non-source materials from source worktree`
- 开工时工作区状态:已有大量未提交改动,按用户 / 其他任务既有改动处理,本轮不回滚、不改源码。
- 最终核对时 HEAD 已由外部流程推进到 `0ae3a93 Prepare TagLauncher 8.3.1 candidate`,并带 tag `v8.3.1-build20260701.2302`;这不是本轮会诊创建的 commit。
## 核心事实 / 变更快照

2026-07-01 26.0701-Taglauncher.WindowServer会诊-四项修复.md

# TagLauncher WindowServer 会诊四项修复
日期:2026-07-01
## 用户目标
基于 `26.0701-Taglauncher.WindowServer会诊-风险复核.md` 的结论,修复 4 个发布前风险:
1. Quick Search 缺 IME marked-text guard。
基于 `26.0701-Taglauncher.WindowServer会诊-风险复核.md` 的结论,修复 4 个发布前风险:
1. Quick Search 缺 IME marked-text guard。
2. Quick Search global mouse monitor 可能在点击 IME 候选窗时关闭文本客户端。
3. Quick Search 输入更新期间重复 activate / orderFront。
4. TagNavigation 阻塞式 `mouseDown` 事件循环可能卡主线程。
## 当前起点
3. Quick Search 输入更新期间重复 activate / orderFront。
4. TagNavigation 阻塞式 `mouseDown` 事件循环可能卡主线程。
## 当前起点
- 仓库:`/Users/ar/Projects/Taglauncher`
- 源码根目录:`/Users/ar/Projects/Taglauncher/src`
- 分支:`codex/pro-custom-hotkeys-8.2.0`
- 起始 HEAD:`0ae3a93`,tag `v8.3.1-build20260701.2302`
- 备注:工作区已有历史 `src/Release/...` 发布资料脏改动,本轮未触碰。

2026-07-01 26.0701-Taglauncher.WindowServer会诊-风险复核.md

# TagLauncher WindowServer 会诊风险复核
日期:2026-07-01
## 用户目标
对照 `/Users/ar/Projects/Taglauncher-doc/chat-history/codex-sessionhistory/2026-07-01-WindowServer会诊.md`,以最新代码重新核查会诊中提到的 WindowServer / TextInput / 鼠标事件风险,拉上架构师和代码审核员判断还有哪些确实需要提前修复。
## 当前起点
对照 `/Users/ar/Projects/Taglauncher-doc/chat-history/codex-sessionhistory/2026-07-01-WindowServer会诊.md`,以最新代码重新核查会诊中提到的 WindowServer / TextInput / 鼠标事件风险,拉上架构师和代码审核员判断还有哪些确实需要提前修复。
## 当前起点
- 仓库:`/Users/ar/Projects/Taglauncher`
- 源码根目录:`/Users/ar/Projects/Taglauncher/src`
- 当前分支:`codex/pro-custom-hotkeys-8.2.0`
- 当前 HEAD:`0ae3a93`,tag `v8.3.1-build20260701.2302`
- 工作区:源码未新增本轮改动;已有脏文件为历史 `src/Release/...` 发布资料,未触碰。
- 仓库:`/Users/ar/Projects/Taglauncher`
- 源码根目录:`/Users/ar/Projects/Taglauncher/src`
- 当前分支:`codex/pro-custom-hotkeys-8.2.0`
- 当前 HEAD:`0ae3a93`,tag `v8.3.1-build20260701.2302`
- 工作区:源码未新增本轮改动;已有脏文件为历史 `src/Release/...` 发布资料,未触碰。
- 会诊基线:`2026-07-01-WindowServer会诊.md`
## 已完成事项

2026-07-02 26.0702-Taglauncher.Coder3-WindowServer预防收窄.md

# Taglauncher WindowServer 预防收窄
日期:2026-07-02
项目:Taglauncher
会话:Coder3
主题:WindowServer 预防收窄
## 用户目标
日期:2026-07-02
项目:Taglauncher
会话:Coder3
主题:WindowServer 预防收窄
## 用户目标
用户确认按会诊建议继续做两项预防性收窄,顺序为:
1. 先做 Usage Tips local monitor 事件来源收窄。
- 新增 App note 泡泡输入静态 QA,并把 Usage Tips 同窗口收窄写进原有 QA。
- 完整构建通过,生成 `/Users/ar/Projects/Taglauncher/src/build/TagLauncher.app`,构建号输出为 `8.3.1 (20260702.0128)`。
## 关键决策
- 不改 `OverlayWindowController` 的 `.nonactivatingPanel` 行为,避免扩大行为变化。
- App note 泡泡只替换输入控件内部实现,保留原泡泡布局、外观、备注长度上限和 Esc 取消语义。
- Usage Tips 只收窄事件来源,不改变显示、关闭提醒、按钮和翻页行为。
## 核心事实 / 变更快照

来源索引

时间线

2026-07-01 2026-07-01-WindowServer会诊.md

  • 原始标题:Taglauncher WindowServer 会诊
  • 诊断中的故障包:TagLauncher 8.3.0 (20260701.2029)
  • 本机 /Applications/TagLauncher.app 当前读到:8.3.0 (20260701.2234)
  • 当前源码 src/Apptag/Info.plist 读到:8.3.1 (20260701.2302)
  • 最终核对时 src/Apptag/ContentView.swiftsrc/Apptag/ApptagApp.swiftsrc/Scripts/tag_editor_mouse_event_qa.sh 对当前 HEAD 已无 diff,说明相关修复已经进入 0ae3a93
  • 20260701.2029 是本地验收 DMG,不是正式冻结包;会话记录已明确其未冻结 commit / tag。

2026-07-01 26.0701-Taglauncher.WindowServer会诊-四项修复.md

  • 原始标题:TagLauncher WindowServer 会诊四项修复
  • QuickSearch.swift
  • 新增 tagLauncherQuickSearchCompositionChanged 通知。
  • QuickSearchNativeTextField 上报 IME composition 状态。
  • updateNSView 在 marked text 期间不再覆盖 field.stringValue
  • doCommandBykeyDownhasMarkedText / composing 状态下放行给输入法。

2026-07-01 26.0701-Taglauncher.WindowServer会诊-风险复核.md

  • 原始标题:TagLauncher WindowServer 会诊风险复核
  • 读取项目治理、CODEGRAPH、调试和交付门禁规则。
  • 由架构师子 agent 和代码审核员子 agent 分别只读复核会诊意见与最新源码。
  • 主线程复核关键源码路径:
  • src/Apptag/QuickSearch.swift
  • src/Apptag/ApptagApp.swift

2026-07-02 26.0702-Taglauncher.Coder3-WindowServer预防收窄.md

  • 原始标题:Taglauncher WindowServer 预防收窄
  • Usage Tips local mouse monitor 只处理同一 AppGrid 窗口的鼠标事件。
  • Usage Tips 坐标换算去掉跨窗口时基于 NSEvent.mouseLocation 的兜底,非本窗口事件直接返回 .zero
  • App note 泡泡编辑框从 SwiftUI TextField 改为 AppKit NSTextField 桥接。
  • App note 泡泡在 IME marked text 期间不覆盖、不截断、不提交文本,回车提交和 Esc 取消只在 marked text 结束后处理。
  • 新增 App note 泡泡输入静态 QA,并把 Usage Tips 同窗口收窄写进原有 QA。