docs: sharing, mail and provenance in changelog, README and llms.txt
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BNhLunz586g6DeYMa7Qsd1
This commit is contained in:
4 files changed
+173
-2
No files matched your search
@@ -19,6 +19,7 @@ const BODY = `# Klarbild
|
||||
|
||||
Basis-URL: https://klarbild.heidrich-digital.de
|
||||
Öffentliche Vorstellung des Druckmoduls (ohne Login, reine Beschreibung): /vorstellung
|
||||
Öffentliche Teilen-Links: /s/<slug> (ohne Login, nur was der Link freigibt)
|
||||
Sprache der Oberfläche: Deutsch. Stack: Astro 5 (SSR) · Postgres · sharp · pg-boss.
|
||||
|
||||
## Authentifizierung (für Agenten)
|
||||
@@ -120,6 +121,46 @@ Werkzeug \`klarbild\` (mcp/klarbild-mcp.mjs), nutzt denselben API-Token:
|
||||
- exact_size — OHNE KI: ein Bild exakt auf ein Maß bringen, Datei lokal speichern.
|
||||
- print_sheet — OHNE KI: Druckbogen (mehrere Bilder × Stückzahl, Schnittmarken) als PDF lokal speichern.
|
||||
|
||||
## Teilen-Links (öffentlich, ohne Konto)
|
||||
Ein Bild oder eine Sammlung unter \`/s/<slug>\` zugänglich machen — der Empfänger braucht kein Konto.
|
||||
- Voreinstellungen sind bewusst vorsichtig (auf den Bildern sind Kinder): **Ablauf** (Standard 30 Tage,
|
||||
\`settings.share_default_days\`), jederzeit **widerrufbar** und wieder freigebbar, optionales
|
||||
**Zugangswort** (argon2), **Herunterladen abschaltbar**, Seiten und Dateien tragen \`X-Robots-Tag: noindex\`.
|
||||
- Der Zugriff hängt am **Link**, nicht am Bild: Eine fremde \`item\`-Kennung an einem gültigen Link
|
||||
liefert 404. Bilder aus privaten Sitzungen lassen sich gar nicht teilen.
|
||||
- Zustände: 200 (gültig) · 401 (Zugangswort nötig oder falsch) · 404 (unbekannt) · 410 (abgelaufen oder
|
||||
widerrufen). Das Zugangswort geht per **POST**, danach quittiert ein kurzlebiges Cookie je Link.
|
||||
- \`GET /api/s/<slug>/file?item=<uuid>\` — Ansichtsfassung (auf 2000 px verkleinert).
|
||||
\`&download=1\` liefert das Original; bei gesperrtem Download 403. \`&thumb=1\` für die Übersicht.
|
||||
- \`GET|POST /api/shares\` — eigene Links auflisten bzw. anlegen. Body: \`{ itemIds[], title?, note?,
|
||||
days?, allowDownload?, password? }\`. \`days\` muss eine Zahl von 0–3650 sein (0 = unbegrenzt);
|
||||
alles andere wird **abgelehnt**, nicht als „unbegrenzt" gedeutet.
|
||||
- \`GET|PATCH|DELETE /api/shares/<id>\` — Zugriffe ansehen, ändern (\`action: 'revoke'|'unrevoke'\`,
|
||||
\`title\`, \`note\`, \`days\`, \`allowDownload\`, \`password\`), löschen.
|
||||
- \`POST /api/shares/send\` — Link per Mail verschicken: \`{ shareId, to, message? }\`, höchstens 10
|
||||
Empfänger je Anfrage, 50 Mails je Stunde und Absender. **Kein Anhang** — ein Link lässt sich
|
||||
zurückziehen, ein Anhang nicht.
|
||||
- WhatsApp läuft über einen \`wa.me\`-Link im Browser (kein Server-Versand; die WhatsApp-Business-API
|
||||
bräuchte Meta-Konto, genehmigte Vorlagen und Gebühren).
|
||||
- Gezählt wird **wann** und mit welcher Art Gerät geöffnet wurde, nicht **wer**: von der IP nur ein
|
||||
Hash, gesalzen mit Server-Geheimnis **und** Link-Kennung (also nicht über Links hinweg verknüpfbar),
|
||||
höchstens eine Zeile je Besucher und Stunde, Löschung nach 90 Tagen.
|
||||
|
||||
## E-Mail
|
||||
Versand über das eigene Postfach (SMTP, Zugang verschlüsselt in \`settings\`; Admin → E-Mail).
|
||||
Gebraucht für: Passwort zurücksetzen, Hinweis bei fertigen Aufträgen (je Nutzer schaltbar unter
|
||||
\`/konto\`), Teilen-Links verschicken. Ohne eingerichteten Versand melden die betroffenen Routen 503.
|
||||
- \`POST /api/auth/reset { email }\` — Rücksetz-Link anfordern. Antwortet **immer gleich**, egal ob es
|
||||
die Adresse gibt. \`POST /api/auth/reset { token, password }\` — neues Passwort setzen; Token gilt
|
||||
60 Minuten, genau einmal, und entwertet alle offenen Sitzungen des Kontos.
|
||||
- \`GET|PATCH /api/me\` — eigenes Konto: \`email\`, \`notify_jobs\`.
|
||||
|
||||
## KI-Kennzeichnung
|
||||
Ergebnisse tragen IPTC \`DigitalSourceType\` als XMP in der Datei:
|
||||
\`trainedAlgorithmicMedia\` (aus Text erzeugt) bzw. \`compositeWithTrainedAlgorithmicMedia\`
|
||||
(vorhandenes Foto verändert), dazu \`xmp:CreatorTool\` mit dem verwendeten Modell.
|
||||
Auslesbar mit exiftool. Das Druckmodul erzeugt nichts mit KI und kennzeichnet folglich nichts.
|
||||
|
||||
## Dateinamen der Ergebnisse
|
||||
Schema: \`JJJJ-MM-TT_HHMMSS_<motiv>_<format>_<kürzel>.<ext>\` — z. B. \`2026-08-20_143207_lea-badge_the-frame_a3f9.jpg\`.
|
||||
- Der Zeitstempel steht vorn, deshalb sortiert jede Dateiliste (Picdrop, NAS, Finder) von allein chronologisch.
|
||||
|
||||
Reference in new issue
Block a user