1. Manuelle Reservierungen (dhcp_manual_reservations) fuer Geraete, die
nicht als Client in dieser App gepflegt werden -- bewusst eine eigene,
explizite Aktion (MAC/IP/Name), damit kein externes Geraet unueberwacht
automatisch eine feste IP bekommt. _dhcp_reservation_candidates fuehrt
automatische (aus devices) und manuelle Reservierungen jetzt zusammen,
case-insensitiv nach MAC dedupliziert (automatisch gewinnt bei Konflikt).
Automatische Reservierungen sind in der Tabelle nicht loeschbar
(Schloss-Symbol statt Button, sie entstehen/verschwinden mit den
Client-Stammdaten), manuelle schon. Live verifiziert: Hinzufuegen,
doppelte MAC ablehnen, ungueltige MAC ablehnen, generierte Kea-Config
mit gemischten Auto-/manuellen Reservierungen besteht kea-dhcp4 -t.
2. Standard-DHCP-Optionen um 10 weitere verifizierte Optionen erweitert
(u.a. host-name/12 -- Kea-Name mit Bindestrich, NICHT "hostname", live
gegen echtes Kea geprueft) -- jetzt 57 insgesamt. Standard-Optionen sind
nicht mehr loeschbar (Backend lehnt es ab, UI zeigt ein Schloss-Symbol
statt Loeschen-Button) -- vorher liess sich eine vorbefuellte Options-
Definition versehentlich entfernen.
3. Options-Tabellen (global UND pro Reservierung) zeigen jetzt nur noch
tatsaechlich genutzte Options -- eigene immer, Standard-Optionen nur mit
gesetztem Wert. Weitere Standard-Optionen kommen ueber ein Dropdown
"+ Option hinzufuegen" dazu statt permanent alle 57 als leere Felder zu
zeigen. Das neu eingeblendete Feld wird automatisch in den sichtbaren
Bereich gescrollt und fokussiert (bei bis zu 57 moeglichen Optionen kann
das Feld sonst weit unterhalb des sichtbaren Modal-Ausschnitts liegen
und es wirkt so, als waere nichts passiert).
4. Lease-Countdown-Fix: die Ablaufzeit wird jetzt explizit als UTC
ausgewiesen (Kea arbeitet intern in UTC-Epoch) und zusaetzlich als live
tickender Countdown angezeigt (gleiches Prinzip wie der bestehende
"Naechste Pruefung"-Timer). Vorher wirkte eine reine Absolutzeit auf der
nicht selbst aktualisierenden Seite bei den kurzen Standard-Lease-Zeiten
(600s) schnell "schon abgelaufen", sobald etwas Zeit vergangen war, bis
man tatsaechlich hinschaut -- live im echten Betrieb genau als dieses
Missverstaendnis beobachtet und anhand der rohen Kea-CSV verifiziert,
dass die richtige Spalte (expire) korrekt gelesen wird.
5. UI-Feinschliff: "In Datei schreiben" bei den Reservierungen heisst jetzt
"Speichern" und ist der primaere (orange) Button, "Reservierung
hinzufuegen" sekundaer -- das Hinzufuegen legt nur einen Datensatz an,
erst "Speichern" schreibt die tatsaechlich wirksame Kea-Config.
Alles live auf der Test-VM deployt und verifiziert (Playwright fuer die
Dropdown-Sichtbarkeit/Fokus-Interaktion, curl fuer die Backend-Validierung,
kea-dhcp4 -t fuer die generierte Konfiguration), keine Fehler im
journalctl-Log.