Repository navigation
Selection mapping
Inline nodes carry the source offsets they were parsed from, and a text run names the node its characters were read from. The viewers answer TryGetSelectionSourceSegment with the stretch of markdown a selection was rendered from, and the editors gained SelectRange and TryAdoptPreviewSelection to take that selection over.
TMarkdownSegment is now documented precisely: StartOffset is 1-based and EndOffset points at the first character past the node. A node whose text no longer matches the source character for character reports StartOffset = 0, which is the case inside a table cell, on a line whose tab the parser replaced by spaces, and for nodes an extension built itself.
IDisplayTextRun has a new SourceNode member; implementations outside the library need to add it.
Formatting commands
Bold, italic and strikethrough read the markdown before they change it. A selection that half covers marks of the same style takes that whole stretch in, and a selection that already carries them throughout has them taken off, so running a command twice leaves the text as it was. Ctrl+B and Ctrl+I work wherever the focus is, and a command run from the preview formats the selected text instead of the hidden caret.
Studio
View mode buttons in the VCL and FMX toolbars. The split view keeps both panes visible, the contents pane no longer starves it, and the editor is never focused while it is hidden.
Tests
Both suites build and run on Win32 and Win64x, and build.bat covers all four combinations.