Dokumentation und Aenderungsliste fuer rc7
docs/web-ui.md beschreibt jetzt das Preset samt der drei begruendeten Abweichungen, die Sitzung mit ihren zwei Uhren und die Fehlergrenze. Dazu zwei neue Grenzen: Geist Mono wird nicht mitgeliefert, und die Suche im Ereignisprotokoll filtert weiterhin im Browser. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
fef0bd88f7
commit
cd4350d831
48
CHANGELOG.md
48
CHANGELOG.md
@ -1,5 +1,53 @@
|
||||
# Änderungen
|
||||
|
||||
## V1 — Release Candidate 7, 18. August 2026
|
||||
|
||||
Behebt einen Absturz, macht die Sitzung brauchbar und stellt das Aussehen um.
|
||||
|
||||
### Behoben
|
||||
|
||||
- **`/retention` zeigte einen schwarzen Bildschirm.** `GET /retention-policies`
|
||||
liefert ein Objekt `{policies, predefined}` — als einziger von zehn geprüften
|
||||
Listenendpunkten. Die Oberfläche behandelte es als Array; `map` gibt es auf
|
||||
einem Objekt nicht, React hängte den ganzen Baum aus. Der Regressionstest
|
||||
füttert jetzt die **echte** Antwortform; ein Test mit einem Array hätte den
|
||||
Fehler nie gefunden, und genau das war passiert.
|
||||
- **Jedes Neuladen führte zurück zur Anmeldung.** Die Tokens lagen nur im
|
||||
Arbeitsspeicher.
|
||||
- **Ein Fehler in einer Komponente schwärzte die ganze Konsole.** Jetzt sitzt
|
||||
eine Fehlergrenze um den Seiteninhalt: Menü und Kopfzeile bleiben stehen, der
|
||||
Fehlertext ist lesbar und kopierbar.
|
||||
|
||||
### Sitzung
|
||||
|
||||
Sie überlebt ein Neuladen und endet nach **30 Minuten** — gerechnet als frühere
|
||||
von zwei Grenzen: einer harten Obergrenze ab Anmeldung, die keine Interaktion
|
||||
verschiebt, und einer Untätigkeitsgrenze. Die verbleibende Zeit läuft neben
|
||||
„Abmelden" und wird unter fünf Minuten auffällig.
|
||||
|
||||
Sechs Tests halten die Grenzen fest, zwei davon durch Mutation als fangend
|
||||
bestätigt: Wer beim Vermerken einer Interaktion die Obergrenze mitverschiebt,
|
||||
macht aus „30 Minuten" ein „unbegrenzt, solange die Maus wackelt".
|
||||
|
||||
### Aussehen
|
||||
|
||||
Farben, Radien, Schatten und Schrift aus dem Preset `b5vnF8SMi`: violett als
|
||||
Handlungsfarbe, Radius 0, schattenlos, durchgehend Geist Mono. Die
|
||||
**Statusfarben bleiben** — das Preset kennt keine, und ohne sie ließe sich ein
|
||||
Teilfehler nicht von einem Erfolg unterscheiden.
|
||||
|
||||
Dazu **Umlaute auf allen Seiten** (vorher durchgehend ae/oe/ue/ss), **33
|
||||
Erläuterungen von Absätzen auf einen Satz gekürzt** und neue Module: acht
|
||||
Schnellzugriffe auf der Übersicht sowie sechs mitgelieferte
|
||||
Aufbewahrungsvorlagen als Kacheln — die lieferte der Server schon immer mit,
|
||||
die Oberfläche warf sie bisher weg.
|
||||
|
||||
### Unverändert offen
|
||||
|
||||
Windows-Dienst, systemd-Einheit des Agenten und der Proxmox-Bootmeilenstein sind
|
||||
gebaut, aber nie auf echter Hardware gefahren. Geist Mono wird nicht
|
||||
mitgeliefert; ohne die Schrift auf dem Gerät greift die System-Monospace.
|
||||
|
||||
## V1 — Release Candidate 6, 18. August 2026
|
||||
|
||||
**Die Weboberfläche ist eine vollständige Verwaltungskonsole geworden.**
|
||||
|
||||
@ -117,12 +117,42 @@ API-Token eines Proxmox-Verbunds wird nach dem Anlegen nie wieder ausgeliefert
|
||||
das ist kein Mangel, sondern der Grund, warum ein Lesezugriff auf die
|
||||
Konfiguration ungefährlich ist.
|
||||
|
||||
## Aussehen
|
||||
|
||||
Farben, Radien, Schatten und Schrift stammen aus dem Preset `b5vnF8SMi`
|
||||
(tweakcn): violett als Handlungsfarbe, **Radius 0**, schattenlos, durchgehend
|
||||
Geist Mono. Kantig und ruhig.
|
||||
|
||||
Drei Abweichungen, begründet in `styles/theme.css`:
|
||||
|
||||
- **Die Statusfarben bleiben.** Das Preset kennt nur `destructive` und fünf
|
||||
Diagrammfarben; §106 verlangt fünf Bedeutungen. Ohne sie ließe sich ein
|
||||
Teilfehler nicht von einem Erfolg unterscheiden.
|
||||
- **Das dunkle Thema hängt an `[data-theme='dark']`**, nicht an `.dark` — der
|
||||
Umschalter setzt dieses Attribut. `.dark` funktioniert zusätzlich.
|
||||
- **Geist Mono lädt nicht nach.** Sie steht zuerst im Stapel; liegt sie nicht
|
||||
auf dem Gerät, greift die System-Monospace. Eine Schrift von einem fremden
|
||||
Host zu holen verbietet die CSP — und ein Backup-Server, der für seine
|
||||
Oberfläche ins Internet greift, wäre auch ohne CSP falsch.
|
||||
|
||||
Eine Zuordnung ist die Stolperstelle: In shadcn ist `accent` die dezente
|
||||
Hover-Fläche und `primary` die Farbe der Handlung. Sie zu verwechseln macht jede
|
||||
Schaltfläche grau.
|
||||
|
||||
Die Benennung bleibt semantisch (`--surface-card`, `--text-primary`) statt
|
||||
shadcn-typisch: Die Zuordnung steht an genau einer Stelle, und ein Wechsel des
|
||||
Presets fasst keine einzige Komponente an.
|
||||
|
||||
## Technik
|
||||
|
||||
- **Tailwind v4 und Radix-Primitive** nach shadcn-Muster. Alles gebündelt; die
|
||||
CSP der Auslieferung lässt externe Ressourcen ohnehin nicht zu.
|
||||
- **Farben als CSS-Variablen**, damit dieselbe Komponente in beiden Themen
|
||||
funktioniert, ohne dass jede Klasse eine `dark:`-Variante braucht.
|
||||
- **Fehlergrenze um den Seiteninhalt.** Ohne sie reißt ein Fehler in einer
|
||||
Komponente den gesamten Baum ab; übrig bleibt eine leere Seite — im dunklen
|
||||
Thema ein schwarzer Bildschirm ohne Hinweis. Menü und Kopfzeile bleiben
|
||||
stehen, der Fehlertext ist lesbar.
|
||||
- **Dark Mode über ein Attribut am Wurzelelement**, nicht allein über die
|
||||
Medienabfrage: Eine Konsole, die nachts während einer Störung von selbst
|
||||
umschaltet, ist lästig. Das Attribut sitzt am Wurzelelement, weil ein Dialog im
|
||||
@ -138,6 +168,27 @@ Konfiguration ungefährlich ist.
|
||||
Fehlercode. Sie kennt den Einzelfall, und diese Genauigkeit ist mehr wert.
|
||||
- **Berechtigungen im Menü sind Anzeige, keine Sicherung.** Sie verhindern
|
||||
Sackgassen; geprüft wird auf dem Server.
|
||||
|
||||
### Sitzung
|
||||
|
||||
Sie überlebt ein Neuladen. Die Tokens liegen im `sessionStorage` des Tabs —
|
||||
nicht im `localStorage`, der ein Schließen des Browsers überstünde. Begrenzt
|
||||
wird sie durch zwei Uhren:
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| **Harte Obergrenze** | 30 Minuten ab Anmeldung, durch keine Interaktion verschiebbar |
|
||||
| **Untätigkeitsgrenze** | 30 Minuten ohne Eingabe |
|
||||
|
||||
Maßgeblich ist die frühere der beiden. Die verbleibende Zeit steht neben
|
||||
„Abmelden" und wird unter fünf Minuten auffällig.
|
||||
|
||||
Dass die Tokens überhaupt abgelegt werden, kehrt eine frühere Entscheidung um:
|
||||
Vorher lagen sie nur im Arbeitsspeicher, und jedes Neuladen warf den Betreiber
|
||||
auf die Anmeldemaske. Mitten in einer Störung ist das kein Sicherheitsgewinn,
|
||||
sondern ein Hindernis. Was den Rest trägt, ist nicht der Speicherort, sondern
|
||||
der **sofortige serverseitige Widerruf**: Die Tokens sind opak, kein JWT, und
|
||||
genau dafür wurden sie gewählt.
|
||||
- **Jede Fehleranzeige nennt `request_id`**, kopierbar. Ohne sie bleibt „es hat
|
||||
nicht funktioniert".
|
||||
|
||||
@ -171,6 +222,8 @@ Konsole macht:
|
||||
Listen.
|
||||
- **Die Suche im Ereignisprotokoll filtert im Browser** über die letzten 100
|
||||
Einträge. Bei größeren Beständen gehört sie auf den Server.
|
||||
- **Geist Mono wird nicht mitgeliefert.** Ohne die Schrift auf dem Gerät sieht
|
||||
die Oberfläche in der System-Monospace anders aus als im Preset.
|
||||
- **Kein Live-Fortschritt.** `/api/v1/events/stream` steht in `SYNCOVA_API.md`,
|
||||
ist aber **auch serverseitig nicht umgesetzt** — es fehlt nicht nur die
|
||||
Anbindung. Laufende Sicherungen und Wiederherstellungen aktualisieren sich
|
||||
|
||||
Loading…
Reference in New Issue
Block a user