Skip to content

Latest commit

 

History

History
783 lines (643 loc) · 96.2 KB

CHANGELOG.md

File metadata and controls

783 lines (643 loc) · 96.2 KB

Changelog

40.0.0 (2023-10-04)

We are happy to announce the release of CKEditor 5 v40.0.0.

Release highlights

Release of the AI Assistant feature

We are tremendously excited to share our AI Assistant plugin with you!

With the AI Assistant, you can boost your editing effectiveness and creativity in a completely new way. This feature gives the writers and editors the power to seamlessly interact with artificial intelligence. Users can generate, expand, rewrite, improve, translate, and process the content in many different ways.

The AI Assistant can be used in two ways. You can quickly re-work selected content by choosing one of the predefined AI commands. Or, you can write your own query to generate or process the content in any way you like!

Make sure to visit the documentation and try the demo!

Introduction of the image height and width support

No more layout shifts! We have introduced setting of the image width and height attributes automatically during the upload/paste process to ensure the highest-quality content with no text jumping all around. While existing images won't be automatically retroactively altered, any changes to images in the editor (like resizing) will automatically set these attributes.

We've also ensured backward compatibility with CKEditor 4, particularly while maintaining user-changed aspect ratios. More details on the changes can be found in the update guide.

Drag and drop of blocks

Just drag it!™ We have introduced a more intuitive drag-and-drop functionality for blocks and widgets. This makes content rearrangement and editing faster and easier, offering users better control over their content. Dragging by the balloon block toolbar handle is also possible, and we've updated its default icon to reflect this new drag-and-drop capability better (but it's still changeable).

Document lists feature parity

Document lists — our second-generation list plugin that supports multiple content blocks in list items — have finally landed the support for to-do lists! We also added the configuration that enforces the document list to have only a single block inside the list item (we call it “simple lists”). All this is to start deprecating the Lists v1 implementation and use the document lists as default. Coming soon!

Contextual balloon fixes

Last but not least, we prepared significant fixes to the way the contextual balloons work. They had the tendency to overflow on other elements, especially in the fixed height editors. We polished their internals, and problems should exist no more!

Please refer to the update guide to learn more about these changes.

MAJOR BREAKING CHANGES ℹ️

  • image: The model attribute name of the resized image has been changed to resizedWidth. The width and height attributes are now used to preserve the image's natural width and height.
  • image: The srcset model attribute has been simplified. It is no longer an object { data: "...", width: "..." }, but a value previously stored in the data part.

MINOR BREAKING CHANGES ℹ️

  • comments: The comment thread's "resolved" state has been separated from the "unlinked" state (a state, when the related editor content was removed from the document). A thread can have any combination of these states. If a comment thread is either "resolved" or "unlinked", it is moved to the comments archive. This new approach is reflected in the comments archive UI. Notably, an "unlinked" comment thread can become resolved and reopened while still being in the comments archive. Additionally, the "unlinked" comment threads have a gray header color to differentiate them from the "resolved" comment threads.
  • comments: The Comment#archivedAt is now the property to check when deciding whether the comment thread is inside the comments archive or not (that property was #resolvedAt before).
  • comments: CommentsArchive#resolvedThreads has been renamed to #archivedThreads. If your custom code used that property, make sure to apply this change.
  • comments: The deletedAt property is no longer passed in AddCommentThreadEvent as it is not needed anymore. Instead, deleted comment threads should never be handled in addCommentThread as they should never be added to the repository. If your custom code used that property, make sure to apply this change.
  • comments: In a real-time collaboration environment, removed comment threads will no longer be added to CommentsRepository after re-initializing the editor. Before, the comment thread was removed from CommentsRepository but was added back when the editor re-connected to Cloud Services. If your custom code expected the old (incorrect) behavior, it might need a change. This change was reflected in the comments outside editor documentation page.

Features

  • ai: Introduced the AI assistant feature.
  • clipboard: Enabled the block drag and drop by default. Closes #14734. (commit)
  • clipboard: Extended the drag and drop selection to parent elements when all their children are selected. Closes #14640. (commit)
  • image: The image width and height attributes are now preserved while loading editor content. Closes #14146. (commit)
  • image: Images without a specified size will automatically gain natural image width and height dimensions on any interaction with the image. See #14146. (commit)
  • list: Allow restricting list item content to a single text block by disabling the list.multiBlock configuration option. Closes #14634. (commit)
  • list: Introducing the to-do lists compatible with the document list feature. Closes #14663. (commit)
  • ui: Implemented new UI components: ListItemGroupView, TextareaView, SpinnerView, SearchView and AutocompleteView. (commit)
  • ui: Introduced the HighlightedTextView component for better search results presentation. (commit)

Bug fixes

  • clipboard: Improved displaying preview of the drag and drop content. Closes #14968. (commit)
  • comments: Comment threads that were permanently deleted will be removed from CommentsRepository and, in case of real-time collaboration, they will not be added back after re-connecting to the document.
  • engine: The editor wil no longer throw an error when clicking on a balloon with input on Firefox. Closes #9635. (commit)
  • image: Image should not be replaced when dropped below a widget. Closes #14710, #14740. (commit)
  • list: A dragged whole list item should still be a list item when dropped. Closes #14969. (commit)
  • mention: Fixed typing of the Mention#toMentionAttribute() method. Closes #14923. (commit)
  • utils: Balloon panels should not stick out of the visible part of the editor while scrolling. (commit)
  • utils: Fixed wrong tooltip when hovering over the toolbar buttons in Chrome on iOS. Closes #13812. (commit)
  • utils: The coordinates of an element are now correctly calculated relative to the positioned ancestor element. Closes #14992. (commit)

Other changes

  • comments: Introduced the Comment#unlinkedAt and Comment#archivedAt properties and the Comment#setUnlinkedAt() method.
  • comments: The deletedAt property is no longer passed in AddCommentThreadEvent as it is not needed anymore.
  • comments: Renamed CommentsArchive#resolvedThreads to #archivedThreads.
  • comments: Comment threads are no longer treated as "resolved" when their related content is removed from the document. These threads are now in the "unlinked" state.
  • theme-lark: Improved the drag and drop target line. Closes #14645. (commit)
  • ui: Made the ButtonView label logic open for extension. (commit)
  • ui: Changed the default icon for the BallonEditor toolbar handle and added the ability to customize it. Closes #14646. (commit)
  • Optimized icons. (commit)
  • Updated translations. (commit, commit, commit)
  • Added support to execute the yarn run clean-up-svg-icons script without arguments to optimize all icons in the entire project. Closes #14912. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Other releases:

39.0.2 (2023-09-06)

We are happy to announce the release of CKEditor 5 v39.0.2.

Release highlights

This is a patch release that resolves over 10 important issues. Check out the list below for more information.

Bug fixes

  • ckbox: The CKBox dialog should be focused after being opened. Closes #14312. (commit)
  • document-outline: The document outline feature no longer throws an error while scrolling when the editor is not fully initialized.
  • export-word: Added the missing type keyword to the interface re-export (ExportWordConfig).
  • find-and-replace: Undo should restore every text occurrence replaced by the replace all feature in the document at once. Closes #13892. (commit)
  • indent: Block elements should not be indented in document lists. Closes #14155. (commit)
  • indent: Nested lists pasted from Word should now be displayed properly in document lists. Closes #12466. (commit)
  • paste-from-office: Tables pasted from MS Excel should now have proper column widths. Closes #14521, #14516. (commit)
  • table: The editor no longer crashes when handling tables with over 2500 rows. Closes #14785. (commit)
  • table: Fixed a scrolling issue when headings are inside a table. (commit)
  • table: Tables pasted from MS Excel will now have proper column widths. Closes #14521, #14516. (commit)
  • track-changes: Two existing suggestions will not be joined if they have different attributes. In real-time collaboration, suggestions are not joined until the attributes data is loaded.
  • track-changes: A new suggestion will not be joined with an existing suggestion if any of its attributes value is different than the existing suggestion's attribute.
  • track-changes: The editor no longer crashes when a suggestion was clicked after it was brought back using undo.
  • CKEditor 5 does not rely on the global object only available in Node.js. Fixes ckeditor/vite-plugin-ckeditor5#17 and #14801. (commit)

Other changes

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

39.0.1 (2023-08-10)

Release highlights

The latest patch release of CKEditor 5 addresses a regression found after the last update, along with several smaller bug fixes. These changes aim to enhance stability and ensure a smoother user experience.

Bug fixes

  • engine: v39.0.0 introduced a breaking change in the enablePlaceholder() API. In this version (v39.0.1) we decided to make a step back and bring backward compatibility with the previous versions (below v39.0.0). The previous API is still deprecated, though, and the support for it will be removed in the future. Closes #14743. (commit)
  • html-support: A link attached to an image should not be lost when loading content with the LinkImage plugin and full General HTML Support enabled. Closes #12831. (commit)
  • paragraph: Fixed inserting a paragraph after/before a widget inside a table cell. Closes #14714. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

39.0.0 (2023-08-02)

We are happy to announce the release of CKEditor 5 v39.0.0.

Release highlights

Paste from Office Enhanced

This release introduces a new plugin that significantly boosts the retention of styles when pasting content from Microsoft Word and Excel. This improved functionality is available as part of our Productivity pack feature set.

Color picker in table (cell) properties

It is now possible to select the desired color for table properties, such as cell background or border color, using a color picker. You can test it in the Table and cell styling tools guide.

CKBox

As the new version of CKBox supports workspaces, the integration with CKEditor was updated to support them. Read more in the update guide.

Watchdog performance improvements

We have greatly improved the editor performance when Watchdog is used and huge amount of data is loaded in the editor. The editor should no longer lag every few seconds while typing, as Watchdog data backup mechanism is much faster now.

Since Watchdog is used by default in our frameworks integrations, if you use one of our integrations, you will benefit from this improvement as well!

Multi-root editor - delayed root loading [experimental]

It is now possible to initialize the multi-root editor with just one or a few of the document roots and load the other roots later on.

This solution is useful for huge documents that are split into chapters or sections, where each chapter or section is a separate document root.

Real-time collaboration and revision history features are supported. Users can join the same document but have different parts of the document loaded initially.

Please note, that there are some technical obstacles that we will be addressing in further releases:

  • As of now, the solution should be used with new documents only.
  • As of now, the revision data will still include and use the whole document data. However, the performance impact is significantly smaller than loading this data upfront when the editor is initialized.
  • Since only a part of the document is loaded, some of the features (e.g. word count, table of contents) may behave unexpectedly.

Note: this is an experimental feature. Its API and details of its behavior may change in the upcoming releases.

Major bugfixes

  • Improved sticky toolbar behavior when nesting in an overflown element. Closes #5465.

    We have resolved an issue where the sticky toolbar was incorrectly positioned if the editor was nested within multiple clipped and scrollable elements.

  • The editor does not scroll down while typing in the editable with a fixed height. Closes #13411.

    When typing in an editor with a fixed height, the scroll automatically follows as the text flows onto the next line.

  • Reverse typing effect on slower machines. Closes #14569.

    We have addressed an issue where the cursor seemed to be "stuck" and did not update in a timely manner, causing the text to be inserted behind it, especially under a very heavy JS thread load. The issue has been successfully resolved, ensuring smoother and more accurate cursor behavior.

Please refer to the update guide to learn more about these changes.

MAJOR BREAKING CHANGES ℹ️

  • ckbox: The plugin requires CKBox in version at least 2.0.0. The editor configuration option ckbox.assetsOrigin is no longer supported.

MINOR BREAKING CHANGES ℹ️

  • engine: The enablePlaceholder() helper now uses a placeholder property of the passed element. It no longer takes the placeholder text as a text argument.
  • font: The ColorTableView class has been moved to the @ckeditor/ckeditor5-ui package and remains available as a public ColorSelectorView component.
  • font: CSS classes such as .ck-color-table__remove-color or .ck-color-table__color-picker (prefixed with .ck-color-table) are now prefixed with .ck-color-selector. For instance: .ck-color-selector__remove-color or .ck-color-selector__color-picker.
  • table: Color pickers are now displayed by default for all color fields in the table and table cell properties UI. In places where users should use a limited number of colors, it is possible to disable the color picker using a configuration option. See the configuration reference of the table properties and table cell properties features to learn more.

Features

  • ckbox: Adds support for CKBox workspaces. Closes #14504. (commit)
  • ckbox: CKBoxUploadAdapter looks for categories using file extension case-insensitively. Closes #13751. (commit)
  • engine: Introduced model.Document#getRoots(). (commit)
  • engine: Placeholders can now be changed after the initialization. This can be done by changing the placeholder property of the element passed to the enablePlaceholder() helper. Closes #9925. (commit)
  • html-support: Introduced a configuration option to allow empty inline elements. Closes #9888. (commit)
  • multi-root-editor: Introduced MultiRootEditor#loadRoot() and EditorConfig.lazyRoots which can be used to implement the roots progressive ("lazy") loading. (commit)
  • multi-root-editor: Introduced MultiRootEditor#getRootAttributes(). (commit)
  • table: Implemented color pickers to color selection fields in the table properties and table cell properties UI. Closes #14500. (commit)
  • track-changes: Added track changes data support for multi-root editor without the need to specify a custom callback.
  • ui: Extracted the ColorTableView UI from ckeditor5-font as a public ColorSelectorView component (see #14500). (commit)

Bug fixes

  • comments: The comment's read-only state will now depend on the comment thread's read-only state.
  • comments: A comment thread annotation will no longer disappear after clicking on a mention hint.
  • comments: Sidebar min-height should be correctly updated after switching between various annotations display modes.
  • engine: Fixed a reverse typing issue on an editor gaining focus. Closes #14569. (commit)
  • engine: Fixed random selection-related crashes happening on Firefox for unknown reasons (error code NS_ERROR_FAILURE). Closes #14493. (commit)
  • engine: The DOM selection should not obscure the clickability of dropdown items on iOS. Closes #5753. (commit)
  • pagination: Prevented crash when the floating image is the only element in the document.
  • paragraph: The insertParagraph command will no longer insert two paragraphs when the position is at the edge of the block. Closes #13866. (commit)
  • paste-from-office: CKEditor 5 properly reflects table alignments pasted from Microsoft Word. Closes #8752. (commit)
  • paste-from-office: Fixed rendering thin space when content is pasted from Microsoft Word. Closes #12562. (commit)
  • revision-history: Fixed a minor UI error happening when root add or remove change was the first change in a given revision and changes navigation arrows were used.
  • source-editing: Fixes infinite loop in source editing mode. Closes #14469. (commit)
  • theme-lark: Adjusted the balloon tip color to match the rest of the panel. Closes #14652. (commit)
  • track-changes: Roots attributes will now be passed to internal editor in track changes data plugin. This may solve some errors with custom plugins using root attributes.
  • track-changes: Suggestion annotations will now stay open after clicking on a mention hint when writing a comment for a suggestion.
  • typing: The editor should scroll to the selection after inserting the text. Closes #13411. (commit)
  • ui: The dropdown view should not be closed when interacting with a scrollbar. Closes #14364. (commit)
  • ui: The "Powered by CKEditor" balloon is now hidden if outside the editor. (commit)
  • ui: Fixed the sticky panel behavior in overflowing containers. Closes #5465. (commit)
  • ui: Dropdowns will stay open after clicking on an HTML element added to the dropdown's focus tracker. (commit)
  • undo: Fixed incorrect selection reversion which lead to editor crash in very peculiar scenarios involving adding and removing roots and using undo and redo. (commit)
  • watchdog: Watchdog now correctly supports multi-root editor after roots were added or detached. (commit)
  • watchdog: Comments and suggestions data is now correctly restored by Watchdog in non-real-time editing "load and save" integrations. (commit)
  • watchdog: Improved the Watchdog save mechanism performance to prevent editor unresponsiveness ("lags") while editing the document. Closes #13098. (commit)
  • Fixed editor crash happening in real-time collaboration when two clients removed and re-attached a root at the same time. (commit)

Other changes

  • comments: Added the CommentThread#deletedAt property. It can be used to filter out already removed threads (e.g. in comments-outside-editor integrations).
  • core: Commands will now be disabled when the editor has no roots (applies only to commands whose state is based on a document selection placement). (commit)
  • engine: Introduced the cleanSelection event in DowncastDispatcher for downcast conversion. The event is fired before selection events and should be used to do any clean-ups before the model document selection is downcasted. (commit)
  • engine: Prevented document selection conversion if the selection is inside a model root that does not have a corresponding view root. In such a case, selection downcast event will not be fired. (commit)
  • engine: Renamed clearAttributes() converter to cleanSelection() converter. (commit)
  • engine: Schema#getNearestSelectionRange() will now return null for any position inside the graveyard root. (commit)
  • engine: model.DocumentSelection will not inherit attributes from nodes inside a graveyard. (commit)
  • engine: The DomConverter should allow registering custom matchers to detect inline object elements. See #9888. (commit)
  • paste-from-office: Adjusted the public API for Paste from Office Enhanced usage. (commit)
  • source-editing: Fixed formatting of the <br> elements in source editing. Whitespaces before a <br> element should not be added. (commit)
  • track-changes: Added the DescriptionItem type.
  • typing: The FocusObserver should be flushed if typing occurred. See #14569. (commit)
  • undo: UndoCommand#event:revert will now be fired after all changes triggered by undo are applied (including changes in post-fixer). (commit)
  • utils: Made the scrollAncestorsToShowTarget() helper take a limiter element as an argument in order to stop it from scrolling the entire viewport. Closes #14598. (commit)
  • Optimized icons. (commit)
  • Updated translations. (commit, commit, commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

38.2.0-alpha.1 (2023-07-17)

Release highlights

This release is intended to improve compatibility with Vite and Vitest by correctly reporting CKEditor packages as ESM modules.

Please note that this release is based on v38.1.0 and is marked as alpha, which means that it is an experimental version and some unexpected results may occur when using it.

We appreciate any feedback that will help us improve the final form of the project.

MINOR BREAKING CHANGES ℹ️

  • font: The ColorTableView class has been moved to the ckeditor5-ui package and remains available as a public ColorSelectorView component.
  • font: CSS classes such as .ck-color-table__remove-color or .ck-color-table__color-picker (prefixed with .ck-color-table) are now prefixed with .ck-color-selector. For instance, .ck-color-selector__remove-color or .ck-color-selector__color-picker.
  • table: Color pickers are now displayed by default for all color fields in the table and table cell properties UI. In places where users should use a limited number of colors, it is possible to disable the color picker using a configuration option. See the configuration reference of table properties and table cell properties features to learn more.

Features

  • ckbox: CKBoxUploadAdapter looks for categories using file extension case-insensitively. Closes #13751. (commit)
  • html-support: Introduced configuration option to allow empty inline elements. Closes #9888. (commit)
  • table: Brought color pickers to color fields in table properties and table cell properties UI. Closes #14500. (commit)
  • track-changes: Added track changes data support for multi-root editor without a need to specify a custom callback.
  • ui: Extracted the ColorTableView UI from ckeditor5-font as a public ColorSelectorView component (see #14500). (commit)

Bug fixes

  • comments: A comment thread annotation will no longer disappear after clicking on a mention hint.
  • document-outline: Don't throw an error when an item with the incorrect index is set to active.
  • paragraph: The insertParagraph command won't insert two paragraphs when position is at the edge of the block. Closes #13866. (commit)
  • source-editing: Fixes infinite loop in source editing mode. Closes #14469. (commit)
  • track-changes: Roots attributes will now be passed to internal editor in track changes data plugin. This may solve some errors with custom plugins using root attributes.
  • ui: Fixed the sticky panel behavior in overflowing containers. Closes #5465. (commit)
  • ui: Dropdowns will stay open after clicking on an HTML element added to the dropdown's focus tracker. (commit)

Other changes

  • engine: The DomConverter should allow registering custom matchers to detect inline object elements. See #9888. (commit)
  • source-editing: Fixed formatting of <br> elements in source editing. Whitespaces before <br> element should not be added. (commit)
  • track-changes: Added DescriptionItem type.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:


To see all releases, visit the release page.