Files
endorphin-tessera-gui/src

Tessera source

Module Responsibility
main.rs Native window event loop, namespace state and API startup
api.rs Code CRUD, eight-entry execution queue, worker, submission ordering and diagnostics
endor_host.rs Aster compilation, fresh candidate VM, bounded script/module execution, root cleanup and AST developer tree
endor_script.rs Batch complete inputs for Aster's Interactive parser/compiler, retain Module entry, and rebase Aster spans to the original snapshot
ui_bridge.rs Tessera UI/page payloads and bound render methods, preallocated node/page pools and native snapshot extraction
layout.rs Native UI tree to Frame; expanded-tree and coordinate budgets
document.rs Published source/AST/UI snapshot, revisions, invalidation, frame validation and display commands
app.rs Window events, redraw and developer-tools input
scene.rs Page and developer-tools display-list composition
developer_tools.rs Aster AST tree selection and corresponding source display
display_list.rs Rendering primitives and color representation
geometry.rs Native points and rectangles
software_renderer.rs Software rasterization of the display list
README.md Module map

Aster is an unmodified source submodule. Language parsing, AST definitions, compilation, bytecode and VM execution come from its libraries. Tessera implements only host UI behavior and layout. No CLI, HTTP server or Docker process is needed to execute Endor in the application.

An execution candidate owns all external VM roots, including the 4096-node pool and 64 pages with bound render callbacks. Script units share one globals dictionary inside the candidate; no variables or VM handles persist across successful PUTs. Callbacks return borrowed, preallocated real VM objects. Their mutable slots hold immutable native UI descriptions; child edges contain owned native Arcs, never managed VM references. Page rendering stores native root data in the build session; the final render selects the snapshot after all script units succeed. Once extraction finishes, release temporary results, clear globals, release roots, collect cycles and require an empty VM. The window keeps only source, developer metadata, frame commands and native UI data.

Tests in api.rs execute real HTTP CRUD and a controlled queued-PUT/DELETE race without opening a window. Tests in endor_host.rs cover lifecycle, direct script and module entry, page methods, multiline inputs, original source ranges, malformed input, entry checks, budgets, failure preservation and stale-result invalidation. They run only in remote CI. See the project guide for public behavior.