Files
endorphin-tessera-gui/README.md
T

75 lines
1.8 KiB
Markdown

# Tessera
Tessera is a clean desktop rendering host. It starts with an empty page. Coding agents submit source code to a namespace through a local CRUD API; Tessera parses that code, builds its architecture tree, compiles it to drawing commands, and renders the result.
## Start
```bash
cargo run --release
```
Tessera listens only on `127.0.0.1:4737`.
Start every agent integration by reading the live Markdown guide:
```bash
curl http://127.0.0.1:4737/agent
```
## Namespace code API
The initial active namespace is `app.main`. Tessera has no file concept.
```text
GET /v1/namespaces/app.main/code
PUT /v1/namespaces/app.main/code
DELETE /v1/namespaces/app.main/code
```
Submit code as plain text:
```bash
curl \
--request PUT \
--header 'Content-Type: text/plain; charset=utf-8' \
--data-binary @- \
http://127.0.0.1:4737/v1/namespaces/app.main/code <<'TESSERA'
namespace app.main
use tessera.ui::{Column, Text}
export scene Main {
render {
Column(gap: 12, padding: 24) {
Text("Hello", role: .title)
Text("Rendered by Tessera")
}
}
}
TESSERA
```
Updates are atomic. Invalid code returns diagnostics with HTTP 422 and preserves the last successfully rendered revision.
## Developer tools
The developer sidebar is closed by default.
- macOS: `Command-Option-I` or `F12`
- Windows/Linux: `Control-Shift-I` or `F12`
The upper section displays the compiler-produced architecture tree. Selecting a node shows the corresponding source range below it.
## Current syntax experiment
The first parser intentionally supports only enough syntax to test the architecture:
- `namespace`
- namespace-only `use`
- one `export scene`
- one `render` root
- `Column`, `Row`, `Spacer`, and `Text`
- `gap`, `padding`, and `.title`
There are no files, HTML, CSS, JavaScript, DOM, or resource-network concepts in the runtime.