Lesezeichen, Import/Export, Favoriten-Sortierung im Frontend, Favicon-Fix, sortierbare Spalten, Kategorie-Dropdown

This commit is contained in:
2026-07-19 21:56:25 +02:00
parent 31e17ff77b
commit dc91a9aba9
24 changed files with 1655 additions and 180 deletions

View File

@@ -232,3 +232,43 @@ komplett offline funktionierende Variante ersetzt.
> Test mit echtem nginx: `/ca.crt` per HTTP heruntergeladen und **damit ohne
> `-k`-Flag** eine echte HTTPS-Verbindung erfolgreich validiert simuliert
> exakt das Verhalten eines Geräts nach CA-Import.
## Dritte Feature-Runde: Lesezeichen, Import/Export, Favoriten im Frontend
- **Lesezeichen als eigene Entität** (neue Tabelle, eigenes Repository,
eigene Routen unter `/api/bookmarks`) nicht an ein Gerät gebunden, im
Unterschied zu Diensten. Titel + Favicon werden beim Anlegen automatisch
geladen (Wiederverwendung der Scanner-HTTP-Logik). Erscheinen zusammen mit
Diensten in der Suche (generisches `rankServices<T extends Rankable>` in
`packages/shared`), aber als eigene Favoriten-Gruppe auf der Startseite.
- **Import/Export für Dienste**: CSV, XLSX (echtes Excel, via `xlsx`-Paket)
und JSON, beide Richtungen. Import legt ausschließlich neue Dienste an
(Abgleich über Gerät+Port), bestehende werden nie überschrieben oder
verdoppelt; fehlende Geräte werden bei Bedarf automatisch angelegt.
- **Scan-Ergebnis zeigt jetzt die tatsächlichen Portnummern**, nicht nur
deren Anzahl (`ports: number[]` in der API-Antwort, Anzeige in der
Geräte-Tabelle).
- **Favoriten direkt im Frontend per Drag & Drop sortierbar** (nicht mehr
nur im Adminbereich), getrennte Gruppen für Dienste und Lesezeichen.
- **Favicon-Kontrast-Fix**: neue `Favicon`-Komponente mit immer hellem
Hintergrund, damit dunkle/schwarze Favicons nicht mit dem Dark-Mode-
Hintergrund verschmelzen.
- **Kategorie-Dropdown** im Bearbeiten-Formular (Dienste + Lesezeichen)
mit bestehenden Kategorien plus "+ Neue Kategorie …"-Option, statt freiem
Textfeld.
- **Sortierbare Spaltenköpfe** in der Dienste-Tabelle (Name, Kategorie,
Alias, Port, Protokoll). Bei aktiver Spaltensortierung ist Drag & Drop
vorübergehend deaktiviert (macht in dem Moment keinen Sinn), ein Klick auf
"zurück zur manuellen Reihenfolge" stellt den Drag-&-Drop-Modus wieder her.
> Verifiziert (Backend, alles per echtem HTTP-Roundtrip getestet): Lesezeichen
> anlegen mit automatischem Titel-/Favicon-Abruf gegen einen echten
> Testserver, automatisches Anlegen der Kategorie; CSV-, XLSX- und
> JSON-Export erzeugt (XLSX als `file`-Befehl gegengeprüft: "Microsoft Excel
> 2007+"); Import in allen drei Formaten getestet, insbesondere der
> kritische Fall "bestehender Dienst bleibt unverändert, neuer wird
> angelegt, keine Duplikate"; Bookmark- und Service-Reorder-Endpunkte
> getestet. Frontend: vollständiger `pnpm build` (inkl. `tsc --noEmit`)
> erfolgreich die eigentliche UI-Interaktion (Drag & Drop, Dropdown-
> Verhalten) konnte mangels Browser in dieser Umgebung nicht geklickt
> werden, nur durch Code-Review abgesichert.