Passkeys und die Jellyfin-Anbindung als groessere Bausteine, dazu vier Nacharbeiten aus dem Betrieb. Changelog, Release-Notiz, DEVLOG und die bebilderte Anleitung nachgezogen. Die Anleitung hat zwei neue Abschnitte samt Screenshots: „Anmelden per Passkey" und ein Bild im Jellyfin-Abschnitt. Beide Aufnahmen brauchen Gegenstellen — einen Authenticator und einen Medienserver. Damit `npm run screenshots` reproduzierbar bleibt, stellt das Skript sie jetzt selbst bereit: der virtuelle Authenticator kommt ueber CDP vom Browser, der Jellyfin-Nachbau sind ein paar Zeilen HTTP im Skript. Beide Spuren raeumt es nach der Aufnahme ueber die Oberflaeche wieder weg. Der Merkposten zum Entwicklungsmodus in CLAUDE.md war zu absolut: dass unter Playwright nichts hydratisiert, stimmt nicht durchgehend — im Screenshot-Lauf gegen denselben Dev-Server funktionierten die Klicks. Der Eintrag beschreibt jetzt das Beobachtete statt einer Regel, die nicht traegt, und nennt die Pruefung, mit der sich der Zustand feststellen laesst. Dazu neu: APP_URL muss zum aufgerufenen Port passen, sonst scheitern Passkeys am Ursprungsabgleich. Alle Screenshots neu aufgenommen — die Einstellungsseite hatte sich durch die neuen Abschnitte ohnehin geaendert.
This commit is contained in:
@@ -112,6 +112,13 @@ Statistiken, Benachrichtigungen, REST-API, PWA. Oberflächensprache **Deutsch**.
|
||||
|
||||
**Alle sechs Etappen abgeschlossen. Gesamtzeit: 2 h 16 min.**
|
||||
|
||||
- ✅ **Nacharbeiten** (v0.7.0/0.7.1) — Docker verifiziert, „hab ich", `update.sh`. 51 min.
|
||||
- ✅ **Issue-Runde** (v0.8.0) — Passkeys, Jellyfin-Anbindung, Standardreihenfolge,
|
||||
Rückmeldung beim Tippen, Titelraster, Filmsichtung zurücknehmen. 77 min.
|
||||
|
||||
Ab v0.8.0 wird **issue-getrieben** gearbeitet: eigener Branch je Issue,
|
||||
Zeiterfassung in Gitea, Freigabe durch Florian. Details im DEVLOG.
|
||||
|
||||
### Nützliches für spätere Arbeiten
|
||||
- Suche ohne TMDB-Schlüssel ausprobieren:
|
||||
`npm run tmdb:stub` und dann
|
||||
@@ -122,16 +129,25 @@ Statistiken, Benachrichtigungen, REST-API, PWA. Oberflächensprache **Deutsch**.
|
||||
das ASCII-Schlusszeichen beendet den String. In JSX-Text und Kommentaren ok.
|
||||
- Heredocs im Bash-Tool sind bei langen TSX-Dateien unzuverlässig — dann das
|
||||
Write-Werkzeug benutzen.
|
||||
- **Klickwege niemals gegen `npm run dev` prüfen.** Unter headless Chromium
|
||||
scheitert der HMR-Socket (`ERR_INVALID_HTTP_RESPONSE`), dadurch hydratisiert
|
||||
**keine** Seite und kein Knopf reagiert — ohne Seitenfehler, ohne
|
||||
fehlgeschlagene Anfrage, es passiert einfach nichts. Sieht aus wie ein Fehler
|
||||
im eigenen Code, ist aber die Umgebung. Stattdessen
|
||||
`npm run build` und `PORT=3012 npm start`, dann dagegen klicken.
|
||||
Formulare täuschen zusätzlich: die Anmeldung funktioniert auch ohne
|
||||
JavaScript, wirkt also intakt.
|
||||
- **Wenn Klicks unter Playwright wirkungslos bleiben, liegt es meist nicht am
|
||||
eigenen Code.** Beobachtet: gegen `npm run dev` reagierte unter headless
|
||||
Chromium **keine** Seite — kein Knopf, nicht einmal der Theme-Umschalter,
|
||||
ohne Seitenfehler und ohne fehlgeschlagene Anfrage. Begleitet vom
|
||||
scheiternden HMR-Socket (`ERR_INVALID_HTTP_RESPONSE`).
|
||||
**Der Zustand ist aber nicht dauerhaft:** in einem späteren Lauf gegen
|
||||
denselben Dev-Server funktionierten dieselben Klicks. Der HMR-Fehler tritt
|
||||
in beiden Fällen auf, taugt also nicht als Erklärung.
|
||||
Vorgehen: erst mit `Object.keys(el).some(k => k.startsWith("__react"))`
|
||||
prüfen, ob überhaupt hydratisiert wurde. Bleibt es dabei, gegen einen
|
||||
Produktionsbau prüfen (`npm run build`, `PORT=3012 npm start`) — dort trat
|
||||
es nie auf. Formulare täuschen zusätzlich: die Anmeldung funktioniert auch
|
||||
ohne JavaScript und wirkt deshalb intakt.
|
||||
- Vor `npm start` prüfen, ob der Port noch von einem früheren Lauf belegt ist —
|
||||
sonst startet der neue Server gar nicht und man testet den alten Bau.
|
||||
- **`APP_URL` muss zum tatsächlich aufgerufenen Port passen.** In der `.env`
|
||||
steht `http://localhost:3010`; wer gegen 3011 oder 3012 testet, muss
|
||||
`APP_URL` mitgeben. Passkeys scheitern sonst am Ursprungsabgleich (500),
|
||||
und der OIDC-Rücksprung zeigt auf die falsche Adresse.
|
||||
- Testdaten nach Klickproben wieder herstellen: die Proben schreiben in die
|
||||
geseedete Entwicklungsdatenbank.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user