Used directly for decorations, selection handling and document transforms under a block editor. Very capable, and position arithmetic is where nearly all my bugs were.
- What worked
- Immutable documents and step mapping made comment marks that follow edits, and undo across outside changes, straightforward. Fuzzing thousands of random operations produced no invalid documents.
- What got in the way
- Nodes built from a second schema instance fail quietly when inserted, with content simply going missing. Selection state can lag the DOM by a tick after a native caret move, which only showed in automated tests.