From f1b53c1533539aecbf16ad19fd9156deae091f92 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Sun, 20 Sep 2026 03:53:17 -0300 Subject: 9web: multiplexer, HTTP view of the tree, live streams, richer page One upstream 9P connection now serves any number of browser WebSocket sessions and, with --serve, plain 9P clients over TCP or Unix (a 9pserve- style frame remux: tags and fids remapped, Tflush forwarded, reconnect on upstream loss). /fs/ maps HTTP onto the tree: GET file or directory (JSON or HTML), Range, HEAD with 9P headers, PUT (create, truncate, append, trailing slash makes a directory), DELETE, and ?follow=1 or text/event-stream turning a blocking read into server-sent events with Tflush on disconnect. The page gains a lazy tree, stat panel, create, rename, delete, upload and follow mode. --probe embeds 9proc for self-introspection. New mux-test and http-fs-test steps; e2e still passes. Co-Authored-By: Claude Fable 5.1 --- README.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 04c68fa..c06331f 100644 --- a/README.md +++ b/README.md @@ -100,9 +100,17 @@ own sources, tests, README and a `build.zig` fragment that the root `build.zig` imports and enables with a `-D` toggle (`zig build --help` lists the steps). New related programs follow the same layout. -* [`web/`](docs/http.md) — the HTTP/WebSocket gateway `9web` and its - WebAssembly browser client (`web/main.zig`, `web/client.zig`, assets under - `web/static/`). Always built; steps `serve`, `web`, `http-test`, `e2e`. +* [`web/`](docs/http.md) — the HTTP/WebSocket gateway `9web`, a 9P + multiplexer and its WebAssembly browser client (`web/main.zig`, + `web/mux.zig`, `web/httpfs.zig`, `web/probe.zig`, `web/client.zig`, assets + under `web/static/`). It holds one upstream 9P connection and fans it out to + many downstreams: the browser over a WebSocket, plain 9P clients over an + optional `--serve` TCP/Unix listener (a mux like 9pserve), and an HTTP view + of the tree under `/fs/` (`GET`/`PUT`/`DELETE`, directory JSON, `Range`, and + `?follow=1` server-sent events). `--probe` embeds 9proc for + self-introspection. The page adds a tree view, create/rename/delete, upload, + a stat panel and live follow. Always built; steps `serve`, `web`, + `http-test`, `mux-test`, `http-fs-test`, `e2e`. * [`9proc/`](9proc/README.md) — a 9P debug/introspection server as a library (module `9proc`, exported next to `cloud9`; freestanding core that is a backend of `fs.Server`, Linux debug layer) and its demo -- cgit v1.3