Fonto 7.5.0 (December 20, 2018)

New functionality

  1. The spell-checker-configuration now supports an optional ietfLanguageCodeByInternalLanguageCode mapping, which can be used to map values for the language attribute to dictionaries supported by the spell checker.

  2. For very large DITA maps, the new map-manager-automatically-load-topicrefs configuration value can be set to false to disable automatic loading of documents referenced by the root map. Fonto will now display placeholders in the content and structure views for any documents referenced in the DocumentsHierarchy that are not loaded. Clicking these placeholders will load the document. Additionally, applications can implement custom logic to automatically load a subset of documents using the new load-document-for-hierarchy-node operation.

  3. Placeholders in the content and structure view for documents that are unloaded or currently loading now display the result of the configured titleQuery for the source element, if available. This can be used, for example, in DITA maps to display a topicref's navtitle while the document has not yet been loaded.

  4. We have fixed a lot of bugs and other quirks in the way Fonto handles content (including tables, lists and inline formatting) pasted from other applications, especially Microsoft Word and Excel. Additionally, copying content from Fonto into these, as well as many other applications should now much better preserve any structures and formatting.

  5. Comments (made using the fontoxml-annotations add-on) can now be copied and pasted. To avoid confusion, copied comments will automatically be marked as copies. Any replies will be copied along with the original comment. Additionally, comments can now be removed using backspace.

  6. It is no longer necessary to indent or outdent list items one by one. Simply select a number of items and use the indent-list-item or outdent-list-item operations to indent or outdent all of them simultaneously.

  7. Fonto Editor now allows placing the cursor in read-only documents. This creates consistency with elements configured as read-only, as well as making it easier to select content from such documents using the keyboard (e.g., for copying it to another editable document).

  8. Removing a long-standing limitation, Fonto Editor now supports custom mutations that affect multiple documents. It is no longer required to target a specific document using either the selection or contextNodeId. Looking up, mutating and validating nodes from any loaded document will now just work. Additionally, undo and redo now work across documents, so actions can be undone no matter which document the cursor is in.

  9. The map mutation operations provided by the fontoxml-dita add-on no longer clear the undo stack and can now be undone by pressing undo from any loaded document.

  10. A failed document save (with an error that is considered permanent, such as a 404 status) no longer makes the editor go to the error route. Instead, the document will now become read-only and offer the option to reload the document. Similarly, we have improved the error handling and user experience for document state and lock requests and removed a few inconsistencies in the way this state was presented.

  11. It is now possible to prevent registration of the default operations for the experimental drag and drop support introduced in release 7.4, by setting the configuration values enable-experiment/default-generic-drag-and-drop-operation and/or enable-experiment/default-dita-drag-and-drop-operation to false.

  12. Fonto Content Quality has been updated to version 1.4.0. Please refer to the release notes for details.

  13. Fonto Document History has been updated to version 3.0.0-beta3. Please refer to the release notes for details.

Resolved issues

  1. Errors thrown while rendering a document's content are now handled properly and result in an error placeholder being shown instead of leaving the displayed document in an inconsistent state.

  2. Any error thrown by a Notifier callback is now considered fatal. Such errors will prevent other callbacks from running, which generally leads to an inconsistent application state. If an error is thrown, the application will now redirect to the error route.

  3. Custom namespace prefixes returned by the MathType editor (mathml-edit) are now preserved correctly when the MathML is inserted into the document. Please refer to the documentation for the fontoxml-mathml add-on for details.

  4. An unfortunate typo caused simple types for elements to not be validated. This has been fixed.

  5. Several transforms such as setContextNodeIdToSelectionAncestor now set the contextNodeId step data property to null if no matching node was found. Previously, the old value would be used, which could result in unexpected behavior.

  6. We fixed an issue where retrying to load a document would not reload the document from the CMS if certain errors occurred during load.

  7. We fixed an issue where the reload button was not shown for load errors for applications that do not use any loading strategy (i.e., not fontoxml-dita DITA map support, nor fontoxml-single-document-hierarchy, nor a custom implementation).

  8. The DITA map implementation no longer issues multiple loads for the same document if it is referred to from different maps using permanent reference IDs.

  9. Keybindings using the dash "-" character now work as expected with both the normal dash key as well as the numpad minus key.

  10. We resolved a number of issues where a table was rendered incorrectly after some operations, including removing certain columns or merging all cells across two columns.

  11. The undo stack no longer groups multiple text changes if the cursor was moved in-between. This prevents undoing too much by accident.

  12. Selecting an item from a SingleSelect using the enter key no longer accidentally triggers onKeyDown listeners in parent components, such as a Modal. This prevents a Modal from being submitted when selecting an item in a SingleSelect using the enter key.

  13. SingleSelect inside a FormRow whose labelPosition is set to "before" now correctly fits within the available space and truncates long item labels as necessary.

  14. VirtualGrid now correctly takes the configured padding and width of the scrollbar into account when determining the number of items per row. This prevents a row with a single item in it, followed by a row with multiple items in it.

  15. The padding in FDS' Grid(and therefore in Fonto's SymbolsGrid) is now correctly applied to all sides of the Grid.

  16. Buttons have been made more consistent in their use of padding and background- and text-color. The Button example on the FDS Playground now shows a complete overview of all different Button states, types and context combinations that are supported.

  17. The find and replace drop no longer resizes when the results counter changes.

  18. We fixed a bug where the arrow of the Popover component would sometimes be positioned outside of the popover.

  19. Omitting the referrerDocumentId property for createNewDocumentFromRemoteTemplate now works as expected and results in no referrer being sent to the CMS.

  20. Operations with alternatives now use the active state of the first operation if all operations in the alternatives array are disabled.

  21. Fixed a possible crash in various operations if a structure within a given stencil was configured as invalid. These operations are now correctly disabled in this case.

  22. Resolved an issue where the horizontal-insert operation would take a long time or run out of memory when used on nodes with a very large number of children.

  23. Table header cells erroneously had their font-weight set to bold (browser default), ignoring the CVK configuration. If you want to have bold text in table header cells, you'll now need to configure this explicitly.

  24. The selection in the XML source view now scrolls into view as expected when the sidebar tab is opened, and updates correctly when the window is resized.

  25. An issue has been resolved where a Notifier callback could still be called once after it was removed, if the removal happened synchronously in another callback on the same Notifier.

  26. Document-zoom no longer breaks use-embedded-mode (when using the zoom-content-to-* operations). The documentation for the embedded mode feature has been updated and clarified to reflect the limitations of these operations in this mode.

  27. useEmbeddedMode can now be set to either true (boolean) or "true" (string) when specified in the scope query parameters. When setting use-embedded-mode as a configuration variable, it still has to be set to true (the boolean, not the string).

  28. Embedded mode no longer shows an unwanted horizontal scrollbar when using an object template with a block outside after widget (such as an element menu button) for the root element of a document in the content view.

  29. We made sure the overflow slider isn't too short in Firefox for the sidebar tab buttons under certain conditions.

  30. The context menu no longer refreshes the state of the operations displayed multiple times when it is opened or closed, which should make it a little more responsive.

  31. It is no longer possible to edit documents while the context menu is open. This prevents the unfortunate situation of being able to remove the part of the document for which the context menu was opened, while it is open. Previously, removing content and then pressing a menu item concerning the removed content could result in the error modal being shown.

  32. We resolved an issue where the spell checker add-on would re-check content for any attribute change.

  33. We resolved an issue where the spell checker would sometimes be unable to apply a suggestion or could even apply it in the wrong position.

  34. The spell checker no longer requests the same suggestions for the same correction twice in rapid succession.

  35. We resolved a few cases where clicking in the content view would not correctly set focus to the sheet frame or place the selection in the editor. This could in some cases prevent selection highlights from being displayed for objects and placeholders.

  36. We resolved an issue where loading a new document could cause a React warning to appear in the browser's developer console.

  37. We resolved an issue where document history did not correctly scroll certain changes into view when clicking the corresponding card.

  38. The document history PartialChangeDiffConfiguration now correctly supports setting the idAttributeNamespaceURI property to null.

  39. The fontoxml-annotations add-on now tries to gracefully handle situations where the fontoxml-author processing instructions have been removed from the document (e.g., by an external process). Such comments will be displayed as authored by "anonymous", and may now be deleted without errors.

  40. We resolved an issue where text in createRelatedNodesWidget or createRelatedNodesQueryWidget was not editable in Safari.

  41. In Safari, when hovering over a (DITA related-link's) link, sometimes a text insertion cursor was shown even though the text is not editable. This has been resolved.

  42. The convert-range-to-plain-text could result in an "operation failed" error being shown in some cases. This has been resolved.

  43. Ctrl+A is now handled by Fonto, which should ensure it now consistently selects the entire contents of the sheet frame containing the cursor.

  44. We resolved an issue where Find & Replace results were not updated when a new document was loaded.

  45. The Find and Replace tooltips now display the correct keyboard shortcuts on all platforms.

  46. We resolved an issue where errors triggered by loading a document sometimes caused a different error to be reported in the UI.

  47. We resolved a rare issue where, after some updates, the cursor could not be placed in certain positions.

  48. We resolved an issue where the set-attributes operation could cause an error when invoked on an element that is ignored for schema validation due to an xs:any with processContents="skip".

  49. We have added previously missing documentation for blueprintRangeQuery, which offers helper functions for retrieving nodes from blueprints using ranges.

  50. The FontAwesome icon set has been upgraded to version 4.7.0. Although our documentation already referred to this version, it turned out previous releases were actually using version 4.5.0.

Other improvements

  1. We worked hard to optimize performance in many areas, including (but not limited to) handling large documents, large numbers of documents, selections containing a large number of elements or editors configured for a large number of different elements.

  2. React and React DOM have been upgraded from version 16.0.0 to 16.6.3, allowing use of newly introduced API's. Please refer to the release notes for this release for details. Take special notice of deprecated API's in this release, in particular the component lifecycle methods. These API's will remain working and will not throw warnings since we are not using React's strict mode. However we do encourage to use the recommended React API's in future code and upgrade existing legacy code.

  3. Operations invoked from the content view (through widgets or a configured clickOperation) are now passed the hierarchyNodeId of the corresponding view, which helps to focus the correct instance in cases where the targeted node appears multiple times.

  4. Popovers that are opened from anchors inside the content view are now automatically closed when the anchor is deleted.

  5. The fontoxml-single-document-hierarchy add-on now prevents starting the editor if the required hierarchy-node-query configuration value is not set.

  6. configureAsInvalid now displays warnings in the browser console if the selector depends on information outside the set supported by this feature (which consists of the attributes, siblings and children of all ancestors of the context node).

  7. The replace-node operation now supports replacing a node with a single text node, by passing a string as the replacementNodeStructure.

  8. Heading and headings inside a ModalHeader (using the title prop) now correctly overflow across multiple lines.

  9. MenuItems now have a specific style for when they are both disabled and selected. Also, when hovering over a selected menu item, a different (lighter) hover style is used to give feedback when toggling a menu item while hovering over it.

  10. The structure view will now scroll horizontally for very deep hierarchies, to ensure even the deepest levels get enough space to display their titles.

  11. The loading spinners displayed in the structure view are now consistent with the spinners used in other parts of the UI.

  12. Operations with the label set to the empty string no longer cause UI components to display the operation name instead.

  13. Performance of validating and rendering large CALS tables has been improved. Custom table definitions can now provide an optional environmentQuery in which global information can be determined to speed up per-cell queries.

  14. Refreshing the browser on the error route now redirects to the editor and reloads the document.

  15. We are continuing work towards supporting the XQuery and XQuery Update Facility standards. These features are still in preview state, and may change in future releases.

  16. The Development server can now serve XML documents saved in a number of encodings that were not previously supported, including UTF-16-le and UTF-8 (with or without byte order mark).

  17. Along with several performance and stability improvements, FDT can now be used to install nightly pre-releases of Fonto by using the new --version option. Install the latest version by running npm install -g @fontoxml/fontoxml-development-tools.

  18. FDT no longer requires a catalog.xml file when compiling a schema.