fixed an issue where the editor selection could end up inside a short ended element (eg br).
fixed the table selection not functioning correctly in Microsoft Edge 44 or higher.
fixed the visualchars plugin converting HTML-like text to DOM elements in certain cases.
fixed image browse button sometimes displaying the browse window twice on mobile.
fixed an issue where Home/End keys wouldn't move the caret correctly before or after contenteditable=false inline elements.
added a visualchars_default_state setting to the Visualchars Plugin. Patch contributed by mat3e.
fixed a bug with pressing the space key on IE 11 would result in nbsp characters being inserted between words at the end of a block.
A little over two years ago, I left Google. In my farewell blog post, I noted:
In a normal text editor, when you use the up or down arrow keys to navigate between lines, the editor generally does its best to preserve the x-coordinate of the cursor as the y-coordinate changes. For example, consider navigating the cursor downwards through following chunk of text starting from the middle of the word "little:"
The previous section explained the basics required to emulate native cursor movement in a web application. This section discusses a number of additional product requirements imposed by Google Tasks that made the problem even more difficult.
Implementing the caret-positioning logic was fairly complicated: there were many edge cases it had to tolerate and a lot of browser-specific code under the hood. Once you finally solved an edge case on one of the browsers, you were more than happy to write a test for it because you would want to be alerted to any sort of regression.
Although I am extremely excited about the community's recent progress in providing (and documenting!) better tools for building web applications, I think that it is important to remember that using the latest and greatest tools is not sufficient to guarantee the best product.