Fonto 7.10.0 (March 26, 2020)

For the upgrade instructions, head over to Upgrade from 7.9 to 7.10.

New Functionality

  1. This release brings some significant changes to the way whitespace is handled in Fonto, in order to improve interoperability with other XML processing tools including publication pipelines. In short, Fonto will no longer insert whitespace unless it is significant, and will expect the CMS to only include significant whitespace in documents.

    Important: to avoid damaging content by losing significant whitespace that is not marked as such in the schema, please check your schema and / or configuration!
    Please refer to the upgrade instructions and our new guide on Whitespace Handling for more details.

  2. Find & Replace has been improved again. In addition to fixing bugs and improving performance, we included Scoped search, which allows the user to scope both search and replace within selected topics. Please refer to fontoxml-find-and-replace for details. Find (but not Replace) is now also available in Fonto Review. In the editor, it is now possible to perform replacements without searching. And last but not least, the Replace All functionality is now compatible with just-in-time loading.
  3. The new quick navigation functionality can be used by pressing ctrl+g (cmd+g on Mac) or by clicking the new button in the Outline sidebar. It gives you an easy and quick way to navigate through outline items. Typing a few letters of your outline item in the order they appear in its title is enough to find what you are looking for.
  4. We've added support for lazy loading character sets in the fontoxml-special-characters add-on. To take advantage of this for faster editor load times, please refer to the upgrade instructions for details.
  5. Fonto now supports validating namespace restrictions on xs:any content models. You'll need to recompile your schemas to make sure this information is included when you update to 7.10.
  6. The Outline sidebar now displays indications when documents can not be saved.
  7. It's now possible to set the selection from XQuery Update Facility scripts, both in the execute-update-script operation and in Mutation hooks, by adding special selection processing instructions.
  8. The new allowAutocapitalization CVK option can be used to turn off automatic capitalization in certain elements, such as code blocks.
  9. The new outputClassQuery CVK option can be used to set the cv-output-class attribute to the result of an XPath query.
  10. We've moved the API for configuring the structure view from the fontoxml-structure-view add-on to the main platform API. The updated Find & Replace sidebar already uses this configuration to group results by document, and we may make further use of this in future releases. Please update your configuration to use the new import paths, or consider adding structure view configuration to your application if you have not already done so.
  11. In this 7.10 release we’ve updated React from version 16.8.3 to 16.12.0. From React version 16.9 onwards, React introduces warnings during development when you use deprecated lifecycle methods. We’ve rewritten class components in the SDK that use any of those methods to function components that use React hooks, and we encourage you to do the same in order to simplify code and prepare for future React versions. To help, Fonto now includes hooks to access common functionality: useoperation @ fontoxml-fx/src/useoperation.jsusemanagerstate @ fontoxml-fx/src/usemanagerstate.jsuseRemoteDocumentState and useXPath.
  12. The Fonto Development Tools now offer commands to list available versions for Fonto's products, e.g. fdt editor versions.
  13. Together with this release, we are also releasing new versions of our other products. Please refer to the corresponding release notes for more details:

Resolved issues

  1. We fixed various issues related to Find & Replace, improving performance, stability and usability.
  2. Resolved an issue where errors in UI components could in some cases leave users with a blank screen.
  3. Resolved an issue where tab, carriage return and line feed characters were not preserved in attribute values.
  4. Resolved an issue in the schema compiler where fixed attributes were not considered to have a default value.
  5. Resolved an issue where anyAttribute namespace restrictions were not applied correctly for restrictions involving the null namespace.
  6. Fixed an error that could occur when spamming the reload-document operation.
  7. Fixed an error that could occur in the contextual-row-delete operation in some cases.
  8. Fixed an error that could occur when undoing inserting and then deleting a table.
  9. Fixed an error that could be logged in the browser console in some cases when selecting an entire table.
  10. Resolved an issue that prevented rename node XQUF expressions from working as intended.
  11. Resolved an issue in DITA applications where dragging and dropping topicrefs next to topicgroup or topichead elements in the structure view would not work in some cases.
  12. Resolved a few issues that could cause content to appear at an unexpected position when typing with a placeholder or inline element selected in Chrome.
  13. Resolved an issue where mutation hooks with a valueQuery that returned one or more nodes could sometimes cause a stack overflow error.
  14. Fixed an issue where reducers would not update correctly when used in (title) queries that also have a dependency on the parent of the source node of a hierarchy node.
  15. Fixed an issue where reducers would not update correctly when reloading documents.
  16. Fixed an issue where reducers would not update correctly in the content view for documents which were loaded twice.
  17. Fixed an issue where reducers would end up in an infinite loop when having to make certain hierarchy traversals.
  18. Fixed some issues that could cause missing information or UI updates resulting from reducers or other DOM queries involving attributes.
  19. Resolved a number of issues around selections containing a single table cell, including keybindings not working as expected.
  20. Resolved an issue where double-clicking a word at the edge of an inline element would sometimes extend the selection beyond the edges of that element, making it harder to target that element with further operations.
  21. Resolved an issue where the cursor could sometimes end up in an unexpected position when processing instructions are present near that cursor position.
  22. Fixed a bug where the 'divide evenly' button in the column resizing popover did not divide the columns evenly.
  23. Resolved a visual issue in the column resizing popover where the shadow effect used to indicate scrolling would not always update as expected.
  24. Resolved an issue where tables with some column widths absent were not rendered correctly.
  25. Fixed a bug where the outputClass property was not correctly applied to table cells.
  26. Fixed a bug where highlighting a scrolling MathML equation would not highlight the full equation.
  27. Resolved a visual error in Firefox where DITA conrefs, or similar inclusions, to inline frames would be displayed above rather than in line with the surrounding text
  28. Fixed a bug where the highlight bar of a table was shown on top of the table's expand button.
  29. Fixed an issue where the red border of an errored sheet frame would not be visible on all sides in document view mode.
  30. Resolved a regression introduced by our recent upgrade to FontAwesome 5 that caused non-clickable icon widgets to no longer be light grey.
  31. Fixed an issue caused by the FontAwesome 4 shim where the incorrect FontAwesome 5 icon would be used. If you see an icon that has changed visually, update it according to this list.
  32. Fixed an issue where the special character modal would sometimes not update the displayed characters correctly when switching between filters with the same number of characters.
  33. Resolved an issue where setting isCancelable to false would not work as expected for the "create document" modal.
  34. Resolved an issue where pressing enter to submit certain modals could unintentionally remove content in the editor.
  35. Resolved an issue where returning to the editor from apps like document history could result in content scrolling to an unexpected position. This should now scroll back to the same position you were at before.
  36. Fixed a bug where opening /closing the dropdowns inside of a TimeSelect or DateTimeSelect by directly clicking the arrow icon would clear the selected value.
  37. Fixed a number of cases where UI text could not be localized.
  38. Fixed an issue that caused sheet frame headers to be shown in document previews.
  39. Fixed an issue that caused the lock widget for the parent document to appear on nested sheet frames.
  40. Fixed an issue that caused unintended empty space below certain images.
  41. Fixed missing icons for a few table operations.
  42. Fixed the icon for the save-and-close operation no longer being flipped horizontally.
  43. Resolved an issue where the contents of the default table toolbar could flicker or disappear when used in FxEditorMasthead in combination with an isVisibleTabQuery.
  44. Resolved an issue that caused degraded performance when working in sheet frames containing multiple tables.
  45. Attempting to load non-DITA content in a DITA editor now results in a clearer error message instead of an application crash.
  46. Selecting very large tables using the top-left corner widget no longer scrolls to the middle of the table.
  47. Fixed an issue that caused certain numbers in the outline sidebar to be presented as clickable phone numbers in Edge.

Other improvements

  1. We've improved cursor movement using the arrow keys! You can now move up and down reliably, and even move the cursor between different sheet frames, footnotes and similar areas.
  2. You can now scroll in the masthead tab buttons, toolbar buttons and sidebar tab buttons with the mousewheel or trackpad if you see the < and > overflow buttons.
  3. You can now use the keyboard (tab, shift+tab, enter and escape) to interact with CalendarInput fields.
  4. We've improved pasting lists and tables from other applications, including the Office 365 version of Microsoft Word.
  5. Find & Replace no longer includes results in MathML formulas.
  6. Previews of documents that are already loaded in the editor now use the same hierarchy node ID, which should mean that any reducer-based counters display the same values as in the editor.
  7. The properties sidebar now always sets newly added properties to their configured initialValue. Previously, re-adding a property after deleting it would restore the previous value.
  8. We've improved the performance of the properties sidebar when dealing with certain very large configuration files.
  9. We improved the performance of evaluating configureAsInvalid selectors during validation.
  10. Using the toggle-inline-frame-element operation at the end of the inline frame element it affects now places the cursor outside of that element instead of removing the element completely. This makes it easier for authors to toggle such elements on and off using the operation's key binding while typing.
  11. Fonto now pauses polling the CMS for things like updating the state of loaded documents while its browser tab is in the background. This should reduce load on the CMS as well as the user's machine while they're not using Fonto.
  12. The XPath trace() function now outputs some additional information to the browser console, such as the operation during which it was called.
  13. In line with many other command line tools, the current version of FDT can now be requested by running fdt --version.
  14. This release includes version 3.11.1 of the FontoXPath engine. Refer to its release notes for details and new features.
  15. Various smaller improvements to performance and reliability.

Deprecated APIs

  1. The enable-experiment/render-all-whitespace configuration value has now been deprecated and will be removed in a future release. Some implementations may have previously set this to false to make Fonto use an older (incorrect) implementation of whitespace rendering that displayed any whitespace characters as spaces, reducing the visual impact. We now recommend always filtering out such unwanted whitespace at the CMS.