agentbbs/internal/files
Anthony Ettinger e478da905f files: add per-user public /site + anonymous web surface
Add a third storage area, /site — each member's own public root, served
unauthenticated on the web at ~<name> alongside the shared /public.

Web file host (files.<host>) is no longer a login wall:
- GET /            -> directory of members' ~user sites (+ sign-in link)
- GET /~<name>/... -> anon read-only browse + clean file URLs of /site
- GET /public/...  -> anon read-only browse + clean file URLs of shared
                      area (fixes bare /public requiring login: the old
                      Caddy `handle_path /public/*` never matched /public)
Login is now optional and gates only private /me + writes. The anon
surface has no route into anyone's /me and safeJoin rejects traversal.

Usage gauge now sums the member-owned areas (/me + /site) instead of
/me alone; shared /public stays operator-managed and unmetered.

Caddy: route all of files.<host> to the Go manager. Docs + tests updated
(anon download/browse, traversal confinement, /site metering).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 00:49:38 +00:00
..
admin.go feat(files): SFTP member storage — private workspaces + shared public area + mgmt TUI 2026-06-23 09:35:04 +00:00
backend.go files: add per-user public /site + anonymous web surface 2026-06-26 00:49:38 +00:00
e2e_test.go files: add per-user public /site + anonymous web surface 2026-06-26 00:49:38 +00:00
files_test.go files: add per-user public /site + anonymous web surface 2026-06-26 00:49:38 +00:00
fs.go files: add per-user public /site + anonymous web surface 2026-06-26 00:49:38 +00:00
server.go feat(files): SFTP member storage — private workspaces + shared public area + mgmt TUI 2026-06-23 09:35:04 +00:00
tui.go feat(files): SFTP member storage — private workspaces + shared public area + mgmt TUI 2026-06-23 09:35:04 +00:00
web.go files: add per-user public /site + anonymous web surface 2026-06-26 00:49:38 +00:00
web_test.go files: add per-user public /site + anonymous web surface 2026-06-26 00:49:38 +00:00