diff --git a/CLAUDE.md b/CLAUDE.md index 8496129..b3dba64 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -19,7 +19,9 @@ The binary does three things at once: - Serves a multipart upload API at `POST /upload` - In dev mode (`--serve`), also serves `public/` as static files -Routes: `GET /upload` (HTML upload form), `POST /upload` (multipart), +Routes: `GET /upload` (HTML upload form — multi-photo: the page posts one +`POST /upload` per selected photo, each with its own caption/date/tags), +`POST /upload` (multipart, one image per request), `GET /manage` (edit/delete UI), the manage API under `/api/` (see Manage), `GET /health`. Every route except `/health` is gated by HTTP Basic auth when `-htpasswd` is set (see Auth). diff --git a/README.md b/README.md index f832d4d..81be958 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ database, no framework. **Content & management (no database)** - `.toml` sidecars are the source of truth; the binary watches the content dir and rebuilds on any change. Four renditions per photo (original, 600² thumbnail, 1600px medium, 1200px OG), each skipped when already up to date. -- **Web upload** (`/upload`) with EXIF-date prefill and tag autocomplete. +- **Web upload** (`/upload`): pick one or many photos, each with its own EXIF-prefilled date, caption and tag-autocompleting tags field; posted with per-photo status and retry. - **Manage UI** (`/manage`): edit caption/date/tags, bulk tag add/remove, and delete — delete is reversible (moves to `content/.trash/`, with restore / empty). - Tag autocomplete across the upload and manage forms, fed by `/tags.json`. diff --git a/templates/upload.html b/templates/upload.html index 681eb3c..2d5fcc8 100644 --- a/templates/upload.html +++ b/templates/upload.html @@ -10,177 +10,219 @@
Click to choose a photo
- jpg or png -