FileBrowser 1177 -> 712 Zeilen, PdfViewer 1193 -> 848. Herausgeloest
wurde, was fuer sich zusammenhaengt:
hooks/useUploads Warteschlange, Ordnerbaeume, Ablage
components/files/ Werkzeugleiste, Dialoge, Menues, Reihenfolge
components/pdf/ Werkzeugleiste, Zoomstufen, Seitenmasse, Suche
src/format.ts formatBytes -- lag in einer *Seite*
Dabei gefundene und behobene Fehler:
* Ordner-Upload haengte Fortschritt und Fehler an die falsche Zeile,
sobald in einem Ordner Dateien *nach* einem Unterordner lagen: Die
Zeilen standen in Fundreihenfolge, hochgeladen wurde nach Ordnern
gruppiert, und ein mitlaufender Zaehler verband beides falsch.
* formatBytes gab es zweimal, zeichengleich (Dateibrowser + Admin).
* Beide Sortierungen liefen bei *jedem* Bild -- der Rahmen beim Ziehen
ist eines je Mausbewegung. Jetzt gemerkt.
* Die Suche im PDF las bei jedem Tastendruck den Text aller Seiten neu.
Jetzt 160 ms Wartezeit; "Searching..." bleibt auch bei einem Fehler
nicht mehr stehen.
* Seitenmasse werden in Buendeln statt streng nacheinander geholt.
Pruefinfrastruktur: vitest stand auf 'jsdom', ohne dass jsdom je
installiert war -- "npm test" brach ab, bevor es etwas ausfuehrte. Jetzt
'node' und 32 Tests fuer die herausgeloesten reinen Funktionen. Das
Abbild baut nur noch mit gruenen Tests.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>