Releases: ckeditor/ckeditor5
v34.2.0
Release highlights
We are happy to announce the release of CKEditor 5 v34.2.0.
This release introduces the following new features:
- A unsaved revision will now be resumed when the editor is re-initialized (instead of creating a new revision). Note, that currently, this feature does not work for real-time editing integrations that use an editor bundle uploaded to Cloud Services.
- Integrated the track changes feature with the code block and HTML embed features.
- Integrated CKEditor 5 with the CKBox service.
Read more in: https://ckeditor.com/blog/ckeditor-5-v34.2.0-with-ckbox-resuming-unsaved-revisions-and-a-new-installation-walkthrough/
Features
- ckbox: Added a new package (
@ckeditor/ckeditor5-ckbox
), which integrates the CKBox service with CKEditor 5. (commit) - comments: Introduced the
annotations
property for theWideSidebar
,NarrowSidebar
andInlineAnnotations
plugins. The property is anAnnotationsCollection
instance which keeps all annotations added to the given UI. - html-support: Custom elements should be preserved by the General HTML Support feature. Closes #11432. (commit)
- real-time-collaboration: Introduced the
cloudServices.connectionTimeout
andcloudServices.requestTimeout
configuration options that allow for changing timeout values for connecting to Cloud Services and for handling a single request. - revision-history: Unsaved revision will now be resumed when the editor is re-initialized (instead of creating a new revision). Introduced the
revisionHistory.resumeUnsavedRevision
configuration option that turns on and off this behavior (defaults totrue
). - track-changes: Added track changes integration for the code block and HTML embed features.
Bug fixes
- engine: The order of attributes should not get reversed while loading editor data. Closes #11850. (commit)
- engine: Inline filler should not be removed while updating a text node. Closes #11472. (commit)
- engine: The view element
renderUnsafeAttributes
option should not be lost for an AttributeElements. Closes #11879. (commit) - engine: Whitespaces between block elements should not trigger auto-paragraphing. Closes #11248. (commit)
- revision-history: Fixed long revision history loading time when
Context
is used. - source-editing: The
formatHtml()
helper should not crash when a pathological<iframe>
content is passed. Closes #10698. (commit) - toolbar: Added a toolbar button tooltip when focused improving accessibility for keyboard users. Closes #5581. (commit)
- ui: The secondary button of the
SplitButtonView
component should display a tooltip while being hovered over by the user. Closes #11833. (commit)
Other changes
- code-block: The
IndentCodeBlockCommand
and theOutdentCodeBlockCommand
are now usingmodel.insertContent()
andmodel.deleteContent()
for easier extendability. (commit) - engine: Use
innerText
instead ofinnerHTML
in view/filler. (commit) - real-time-collaboration: Raised default timeout settings for connecting to Cloud Services (to 10 seconds) and for handling a single request (to 20 seconds).
- revision-history: Added support for replacing editor data with revision data also for non-real-time editing integration.
- Updated translations. (commit, commit)
Released packages
Check out the Versioning policy guide for more information.
Released packages (summary)
New packages:
- @ckeditor/ckeditor5-ckbox: v34.2.0
Releases containing new features:
- @ckeditor/ckeditor5-build-balloon: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-build-balloon-block: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-build-classic: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-build-decoupled-document: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-build-inline: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-ckfinder: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-engine: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-html-support: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-image: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-upload: v34.1.0 => v34.2.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-alignment: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-autoformat: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-autosave: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-basic-styles: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-block-quote: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-clipboard: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-cloud-services: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-code-block: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-collaboration-core: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-comments: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-core: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-easy-image: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-editor-balloon: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-editor-classic: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-editor-decoupled: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-editor-inline: v34.1.0 => v34.2.0
- @ckeditor/ckeditor5-enter: v34.1.0 => v34.2.0
- [@ckeditor/ckeditor5-essentials](https://www.npmjs.com/...
v34.1.0
Release highlights
We are happy to announce the release of CKEditor 5 v34.1.0.
This release introduces the following new features:
- Table column resize
- Support for the document storage for the Revision history feature
There were also a few bug fixes:
- Suggestions and comments are no longer lost on elements with enabled GHS attributes
Read more in: https://ckeditor.com/blog/ckeditor-5-v34.1.0-with-table-column-resize-feature-revision-history-enhancements-and-bugfixes/
Cloud Services compatibility
The new version of CKEditor 5 real-time collaboration is not compatible with the current version of CKEditor 5 Cloud Services On-Premises (4.6.0
).
Please wait for the new release of the CKEditor 5 Cloud Services On-Premises solution and update the backend service first, before updating the CKEditor 5 packages.
Features
- engine: Improved the
History
API. You can find the changes summary in the related issue. Closes #11226. (commit) - list: Added support for the
type
attribute of the<ul>
and<ol>
elements in addition to thelist-style-type
style. Closes #11615. (commit) - real-time-collaboration: Introduced better support for revision history when editor bundle is used. This greatly reduced the number of calls and revision data passed to Cloud Services.
- table: Added support for table column resizing, which allows to set the width of each column in a table using a resize handle. (commit)
Bug fixes
- code-block: Redundant text nodes should be removed from
<pre>
on upcast to avoid breaking the code block. Closes #11616. (commit) - engine: Attributes should not be set if a parent was converted into a collapsed range. Closes #11000. (commit)
- engine: The
elementToAttribute()
upcast helper should consume an element itself while consuming its attribute. See #10800. (commit) - html-support: Extracted upcasting attributes of the
figure
view element to separate converters for thetable
,image
andmedia
integrations. Closes #11688. (commit) - html-support: The
<div>
elements should be upcast to container-like elements when there is a block among their descendants. Closes #11513. (commit) - html-support: Inline elements handled by a native editor plugin should not be handled by the GHS. Closes #10800, #10954. (commit)
- html-support: Unlinking should remove a link even if there were some additional attributes handled by the GHS. See #10800. (commit)
- language: Fixes the interference between
TextPartLanguage
andCodeBlock
. Closes #11538, #11563. (commit) - mention: The mention UI should not show up when matching an existing mention following a white space. Closes #11400. (commit)
- pagination: The
PaginationLookup
plugin should destroy parent class and stop listening to events from external emitters. Closes #1148. - paste-from-office: Fixes pasting multiple lines from Google Docs into a code block. (commit) Thanks to @skylerfenn!
- restricted-editing: Standard editing mode post-fixers will no longer create marker operations with invalid base versions. Closes #11644. (commit)
- revision-history: Incorrect HTML was generated from a revision if there was a space at the end of a block which lead to crashes when comparing multiple revisions.
- style: The block style should be applied to all matching selected blocks. Closes #11582. (commit)
- style: Inline style can be removed from an inline widget. Closes #11584. (commit)
- style: Inline styles should not be enabled inside a code block. Closes #11581. (commit)
- style: Container styles (for example, a block quote style) should be applied properly. Closes #11576. (commit)
- style: A grid with styles should render properly with two styles in a row. Closes #11575. (commit)
Other changes
- engine: Exported some of the
engine.View
classes inindex.js
. (commit) - html-support: Introduced
DataFilter#processViewAttributes()
that is helpful when integrating the GHS with a custom feature. Closes #10827. (commit) - list: Copying content from a single list item should not wrap it with a list in the clipboard. Closes #11608. (commit)
- real-time-collaboration: Revision dates will now be based on the server time instead of the local time.
- revision-history: A revision date can now be updated on backend when the revision is saved using the revision history adapter. See the API reference for
RevisionHistoryAdapter#updateRevisions
to learn more. - watchdog: Improved the
ContextWatchdog
queueing mechanism. Closes #11664. (commit) - Updated translati...
v34.0.0
Release highlights
We are happy to announce the release of CKEditor 5 v34.0.0.
This release introduces the following new features:
- Support for document lists
- Support for the lock mechanism for the
Editor#isReadOnly
property - Replacement for the CKEditor 4's styles dropdown feature
- Revision history: efficiency improvements and added the DLL build
- Upgrade to PostCSS 8
There were also a few bug fixes:
- Certain markup no longer breaks the editor when using the GHS feature
- Block insertion annotations are now properly displayed even if there is any annotation afterwards
Read more in: https://ckeditor.com/blog/ckeditor-5-v34.0.0-with-redesigned-lists-new-styles-implementation-and-extended-dll-builds/
Please refer to the Migration to v34.x guide to learn more about these changes.
MAJOR BREAKING CHANGES ℹ️
- The
Editor#isReadOnly
property is now not editable directly. Starting this release, the property is controlled byEditor#enableReadOnlyMode( lockId )
andEditor#disableReadOnlyMode( lockId )
, which allow changing theEditor#isReadOnly
state by more than one feature without collisions. See the migration guide to learn more.
MINOR BREAKING CHANGES ℹ️
- engine: The
isAllowedInsideAttributeElement
option has been removed, so theAttributeElement
elements can wrap any view element (according to positions). Make sure that you are not wrapping any of theContainerElement
elements by accident by not checking the target in the converter. These would previously get wrapped by theAttributeElement
element which would immediately be removed by theContainerElement
element within it so there would be no visible effect. - engine: The handling of
Tab
andShift+Tab
keystrokes have been switched to the'tab'
view document event across the project. If your integration usesKeystrokeHandler
forTab
key handling, we recommend you migrate to the'tab'
event to avoid unpredicted errors. - engine: If your integration uses the
Model#insertContent()
andfindOptimalInsertionRange()
methods to insert widgets into the content, we recommend you migrate your code to theModel#insertObject()
method for best results. This is particularly relevant for compatibility with the document lists feature (see #11198). - html-support: The
$htmlSection
,$htmlObjectBlock
, and$htmlObjectInline
element types are no longer available for custom elements registered via theregisterBlockElement()
method to inherit from. Please use$container
,$blockObject
, and$inlineObject
instead (see #11197).
Features
- core: Introduced the lock mechanism for the
Editor#isReadOnly
property. The read-only mode can now be separately enabled and disabled by multiple features, which allow for proper control without conflicts between features. Closes #10496. (commit) - core:
MultiCommand
now allows setting the priority (the order) of registered subcommands. Closes #11083. (commit) - engine: Added the new
Model#insertObject()
method for inserting elements defined as objects by model schema (see #11198). (commit) - engine: Introduced the inheritable
$container
,$blockObject
, and$inlineObject
element types in the modelSchema
(see #11197). (commit) - engine: Introduced the
TabObserver
observer that allows listening to pressing down theTab
key in the specified context. (commit) - engine: Added the new
Schema#getAttributesWithProperty()
method that retrieves attributes from a node which has a given property (see #11198). (commit) - engine: Added the new
Schema#setAllowedAttributes()
method that validates whether attributes are allowed on a given element before setting them (see #11198). (commit) - html-support: Changes to GHS model attributes will be reflected in the editing view (see #5700). (commit)
- html-support: Added support for document list in the
GeneralHtmlSupport
feature. Closes #11454, #11359, #11358. (commit) - list: Introducing the document list feature (multiple blocks per list item). Closes #2973, #10812. (commit)
- list: Introducing the document list properties feature (list styles, start index, reversed list). Closes #11065. (commit)
- paragraph: Added an optional
options.attributes
parameter to theInsertParagraph
command that allows setting attributes on a created paragraph (see #11198). (commit) - style: Implemented the configurable style feature with the style UI dropdown. Closes #5700. (commit)
- theme-lark: Implemented a
.ck-reset_all-excluded
CSS class that excludes certain elements from CSS reset. Closes #11451. (commit)
Bug fixes
- engine: Marker changes sometimes did not trigger
change:data
event which resulted in errors in features using markers (for example, annotations not showing up in the sidebar). (commit) - html-support: GHS should not convert already consumed inline elements (e.g. handled by other editor features). Closes #11447. (commit)
- html-support: Prevent the
TypeError
error in themergeViewElementAttributes()
function. Closes #10657, #11450, #11477. (commit) - html-support: Skip inl...
v33.0.0
Release highlights
We are happy to announce the release of CKEditor 5 v33.0.0.
This release introduces the following new features:
- A new, completely redesigned reconversion system
- Support for handling the
<style>
element in the General HTML Support feature - DLL-compatible package builds for collaboration features
- A solution for how to downcast a table to
table>caption
- Real-time collaboration support in revision history
There were also a few bug fixes:
- Removing complex emojis now work as expected
- Preparing DLL package builds in the development mode (the
--dev
flag) no longer ends with an error - Clicking content that has a comment does not cause content data change (resulting with extra autosave)
- The
<CKEditorContext>
React component now destroys properly
Read more in: https://ckeditor.com/blog/ckeditor-5-v33.0.0-with-improved-conversion-system-and-dll-builds-for-collaboration-features/
MAJOR BREAKING CHANGES ℹ️
- engine: Removed the
Differ#refreshItem()
method from the public API. Replaced byEditingController#reconvertItem()
(see #10659). - engine: The
DowncastDispatcher
will throw an error if any of the model items were not consumed while converting. Read theconversion-model-consumable-not-consumed
error documentation for more information. - engine: The
DowncastDispatcher#conversionApi
property is no longer available. The instances ofDowncastConversionApi
are created at the start of conversion. - engine: Support for the
triggerBy
option for downcast helpers was removed and replaced with the newelementToStructure()
options. - list: The
ListEditing
,ListUI
,ListStyleEditing
,ListStyleUI
,TodoListEditing
,TodoListUI
plugins were moved to their dedicated subdirectories (list
,liststyle
,todolist
).
MINOR BREAKING CHANGES ℹ️
- image: Image caption utilities were converted to the
ImageCaptionUtils
plugin. - table: The downcast converters of the table feature were rewritten with the use of
elementToStructure()
and the re-conversion mechanism. See #10502. - table: The table selection utilities were to the
TableUtils
plugin. config.initialData
will now always be set, even if it is not passed in the editor config.
Features
- engine: The
DowncastWriter#createContainerElement()
should accept a list of children so that bigger view structures can be created in one call. Closes #10714. (commit) - engine: The
elementToElement()
downcast helper will log a console warning if multiple elements have been created. Closes #10610. (commit) - engine: The
DowncastDispatcher
will throw an error if any of the model items were not consumed while converting. Closes #10377. (commit) - engine: Introducing
convertItem()
,convertChildren()
andconvertAttributes()
in the downcast conversion API interface. (commit) - engine: Added support for reconversion in the
DowncastHelpers#elementToElement()
downcast helper. Closes #10359. (commit) - engine: Added the
DowncastHelpers#elementToStructure()
downcast helper with reconversion support. Closes #10358. (commit) - engine: It is now possible to trigger a nested conversion while downcasting an element. (commit)
- engine: The
DeleteCommand
changed to delete the whole multi-character emoji at once. Closes #6504. (commit) - engine: Introduced
Marker#getData()
. (commit) - html-support: Added the
<style>
element support in General HTML Support feature. Closes #11104. (commit) - table: Introduced the
PlainTableOutput
plugin to override the defaultfigure>caption
markup in the data pipeline (it outputs the table astable>caption
). Closes: #10892. (commit)
Bug fixes
- engine: Setting a marker to the same range it was will no longer trigger the
change:data
event. This will prevent unnecessary autosave callbacks. Closes #9901. (commit) - html-support: Prevent the removal of the
<script>
and<style>
elements when they are the only content in the editor. Closes #11247. (commit) - image: Always create new instances of the default options for the
ImageStyle
plugin. Closes #11328. (commit) - table: Prevent the plain table output converter from interfering with other features' caption converters. Closes #11394. (commit)
- Fixed the "Unknown option --dev" error when building DLL files in the development mode enabled. Closes #11170. (commit)
Other changes
- engine: Implemented the
EditingController#reconvertMarker()
method to be used instead ofWriter#updateMarker()
for marker reconversion purposes. Implemented theEditingController#reconvertItem()
method to replaceDiffer#refreshItem()
. Closes #10659. (commit) - engine: The attribute and child nodes conversion events are fired by the lowest priority handler for the insert event instead of the
DowncastDispatcher
itself. Closes #10376. (commit) - engine: Events are fired by the
DowncastDispatcher
...
v32.0.0
Release highlights
We are happy to announce the release of CKEditor 5 v32.0.0.
This release introduces the following new features:
- The environment was upgraded to use webpack 5 and Node 14.
- Introduced support for the list
start
andreversed
attributes, including when pasting from Word. - Addedd support for autocomplete with space in the mention plugin.
- Improved handling of
<script>
elements in General HTML support (GHS) feature.
MAJOR BREAKING CHANGES ℹ️
- engine:
Batch#type
has been deprecated. It will always return'default'
value and reading it will log a warning in the console. UseBatch#isUndoable
,Batch#isLocal
,Batch#isUndo
andBatch#isTyping
instead. - revision-history: Multiple changes to
Revision
properties has been introduced that impact revision history integrations. Introduced#fromRevision
and#toRevision
properties. Renamed#data
to#diffData
. The#isLocked
property has been removed. Those changes have an impact on what data should be saved in your database and how the revision history plugin should be integrated. Please refer to the migration guide and the documentation to learn more about these changes. - revision-history: The
RevisionHistoryAdapter
interface has changed. Also,RevisionTracker
no longer usesRevisionHistoryAdapter#getRevisions()
to fetch revisions during editor initialization. You should add revisions data in your integration plugin. Please refer to the migration guide and the documentation to learn how to update your revision history integration. - revision-history:
RevisionTracker#updateRevision()
has been removed while#update()
and#saveRevision()
have been introduced instead. This, among others, may have an impact on your autosave integration. Please refer to the migration guide and the documentation to learn how to update your revision history integration. - typing:
Input#isInput()
has been removed. UseBatch#isTyping
instead. - Upgraded the minimal versions of Node.js to
14.0.0
due to the end of LTS.
MINOR BREAKING CHANGES ℹ️
- engine: The string value for the
Batch
type andModel#enqueueChange()
is now deprecated. Using a string value will log a warning in the console. Use an object value instead. For more information, refer to the API documentation. - revision-history:
RevisionTracker#isLocked
has been removed. - revision-history: The flow for creating and updating a revision has changed. See documentation to learn what it looks like after the changes.
- The previously named
#_getTemplate()
methods inCommentThreadView
,CommentView
, andSuggestionThreadView
were renamed to#getTemplate()
. These methods are used in annotations customization, when changing the default templates.
Features
- autosave:
Autosave#save()
will now return a promise that is resolved when the autosave callback has finished. (commit) - comments: Introduced
Annotation#refreshVisibility()
andAnnotations#refreshVisibility()
that refresh the visibility of the annotations based on the visibility of their target elements. - comments: Introduced the
Annotation#isVisible
observable property, that allows controlling the visibility of the annotation. - html-support: Added support for the
<script>
elements. Closes #10891. (commit) - list: Implemented the numbered list properties UI. Closes #10877. (commit)
- list: Added support for reversed lists and list start index (
reversed
andstart
HTML attributes). Closes #10673. (commit) - paste-from-office: Added support for start index in ordered lists. Closes #11043. (commit)
- revision-history: Introduced
Revision#fromVersion
andRevision#toVersion
. - revision-history: Introduced new methods in
RevisionHistory
plugin:#addRevisionData()
,#getRevision()
,#getRevisions()
. - ui: Introduced the
InputNumberView
class and thecreateLabeledInputNumber()
helper for creating number inputs (see #10877). (commit) - ui: Introduced the
InputView
class for other inputs such asInputTextView
to inherit from (see #10877). (commit) - utils: Introduced the
isVisible()
helper to detect whether DOM elements are visible to the user in DOM (see #10877). (commit) - Replaced
Batch#type
with a set of flags:Batch#isUndoable
,Batch#isLocal
,Batch#isUndo
,Batch#isTyping
which better represent the batch type. TheBatch
constructor andModel#enqueueChange()
now expect an object. Closes #10967. (commit)
Bug fixes
- comments: DOM listeners will be detached when destroying annotation collections which prevents memory leaks.
- engine:
HTMLDataProcessor#toView()
should preserve leading non-layout elements while loading partial HTML. Closes #11110. (commit) - list: The list properties feature will no longer crash when removing content from the last list item which is next to a non-list element. Closes #8642. (commit)
- mention: The mention plugin now allows searching mentions that include space characters. Closes #9741. (commit)
- pagination: The page number input view should not stretch. Used
InputNumberView
to render the page number input inPageNavigatorView
. - revision-history: Fixed a crash when a revision contained overlapping suggestions.
- revision-history: Fixed a crash when content selected by triple-click was copy-pasted into the editor.
- track-changes: Fixed a crash that was happening during real-time editing when one of the users used enter inside a suggestion.
- typing: Fixed editor crash when an unrecognized transformation was given in configuration (as a string). ([commit](https://github.com/ckeditor/ckeditor5/com...
v31.1.0
Release highlights
We are happy to announce the release of CKEditor 5 v31.1.0.
This release introduces the following new features:
- Support for Shift+Delete on Windows to cut the selected content.
- Possibility to open a link with Ctrl/Cmd+click or Alt+Enter.
- Mark the default output for features in the HTML output guide.
There were also a few bug fixes:
- Selection was sometimes not merged correctly.
- It was almost impossible to click certain buttons in the balloon toolbar (Safari, iOS).
- The editor builder
defaultConfig.language
did not apply toeditor.locale
. - Find and replace did not find whole words that are next to each other.
- Figure tag got duplicated when the General HTML Support configuration allows all.
MINOR BREAKING CHANGES ℹ️
- table: Changed
table
elements' attributes' names introduced by theTablePropertiesEditing
plugin by prefixing them withtable
to be in line with other plugins' attributes naming. The affected attribute include:borderStyle
,borderColor
,borderWidth
,backgroundColor
,alignment
,width
,height
. See #9369. - table: Changed
tableCell
elements' attributes' names introduced by theTableCellPropertiesEditing
plugin by prefixing them withtableCell
to be in line with other plugins' attribute naming. The affected attributes include:backgroundColor
,padding
,width
,height
,borderStyle
,borderColor
,borderWidth
,verticalAlignment
,horizontalAlignment
. See #9369. - table: The
upcastBorderStyles()
helper parameters were modified (added themodelAttributes
param).
Features
- comments: Introduced the
AnnotationsUIs#refilterAnnotations()
method which runs annotation UI filtering callback against all annotations and moves them to proper annotation UIs (or removes them). - link: Added the possibility to open a link by Ctrl/Cmd+click or Alt+Enter. Closes #1381. (commit)
- track-changes: Introduced color boxes for color-related suggestions.
- utils: Introduced
env.isiOS
for detection of user agents running in iOS environments (see #7707). (commit)
Bug fixes
- core: Support language configuration passed in
defaultConfig
option through editor's constructor. Closes #8510. (commit) - engine: Merge intersecting ranges that are not adjacent to each other on ranges array. Closes #10628. (commit)
- find-and-replace: Replace functionality no longer replaces text when 'Replace with...' input is focused and user hits the Enter key but the search criteria changed. Closes #10712. (commit)
- find-and-replace: Fixed adjacent whole words being missed by find and replace. Closes #10719. (commit)
- image: Manual decorators on the linked inline images should be preserved while loading editor content. Closes #10828. (commit)
- image: The
<figure>
element should not get replicated while GHS is enabled. Closes #10279. (commit) - real-time-collaboration: The whole reconnection mechanism was improved. More reconnection scenarios are now handled without editor crashing or data loss. Note: these changes require Collaboration Server On-Premises in version higher than
4.2.0
. Otherwise, the fix will not be applied. - table: Disabled alignment button on main editor toolbar for tables in order to have a more unified behavior. Closes #9369. (commit)
- track-changes: Creating document color suggestions no longer causes the editor to crash.
- ui: Changed the look and position of the
BalloonToolbar
in Safari on iOS to avoid clash with native text selection handles. Closes #7707. (commit) - utils: Fixed
DomEmitterMixin
to correctly manage listeners for different options (useCapture
&usePassive
) set for the same DOM node. Closes #7830. (commit)
Other changes
- engine: Allowed unsafe view element attributes so they get rendered in the editing pipeline. Attribute names can be specified when creating elements using
DowncastWriter
(DowncastWriter#createAttributeElement()
,DowncastWriter#createContainerElement()
, etc.). (commit) - track-changes: Changed suggestion description for a highlighted text fragment.
- typing: Added support for the Shift+Delete keystroke on Windows to cut the selected content. Closes #9326. (commit)
- Updated translations. (commit)
Released packages
Check out the Versioning policy guide for more information.
Released packages (summary)
Minor releases (contain minor breaking changes):
- @ckeditor/ckeditor5-table: v31.0.0 => v31.1.0
Releases containing new features:
- @ckeditor/ckeditor5-link: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-mention: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-minimap: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-ui: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-utils: v31.0.0 => v31.1.0
Other releases:
- @ckeditor/ckeditor5-adapter-ckfinder: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-alignment: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-autoformat: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-autosave: v31.0.0 => v31.1.0
- @ckeditor/ckeditor5-basic-styles: v31.0.0 => v31.1.0
- [@ckeditor/...
v31.0.0
Release highlights
We are happy to announce the release of CKEditor 5 v31.0.0.
This release introduces the following new features:
- Introduce the
Command#affectsData
property to indicate whether a given command should stay enabled in editor modes with restricted write permissions. This solves the frequently reported problems of the availability of some editor features, such as export to PDF or Word, select all or find, in such editor modes as read-only, comments-only or restricted editing. - The mentions feature has gained the ability to customize the max number of items in the list after typing the trigger character.
- New collaboration features samples are available:
- For the React integration that will implement the context feature, as well as the watchdog.
- For comments outside the editor with offline comments.
- The comment and export to Word feature icons were improved.
- Three Enter clicks at the end of a code block are now necessary to escape it.
There were also a few bug fixes:
- The link, mention, inline image, and comment marker cannot be selected by mouse drag if the link is at the edge of a block.
- A table balloon is no longer rendered in the wrong place after unlinking text in table.
- A nested widget selection handle is no longer visible while the outer table cells are selected.
- The HTML embed UI does now correctly reflects the read-only state.
MAJOR BREAKING CHANGES ℹ️
- html-embed: The
InsertHtmlEmbedCommand
andUpdateHtmlEmbedCommand
have been replaced byHtmlEmbedCommand
which is now responsible for both tasks. The command can be executed viaeditor.execute( 'htmlEmbed' )
. See the API reference for more information.
Features
- core: Introduced the
Command#affectsData
flag to indicate whether a given command should stay enabled in editor modes with restricted write permissions (e.g. read-only mode). Closes #10670. (commit) - engine: The
DataController#get()
is now decorated and fires aget
event on the method call. See #10505. (commit) - mention: Added the configuration option for customizing the maximum number of items in the list after typing the trigger character. Closes #10479. (commit)
- real-time-collaboration: Introduced the
RealTimeCollaborationClient#serverHistory
property. See the API reference for more information.
Bug fixes
- comments: Features that do not change the content, should work properly in editor modes with restricted write permissions (e.g. read-only mode). See ckeditor/ckeditor5#10670.
- comments: The comment data was not updated on remote clients after the local client edited the comment.
- engine: DOM selection updates in
Renderer
when the selection is made using the mouse was blocked. Random glitching in Chrome when the user starts selection in a link (or a marker) at the beginning of the block was limited. Closes #10562. (commit) - engine: Makes order of markers in downcast data pipeline consistent. Thanks @bendemboski! Closes #10650. (commit)
- engine: Fixed a bug in the selection post-fixer (when the selection is stuck in a limit element that cannot contain text). Closes #10487. (commit)
- export-pdf: Features that do not change the content should work properly in editor modes with restricted write permissions (e.g. read-only mode). See ckeditor/ckeditor5#10670.
- find-and-replace: The
FindCommand
andFindNextCommand
commands should work properly in editor modes with restricted write permissions (e.g. read-only mode). Closes #10636. (commit) - find-and-replace: Do not replace find results removed by collaborators that landed in the
$graveyard
root. (commit) - html-embed: Embed buttons should reflect the read-only state of the editor and the HTML embed command. Closes #10182. (commit)
- html-support: Adds HTML support for all headings given in the configuration of the headings feature. Closes #10539. (commit)
- mention: Th mention panel will now hide when the editor becomes read-only. Closes #4645. (commit)
- restricted-editing: The feature should work properly in editor modes with restricted write permissions (e.g. read-only mode). Closes #10634. (commit)
- select-all: The
SelectAllCommand
command should work properly in editor modes with restricted write permissions (e.g. read-only mode). Closes #10635. (commit) - source-editing: Calling
editor.getData()
while in the source editing mode should return the data from the source editor passed through the model. Closes #10505. (commit) - source-editing: Improve source editing textarea field size and scrolling behaviour. Closes #10422. (commit)
- source-editing: Safari browser uses monospace font for text in source editing mode. Closes #10585. (commit)
- table: The
SelectColumnCommand
andSelectRowCommand
commands should work properly in editor modes with restricted write permissions (e.g. read-only mode). See #10635. (commit) - table: Color dropdown buttons in the table properties form should not be misaligned in Safari. Closes #10589. ([commit](82dbfba48493573ab32829b64a3...
v30.0.0
Release highlights
We are happy to announce the release of CKEditor 5 v30.0.0.
This release introduces the following new features:
- Allow reverting text transformations by pressing Backspace.
- Cut down the search time in the Find & replace feature.
There were also a few bug fixes:
- Fixed invalid cell property after pasting a table to the editor from Word.
- The table toolbar now respects the
viewportTopOffset
configuration. - Automatic text transformation: the dates get no longer turn into fractions.
- The toolbar no longer loses focus after escaping from the find and replace dropdown.
MAJOR BREAKING CHANGES ℹ️
- The
config.toolbar.viewportTopOffset
property was moved toconfig.ui.viewportOffset
and it now accepts an object.
MINOR BREAKING CHANGES ℹ️
- engine: The
Matcher
class is more strict in handlingElement
s provided to thematch()
andmatchAll()
methods. It will not accept otherNode
s now. - html-support: The public helper function
html-support/converters~disallowedAttributesConverter
has been removed due to a change in the approach to filtering disallowed elements and attributes. - widget: The
centeredBalloonPositionForLongWidgets()
helper was removed from widget utils. UseBalloonPanelView.defaultPositions.viewportStickyNorth
instead. See #9892. - widget:
toWidgetEditable()
will now set highlight handling for the editable element. If you used this method in conversion in your custom plugin it may affect your element styling when there is a marker on that element (e.g. a comment or a suggestion).
Features
- autoformat: Allowed reverting the automatic Markdown-like formatting by pressing Backspace. See #10413. (commit)
- html-support: Added the General HTML Support integration for the image feature. Closes #9916. (commit)
- image: Allowed using backspace to undo automatic the image insertion transformations. Closes #10413. (commit)
- ui: Introduced a new position type (
viewportStickyNorth
) inBalloonPanelView.defaultPositions
. See #9892. (commit) - Introduced the
editor.ui.viewportOffset
property, which allows modifying the viewport's offset in runtime. This value is used by the editor e.g. to position its sticky toolbar and contextual balloons. Additionally, theconfig.toolbar.viewportTopOffset
property was moved toconfig.ui.viewportOffset
and it now accepts an object. Closes #9672. (commit)
Bug fixes
- engine: Added system colors names from the CSS Color Module Level 3 so that pasting tables from MS Word works correctly. Closes #10383. (commit)
- engine: Fixed the
Matcher
class handling global flag in theRegExp
s patterns. Closes #10282. (commit) - find-and-replace: The toolbar should not lose focus after escaping from the find and replace dropdown. Closes #10420. (commit)
- find-and-replace: Improved the performance of the find feature by reducing the number of
model.change()
calls. Closes #10302. (commit) - image: Attributes from a marker conversion descriptor will now be correctly added on view elements during marker downcast. Closes #10425. (commit)
- revision-history: Fixed widget highlight in the revision comparison in some cases with nested edits added by different users.
- table: Made reordering table rows and columns possible without breaking the view in tables with heading rows or heading columns. Closes #10463. (commit)
- table: Cancelling the table cell properties UI no longer results with a warning in the console. Closes #6266. (commit)
- table: Fixed handling of a non-collapsed selection inside a table cell. Closes #10391. (commit)
- track-changes: Fixed crash happening in some scenarios in track changes mode after an image element split a non-paragraph element.
- track-changes: Fixed missing data-suggestion attributes on table cells and image captions.
- typing: Restricted mathematical text transformation, so that it requires no alphanumeric character before and after the fraction. Closes #9170. (commit)
- ui: The editor no longer crashes when a button has
withKeystroke
set totrue
but nokeystroke
property is provided. Closes #9412. (commit) - widget: Fixed arrow keys navigation when there is an inline widget at the edge of a table cell. Closes #9380. (commit)
Other changes
- engine: The
MarkerCollection#has()
method now also accepts an instance of a marker. Closes #9985. (commit) - image: Upcast images with or without the empty
src
attribute. Closes #9238. (commit) - image: Prevent leaving an unconsumed
figure
element after conversion. (commit) - link: Upcast linked images with or without the empty
src
attribute. See #9238. (commit) - media: The
figure
ele...
v29.2.0
Release highlights
We are happy to announce the release of CKEditor 5 v29.2.0.
This release introduces several new features:
- Redesigned the find and replace panel and introduced a few improvements to the feature itself.
- Added the possibility to create a localized editor when using DLL builds.
- Improved the performance when pasting large images.
There were also a few bug fixes:
- Switching to source editing no longer scrolls to the end of the content.
- The highlight feature can now be used while typing.
- Pasted HTML comments are no longer filtered out.
MINOR BREAKING CHANGES ℹ️
- find-and-replace: The layout, styling, and view structure of the find and replace form have changed radically, which may affect integrations that either customized or extended this form (see #10229).
- revision-history: The revision data now includes a new property:
authorsIds
. This property needs to be handled (saved and loaded) similarly to other revision properties. For revisions that are already saved in your database, set this value to an array with one string, equal to thecreatorId
value (e.g.["user1"]
). Check the updated revision history integration guide to see an example. - revision-history: The documentation for revision history adapter has been updated. Please check the
RevisionHistoryAdapter#addRevision()
andupdateRevision()
documentation to make sure that you correctly handle all the data passed to those methods.
Features
- core: Added the "cog" icon to the core icon set (see #10229). (commit)
- find-and-replace: Made it possible to cycle find results by using Enter and Shift+Enter keystrokes. Closes #10012. (commit)
- html-support: Added general HTML support integration for the media embed feature. Closes #9918. (commit)
- mention: Keyboard shortcuts to accept mentions can be customized using the
config.mention.commitKeys
configuration option. Closes #4665. (commit)
Bug fixes
- comments:
Comment#setAttribute()
andComment#removeAttribute()
will now correctly set the attribute value and fire the adapter call also for comments created by other users. - find-and-replace: Changing the search text should reset the results. Closes #10304. (commit)
- find-and-replace: Toggling search options should reset the results. Closes #10021. (commit)
- find-and-replace: The find and replace form should be responsive. Closes #10019. (commit)
- find-and-replace: Allows search term to contain a trailing/leading space when searching "whole words only". Closes #10131. (commit)
- html-support: Filters out all pasted HTML comments. Closes #10213. (commit)
- html-support: Extended the schema definition for
$root
to allow storing a comment's content as the$root
attribute. Closes #10274. (commit) - revision-history: Enabled multiple authors in one revision. Introduced the
authorsIds
property in the revision data. - revision-history: Visual improvements on how nested changes are displayed.
- source-editing: The selection is now set at the beginning of the source editing view. Closes #10180. (commit)
- source-editing: The source editing feature will send a warning to the console when the restricted editing feature is loaded. Closes #10228. (commit)
- theme-lark: The label of the labeled field should stay on the top when the field is disabled and not empty to not cover the field's text (see #10229). (commit)
Other changes
- ckeditor5: The
ckeditor5
package offers translation files for several core CKEditor 5 packages:utils
,core
,engine
,ui
,clipboard
,enter
,paragraph
,select-all
,typing
,undo
,upload
, andwidget
, used in the DLL builds. (commit) - clipboard: The
DataTransfer.files
property is not evaluated more than once. Closes #10287. (commit) - comments: Raised comments character limit to 65000.
- core: Merged a duplicated translation context from
ckeditor5-ui
andckeditor5-find-and-replace
packages. Closes #10400. (commit) - find-and-replace: Moved the search result translation context to ckeditor5-core. Closes #10400. (commit)
- find-and-replace: Visually revamped the find and replace form. Closes #10229. (commit)
- find-and-replace: Increased the contrast between selected and unselected find and replace results. Closes #10242. (commit)
- highlight: Toggling highlight does not remove it when the caret is at the end of the highli...
v29.1.0
Release highlights
We are happy to announce the release of CKEditor 5 v29.1.0.
This release introduces several new features:
- The Content minimap feature, which aids document navigation. Read more about minimap.
- Support for HTML comments.
- Integration with the
Autosave
plugin in Revision history. - Possibility to enforce tables to contain a header row by default.
- Several improvements in the Find and replace feature.
There were also a few bug fixes:
- The code block added with autoformatting will now remember the language of the previously inserted block.
- Problems with pasting lists from Word have been eliminated (#9055, #9954).
MINOR BREAKING CHANGES ℹ️
- html-embed: The preview content will not be centered anymore.
- image: Several conversion helpers have been renamed and removed from the public API:
viewFigureToModel() -> upcastImageFigure()
,srcsetAttributeConverter() -> downcastSrcsetAttribute()
,modelToViewAttributeConverter() -> downcastImageAttribute()
.
- revision-history:
RevisionTracker#saveRevision()
was renamed toRevisionTracker#updateRevision()
. This is to better reflect what the method actually does. Since revision locking was introduced,saveRevision( { name: ... } )
calls should be replaced withupdateRevision( { name: ..., isLocked: true } )
calls. - revision-history: The
Revision#name
property is now read-only. You need to useRevision#setName()
instead.
Features
- autosave: Introduced the
Autosave#save()
function. Closes #10215. (commit) - engine: Introduced the new (
skipComments
) option inDomConverter#domToView()
(false
by default) to make it possible to decide whether HTML comments should be removed from the data. (commit) - html-support: Introduced the HTML comment plugin. Closes #8822. (commit)
- html-support: Added support for elements that can act both as a paragraph and a sectioning element depending on the content context. Closes #10085. (commit)
- html-support: Added General HTML Support integration for Table feature. Closes #9914. (commit)
- image: Implemented the
<picture>
element support in the image feature. Closes #9833. (commit) - minimap: Basic implementation of the content minimap feature. Closes #10079. (commit)
- revision-history: Introduced the possibility to update a revision after it was created. Provided a way to integrate revision history with the
Autosave
plugin. See the revision history guide. - revision-history: Introduced the
Revision#setName()
function.Revision#name
is now read-only. - revision-history: Introduced several properties:
Revision#isLocked
,Revision#lock()
andRevisionTracker#isLocked
. - table: Introduced an editor configuration option allowing to set default headings for newly created tables. Closes #10039. (commit)
- track-changes: Enabled Export to Word in track changes mode.
Bug fixes
- autoformat: Autoformat will apply the previous language choice for the code block feature. Closes #10005. (commit)
- autosave: Autosave callback should not be called while the editor is initialized. Closes #10214. (commit)
- build-decoupled-document: The editing area in the sample should have a solid white background. Closes #10095. (commit)
- collaboration-core: User initials for user names longer than two words now will be composed of the first letters of the first and last word of the name. This is better for names with a middle name or with a last name having a prefix.
- engine: White spaces around inline object elements such as
<img>
or<button>
should not be lost in data. Closes #10147. (commit) - engine: Matcher should not match style and class attributes with the object
attributes
pattern. Closes #9813. (commit) - find-and-replace: Find and replace feature now works correctly with a multi-root editor. Closes #10146. (commit)
- link: Link decorators should use classes and styles properties instead of directly matching style and class HTML attributes. Closes #9813. (commit)
- paste-from-office: Fixed a crash when pasting lists from Word to the editor. Closes #9055, #9954. (commit)
- revision-history: The
Autosave
plugin now will be filtered byRevisionHistory
plugin, so it will not be included in the revision history view editor instance as this caused errors. - revision-history: Tables will be now correctly handled after a change in a table was undone.
- table: Fixed model mappings in a table cell if a paragraph is bound to its parent. (commit)
- table: Fixed editor freezing when providing invalid
colspan
orrowspan
attribute values. Closes #10042. (commit) - track-changes: The
Autosave
plugin will no longer caus...