feat(media): rename, search, and lightbox preview in the media library #89

Merged
kreativmonkey merged 2 commits from feat/media-library-rename-search-lightbox into main 2026-06-14 09:44:13 +02:00

Closes #84

Ergänzt die Media Library um die drei gewünschten Funktionen.

Rename

PATCH /v1/teams/{teamID}/media/{mediaID} setzt einen neuen Dateinamen (store.UpdateMediaItemFilename für sqlite + postgres, nur Editor/Owner, validiert + auditiert). Das Umbenennen-Feld sitzt in der neuen Lightbox.

Suche

Die Library-Seite filtert die Kacheln live nach Dateiname (client-seitig über die geladene Library).

Lightbox

Klick auf eine Kachel öffnet eine Vollbild-Vorschau (Bild oder Video, mit Auth-Header geladen) inkl. Vor/Zurück-Navigation, Umbenennen und Löschen.

Suche + Lightbox liegen in MediaLibraryPanel, das nur von der dedizierten Library-Seite genutzt wird — der Composer-Media-Picker bleibt unberührt.

Tests

  • store (sqlite + postgres): Rename-Roundtrip inkl. Team-Isolation
  • api: Rename (Erfolg, leerer Name → 400, unbekannte ID → 404)
  • Playwright-e2e: Upload → Lightbox → Umbenennen → Suche

go build/vet/test ./..., make test-postgres, pnpm build + lint (0 errors), Locales key-identisch — alles grün.

🤖 Generated with Claude Code

Closes #84 Ergänzt die Media Library um die drei gewünschten Funktionen. ## Rename `PATCH /v1/teams/{teamID}/media/{mediaID}` setzt einen neuen Dateinamen (`store.UpdateMediaItemFilename` für sqlite + postgres, nur Editor/Owner, validiert + auditiert). Das Umbenennen-Feld sitzt in der neuen Lightbox. ## Suche Die Library-Seite filtert die Kacheln live nach Dateiname (client-seitig über die geladene Library). ## Lightbox Klick auf eine Kachel öffnet eine Vollbild-Vorschau (Bild **oder** Video, mit Auth-Header geladen) inkl. Vor/Zurück-Navigation, Umbenennen und Löschen. Suche + Lightbox liegen in `MediaLibraryPanel`, das nur von der dedizierten Library-Seite genutzt wird — der Composer-Media-Picker bleibt unberührt. ## Tests - `store` (sqlite + postgres): Rename-Roundtrip inkl. Team-Isolation - `api`: Rename (Erfolg, leerer Name → 400, unbekannte ID → 404) - Playwright-e2e: Upload → Lightbox → Umbenennen → Suche `go build/vet/test ./...`, `make test-postgres`, `pnpm build` + `lint` (0 errors), Locales key-identisch — alles grün. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(media): rename, search, and lightbox preview in the media library
Some checks failed
CI/CD Workflow / E2E (Playwright + Go) (pull_request) Has been cancelled
CI/CD Workflow / Test Frontend (Node.js) (pull_request) Has been cancelled
CI/CD Workflow / Test Postgres Store (pull_request) Has been cancelled
CI/CD Workflow / Build and Publish Docker Image (pull_request) Has been cancelled
CI/CD Workflow / Trigger Dockhand Deployment (pull_request) Has been cancelled
CI/CD Workflow / Test Backend (Go) (pull_request) Has been cancelled
Website CI / Build website (pull_request) Successful in 48s
387a8da359
Implements issue #84.

- rename: PATCH /v1/teams/{teamID}/media/{mediaID} sets a new filename
  (store.UpdateMediaItemFilename for sqlite + postgres, editor/owner only,
  validated and audited); a rename field lives in the new lightbox
- search: the library page filters tiles by filename as you type
- lightbox: clicking a media tile opens a full-size preview (image or video,
  fetched with the auth header) with prev/next navigation, rename, and delete

Search and the lightbox are added to MediaLibraryPanel, which is only used by
the dedicated library page, so the composer media picker is unaffected.

Tests: store rename round-trip (sqlite + postgres), API rename (success,
empty-name 400, unknown-id 404), and a Playwright e2e that uploads a file,
opens the lightbox, renames it, and searches.

Closes #84

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Merge main into feat/media-library-rename-search-lightbox
All checks were successful
CI/CD Workflow / Test Backend (Go) (pull_request) Successful in 2m56s
CI/CD Workflow / Test Frontend (Node.js) (pull_request) Successful in 1m28s
CI/CD Workflow / Test Postgres Store (pull_request) Successful in 1m18s
CI/CD Workflow / E2E (Playwright + Go) (pull_request) Successful in 7m11s
CI/CD Workflow / Build and Publish Docker Image (pull_request) Has been skipped
CI/CD Workflow / Trigger Dockhand Deployment (pull_request) Has been skipped
806a762882
# Conflicts:
#	internal/store/postgres/postgres_test.go
#	internal/webui/dist/index.html
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kreativmonkey/goloom!89
No description provided.