Changelog

Unreleased

  • MarkdownEditor

    • ⚡️ 稳定插件列表并预先索引节点渲染器,添加纯渲染插件不再重建 Slate 实例和选区。
    • 🐞 后注册的节点渲染器可覆盖默认插件;正确同步只读模式、Slate 子节点和 DOM 属性,保留嵌套代码围栏的解析与导出。
  • Plugins

    • 🐞 代码块语言更新即时回退源码视图,热更新与卸载保留已接受的代码草稿;公式加载到绘制期间保持源码,避免占位闪烁与回退内容重叠。
    • ⚡️ 代码预览、折叠与思考块不再创建隐藏 Ace 实例,清理异步主题和事件任务,加载期间显示源码。
    • 🐞 图表正确响应等行数改值、列标题和外部配置更新,移除延迟重挂载;合并 Slate ref 并跟随局部容器尺寸调整布局。
    • 🐞 Mermaid 取消过期加载与绘图回写,共享渲染队列隔离主题;窄容器和加载回退不再保留多余空白。
    • ⚡️ KaTeX 相同正文复用公式 DOM,清空立即生效;未闭合流式公式和加载失败保留源码,长公式可横向滚动。
  • Components

    • 🛠 移除与 Ant Design 重复的 IconButton、SwitchButton、ToggleButton 及其 Props 导出,直接使用 antd 的 Button 和 Tooltip;isLoading 改用 loading,尾部图标放在按钮子节点中,切换状态由调用方管理。
  • Workspace

    • 💄 重整 Workspace 演示的交付概览、文件浏览和实时预览,统一间距与嵌入尺寸;首屏展示完整结果,按需重播生成过程,移除持续随机刷新和无效示例操作。
    • ⚡️ 只读实时内容与文本预览默认使用轻量 Markdown 渲染,移除重复正文同步;流式正文更新不再触发标签栏重渲染,保留显式 Slate 渲染配置。
    • ⚡️ 文件列表使用 CSS 文本截断,树路径索引按需构建;浏览器结果与任务行复用稳定节点,减少测量和无关更新。
    • 🐞 文件预览取消旧请求并回收 Blob,相同来源和语言切换不再重复加载;修复空正文回退旧内容、加载失败持续占位及流式强制滚动问题。
    • 💄 修正面板高度和滚动区域、窄屏标签与长文件名布局;精简过渡及计数动效,补充触屏操作、键盘焦点和减少动态支持。
  • Docs

    • 📖 移除原生 Input/Select、Segmented 和重复按钮的展示页、demo 与导航搜索入口,保留 Markdown 输入等专属场景并迁移按钮示例。
    • ⚡️ 长文本演示使用有限分批生成并支持取消;流式代码、图表和任务改为按需重播、完成后停止更新,稳定直方图样本并清理卸载后的异步任务。
    • 🐞 修复聊天演示重复发送及回复回写、演示样式相互覆盖、任务展开状态失效,以及编辑器、图表和配置面板在窄容器中被压缩或裁切的问题。
    • 💄 恢复所有文档 demo 的默认外框与说明区分隔线,适配明暗主题并保留完整预览高度。
    • 🐞 静态首页随初始 HTML 输出完整样式,无后缀文档及 demo 路由提供对应入口,修复首次访问先闪出错乱首页的问题。
    • 💄 清理编辑器、会话、图表及辅助 demo 自带的装饰外框与阴影,避免与文档外框叠加;保留控件、表格和样式定制演示的边框。
    • 🐞 独立 demo 路由显式使用精简布局,避免代码预览内重复出现站点顶栏和文档侧栏。
    • 💄 收紧首页区块间距并适配窄屏演示预览;轮播改为内容高度,移除无交互的两屏滚动占位。
    • 🐞 首页卡片改为按钮控制翻面,避免悬停误触;展台连续切换即时响应,导航支持键盘及触屏操作,加载演示时提供状态反馈。
    • ⚡️ 首页标题仅在入场时播放翻字动效,切换动效使用位移和透明度过渡;Canvas 在轮盘移动后启动并保留暂停进度,减少切换时的重建与空白重播。
    • 🐞 修复 Ant Design reset 样式导致顶栏导航文字与搜索框、主题按钮和 GitHub 图标垂直错位的问题。
    • ⚡️ 首页演示接近视口后才加载,增强设计各标签按需加载,减少首屏编辑器、图表依赖和隐藏 DOM。
    • ⚡️ 首页粒子、轮播和打字动画在屏外及后台暂停;缓存静态粒子、精简轮盘节点并批量推进演示正文,减少持续绘制和渲染。
    • 🐞 保持首页静态生成与首次客户端语言一致,避免语言偏好导致整页重新挂载;受限存储环境仍可切换语言。

v2.33.1

  • 🛠 显式添加 @types/node 为 devDependency,修复 father build 生成声明文件时 process / NodeJS.Timeout 类型缺失导致的构建失败。

v2.33.0

  • MarkdownInputField
    • 🆕 新增内联原子 chip 体系(composerChips):slash 命令 chip(结构化技能节点 + 发送前 onSlashChipGate 拦截)、@file / @folder 与 @symbol 内联 mention chip,从纯文本标签升级为 Slate inline void 节点,整体删除、点击配置、发送时序列化为 /name 与 @path。
    • 🆕 新增长文本粘贴折叠(longTextFold):纯文本粘贴 ≥1200 字符或 ≥12 行时折叠为「长文本」chip(展示字符 / 行统计,点击弹出原文预览),发送时还原原文。
    • 🆕 新增 fragment 级草稿恢复(draft):idle / blur / send / switch / unmount 自动提交,draftKey 切换时自动恢复;默认 localStorage,可自定义 storage。
    • 🆕 新增上下文用量指示(contextUsage):工具栏环形指示器 + 内置 ContextUsagePanel 详情面板(分类分段条形图、可展开明细、高用量警告、compact 压缩操作),独立导出 ContextUsageIndicator / ContextUsagePanel / computeBarSegments。
    • 🆕 新增分支选择(branch):分支 pill + 可搜索下拉菜单(当前分支未提交概览、逐分支切换 spinner、新建分支入口、文案定制),独立组件 ComposerBranchTrigger 一并导出。
    • 💄 slash chip 色调对齐 IDE resolveSlashCommandToneKey:plan / goal 命令专属色,未配置 chip 无后续输入时展示 placeholderText。
    • 🛠 导出 insertComposerChip / withComposerChips / findUnconfiguredSlashChips / handleLongTextPasteFold 及 ComposerChipNode 系列 chip 工具函数与类型。
  • MarkdownRenderer
    • 🐞 修复 throttleOptions.fade 切换后缓存块复用旧 token 树的问题:fade 配置变化现在会重建 processor 触发重解析,流式结束仍保持 processor 稳定不卸载重组件。

v2.32.49

  • OfficeViewer
    • 🐞 动态加载 @silurus/ooxml 子模块时对 Webpack / Vite 使用 ignore 注释,业务工程未安装 optional peer 时不再构建失败;运行时未安装 peer 时回退 jsDelivr ESM。
    • 🛠 Workspace Office 预览仅静态引用 inferOfficeFileType 工具,避免同步打入完整 OfficeViewer 实现。

v2.32.48

  • OfficeViewer
    • 🆕 新增 OfficeViewer 组件:基于 optional peer @silurus/ooxml 预览 docx / xlsx / pptx;未安装时降级提示,WASM 默认 CDN 可经 wasmUrl 覆盖。
    • 🆕 PPTX 新增左侧缩略图侧栏(enableSlideRail,默认开启):点击缩略图跳转对应页,关闭后退化为连续滚动视图。
    • 🆕 支持复制内容:docx / pptx 默认启用文本层可划选复制(enableTextSelection);xlsx 选中单元格后 Ctrl/Cmd+C 以 TSV 写入剪贴板。
    • 📖 新增「Markdown 中渲染卡片」文档演示:Word / Excel 渲染为文件卡片、PPTX 卡片内展示幻灯片缩略图列表,点击卡片打开详情预览。
  • Workspace
    • 🆕 File 预览接入 Office 三件套:.docx / .xlsx / .pptx 可内联预览;旧版 .doc / .xls / .ppt 与 csv 仍不走 Office 预览。

v2.32.47

  • Test

    • ✅ 新增 E2E:SandboxRenderer 沙箱渲染(Shadow DOM 渲染/交互/作用域隔离,#330)、MarkdownEditor WYSIWYG 即时转换(默认配置转换矩阵,#59)、首页 footer 可见性(#397)。
  • MarkdownEditor

    • 🐞 改进所见即所得体验:# 标题转换不再限制文档首段,任何正文段落输入即转;- /[ ] 列表转换在 matchInputToNode 默认关闭时也放开正文段落(首段保护保留,避免聊天输入框误转)。Closes #59
  • SandboxRenderer

    • 🆕 新增 SandboxRenderer 组件,安全渲染 coding agent 生成的 JavaScript 代码:节点创建走真实 DOM、查询限定在 Shadow DOM 容器内,继承 ProxySandbox 超时中断与全局对象白名单。Closes #330
    • 🆕 ProxySandbox 新增 renderRoot 配置:指定后沙箱内 document 切换为作用域实现(createElement 等返回真实节点,querySelector / getElementById 限定在根节点内),并以 shadowRoot 名称暴露给脚本。

v2.32.31

  • MarkdownRenderer
    • 🛠 移除全部流式动画与字符队列(段落淡入、分帧渐进淡入、CharacterQueue 打字机及 AnimationText),流式内容改为经 useStreaming 缓存后即时渲染;删除 queueOptions、streamingParagraphAnimation、isFinished 等已无作用的 API 与导出。
    • 🆕 新增 ContentThrottle + useContentThrottle,将一次性到达的大段 SSE 文本按帧顺序推进展示,缓解整页突变;isFinished / throttleOptions 透出至 MarkdownPreview 与 ReadonlyMarkdownEditorView。
  • TaskList
    • 💄 simple 变体 wrapper 使用 fit-content 避免撑满整行。
  • ToolUseBar
    • 💄 工具容器改用 grid 0fr/1fr 过渡替代 max-height,并注册 --tool-rotate 自定义属性以稳定旋转动画。
  • Workspace
    • 🆕 FileTree:仅预览模式下支持合成树叶子节点绑定。
  • 🛠 样式系统
    • 🛠 移除 useGenStyle 返回的废弃 wrapSSR 包装函数,useStyle 不再返回 wrapSSR。
    • 🛠 全量移除 70+ 组件中的 wrapSSR(...) 包裹调用,组件直接返回 JSX。

未发布

  • Bubble

    • 🐞 完成或停止生成时立即展示缓冲正文并退出流式状态,即使配置仍显式开启 streaming;清理逐词节点并保留音视频播放状态。
    • ⚡️ 流式更新复用未变的列表行 React 元素,减少历史行子树创建和包装组件渲染;正文追加时保持附件与默认思维链稳定,配置及状态变化仍即时更新。
    • 🐞 修复空操作栏无法恢复、自定义操作被隐藏、引用占位符未替换及原文链接无法跳转;保留数字与数组正文,操作栏显隐及切换悬浮模式时保留编辑草稿。
    • 🐞 统一 quote、Context、操作栏与 ref 的公开类型,接通 styles / classNames 的简短语义字段;附件和语音配置更新即时生效。
    • ⚡️ 合并 AI 气泡重复容器,省略空标题与前后区域;懒加载共用列表行和观察器,追加消息或切换加载策略时保留已显示消息状态,骨架屏不再计算隐藏消息。
    • ⚡️ 普通只读消息默认使用 MarkdownRenderer,编辑态、Slate 专属配置/插件及编辑器配置注释保留 Slate;引用预览按需挂载并保留语言环境与表格全屏交互。
    • 🛠 移除独立的 PureBubble、PureAIBubble、PureUserBubble、PureBubbleList 和 PureBubbleListProps,统一使用 Bubble / BubbleList;简洁样式通过 pure 配置。新增 @ant-design/agentic-ui/Bubble 按需入口。
    • 🐞 统一正文配置的优先级,保留 markdownRenderConfig.initValue 和显式 readonly;正文默认只读,原 Pure 用法需要编辑时请设置 readonly={false}。修复扩展消息字段、会话配置及回调变化被 memo 忽略的问题。
    • ⚡️ 流式更新复用未变的历史消息、样式和上下文;loading 消息使用稳定标识,避免重复挂载与丢失内部状态。
    • ⚡️ 删除每条用户消息的一层重复容器,稳定正文属性,避免反馈与布局状态变化重复渲染未变正文。
    • ⚡️ Schema 编辑桥接仅在开发环境按需加载;外部正文更新直接反映在当前渲染,避免旧正文回显与额外渲染。
    • ⚡️ 引用列表仅在展开时挂载条目,折叠或关闭预览时释放隐藏内容;Slate 正文更新复用编辑器同步入口,避免重复解析并保留插件配置。
  • MarkdownRenderer

    • ⚡️ 流式更新直接复用未变块的 React 元素,单个块仅保留最近一次解析结果;相同 HTML 配置与空插件数组不再重建解析器,减少历史块计算与回退分支的缓存占用。
    • ⚡️ 普通文本与代码正文按片段处理流式 token;脚注按已提交的定义上下文增量解析尾部,仅更新变化的引用预览,新全局定义或正文修订仍完整校验。
    • ⚡️ 隔离代码块与表格的配置订阅,复用未变图表数据和 Schema 默认渲染;代码工具栏减少一层 DOM,尚未形成图表的流式内容不注册 resize 监听。
    • ⚡️ 普通流式正文复用已完成块,仅重新切分末尾窗口;复杂指令保留完整处理,修订、回退与清空仍正确重置。静态正文首帧同步显示,重新开启空流时清除旧正文。
    • 🐞 限流器比较实际已展示的前缀,修复修改前文但边界字符相同时沿用旧展示进度的问题。
    • 🆕 新增 tableConfig,支持原生表格按需打开弹窗或抽屉全屏预览。
    • ⚡️ 脚注定义按正文统一解析并共享给引用角标,移动端预览首次点击才挂载;只读音视频默认不预加载。
    • 🐞 稳定节点渲染桥接,链接、脚注和表格配置更新即时生效并保留媒体播放进度;打开中的表格预览与代码块不再因配置回显重挂载。
    • ⚡️ 清理已封版或已结束流式输出的逐词动画节点,合并相邻文本并保留格式、图表及媒体实例;结束流式输出时不再重复挂载已显示段落。
  • TaskList / ToolUseBarThink / ToolUseBar

    • ⚡️ 收起的任务与思考正文首次展开才挂载,展开后保留自定义内容状态;任务展开仅更新对应行,工具条不再创建空的隐藏内容容器。
  • Workspace

    • ⚡️ 精简文件行、文件树叶子和搜索结果的 DOM,按需挂载图片预览;稳定文件行数据引用,避免折叠其他分组时重复渲染文件内容。
  • MarkdownEditor

    • ⚡️ 稳定插件与编辑器上下文,减少卡片与 Tag 的选区订阅和节点遍历;合并普通输入的选区查询,精简链接卡片 DOM。
    • ⚡️ 只读入口隔离 Slate 运行时依赖,流式更新复用评论观察器;编辑态删除评论时才加载 Slate 操作。
    • 🐞 节点更新和嵌入式代码、Tag 编辑在执行时校验当前 Slate 节点身份,避免节点移动、删除或正文替换后写入相邻节点;表格索引路径随结构变化同步。
    • 🐞 修复只读反向选择、键盘选择与跨编辑器选区同步;加载正文仅清理当前编辑器的浏览器选区,聚焦回调保留插件序列化。
    • ⚡️ 合并连续选区通知并取消卸载后的任务,对相同文档和选区去重,避免重复回调、序列化与测量;相同文字位于不同位置时仍更新浮条定位。
    • ⚡️ 代码块普通输入保留已有空文本叶子,减少多余的 Slate 删除和插入操作;中文输入法组合结束后再提交,禁止只读或输入法组合期间的结构快捷键,切换只读时保留防抖中的最后一次输入。
    • ⚡️ 普通输入和选区变更改用 Slate 脏路径规范化,避免反复清洗、复制及序列化整棵文档;保留导入数据与强制规范化的完整校验。
    • ⚡️ 粗体文字复用 Slate 叶子节点,移除重复的装饰 span;普通文字不再为恢复 Jinja 占位符而递归复制 React 子树。
    • ⚡️ 表格行列索引仅在激活时挂载操作工具及外部点击监听器,并隔离稳定的操作上下文,减少大表格的隐藏 DOM、全局监听器与输入重渲染。
    • 🐞 高亮范围按节点及 Jinja 配置缓存且只合并一次,避免重复装饰及改写外部高亮缓存;选区移动不再重复计算占位符。
    • ⚡️ 任务列表的指派候选首次打开才加载,移除挂载时的空指派写回,避免多任务列表触发批量请求和正文更新。
    • ⚡️ 合并媒体和只读图片的重复包装节点,拖拽图标复用现有节点;图片与媒体工具栏关闭后释放隐藏内容,保留选区映射与播放实例。
    • ⚡️ 减少 Tag、卡片与表格单元格的全文订阅;合并增删列的规范化批次,复用未变单元格的列宽计算。
    • ⚡️ 编辑态只初始化一次编辑器与初始文档,避免属性回显重复解析 Markdown;Tag 候选项仅在打开时加载,共享面板只加载一次。
    • 🐞 切换只读或同时更新插件与初始值时保留当前编辑草稿;只读内容更新仍正常同步。
    • 🐞 修复跨段选区粘贴使用过期路径的问题;onPaste 返回 false 时保留选中文字,空或无效的 Slate 剪贴板片段允许回退到纯文本。
    • 🐞 自动保存与 store.getMDContent() 统一使用插件序列化;Markdown 解析缓存按插件与配置隔离,避免不同插件串用节点。
    • 🐞 清空正文或替换异步加载任务时取消旧帧,避免旧内容重新出现或旧任务覆盖新任务的取消句柄。
    • ⚡️ 图片与音视频使用实际展示元素加载,移除重复预加载与挂载时的文档写入;未选中图片不挂载缩放手柄,音视频仅预加载元数据。
    • 🐞 图片缩放按松手时的最终尺寸保存,支持外部尺寸与地址更新;节点移动后缩放和删除仍作用于原媒体。
    • 🐞 修复卡片缓存遮蔽媒体尺寸、地址及删除更新的问题;修改音视频说明或尺寸时保留播放位置。
    • 🐞 选中媒体后输入、回车或粘贴时在卡片后创建可见段落;删除保留有效光标并支持单步撤销,避免隐藏文字、空卡片与路径错误。
    • 🐞 统一图片、音视频与附件的复制和剪切入口;剪贴板写入成功后才删除正文,支持插件序列化、路径移动保护与单步撤销。
    • 🐞 媒体链接插入支持真实请求超时与重复操作互斥,异步结果不再覆盖等待期间的新编辑;多文件粘贴保留文件顺序与类型。
    • 🐞 修复表格闪动:删除表格行入场动画(tbody tr 的 agenticMdBlurFadeIn)。流式增量会反复重挂表格行导致 blur 淡入重放;agenticMdBlurFadeIn keyframes 仅保留供 MarkdownRenderer 流式逐词淡入使用。
    • 🐞 修复 readonly 流式渲染松散列表时条目被反复追加;多块解析结果现在会在进入 Slate 前合并相邻同类列表,并收紧 hash 快速路径的结构校验。#722
    • 🐞 修复 IME 组合文本全部删除后,compositionend 回补旧片段导致残留首字符的问题。#721
    • 🐞 apaasify 自定义渲染内容使用浏览器原生复制,不再被 Slate 的 schema 片段复制逻辑覆盖。#201
  • MarkdownInputField

    • 🆕 新增 suggestionProps,支持通过 enabled: false 关闭内部 Dropdown,并可配置 getPopupContainer、destroyOnHidden、forceRender 与 placement。#682
  • 📦 兼容性

    • 📦 支持 Ant Design 5.29.3 至 6.x:antd 改为 peer dependency,开发环境升级至 antd 6,并新增 antd 5/6 双版本 CI;移除不兼容 antd 6 的 Pro Components 运行时依赖。#649
    • 🛠 升级 @ant-design/cssinjs 与 @ant-design/cssinjs-utils 至 2.x,并兼容 antd 5/6 的 Popover 语义样式键。
  • 📖 文档

    • 📖 补充 Agentic UI 与 Ant Design X 的定位差异,以及 ProxySandbox 执行 Coding Agent 生成代码的安全边界。#668 #213 #330
  • MarkdownInputField

    • 🆕 新增 inputHistory 输入历史导航(对齐桌面 IDE 聊天输入框):↑/↓ 在内容首尾回溯已发送内容,回溯前暂存编辑草稿,历史仅存于组件实例内存。
    • 🆕 新增拖拽上传:配置 attachment 后可直接把文件拖入输入框(含格式、大小、数量校验与悬停高亮覆盖层)。
    • 🆕 新增 followups 建议条:点击即发送或回填输入框(fillOnly),样式与输入框宽度对齐。
    • 💄 Slash / Tag 芯片选中插入时播放一轮字符波浪 + 图标扫光动画(对齐桌面 IDE composer 动效),尊重 prefers-reduced-motion。
    • 🐞 聚焦时也同步外部受控值的清空、会话与草稿更新,保留编辑器自身回显及输入法组合输入的保护。
    • 🐞 Followups 接入统一发送管线,遵守禁用、生成中、发送按钮禁用及发送互斥;输入、截断、快捷操作与回填统一通过状态更新通知一次 onChange。
  • MarkdownRenderer

    • 🆕 新增 GPT 风格流式逐词淡入:streaming 时默认对新词淡入,已显示内容复用 DOM、不闪烁;纯 CSS,尊重 prefers-reduced-motion;代码块 / 表格 / 公式不拆词。
    • 🆕 淡入开关收敛至 throttleOptions.fade(默认 true,仅 streaming 时生效):throttleOptions={{ fade: false }} 关闭。MarkdownEditor(renderMode: 'markdown')与 Bubble.markdownRenderConfig 经既有 throttleOptions 透传即可。
    • 🛠 通过末注册 rehype 插件在最终 hast 上拆分文本 token;processor 在流式会话内保持同一实例,避免 chart / 代码块卸载重挂。
    • 📖 整理 markdown-renderer.md:演示分区、API 表字母序、ContentThrottleOptions.fade 说明;同步 api.md / bubble.md / Playground 与流式对比 Demo。
  • TaskList

    • 🛠 simple 模式移除摘要条下方 2px 细线进度条;showProgress 现仅控制摘要内「已完成/总数」计数文本是否展示。
    • 🆕 新增 scrollIntoViewOnExpand 属性(boolean | ScrollIntoViewOptions,默认 false):simple 模式下展开摘要条时将组件滚动到视窗内;传 true 走默认 { behavior: 'smooth', block: 'nearest' },初次挂载不触发。
  • ToolUseBarThink

    • 💄 移除底部 content-expand(展开/收起)按钮的默认背景与 hover 背景填充,仅保留文字颜色变化;hover 整个卡片时不再叠加另一层灰色,与根容器背景统一为单一灰。
    • 🆕 新增 scrollIntoViewOnExpand 属性(boolean | ScrollIntoViewOptions,默认 false):展开时将组件滚动到视窗内,初次挂载不触发;行为与 TaskList 一致。
    • 🆕 MarkdownEditor.codeProps 新增 scrollDeepThinkIntoViewOnExpand,透传至深度思考块的 ToolUseBarThink.scrollIntoViewOnExpand,使编辑器内 ```think 代码块也能配置展开滚动。
  • 🛠 样式系统

    • 🛠 Hooks/useStyle 重写为基于 @ant-design/cssinjs-utils 的 genStyleUtils,与 antd 上游 theme/util/genStyleUtils 同源;新增导出 genStyleHooks / genComponentStyleHook / genSubStyleComponent 及类型 AgenticComponentTokenMap / FullToken / GenStyleFn,组件可通过模块声明扩展自己的 ComponentToken。
    • 🛠 全量迁移 70+ 组件的 style.ts 至 genStyleHooks('ComponentName', genStyle) 模式(AILabel / TaskList / ToolUseBar / Workspace / Plugins/chart/* / MarkdownEditor 主样式 等);useEditorStyleRegister 作为兼容入口保留,少数动态 token / 动态 classNames 场景(Bubble 主样式、MarkdownInputField 主样式、MarkdownEditor/editor content 样式)继续走该入口,其内部已改由 @ant-design/cssinjs 的 useStyleRegister 直接驱动。
    • 🛠 移除对 @ant-design/theme-token createStyleRegister 的依赖;组件库统一保持 hashId='',避免与宿主 antd 主题哈希叠加导致选择器失效。
    • ⚡️ useStyle 返回的 wrapSSR 改为 identity 函数:样式注入由 cssinjs useGlobalCache → updateCSS 副作用完成,与 wrapSSR 无关;浏览器 CSR 下 wrapSSR(node) 此前一直等于 <><Empty/>{node}</>,组件库也未使用 <StyleProvider ssrInline>,因此该层 Fragment + <Empty/> 元素纯属无用开销。改造后每个组件每次渲染少一层 React 元素分配;组件文件继续 return wrapSSR(<jsx/>) 仍兼容(identity 透传),新组件可以直接 return <jsx/>。
  • Workspace

    • 💄 FileTree:文件夹与叶子节点名称通过 CSS 单行省略,悬停 title 展示完整名称。
    • 🆕 新增 defaultActiveTabKey:非受控模式下指定初始激活的标签 key。
    • 🆕 新增 notifyOnInvalidActiveTabKey(默认 true):受控且 activeTabKey 不在当前标签列表时,是否通过 onTabChange 回传有效 key;设为 false 时仅界面回退、不触发回调。
    • 🆕 新增 preserveFilePreviewOnTabChange(默认 false):为 true 时离开文件类标签再返回可保留 Workspace.File / Workspace.FileTree 的预览态。
    • 🆕 新增 emptyContent:无任何有效子面板时的占位内容(未传仍渲染 null)。
    • 🆕 子组件 BaseChildProps.panelType 可显式声明面板类型;包入口导出 markWorkspacePanel、WORKSPACE_PANEL_TYPE,内置 Workspace.* 子组件带面板标记,支持识别 React.memo(Workspace.File) 及沿 type 链解析的 forwardRef / memo 包裹。
    • 🛠 切换标签时仅在离开 file / fileTree 面板,或在两个文件类 Tab 之间切换时递增 resetKey 重置预览;切换到非文件类 Tab 不再对隐藏中的文件面板无意义递增。
    • 💄 Workspace.File 的 fileTreeSwitch 分段控件:平铺 BarsOutlined、文件树 ApartmentOutlined;Workspace 默认「文件」「文件树」Tab 图标与上述语义对齐(@ant-design/icons)。
    • 📖 workspace.md 补充 Workspace 新属性表、子面板识别(panelType / markWorkspacePanel)、受控标签与预览行为、最佳实践。
    • ✅ 补充 Workspace 与 workspacePanel 单测(defaultActiveTabKey、emptyContent、memo 识别、notifyOnInvalidActiveTabKey 等)。
    • 🛠 防御性处理:展开 Fragment 子节点、去重 tab.key、忽略 Segmented 分隔项与非法切换 key、校验 panelType / tab.count、normalizeTabKey、限制 type 链遍历深度。
  • 📖 文档

    • 📖 新增 MarkdownRenderer 组件文档(流式 Markdown、ContentThrottleOptions、内置代码块渲染器路由表、MarkdownRendererRef)。
    • 📖 新增 ToolUseBarThink 独立组件文档;同步修正 ToolUseBar 中 ToolUseBarThink 的 API 表(移除已废弃 / 不存在的 id / isThinkLoading / isActive / onActiveChange 等字段,对齐实际 props)。
    • 📖 新增 GradientText、TextAnimate、TypingAnimation 组件文档与对应 demo。
    • 📖 为 MarkdownRenderer / GradientText / TextAnimate / ToolUseBarThink 各补充一份「API Playground」综合 demo,单一演示串联调试各组件的核心 props 与行为。
    • 📖 为布局组件 AgenticLayout / ChatLayout / LayoutHeader 各补充一份「API Playground」综合 demo,覆盖三栏开关、宽度、受控/非受控折叠、scrollBehavior、命令式 ref(scrollToBottom / isAtBottom)、onScrollStateChange、leftExtra / rightExtra 等核心 props。
    • 🛠 task-running.md 改写为 AgentRunBar 任务运行状态,标注 TaskRunning / TaskRunningProps / TaskRunningVariant / TaskRunningActionsRender 为已废弃别名;同步将 docs/demos/task-running.tsx 中的 TaskRunning 替换为 AgentRunBar。

v2.33.0

  • MarkdownEditor / Plugins.chart

    • 🆕 新增 chartType: "docCards" 支持「Markdown 表格 → 卡片栅格」展示,与现有图表共用同一套「HTML 注释 + GFM 表格」数据契约。表头按 名称/标题、地址/链接/URL、简介/描述、亮点/标签 别名解析为 title / url / description / tags,支持「逻辑名 + 中英文括号单位」的宽松匹配;cardColumns 控制每行卡片数(取值 1~4,默认 2,超出自动 clamp),fieldMap 可显式覆盖字段映射。
    • 🐞 安全:isSafeHref 显式拒绝 protocol-relative URL(//evil.com)。原实现以 startsWith('/') 放行站内绝对路径时会同时放行 //host,等价于绕过协议白名单。
    • 🛠 包体积:抽出 src/Utils/columnMatching.ts 零依赖共享模块,承载 columnKeyMatchesConfiguredField / resolveChartAxisFieldToColumnKey / DOC_CARDS_FIELD_ALIASES / resolveDocCardsFields 等纯字符串工具。DocCards/utils.ts 不再 import parseTable,消费侧 import { DocCards } 不再被传递性带入完整 markdown 解析栈(remark / rehype / sanitize / katex 等)。parseTable.ts 与 DocCards/utils.ts 仍 re-export 原符号保持向后兼容。
    • 💄 站内链接(/foo、./foo、../foo、#anchor)不再强制 target="_blank",避免锚点跳转开新 tab;外部链接(http(s)/mailto/tel)仍开新 tab 并带 rel="noopener noreferrer"。
    • 🌐 标签胶囊容器 aria-label 改为 docCardsTags(中文「标签列表」/英文「Tags」)专用 i18n 键,原先用 docCards 会被屏幕阅读器误读为「卡片列表」。
    • 🆕 @ant-design/agentic-ui 主入口同步导出 DocCards 组件与 resolveDocCardsFields / splitDocCardsTags / isDocCardsSafeHref / formatDocCardsDisplayUrl / DocCardsDefaultFieldAliases 等工具,方便消费侧复用。
    • 💄 卡片链接展示 hostname + path(https://tailwindcss.com/docs → tailwindcss.com/docs),href 与 title attribute 仍是原始 URL;超长 URL 单行省略。
    • 💄 移动端适配:< 480px viewport 强制单列;卡片 :hover 用 @media (hover: hover) 包裹避免 first-tap 残留;链接最小触摸高度 24px(WCAG 2.5.5 AA);标签胶囊用 padding 而非固定 height,避免在手机端被压扁。
    • ⚡️ gridTemplateColumns 用 useMemo 缓存;header 节点抽到 useMemo;cardColumns 走 repeat(N, minmax(0, 1fr)) 精确控制最多 N 列,避免 auto-fit 在宽容器塞超过用户期望的列数。
    • 🛠 parseTable:docCards 在解析阶段做主标题列校验,命中失败整表降级为普通 Markdown 表格,避免输出空白卡片栅格;不影响其它 chartType 行为。
  • 🐞 修复 React Hooks 依赖项导致的死循环与过度渲染问题

    • SchemaRenderer:schema || {} 每次渲染产生新引用导致 useMemo([safeSchema]) 失效,改用模块级常量 EMPTY_SCHEMA
    • SchemaForm:schema?.component || {} 每次渲染产生新引用导致 useMemo([properties]) 失效,改用模块级常量 EMPTY_COMPONENT
    • ButtonTabGroup:默认参数 items = [] 导致 useEffect([items]) 每次渲染触发,改用模块级常量 EMPTY_ITEMS
    • useChartDataFilter:Array.isArray(data) ? data : [] 导致 useMemo([safeData]) 失效,改用模块级常量 EMPTY_DATA
    • TagPopup:props || {} 解构出的 items 引用不稳定,移除多余的 || {} 回退
    • I18n:antdContext?.locale(对象引用)作为依赖导致 effect 过度触发,改为 antdContext?.locale?.locale(字符串)
    • AgenticLayout:currentRightWidth 同时作为依赖和 setCurrentRightWidth 的目标导致 resize listener 反复重建,改用 ref 持有
    • BaseMarkdownEditorSlate:isEditorFocused 同时作为依赖和 setter 目标导致 mousedown listener 反复重建,改用 ref + useRefFunction
    • Workspace:受控模式下 setInternalActiveTab 无条件执行导致 effect 二次触发,增加 currentKey !== internalActiveTab 守卫
    • ActionItemContainer:props.children 作为依赖导致 effect 每次父渲染都触发,改用 useMemo 提取 childrenKeys
    • keyboard:空依赖 [] 但使用了 props.readonly/store/keydown,补全依赖
    • ThoughtChainList/MarkdownEditor:useEffect 缺少 props.plugins 和 props.initValue 依赖,补全
    • AceEditorWrapper:onChange 闭包捕获初始值导致后续变化不生效,改用 onChangeRef 模式
    • BubbleExtra:useEffect 缺少 props.onRenderExtraNull 依赖,补全
    • FileComponent:useEffect 缺少 previewFile 依赖,补全
    • Editor:ref.current 作为依赖不可靠,移除并加 eslint-disable 注释
    • useAutoScroll:无依赖 useEffect 同步 ref 改为 useLayoutEffect
  • 🛠 SchemaRenderer / SchemaForm:EMPTY_COMPONENT 补充 ComponentConfig 类型标注

  • 🛠 BaseMarkdownEditorSlate:setEditorFocused 由 useCallback 改为 useRefFunction,移除多余的 isEditorFocused state

  • 📖 开发指南新增「React Hooks 依赖陷阱」章节,记录 7 类常见模式及修复方案

v2.32.0

  • MarkdownInputField
    • 💥 Breaking change:actionsRender / toolsRender / quickActionRender / beforeToolsRender 入参类型由「上帝接口」MarkdownInputFieldProps & MarkdownInputFieldProps['attachment'] & {...} 收敛为稳定派生类型 SlotRenderState(actionsRender 用 ActionsSlotState 含 collapseSendActions)。新入参字段:value / isHover / isLoading / fileMap / onFileMapChange / fileUploadStatus / fileUploadSummary / attachment / disabled / typing。迁移:将 props.upload 等附件字段访问改为 state.attachment?.upload;其他字段改名 props → state 即可。
    • 🛠 MarkdownInputFieldProps['attachment'] 由内联结构 { enable?: boolean } & AttachmentButtonProps 改为命名类型 AttachmentConfig,行为完全等价。
    • 🆕 新增对外类型导出:SlotRenderState、ActionsSlotState,便于在自定义 slot 实现中获得类型提示。

v2.31.5

  • 🛠 将部分导出类型从值导出改为类型导出,优化打包体积。
  • 🛠 移除未使用的 locale key 和修复 lint 错误。
  • ✅ 移除测试中不再使用的动画 mock 文件。
  • 🛠 清理 MarkdownEditor 工具函数并优化导入路径。

v2.31.4

  • 🐞 修正任务进行中状态的文本显示逻辑。
  • ⚡️ 优化 tree-shaking — 消除反向 barrel 引用、具名导出第三方 SDK、补充 sideEffects。
  • 🐞 修复暗色主题下代码块的样式问题。
  • 🛠 移除已废弃的 theme 国际化 key(代码块主题切换按钮已移除)。

v2.31.3

  • ✅ 添加 rehypeSanitizeUserHtml 插件的单元测试。
  • 🛠 代码块主题跟随全局主题,移除独立月亮图标切换。
  • 🐞 添加 rehypeSanitizeUserHtml 插件,过滤用户输入中的危险 HTML 防止页面布局错乱。
  • 🛠 将硬编码颜色值替换为 CSS 变量。

v2.31.2

  • ⚡️ 减包体与首屏 - Lottie 直引、只读 markdown 拆组件、Renderer 懒加载。

v2.31.1

  • 🛠 使用 token 变量替换硬编码颜色值以支持主题切换。

v2.31.0

  • 📖 添加 MarkdownInputField 组件 demo。
  • 📖 添加 Loading 组件 demo。
  • 💄 为 Loading 组件添加暗色主题支持。
  • 🛠 移除 prepublishOnly 中的 test 步骤。
  • 💄 合并下载和复制按钮样式,使用统一样式。
  • 💄 为表格和图表工具栏复制按钮添加暗色主题支持。

v2.30.35

  • 🛠 修复 eqeqeq 规则错误和未使用的 import。
  • 🐞 修复 FileTree 和 FilePreview 组件的多个问题。
  • 🛠 移除 Paragraph 中的 MutationObserver,改用 composition 事件监听。
  • 🐞 修复动线生成动画的多个问题。
  • ⚡️ 优化 useDetectTheme 为单例模式,避免重复 MutationObserver。
  • 🐞 图表组件支持 html[data-theme="dark"] 自动切换暗色主题。
  • ✅ 将 Robot 组件测试改为异步并添加 Lottie 加载等待逻辑。

v2.30.33

  • 🆕 为 ChartContainer 添加自动主题检测功能。
  • ✅ 修复 onLoadChildren 重试用例的异步时序。
  • 🆕 添加 ThreeThinkingLottie 按需加载动画组件并移除用户消息多余间距。

v2.30.32

  • 🆕 为多个组件添加 data-testid 属性以支持自动化测试。
  • 🛠 调整 BubbleList 代码格式与缩进。

v2.30.31

  • 🐞 移除 MarkdownEditor 内容区 margin 变量覆盖。#513
  • 🐞 无 onClick 时不再阻止 ActionIconBox 事件冒泡。
  • 🆕 为 Workspace 添加 FileTree 组件,支持懒加载子节点。#510
  • 🐞 修复 Bubble useMemo/useEffect 依赖缺失与性能问题。
  • 🐞 提升 ToolUseBarThink light 变体在 success 后的样式优先级。#511
  • 💄 优化 TaskList 缓动曲线,demo 改为自动循环播放。
  • 💄 降低 TaskList simple 模式 demo 动效速度。
  • 💄 TaskList simple 模式 demo 支持动态变化演示。
  • 💄 移除 TaskList progress 元素,文字变化时添加模糊渐入动效。
  • 💄 TaskList Simple 模式展开收起添加 CSS 过渡动画。
  • 🐞 TaskList Simple 模式去背景色、始终显示最后任务、清理冗余。
  • 🐞 修复 MarkdownInputField 发送按钮按主题实色保障对比度。#509
  • ⚡️ 移除 ToolUseBarThink framer-motion,全 CSS 动画 + 性能优化。
  • 🐞 修复 MarkdownInputField tools 栏固定高度与内边距冲突导致的纵向错位。#508
  • 🆕 支持 thinking 标签作为思考块的别名。
  • ⚡️ 流式渲染性能与正确性全面改进。
  • 🛠 移除文件中的 BOM 字符。

v2.30.30

  • 🛠 抽取 MarkdownEditor 样式清理函数并支持自定义属性。
  • 📖 更新 bubble 示例为文件理解场景。

v2.30.29

  • 🛠 无重大变更。

v2.30.28

  • 🛠 无重大变更。

v2.30.27

  • 🐞 修正 Bubble 代码块选择器并改进 SendButton 无障碍。#507
  • 🐞 流式 JSON 代码块避免 Ace 反复 setValue 闪动。#504
  • 💄 内置 Agentic UI 业务层 CSS 覆盖。#506
  • 🐞 规范化 redacted_thinking 别名使嵌套 JSON 保持在思考块内。#505
  • 🐞 附件列表文件大小与错误文案单行省略显示。#503
  • ⚡️ 减少 ThoughtChainList 流式更新时深度思考相关重渲染。#501
  • ✅ 默认套件排除大体积目录,用例约 5000 条。#500
  • ✅ 减少 ace 和 elements 测试中的重复 mocks。#498
  • 🐞 图表 x/y 与表头带单位列名宽松匹配并补充 RFC。#499

v2.30.26

  • 🐞 修复 MarkdownEditor IME 与根级双空段、initSchema 同步问题。

v2.30.25

  • 🐞 改进加载指示器并增强 Markdown 渲染。
  • 🆕 增强 Bubble Markdown 渲染,支持稳定的 fncProps 和缓存改进。
  • 🐞 懒加载行避免 display:contents 导致 LazyElement 永不显示。#494
  • 🐞 段落可见性依据 Slate 子节点而非 React children。#493
  • 🛠 移除 todo.md 文件。
  • 🐞 停止修改 list items 使流式更新不重新渲染所有气泡。#492
  • 🐞 修正 Mermaid SVG 尺寸与适配画布缩放冲突导致图表过小。#487
  • 🛠 移除 todo.md 并更新 clean-code 规则不再要求该文件。#491
  • 🐞 空 initValue 不再重复追加段落以恢复占位符。#490
  • 📖 rerender 演示支持左侧 Markdown 手动编辑。#488
  • 📖 优化 MarkdownInputField demos。#486
  • 📖 格式化组件文档中的 Props 表格。
  • 🐞 修复 MarkdownEditor 稀疏 children 导致 Slate renderLeaf 读取 undefined。#485
  • 🛠 移除文档 BOM 头并优化 MarkdownInputField 导入顺序。

v2.30.24

  • 🐞 修复 MarkdownEditor 空 markdown 内容处理及 Node 方法安全调用。
  • 🐞 增强 MarkdownEditor sanitize normalizer 对抗无效 Slate trees。#484

v2.30.23

  • 🐞 规范化时剔除 MarkdownEditor 非法子节点避免 Node.string 崩溃。#483

v2.30.22

  • 🛠 恢复 demo 检查与报告脚本。#482
  • 📖 优化 MarkdownInputField 文档 Demo 布局并修复示例问题。
  • 🆕 支持 Bubble OpenAI/OpenClaw/Ollama 消息格式适配器。#481
  • 🐞 修复 MarkdownEditor 空段落退格误触全选清空。#479
  • 🐞 流式段落动画默认开启与 E2E/单测稳定化。#478
  • 🐞 流式文本更新结束时 ChatLayout 自动滚动到底部。#480
  • 🐞 修复 MarkdownRenderer 流动画失效并新增流式闪烁光标。#477
  • ✅ 添加 MarkdownEditor 过期选区处理回归用例。#476
  • ✅ 补充 MarkdownEditor 无效选区路径回归用例。#475
  • ✅ 添加 Mermaid 工具栏交互回归用例。#471
  • 🛠 Slate.js 规范化使用改进 (P0-P3 全部修复 + 覆盖率达标)。#474
  • 🐞 修复 MarkdownEditor isElement 崩溃读取 undefined.children。#472
  • 🆕 SendButton 文件上传中禁用发送按钮,支持 sendButtonProps.disabled 外部控制。#470
  • ✅ 添加 attachment preview 透传回归用例。#467
  • ✅ 补充 MarkdownInputField attachment onPreview 透传与容错回归用例。#468
  • ✅ 补充 AttachmentFileListItem 重试的单测。#465
  • 🐞 修复不规范 Demo 代码的 Lint 错误。#466

v2.30.22

  • Workspace
    • 📖 补充 Workspace.FileTree 懒加载文件树文档演示 workspace-file-tree-demo。
    • 🐞 FileTree:空目录或加载失败时不再将目录误标为叶子;onLoadChildren 失败时 Promise 正确 reject 以符合 rc-tree 重试;toDataNode 对未传 isLeaf 的节点按「无子项则文件」处理;resetKey 不再清空已懒加载状态。
    • 🛠 FileTreeProps 懒加载回调命名为 onLoadChildren,与事件回调 on 前缀规范一致。
    • 🛠 resetKey 仅注入当前激活的 Workspace.File / Workspace.FileTree 子项,非激活页不再随切换递增,减少隐藏面板的无效更新。
    • ⚡️ 标签栏构建时预计算 Segmented 选项、首个 Realtime 索引,避免 O(n²) 的 findIndex 重复扫描。
    • 🛠 FileTree 中 onLoadChildren 经 useRefFunction 归一,减轻 Tree loadData 对回调引用变化的敏感抖动。
    • 🛠 新增导出类型 WorkspacePanelType;TabItem.componentType 收窄为该联合类型(文档补充 TabItem 说明)。
  • MarkdownRenderer
    • 🐞 修复流式 Markdown 未传 streamingParagraphAnimation 时段落不应用淡入动画的问题;未传时默认开启,仅 streamingParagraphAnimation: false 关闭。#478
  • MarkdownEditor
    • 🛠 streamingParagraphAnimation 与 MarkdownRenderer 语义对齐(默认开启,显式 false 关闭)。#478
  • Bubble
    • 📖 文档与流式演示补充 markdownRenderConfig.streamingParagraphAnimation: false 迁移示例(与旧版「未传即无段落动画」行为一致)。#478
    • 🆕 新增 useOpenAIMessageBubbleData Hook 与 mapOpenAIMessagesToMessageBubbleData,支持将 OpenAI Chat Completions 风格的 messages 转为 MessageBubbleData[],便于接入 BubbleList 与 SSE 流式内容。
    • 🆕 新增 useOpenClawMessageBubbleData、mapOpenClawMessagesToMessageBubbleData 与 normalizeOpenClawMessagesToOpenAI,支持 OpenClaw 会话 / transcript 风格(timestamp、toolResult 等)。
    • 🆕 新增 useOllamaMessageBubbleData、mapOllamaMessagesToMessageBubbleData 与 normalizeOllamaMessagesToOpenAI,支持 Ollama /api/chat 的 messages(images、tool_calls、thinking 等)。

v2.30.15

  • MarkdownInputField
    • 🆕 新增 onUploadError 回调及 removeFileOnUploadError 配置,支持自定义上传失败处理逻辑。#434
    • 🆕 支持文件大小拦截与上传错误处理。#437
    • 🆕 点击编辑框任意区域自动聚焦编辑器。#435
    • 🐞 统一 attachment 文件大小配置,删除 SupportedFormat.maxSize 字段。#429
  • 🐞 修复 data-is-unclosed 属性与 CSS 选择器逻辑。#438

v2.30.14

  • Bubble
    • 🆕 将 markdown filemap 图片提取到气泡框外渲染。#430
  • MarkdownInputField
    • 🐞 修复代码块在 MarkdownInputField 中无法编辑的问题。#425
    • 💄 代码块默认高度设为 120px。#428
    • 🐞 修复 attachment 占位符拉伸全宽的问题。#427
  • Workspace / Browser
    • 🐞 修复定位和链接点击时触发页面跳转的问题。#431
  • DonutChart
    • 🐞 修复饼图/环形图图例颜色与扇区颜色不一致的问题。#432
  • Plugins / CodeBlock
    • 💄 代码块字号从 0.8em 调整为 1em,提升可读性。
  • Parser
    • 🆕 支持 ::warning 双冒号容器指令语法。#426

v2.30.13

  • FileMapView
    • 🆕 图片/视频支持 onPreview 拦截与 itemRender 自定义渲染,通过 markdownRenderConfig.fileMapConfig 透传。#423
  • FileMapConfig
    • 🆕 新增 normalizeFile 回调,支持自定义文件数据格式转换。#424
  • MarkdownInputField
    • 🆕 新增 onExceedMaxCount 回调,文件数量超限时以 error 状态展示。#419
  • MarkdownRenderer
    • 🐞 修复流式渲染时代码块抖动(销毁重建)问题。#422
  • Chart / Histogram
    • 🐞 修复科学记数法解析及支持预分箱数据。#421
  • Chart / ScatterChart
    • 🐞 坐标轴范围改为从数据自动计算,支持手动传入 xMin/xMax/yMin/yMax。#420
  • 🐞 修复 E2E 全量失败(usePrefersColor 崩溃)及 toBeInTheDocument TS 类型报错。#417

v2.30.12

  • MarkdownEditor / Plugins / CodeBlock
    • 🆕 代码块工具栏新增「本地预览」按钮:html 与 markdown 语言的代码块可点击按钮在新标签页打开本地预览。HTML 代码直接以 Blob URL 渲染(允许执行 JavaScript),Markdown 代码先转换为 HTML 再打开。
  • MarkdownEditor
    • 🆕 新增 agentic-ui-filemap 围栏代码块,渲染为文件列表。#416
  • History
    • 🆕 分组项目少于 3 个时不展示分组标题,仍平铺显示条目。#411
  • Bubble
    • 🐞 修复文档站暗色主题和用户气泡样式可见性问题。#413
  • 🐞 修复消息列表差一点点无法贴底的问题(useAutoScroll)。#409
  • 🐞 聊天加载状态增加顶部外边距。#410

v2.30.11

  • MarkdownRenderer
    • 🆕 支持 eleRender 自定义元素渲染(markdown 渲染模式)。#405
  • MarkdownInputField
    • 🐞 修复移动端输入时占位符不消失的兼容性问题。#401
  • Workspace
    • 🐞 文件项空详情隐藏,Browser 链接支持 onOpen 回调。#406
    • 🛠 使用 token.antCls 替换样式文件中写死的 ant- 类名前缀。#404
  • 🐞 提供 CSS 变量默认值,自动加载根样式。#403
  • 🐞 修复表格流式渲染,等待首行完整后再开始渲染。#400

v2.30.10

  • Mermaid
    • 🐞 仅在代码块闭合时渲染 Mermaid 图表。#399
  • 💄 调整表格默认列宽从 120px 至 40px。

v2.30.9

  • MarkdownEditor
    • 🛠 简化 directive 处理逻辑,移除未使用的 subpath 类型。

v2.30.8

  • FileMapView
    • 🐞 无 size 或为 0 时不展示文件大小。#393 #394
  • MarkdownEditor
    • 🐞 blockquote 改用块级布局替代 flex。#396
  • Parser
    • 🆕 仅支持 ::: 容器指令语法,忽略行内 :foo 形式。#395

v2.30.7

  • 📖 新增 Bubble 流式 Markdown 演示页面。

v2.30.6

  • MarkdownRenderer
    • 🆕 增强流式渲染功能,支持末段淡入动画与字符队列配置。

v2.30.5

  • MarkdownRenderer
    • 🐞 优化流式消息的 key 稳定性与动画逻辑。

v2.30.4

  • MarkdownRenderer
    • 🆕 流式渲染仅对末尾 50 字做动画,新增 animateTailChars 配置。

v2.30.3

  • Chart
    • 🆕 新增箱线图(BoxPlot)和直方图(Histogram)组件。
    • 🆕 原子图表支持暗黑主题。#390
    • 🆕 图表组件改为 forwardRef 导出,支持引用传递。
    • 🆕 Markdown 表格支持一键复制功能。
  • MarkdownRenderer
    • 🆕 优化流式场景下的块内容稳定性,避免重复卸载和挂载。

v2.30.2

  • Chart
    • 🆕 支持解析亿元/万元/元等中文货币字符串。#388
  • MarkdownEditor
    • 🐞 修复时间冒号在围栏代码块内被转义的问题。#383
    • 💄 ToolBarItem 仅在存在 title 时渲染 Tooltip,缓解 findDOMNode 弃用警告。
  • SchemaEditor
    • 🐞 恢复复制空内容提示与成功/失败反馈。

v2.30.1

  • MarkdownEditor
    • 🛠 重构可编辑表格实现,优化列宽计算、行列命令与单元格选区。#376
    • 🆕 支持 agentic-ui-task 与 agentic-ui-toolusebar 围栏代码块,分别渲染为 TaskList 与 ToolUseBar;旧标识 agentic-ui-usertoolbar 仍可读入并规范为新标识。#378 #380
    • 💄 agentic-ui-task 嵌入块默认 variant 为 simple;需完整任务链样式时在 JSON 根级将 variant 设为 default。
    • 🆕 只读模式下 renderMode / renderType 为 markdown 时走 MarkdownRenderer;markdownRenderConfig 支持 renderType 别名。
    • 🐞 修复 Chart 在 Slate 占位层下画布不可见的问题。#381
  • MarkdownRenderer
    • 🆕 流式场景下使用 Markdown Renderer 替代 Slate 渲染。#369
    • 💄 流式文字淡入动画增加 blur 过渡。
  • Bubble
    • 🛠 思考中状态改为轻量 DOM 结构,仅保留 dots 动效。#377
    • 🐞 修复 extraShowOnHover 未传入时默认值为 true 的处理逻辑。
  • BubbleMessageDisplay
    • 🐞 修复 EXCEPTION 状态下空、undefined 或 null 内容的展示逻辑。#376
  • MarkdownInputField
    • 🌐 优化文件上传相关文案的清晰度。
  • 📖 移除 rfc-streaming-markdown-renderer.md 文档。#370
  • ✅ 补充 agentic-ui 嵌入与思考 DOM 演示快照,并更新相关演示快照。
  • 🛠 修复测试与 Chart 错误日志。

v2.29.60

  • MarkdownRenderer
    • 🆕 流式场景下使用 Markdown Renderer 替代 Slate 渲染(预发布,正式发布于 v2.30.1)。#369
  • 🛠 修复测试与 Chart 错误日志。

v2.29.58

  • Bubble
    • 💄 extra 在 Popover 模式下移除 padding。#367
  • MarkdownPreview
    • 🛠 优化代码格式与错误处理。
  • FileUploadManager
    • 🛠 优化错误处理逻辑。
  • ✅ 补充 Markdown directive 与 parseTable 回归测试覆盖率。#366

v2.29.57

  • MarkdownEditor
    • 🐞 修复 textDirective 渲染失败,支持语雀文档。#365
  • 🛠 优化 myRemark.stringify 错误处理,提升健壮性。
  • 🐞 修复 TypeScript 类型错误。
  • 🐞 更新 card-selection-demo 快照,修复段落元素的结构和属性。

v2.29.56

  • MarkdownEditor
    • 🐞 为 remark-rehype 添加 textDirective/leafDirective 处理器,修复 unknown node 错误。#364
  • Bubble
    • 🆕 新增 extraShowOnHover 配置,默认关闭,开启后 extra 仅在 hover 时展示。
    • 💄 extra 改为 hover 时展示,不再常驻显示。#362
  • 🛠 移除所有 message 提示调用。#363
  • ✅ 补充 PureBubbleList、AttachmentFileList、AttachmentButtonPopover 回归测试。#355 #356 #359

v2.29.55

  • MarkdownInputField
    • 🆕 发送按钮支持可发送状态。#361
  • Blockquote
    • 🆕 添加 data-testid 属性以支持测试。
    • 🐞 修复 className 兼容性问题,将 attributes 转为 React.HTMLAttributes。

v2.29.54

  • MarkdownEditor
    • 🆕 支持 markdown-it-container 风格的 ::: 自定义容器语法(info/warning/success/error/tip 等)。#360
  • MarkdownInputField
    • 🆕 Demo 增加 data-testid 属性以支持 E2E 测试。

v2.29.53

  • MarkdownInputField
    • 🆕 新增 E2E 测试 ID 支持并导出 testIds 常量。
    • 🆕 文件上传的图片支持 svg 和 webp 格式。#358
  • ChartStatistic
    • 🆕 支持 Semantic 样式与 subtitle 展示。
  • ToolUseBarThink
    • 🌐 增加国际化支持,容器添加 flex-direction: column。#357
  • ✅ 补充 RealtimeFollow、FileMapView、AttachmentFileIcon、BeforeToolContainer、Enlargement 等测试覆盖率。

v2.29.31

  • MarkdownEditor
    • 🐞 修复 list-item 下 Node.leaf 报错,改用 Editor.leaf 解析叶子节点。
    • 🛠 优化 matchInputToNode 功能与键盘处理逻辑。
    • 🛠 优化 classname 规范与使用。 #315 [@陈帅]

✅ 增强 MarkdownEditor 和 Bubble 组件的测试覆盖率。 #307 [@222]

v2.29.30

  • MarkdownEditor

    • 🛠 使用 React.memo 优化 SlateMarkdownEditor 渲染性能。
    • 🛠 统一 classname 前缀为 agentic-md-editor-*。 #311 [@陈帅]
  • LinkCard

    • 🛠 按 BEM 规范整理 class 命名。 #312 [@陈帅]
  • Chart

    • 🛠 优化 ProForm 配置表单类名,使用 agentic-chart-config-form 前缀并添加 BEM 结构。 #313 [@陈帅]
  • ChartRender

    • 🛠 优化表格与描述列表的 BEM 类名。 #314 [@陈帅]
  • AceEditor

    • 🛠 移除 effect 中的未使用依赖。

v2.29.29

  • MarkdownEditor
    • 🆕 新增 Jinja 模板能力,支持 jinja 配置、{} 触发模板面板、语法高亮、createJinjaPlugin。 #309 #310 [@陈帅]

v2.29.28

  • Workspace

    • 🆕 支持视频文件预览播放。 #308 [@陈帅]
  • SchemaEditorBridgeManager

    • 🆕 增加 getContentById 方法以支持内容获取。 #306 [@222]

📚 演示数据与内容更新。 #305 [@陈帅]

v2.29.27

  • Bubble
    • 🛠 重构 locale 处理逻辑,优化国际化支持。 (e1927ec6)

📚 补充 changelog v2.29.8-v2.29.26 版本更新记录。 #303 [@陈帅]

v2.29.26

  • Bubble
    • 🛠 重构 Bubble 组件,集成 useMergedLocale 以实现统一的国际化处理。 (6647b12b)

v2.29.25

  • MarkdownInputField

    • 🌐 上传状态国际化支持,优化 "上传中..." 和 "上传失败" 文本的多语言显示。 #301 [@陈帅]
  • I18n

    • 🌐 国际化完善,修复 cnLabels 中的翻译错误,新增 17 个缺失的 i18n 键,并更新 9 个组件以使用国际化。 #299 [@陈帅]

📚 API 文档更新,完善设计问题说明。 #298 [@陈帅]

v2.29.24

  • Bubble

    • 🐞 修复样式类名前缀,在 useMessagesContentStyle 中为类名添加点号以确保正确应用样式。 (2f496852)
  • MarkdownPreview

    • 🛠 简化渲染逻辑,根据 placement 和额外内容优化 Popover 行为。 (d9cf641c)
  • Workspace

    • 🛠 更新 demo 文件引用,移除过时的 demo。 (fc4ffb27)

✅ 测试优化,更新多个测试文件的类型断言和 mock 实现,提升类型安全性和一致性。 (4d5634b1)

v2.29.23

  • MarkdownEditor

    • 🌐 编辑器操作栏标题支持国际化,标题、小标题、正文等支持多语言。 #296 [@shuyan]
  • MarkdownEditor

    • 🐞 修复 Markdown 内容为空时的初始化问题,确保 initValue 为空或 undefined 时也能正常渲染。 #294 [@陈帅]

v2.29.22

  • Bubble
    • 🛠 重构类名命名以改进样式封装,优化 BubbleMessageDisplay 的样式隔离。 (e734568c)

v2.29.21

  • Bubble
    • 🆕 添加 wrapSSR 支持,改进 BubbleMessageDisplay 的渲染能力。 (8dd08a01)

v2.29.20

  • Bubble
    • 💄 更新 MessagesContent 样式,优化 padding 和 gap 值以保持一致性。 (4578a647)
    • 🆕 增强气泡消息处理,支持 preMessage 和重试 UI。 (8b56ebe3)

✅ MarkdownEditor: 添加只读模式下的脚注渲染测试用例。 (2ca9faee)

v2.29.19

  • MarkdownEditor

    • 🐞 默认禁用 setMDContent 中的 RAF 优化,防止浏览器原生弹窗阻塞主线程时 Markdown 渲染停止。 #293 [@陈帅]
  • ChatLayout

    • 💄 优化底部动画背景铺满整个容器。 #292 [@不见月]

v2.29.18

  • MarkdownEditor
    • 🐞 修复粘贴处理逻辑,更新 onPaste 处理器返回布尔值并增强粘贴处理。 (af8cff63)

v2.29.17

  • Workspace

    • 🆕 支持卡片自定义渲染。 #291 [@shuyan]
  • MarkdownEditor

    • 🆕 增强快捷输入提示,支持代码块和分割线的快捷输入。 #289 [@222]
    • 🐞 优化按键匹配与空格触发逻辑。 #288 [@陈帅]
    • 🆕 支持双井号(##)标题输入。 #284 [@陈帅]

✅ 提升测试用例覆盖率。 #287 [@222]

v2.29.16

  • Workspace
    • 🆕 支持文件和网页反向定位,点击工作空间的文件、网页可以反向定位到对话中的位置。 #286 [@shuyan]
    • 🆕 任务名称支持 ReactNode,支持自定义 title。 #279 [@shuyan]

📚 设计指南完善,添加 Figma 设计系统指南。 #285 [@陈帅]

📚 添加 AGENTS.md 文件,完善项目文档。 #283 [@陈帅]

📚 添加 Markdown 输入快捷键文档。 #282 [@陈帅]

📚 完善组件库规范说明。 #281 [@陈帅]

📚 为按钮文档添加 atomId 说明。 #280 [@遇见同学]

v2.29.15

📦 添加 guidelines 目录到 package 文件列表。 (895d20fc)

v2.29.14

🆕 Sofa 图标页面上线。 #278 [@陈帅]

🛠 ParseMd 代码结构优化。 #277 [@陈帅]

v2.29.12

  • MarkdownInputField

    • 💄 动效优化,将光条调整到左侧,优化视线引导效果。 #276 [@不见月]
  • ChatFlowContainer

    • 🛠 更新滚动元素的动画持续时间。 #275 [@不见月]

⚡️ Elements 样式性能优化。 #274 [@陈帅]

v2.29.9

  • TagPopup
    • 🐞 修复连续选择下拉选项时抛出 'path' is null 错误。 #269 [@222]

v2.29.7

🆕 FooterBackgroundLottie: 添加 Lottie 动画配置文件。 (a77e7f6a)

v2.29.4

  • Workspace

    • 🆕 支持标题右侧自定义。 [@shuyan] (619309d4)
    • 💄 优化样式。 [@shuyan] (619309d4)
    • 🌐 补充国际化。 [@shuyan] (619309d4)
    • ✅ 补充测试用例。 [@shuyan] (619309d4)
    • 🆕 增加文件卡片自定义渲染能力。 #263 (7be1d6a2)
  • MarkdownInputField

  • ToolUseBar

  • ChatLayout

    • 💄 调整 ant-chat-item-extra 样式,优化间距和对齐方式。 (24334255)
    • 🆕 增强样式适配能力,优化对话流 demo。 #258 (a54a5934)

🆕 禁用单个波浪号功能。 #265 (57d65ef2)

📚 API 文档更新。 #259 (66f9ec17)

v2.29.3

  • MarkdownInputField

    • 🆕 为输入框添加流光边框动画效果。 [@qixian]
    • 🆕 新增组件,支持占位符和发送功能。 [@qixian]
    • 🆕 支持通过 sendButtonProps 自定义发送按钮颜色。 #241 [@Chiaki枫烨]
    • 💄 优化禁用和加载状态样式。 [@qixian]
    • 💄 优化工具渲染支持及圆角样式。 [@qixian]
  • Bubble

    • 🐞 修复 useEffect 依赖问题。 [@qixian]
    • 💄 优化内容字体样式。 #246 [@不见月]
    • 💄 优化 Loading 和操作图标展示效果。 #237 [@不见月]
  • MarkdownEditor

    • 💄 内容默认使用 --font-text-paragraph-lg 变量的字号。 #249 [@不见月]
    • 🆕 新增 disableHtmlPreview 和 viewModeLabels 属性。 [@qixian]

🆕 AppWrapper: 新增 AppWrapper 组件以利用 useAppData 并在挂载时记录应用数据。 [@qixian]

🆕 BubbleList: 新增懒加载支持以提升性能。 [@qixian]

🆕 CodeRenderer: 支持 HTML 代码中的 JavaScript 检测。 [@qixian]

🆕 ChatLayout: 切换对话记录时自动滚动到底部。 #247 [@不见月]

🆕 QuickLink: 新增视口内链接预加载功能。 [@qixian]

🐞 SendButton: 修复 fillOpacity 动画警告。 #236 [@Chiaki枫烨]

💄 ToolUseBar: 样式优化。 #235 [@不见月]

💄 Workspace: 优化内容和头部边距。 #238 [@shuyan]

v2.29.1

🐞 EditorStore: 优化节点替换逻辑,考虑 finished 状态。 [@陈帅]

🐞 TagPopup: 修复节点路径获取错误及依赖检查。 [@qixian]

🆕 ChatLayout: 新增多个对话流操作按钮动画。 #234 [@不见月]

v2.29.0

🛠 Bubble: 优化消息内容样式和结构。 [@qixian]

🛠 MarkdownEditor: 优化样式处理、节点对比逻辑及拖拽功能。 [@qixian]

🆕 Dumirc: 增加 Google Tag Manager 脚本。 [@qixian]

v2.28.11

🆕 AI Label: 新增 AILabel 组件。 #229 [@不见月]

🆕 Loading: 增强 Loading 组件。 #230 [@不见月]

💄 RealtimeFollow: 修改实时跟随图标大小和边距。 #232 [@ranranup]

v2.28.10

⚡️ MarkdownEditor: 优化节点对比和解析逻辑,提升渲染性能。 [@qixian]

🛠 MarkdownToSlateParser: 优化 HTML 注释处理。 [@qixian]

💄 Workspace: 优化下载按钮展示逻辑。 #228 [@ranranup]

💄 Reset CSS: 移除废弃颜色变量。 [@qixian]

⚡️ useIntersectionOnce: 使用 useLayoutEffect 替代 useEffect 以优化检测。 [@qixian]

v2.28.9

🆕 Bubble: 支持自定义用户和 AI 气泡属性。 [@qixian]

🐞 ChartRender: 简化运行时加载条件。 [@qixian]

🛠 MarkdownInputField: 移除 enlargeable 属性并重构组件结构。 [@qixian]

🐞 QuickActions: 修复 resize 事件中的异常问题。 [@qixian]

🆕 Mermaid: 新增流程图支持。 [@qixian]

v2.28.8

🆕 Lottie: 新增多个机器人动画。 #225 [@不见月]

🐞 SchemaEditorBridgeManager: 修复严格模式下 stopBridge 报错问题。 #226 [@hei-f]

🐞 Mermaid: 增强错误处理和渲染逻辑。 [@qixian]

v2.28.7

🐞 Bubble: 修复内容处理逻辑,稳定 originData 引用。 #220 [@hei-f]

💄 ChatLayout: 修改 footer 样式为 minHeight。 [@qixian]

🆕 Workspace: 增加 Browser 组件支持。 #222 [@ranranup]

v2.28.6

🐞 ThinkBlock: 更新默认展开状态。 [@qixian]

v2.28.5

  • ThinkBlock
    • 🛠 优化 useEffect 依赖。 [@qixian]
    • 🛠 优化展开状态处理。 [@qixian]

v2.28.4

🛠 CodeRenderer: 增强属性处理。 [@qixian]

v2.28.3

🛠 ThinkBlock: 增加 Context 支持。 [@qixian]

v2.28.2

🆕 MarkdownEditor: 新增 CommentLeaf 和 FncLeaf 组件。 [@qixian]

v2.28.1

  • ThinkBlock
    • 🛠 优化状态管理。 [@qixian]

🛠 SimpleTable: 清理组件并优化图表动画时长。 [@qixian]

v2.28.0

🆕 Utils: 增加调试信息记录功能。 [@qixian]

v2.27.10

🐞 Bubble: 移除 AIBubble 中的 Loader 组件。 [@qixian]

💄 ThinkBlock: 调整 marginTop 样式为 8px。 [@qixian]

v2.27.9

🐞 ThinkBlock: 修复消息上下文获取逻辑。 [@qixian]

v2.27.8

🐞 Bubble: 修复初始内容获取逻辑。 [@qixian]

v2.27.7

🆕 Utils: 添加 debugInfo 工具函数。 [@qixian]

🆕 MediaErrorLink: 新增组件处理媒体加载失败。 [@陈帅]

v2.27.6

🐞 Bubble: 调整内容获取顺序。 [@qixian]