From 53c0193dc9e5abee1895de662c716d9c8ac2035e Mon Sep 17 00:00:00 2001 From: Claudio Date: Mon, 11 May 2026 00:11:36 +0200 Subject: [PATCH] docs(mule-image): drop Title field, add bulk Notes editor Co-Authored-By: Claude Opus 4.7 (1M context) --- containers/120-mule-images.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/containers/120-mule-images.md b/containers/120-mule-images.md index a3c65b8..f86873f 100644 --- a/containers/120-mule-images.md +++ b/containers/120-mule-images.md @@ -80,6 +80,13 @@ For pushes from inside the LXC, gitea creds at `/etc/mule-deploy/git-credentials ## Changelog +### 2026-05-11 — Drop Title field, add bulk Notes editor + +- Removed the `Title` (user_title) row from `PhotoInfoPanel.tsx`: the form field, its `titleDraft`/`setTitleDraft` state, the `commitTitle` handler, and the `photo?.user_title` watcher in the draft-sync `useEffect`. Column stays on `photos` and on the backend model — only the UI affordance went away. +- New bulk action `set_notes` in `backend/app/routers/photos.py` `bulk_action`: validates the value is a string (or null/empty to clear), then sets `user_notes` on every photo in the selection in one transaction. +- Frontend wiring: `bulkSetNotes` in `services/api.ts`, `bulkNotes` mutation in `hooks/useBulkPhotoMutations.ts` (optimistic patch with empty-string → null collapse, full rollback on error), surfaced in `RightSidebar.tsx`'s multi-photo bulk panel as a 2-row Textarea + Clear + Apply pair below the Tags section. Doesn't auto-fire on every keystroke — clicking Apply is the explicit commit (otherwise every keystroke would PATCH N rows). +- Shared `Photo` interface in `types/photo.ts` now includes `user_notes?: string | null` so the optimistic-patch typing accepts the field; previously it only existed on `PhotoInfoPanel`'s local `PhotoDetails` shape. + ### 2026-05-10 — Right sidebar compact rebuild Right sidebar previously had `` + `
` + a scroll region holding two parallel collapsibles ("Edit" + "Metadata"), with three nested `
` sub-collapsibles (Basic Info / Camera / Location) inside Metadata. A lot of chrome for a per-photo form.