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.