Owner feedback, server-side aggregation, grid keyboard culling, XMP sources
ci / docker (push) Successful in 11m52s
ci / docker (push) Successful in 11m52s
- photographer verdict/rating on photos (migration 0005), PUT endpoints returning the fresh per-photo aggregate; FeedbackAggregate in models is the single home of the merge policy (max rating, accept beats reject, owner counts), used by album detail, XMP export and vote responses - feedback rows carry share_id; per-client filter pills (incl. 'you') scope filters/counts/overlays by id — labels are display-only - XMP export modal with per-source checkboxes (?shares=…&own=…), share validation, id dedup, and basename merging so RAW+JPEG pairs share one sidecar instead of losing feedback to an unmatchable name - grid keyboard culling: arrow cursor (clamped, outline after first use), Space opens / closes the viewer, Enter/S toggle select, P/X/U and star keys act on the cursor photo; keyboard votes never auto-navigate - lightbox freezes the visible list while open, so voting a photo out of the active filter no longer closes the viewer mid-run - perf: memoized per-scope derivation map, content-visibility on grid cells, lightweight /pending poll decoupled from vote patches, aggregate recompute in one SQL statement, out-of-order response guard - structure: AlbumPage split into components (Modal, UploadZone + ActivityOverlay with failed-count, SharesPanel, XmpModal), shared useEscape with typing guard, expiry year guard in endOfDayIso
This commit is contained in:
@@ -54,7 +54,7 @@ The lightbox — accept/reject, star rating, tags, and keyboard-driven culling
|
||||
revokes access immediately. Clients use unguessable share tokens, optionally
|
||||
gated by an argon2-hashed password (10 wrong guesses lock the link for
|
||||
15 minutes).
|
||||
- **Frontend**: React + Vite SPA — justified gallery, lightbox with
|
||||
- **Frontend**: React + Vite SPA — Lightroom-style photo grid (fixed cells, no crop), lightbox with
|
||||
accept/reject thumbs, rating stars and tag chips, keyboard-driven culling
|
||||
(`P`/`X`/`U`, `1`–`5`, `?` shows all shortcuts), drag-and-drop multi-file
|
||||
upload with progress. Touch-first on mobile: swipe sideways to browse,
|
||||
@@ -112,8 +112,8 @@ The prebuilt image is at `git.draic.info/nils/photos` (single image contains
|
||||
`server`, `worker`, and the built frontend). To build your own instead:
|
||||
|
||||
```sh
|
||||
docker build -t registry.example.com/you/photos:0.4.3 .
|
||||
docker push registry.example.com/you/photos:0.4.3
|
||||
docker build -t registry.example.com/you/photos:0.5.0 .
|
||||
docker push registry.example.com/you/photos:0.5.0
|
||||
```
|
||||
|
||||
Install the chart, pointing it at your existing Postgres and S3:
|
||||
@@ -121,7 +121,7 @@ Install the chart, pointing it at your existing Postgres and S3:
|
||||
```sh
|
||||
helm install photos deploy/chart \
|
||||
--set image.repository=git.draic.info/nils/photos \
|
||||
--set image.tag=0.4.3 \
|
||||
--set image.tag=0.5.0 \
|
||||
--set publicUrl=https://photos.example.com \
|
||||
--set ingress.host=photos.example.com \
|
||||
--set config.oidcIssuer=https://auth.example.com \
|
||||
|
||||
Reference in New Issue
Block a user