From 068e7e65660444509d515d74e3ab1f47aa0dbab8 Mon Sep 17 00:00:00 2001 From: Fredrik Johansson Date: Thu, 25 Jun 2026 20:31:54 +0200 Subject: [PATCH] docs: update README with file sharing and browser mode clarifications MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Document the folder sharing, peer file browsing, and direct push (📎) workflows added in the previous commit. Clarify that browser mode also activates locally when config.js sets signalURL. Co-Authored-By: Claude Sonnet 4.6 --- README.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2f1b987..2c113ab 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ npm run build # Produces web/dist/ # Copy to VPS -rsync -az web/dist/ user@your-vps:/var/www/waste-web/ +rsync -az web/dist/ user@your-vps:~/waste-www/ ``` Create a `/var/www/waste-web/config.js` on the VPS (not in git — this is host-specific): @@ -94,7 +94,7 @@ There are two ways to use the web UI. ### Browser mode (for anyone with just a URL) -When the web UI is served from a non-localhost origin it runs entirely in the browser — no daemon, no install. Crypto (Ed25519/X25519) runs via libsodium compiled to WebAssembly. The identity seed is stored in `localStorage` and persists across sessions. +When the web UI is served from a non-localhost origin — or locally with `config.js` setting `signalURL` — it runs entirely in the browser. No daemon, no install. Crypto (Ed25519/X25519) runs via libsodium compiled to WebAssembly. The identity seed is stored in `localStorage` and persists across sessions. A user visits your domain, enters their name and a network name, and joins. Invite links (`waste:…` or `?n=name&a=wss://…`) pre-fill the join form. @@ -104,7 +104,27 @@ A user visits your domain, enters their name and a network name, and joins. Invi `launch-web.sh` starts the Go daemon and the Vite dev server. The web UI connects to the local daemon over WebSocket IPC (`ws://127.0.0.1:17338`). The daemon handles all crypto and connects to the anchor. -When the web UI is loaded from `localhost`, it defaults to daemon mode. A "Switch to browser mode" button is available in the join screen if the daemon is not running. +When the web UI is loaded from `localhost` without a `config.js`, it defaults to daemon mode. A "Switch to browser mode" button is available in the join screen if the daemon is not running. + +--- + +## File sharing (browser mode) + +File transfer runs peer-to-peer over WebRTC DataChannels — files never touch the anchor or any server. + +### Sharing a folder + +In the sidebar under **Sharing**, click **+ Share folder** to pick a local directory. The selected files become available for peers to browse and download. You can re-click to change the folder at any time; the new set is immediately reflected for any peer that browses again. + +### Browsing a peer's files + +Hover over a peer in the sidebar to reveal action buttons. Click **⊞** to request their file list. A panel opens on the right showing their shared files with names and sizes. Click **↓** next to any file to download it directly from that peer. + +### Sending a file directly + +Hover over a peer and click **📎** to open a file picker. The selected file is pushed immediately to that peer — they don't need to be sharing anything. The recipient's browser auto-downloads the file on arrival. + +> File transfer is currently browser mode only. In daemon mode, use `set_share_dir` via IPC and `get_file_list`/`send_file` commands (see IPC protocol below). ---