## Appendix C. History of changes

### v1.8.0 (March 2, 2026)

`xxeserver` based on XMLmind XML Editor v11.1.
Enhancements:

- The "Paste As|Paste from Word Processor or Browser" menu item found in the very last toolbar menu when a DITA Topic, DocBook or XHTML document is opened has been renamed to "Paste from Word, Browser or Markdown". Just like the desktop application , in addition to HTML, this menu item can now also import Markdown whose text source has been copied to the clipboard by text editor or web browsers. The documentation of this new feature is found in "Paste from Word Processor or Browser" .
- It's now possible to change the SVG element contained in another element (DocBook 5+ `<imagedata>`/`<svg:svg>`, DITA `<svg-container>`/`<svg:svg>`, etc) by double clicking the image or by right-clicking the image and then selecting the "Change Image" entry from the contextual menu.
- It's now possible to interactively resize the SVG element contained in another element.

Bug fixes:

- Having several `<xxe-client>` (or `<xxe-app>`) instances in the same HTML page caused the “dynamic” CSS styles (having an "`.xxe-s` `NNN`" selector; used to progressively compose the styled view) to “bleed” from one instance to the other. The consequences of this bug were immediately perceptible but were quite hard to understand.
- When editing a local file, inserting an image having a basename containing some of the following characters "`,;:$&+=?/[]@`" (e.g. "`icon@x2.png`") worked but the image was rendered as the green image placeholder.
- When the comparison of revisions was enabled for the document being edited, the "Edit TeX/LaTeX math" editor displayed a `<?xxe-sn?>` processing-instruction before the TeX/LaTeX source code.
- An `<xxe-app>` containing anything other than an element having `class="xxe-not-supported"` (which serves as a fallback in case the web browser does not support `<xxe-app>`) failed to load and instead, displayed its content as a “not supported” message.
- Command "`xxeserver -faccess +`" did not work on Windows.

Incompatibilities:

- By default, `xxeserver` does not share the user preferences directory (e.g. `$HOME/.xxe11/` on Linux) with the desktop application. If you want `xxeserver` to load the add-ons and user preferences found in this directory, you must now start `xxeserver` with new option `-userprefs`.

### v1.7.1 (October 8, 2025)

`xxeserver` based on XMLmind XML Editor v11.0.
Enhancements:

- DITA Topic, DocBook, XHTML, TEI Lite configurations: just like in the desktop app, "Config. specific menu|Parse Markdown as XML" menu entry (keyboard shortcut `Ctrl+Shift+Space`; `Ctrl` and not `Cmd` even on the Mac) replaces Markdown markup found all the text nodes of explicitly or implicitly selected element by equivalent XML elements. Supported Markdown markup: italic , bold , bold and italic, code , strikethrough , highlight (replaced by `<u>`), subscript , superscript , link , image , heading , unordered list item, ordered list item.
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.26.

### v1.7.0 (July 8, 2025)

`xxeserver` based on XMLmind XML Editor v10.12.
Enhancements:

- The node path bar now displays attribute values just like in the desktop app. XHTML example: "`html > body > pre#example.fancy.line-numbers > code`" (character "`#`" is used to prefix the value of attribute `@id`; character "`.`" is used to prefix the tokens comprising the value of attribute `@class`). Configuration element `<nodePathAttributes>` is used to specify which attribute values are displayed, in which order and with which character prefix.
- Upgraded the Browser-FS-Access JavaScript module to version 0.38.0.

### v1.6.0 (May 2, 2025)

`xxeserver` based on XMLmind XML Editor v10.11.
Enhancements:

- Just like the desktop app:
  - DITA and DocBook documents may now embed TeX/LaTeX math or reference “image files” containing TeX/LaTeX math (".tex" files).
  - Shift-clicking the Copy tool bar button (or the Copy icon found in the contextual menu) now copies the implicit or explicit selection as plain text. This is equivalent to selecting item "Copy as Text" in the Edit menu of the toolbar.
  - New CSS proprietary extension : `inline-tree`, a new value for the `display` property.
  More information in v10.11 changes .
- MathML and TeX/LaTeX math are now rendered by MathJax , which is dynamically loaded by `xxe-client` when needed to.
- Double-clicking on MathML (respectively TeX/LaTeX math) or right-clicking and choosing "Edit MathML" (respectively "Edit TeX/LaTeX math") from the contextual menu opens a very simple editor letting you modify this math.
- Right-clicking an image (respectively a remark ) now displays the full contextual menu with "Change Image" (respectively "Edit Remark") added as its first entry.
- `xxeserver`: upgraded nanojson to version 1.9.
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.25.

Bug fixes:

- Custom controls corresponding to remarks , `command-button` , `value-editor` , did not take into account the fact that a document could be opened in read-only mode.

### v1.5.0 (November 15, 2024)

`xxeserver` based on XMLmind XML Editor v10.10.
Enhancements:

- Extending the right-click, contextual popup menu by the means of commands found in "`contextualMenuItems`" namespaces (as always, just like in the desktop app ) is now supported. For example, if you right-click a DITA `<xref>` element, whether in the document view or in the node path bar, two new menu items "Follow Link" and "Set Link Target" are added to the “normal” contextual popup menu (containing Repeat, Cut, Copy, ..., Edit Attributes).
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.24.
- Added appendix "How to adapt an existing "`.xxe`" configuration file to XXEW" to "XMLmind XML Editor Web Edition - Manual".

Bug fixes:

- Generated content inherited box-related style properties from their parent which, in some cases, caused the rendering to be slightly incorrect. Example, excerpts from `docbook51/css/assembly.css`:

      instance,
      instance[linking] {
          display: block;
          content: icon(left-link, navy)
                   text(attr(linkend), font-family, monospace, color, navy)
                   " " invoke("attributeValues", linking);
          margin-left: 4ex;
      }

  The generated content for the above `text()` was also given `margin-left:4ex` creating a large gap between the link icon and the link text.

### v1.4.0 (September 3, 2024)

`xxeserver` based on XMLmind XML Editor v10.9.
Enhancements:

- Improved the usability of the diagnostics pane displayed by the "Check Document Validity" button by rendering error messages in a nicer, more readable, way.
- Added a "Show Content Model" item to the menu of `<xxe-app>`, the sample XML editor application. Just like in the desktop application, this menu item opens a dialog box containing an automatically generated reference manual listing all the elements and attributes specified in the DTD, W3C XML Schema or RELAX NG schema of the document being edited.
- Content object `attributes` (CSS proprietary extension) generating an attributes pane in now supported.
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.22.

Bug fixes:

- Firefox only: empty (e.g. newly created), styled, having a block or inline-block display, comments and processing-instructions were rendered as a red line.
- In content objects generating form controls (CSS proprietary extensions) like `gauge` , a parameter like "`min, attr(min)`" was not supported.
- In content objects generating form controls (CSS proprietary extensions) like `radio-buttons` , a empty attribute value was not visible. It is now rendered as "`(empty string)`".
- CSS system font values like "`message-box`", "`caption`", etc, were not correctly rendered.

### v1.3.0 (June 17, 2024)

`xxeserver` based on XMLmind XML Editor v10.8.
Enhancements:

- When the document being edited has unsaved changes, the sample XML editor application (`<xxe-app>`) now asks the user to confirm that she/he really wants to leave the page containing the application. This feature corresponds to new attribute `<xxe-app>`/`@checkleaveapp`. Default attribute value: "`true`".
  Note that the document auto recovery feature is orthogonal to the above feature. The document auto recovery feature in the sample XML editor application corresponds to new attribute `<xxe-app>`/`@autorecover`. Default attribute value: "`true`".
- Added the "Comment Out" and "Uncomment" menu items to the Edit|Comment menu of the toolbar. "Comment Out" replaces text selection or explicit node selection by a comment containing the selection. "Uncomment" is inverse command of "Comment Out". It parses the content of implicitly or explicitly selected comment and replaces this comment by parsed XML nodes.
  This feature is a “port” from the desktop app. See "Comment menu" .
- Added the "Remark" submenu to the Edit menu of the toolbar. A remark is simply a `<?xxe-remark?>` processing-instruction nicely rendered as a “balloon” in the styled view. Double-clicking on this balloon displays a remark editor. This remark editor may be used to create a new remark or to reply to/modify an existing remark.
  This feature is a “port” from the desktop app. See "Remark menu" .
- All the content objects generating form controls (CSS proprietary extensions) are now supported. For example, `check-box` , `date-picker` , `radio-buttons` , `value-editor` are supported.
  However there a few limitations compared to the form controls supported by the desktop app:
  - `file-name-field` is rendered like `text-field` . There is no button next to the text field which opens a dialog box letting you choose a file.
  - The following properties of `gauge` are ignored: `low`, `high`, `optimum`, `low-color`, `high-color`, `optimum-color`.
  - The following properties of `spinner` are ignored on the client-side: `pattern`, `language`, `country`, `variant`, `columns`. That is, on the client-side, it's the web browser which is in control of what the user can see and type.
  - The following properties of `date-picker` , `time-picker` , `date-time-picker` are ignored on the client-side: `format`, `pattern`, `language`, `country`, `variant`, `columns`. That is, on the client-side, it's the web browser which is in control of what the user can see and type.

Bug fixes:

- The `autorecover` feature did not work when several documents were opened in several browser tabs/windows.
- Firefox only: pasting some text into a element containing a large number of text lines (e.g. a large `<pre>`) sometimes caused the caret to be scrolled out of sight.

### v1.2.0 (March 22, 2024)

`xxeserver` based on XMLmind XML Editor v10.7.
Enhancements:

- The DITA map, DocBook assembly and Ebook toolbars now have "Open Topic R/O" (open topic in read-only mode) and "Open Topic" buttons. For example, in the case of a DITA `<map>` or `<bookmap>`, these buttons open in a new browser tab the topic or sub-map referenced by selected `<topicref>`.
- DITA, DocBook, XHTML, TEI Lite configurations: `Ctrl-Alt-click` (`Option-Cmd-click` on the Mac) on an external `http`/`https` link now opens the corresponding page in a new tab. In previous versions of XXEW, this action only followed internal links.
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.20.
- `xxeserver` `-faccess` option: in addition to config_file|`-`|`~`|`+`, this option now also supports dir_list, where dir_list is a list of absolute or relative directory paths separated by `";"`.
- The `xxe-web-eval-N_N_N` distribution is now available as a Docker image called `xmlmind/xxe-web:N_N_N-eval`. How to run this image as a container is documented in its Docker Hub page .

Bug fixes:

- When navigating to a folder containing files having very long names, the "Open Remote Document" dialog box automatically became wider, which was somewhat annoying.

### v1.1.0 (November 22, 2023)

`xxeserver` based on XMLmind XML Editor v10.6.
Enhancements:

- Typing text using a CJK Input Method Editor (IME) now works but has limitations and bugs. For example, it's not possible to replace the text selection simply by typing text using the IME.
- Interactive commands written in JavaScript™ which are specific to a configuration are now dynamically loaded when needed. DocBook's "Link callouts" is such command. This short and simple command written in JavaScript first displays a dialog box letting the user choose an ID prefix, then it invokes its server-side counterpart (the command written in Java™ used by XXE Desktop) to actually do the job.
- Upgraded JavaScript module `browser-fs-access` to version 0.35.
- The following content objects (CSS proprietary extensions) are now supported: `command-button` and all its variants: `command-menu`, `insert-button`, `insert-after-button`, `insert-before-button`, `insert-same-after-button`, `insert-same-before-button`, `replace-button`, `convert-button`, `wrap-button`, `delete-button`, `add-attribute-button`, `set-attribute-button`, `remove-attribute-button`.
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.17.

Bug fixes:

- CSS extension property `collapsible:yes` was not honored for elements having an `inline-block` or `inline-table` display.

### v1.0.0 (September 1, 2023)

`xxeserver` based on XMLmind XML Editor v10.5.
Bug fixes:

- After many user actions, the document view was automatically scrolled to show the location of the caret, which was generally useless and annoying.
- Replaced `<xxe-client>`/`@systemselection` by much simpler `<xxe-client>`/`@button2pastestext`. We could not get `@systemselection`="`native`" (e.g. with Chrome on Linux) to work satisfactorily because it seems there is no way to update the X Window Primary Selection without updating the System Clipboard at the same time.

### v1.0.0-beta4 (August 2, 2023)

`xxeserver` based on XMLmind XML Editor v10.4.3 (not publicly released).
Enhancements:

- Dragging the column separator found at the right of a table cell may now be used to resize the table column containing this cell. Note that this works even when a table cell has no border, hence no visible column separator.

Bug fixes:

- When `<xxe-client>`/`@systemselection` was set to "`emulate`" (e.g. Firefox on Linux), dragging the mouse over some text selected just a couple of characters then the text selection stopped by itself.

### v1.0.0-beta3 (July 4, 2023)

`xxeserver` based on XMLmind XML Editor v10.4.2 (not publicly released).
Enhancements:

- Clicking inside the image representing the view of an image element now adds resize handles around this image. Dragging a resize handle lets you interactively resize the image element (DocBook example: `<imagedata>`) without having to manually change any of its attributes (DocBook example: `@contentwidth`, `@contentdepth`).
  The aspect ratio of an image element resized this way is automatically preserved. Drag a resize handle while pressing the `Ctrl` key (`Cmd` key on the Mac) if you do not wish to preserve its aspect ratio (i.e. if you want to distort the image).
- Added an Options submenu to the menu of the sample XML editor application. For now, this submenu only contains a single checkbox: Autosave. This check box lets the user turn the autosave feature on and off at will. This checkbox is disabled (grayed) unless the autosave feature has been specified and configured using attribute `@autosave`.
- Shift-clicking on an element name displayed by the node path bar now selects all the child nodes of this element. This is a handy alternative to using keyboard shortcut `Escape ArrowDown`.
- `xxeserver` embeds Jetty in order to implement an HTTP and WebSocket server. Upgraded Jetty to version 11.0.15.

Bug fixes:

- When testing newest Safari against XXEW, its “peculiar” Web Socket client caused `xxeserver` to raise a `org.eclipse.jetty.io.EofException` and from time to time —randomly— this completely blocked `xxeserver`.

### v1.0.0-beta2 (May 29, 2023)

`xxeserver` based on XMLmind XML Editor v10.4.1 (not publicly released).
Enhancements:

- Added an autosave facility to the sample XML editor application. Note that this autosave facility is not enabled by default. See new attribute `@autosave`.
- Added "Show Element Reference" to the menu of the sample XML editor application.
- Added a "Comparison of revisions" information item to the tooltip of the document icon of the node path bar (if this feature has been enabled for this document being edited).
- Firefox: slightly improved the clipboard integration. XXEW now updates the system clipboard when needed to but, unlike Chrome, still cannot read its contents.
- The "Paste from Word Processor or Browser" add-on is now supported by XMLmind XML Editor Web Edition (XXEW) and is included in all XXEW distributions. As a consequence, a new "Paste from Word Processor or Browser" menu item has been added to the menu found at the bottom/right of the DocBook, DITA Topic and XHTML toolbars.

  | ##### Restriction Please note that this add-on, when used by XXEW, is less good at importing data copied by MS-Word to the clipboard than when used by the desktop application. The add-on is strictly identical in both contexts and in theory, this should not happen. However browsers tend to discard important style information before making copied data available to web applications such as XXEW. For example, lists and language information are not imported as accurately as they should be.

Bug fixes:

- The dialog box displayed by command "Command History" did not work correctly when one of the repeatable commands had a parameter containing a newline character (example: "`textSearchReplace a[i]foo\nbar`").
- Firefox: pressing `Ctrl-SPACE` to insert a non-breaking space character (`&nbsp;` or `U+00A0`) also inserted a space character.
- In some cases, the width of "`display:marker`" content generated before an element was not computed accurately enough.

### v1.0.0-beta1 (May 1, 2023)

First public release. `xxeserver` based on XMLmind XML Editor v10.4.0.