Skip to content

Latest commit

 

History

History
805 lines (684 loc) · 105 KB

CHANGELOG.md

File metadata and controls

805 lines (684 loc) · 105 KB

Changelog

43.0.0 (August 7, 2024)

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

Release highlights

Merge fields

The new merge fields feature is a game-changer for creating document templates and other kinds of personalized or dynamic content. Thanks to this feature, you can insert placeholders into your content, indicating where actual values should go. These places are marked in the final content in a distinctive way, making it easy to later process the template and fill it with the actual values. The feature supports a preview mode too - you can define preview data sets, and see how the content will look like when real values are used directly in the editor. The plugin is highly customizable to fit various applications and scenarios. Finally, merge fields are fully integrated with our Export to Word, Export to PDF, and Import from Word features, both when they are used from the editor and via REST API.

We are extremely happy to share with you this highly demanded feature, and we cannot wait to listen to your feedback!

Make sure to visit our builder or documentation to learn more about the feature.

Export to Word V2 as the default version

The V2 version of the export to Word feature introduced significant improvements, optimizations, and fixes. This update enhances the overall performance, making the export process faster and more reliable, especially for large documents. Key improvements include better handling of table borders, automatic detection of Word styles from CSS, and support for more text-related CSS properties, ensuring your documents maintain their intended formatting.

Starting this version, the V2 configuration becomes the default in the ExportWord plugin. Make sure to migrate your configuration if you are using it.

Improved sidebar accessibility and navigation

We have introduced multiple enhancements to make the sidebar more accessible. Among other improvements, you can now use the Shift+Ctrl+E keystroke to move focus from the editor marker to the active annotation. When your comment reply is ready, you can quickly submit it using the new Ctrl+Enter shortcut. Also, navigation from one annotation to another is now possible by using arrow keys.

The full lists of keyboard supported actions can be reviewed in our Accessibility support guide.

Important bug fixes and improvements

This release brings notable bug fixes and improvements to enhance your editing experience.

  • Several improvements have been made to typing in the editor, especially for Android IME and Safari. On Android, issues like duplicated characters and reverse writing effects have been resolved. In Safari, the reverse typing effect after focus change has been fixed.
  • A couple of UI improvements:
    • We replaced the visual indication of the selected option in dropdowns (blue background) with the checkbox marks to better indicate selected options, aligning visual cues across the toolbar and menu bar.
    • All editor types now support the menu bar.
    • Additionally, the special characters UI has been moved from a dropdown to a dialog. This unifies the action between the menu bar and toolbar, and also gives content creators quicker access to the always-on-top dialog.
  • We have improved the drawing of page break line algorithm to address the pagination feature issues. We also improved the performance of the plugin.

React and Vue integrations updates

We have released new major versions of the React and Vue integrations. In both of them, we have migrated to JavaScript modules (ESM) and rewritten large parts of the codebases to support the latest versions of these frameworks and to follow the latest recommendations for writing the components.

We strongly recommend that you follow the release highlights to update to the latest versions:

MAJOR BREAKING CHANGES ℹ️

  • ckeditor5: Global name for the ckeditor5 package in the UMD builds has been changed to CKEDITOR.
  • ckeditor5-premium-features: Global name for the ckeditor5-premium-features package in the UMD builds has been changed to CKEDITOR_PREMIUM_FEATURES.
  • export-word: Export to Word V1 configuration format is deprecated, V2 is set as default. The exportWord.converterOptions configuration should be adjusted to new API. See the migration guide.
  • export-word: The auto_pagination configuration option in exportWord.converterOptions is set to false by default.

MINOR BREAKING CHANGES ℹ️

  • ckbox: The CKBoxUtils#getWorkspaceId() and CKBoxUtils#getToken() methods now return a promise instead of a resolved value.
  • comments: AnnotationView#focus() will focus the first view in the content collection instead of the view DOM element.
  • comments: Sidebar#addAnnotation() will expect the annotation view to meet the FocusableView interface (previously any UI View).
  • engine: Schema callbacks added through addChildCheck() will no longer add event listeners with high priority and will no longer stop checkChild event. Instead, these callbacks are now handled on normal priority, as a part of the default checkChild() call. This also means that listeners added to checkChild event on high priority will fire before any callbacks added by checkChild(). Earlier they would fire in registration order. This may impact you if you implemented custom schema callback using both addChildCheck() and direct listener to checkChild event. All above is also true for addAttributeCheck() and checkAttribute event and callbacks.
  • html-embed: HTML Embed plugin configuration value sanitizeHtml was moved from the htmlEmbed space to top-level configuration space. config.htmlEmbed.sanitizeHtml is now deprecated. It will still be used if it set, however we recommend updating the configuration as this property may be removed in upcoming releases.
  • real-time-collaboration: The size of avatars in the user presence list has been changed, which may affect integrations that depend on their dimensions. In addition, a focus border has been added to these avatars, which extends beyond the editor container. Please refer to the styling guide to learn how to change the look of the list.
  • real-time-collaboration: The collaboration user presence list dropdown now has a conditional overflow: scroll style (previously the style was permanent).
  • special-characters: Special characters plugin now uses a dialog (instead of a toolbar dropdown).
  • theme-lark: The --ck-list-button-padding custom property has been removed from the codebase.
  • track-changes: A substantial part of the SuggestionThreadView template was moved to a new view SuggestionView. It may affect you if you provided customization for suggestions annotations through an extended SuggestionThreadView or BaseSuggestionThreadView class. Please review updated API documentation for SuggestionThreadView#getTemplate() and SuggestionView#getTemplate(). You can extend SuggestionView the same way as SuggestionThreadView and BaseSuggestionThreadView, and provide the extended class through the newly added configuration property TrackChangesConfig#SuggestionView.
  • ui: We changed styles for "active" items inside menu bar and dropdowns lists. Previously, an active (chosen, enabled, opened, etc.) item was highlighted with a blue background. Now, the active element has a checkmark icon on the left.

Features

  • ckbox: The image upload and edit buttons are now disabled if the user has no permission to upload an asset. (commit)
  • ckbox: Added more configuration options passed down to the CKBox. Closes #3695. (commit)
  • collaboration-core: Introduced the AriaDescriptionView class that brings aria-describedby functionality to any view.
  • collaboration-core: Introduced the LateFocusButtonView and LateFocusDropdownButtonView classes that are specific buttons, for which focus event is fired after mouseup instead of mousedown. This delays all focus-related actions until the button action is performed.
  • comments: Introduced keyboard navigation and screen reader support to the annotations sidebar.
  • editor-balloon: Added support for the menu bar. Closes #16571. (commit)
  • editor-inline: Added support for the menu bar. Closes #16571. (commit)
  • engine: Schema#addChildCheck() and Schema#addAttributeCheck() can now register a callback for a specific item or attribute, which should improve performance when using custom callback checks. Callback checks should be added only for specific item or attribute if possible. See the API reference. Closes #15834. (commit)
  • export-word: Added config.exportWord.converterOptions.language configuration property to set the language of the exported Word document. The editor's content language will be used by default.
  • heading: Simplify TypeScript types of the Heading plugin configuration. (commit)
  • image: The image upload and edit buttons are disabled if the user has no permission to upload any asset. (commit)
  • import-word: The comments and suggestions imported from Word documents will preserve the original dates respecting the local timezone.
  • List: The list styles can be enabled for selected list types. Closes #15554. (commit)
  • merge-fields: Introduced the merge fields feature.
  • real-time-collaboration: Made the real-time collaboration user presence list accessible to screen reader users.
  • special-characters: Added menu bar integration for special characters. New component menuBar:specialCharacters is now by default added in "Insert" menu. Closes #16501. (commit)
  • track-changes: Introduced keyboard navigation and screen reader support to the annotations sidebar.
  • ui: Introduced keystroke handler options in FocusCycler#constructor() to allow for fine-tuning of the class behavior. (commit)
  • ui: Implemented a new FocusCycler#chain() method to connect multiple focus cyclers and provide seamless keyboard navigation across complex user interfaces. (commit)
  • ui: Redesigned "active state" style for menu bar dropdown items. Closes #16572. (commit)
  • utils: Introduced events filtering in KeystrokeHandler#set() to allow for fine-tuning of the helper's behavior. (commit)

Bug fixes

  • ai: Opening AI Assistant with a selection containing an empty line will no longer cause a crash.
  • ai: AI Assistant will now correctly handle selected content containing empty lines.
  • ckbox: Use a safer way to convert numbers to strings to avoid issues with some bundlers. Closes #16040. (commit)
  • comments: The user had to click the annotation button twice to execute an action as the first click focused the annotation and caused it to move away, which prevented the click.
  • engine: Schema#checkChild() will now correctly check custom callback checks for each item in the context. (commit)
  • engine: insertcontent-invalid-insertion-position exception is no longer thrown after pasting content containing block element + non-paragraph + block element elements. Closes #16321. (commit)
  • engine: Predictive text should not get doubled while typing. Closes #16106. (commit)
  • engine: The reverse typing effect should not happen after the focus change. Closes #14702.Thanks, @urbanspr1nter!. (commit)
  • engine: Typing on Android should avoid modifying DOM while composing. Closes #13994, #14707, #13850, #13693, #14567. Closes: #11569. (commit)
  • engine: Formatting should not get lost on a text with a marker in a table cell during upcast. (commit)
  • export-word: The author name of suggestions from an imported Word document will be correctly persisted after exporting and importing this document again.
  • find-and-replace: Allow to pass searchTerm when using findCallback in find command. (commit)
  • link: Creating a link in sentences containing an empty line will no longer cause a crash. Closes #16660. (commit)
  • list: Text nodes directly inside <ul> or <ol> should not be removed while loading editor data. Closes #16450. (commit)
  • mention: Escape mentions markers when building regular expression to prevent crashes when markers like '' are used. Closes #16818. (commit)
  • pagination: No longer generate an extra empty page after placing a page break after an element with a margin.
  • pagination: Should not apply additional styles on pageBreak element.
  • pagination: The pagination feature no longer skips pages when handling large tables. Closes ckeditor#14426.
  • pagination: The pagination renders pages differently depending on user selection.
  • real-time-collaboration: The deleted comment thread will no longer be brought back after restoring a revision in which it existed.
  • table: Horizontal split button no longer splits larger table cell spans into more than two parts. Closes #14658. (commit)
  • theme-lark: Addressed a regression in the height of buttons displayed inside lists (such as buttons in annotation menus). (commit)
  • track-changes: The user had to click the annotation button twice to execute an action as the first click focused the annotation and caused it to move away, which prevented the click.
  • track-changes: Fixed editor crash when accepting or discarding a replace suggestion with multiple parts including adding or merging a block element (paragraph, etc.).
  • typing: Predictive text should not get doubled while typing. Closes #16106. (commit)
  • typing: Typing on Android should avoid modifying DOM while composing. Closes #13994, #14707, #13850, #13693, #14567. Closes: #11569. (commit)
  • ui: Hide the pinned balloon panel view when the pin target is no longer visible. Closes #16739. (commit)
  • ui: Block toolbar button no longer remains fixed in the same position while scrolling the editable content. Closes #5460. (commit)
  • ui: The user should be able to move the focus back to where it came from upon Esc key press while navigating the menu bar. Closes #16683. (commit)
  • ui: Add /* #__PURE__ */ comments before mixin calls to properly tree-shake unused classes. Closes #16651. (commit)
  • ui: Improve accessibility of toggleable menu bar items by marking them as menucheckbox aria roles. (commit)
  • ui: Fixed element tag name from <label> to <span> in the color picker component to improve the accessibility. (commit)
  • ui: Changed the place of restricted editing buttons in the menu bar to correct ones. Closes #16609. (commit)
  • UI: The aria-live views will no longer violate the a11y aXe rule: landmarks should be unique. Closes #16544. (commit)

Other changes

  • autoformat: The blockAutoformatEditing and the inlineAutoformatEditing are now exported from the package index. Closes #16815. (commit)
  • ckbox: The plugin no longer slows down the editor startup because it fetches the token in the background instead of during the editor’s initialization. Closes #16760. (commit)
  • ckeditor5: Global name for the ckeditor5 package in the UMD builds have been changed to CKEDITOR. Closes #16798. (commit)
  • ckeditor5-premium-features: Global name for the ckeditor5-premium-features package in the UMD builds have been changed to CKEDITOR_PREMIUM_FEATURES.
  • engine: Introduced Schema#trimLast(). (commit)
  • engine: The Model#insertContent() method should keep inline objects in the same auto paragraph as text nodes and other inline objects. See #16321. (commit)
  • engine: The Schema#checkMerge() method should return false if one of the elements is a limit element. See #16321. (commit)
  • export-word: Set export word v2 as default.
  • html-embed: HTML Embed plugin configuration value sanitizeHtml was moved from the htmlEmbed space to top-level configuration space. config.htmlEmbed.sanitizeHtml is now deprecated.
  • page-break: No longer generate an extra empty page after placing a page break after an element with a margin. (commit)
  • pagination: Enhance the performance of rendering large documents when the pagination plugin is enabled.
  • special-characters: Special characters plugin now uses a dialog (instead of a toolbar dropdown). (commit)
  • track-changes: Part of the SuggestionThreadView template was moved to a new view SuggestionView.
  • track-changes: Configuration property SuggestionView was added to enable the SuggestionView class customization.
  • track-changes: Made the track changes icon more in line with other icons in the icon set.
  • ui: Added the LabelWithHighlightView and ButtonLabelWithHighlightView components to the UI library. (commit)
  • ui: Added the filterGroupAndItemNames() helper to the UI library. (commit)
  • ui: The SearchTextView#reset() method will also reset the scroll of its filteredView to the top. (commit)
  • Updated translations. (commit, 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):

Other releases:

42.0.2 (July 25, 2024)

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

Release highlights

This is a patch release that includes the following bug fixes for new installation methods introduced in v42.0.0:

  • Fixed type definitions for the imports used in the optimized build (see #16684).
  • Fixed minor issues with the ckeditor5-editor.css, ckeditor5-content.css, and other optimized style sheets (see #16703).
  • Fixed issues with installing and loading the CKEditor 5 packages using Yarn PnP (see #16646).
  • Fixed issues with loading CSS and translation files with older bundlers, such as Vite 2 and Vite 3 (see #16638).

Additionally, we fixed some performance issues in the track changes plugin. The editing experience was heavily affected if there were many (hundreds or more) suggestions in the document. This was a regression introduced in v41.0.0.

Bug fixes

  • ckeditor5: Changed the path to the types in the package.json. See #16684. (commit)
  • ckeditor5: Updated the exports field in package.json to fix issues with loading CSS and translations in older bundlers. See #16638. (commit)
  • ckeditor5-premium-features: Changed the path to the types in the package.json.
  • ckeditor5-premium-features: Updated the exports field in package.json to fix issues with loading CSS and translations in older bundlers.
  • Added dependencies used in the new dist folder as production dependencies instead of devDependencies. Related to #16646. (commit)

Other changes

  • track-changes: Performance fixes for scenarios where hundreds of suggestions exist in the document.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

42.0.1 (July 11, 2024)

We are happy to announce the release of CKEditor 5 v42.0.1.

Release highlights

This is a patch release that fixes issues with ckeditor5-editor.css and other editor-only stylesheets that contained extra newline characters causing incorrect syntax reported in ckeditor/ckeditor5#16670.

Additionally, if you maintain custom CKEditor 5 plugins and migrated them to the new package generator, you should update @ckeditor/ckeditor5-dev-build-tools to the latest version to avoid this problem in your plugin.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

42.0.0 (June 26, 2024)

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

Release highlights

New installation methods

We are excited to announce the latest release of CKEditor 5, bringing major improvements to simplify the installation and setup process. After extensive research and gathering feedback, we have improved the setup methods to enhance the developer experience and align with modern standards.

The most prominent changes:

  • All plugins and core features are now available from the unified ckeditor5 and ckeditor5-premium-features packages, reducing dependency management complexity.
  • Our packages became bundler-agnostic. You can use whatever bundler you want (such as Vite or esbuild), to integrate CKEditor 5.
  • CSS files are now distributed separately from JavaScript, allowing for parallel downloading, easier customization, and improved performance.
  • All the new distribution methods (available via npm, CDN, and ZIP downloads) allow dynamic plugin registration making it easy to add or remove plugins dynamically.

The old installation methods are still supported, but we put them on the deprecation path. Read more about this in our migration guides.

New Builder

Along with the new release, we present you the brand new CKEditor 5 Builder.

The new Builder allows you to start with one of the predefined presets, customize it by adding and removing features, and observe the changes live in an editor preview (and play with the editor!). Once you are happy with your custom setup, you get ready-to-use code snippets for React, Angular, Vue, and VanillaJS setups for both npm and CDN distributions.

Updated documentation

We rewrote large parts of the documentation to complete the picture and ensure consistency across the ecosystem. The entire Getting started section was redesigned to focus on the new installation methods and to better guide the integrator through the ecosystem.

If you need clarification or a more in-depth explanation, please let us know.

Migration paths

Finally, detailed migration guides can be found in our documentation. These guides provide step-by-step instructions and examples to help you seamlessly transition to the new installation methods:

We value your input, so please share your experiences, ask questions, and provide feedback to help us refine these changes. Join us in this exciting new chapter for CKEditor 5 and let’s make the developer experience as smooth and enjoyable as possible.

Removal of superbuild and predefined builds from the CDN

We have stopped publishing the superbuild and predefined builds to our CDN. Predefined builds can still be accessed as an npm package. If you want to keep using our CDN with new versions of the editor, we recommend migrating to the new installation methods.

Other updates

We are excited to announce a major update to our premium Export to Word feature, delivering significantly improved quality with multiple enhancements and bug fixes. This release also brings a substantial reduction in the conversion time. Export to Word v2 is an opt-in feature right now, and to use it you need to slightly change the editor’s configuration. Detailed information can be found in the documentation.

MINOR BREAKING CHANGES ℹ️

  • image: The Insert image via URL UI component form has been moved to a modal dialog instead of being available directly in the insert image dropdown.
  • image: Increased specificity of the .image-style-block-align-[right/left], .image-style-align-[right/left], and .image-style-side CSS classes by adding the .image class. See #16317.
  • media-embed: The media embed feature now uses a modal dialog (instead of a toolbar dropdown) for inserting media.
  • pagination: If you have custom CSS styles that override the default styling of the Pagination elements, they might stop working after this change. The reason is that a stricter CSS selector with ck-pagination-loaded is now used to hide or show these elements.

Features

  • engine: Schema now supports disallowing items. Introduced the SchemaItemDefinition#disallowIn, SchemaItemDefinition#disallowChildren and SchemaItemDefinition#disallowAttributes properties. Closes #15835. (commit)
  • engine: Introduced the DiffItemInsert#action, DiffItemInsert#before and DiffItemRemove#action properties which give more information about the change that happened in the model. Refer to the API documentation to learn more. Closes #15800. (commit)
  • export-word: Added support for Export to Word API v2.
  • image: Added menu bar integration for the insert image component. The menuBar:insertImage component is by default added to the "Insert" menu and replaces current buttons related to image insertion. Closes #16445. (commit)
  • list-multi-level: Added the menu bar integration for multi-level lists. The menuBar:multiLevelList component is by default added in the "Format" menu.
  • media-embed: Added menu bar integration to media embed. The "Media" button is now available in the "Insert" menu. (commit)
  • watchdog: Export the EditorCreatorFunction and WatchdogConfig types from the main index file. (commit)

Bug fixes

  • ai: The h1 tags will no longer be normalized to h2 tags in the AI Assistant response if the editor has h1 tags enabled in its content.
  • ckbox: The image toolbar stays attached to the image after closing CKBox. Closes #16153. (commit)
  • ckeditor5-premium-features: Use the new @ckeditor/ckeditor-cloud-services-collaboration build targeting es2022 when creating a browser build of ckeditor5-premium-features.
  • comments: Prevent crashes in narrow and wide sidebars when the EditorAnnotations plugin is not loaded.
  • engine: Preserve repeated spaces in text that is contained within an element that renders (repeated) white space. Closes #16124. (commit)
  • export-word: Collaboration features should work with Export Word v2 API.
  • image: Buttons inside the insertImage dropdown will no longer have an unnecessary tooltip. (commit)
  • image: Increased specificity of the .image-style-block-align-[right/left], .image-style-align-[right/left], and .image-style-side CSS classes by adding the .image class. Closes #16317. (commit)
  • link: Set inputmode=url to a link balloon form input. Closes #16389. (commit)
  • list-multi-level: The toolbar button should be on when the multi-level list is selected. This refers to the single button, not the split button. See #16345.
  • pagination: The PageBreak and Pagination plugin styles no longer conflict. Closes #16506.
  • real-time-collaboration: Long user names should render correctly in the collapsed presence list when the config.presenceList.onClick configuration is set.
  • track-changes: Fixed the commentsrepository-duplicated-comment-thread-id error thrown after calling TrackChangesData#getDataWithAcceptedSuggestions() and TrackChangesData#getDataWithDiscardedSuggestions().
  • track-changes: Fixed the editor crash in a scenario involving real-time collaboration and undo, when a suggestion was created twice on the same row.
  • ui: Fixed incorrect position of the block toolbar tooltip handle. Closes #16365. (commit)
  • ui: Prevented an editor error in a situation where tooltip was unpinned after it was already removed. This happened when the "Unlink" button was pressed while the tooltip was shown. (commit)
  • ui: The TooltipManager tooltips should immediately show up when triggered by user focus for better responsiveness and accessibility. (commit)
  • Add declare to dynamically populated class fields. Closes #16386. (commit)

Other changes

  • ai: Slightly improved the quality of the AI Assistant responses when the editor selection is empty.
  • ckeditor5: Moved the @ckeditor/ckeditor5-build-* packages to devDependencies to reduce the installation size of the ckeditor5 package. Related to #16360. (commit)
  • ckeditor5: Renamed index.js to ckeditor5.js in the new installation method builds. (commit)
  • ckeditor5: Added the main, module, types and exports fields to the package.json file. Closes #16257. (commit)
  • ckeditor5: Renamed files in the browser build to ckeditor5. (commit)
  • ckeditor5-premium-features: Renamed the index.js file to ckeditor5-premium-features.js in new installation method builds.
  • core: The EditorWatchdog, ContextWatchdog, and Context classes are now exposed as static fields of the Editor class. Closes #13852. (commit)
  • engine: Export XmlDataProcessor from the main index. (commit)
  • engine: Export the ViewDocumentBlurEvent and ViewDocumentFocusEvent types from the main index. (commit)
  • image: The following new components are now available: the insertImageViaUrl toolbar button and the menuBar:insertImageViaUrl menu bar button. (commit)
  • image: The Insert image via URL form has been moved to a modal dialog instead of being available directly in the insert image dropdown. (commit)
  • markdown-gfm: Rewrote html2markdown and markdown2html to classes to improve tree-shaking. Related to #16292. (commit)
  • markdown-gfm: Upgraded turndown to version 7.2.0. Closes #16371. (commit)
  • media-embed: The media embed feature now uses a modal dialog (instead of toolbar dropdown) for inserting media. (commit)
  • operations-compressor: Improved the build size by making the compiledmessages.js file tree-shakeable.
  • theme-lark: Added a separator (border) between the menu bar and the toolbar for the classic editor. (commit)
  • theme-lark: Toolbar separators are now shorter. (commit)
  • track-changes: Removed the deprecated TrackChangesEditing#_descriptionFactory property. Use descriptionFactory instead. The old property was deprecated in the v41.4.0 release.
  • widget: Added information to the accessibility help dialog about a keyboard shortcut that moves focus from a nested editable back to the widget. (commit)
  • Improved tree-shaking by prefixing mixin calls with a /* #__PURE__ */ magic comment. See #16292. (commit)
  • Updated translations. (commit, commit, commit)

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:

41.4.2 (May 17, 2024)

We are excited to announce the release of CKEditor 5 v41.4.2. This patch release addresses an important issue and ensures compatibility with the Jest environment.

Bug fixes

  • utils: Prevented error thrown when editor files are imported in an environment without the window global object. Closes #16368. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:


To see all releases, visit the release page.