# feat: add the editable page model · clo/snowbound

[View on GitCafe](https://git.cafe/clo/snowbound/commit/e00506af62d3a184a53b6dec1b40ac6bd6372c3c)

Repository: [clo/snowbound](https://git.cafe/clo/snowbound)

Visibility: public

Requested revision: e00506af62d3a184a53b6dec1b40ac6bd6372c3c

Requested commit: e00506af62d3a184a53b6dec1b40ac6bd6372c3c

Commit: e00506af62d3a184a53b6dec1b40ac6bd6372c3c

Tree: 9b01549bbe63d307a541267c5094aa507f929c1a

Author: clover caruso

Committer: clover caruso

## Message

```
feat: add the editable page model

Move the canvas page model into onestore::page: Page, Title, Outline,
PageParagraph, Table, TextObject, Image and Unsupported keep stored
identities, resolve inherited formatting, and retain everything else on the
page as Unsupported. page::text::Paragraph coalesces rich text into spans with
UTF-8/UTF-16 offset mapping, hidden-field projection, slicing and invertible
edits. Page::from_space selects the single active page of an object space.
The page writer module is renamed pages.rs; its public types are unchanged.

Validation: 18 model unit tests ported from the canvas branch; every page in
the 396-file public corpus builds a model with distinct identities; Clippy,
fmt and doctests. Merge instructions for the UI branch are in
evidence/M1-MERGE.md.

Assisted-by: claude-fable-5.1

```

## Parents

- [ad10b477304448e0310a90215fdfab07b4dd337f](https://git.cafe/clo/snowbound/commit/ad10b477304448e0310a90215fdfab07b4dd337f?format=markdown)

[Source at this commit](https://git.cafe/clo/snowbound/tree/e00506af62d3a184a53b6dec1b40ac6bd6372c3c?format=markdown)
