From 44ad7dc6b32f3a51d920282fde8f788565bab3fc Mon Sep 17 00:00:00 2001 From: D4rkst3r Date: Tue, 11 Aug 2026 22:53:22 +0200 Subject: [PATCH] feat: Umbenennen, Fivemanage-Sprache, Freigabe-Links, sichtbare Zahlen UMBENENNEN gab es gar nicht -- verschieben ja, umbenennen nirgends. Jetzt fuer Datei und Ordner. Die WARNUNG ist dabei der eigentliche Teil: beim Verschieben wandert eine Datei, beim Umbenennen aendert sich IHRE ADRESSE, und die steht womoeglich in einem Skript, das niemand mehr im Kopf hat. Der Dialog zeigt deshalb die Abrufzahl und beim Ordner die Zahl der betroffenen Dateien, BEVOR gedrueckt wird -- eine Datei mit viertausend Abrufen umzubenennen ist etwas anderes als eine mit null, und der Dienst ist die einzige Stelle, die den Unterschied kennt. Am echten Fall geprueft, dem Kollisionsfund: items/coiloverss.png (hielt die +-Fassung) -> items/coiloverss-plus.png, alte Adresse 404, neue 200 mit 4375 B, Vorschau mitgewandert. Ordner: probe -> beispiele, 5 Dateien, alle Pfade in einer Transaktion umgeschrieben. Ein Fallstrick dabei: thumbPath haengt ".webp" an. Fuer eine Datei richtig, fuer einen ORDNER Unsinn -- der Vorschauordner heisst thumbs/vehicles und nicht thumbs/vehicles.webp. Dafuer gibt es jetzt moveFolder. DIE 93 KOLLISIONEN SIND ERLEDIGT. tools/kollisionen.ps1 rechnet dieselbe Zaehmung auf der Quelle nach und zeigt, was zusammenfaellt -- es aendert nichts, damit die Entscheidung auf Zahlen steht. Ergebnis: 91 von 93 sind dieselbe Datei zweimal (WEAPON_SMG.png und weapon_smg.png, byteweise gleich gross), da fehlte nichts. Echt verloren waren ZWEI, beide mit + im Namen. Beide nachgeholt. FIVEMANAGE-SPRACHE. POST /api/image|video|audio (v1) und POST /api/v3/file (v3), Schluessel nackt im Authorization-Kopf. Auf einem laufenden Server stecken die Fivemanage-Aufrufe in einem Dutzend fremder Ressourcen; sie alle umzuschreiben tut niemand, und deshalb bliebe dieser Dienst ungenutzt daneben stehen. So ist der Umzug eine Zeile je Skript: die Adresse. Beide Formen sind AUS ECHTEM CODE abgelesen und nicht geraten -- fivemanage/sdk fuer v3, Awleks/Devm-Camera fuer den aelteren Weg ueber screenshot-basic. Gemessen: v1 -> {url,id,path}, v3 -> {status:"ok",data:{id,url}}, ohne Schluessel 401, ein Video an /api/image -> 415 mit Grund. Dabei bin ich in eine Falle gelaufen, vor der im eigenen Repo ein Kommentar warnt: die Token-Wache hing an use('*'), und der Einhaengepunkt ist /api -- also galt sie auch fuer /api/dash daneben. Das Dashboard bekam 401 auf die ANMELDUNG. Wortwoertlich derselbe Fehler steht in upload.ts als Kommentar, weil er dort schon einmal passiert ist. Gemerkt hat es der Gegentest, nicht der Kopf. FREIGABE-LINKS. /s/ zeigt einen Ordner ohne Anmeldung. Was dabei ausdruecklich dabeisteht, in der Karte und in der Rueckfrage vor dem Zurueckziehen: FREIGEGEBEN WIRD DIE LISTE, NICHT DER INHALT. Die Dateien sind ohnehin oeffentlich; ein zurueckgezogener Link macht sie nicht wieder privat, er nimmt nur die Uebersicht weg. Ohne diesen Satz zieht jemand einen Link zurueck und glaubt, etwas sei verschwunden. Die Antwort ist abgemessen: Name, Groesse, Art, Adresse, Laenge. NICHT Hash, Token, Zeitpunkte, Abrufzahlen, IDs -- nichts davon braucht, wer einen Katalog ansieht, und jedes davon waere eine Auskunft ueber den Betrieb. Ein unbekannter Schluessel und ein zurueckgezogener geben dieselbe Antwort. ZAHLEN, DIE SCHON DA WAREN. Sortieren nach Abrufen und nach "zuletzt geholt"; die Kachel zeigt dann auch diese Zahl statt Groesse und Datum, denn nach etwas zu ordnen, das man nirgends sieht, ist eine Reihenfolge ohne Begruendung. Und je Token, was damit abgelegt wurde: media.token_id wird seit dem ersten Tag geschrieben und war NIRGENDS zu sehen. Gemessen: d4rk_photostudio haelt 810 Dateien / 99,5 MB, 3640 liegen ohne Token da. Co-Authored-By: Claude Opus 5 --- README.md | 16 +- ROADMAP.md | 58 ++++ docs/API.md | 52 +++ server/src/auth.ts | 16 +- server/src/db.ts | 34 ++ server/src/index.ts | 11 + server/src/routes/dash.ts | 233 ++++++++++++++ server/src/routes/fivemanage.ts | 337 ++++++++++++++++++++ server/src/routes/freigabe.ts | 83 +++++ server/src/storage.ts | 27 ++ server/ui/src/App.tsx | 13 + server/ui/src/api.ts | 47 ++- server/ui/src/components/Ansehen.tsx | 16 + server/ui/src/components/Bausteine.tsx | 14 +- server/ui/src/components/FreigabenKarte.tsx | 210 ++++++++++++ server/ui/src/components/Ordner.tsx | 42 ++- server/ui/src/components/Umbenennen.tsx | 182 +++++++++++ server/ui/src/pages/Einstellungen.tsx | 3 + server/ui/src/pages/Freigabe.tsx | 193 +++++++++++ server/ui/src/pages/Galerie.tsx | 63 +++- server/ui/src/pages/Tokens.tsx | 38 ++- tools/kollisionen.ps1 | 174 ++++++++++ 22 files changed, 1843 insertions(+), 19 deletions(-) create mode 100644 server/src/routes/fivemanage.ts create mode 100644 server/src/routes/freigabe.ts create mode 100644 server/ui/src/components/FreigabenKarte.tsx create mode 100644 server/ui/src/components/Umbenennen.tsx create mode 100644 server/ui/src/pages/Freigabe.tsx create mode 100644 tools/kollisionen.ps1 diff --git a/README.md b/README.md index d0258e7..cab2d3a 100644 --- a/README.md +++ b/README.md @@ -96,8 +96,22 @@ an einer Filterliste. Hier entsteht nie eine HTML-Zeichenkette — der Text wird zu React-Knoten, ein `