It is about time that we turn on CI for CKEditor 5 packages. The project is already in a stage when the number of tests makes it really time-consuming to validate the changes which we make and, at the same time, many parts of the code base are now in the maintenance mode rather than a rapid development, so we need more stability.
However, in order to introduce CI, first we will need to switch from our current test runner – Bender.js – to a more standard setup (namely – Karma + Webpack).
Then, we will be able to finally introduce CI for CKEditor 5 packages. We are also thinking about configuring CodeClimate but there is a problem that it requires a configuration file to be added to every repository and we would like to avoid that for the sake of maintainability. We will see how it goes.
We continue work on the image feature. In the previous iteration we were able to implement fake selection support and design a basic widget API. Right now we are continuing the work on the image feature itself. In this iteration we should be able to finish the basic image support and start working on captioning or alignment.
You can read more about the image feature scope in Planning: Iteration 4.
The basic support for pasting and necessary primitives landed in the previous iteration. In the current iteration we will work on stability of content filtering and support for custom copy.
The tricky requirements that we have set for it initially and our lack of experience in this matter (because, let us be honest – not every day you design a UI framework and library from scratch) resulted in some incorrect decisions made in the initial stage of this project. We have been consistently fixing them with time, but the bigger and harder to change things remained. It is now tim to clean up the rest of them. With time we gained a lot of experience in this topic and we finally have enough real use cases in our hands to attempt this challenge.
BTW, this is the moment when you thank yourself for setting the 100% code coverage goal :).
The refactoring had begun before this iteration started so the first phase of it is actually already finished. We will now work on follow-ups.