## 现象 仓库里现在已经出现多张彼此不重复、但共享同一类跨平台设计缺口的 issue: - #153 QA helper-window 生命周期 / 可拖动语义 - #154 Windows 双热键事件源生命周期风险 - #139 Capsule helper-window 生命周期 - #127 / #142 主窗口与 Capsule 的圆角 / 外框 / 边缘不贴合问题 这些问题表面上落在: - hotkey - helper-window - 拖动 - 圆角 - 截图 - focus - topmost - dead zone 但根上都指向同一个治理缺口: ```text 我们缺少一份跨平台 helper-window / native-window contract, 导致 macOS 上自然成立的实现方式,被直接平移到 Windows / Linux 后只兼容了一部分语义。 ``` 这次 QA 这条线已经把这个问题暴露得很典型了: - macOS 的原始产品目标其实没错 - 错的是把 macOS 当前这版实现方式直接当成跨平台模板 - 一旦先做分层,问题会收得很快 - 一旦不分层,就会在单个 bug 票里反向推设计,越修越累 ## 影响 如果不把这类问题提升到设计治理层,后续会持续发生: - 先在 Windows 暴露半兼容症状 - 再在单点修复里一边猜平台差异、一边补 workaround - 最后 feature family 的产品语义和平台实现边界都越来越模糊 对当前仓库的直接影响包括: - helper-window 的 show / dismiss / hidden / non-participating 契约不一致 - 可拖动语义无法跨平台稳定承载 - 窗口外观问题和交互问题容易被混在一起 - 测试和回归也不容易知道自己在验证“产品目标”还是“某个平台的小补丁” 从工程经验角度看,这已经不是“顺手记个心得”的程度了,而是值得单独沉淀的一条治理规则。 ## 建议接受标准 - [ ] 产出一份平台无关的 `helper-window / native-window contract`,明确哪些产品目标必须跨平台一致 - [ ] 对 contract 做平台分层:macOS 如何承载、Windows 如何承载、Linux 是否 best-effort - [ ] 把 #153 作为经典案例写进治理说明:说明为什么 `non-activating but draggable` 不能继续直接复用 macOS 当前实现方式 - [ ] 把现有相关 issue 作为首批案例挂进来,至少包括 #153 / #154 / #139 / #127 / #142 - [ ] 明确哪些问题属于 helper-window / 生命周期族群,哪些属于 Windows UI 外观族群,避免后续误混 - [ ] 后续新增类似窗口能力时,先对照治理 contract 再选平台实现,而不是等 Windows 症状暴露后再反推设计 ## TODO / 不确定项 - 这份治理说明后续是否要正式落进 `docs/` 作为长期设计约束 - Linux 是否应正式定义为 best-effort,还是也要求达到同等产品目标 - 后续可以继续把更多现存 issue 挂到这张治理 issue 下,作为同族群案例库
现象
仓库里现在已经出现多张彼此不重复、但共享同一类跨平台设计缺口的 issue:
这些问题表面上落在:
但根上都指向同一个治理缺口:
这次 QA 这条线已经把这个问题暴露得很典型了:
影响
如果不把这类问题提升到设计治理层,后续会持续发生:
对当前仓库的直接影响包括:
从工程经验角度看,这已经不是“顺手记个心得”的程度了,而是值得单独沉淀的一条治理规则。
建议接受标准
helper-window / native-window contract,明确哪些产品目标必须跨平台一致non-activating but draggable不能继续直接复用 macOS 当前实现方式TODO / 不确定项
docs/作为长期设计约束