docs: readme with site-wide effects, media guide; test: media/admin end-to-end; version 0.2.0
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# Medien
|
||||
|
||||
Werkzeugnamen: `lit-…` sind direkt aufrufbare Tools; `lit/…` sind Abilities, die über
|
||||
`mcp-adapter-execute-ability` (Name in `ability_name`, Eingaben in `parameters`) aufgerufen werden. Welche
|
||||
Tools direkt sichtbar sind, lässt sich unter Einstellungen → LIT MCP → Tools ändern (siehe `overview`);
|
||||
`lit-media-preview` und `lit-media-download` lassen sich dort nur auf „direkt“ oder „deaktiviert“ stellen,
|
||||
nie auf „indirekt“ – ihr Bild- bzw. Dateiergebnis wird nur bei direktem Aufruf zu einem sichtbaren Inhalt.
|
||||
|
||||
## Suchen und ansehen
|
||||
|
||||
- `lit-media-search`: Text (Titel, Dateiname, Beschreibung), `mime` (z. B. `image` oder `application/pdf`),
|
||||
Zeitraum (`date_after`/`date_before`), `missing_alt: true` (Bilder ohne Alt-Text; `mime` muss dabei leer
|
||||
oder ein Bild-Typ sein) und `unused: true` (keine gefundene Verwendung). Geliefert werden nur reguläre
|
||||
Mediathek-Einträge (kein Papierkorb), die der Nutzer bearbeiten darf. `unused` prüft je Aufruf höchstens 20
|
||||
Medien; wird die Prüfung dadurch unterbrochen, folgt eine Warnung und mit `next_cursor` geht es weiter –
|
||||
„keine Verwendung gefunden“ ist dabei keine Garantie (Details je Medium über `lit/media-get`).
|
||||
- `lit-media-preview`: verkleinertes Bild ansehen (längste Kante `max_size`, Standard 512 px) – z. B. um
|
||||
passende Alt-Texte zu schreiben.
|
||||
- `lit/media-get`: alle Metadaten, Bildgrößen und Verwendungsorte (Beitragsbild, Inhalte inkl. Divi,
|
||||
Bildfelder, Website-Icon, Logo, Header-/Hintergrundbild, Widgets). `certainty`: „sicher“ = per ID
|
||||
eingebunden, „möglicherweise“ = nur die Datei-URL gefunden (kann zu einer anderen Kopie der Datei gehören).
|
||||
Einträge, die der Nutzer nicht lesen darf, erscheinen als „(nicht lesbar)“. `usages_complete: false` heißt,
|
||||
die Inhaltssuche wurde begrenzt – weitere Verwendungen sind möglich; `usages_truncated: true` heißt, es
|
||||
gibt mehr Verwendungen als gelistet.
|
||||
|
||||
## Hochladen
|
||||
|
||||
- `lit-media-upload-from-url` (direkt): lädt eine öffentlich erreichbare `http(s)`-Datei; interne oder
|
||||
lokale Adressen werden abgelehnt.
|
||||
- `lit/media-upload` (indirekt): lädt eine Datei als Base64.
|
||||
- Beide: optional `title`, `alt`, `post_id` (Eintrag, dem das Medium zugeordnet wird – braucht
|
||||
Bearbeitungsrecht); erlaubte Dateitypen jpg, png, gif, webp, avif, pdf, mp4, mp3; Größenlimit siehe die
|
||||
Tool-Beschreibung (Standard 5 MB, einstellbar unter Einstellungen → LIT MCP → Limits). Beide legen bei
|
||||
jedem Aufruf ein neues Medium an (nicht idempotent).
|
||||
|
||||
## Ändern, herunterladen, löschen
|
||||
|
||||
- `lit/media-update`: Alt-Text, Titel, Bildunterschrift, Beschreibung für bis zu 50 Medien in einem Aufruf –
|
||||
alles oder nichts: Ist ein Eintrag ungültig (unbekannte ID, keine Berechtigung, Papierkorb, zu lang,
|
||||
nichts zu ändern, veraltetes `modified`), wird nichts gespeichert und `failures` nennt jeden fehlerhaften
|
||||
Eintrag. Optional pro Eintrag `modified` (Wert aus `lit/media-get` oder `lit-media-search`) als Schutz vor
|
||||
parallelen Änderungen mitsenden – `modified` ändert sich bei Titel, Bildunterschrift und Beschreibung,
|
||||
nicht bei einer reinen Alt-Text-Änderung. Bei Erfolg meldet `results` jeden Eintrag einzeln (mit neuem
|
||||
`modified`).
|
||||
- `lit-media-download`: Datei (Original oder eine Bildgröße aus `sizes` in `lit/media-get`) als eingebettete
|
||||
Ressource, nur bis zum Upload-Limit – darüber die URL aus `lit/media-get` verwenden.
|
||||
- `lit/media-delete`: nur nach Rückfrage (`confirm: true`). Wird das Medium verwendet (auch nur
|
||||
„möglicherweise“), kommt `in_use` mit der Liste der Verwendungen – erst nach ausdrücklicher Zustimmung des
|
||||
Nutzers mit `force: true` löschen. Medien im Papierkorb werden nicht gelöscht. Ohne aktivierten
|
||||
Medien-Papierkorb (WordPress-Standard) ist das Löschen endgültig und nicht rückgängig zu machen. Die
|
||||
Verwendungsprüfung findet NICHT: Term-Meta, Benutzer-Meta, Pods-Tabellen (`pods_*`, `podsrel`),
|
||||
ACF-Felder (außer als Bildfeld im Schema mit einer ID pro Meta-Eintrag), serialisierte oder
|
||||
kommagetrennte ID-Listen in Meta-Feldern und Optionen anderer Plugins – im Zweifel den Nutzer fragen, statt
|
||||
sich auf „keine Verwendung gefunden“ zu verlassen.
|
||||
|
||||
Alt-Texte beschreiben den Bildinhalt knapp und sachlich (keine „Bild von …“-Floskeln).
|
||||
|
||||
## Wenn ein Schreibvorgang fehlschlägt
|
||||
|
||||
Wie bei Inhalten (siehe `overview`): `code` = `write_failed` (alles wurde zurückgenommen) oder
|
||||
`partial_write` (die Rücknahme war unvollständig, `hint` folgen statt zu wiederholen).
|
||||
@@ -29,9 +29,10 @@ Hinweisen immer so geschrieben):
|
||||
Status (`lit/post-unpublish`, `lit/post-schedule`, `lit/post-trash`), Kopien (`lit/post-duplicate`,
|
||||
`lit/post-replace-with-copy`), Revisionen (`lit/revisions-list`, `lit/revision-restore`), Menüs
|
||||
(`lit/menu-list`, `lit/menu-get`, `lit/menu-create`, `lit/menu-set-items`, `lit/menu-assign-location`),
|
||||
Einstellungen (`lit/wp-settings-get`, `lit/wp-settings-update`), Medien (`lit/media-get`, `lit/media-upload`).
|
||||
Einstellungen (`lit/wp-settings-get`, `lit/wp-settings-update`), Medien (`lit/media-get`, `lit/media-upload`,
|
||||
`lit/media-update`, `lit/media-delete`).
|
||||
|
||||
Weitere Themen: `lit-guide` mit `topic` = `content-types` oder `workflows`.
|
||||
Weitere Themen: `lit-guide` mit `topic` = `content-types`, `workflows` oder `media`.
|
||||
|
||||
## Rückmeldungen
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
# Etappe 1b – Manuelle Abnahme (Browser)
|
||||
|
||||
Vorbereitet von Task 13 (Doku/Version/E2E). Automatisiert geprüft ist bereits: alle Unit-Tests
|
||||
(`composer test`), Lint (`composer lint`) und die drei Integrationsskripte
|
||||
(`tests/Integration/mcp-smoke.sh`, `tests/Integration/wp-basis-smoke.sh`,
|
||||
`tests/Integration/media-admin-smoke.sh`) – Details im Report von Task 13
|
||||
(`.superpowers/sdd/2026-09-25-etappe-1b-medien-admin/task-13-report.md`).
|
||||
|
||||
Die folgenden Punkte lassen sich nicht automatisiert oder nur mit einem echten claude.ai-Connector
|
||||
prüfen; das führt Jan-Niclas selbst im Browser durch. Aktueller Stand: Version 0.2.0, Branch `etappe-1`.
|
||||
|
||||
## 1. Einstellungen → LIT MCP: alle Tabs
|
||||
|
||||
- [ ] Aufrufen: WordPress-Adminbereich → Einstellungen → LIT MCP.
|
||||
- [ ] Alle fünf Tabs öffnen: Verbindung, Zugriff, Tools, Protokoll, Limits. Jeder Tab lädt ohne
|
||||
PHP-Fehler/-Warnung (WP_DEBUG ist an) und zeigt sinnvolle Inhalte.
|
||||
- [ ] Im Tab „Zugriff“: Rolle „Redakteur“ freigeben, speichern; ein Redakteur-Konto kann sich danach
|
||||
verbinden (Access-Capability wirkt sofort, kein Cache). Freigabe wieder entfernen, speichern.
|
||||
- [ ] Im Tab „Tools“: ein Tool (z. B. `lit/content-query`, Standard „direkt“) auf „indirekt“ stellen,
|
||||
speichern – der Hinweistext dort weist bereits darauf hin, dass die Serveranweisungen erst ab
|
||||
der nächsten Verbindung gelten. Danach wieder auf „Standard“ zurückstellen, speichern.
|
||||
|
||||
## 2. claude.ai-Connector verbinden und Widerruf
|
||||
|
||||
- [ ] Mit claude.ai verbinden (Staging-Domain oder `ddev share`), OAuth-Flow durchlaufen.
|
||||
- [ ] Die neue Verbindung erscheint unter Einstellungen → LIT MCP → Zugriff („Aktive Verbindungen“)
|
||||
mit Client-Namen und Zeitpunkt.
|
||||
- [ ] Dort „Widerrufen“ klicken. Der nächste Tool-Aufruf in claude.ai scheitert (401) und claude.ai
|
||||
verlangt eine neue Anmeldung, bevor Tools wieder nutzbar sind.
|
||||
|
||||
## 3. Medien-Workflow in claude.ai
|
||||
|
||||
- [ ] In claude.ai anfragen: „Suche Bilder ohne Alt-Text, zeig mir eins und schlag einen Alt-Text
|
||||
vor.“ Erwartet: `lit-media-search` mit `missing_alt: true` liefert Treffer, `lit-media-preview`
|
||||
zeigt ein sichtbares Bild in der Unterhaltung (nicht nur eine Textbeschreibung).
|
||||
- [ ] Optional weiterführen: Alt-Text mit `lit/media-update` speichern lassen und in der WordPress-
|
||||
Mediathek prüfen, dass er übernommen wurde.
|
||||
|
||||
## 4. Werkzeuge → Website-Zustand
|
||||
|
||||
- [ ] WordPress-Adminbereich → Werkzeuge → Website-Zustand → Reiter „Info“ bzw. die Testübersicht.
|
||||
- [ ] Der Test „LIT MCP Endpunkt“ ist grün, wenn der Server erreichbar und `/.well-known/` durchgereicht
|
||||
wird – sonst zeigt er verständlich, was fehlt (z. B. nginx-Sperre für Punkt-Pfade). Bei diesem
|
||||
DDEV-Setup hat `mcp-smoke.sh` bereits eine WARN dazu ausgegeben (`/.well-known/` von der
|
||||
nginx-Konfiguration blockiert) – das hier im Site-Health-Test bestätigen und für die
|
||||
Staging-/Produktions-nginx-Konfiguration eine Ausnahme für `/.well-known/` einplanen.
|
||||
|
||||
## 5. Protokoll-Tab
|
||||
|
||||
- [ ] Einstellungen → LIT MCP → Protokoll: Einträge der eben durchgeführten Tests (Task 13 und die
|
||||
manuellen Schritte hier) sind sichtbar.
|
||||
- [ ] Filter nach Tool/Ability (z. B. `lit/media-update`) funktioniert und schränkt die Liste ein.
|
||||
- [ ] Ein Eintrag mit Revisions-Link öffnet den WordPress-Revisionsvergleich (z. B. nach einer
|
||||
`lit-content-update`- oder `lit/post-replace-with-copy`-Änderung).
|
||||
- [ ] „Protokoll leeren“ leert die Liste (Bestätigungsdialog beachten) und zeigt danach die
|
||||
Erfolgsmeldung „Protokoll geleert.“.
|
||||
|
||||
## Ergebnis
|
||||
|
||||
Kurze Rückmeldung an den Ausführenden (Task 13 / Controller): welche Punkte grün sind und was ggf.
|
||||
als Folgeaufgabe (Bugfix oder Doku-Korrektur) aufgenommen werden muss.
|
||||
Reference in New Issue
Block a user