4 Commits

Author SHA1 Message Date
schalli 5f50c5faa0 docs: Todo — Desktop-Client auslieferungsreif machen (Versions-Check, Windows-Installer, Abnahme, CI-Bau)
Tessera CI/CD / Lint & Type Check (push) Successful in 44s
Tessera CI/CD / Tests (push) Successful in 52s
Tessera CI/CD / Build & Publish Images (push) Successful in 2m48s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
2026-09-15 21:40:15 +02:00
schalli 18170d690b docs: v1.0.0 live auf tessera.ctl.de seit 2026-09-15 — Stand festgehalten, nichts offen
Tessera CI/CD / Lint & Type Check (push) Successful in 47s
Tessera CI/CD / Tests (push) Successful in 57s
Tessera CI/CD / Build & Publish Images (push) Successful in 2m44s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
2026-09-15 16:25:42 +02:00
schalli 7d201a82ab docs: IMAGE_TAG, COMPOSE_FILE und TESSERA_BUGREPORT_TO in die Vorlage .env.prod.example aufgenommen; Handbuch-Hinweis angepasst
Tessera CI/CD / Lint & Type Check (push) Successful in 49s
Tessera CI/CD / Tests (push) Successful in 56s
Tessera CI/CD / Build & Publish Images (push) Successful in 2m47s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
2026-09-15 09:12:40 +02:00
schalli db2e2c83fe docs: Erstfreigabe v1.0.0 festgehalten — Zweig live, CI 332/333/334 gruen, Registry live/v1.0.0; Tagesabschluss 2026-09-14
Tessera CI/CD / Lint & Type Check (push) Successful in 47s
Tessera CI/CD / Tests (push) Successful in 56s
Tessera CI/CD / Build & Publish Images (push) Successful in 2m46s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018N9CD3ebPKm1b32bPpBknY
2026-09-14 17:39:48 +02:00
4 changed files with 82 additions and 8 deletions
+15
View File
@@ -7,8 +7,18 @@ DATABASE_URL=postgresql://tessera:change-me-strong-password@db:5432/tessera
# App # App
APP_URL=https://tessera.deine-domain.de APP_URL=https://tessera.deine-domain.de
# Generate with: openssl rand -hex 32
JWT_SECRET=change-me-64-char-random-string JWT_SECRET=change-me-64-char-random-string
# Auslieferungskanal (siehe Betriebshandbuch, Kapitel 9):
# beta = alle Neuerungen sofort (Teststellung)
# live = nur freigegebene Versionen mit Nummer (Produktivbetrieb)
# Fehlt die Zeile, nimmt die Compose-Datei "beta".
IMAGE_TAG=live
# Damit auf dem Server ein schlichtes "docker compose ..." genuegt,
# ohne jedes Mal "-f docker-compose.prod.yml" anzugeben.
COMPOSE_FILE=docker-compose.prod.yml
# Admin account (created on first start) # Admin account (created on first start)
TESSERA_ADMIN_USER=admin TESSERA_ADMIN_USER=admin
TESSERA_ADMIN_EMAIL=admin@deine-domain.de TESSERA_ADMIN_EMAIL=admin@deine-domain.de
@@ -29,3 +39,8 @@ TESSERA_ENCRYPTION_KEY=
# TESSERA_SMTP_USER= # TESSERA_SMTP_USER=
# TESSERA_SMTP_PASSWORD= # TESSERA_SMTP_PASSWORD=
# TESSERA_SMTP_FROM=Tessera <noreply@deine-domain.de> # TESSERA_SMTP_FROM=Tessera <noreply@deine-domain.de>
# Fehlermeldungen (optional): Rueckfall-Postfach fuer den Knopf "Fehler melden",
# falls unter Administrator > SMTP kein Feld "Fehlermeldungen an" gesetzt ist.
# Leer = nur die Einstellung in der Oberflaeche gilt.
# TESSERA_BUGREPORT_TO=
+8 -5
View File
@@ -4,8 +4,8 @@ milestone: v1.2
current_phase: 17 current_phase: 17
current_phase_name: eigene-ausschreibungs-quellen-je-nutzer current_phase_name: eigene-ausschreibungs-quellen-je-nutzer
status: verified status: verified
stopped_at: "2026-09-14: Quick 260914-m97 Fehler-melden-Knopf ausgefuehrt (4 Commits 54121c1/60b0ee8/b41be21/77117de gepusht, CI-Lauf 299 nach Rerun success, :beta-Abbilder mit 77117de beta); offen: Browser-Check mit mailhog durch den Verifizierer, danach Erstfreigabe v1.0.0" 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-14T15:08:28.980Z" last_updated: "2026-09-15T14:25:42.000Z"
last_activity: 2026-09-14 last_activity: 2026-09-14
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 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: 77117de3d0f1bb82df7b659f46fe26244ca6f164
@@ -344,7 +344,10 @@ Gerettet aus `.continue-here.md`. Relevant fuer die noch offenen Live-Tests.
### Pending Todos ### Pending Todos
None yet. - [2026-08-11] [module-registry] Jeder Mandanten-Admin kann sich jedes Modul selbst freischalten — Aktivierung ohne Lizenzpruefung — [todo file](.planning/todos/pending/2026-08-11-modulaktivierung-ohne-lizenzpruefung.md)
- [2026-09-07] [web/branding] Administrator kann das Aussehen branden — eigenes Logo und eigene Farben je Mandant — [todo file](.planning/todos/pending/2026-09-07-mandanten-branding-logo-und-farben.md)
- [2026-09-14] [module-registry] Lizenzmodell — Betreiber gibt Modul je Server mit Lizenzanzahl frei, Firmenadmin lizenziert an bis zu N … — [todo file](.planning/todos/pending/2026-09-14-lizenzmodell-freigabe-je-server-mit-lizenzanzahl.md)
- [2026-09-15] [desktop] Desktop-Client auslieferungsreif machen — Versions-Check, Windows-Installer, Abnahme, CI-Bau — [todo file](.planning/todos/pending/2026-09-15-desktop-client-auslieferungsreif-machen.md)
### Blockers/Concerns ### Blockers/Concerns
@@ -445,8 +448,8 @@ sind. Kein Anlass, sie vorher erneut vorzulegen.
## Session Continuity ## Session Continuity
Last session: 2026-09-14T15:08:28.744Z Last session: 2026-09-15T14:25:42.000Z
Resumed: 2026-09-14 — Sitzung ueber /gsd-resume-work fortgesetzt; #29 und 3c als /gsd-quick --validate mit voller Kette durchgefuehrt. Resumed: 2026-09-14 — Sitzung ueber /gsd-resume-work fortgesetzt; #29 und 3c als /gsd-quick --validate mit voller Kette durchgefuehrt.
Stopped at: 2026-09-14: Quick 260914-m97 Fehler-melden-Knopf ausgefuehrt (4 Commits 54121c1/60b0ee8/b41be21/77117de gepusht, CI-Lauf 299 nach Rerun success, :beta-Abbilder mit 77117de beta); offen: Browser-Check mit mailhog durch den Verifizierer, danach Erstfreigabe v1.0.0 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 Resume file: None
Last activity: 2026-09-14 - Completed quick task 260914-m97: Fehler-melden-Knopf mit Bildschirmfoto per E-Mail, Empfaenger unter Administrator -> SMTP Last activity: 2026-09-14 - Completed quick task 260914-m97: Fehler-melden-Knopf mit Bildschirmfoto per E-Mail, Empfaenger unter Administrator -> SMTP
@@ -0,0 +1,54 @@
---
created: 2026-09-15T19:39:37.195Z
title: Desktop-Client auslieferungsreif machen — Versions-Check, Windows-Installer, Abnahme, CI-Bau
area: desktop
severity: minor
trigger: Sobald der User eine Bau- und Testmoeglichkeit fuer Windows organisiert hat (User 2026-09-15: "Da finden wir was. Evtl. sogar so, dass du im Browser selbst testen kannst"). Reiner Komfort — der Betrieb im Browser braucht den Client nicht. Nicht von uns aus draengen.
files:
- apps/desktop/src-tauri/src/lib.rs:82-100
- apps/desktop/src-tauri/tauri.conf.json:4
- apps/desktop/src-tauri/tauri.conf.json:29
- apps/desktop/src/setup.html
- .gitea/workflows/ci.yml
- .planning/phases/06-desktop-client-ci-cd/06-02-SUMMARY.md
---
## Problem
Phase 6 (Juni 2026) hat den Tauri-Rahmen um die Web-Oberflaeche gebaut
(`apps/desktop`): Server-Adresse beim ersten Start, WebView auf die Installation,
Tray mit Schliessen-in-den-Tray, Fensterzustand, Autostart, Benachrichtigungen,
Versions-Check, Tessera-Symbol, Ziele AppImage + NSIS. Seit dem 2026-06-25 nicht
mehr angefasst. Vier Dinge stehen zwischen dem Stand und einer Auslieferung:
1. **Versions-Check ist seit 260914-ku1 falsch.** `lib.rs` vergleicht
`info.version` aus `GET /health/version` (jetzt z. B. `v1.0.0`, Stempel des
Server-Abbilds) mit `CARGO_PKG_VERSION` des Clients (`0.0.1`) und meldet bei
Ungleichheit "Eine neue Version ist verfuegbar" — also bei JEDEM Start.
Client- und Server-Version sind zwei verschiedene Dinge; der Check braucht
eine eigene Quelle fuer die Client-Version (z. B. ein Feld
`desktopVersion` in `/health/version` oder eine eigene Datei im Web-Abbild).
2. **Windows-Installer nie gebaut.** NSIS ist in `tauri.conf.json` konfiguriert,
gebaut wurde nur das Linux-AppImage (`Tessera_0.0.1_amd64.AppImage`), weil
auf dem Linux-Host keine Windows-Werkzeugkette existiert (06-02-SUMMARY).
Braucht einen Windows-Rechner, eine Windows-VM oder einen Windows-Runner.
3. **Keine Abnahme.** Phase 6 hat keine VERIFICATION.md; der Client wurde seit
Juni nicht gestartet, die Web-Oberflaeche hat sich seitdem stark veraendert
(Berechtigungen, Module, Kopfzeile mit Fehler-melden-Knopf, Versionsabzeichen).
Vollstaendig gegen `https://tessera.ctl.de` durchklicken: Erststart-Dialog,
Anmeldung, Tray, Schliessen, Benachrichtigung, Fehler-melden-Knopf (funktioniert
`html-to-image` in der Tauri-WebView?).
4. **Kein automatischer Bau.** `.gitea/workflows/ci.yml` baut nur die
Container. Desktop-Pakete muessten je Freigabe von Hand oder ueber einen
zusaetzlichen Runner gebaut und irgendwo abgelegt werden (Gitea-Release?).
## Solution
Eigene kleine Etappe als `/gsd-quick --validate`, sobald die Baumoeglichkeit
steht. Reihenfolge: (1) Versions-Check richtigstellen und `tauri.conf.json`
auf eine echte Client-Version bringen; (2) Bau auf Windows, Installer testen;
(3) Abnahme gegen tessera.ctl.de mit Protokoll; (4) entscheiden, ob der Bau in
die Pipeline kommt oder als dokumentierter Handgriff je Freigabe bleibt. Die
eine Produktfrage an den User: Wo wird gebaut und getestet (Windows-Rechner,
VM, Runner)? Wenn "im Browser testbar" eine per Browser erreichbare Windows-VM
meint, kann die Abnahme von Claude ueber Playwright MCP / Bildschirm laufen.
+5 -3
View File
@@ -421,9 +421,11 @@ docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d --force-recreate api web docker compose -f docker-compose.prod.yml up -d --force-recreate api web
``` ```
Hinweis: Die Vorlage `.env.prod.example` im Repository enthält die Zeile Hinweis: Die Vorlage `.env.prod.example` im Repository enthält die Zeilen
`IMAGE_TAG` noch nicht. Wer eine neue `.env` aus der Vorlage anlegt, ergänzt die `IMAGE_TAG=live` und `COMPOSE_FILE=docker-compose.prod.yml` bereits. Wer eine neue
Zeile von Hand. `.env` aus der Vorlage anlegt, setzt `IMAGE_TAG` nur noch auf den gewünschten
Kanal; auf einer älteren, von Hand gepflegten `.env` (wie auf alpha) werden die
Zeilen einmal ergänzt.
### Eine Version freigeben ### Eine Version freigeben