Open Issue 修复计划
盘点时间:2026-09-25
数据源:antdigital-ai/agentic-ui open issues
当前范围:11 个开放 issue
目标
- 优先消除影响输入正确性、流式渲染正确性和内容复制的缺陷。
- 将兼容性升级与常规缺陷拆分,避免 Ant Design 6 迁移阻塞补丁发布。
- 对咨询、反馈和信息不足的 issue 先完成分流,不把它们计入缺陷修复吞吐。
- 每个代码修复都包含回归测试、文档或 changelog,并通过相关组件测试、
pnpm tsc和 lint。
Issue 分流
修复批次
批次 1:正确性回归
#722 MarkdownEditor 流式松散列表重复
建议实现:
- 在 Markdown 多块解析返回前合并相邻同类型列表,使 schema 与 Slate normalize 后的树结构一致。
- 合并节点时组合各分块 hash,确保任一分块变化都会触发深比较。
- 收紧 store 的 hash 快速路径:仅在 hash 与子节点结构均一致时跳过比较,作为 normalize 改写节点后的兜底。
- 保持单块解析路径不变,避免破坏现有 links 路径计算。
验收标准:
- readonly + Slate 模式下,有序和无序松散列表在逐字符及小 chunk 流式更新时均不重复。
- 流式结束后的 DOM 与一次性解析结果一致。
- 覆盖列表后跟标题、表格、引用的场景,避免后续节点反复删除和插入。
- 新增 issue 提供的两个回归用例,并运行 MarkdownEditor、MarkdownRenderer 全量相关测试。
#721 MarkdownInputField IME 删除残留
建议实现:
- 使用 Playwright 在 Windows 微软拼音和至少一个 Chromium composition 事件序列上记录
beforeinput、input、change、composition*的顺序。 - 检查 MarkdownInputField、BaseMarkdownEditor 和受控值同步链路,避免 composition 期间把中间值回写成稳定值。
- 以
nativeEvent.isComposing和显式 composition 状态共同保护变更同步;处理“组合文本被删空后 compositionend 才到达”的边界。 - 确保 Enter 发送保护逻辑不回退。
验收标准:
- 未确认的
nihao逐字删除后值和 DOM 都为空。 - 选择候选词、取消组合、组合后立即发送、受控/非受控模式均正常。
- 至少覆盖 Chromium;手工验证 Windows 与 macOS 的一种系统输入法。
批次 2:输入与复制集成
#682 Suggestion Dropdown 配置
建议实现:
- 默认在 suggestion/tag 能力无数据或显式禁用时不挂载 Dropdown。
- 增加语义清晰的公开配置,例如
suggestionProps,至少支持enabled、getPopupContainer和必要的 Dropdown 透传项。 - 保持现有
tagInputProps行为兼容,不改变已有菜单的默认交互。
验收标准:
enabled: false时不产生 popup DOM,也不触发 ShadowRoot warning。- Shadow DOM 中可将 popup 放入与 trigger 相同的 root。
- API 类型、中文/英文文档、demo 和单元测试同步更新。
#201 apaasify 自定义组件复制
建议实现:
- 建立含可选择文本、嵌套交互控件和自定义
onCopy的 apaasify 最小用例。 - 定位 Slate/MarkdownEditor 的 selection、copy handler 或
preventDefault是否错误处理 React 自定义节点。 - 仅在存在有效 Slate selection 且确需序列化编辑器片段时拦截 copy;原生 DOM selection 交给浏览器。
验收标准:
- 自定义组件中的选中文本可通过快捷键和上下文菜单复制。
- 普通 Markdown、代码块、卡片和编辑模式的既有复制行为不回退。
- 若问题来自业务自定义组件,补充集成约束文档并关闭 issue,不修改核心代码。
批次 3:Ant Design 6 兼容专项
该项独立于补丁批次推进:
- 先审计 Ant Design 6、
@ant-design/icons、@ant-design/cssinjs、Pro Components 与最低 React 版本的兼容矩阵。 - 评估将
antd从直接 dependency 调整为 peer dependency,并在 devDependencies 中保留测试版本;避免消费者同时安装两个 antd 主版本。 - 建立 antd 5/6 双矩阵 CI,覆盖 ConfigProvider、token、弹层、表单、上传、Tooltip/Dropdown 等高风险组件。
- 修复废弃 API 和样式差异,补充安装与兼容性文档。
- 若无法在同一主版本兼容 antd 5/6,形成明确的下一主版本迁移方案,不用强制 resolution 作为正式解法。
验收标准:
- 安装时不产生 antd 主版本冲突,也不强制打包两份 antd。
- 核心聊天、输入、Markdown、Workspace 和弹层组件在 antd 5/6 矩阵中通过。
- 构建、类型检查、SSR 冒烟和文档站均通过。
Triage 与维护动作
- 为所有开放 issue 补充
bug、enhancement、documentation、needs-reproduction、compatibility等标签。 - #397、#201 设置
needs-reproduction,7 天无补充时发一次提醒,14 天后按信息不足关闭;后续可随时重开。 - #213 标为 #668 的重复项;#245 作为反馈关闭。
- #59 若没有可验证的体验目标,则转为 discussion 或拆成具体功能 issue。
- #330 在明确威胁模型、代码来源、依赖安装、网络权限、资源限制和浏览器隔离前,不承诺实现时间。
建议里程碑
工作量是基于当前 issue 信息的初估;#721、#201、#397 在拿到真实浏览器复现后重新估算。
完成定义
每个代码 issue 关闭前必须满足:
- 有失败优先的回归测试,修复后通过。
- 相关组件测试、
pnpm tsc、pnpm run lint通过。 - 公共 API 变化同步中英文文档和类型导出。
- 用户可感知变更同步中英文 changelog,并链接原 issue/PR。
- UI 或浏览器事件问题附带复现说明;必要时提供截图或录屏。
- PR 描述记录兼容性影响、风险和回滚方式。
