summaryrefslogtreecommitdiff
path: root/docs/web.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-08-16 15:49:12 -0300
committerGabriel Schneider <[email protected]>2026-08-18 23:44:42 -0300
commit1551e409c31992437cb2fa864f576d45c8433801 (patch)
treee2fae8451f87b735a1360c7c2e383fdc40165789 /docs/web.md
parentbe2a9957708cbf0c478ca861c4a1f0f227bbfe10 (diff)
downloadpardes-1551e409c31992437cb2fa864f576d45c8433801.tar.gz
pardes-1551e409c31992437cb2fa864f576d45c8433801.zip
big slow change: prebuilt shaders (SPIR-V/Metal), core gui reflow, docs, web + snapshot refresh
Diffstat (limited to 'docs/web.md')
-rw-r--r--docs/web.md24
1 files changed, 24 insertions, 0 deletions
diff --git a/docs/web.md b/docs/web.md
index ddc09d35..a6e2e923 100644
--- a/docs/web.md
+++ b/docs/web.md
@@ -18,6 +18,22 @@ array. `src/web/app.mjs` reads that array in one linear pass and patches stable
DOM nodes. Core effects become browser operations (links, downloads, clipboard)
or `pardes-io` custom events for a process-capable embedding host.
+Cell attribute bit 7 carries the core's tagline font role. The DOM keeps every
+cell at the body grid's fixed width and height, but scales and centres the
+tagline glyph using the build-time `gui_tagline_font_percent`; the percentage is
+exported by the module rather than duplicated in JavaScript. Animation time is
+also host-independent: `requestAnimationFrame` time is accumulated into 60 Hz
+core ticks, so 120/144 Hz displays do not accelerate frame-count transitions
+and a returning background tab has bounded catch-up work.
+
+The `web` platform is deliberately not one of the shader-capable native GUI
+shells. It exposes no `PanelSlide`/`PanelZoom`/`PanelDissolve`/`PanelAscii`/
+`PanelVertical` or `Crt`/`Ripple`/`Glitch` builtins: applying those faithfully
+would require a second canvas renderer and give up the DOM renderer's
+selectable/accessibility contract. Theme fades and the delayed,
+side-effect-free Look hover remain grid animations and continue to use the
+fixed 60 Hz ticks above.
+
Build a replay from a dump:
```sh
@@ -37,12 +53,20 @@ file-or-directory — is native-only, because the wasm module roots at
`src/web.zig` and never links `main.zig`. State comes from the embedded dump
instead.
+Web LOOK's source archive follows Git's working-tree view: tracked `.zig` files
+plus new, nonignored ones, sorted by path. The checked-in browser replay is a
+real native TTY dump of that same selection; its top and bottom launcher
+snapshots jointly cover the complete list before opening `build.zig`.
+
What is genuinely absent is narrower than "no IO". The module has no threads
and no host filesystem, so there is no startup config file, LOOK resolves
against the build-generated source archive rather than disk, and no language
BACKEND is compiled in (`zls_backend` is off for wasm — which also means
`lsp.supports` is empty, so the core never even raises a language query there;
`web.zig`'s prong for it is waiting for a host that links one).
+Replay terminals retain the same core shape but use Zig's failing IO value;
+this keeps the module freestanding without instantiating POSIX threaded IO that
+the browser can never call.
The EFFECTS themselves are all still emitted, each as a numbered code across
the ABI: `spawn` 1, `write` 2, `resize_pty` 3, `open_link` 4, `save_file` 5,