A file can now be refused before it is read
config.maxUploadFileSize (bytes; 0, the default, means no limit) refuses an oversized file on every route into the document — the image dialog, the document dialog, paste and drag-and-drop — before the editor reads it.
This matters most when no upload handler is configured, which is the case that used to fail quietly. Without a handler the editor embeds the file in the document as a base64 data:URL, so a 3 MB photo becomes roughly 4 MB of text in the saved HTML and the database write fails with an error that names the column, not the cause. A failed upload does the same thing: if your handler reports an error, the image is still embedded rather than dropped. Setting the limit to whatever your endpoint enforces stops both.
The message is text_uploadtoobig ({0} the file size, {1} the limit), and the uploadtoobig customdialog hook replaces the alert with your own dialog.
Table Properties: Border collapse
Tables can now choose Collapse or Separate explicitly. Choosing Collapse clears the cell spacing; choosing Separate uses it. Leaving it unset keeps the previous behaviour, where a cell spacing implied separate borders, so existing documents are unchanged.
Upload messages a reader can act on
Two messages were written for whoever wrote the code. “Uploading feature not available. miss file_upload_handler.” is now “This file cannot be attached, because file uploads are not set up on this site.” and a failed upload reads “The file could not be uploaded.” with the error code in brackets rather than after a comma. Both go through the language files (text_uploadnothandler, text_uploadfailed), so they can be translated; the English text is the fallback when a language file lacks the key.