| 18-desktop-client-fertigstellen |
03 |
ui |
| next-intl |
| react |
| desktop-distribution |
| i18n |
|
| phase |
provides |
| 18-01 |
GET /desktop/latest, GET /desktop/download/:platform (beide @Public()), DesktopLatestResponse-Form |
|
|
| apps/web/src/lib/desktop.ts (loadDesktopLatest, desktopDownloadUrl, formatFileSize) |
| DesktopDownloadLinks — unauffaelliger Link-Block auf der Anmeldeseite (D-12) |
| DesktopAppSettings + Route /settings/general/desktop — Version, Download-Knoepfe, Dateigroesse, Erklaerung |
| Seitenleisteneintrag Desktop-App unter Allgemein |
|
| 18-04-client-updateprüfung |
| 18-06-browser-gegenprobe |
|
| tokens |
tasks |
commits |
| 6993 |
2 |
2 |
|
2164cd537a |
| added |
patterns |
|
|
| memoisiertes Single-Promise-Laden (Modul-Ebene), still bei Fehler -> null, konsumiert per useEffect+useState mit active-Schutz (Muster app-version.ts/AppVersionBadge, jetzt zweimal wiederverwendet: Login-Link und Einstellungsseite) |
| Linkziel immer aus API_URL plus relativem url-Feld gebaut, nie eine absolute Adresse aus der Antwort uebernommen (T-18-07) |
|
|
| created |
modified |
| apps/web/src/lib/desktop.ts |
| apps/web/src/lib/desktop.test.ts |
| apps/web/src/components/desktop/desktop-download-links.tsx |
| apps/web/src/components/desktop/desktop-download-links.test.tsx |
| apps/web/src/app/(portal)/settings/general/desktop/page.tsx |
| apps/web/src/components/settings/desktop-app-settings.tsx |
| apps/web/src/components/settings/desktop-app-settings.test.tsx |
|
| apps/web/src/app/(auth)/login/page.tsx |
| apps/web/src/components/settings/settings-sidebar.tsx |
| apps/web/src/messages/de.json |
| apps/web/src/messages/en.json |
| apps/web/src/messages/umlaut-dictionary.ts |
|
|
| useLocale() aus der Anmeldeseiten-Komponente entfernt (Plan-Text erwaehnte es, aber der Link-Block zeigt keine Dateigroesse — nur die Einstellungsseite braucht locale fuer formatFileSize); vermeidet eine ungenutzte Variable. |
| 'neuere' zur UMLAUT_ALLOWLIST ergaenzt — der bestehende Waechter-Test flaggte das Wort faelschlich, weil es zufaellig die Buchstabenfolge 'ue' enthaelt, obwohl die Schreibweise bereits korrekt ist (kein Substitutionsfehler). |
|
|
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
Anmeldeseite zeigt Download-Link(s) nur wenn /desktop/latest antwortet, Windows fuehrt, Linux als Kurzlink bei beiden Paketen |
DESK-03 |
| kind |
ref |
status |
| unit |
apps/web/src/lib/desktop.test.ts#Test 1-5 |
pass |
|
| kind |
ref |
status |
| unit |
apps/web/src/components/desktop/desktop-download-links.test.tsx#Test 1-3 |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
Einstellungsseite Desktop-App: Version, zwei Primaerknoepfe mit Symbol, Dateiname/Groesse, Beta-Hinweis, vier erklaerende Saetze, Hinweistext ohne Pakete |
DESK-03 |
| kind |
ref |
status |
| unit |
apps/web/src/components/settings/desktop-app-settings.test.tsx#Test 1-3 |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D3 |
Seitenleiste zeigt den Eintrag Desktop-App unter Allgemein mit aria-current auf der Route |
DESK-03 |
| kind |
ref |
status |
| other |
grep -c 'href="/settings/general/desktop"' apps/web/src/components/settings/settings-sidebar.tsx (=1) |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D4 |
de/en vollstaendig fuer auth.desktopDownload.* und settings.desktop.*/categoryDesktopApp, deutsche Texte mit echten Umlauten |
DESK-03 |
| kind |
ref |
status |
| other |
node i18n-Paritaets-/Umlautskript aus 18-03-PLAN.md <verify> -> 'i18n OK' |
pass |
|
| kind |
ref |
status |
| unit |
apps/web/src/messages/umlaut-guard.spec.ts |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
rationale |
| D5 |
Alle Downloads laufen ueber die Tessera-API (API_URL + relatives url-Feld), keine feste Server-/Firmenadresse im Code |
DESK-03 |
| kind |
ref |
status |
| unit |
apps/web/src/lib/desktop.test.ts#Test 4 (desktopDownloadUrl) |
pass |
|
| kind |
ref |
status |
| other |
grep -v '^\s*//' apps/web/src/lib/desktop.ts | grep -c 'process.env.NEXT_PUBLIC_API_URL' (=1) |
pass |
|
|
true |
Der End-zu-Ende-Beweis (Browser klickt echten Download bis zum tatsaechlichen Dateidownload) ist die geplante Browser-Gegenprobe am Phasenende (18-06) — hier nur die Unit-/Text-Ebene automatisiert bewiesen. |
|
|
20min |
2026-09-16 |
complete |