docs(quick-260916-dyv): Nachbesserung abgeschlossen, verifiziert und im Browser bewiesen (Rechner-Minimum korrigiert) — Zusammenfassung, Verifikation, Aktenstand, Ledger #39 fixed
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
This commit is contained in:
+10
-9
@@ -4,11 +4,11 @@ milestone: v1.2
|
||||
current_phase: 17
|
||||
current_phase_name: eigene-ausschreibungs-quellen-je-nutzer
|
||||
status: verified
|
||||
stopped_at: "2026-09-15: v1.0.0 live auf tessera.ctl.de (neuer Server, IMAGE_TAG=live), alpha = beta; kein Feedback bisher; nichts offen; Mandantenfaehigkeit ruht; Schalter AUS"
|
||||
last_updated: "2026-09-15T14:25:42.000Z"
|
||||
last_activity: 2026-09-14
|
||||
stopped_at: Quick 260916-dyv ausgefuehrt (3/3 Tasks, CI 353 success) — Browser-Nachweis durch Orchestrator offen
|
||||
last_updated: "2026-09-16T08:48:51.898Z"
|
||||
last_activity: 2026-09-16
|
||||
last_activity_desc: Quick 260910-jab — drei zu kurz greifende RLS-Regeln geschlossen (GroupMembership beide Seiten, ModuleGrant beide Ziele, TenderRssFeedSource Lese-/Schreibsplit), listForUser gebunden, Aktenstand kohaerent
|
||||
state_head: 77117de3d0f1bb82df7b659f46fe26244ca6f164
|
||||
state_head: cf97b5b64b48ac08cb410966e98cf532f600681d
|
||||
progress:
|
||||
total_phases: 17
|
||||
completed_phases: 15
|
||||
@@ -31,7 +31,7 @@ See: .planning/PROJECT.md (updated 2026-07-17)
|
||||
Phase: 17 (eigene-ausschreibungs-quellen-je-nutzer) — VERIFIED / passed
|
||||
Plan: 3 of 3
|
||||
Status: Phase abgeschlossen und im Browser gegengeprueft — bereit fuer /gsd-ship
|
||||
Last activity: 2026-09-16 - Dashboard feineres Raster/Skalierung/halbe Abstaende (260916-bwo, verifiziert 8/8 + Browser). Naechster Schritt: CHANGELOG + Seite "Was ist neu" + Gitea-Release je Freigabe
|
||||
Last activity: 2026-09-16 - Dashboard-Nachbesserung (260916-dyv: Mindestgroessen, Rand oben 28 px, Drag & Drop) nach 260916-bwo; naechster Schritt: CHANGELOG + "Was ist neu" + Gitea-Release (260916-dcz, Plan df16f46)
|
||||
|
||||
Progress: [██████████] 100%
|
||||
|
||||
@@ -408,6 +408,7 @@ Gerettet aus `.continue-here.md`. Relevant fuer die noch offenen Live-Tests.
|
||||
| 260914-ku1 | **Zwei Auslieferungskanaele und Versionsstempel.** `main` = Beta (Etiketten `beta` + `latest`), Tag `vX.Y.Z` = Live (Etiketten `live` + `vX.Y.Z`), Zweig `live` ohne Tag nur geprueft — Entscheidung in `.gitea/scripts/publish-images.sh` (`--print-plan`), CI-Trigger `branches: [main, live]` + `tags: [v*]`, `fetch-depth: 0`. Versionsstempel `APP_VERSION/APP_CHANNEL/APP_COMMIT/APP_BUILD_TIME` als Build-Args in beide Dockerfiles (web zur Bauzeit als `NEXT_PUBLIC_APP_*`, api als Laufzeit-ENV; Vorgabe `dev`). `GET /health/version` liefert name/version/channel/commit/buildTime, Startlog `Tessera API vX (channel) commit`. Web: `app-version.ts`, `AppVersionBadge` in `sidebar.tsx` (sidebar-footer.tsx ist seit ba02b25 toter Code). `docker-compose.prod.yml`: `image: ...:${IMAGE_TAG:-beta}`. Betriebshandbuch Kapitel 9 (Zwei Kanaele, Freigabe, Hotfix ohne Datenbankaenderung, neuer Live-Server), ci-cd-setup.md auf gemessenen Stand. Falsifiziert: Build mit `v9.9.9-test live` -> Stempel in dist und Web-Bundle, ohne Args `dev`. Echter CI-Lauf 297 gruen (5:18 min), Abbilder `beta`/`latest` tragen `ea6aa99 beta`. Tests API 1054 -> 1060 / 64 -> 65 Dateien, Web 233 -> 243 / 38 -> 40, tsc 0, 20 Dateien gegen 6c19451. Offen: Zweig `live` + Tag `v1.0.0` nach dem Fehler-melden-Knopf anlegen; Handgriffe fuer den User (IMAGE_TAG je Server) im SUMMARY. Verifiziert 8/8, gepusht. | 2026-09-14 | cdb571c,9731501,ea6aa99 | [260914-ku1-zwei-auslieferungskanaele-beta-auf-main-](./quick/260914-ku1-zwei-auslieferungskanaele-beta-auf-main-/) |
|
||||
| 260914-m97 | **Fehler-melden-Knopf.** Kaefer-Knopf in der Kopfzeile: Bildschirmfoto VOR dem Dialog (`html-to-image` 1.11.13, laengste Kante 1600 px, `computeCaptureSize`), Dialog mit Vorschau, Haekchen und "Was ist passiert?"; Fehlerpuffer (Ringpuffer 20: window.onerror, unhandledrejection, console.error, fehlgeschlagene fetch-Antworten — keine Ruempfe/Cookies/Tokens); `POST /bug-reports` als Multipart (FileInterceptor 4 MiB -> 413, PNG-Signatur -> 400, kein Empfaenger -> 409, Drossel 5/10 min -> 429, Versandfehler -> 502; Mandant/Benutzer nur aus der Sitzung); E-Mail mit PNG-Anhang und Kontext (URL, Web-/API-Version+Kanal+Commit, Browser, Fenster, Zeitpunkt, Benutzer, letzte Fehler) ueber `MailService.sendBugReport` (Anhaenge; Kennwort-Reset bleibt verschluckend). Empfaenger: neue nullable Spalte `SmtpConfig.bugReportRecipient` (Migration `20260914170000`), Feld "Fehlermeldungen an" unter Administrator -> SMTP, Rueckfall `TESSERA_BUGREPORT_TO` (docker-compose.prod.yml). Handbuecher Anwender/Administration/Betrieb. Tests API 1060 -> 1076 / 67 Dateien, Web 243 -> 260 / 43 Dateien, tsc 0, `--frozen-lockfile` 0, 35 Dateien gegen 5c42c55, vier Commits. CI-Lauf 299 gruen (zweiter Versuch, erster scheiterte an Gitea-DB). Browser-Beweis durch den Orchestrator: E-Mail mit 85-KB-PNG (ohne Dialog, OKLCH korrekt) in mailhog, 409-Pfad im Dialog. Ledger #38 (Rule-1-Fix `@Expose()`) als fixed. Verifiziert 9/9 + Browser, gepusht. | 2026-09-14 | 54121c1,60b0ee8,b41be21,77117de | [260914-m97-fehler-melden-knopf-bildschirmfoto-der-a](./quick/260914-m97-fehler-melden-knopf-bildschirmfoto-der-a/) |
|
||||
| 260916-bwo | **Dashboard — feineres Raster, skalierende Widget-Inhalte, halbe Abstaende.** Raster verdoppelt (COLS 24/20/12/8/2, rowHeight 20, margin 8; WIDGET_CONSTRAINTS x2), gespeicherte Anordnungen einmalig x2 mit Marker `__gridVersion: 2` (nur im JSON, `migrateGridLayouts`/`withGridVersion`, idempotent). Widget-Rumpf `container-type: size`; Uhr/Stoppuhr/Rechner skalieren per Container-Queries; Uhr mit `timeFontSizePt` (leer = automatisch, 8..200 = fest in pt) und Feld in Einstellungen -> Dashboard -> Widgets. Abstaende halbiert: `app-shell` p-6 -> p-3 (alle Seiten, User-Nachtrag), Dashboard p-2, Grid 8 px, Widget-Innenabstaende; `mt-8` bleibt (Umschalter-Hoehe). Anwenderhandbuch. Tests Web 260 -> 286 / 46 Dateien, API 1076 -> 1078, tsc 0, 29 Dateien gegen 5f50c5f, vier Commits, CI-Lauf 351 gruen, Beta-Abbild `v1.0.0-10-g1aefaa3`. Browser-Beweis durch den Orchestrator: SQL-Probe in alten Einheiten -> DB verdoppelt + Marker; Rand 28 px (vorher 56), Abstand 8 px (vorher 16), main 12 px; Uhr 51 px -> 107 px beim Vergroessern; 36 pt = 48 px fest. Verifiziert 8/8 + Browser, gepusht. | 2026-09-16 | 3f5afb0,2d8efe1,a175c00,1aefaa3 | [260916-bwo-dashboard-feineres-raster-spalten-und-ze](./quick/260916-bwo-dashboard-feineres-raster-spalten-und-ze/) |
|
||||
| 260916-dyv | **Dashboard-Nachbesserung nach User-Test.** Mindestgroessen inhaltsgetrieben (clock 2/2, search 6/2, calendar 3/3, note 4/4, calculator 3/10 — vom Orchestrator im Browser von 9 auf 10 korrigiert, sechs Tastenreihen —, favorites 3/3, link 3/2, stopwatch 4/3 mit kompakter Bedienleiste), gespeicherte Layout-Eintraege bekommen minW/minH aus den Konstanten und zu kleine w/h werden angehoben (`applyConstraintMinima`, Test 9/9b). Bearbeiten-Schalter in feste Leiste unten rechts, `mt-8` weg: Rand oben 28 px statt 60. Drag & Drop: ganze Kachel als Griff mit Overlay-Kopfleiste, `dragConfig.cancel` (Eingaben, Knoepfe, .widgetNoDrag, Resize-Griff), `preventCollision: true` mit `noCompactor` (Ablegen auf belegtem Raum stoppt am Nachbarn, kein Ueberlappen). Anwenderhandbuch. Tests Web 286 -> 294 / 47 Dateien, API 67/1078, tsc 0, 12 Dateien gegen df16f46 + Fix 8792819; CI-Laeufe 353 und der Fix-Lauf gruen. Browser-Beweis: 28 px, Uhr 126x48, Ziehen an Kachelmitte, Suchfeld ohne Drag, Kollision stoppt, Rechner 272 px ohne Ueberlauf. Ledger #39 fixed. Verifiziert 6/6 + Browser, gepusht. | 2026-09-16 | dc992c9,dbbd54f,cf97b5b,8792819 | [260916-dyv-dashboard-nachbesserung-mindestgroessen-](./quick/260916-dyv-dashboard-nachbesserung-mindestgroessen-/) |
|
||||
|
||||
## Deferred Items
|
||||
|
||||
@@ -449,8 +450,8 @@ sind. Kein Anlass, sie vorher erneut vorzulegen.
|
||||
|
||||
## Session Continuity
|
||||
|
||||
Last session: 2026-09-15T14:25:42.000Z
|
||||
Last session: 2026-09-16T08:48:51.668Z
|
||||
Resumed: 2026-09-14 — Sitzung ueber /gsd-resume-work fortgesetzt; #29 und 3c als /gsd-quick --validate mit voller Kette durchgefuehrt.
|
||||
Stopped at: **v1.0.0 IST LIVE — 2026-09-15.** Der User hat den neuen Live-Server (tessera.ctl.de, IMAGE_TAG=live) selbst eingerichtet; alpha.tessera.ctl.de bleibt Beta. Bisher kein Feedback von Anwendern. Nichts offen. Kanalmodell: main = beta, Zweig live + Tag = live; Freigabe/Hotfix-Rezept in docs/anleitung-betrieb.md Kapitel 9. Vorlage .env.prod.example traegt IMAGE_TAG/COMPOSE_FILE/TESSERA_BUGREPORT_TO (7d201a8). DER SCHALTER IST AUS. Mandantenfaehigkeit RUHT (User 2026-09-14). Restposten ohne Dringlichkeit: Ship von Phase 17 (windows_enforce, open_count 15), Ledger #35 (Biome), #36 (stilles 403), #37 (DKV Single-Flight), Exchange-Alarm-Mail nie live getestet (kein Postfach). Naechster Einstieg: `/gsd-resume-work`, dann das, was der User aus dem Betrieb mitbringt (Fehlermeldungen kommen per Knopf ins eingestellte Postfach; Korrekturen auf Live laufen als Hotfix v1.0.x).
|
||||
Resume file: None
|
||||
Last activity: 2026-09-16 - Completed quick task 260916-bwo: Dashboard — feineres Raster, skalierende Widget-Inhalte, halbe Abstaende
|
||||
Stopped at: Quick 260916-dyv ausgefuehrt (3/3 Tasks, CI 353 success) — Browser-Nachweis durch Orchestrator offen
|
||||
Resume file: .planning/quick/260916-dyv-dashboard-nachbesserung-mindestgroessen-/260916-dyv-SUMMARY.md
|
||||
Last activity: 2026-09-16 - Completed quick task 260916-dyv: Dashboard-Nachbesserung — Mindestgroessen, Rand oben, Drag & Drop
|
||||
|
||||
Reference in New Issue
Block a user