Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
8.7 KiB
context, phase, task, total_tasks, status, last_updated
| context | phase | task | total_tasks | status | last_updated |
|---|---|---|---|---|---|
| default | null | null | null | paused | 2026-09-23T13:15:42.473Z |
<current_state>
Kein laufender Meilenstein; die Arbeit laeuft als Quick-Tasks. Version 1.3.1 ist am
23.09. freigegeben (Tag v1.3.1 auf ad004b2, Abbilder live + v1.3.1, Gitea-Release
mit beiden Desktop-Paketen).
14 Commits liegen lokal und sind NICHT gepusht. Arbeitsbaum sauber. Der lokale Stack laeuft mit dem Proxmox-Stand (web, api, db neu gebaut).
Unterbrochen wurde NICHT mitten in einer Aufgabe: das Proxmox-Modul ist vollstaendig gebaut, geprueft und die drei Befunde aus dem Rundgang sind behoben. Offen ist EIN Befund aus der Abnahme (siehe Restarbeit) und der Push. </current_state>
<completed_work>
Diese Sitzung (22.09. abends bis 23.09. nachmittags):
- quick-260922-vdk — Dashboard-Raster misst seine Breite auch aus dem Leerzustand heraus.
Meldung kam aus dem Linux-Client; Ursache war ein
useEffect(..., []), das den ResizeObserver nie anhaengte, wenn das Dashboard beim Einhaengen leer war. Breite blieb auf dem Startwert 1200 -> rechts ein toter Streifen. Im echten AppImage gegengemessen. - Platte aufgeraeumt — 3,6 GB frei -> 66 GB. Nur Wegwerf-Sachen (Docker-Build-Cache 27,9 GB, 58 verwaiste Image-Schichten 43,3 GB, verwaiste CI-Volumes).
- Freigabe 1.3.1 — CHANGELOG abgeschlossen,
livevorgezogen, Tag gepusht. - quick-260923-ad9 — Dashboard-Reiter: mehrere Dashboards je Benutzer, per Ziehen sortierbar, der erste ist der Standard. Bestand wandert per Migration in den ersten Reiter.
- quick-260923-dhh — Proxmox-Modul (PVE/PBS/PMG), nur beobachten, sieben Aufgaben.
- quick-260923-ku6 — drei Befunde aus dem Proxmox-Rundgang behoben.
Jeder Punkt wurde im Browser bzw. im echten Client geprueft; die Protokolle stehen in den
jeweiligen SUMMARY.md unter .planning/quick/.
</completed_work>
<remaining_work>
- Offener Befund der Abnahme (zuerst):
sumOrNullinapps/api/src/proxmox/proxmox-normalize.tsliefert bei EINEM fehlenden Teilwert die halbe Summe stattnull— also einen stillen Falschwert genau dort, wo die Feldnamen am schlechtesten belegt sind (PMG, Annahme A5). Ein Test fuer „nur eine Haelfte vorhanden“ fehlt bisher ganz. - Kleinbefund: „Jetzt aktualisieren“ auf der Proxmox-Modulseite wird allen mit Modulzugriff gezeigt; der Endpunkt verlangt aber ADMIN/SUPER_ADMIN. Bei anderen passiert beim Klick nichts.
- Push (14 Commits) und CI abwarten.
- Proxmox-Dashboard-Kachel als eigener kleiner Auftrag ueber den Weg aus 260922-m1h
(
WIDGET_TYPES+WIDGET_MODULE_SLUGS+registerWidget). - Freigabe 1.4.0, sobald Reiter und Proxmox auf alpha bestaetigt sind (neue Funktionen, also Minor, nicht Patch). </remaining_work>
<decisions_made>
- Proxmox: nur beobachten. Einzige nicht-lesende Anfrage ist die Ticket-Anmeldung; sie liegt
an genau einer Stelle und
proxmox-nur-lesen.spec.tszaehlt sie gegen eine benannte Konstante. - Keine SSRF-Adresssperre — Proxmox steht per Definition im internen Netz, eine Sperre wuerde jede echte Adresse blockieren. Schutz ist, dass nur ein Administrator Adressen eintraegt.
- PMG nur Benutzer/Passwort (Recherche A1, Forenbeleg). Faellt beim Test auf, wenn es doch Token kann — dann nachruesten.
- Zertifikats-Ausnahme je Serverzeile, niemals global.
- Dashboard-Reiter: der erste Reiter ist der Standard; „als Favorit festlegen“ heisst nach vorn ziehen. Kein zusaetzliches Kennzeichen.
- Dashboard-Raster: belegter Platz bleibt gesperrt, nichts weicht aus. Nutzeransage 22.09.
- KEIN Umbau der Proxmox-Modulseite. Der Nutzer hat den Wunsch nach mehr Detailgrad und Statusfarben am 23.09. ausdruecklich zurueckgezogen („vergiss das letzte, was ich geschrieben habe“). Nicht von selbst wieder aufgreifen. </decisions_made>
Required Reading (in order)
.planning/quick/260923-dhh-proxmox-modul-pve-pbs-und-pmg-anbinden-n/260923-dhh-VERIFICATION.md— der offene Befund steht dort mit Reproduktion..planning/quick/260923-dhh-.../260923-dhh-RESEARCH.md— Annahmen-Log A1…A5, die einzige Stelle, an der steht, was an der Proxmox-Anbindung belegt und was abgeleitet ist..planning/quick/260923-ku6-.../260923-ku6-SUMMARY.md— die Merge-Regel des Verbindungstests (Formular vs. gespeichert, Geheimnisfelder)..planning/STATE.md— Abschnitt „Current Position“ und die letzten Zeilen der Quick-Tabelle.
Critical Anti-Patterns (do NOT repeat these)
- [ANTI-PATTERN]: Im Desktop-Client gegen
getBoundingClientRect()/getComputedStyle()messen → 260922-vdk: die Werte blieben auf dem ALTEN Stand, obwohlstyle.widthbereits richtig war. WebKitGTK friert die Animationsuhr ein, wenn das Fenster im Hintergrund liegt, und diewidth-Uebergangsanimation bleibt stehen. Mitigation: im Client gegen die GESETZTEN Werte messen (style.width,style.transform) oder gegen die React-Eigenschaften aus dem Fiber. - [ANTI-PATTERN]: Ein Bestaetigungsfenster nur ueber
[role="dialog"]suchen → der Loeschen-Dialog der Reiter traegtrole="alertdialog"; die Pruefung sah „es passiert nichts“, obwohl das Fenster offen war. Mitigation: auf beide Rollen abfragen. - [ANTI-PATTERN]: Nach dem Tag sofort auf dem Server
pullausfuehren → eine Freigabe loest DREI Pipelines aus; faellt der Tag-Lauf um (bei 1.3.1: ein flackernder Test mit 5-Sekunden-Grenze), werden Abbild-Bau und Desktop-Pakete UEBERSPRUNGEN, undpullholt still den alten Stand. Mitigation: erst pruefen, dass die Abbilderlive/betaeinen neuen Zeitstempel tragen, dann ziehen. Todo zum flackernden Test liegt unter.planning/todos/pending/. - [ANTI-PATTERN]: Eine Vermutung ueber die Ursache aus einem Bildausschnitt ableiten → beim Raster-Fehler fuehrte der erste Verdacht („eine Nachbarkachel blockiert“) in die Irre; erst das volle Fenster und das Rueckrechnen der Spaltenbreite (51,5 px, letzte Spalte 13) haben die echte Ursache gezeigt. Mitigation: bei Bildbefunden das GANZE Fenster anfordern, nicht den Ausschnitt, und die Geometrie nachrechnen.
Infrastructure State
- Lokaler Stack:
docker composemit web, api, db, gebaut auf dem Proxmox-Stand.upallein baut NICHT neu. DB ohne Host-Port — Prisma vom Host ueber die Container-IP (docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tessera-ctl-db-1,tessera:tessera_dev). - Proxmox-Nachbau: Node-Skript mit selbstsigniertem Zertifikat im Scratchpad
(
scratchpad/fake-proxmox.mjs, Port 8006, aus dem api-Container ueber172.21.0.1erreichbar). Laeuft noch;/tmpueberlebt keinen Neustart, das Skript ist aber schnell neu gebaut. Endpunkte:/api2/json/cluster/resources,/status/datastore-usage,/admin/datastore/{name}/snapshots,/statistics/mail,POST /access/ticket. - Lokale Testdaten (duerfen weg): zwei Proxmox-Server in der DB („Nachbau PVE“ und „Nachbau kaputth“, letzterer absichtlich unerreichbar), Proxmox im Marktplatz aktiviert, im Admin-Dashboard ein Reiter „Dashboard“ mit 5 Kacheln.
- alpha (
alpha.tessera.ctl.de): Stand 1.3.1-Beta; Reiter und Proxmox fehlen dort noch, weil nicht gepusht. - Live (
tessera.ctl.de): 1.3.1 freigegeben; ob der Server sie wirklich zieht, ist offen.
<next_action>
Start with: den offenen Befund der Abnahme beheben — sumOrNull in
apps/api/src/proxmox/proxmox-normalize.ts muss null liefern, sobald EIN Teilwert fehlt
(heute (a ?? 0) + (b ?? 0)), plus ein Test fuer „nur eine Haelfte vorhanden“. Gleich mit
erledigen: „Jetzt aktualisieren“ nur fuer ADMIN/SUPER_ADMIN anzeigen. Danach Tore laufen lassen,
committen, die 14 Commits pushen und die CI abwarten.
</next_action>