Mercurial
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 280:49e9e591c9bb | 281:c57149ad216e |
|---|---|
| 58 - focused native CEF content; | 58 - focused native CEF content; |
| 59 - the canvas URL editor or local dictation bridge; | 59 - the canvas URL editor or local dictation bridge; |
| 60 - hovered/pressed scene entity; | 60 - hovered/pressed scene entity; |
| 61 - camera. | 61 - camera. |
| 62 | 62 |
| 63 Open developer dropdowns are modal because Raygui draws their item list beyond | 63 Open developer dropdowns and the snapshot-name editor are modal because Raygui |
| 64 the panel rectangle and consumes outside clicks to close. While one is open, | 64 consumes keyboard or outside-click input while editing. While either is open, |
| 65 neither native web surfaces nor canvas entities receive pointer input behind it. | 65 native web surfaces, canvas entities, dictation hotkeys, and camera movement do |
| 66 not receive that input. | |
| 66 | 67 |
| 67 Text editing blocks WASD/arrow camera movement. Scrollable entities consume an | 68 Text editing blocks WASD/arrow camera movement. Scrollable entities consume an |
| 68 unmodified wheel. Ctrl/Cmd + wheel remains available to the camera for anchored | 69 unmodified wheel. Ctrl/Cmd + wheel remains available to the camera for anchored |
| 69 zoom; an unmodified wheel outside a scrollable entity pans vertically. | 70 zoom; an unmodified wheel outside a scrollable entity pans vertically. |
| 70 | 71 |
| 71 Text areas keep cursor, selection anchor, and vertical scroll state on the | 72 Text areas keep cursor, selection anchor, and vertical scroll state on the |
| 72 entity. Their visual-line layout is shared by drawing, hit testing, vertical | 73 entity. Their visual-line layout is shared by drawing, hit testing, vertical |
| 73 cursor movement, and caret visibility, so wrapped text and mouse selection use | 74 cursor movement, and caret visibility, so wrapped text and mouse selection use |
| 74 the same geometry. Ctrl on Windows/Linux and Cmd on macOS drive select/copy/ | 75 the same geometry. Ctrl on Windows/Linux and Cmd on macOS drive select/copy/ |
| 75 cut/paste shortcuts; Ctrl or Option performs word navigation. | 76 cut/paste shortcuts; Ctrl or Option performs word navigation. A selected text |
| 77 area exposes a bottom-right resize handle. Dragging it changes both dimensions, | |
| 78 reflows wrapped lines immediately, and keeps the caret within the scrollable | |
| 79 viewport. | |
| 80 | |
| 81 ## Snapshot boundary | |
| 82 | |
| 83 Developer Controls saves named native snapshots under the user state directory | |
| 84 as versioned `.zmap` files. The encoder writes explicit little-endian fields | |
| 85 rather than copying `Canvas_Entity` memory, then uses a payload checksum, | |
| 86 bounded entity count, finite geometry validation, and an atomic temporary-file | |
| 87 rename. Loading is transactional: the live scene is not cleared until the | |
| 88 entire snapshot validates. | |
| 89 | |
| 90 The current snapshot preserves numeric canvas entity IDs because conversation | |
| 91 routing uses them. Those IDs are canvas-local handles, not final | |
| 92 cross-workspace identities. Domain data should eventually normalize into | |
| 93 stable keys such as `conversation_id`, `asset_id`, and `component_id`; an | |
| 94 entity snapshot should retain only the typed key plus its visual state. | |
| 95 | |
| 96 Transient pointers, CEF surfaces, Copilot SDK sessions, hover state, active | |
| 97 agent work, and removal animations are never serialized. Browser and image | |
| 98 surfaces reconstruct from their retained HTTP(S) source after load. |