ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Plate 项目 Slate v2 零回归 RC 共识:IME/移动端/浏览器输入面的行为台账与证明恢复计划

Plate 项目 Slate v2 零回归 RC 共识:IME/移动端/浏览器输入面的行为台账与证明恢复计划 Plate 项目 Slate v2 零回归 RC 共识IME/移动端/浏览器输入面的行为台账与证明恢复计划【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate本文聚焦 Plate 仓库中 Slate v2 发行候选RC评审的核心难题如何在不依赖Chromium 上够用就好的前提下对 IME 输入法合成、Android/iOS 移动端键盘与 Firefox/WebKit 等怪输入weird-input表面做出零回归级别的发布承诺。读者将掌握一套以行为台账behavior ledger优先、缺证即阻断missing-proof-blocks为原则的四阶段执行方案从重开评审车道、播种双轴行为台账到文件级考古、分层恢复浏览器证明再到按实际证明宽度重写 RC 结论并了解对应的验证命令、平台证据分级与团队分工模型。一、问题框架为什么Chromium 绿了不等于零回归计划文档 2026-04-11-slate-v2-ime-mobile-browser-zero-regression-rc-consensus-plan.md 开篇就划定了一个严苛的问题边界Legacy Slate React 曾携带一整套平台与浏览器特有的怪输入补丁而当前的 Slate v2 有意裁剪了这些机制。Legacy 侧存在过的平台特化机制Android 输入管理器android-input-manager独立的组合/差异/刷新composition/diff/flush子系统restore-dom 突变修复基于 MutationObserver 的 DOM 漂移恢复密集 DOM 选择与组合处理围绕占位符、行内边缘、void 边缘的零宽文本语义。当前 Slate v2 侧实际拥有的能力mounted-bridge 的Editable组件ReactEditor/DOMBridge辅助表面Chromium Playwright IME 证明覆盖占位符、行内边缘、void 边缘三条路径专门的slate-browser辅助层。计划明确指出仅凭这些不足以声称在每一个被依赖的怪输入表面上零回归。这正是整个共识计划的出发点——行为承载面需要证明而非信心。在 Plate 当前仓库中该计划的配套证据文档保存于 docs/plans/2026-04-11-slate-v2-ime-mobile-browser-file-ledger.md行为台账与 docs/slate-v2-draft/true-slate-rc-proof-ledger.mdRC 证明台账源码运行时的对应实现位于packages/slate包内。二、决策框架三条路线与最终选择路线 A把 RC 声明收窄到已证明的浏览器表面优点成本最低对务实的桌面 RC可能足够缺点直接违反澄清后的规格且没有回答真正的风险问题状态在深度访谈边界下无效。路线 B只做文件级审查恢复工作延后优点当期实现成本低能给出清晰的未知项地图缺点强 RC 声明仍无支撑把缺证变成已知但接受的风险为规格所禁止状态无效。路线 C文件级审查 立即启动恢复计划最终选择优点符合澄清后的范围与阻断规则把缺证转化为可执行的 RC 程序形成持久台账而非一次性审查缺点比纯审查成本高可能暴露出真正缺失的平价工作并推迟强 RC 声明状态选定。计划中的 ADR 摘要决策运行行为台账优先的 legacy-vs-v2 浏览器/输入审查缺失的行为承载证明行立即转为 RC 恢复工作驱动严格零回归声明、缺证即阻断规则、仅引擎内部细节可豁免备选方案收窄到 Chromium-only 表面仅审查并延后恢复为何选定它是唯一既匹配澄清规格、又不悄悄降低发布标准的选项后果结果可能是RC 声明仍然过宽或需要在声明诚实之前投入针对性的恢复车道——但最终结论将真正有意义后续行动若台账只发现少量缺失行在同一条 RC 车道内恢复若发现大范围未证明的移动端/浏览器类别则收窄声明或在用户明确确认后接受更深层的平价项目。三、核心方法论证明优先与三条铁律计划将方法论凝练为五条原则是整个评审与恢复工作的宪法承载行为的浏览器/输入 legacy 表面需要证明而不是信心缺证默认阻断只有无用户可见浏览器/输入行为的引擎内部细节才允许豁免先做文件粒度审查再谈宽泛的平价parity措辞恢复工作针对真实的用户可见行为而非对已死内部架构的怀旧RC 措辞必须跟随已证明的覆盖宽度而不是架构乐观主义。配套台账 docs/plans/2026-04-11-slate-v2-ime-mobile-browser-file-ledger.md 中的三条基础规则与之一致行为承载行缺证默认阻断只有无用户可见浏览器/输入行为的引擎内部辅助代码可被豁免发布文档中旧有的better-cut措辞本身不能关闭本车道。这套规则的直接推论是零回归四个字只有在文件粒度证明齐备后才能写进 RC 文档——这正是后续所有阶段的目的。四、重开协议与门禁权威Day 0 规则重开必须先立碑、再动工在任何恢复工作开始前先在活跃 RC 文档中把浏览器/输入平价车道标记为reopened-under-challenge先更新规范真值文档包括本仓库中的 docs/slate-v2-draft/release-readiness-decision.md、docs/slate-v2-draft/replacement-gates-scoreboard.md、docs/slate-v2-draft/release-file-review-ledger.md 与 docs/slate-v2-draft/true-slate-rc-proof-ledger.md不允许侧台账悄悄质疑活跃文档仍标记为已关闭的车道。双权威分离执行权威行为/平价台账是唯一允许判定一行状态为proved已证明、blocking阻断、justified omission合理豁免的工件发布权威只有台账调和完成后的 RC 文档上述四份才允许决定公开结论。合理豁免Justified omission审批规则一行不能仅凭文件台账里的一条注释就降级为合理豁免必须完整记录确切的 legacy 文件确切的用户可见行为假设该行为为何实际是引擎内部、且对用户不可见当前吸收或删除该行为的负责人RC 审查负责人在行注释中的显式签字。只有完成上述全部记录对应 RC 文档才能镜像这一豁免。这一规则堵死了甩锅式豁免。五、范围界定范围内对 legacyslate-react浏览器/输入行为承载文件做文件粒度审查对当前slate-v2的对应物或替代实现做文件粒度审查恢复缺失的已删除测试浏览器/输入/IME/移动端行为当前证明缺失处的专门证明车道恢复基于已证明覆盖范围更新 RC 文档。范围外与浏览器/输入行为无关的泛化架构清理无用户可见行为依赖的内部 legacy 辅助恢复宽泛性能工作除非它阻塞怪输入/浏览器审查本身。六、执行计划四个阶段Phase 0重开车道并播种行为台账交付物在规范文档中重开活跃浏览器/输入 RC 车道将 docs/plans/2026-04-11-slate-v2-ime-mobile-browser-file-ledger.md 扩展为双轴行为台账字段包括[x]/[ ]审查状态、legacy 文件、行为假设、当前负责人/等价物、证明车道、浏览器范围、预期结果、实际结果、工件链接、负责人、状态从 git diff 中所有缺失的浏览器/输入测试开始播种用 legacy 文件播种行为行但不能仅凭 legacy 文件本身作结论工件。验收标准每个行为承载的 legacy 文件映射到一个或多个行为行每行保留显式[x]/[ ]审查跟踪每行具备证明台账风格字段每次豁免都有明确的责任人而不是一声耸肩。确定性播种步骤不允许执行者自创其他 diff 基准从 docs/slate-v2-draft/release-file-review-ledger.md 中已命名的浏览器/输入行与显式 better-cut 出发从slate-v2检出目录补充当前缺失的浏览器/输入测试packages/slate-react/test/**、packages/slate-dom/test/**、packages/slate-browser/**、playwright/integration/examples/**从/Users/zbeyens/git/slate添加同一行为族的配对 legacy 文件。钉死pinned的 diff 命令git -C /Users/zbeyens/git/slate-v2 diff --name-status --diff-filterACDMRTUXB origin/main...HEAD -- \ packages/slate-react \ packages/slate-dom \ packages/slate-browser \ playwright/integration/examples \ site/examples/ts根据文件台账的实际记录该命令在目标目录上的当前结果是EMPTY——即不存在隐藏在origin/main...HEADdiff 中未审查的浏览器/输入行种子因此来自活跃证明车道与 legacy 行为承载补丁文件本身。Phase 1配对 legacy / 当前场景行立即播种以下场景行占位符 IMEplaceholder IME无 FEFF 占位符 IMEno-FEFF placeholder IME行内边缘 IMEinline-edge IMEvoid 边缘 IMEvoid-edge IME失焦/聚焦选择恢复blur/focus selection recovery瞬时 DOM 点缺口 / 突变修复 / 聚焦恢复 fail-closed 行为零宽选择归一化zero-width selection normalization组合后撤销/重做post-composition undo/redoAndroid 组合 / 差异 / 刷新composition / diff / flushiOS Safari / WebKit 组合 / 聚焦Firefox 组合 / 选择恢复每行需要识别促使该行产生的 legacy 行为承载文件识别当前负责人mountedEditable、ReactEditor、DOMBridge、slate-browser证明车道或缺失。验收标准第一工件就是配对的 legacy/current 行为行当前与 legacy从一开始就对比而不是到最后才比。Phase 2把文件考古当作威胁模型优先级当前文件packages/slate-react/src/components/editable.tsxpackages/slate-react/src/plugin/react-editor.tspackages/slate-dom/src/bridge.tspackages/slate-browser/src/playwright/ime.tsslate-browser下的零宽 / 选择辅助表面对每行文件做三分类行为承载behavior-bearing、内部假设生成器internal hypothesis generator、合理豁免候选justified omission candidate。分类结果用于精化行为台账而非替代它。验收标准每个被审查文件要么喂给行为行要么被明确归类为非行为性。Phase 3证明恢复按以下优先级恢复缺失证明git diff 中缺失的已删除浏览器/输入测试现有浏览器证明的配对 legacy/current 场景行占位符 / 行内边缘 / void 边缘路径上组合后立即撤销/重做真实 Android 证明不止 hub 冒烟测试Firefox / 浏览器特定的聚焦/选择/组合恢复iOS Safari / WebKit 组合与聚焦行为。Phase 4RC 结论重写更新 docs/slate-v2-draft/release-readiness-decision.md、docs/slate-v2-draft/true-slate-rc-proof-ledger.md、docs/slate-v2-draft/release-file-review-ledger.md 与 docs/slate-v2-draft/replacement-gates-scoreboard.md。验收标准RC 措辞与实际证明宽度一致没有文件粒度证明的零回归措辞一律不得存活。七、平台证据阶梯关闭一行前的证据分级关闭任何平台/浏览器行之前必须把证据归类为以下三档之一证据类别含义automated-direct自动化直证针对该浏览器/平台的真实车道automated-proxy自动化代理桌面/浏览器自动化近似目标行为但并非目标平台本身manual-device-blocking手工设备阻断必须收集设备/浏览器工件后该行才可关闭硬规则Android / iOS Safari / Firefox 行不得仅凭 Chromium 证明关闭除非该行被重新归类为非行为性一行可被重新归类为非行为性仅当台账记录了确切的 legacy 文件、确切的用户可见行为假设、为何实际是引擎内部且不可见、吸收该责任的当前负责人、审查者在行注释中的显式签字。验收标准每个行为承载行要么直接证明、要么显式仍为阻断、要么被显式判定为引擎内部可豁免。八、验证路径与手工设备证据规范最小验证路径计划给出# slate-v2 工作区 pnpm --filter slate-react test pnpm exec mocha --require ./config/babel/register.cjs ./packages/slate-react/test/**/*.tsx pnpm test:slate-browser:ime:local此外还包括任何新加的专门浏览器车道每条恢复行对应的代表性 legacy-vs-v2 浏览器证明。在当前仓库的证明车道矩阵 docs/slate-browser/proof-lane-matrix.md 中同一套验证被组织为更细的命令体系yarn test:slate-browser:core纯辅助语义无真实浏览器依赖yarn test:slate-browser:dom聚焦的 DOM 背书契约检查yarn test:slate-browser:selection选择辅助与浏览器选择语义yarn test:slate-browser:e2e/e2e:local宽泛 v2 示例集成矩阵排除专门的 IME/锚点/替换矩阵车道yarn test:slate-browser:ime/ime:localIME/组合浏览器真值yarn test:replacement:compat:local跨仓库稳定兼容行。车道选择规则也很直接辅助 API 还诚实吗→ core/dom/selectionmounted 编辑器还正常吗→ e2eIME 还能用吗→ ime锚点稳定吗→ anchors。手工设备阻断工件根目录手工设备行的每条记录必须链接屏幕录制或截图集、操作转录action transcript、预期 vs 实际行为、浏览器/设备标识、最终行状态。浏览器行要求证据操作转录、DOM 转储、选择转储、截图、精确的预期 vs 实际行为、平台证据阶梯中的证据类别。这些要求与 docs/slate-v2-draft/true-slate-rc-proof-ledger.md 中的浏览器/代理工件规则一一对应选择转储、DOM 转储、截图、操作转录、动作、预期结果、实际结果、工件链接。九、团队分工与执行模式可用代理类型planner、architect、critic、explore、researcher、code-reviewer、executor、test-engineer、verifier、vision。面向$ralph的指导主负责人台账上的单一主执行车道推荐推理强度文件审查与平价分类high、恢复实现high、浏览器证明解读high建议顺序① 完成完整文件台账 → ② 按优先级恢复缺失证明行 → ③ 只有在那之后才重写 RC 措辞。面向$team的指导车道 1legacy 文件考古 分类车道 2当前slate-react/slate-dom平价映射车道 3专门浏览器证明恢复车道 4证据落地后的文档/结论重写。推荐推理强度考古/分类车道medium、浏览器/输入恢复车道high、结论/文档车道medium。启动提示$team /Users/zbeyens/git/plate-2/.omx/specs/deep-interview-slate-v2-ime-mobile-browser-zero-regression-rc.md团队验证路径把各车道发现合并进单一文件台账每行标记为proved/blocking/justified omission对每条新恢复的行运行聚焦浏览器证明只有在台账不再有无法解释的缺口后才更新 RC 文档。最终推荐执行模式$ralph。理由该工作顺序性强且对证据敏感台账需要一个唯一负责人每条缺失证明行都可能转成针对性实现这条流程受益于单一持久负责人而非一开始就宽泛并行。十、台账快照各平台证明的当前真实状态结合本仓库 docs/plans/2026-04-11-slate-v2-ime-mobile-browser-file-ledger.md 的记录双轴行为台账的最新状态可以归纳如下注意计划文档所述文件路径位于外部 slate-v2 工作区此处仅摘录结论性事实Chromium桌面——证明充分占位符FEFF 与 no-FEFF 两条路径含延迟逐键输入、行内边缘、void 边缘的组合证明均为绿色组合后撤销/重做在四条路径上都有专门 IME 历史证明。Firefox桌面——本地车道已穷尽local-closed通过 Playwrightkeyboard.insertText在占位符、no-FEFF 占位符、行内边缘、void 边缘上建立了更强的直证组合车道另有专门的拖拽卸载清理、多范围表格选择、嵌套可编辑聚焦车道本地 Firefox/浏览器平价已穷尽剩余工作不在 Firefox 侧。桌面 WebKit——显式直证天花板insertText可干净提交但不暴露组合特定输入事件因此保留显式直证天花板探针与代理车道而不伪造直证组合证明零宽归一化与失焦/聚焦恢复有直证。Android——结构行为直证、键盘特性工具受阻tooling-blocked / externalAppium Android Chrome 模拟器上占位符、行内边缘、void 边缘、split/join、空重建、删除范围、结构special子用例均有直证绿色行直接探针可显示keyboardShown: true并切换到NATIVE_APP但暴露零个 Gboard 候选节点硬件键码只产生字面cant插入——因此autocorrect / glide / voice明确属于工具受阻的外部证据行。iOS Safari / WebKit——部分直证、其余工具受阻tooling-blocked / non-RC行内边缘与 void 边缘有直证绿色打包行需在输入前把 DOM 选择折叠到前导零宽文本叶占位符与 no-FEFF 占位符通过 XCUITestvalue输入仍为行为红blockTexts: 、重复input:undefined:[null]、slateSelection: 0.0:0|0.0:0更广的 iOS Safari 组合/聚焦行为工具受阻外部证据计划见 docs/plans/2026-04-12-ios-safari-broader-composition-focus-external-evidence-plan.md。已关闭行瞬时 DOM 点缺口 / 突变修复 / fail-closed 聚焦恢复closed——当前聚焦时瞬时 DOM 点失败已被覆盖且 fail-closed主 IME 行在无restore-dom的情况下全绿结构 Enter/Backspace 抖动在 Chromium 与 Android 上经编辑器自有 keydown 路径全绿被删除的 restore-dom 家族被定性为重渲染时代的守卫不再是独立当前阻断项。总体结论台账原话Chromium IME/浏览器证明真实且值得保留强零回归 RC 声明仍被平台/浏览器证明漏洞阻塞剩余行为承载行收敛为两块——Android 键盘特性autocorrect/glide/voice与更广的 iOS Safari/WebKit 组合聚焦本地 Firefox 车道已穷尽。十一、遗留平台怪癖清单要证明的隐性行为是什么文件台账的Exact Legacy Compat Behaviors Still Unproved章节列出了必须逐条对峙的 legacy 行为假设它们是零回归声明的真正语义载荷Androidbeforeinput在 Android 上不可取消legacy 因此绕过普通 DOM 路径、改走 Android 输入管理器Android IME 可能在 Slate 设置选择后重新应用自己的选择legacy 因此在动画帧与超时两个阶段各强制一次选择Gboard 拼写检查状态需要在动画帧选择更新后再补一次强制选择变更当前本地 Appium Chrome 栈能证明键盘可见性但无法暴露或接收 Gboard 候选autocorrect/glide/voice 只能是外部证据行。Safari / WebKitWebKit 中 shadow-root 的selectionchange需要奇特的execCommand(indent)/ deselect 变通路径Safari 可能在compositionend之前分发beforeinput(insertFromComposition)因此组合状态必须提前清除Safari 失焦后即使可编辑区已失焦仍可能遗留选择范围Safari 粘贴InputEvent可能丢失 Slate fragment 载荷需要剪贴板回退路径。FirefoxFirefox 选择读取需要特殊处理因为常规选择方式可能撒谎嵌套可编辑聚焦必须弹回主编辑器以避免键盘导航破坏调用setDomSelection可能破坏 Firefox 多范围表格选择Firefox 拖放流程需要全局dragend监听因为被拖节点可能在自己的dragend前卸载。主证据文件legacy 侧packages/slate-react/src/components/editable.tsx旧浏览器/输入复杂度中心含 Android 管理器接线、restore-dom、Firefox/Safari 兼容与历史/浏览器事件策略、string.tsx零宽、void 间隔、占位符 DOM 语义、android-input-manager两个文件显式 Android 组合/差异/刷新子系统以及restore-dom两个文件组合敏感阶段的缓冲突变恢复。十二、结论RC 措辞必须匹配证明宽度这份共识计划最有价值的产出不是一个补丁而是一条纪律行为承载的浏览器/输入表面其发布结论必须由文件粒度的证明台账背书缺证默认阻断豁免必须显式签字Android/iOS/Firefox 行不得由 Chromium 证明代打。四阶段路线把零回归从一句营销话术改造成一个可执行、可审计、可验证的工程程序——先立台账、再恢复证明、最后才允许改写 RC 结论。对本仓库读者而言可以直接沿着 docs/plans/2026-04-11-slate-v2-ime-mobile-browser-file-ledger.md双轴行为台账、docs/slate-v2-draft/true-slate-rc-proof-ledger.mdRC 证明台账、docs/slate-browser/proof-lane-matrix.md证明车道矩阵与 docs/slate-browser/overview.md分层测试框架理念继续深入台账告诉你哪些行为必须证明车道矩阵告诉你哪条命令证明哪种真值而本计划告诉你如何让结论跟上证据。【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表