Mercurial
diff infinite_canvas/docs/entities-and-components.md @ 281:c57149ad216e default tip
Copilot-Session: f68442b1-fa8f-46a0-9689-81710613bbd4
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Tue, 18 Aug 2026 22:18:15 -0700 |
| parents | 49e9e591c9bb |
| children |
line wrap: on
line diff
--- a/infinite_canvas/docs/entities-and-components.md Tue Aug 18 19:14:53 2026 -0700 +++ b/infinite_canvas/docs/entities-and-components.md Tue Aug 18 22:18:15 2026 -0700 @@ -60,9 +60,10 @@ - hovered/pressed scene entity; - camera. -Open developer dropdowns are modal because Raygui draws their item list beyond -the panel rectangle and consumes outside clicks to close. While one is open, -neither native web surfaces nor canvas entities receive pointer input behind it. +Open developer dropdowns and the snapshot-name editor are modal because Raygui +consumes keyboard or outside-click input while editing. While either is open, +native web surfaces, canvas entities, dictation hotkeys, and camera movement do +not receive that input. Text editing blocks WASD/arrow camera movement. Scrollable entities consume an unmodified wheel. Ctrl/Cmd + wheel remains available to the camera for anchored @@ -72,4 +73,26 @@ entity. Their visual-line layout is shared by drawing, hit testing, vertical cursor movement, and caret visibility, so wrapped text and mouse selection use the same geometry. Ctrl on Windows/Linux and Cmd on macOS drive select/copy/ -cut/paste shortcuts; Ctrl or Option performs word navigation. +cut/paste shortcuts; Ctrl or Option performs word navigation. A selected text +area exposes a bottom-right resize handle. Dragging it changes both dimensions, +reflows wrapped lines immediately, and keeps the caret within the scrollable +viewport. + +## Snapshot boundary + +Developer Controls saves named native snapshots under the user state directory +as versioned `.zmap` files. The encoder writes explicit little-endian fields +rather than copying `Canvas_Entity` memory, then uses a payload checksum, +bounded entity count, finite geometry validation, and an atomic temporary-file +rename. Loading is transactional: the live scene is not cleared until the +entire snapshot validates. + +The current snapshot preserves numeric canvas entity IDs because conversation +routing uses them. Those IDs are canvas-local handles, not final +cross-workspace identities. Domain data should eventually normalize into +stable keys such as `conversation_id`, `asset_id`, and `component_id`; an +entity snapshot should retain only the typed key plus its visual state. + +Transient pointers, CEF surfaces, Copilot SDK sessions, hover state, active +agent work, and removal animations are never serialized. Browser and image +surfaces reconstruct from their retained HTTP(S) source after load.