docs: download-all in changelog, help page, 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:
tillandClaude Opus 5 committed 2026-09-01 04:05:47 +00:00
1 parent 7d53962543
commit ef2e945080
5 files changed
+21 -1

No files matched your search

+6
View File
@@ -12,6 +12,12 @@ All notable changes to Klarbild are documented here. Newest first.
off entirely, and pages and files are noindex. Access is bound to the link, not the
image: swapping in another item id on a valid link returns 404. Private-session
results can never be shared.
- **Download everything at once**: a share with several pictures gets one button above the
grid for a ZIP at full resolution. Written to stream, not buffer -- one file at a time,
waiting for archiver's `entry` before reading the next. Measured: 440 MB of images, RSS
peaked at 196 MB against a 120 MB baseline. Capped at 200 files and 500 MB, past which
the archive closes with a note saying what happened. Respects the download lock and the
passphrase; rate limited per link and address.
- **Passing it on** by e-mail (several recipients, no attachment — a link can be
withdrawn later, an attachment cannot) or via `wa.me`, which opens WhatsApp with the
text prepared. The WhatsApp Business API needs a Meta account, approved templates and
+3 -1
View File
@@ -63,7 +63,9 @@ Migrationen und Seeds laufen beim Serverstart automatisch. Erststart-Passwörter
`noindex`. Zugriff hängt am **Link**, nicht am Bild (fremde `item`-Kennung ⇒ 404); private Sitzungen
lassen sich nie teilen. Verwaltung unter `/teilen` mit Aufrufen und Downloads. Gezählt wird *wann*
und *womit*, nicht *wer*: IP nur gehasht, gesalzen mit Server-Geheimnis **und** Link-Kennung, eine
Zeile je Besucher und Stunde, Löschung nach 90 Tagen. Kern: `src/lib/shares.ts`.
Zeile je Besucher und Stunde, Löschung nach 90 Tagen. **Alle Bilder als ZIP** über
`GET /api/s/<slug>/zip` — strömend, eine Datei nach der anderen (440 MB Bilder → 196 MB
Spitzenspeicher gemessen), gedeckelt bei 200 Dateien und 500 MB. Kern: `src/lib/shares.ts`.
- **Weitergeben:** per E-Mail aus Klarbild heraus (mehrere Empfänger, **kein Anhang** — ein Link lässt
sich zurückziehen), über das eigene Mailprogramm oder per `wa.me`-Link, der WhatsApp mit fertigem
Text öffnet. (Server-seitiger WhatsApp-Versand bräuchte die Business-API: Meta-Konto, genehmigte
+3
View File
@@ -185,6 +185,9 @@ import Base from '../layouts/Base.astro';
von dort lässt sich das Bild in voller Auflösung herunterladen.</li>
<li><b>Weitergeben</b> per <b>WhatsApp</b> (öffnet WhatsApp mit fertigem Text), über dein eigenes
Mailprogramm, oder direkt aus Klarbild heraus per E-Mail an mehrere Empfänger.</li>
<li><b>Alle auf einmal</b>: Enthält ein Link mehrere Bilder, steht oben auf der Seite
<b>„Alle N Bilder herunterladen"</b> — ein ZIP in voller Auflösung. Sehr große Sammlungen
werden bei 500 MB abgeschnitten; im Paket liegt dann ein Hinweis dazu.</li>
<li><b>Sicher bleiben</b>: Jeder Link läuft von selbst ab (Standard 30 Tage), lässt sich jederzeit
<b>abschalten</b> und auf Wunsch mit einem <b>Zugangswort</b> schützen. Das Wort schickst du dann
getrennt vom Link — sonst nützt es nichts.</li>
+3
View File
@@ -21,6 +21,9 @@ import Base from '../layouts/Base.astro';
änderbar), lässt sich jederzeit <b>abschalten</b> und wieder freigeben, auf Wunsch mit einem
<b>Zugangswort</b> schützen, und Herunterladen kann man ganz sperren. Suchmaschinen bekommen die
Seiten nie zu sehen. Bilder aus privaten Sitzungen lassen sich gar nicht teilen.</li>
<li><b>Alle Bilder auf einmal:</b> Bei mehreren Bildern steht über der Seite ein Knopf
<b>„Alle N Bilder herunterladen"</b> — ein ZIP in voller Auflösung. Bei zwanzig Bildern
musste der Empfänger vorher zwanzigmal tippen.</li>
<li><b>Übersicht unter <a href="/teilen">Geteilte Links</a>:</b> Aufrufe, Downloads und die Zahl der
Besuchenden je Link. Festgehalten wird <b>wann</b> und mit welcher Art Gerät geöffnet wurde —
nicht <b>wer</b>. Nach 90 Tagen wird das gelöscht.</li>
+6
View File
@@ -132,6 +132,12 @@ Ein Bild oder eine Sammlung unter \`/s/<slug>\` zugänglich machen — der Empf
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 /api/s/<slug>/zip\` — **alle** Bilder des Links als ZIP (voller Auflösung).
Bewusst GET, damit es ein schlichter Link ohne JavaScript ist. Achtet auf Download-Sperre
(403) und Zugangswort (401). Grenzen: 200 Dateien, 500 MB entpackt (danach schließt das
Archiv mit einer \`HINWEIS.txt\`), 5 Pakete je Link und Adresse in 10 Minuten. Wird als
**ein** Download gezählt. Es wird eine Datei nach der anderen gelesen und weitergereicht,
nicht alles auf einmal in den Speicher.
- \`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.