Undo in text is more dependable: undoing a deletion puts the cursor after the text it brings back, and typing in a text flow that continues onto the next spread can be undone there.
Undo and redo for text flows that run across spreads are otherwise not supported for now: a font, style, size or paragraph change made in a later frame of such a flow is not taken back by undo.
apply_to_root() records the step on the chain root's spread with
record_on_spread_of(); set_redo() closes a step on the spread it was opened on; after undo or redo,
reflow_chains_through() reflows every chain that leaves the restored spread. The cursor goes to the
end of what changed (undocaret.ts), and when that lies in another frame of the chain,
typograph_text_edit_rebound names that frame. Formatting across spreads is TYP-1444, parked.70bb115 to 6203189, which also brings canvas #250 to #254: copying a
guide from its place on the page (TYP-919), a selected group shown to others as one outline (TYP-918),
Bitbucket over ssh.bitbucket.org (TYP-1384) and a stricter on-master check in CI (TYP-1372).