Contribute to this guide

guideCKEditor 5 变更日志

这是 CKEditor 5 的变更日志指南。在这里,您将找到有关版本中引入的最重要更改、新功能和错误修复的信息。

如果版本引入了重大更改和次要更改,则也可以获得有关两者信息。您可以在 版本控制策略 指南中了解有关 CKEditor 5 中重大更改的更多信息。

您可以在每个条目开头链接的博客文章中找到有关每个版本的更多信息。

本指南提供 CKEditor 5 最近 3 个版本的变更日志信息。对于旧版本,请参阅 GitHub 上的发布说明

# CKEditor 5 43.3.0 版本

我们很高兴宣布 CKEditor 5 v43.3.0 的发布。

# 版本亮点

# 性能改进

我们改进了编辑器处理文档结构的方式,使其访问特定元素和验证其位置更加可靠和高效。

  • 节点索引和偏移缓存NodeNodeList 元素现在缓存索引和偏移值,减少了重新计算的需要,并在模型操作期间显着提高了整体性能。
  • 选择范围验证:新实现的 Position#isValid() 方法还用于更好地验证选择范围,确保在各种编辑场景中行为更加一致。
  • 性能改进数字:编辑器现在加载内容的速度提高了3 倍,在某些情况下,速度甚至提高了 6 倍,具体取决于内容的类型和大小。例如,以前加载特定的 200 页文档需要近 25 秒,现在已减少到仅 3.5 秒。

我们致力于持续进行性能改进,因此您可以在未来的更新中期待更快速、更流畅的体验。

# 导出到 Word 的水印支持

添加了一个新的配置选项,以便在将文档导出到 Word 时包含水印,从而在文档品牌和保护方面提供更大的灵活性。

# 值得注意的错误修复和改进

  • 修订还原时的建议保留:在特定情况下,在恢复包含多个用户更改的修订时,建议不再丢失。修订跟踪流程已得到改进,以确保所有操作(包括标记)在同步期间得到正确处理和保存。此修复程序解决了以前未保留标记的问题,确保了协作编辑场景中一致的数据处理。
  • 操作下拉菜单可见性修复:解决了评论权限更改后操作下拉菜单仍然隐藏的问题。下拉菜单现在正确反映了更新的权限,使用户能够无缝地与可用操作进行交互。
  • AI 命令增强:
    • 自定义 AI 命令现在仅在存在一组评论时正确应用于单个下拉菜单,而不是应用于整个组。
    • 空评论组不再渲染,从而提高了 UI 清晰度。
    • 修复了当在气球工具栏中使用嵌套的 AI 命令菜单时,嵌套的 AI 命令菜单会意外关闭的问题,从而防止了选择过程中的意外行为。

# 功能

  • engine:为 model.Elementmodel.DocumentFragment 引入了 getChildAtOffset() 方法。(commit
  • engine:引入了 Position#isValid() 方法,用于检查位置是否存在于当前模型树中。(commit
  • export-word:添加了一个配置设置,用于向生成的文档添加水印。
  • revision-history:在编辑器 API 的公共范围内引入了 RevisionTracker#getRevisionDocumentData()RevisionTracker#getRevisionRootsAttributes() 方法。您可以使用它们检索随修订保存的文档数据。
  • utils:使 FocusTracker 可以扩展其他 FocusTracker 实例,以允许跨独立 DOM 子树进行逻辑焦点跟踪(请参见 #17277)。(commit

# 错误修复

  • ai:空 AI 助手命令组不应在 UI 中渲染。
  • ai:当只有一个命令组可用时,AI 助手命令列表应保持平坦。
  • comments:修复了允许对评论执行操作的权限更改后,操作下拉菜单仍然隐藏的问题。
  • engine:内联对象的內容应作为流动根处理,因此应修剪空格,因为内联对象元素的內容位于块元素内。关闭 #17199。(commit
  • image:在 sources 下降时正确处理现有图片元素。(commit
  • link:当设置了 LinkConfig#addTargetToExternalLinks: true 时,不再在从图像中移除链接后崩溃编辑器。关闭 https://github.com/ckeditor/ckeditor5/issues/17252。(commit
  • list-multi-level:多级列表应在 Decoupled Editor 的 RTL 模式下正确显示。
  • pagination:改进了大型表格(后面跟着块元素)的分页。
  • revision-history:在实时协作中恢复修订时,建议不再丢失。
  • ui:下拉菜单组件不应在用户将鼠标悬停在嵌套菜单上时,在 BalloonToolbar 中使用时导致编辑器失去焦点。关闭 #17277。(commit
  • ui:使页面在模态窗口可见时无法滚动。关闭 #17093。(commit

# 其他更改

  • engine:现在在模型 NodeNodeList 中缓存节点索引和偏移相关的值,以提高性能。(commit
  • link:从 ckeditor5-link 包中导出了链接和取消链接图标。关闭 #17304。(commit
  • ui:在 Dialog 插件中禁用了模态窗口的拖动支持。关闭 #17290。(commit
  • ui:禁用了 config.ui.viewportOffset 导致的模态窗口的位置限制。关闭 #17290。(commit

# CKEditor 5 43.2.0 版本

我们很高兴宣布 CKEditor 5 v43.2.0 的发布。

# 版本亮点

# 值得注意的改进

  • 操作变换稳定性:对 OT 系统进行了重大更改,增强了撤消功能和实时协作,尤其是在冲突解决场景中。这些改进确保了复杂交互过程中编辑器操作更加流畅。
  • 性能改进:我们合并了几个社区驱动的性能改进(感谢 @sunesimonsen),优化了编辑器的核心引擎。虽然编辑器的逻辑没有改变,但这些更新提高了整体效率和响应能力。

# 通过 ckeditor5ckeditor5-premium-features 索引可以获得更多导入

随着用户迁移到新的安装方法(v42.0.0+),使用 `ckeditor5` 和 `ckeditor5-premium-features` 作为主要包,我们一直在不断解决对不太常用类、函数、类型和实用程序的缺少导入,扩大它们的可用性。自我们的 TypeScript 重写(v37.0.0)以来,现在可以直接通过包索引进行导入,简化了集成。由于许多用户以前从 `src` 中导入,我们建议您尝试新版本并报告任何缺少的导入。将来,我们正在考虑从发布的包中删除 `src`,以减小包大小,因此我们收到的反馈越多,我们将提供的 API 就越稳定和完善。

# 功能

# 错误修复

  • ckbox: 使用 `CKBox` 编辑内联图像不再同时更改和重新插入图像。关闭 #17056。(commit)
  • engine: 修复了某些情况下涉及撤销和实时协作的标记处理错误,这些错误以前会导致 `model-nodelist-offset-out-of-bounds` 错误。查看 #9296。(commit)
  • engine: 修复了某些情况下涉及实时协作的撤销期间合并更改的错误处理,这些错误以前会导致 `model-nodelist-offset-out-of-bounds` 错误。查看 #9296。(commit)
  • engine: 修复了冲突解决错误,该错误会导致编辑器在某些情况下崩溃,在这些情况下,两个用户删除了较大重叠部分的内容并使用撤销。查看 #9296。(commit)
  • engine: 修复了错误的撤销行为,导致编辑器在用户多次按 Enter 键,然后按退格键相同次数,然后撤消所有更改时崩溃。关闭 #9296。(commit)
  • theme-lark: 提高了下拉菜单面板样式的特定性,以解决 `z-index` 排序不正确的問題。(commit)
  • ui: 修复了块工具栏按钮处于活动状态时下拉菜单中的滚动问题。关闭 #17067。(commit)
  • ui: 提高了下拉菜单面板样式的特定性,以解决 `z-index` 排序不正确的問題。(commit)

# 其他更改

# CKEditor 5 43.1.1 版本

我们很高兴宣布 CKEditor 5 v43.1.1 版本发布。

在最近的一次内部审计中,我们发现 CKEditor 5 剪贴板包中存在跨站点脚本 (XSS) 漏洞 (CVE-2024-45613)。如果攻击者设法将恶意内容插入编辑器中,则可能会通过特定用户操作触发此漏洞,从而导致未经授权的 JavaScript 代码执行,这可能发生在非常特定的编辑器配置下。

此漏洞仅影响编辑器配置满足以下条件的安装。

  1. 块工具栏 插件已启用。
  2. 以下插件之一也已启用

您可以在相关的 安全公告 中阅读更多详细信息,如果您有更多问题,请联系我们

借此机会,我们决定对代码库中引入理论上和无法利用的问题的部分进行额外加固。我们的安全团队确认,这些问题在实际场景中均无法利用,但我们决定修复它们,以提高软件的整体安全姿态。