From 685b8c8e74c9edbdf701594f50ff1b70ac288ec9 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Fri, 10 Jul 2026 17:32:43 -0300 Subject: web snapshots: add switch for saving/loading exports, update web version, web snapshot tooling --- docs/design.typ | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) (limited to 'docs') diff --git a/docs/design.typ b/docs/design.typ index dc94219a..e2fce5de 100644 --- a/docs/design.typ +++ b/docs/design.typ @@ -51,9 +51,11 @@ The boundary is two data types, both plain values: *Event* (in): `key`, `text`, `mouse` (press/release/motion; button left, middle, right; cell position), `wheel`, `pinch`, `resize`, and `output` (bytes a pty -produced, tagged with the pane id). A touch tap is a left press; a joystick -cursor is a motion plus buttons; the shells do this translation and nothing else -with input. One event vocabulary, three dialects translated at the door. +produced, tagged with the pane id). Touch policy belongs to the shell: web maps +a one-finger tap to right-button LOOK and a drag past its tap slop to natural +scrolling; native SDL keeps its two-finger gestures. A joystick cursor is a +motion plus buttons. The shells do this translation and nothing else with +input: one event vocabulary, three dialects translated at the door. *Surface* (out): a grid of cells — grapheme, fg, bg, attrs — plus a cursor and per-pane rectangles. This is the *canonical interface*: it is literally what the @@ -237,10 +239,23 @@ palettes, ascii glyph set toggle). Tutor: embedded text as file pane. toggles all recolor passes; Debug stats overlay; Dump writes state ZON. *Web (replay viewer parity).* Embedded dump; focus, border/move drags, wheel, -scrollbar, Colors/NextColor, pinch + touch (two-finger = middle), render -scale, link-look opens a new tab (new — the prototype has no web link -handling). SDL shells: stb_truetype atlas over the SDL GPU API (SPIR-V on -native, GLES3 on web), letterboxed web scaling, two-finger drag = wheel, tap -= middle click, pinch, touch debug overlay, `PARDES_TEST` PPM capture and -`PARDES_TEST_GRID` text-grid capture. Joystick cursor for the steamdeck is -*new* scope — the prototype ships no gamepad input. +scrollbar, Colors/NextColor, pinch, render scale, and link-LOOK opening a new +tab (new — the prototype has no web link handling). One-finger touch is +deliberately complete by itself: tap = LOOK; drag past a small slop = natural +scroll, with no LOOK on release. A build-generated read-only archive lets LOOK +open the current contents of Git-tracked Pardes `.zig` files despite the web +shell having no host filesystem. The published launcher dump is captured from +a running Pardes TTY after `git ls-files '*.zig'`, so its complete terminal +listing is the set the user can open; the published web build carries only the +Zig tree-sitter grammar and colors opened source panes without shipping unused +C/C++ parsers. A body gesture retains tap-LOOK/drag-scroll, but finger-down on +a tagline or a one-cell-tolerant pane separator latches to a left-mouse gesture +for its lifetime, keeping layout drags out of the scroll heuristic. Touch +circles, trails, and click flashes render only while Debug is enabled. SDL +shells use an +stb_truetype atlas over the SDL GPU API (SPIR-V on native, GLES3 on web), +letterboxed web scaling, pinch, and a touch debug overlay. `PARDES_TEST` +provides PPM and text-grid capture; the browser `.snap` harness drives real +Chromium touch input and reads both text and per-cell styles from the rendered +surface. Joystick cursor for the steamdeck is *new* scope — the prototype ships +no gamepad input. -- cgit v1.3