Neue Charakter-Avatare, überall
Jeder Spieler bekommt jetzt ein freundliches Charakterporträt im DiceBear-v10-Stil „adventurer“ — im Profil, in der Rangliste, in der Lobby und im Spiel selbst.

Kurz gesagt
Dein Avatar war früher ein abstraktes geometrisches Muster. Jetzt ist er ein echtes kleines Charakterporträt — der DiceBear-v10-Stil „adventurer“ — und er erscheint überall dort, wo auch dein Name steht: in deinem Profil, in der Rangliste, in der Freundesliste, in der Lobby und nun auch im Spiel selbst, in der Spielerleiste, im Warteraum und auf dem Ergebnisbildschirm.
Dein Avatar wird aus deinem Konto erzeugt, es ist also auf jedem Bildschirm immer dasselbe Bild — auf einen Blick erkennbar mitten in einer Partie. Bestehende Spieler wurden automatisch umgestellt; es gibt nichts einzurichten.
Für technisch Neugierige
Jeder Avatar wird über einen einzigen Helfer aus der Benutzerkennung geseedet, dieselbe Kennung ergibt also immer dasselbe Bild — ein Avatar im Spiel ist byteidentisch mit dem Profilavatar und nutzt dieselbe zwischengespeicherte Anfrage.
// apps/web/lib/avatar.ts
export const adventurerUrl = (seed: string) =>
`https://api.dicebear.com/10.x/adventurer/svg?seed=${seed}`;Migration 0042 ist eine Eins-zu-eins-Ersetzung des Anmelde-Triggers, bei der die beiden avatar_url-Literale von 8.x/identicon auf 10.x/adventurer angehoben wurden, plus ein einmaliger Backfill, der jeden bestehenden DiceBear-Avatar aktualisiert (Menschen, Bots und Gäste; eigene Avatare bleiben unberührt). Auf die Produktionsdatenbank angewendet und geprüft — alle 35 Profile wechselten auf v10, und neue Anmeldungen bekommen v10.
Die Bildflächen, die avatar_url ohnehin lesen (obere Leiste, Profil, Rangliste, Freunde), wechselten allein durch den Backfill, ohne Codeänderung. Die Flächen im Spiel und in der Lobby halten die Benutzerkennung bereits clientseitig, jede berechnet die Avatar-URL also lokal — es musste keine Zuordnung durch den Spielzustand gefädelt werden. Eine CSP-Änderung war nicht nötig; der DiceBear-Host war bereits erlaubt.
