Bugfixes (Dark Mode, Dropdown-Kontrast, IP-Suche), Lesezeichen-Ausbau (Farbe, Beschreibung, Favicon), Zuletzt-besucht, Spaeter-lesen, kombinierter Import-Export, Scanner-Reconciliation, Admin-Ueberarbeitung

This commit is contained in:
2026-07-20 07:52:38 +02:00
parent dc91a9aba9
commit 96cf29fef4
37 changed files with 1988 additions and 494 deletions

View File

@@ -272,3 +272,70 @@ komplett offline funktionierende Variante ersetzt.
> erfolgreich die eigentliche UI-Interaktion (Drag & Drop, Dropdown-
> Verhalten) konnte mangels Browser in dieser Umgebung nicht geklickt
> werden, nur durch Code-Review abgesichert.
## Vierte Feature-Runde: Bugfixes, Lesezeichen-Ausbau, Admin-Überarbeitung
**Bugfixes:**
- Dark-Mode wird jetzt in `main.tsx` sofort beim Start angewendet (vorher nur
wenn eine Seite `useTheme()` aufrief) behebt hellen Start bei Direktlink
auf `/admin/...`
- `color-scheme`-CSS-Property gesetzt native `<select>`-Dropdowns folgen
jetzt automatisch dem Theme (vorher weiße Schrift auf weißem Grund im Dark
Mode möglich)
- Suche findet jetzt auch Teiltreffer im Hostnamen (z. B. "47" findet
"192.168.1.47"), zusätzliche Ranking-Stufe in `rankService`
- `packages/ui` hatte keine DOM-Typen in der TS-Konfiguration (seit Commit 6)
`navigator.clipboard` für den neuen Copy-Button hat das aufgedeckt, jetzt
behoben
**Neue Backend-Entitäten:**
- Kategorie-Farbe (`color`-Spalte, Migration für Bestandsinstallationen)
- "Zuletzt besucht" (`recent_visits`-Tabelle, per Einstellung konfigurierbare
Anzahl)
- Key-Value-Einstellungen (`app_settings`-Tabelle)
- "Später lesen" (`read_later`-Tabelle, inkl. "zu Lesezeichen befördern")
- Lesezeichen: automatische Beschreibungs-Extraktion (Meta-Tag), Favicon jetzt
editierbar
- Kombinierter Geräte+Dienste-Import/Export (`/api/transfer/*`, ersetzt die
bisherigen `/api/services/export|import`) mit `type`-Spalte pro Zeile
- Scan-Reconciliation: `/api/scan/devices/:id` und `/api/scan/fritzbox` geben
jetzt zusätzlich `staleServices`/`staleDevices` zurück (Einträge, die beim
letzten Scan nicht mehr gefunden wurden) nichts wird automatisch
gelöscht, nur zur manuellen Durchsicht zurückgegeben
- CA-Zertifikat unterstützt jetzt zwei Hostnamen gleichzeitig
(`LAUNCHPAD_HOST` + optional `LAUNCHPAD_EXTRA_HOST`, z. B. IP + LXC-Name)
**Frontend Startseite:**
- Nur noch die Trefferliste scrollt auf Mobilgeräten (`h-dvh` + Flexbox-
Scroll-Trick), nicht mehr die ganze Seite
- Copy-Icon pro Suchtreffer (Zwischenablage)
- Kompaktere Kopfzeile, Favoriten jetzt reine Icon-Chips (Name als Tooltip)
- Favicons: heller Hintergrund + automatischer Fallback bei Ladefehlern
- Kategorie-Farbe als Punkt (Suche) bzw. Ring (Favoriten)
- "Später lesen"-Eingabefeld + "Zuletzt besucht"-Leiste unterhalb der Suche
- Favoriten direkt hier per Drag & Drop sortierbar (vorher nur im
Adminbereich)
**Frontend Adminbereich:**
- Einstellungen: CA-Download-Link, Import/Export (inkl. aufklappbarer
Format-Anleitung), Anzahl-Regler für "Zuletzt besucht"
- Dienste: Favicon in der Tabelle, neue MAC-Spalte (vom Gerät abgeleitet),
eigene sortierbare Host/IP-Spalte
- Geräte: MAC/Hersteller/Modell editierbar, alle Spalten sortierbar,
aufklappbare Dienste-Liste pro Gerät, "zuletzt gesehen"-Zeitstempel,
Stale-Service-Review direkt nach einem Scan (Behalten/Entfernen)
- Lesezeichen: sortierbare Spalten (gleiches Muster wie Dienste)
- Scanner: Stale-Device-Review nach FritzBox-Scan (Behalten/Löschen)
- Dashboard: Favoriten getrennt nach Diensten/Lesezeichen, neue
Lesezeichen-Kachel, "🏠 Startseite"-Schnellzugriff
> Verifiziert: vollständiger `pnpm build` (`tsc --noEmit` + `vite build`)
> nach jedem größeren Schritt erfolgreich; alle neuen Backend-Endpunkte
> (Kategorie-Farbe inkl. Validierung, Lesezeichen mit Auto-Beschreibung,
> Einstellungen, Zuletzt-besucht, Später-lesen inkl. Beförderung zu
> Lesezeichen, kombinierter Import/Export inkl. Idempotenz, Scan-
> Reconciliation) per echtem HTTP-Roundtrip getestet; finaler Smoke-Test
> bestätigt alle Routen nach dem vollständigen Umbau erreichbar. Die
> eigentliche UI-Interaktion (Klicks, Drag & Drop, Formulare) konnte mangels
> Browser in dieser Umgebung nicht getestet werden nur Build-Erfolg und
> Code-Review.