Commit Graph
4 Commits
Author SHA1 Message Date
till 28a6049548 Papierkorb statt endgültigem Löschen, und Zugriffsregeln für jede Bild-Route
Löschen in der Bibliothek entfernte Zeile und Ergebnisdatei sofort. Ein
Fehlklick, und ein Ergebnis war weg — samt dem, was es gekostet hat.
Jetzt landet es im Papierkorb:

- weg aus Bibliothek, Freigabelinks, ZIPs, Auslieferung, NAS-Spiegel,
  Druckquellen und Druckverlauf; beim Wiederherstellen unverändert zurück
- „Rückgängig" im Hinweis, Papierkorb-Ansicht mit Resttagen,
  Wiederherstellen, endgültig löschen, leeren
- die Wartung räumt nach settings.trash_days (Standard 30, Admin ->
  Speicher) endgültig ab; 0 schaltet den Papierkorb aus
- ein Bild, das noch in der Warteschlange wartet, wird nicht mehr
  erzeugt (und nicht bezahlt)
- endgültig gelöscht wird nur, was kein anderes Bild mehr nutzt —
  Alternativen teilen ihre Quelle mit dem Original, auch Kombinieren-
  Quellen in source_paths (jsonb)

Beim Durchgehen jeder Abfrage auf items fiel auf: Nur die Datei-Route
prüfte, wer ein Bild sehen darf. Umbenennen, Löschen, Wiederholen,
Alternative, Weiterbearbeiten und die Auswahl-ZIP nahmen jede Kennung von
jedem Konto. Jetzt gilt eine Regel (src/lib/itemaccess.ts): sehen, was
einem gehört oder in der geteilten Bibliothek liegt, ändern nur Eigenes;
Admins alles. Für Till ändert sich nichts. Lea kann fremde Bilder in der
geteilten Bibliothek weiter sehen, aber nicht mehr löschen.

Dazu Favicon und Homebildschirm-Symbol, Hilfe und Changelog-Seite.

Geprüft gegen echtes Postgres mit zwei Konten und echten Dateien:
35 Ende-zu-Ende-Prüfungen bestanden, Oberfläche im Browser (Löschen,
Rückgängig, Papierkorb, Wiederherstellen, 390 px ohne Querlauf).
128 Tests, Typprüfung 0 Fehler.
2026-10-10 06:38:42 +00:00
till ee887cc29c Abhängigkeiten aktuell, und die Typprüfung ist zum ersten Mal grün
npm audit meldete sieben Lücken (sechs hoch), darunter nodemailer und
basic-ftp, die nur mit dem nächsten Hauptversionssprung behoben sind.
Jetzt: 0.

- nodemailer 10, basic-ftp 6, argon2 0.45, ssh2-sftp-client 12,
  @astrojs/react 7: keine Codeänderung. Alte argon2-Hashes werden weiter
  erkannt (gegengeprüft: Hash aus 0.41, Prüfung mit 0.45).
- archiver 8 kennt keinen Default-Export mehr, nur noch `ZipArchive`.
  Hätte sich erst beim ersten ZIP-Download gezeigt.
- basic-ftp 6 verbindet die Datenleitung nicht mehr still mit einer
  anderen Adresse, wenn ein FTP-Server hinter NAT seine interne IP meldet.
  Das ist Absicht der Bibliothek. Nach dem Deploy jedes FTPS-Ziel einmal
  testen.
- pg-boss bleibt auf 10: 12 kann das bestehende Warteschlangen-Schema
  nicht migrieren. Eigener Schritt mit Wartungsfenster.

`npm run typecheck` gibt es jetzt, und es meldet 0 statt 17 Fehler. Einer
davon war ein echter Fehler: Der Druckbogen aus dem Telegram-Bot bekam
seine Fußzeile als String statt als Objekt und kam deshalb ohne jede
Fußzeile — also ohne den Hinweis, bei 100 % zu drucken.
2026-10-10 06:15:05 +00:00
tillandClaude Opus 5 545f9ae909 Bibliothek: eindeutige Namen auch für Auswahl-ZIPs
Dieselbe Schwäche eine Ebene weiter: Jedes ZIP aus der Bibliothek hieß
`klarbild_2026-09-01.zip`, zwei verschiedene Auswahlen am selben Tag im selben
Ordner überschrieben sich also. Jetzt
`2026-09-01_143207_auswahl-12-bilder_a3f9.zip`, und der Client liest den Namen
aus dem Kopf statt einen eigenen zu bauen.

124 Tests grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BNhLunz586g6DeYMa7Qsd1
2026-09-01 15:39:39 +00:00
tillandClaude Opus 4.8 3bfeadbaa0 feat: bulk ZIP download, bulk move-to-folder, folder rename
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XNQ8ghPfzAfsyVYd6HgFb6
2026-07-23 20:23:03 +00:00