All changes in the package are documented in the main repository. See: https://github.com/ckeditor/ckeditor5/blob/master/CHANGELOG.md.
Changes for the past releases are available below.
Internal changes only (updated dependencies, documentation, etc.).
@ckeditor/ckeditor5-alignment (see ckeditor/ckeditor5-table#227). (ada4a79)Plugin#isEnabled, Plugin#forceDisabled() and Plugin#clearForceDisabled(). (7449450)editor.execute() method. Part of ckeditor/ckeditor5#1304. (c1babca)conifg.language. See ckeditor/ckeditor5#1151. (22079dd)secureSourceElement() utility that prevents from initialising more than one editor on the same DOM element. See ckeditor/ckeditor5#746. (6a59058)Internal changes only (updated dependencies, documentation, etc.).
ckeditorInstance property. Closes ckeditor/ckeditor5#1838. (fa94600)Implemented the EditorUI#setEditableElement() method.
Deprecated the EditorUI#_editableElements property.
MultiCommand which acts as a composite command – it can group multiple commands under the hood. (ebcbd01)editor-wrong-element error thrown when the editor is created over a wrong element. Closes ckeditor/ckeditor5#1591. (9945fc6)editor#pluginsReady event. Closes ckeditor/ckeditor5#1477. (6d63538)Editor#getData() method now accepts options.trim parameter. By default it will now return an empty string when the editor is empty (instead of returning '<p> </p>' as before). (4f8abd1)editor.plugins.get() if the plugin is not loaded. Closes #148. (a56b47a)8.0.0 and npm to 5.7.1. See: ckeditor/ckeditor5#1507. (612ea3c)Editor#getData() method now returns an empty string by default when editor content is empty (instead of returning '<p> </p>' as before).editor#pluginsReady event was removed. Use plugin afterInit() method instead.EditorWithUI#element property. The EditorUI#element property should be used instead.EditorWithUI#uiReady event. The EditorUI#ready event should be used instead.view parameter in EditorUI constructor. Only subclasses should use it without passing it further to EditorUI.EditorUI#view property. The view property from subclasses (like ClassicEditorUI#view) should be used directly instead.editor.plugins.get() will now throw an error if the plugin is not loaded. Use editor.plugins.has() to check if plugin is available.Editor#state property. Closes #124. (ec89d8d)CKEDITOR_VERSION global constant in the Editor class (see ckeditor/ckeditor5#1005). (a1a9144)#element property to the EditorWithUI interface. The #element property from the ElementApi interface has been renamed to #sourceElement. Most editors implement both interfaces, which ultimately means that the old editor.element property is now called editor.sourceElement and there's a new editor.element property with a new meaning. Closes #64. (eb43b63)EditorUI#update event. Closes #130. (734166a)ClassicTestEditor should not render its UI in the constructor(). Closes #137. (46fdc36)Editor.build into Editor.builtinPlugins and Editor.defaultConfig. Closes #140. (c13ec79)Editor.build was split to Editor.builtinPlugins and Editor.defaultConfig.editor.element property was renamed to editor.sourceElement.editor.updateElement() method was renamed to editor.updateSourceElement().EditorUI is now a class (no longer an interface).Internal changes only (updated dependencies, documentation, etc.).
EditingController, DataController and EditingKeystrokeHandler from StandardEditor to the Editor class. Closes #110. (5a2031e)StandardEditor class in favor of DataInterface and ElementInterface mixins. Added EditorWithUI interface. Closes #115. Closes #113. Closes https://github.com/ckeditor/ckeditor5/issues/303. (fe81992)Command should listen to model.Document#event:change. (912570d)config.lang to config.language to align to the naming convention. (8720973)loadDataFromElement() method from ElementApiMixin. Closes #120. (4976e10)StandardEditor class was removed. Use Editor class with DataInterface and ElementInterface mixins.StandardEditor should automatically update the contents of its source textarea upon submission of the form. Closes https://github.com/ckeditor/ckeditor5/issues/544. (ce46fde)EditingKeystrokeHandler should prevent default action only for commands. Closes #90. (82ff39a)ToggleAttributeCommand should listen to reliable events in order to determine its state. Closes #50. (6816505)EditingKeystrokeHandler should support priorities and proper cancelling. Closes #101. (c74b9a3)Editor#destroy() will destroy all loaded plugins. Closes #86. (77e5217)Added default implementation for Plugin#destroy(). Introduced PluginCollection#destroy() method which calls Plugin#destroy() for every loaded plugin.
PluginCollection will warn if the user wants to load two or more plugins with the same name. Closes #85. (e00a282)Editor#isReadOnly property which disables all commands and prevents from modifying the document. Closes #96. Closes https://github.com/ckeditor/ckeditor5/issues/492. (1ca5608)EditingController#isReadOnly to the editor. Closes #98. (ec02906)PluginInterface. A plugin doesn't need to inherit directly from the Plugin class, as long as it implements some minimal interface. See #78. (f476f34)ToggleAttributeCommand class as well as other helpers from the core/command namespace. Closes #14. (7c68581)The command API has been redesigned. The Command methods are now public and consistent. Commands can be used in a standalone mode (without the editor). The CommandCollection was introduced and replaced the Map of commands used in editor.commands. Closes #88. (b76983b)
Besides changes mentioned in this point and in the "Breaking changes" section, other minor changes were done:
Editor#execute() now accepts multiple command arguments.Command#value property was standardized.ToggleAttributeCommand was moved to the ckeditor5-basic-styles package as AttributeCommand and the other command helpers to ckeditor5-engine as Schema methods.Command's protected _doExecute() and _checkEnabled() methods have been replaced by public execute() and refresh() methods.Command's refreshState event was removed and one should use change:isEnabled in order to control and override its state.core/command/command module has been moved to the root directory (so the Command class is core/command~Command now).Command#refresh() method is now automatically called on editor.document#changesDone.editor.commands map was replaced by a CommandCollection instance so editor.commands.set() calls need to be replaced with editor.commands.add().config.removePlugins for real (we said that we did this in the previous release, but we didn't). Closes #49. (5834fed)config.removePlugins option. Closes #49. (dfee52e)