From 1551e409c31992437cb2fa864f576d45c8433801 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Sun, 16 Aug 2026 15:49:12 -0300 Subject: big slow change: prebuilt shaders (SPIR-V/Metal), core gui reflow, docs, web + snapshot refresh --- docs/web.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'docs/web.md') 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, -- cgit v1.3