# SiriusMarkdown 0.7.23

Native editing keeps the painted caret and subsequent arrow movement on the
same visual row at a soft wrap. Pointer placement retains either visual caret
when a source offset belongs to both the preceding row's end and the next row's
start. Horizontal arrows move through prepared grapheme stops; repeated
Backspace range lookup uses the current prepared line rather than rescanning a
long paragraph. A width or font change resets the preferred vertical column.

Hosts can publish persistent empty paragraph, heading, list and quotation positions with
`MarkdownTextInputController.updateParagraphSourceOffsets(_:emptyLeaves:generation:)`.
Rows remain navigable after the caret leaves and after a prepared revision,
including trailing quotation rows and rows beside image-flow groups. Current
input geometry can update without rebuilding sealed native text.

The additive `MarkdownTextInputParagraphContent` and
`MarkdownRendererConfiguration.prepareTextInputParagraph(whitespace:atSourceByteOffset:)`
APIs supply caret stops inside spaces and tabs. Prepare them with the current
paragraph font outside view evaluation, then publish them using the
`paragraphContent` overload of `updateParagraphSourceOffsets`. Keep the host's
selection at its actual source byte. The cache shares identical measurements
across rows, coalesces concurrent preparation and bounds retained entries and
bytes. Republishing rows invalidates older layout callbacks, including font
changes with the same source generation. See the [native authoring guide](../Docs/SiriusMarkdown.docc/NativeAuthoring.md).

Focused caret actions reveal the insertion point through native scrolling;
manual scrolling keeps control until another caret action. Disabled retained
readers withdraw their Find shortcuts so the active reader can own search.

Selecting a styled word no longer appends an unselected paragraph terminator to
semantic plain text or macOS RTF. Selected spaces and authored line breaks are
retained, as are newline joins between disjoint ranges. Partial words in list
items do not acquire an unselected bullet, number or checkbox. Whole-document and print
serialization keep their paragraph structure. Browser 0.2.15 uses the same shared
selection-boundary behavior.

Existing public initializers, package products and minimum platforms remain
available. Source storage, native input methods, revision validation, source
transactions and Undo remain host responsibilities.
