- Neu `account/profile.ts`: Muster, Sperrliste und Schlüssel (ein Test vergleicht
sie mit `deploy/api/common.js`), Profile lesen (`getUsername`, `usernamesFor`
gesammelt in einer Abfrage und zwischengespeichert, bei einem Fehler nur die
bekannten Namen), `isUsernameTaken`, `saveUsername` (POST /api/profil,
Zwischenspeicher + `onUsernameChange`), `myUsername`/`loadMyUsername` und der
Merker `aircard.usernamePrompted`. `IDS.profiles`.
- Neu `account/username-dialog.ts`: Dialog „Benutzername wählen“ in den Modi
prompt („Später“), required („Abbrechen“) und change (vorbelegt), Fehler am
Feld, Busy-Sperre, höchstens ein Dialog zur Zeit; dazu `requireUsername()`.
- Registrieren: Pflichtfeld „Benutzername“ vor der E-Mail. Muster, Sperrliste und
Verfügbarkeit werden vor dem Anlegen des Kontos geprüft (kein halbes Konto);
danach wird der Name gespeichert, scheitert das, schließt der Login-Dialog und
der Namensdialog fragt.
- Konto-Menü: „@name“ oben, die E-Mail klein darunter, Eintrag „Benutzername
ändern“ bzw. „Benutzername wählen“.
- main.ts: Name nach Start und Anmeldung lesen; ohne Namen einmal pro Sitzung der
Dialog „prompt“ (nicht, wenn der Name nicht lesbar ist).
- Texte in `en.ts`, Stile in `account.css`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Router: Routen home, gestalten, cards, community/<id>, reset; Umleitung
/?karte=<id> nach /gestalten?karte=<id>; Titel je Route (titleFor);
Hash-Ziele (/#community) scrollen den Anker ins Bild, nur-Hash-Wechsel
bauen die Seite nicht neu auf.
- Kopfzeile: Navigation, Suche (Enter -> /?q=...#community), Spenden-Knopf,
Hell/Dunkel-Schalter, Menue unter 900 px, Konto als Avatar-Kreis mit Menue.
- Theme: data-theme auf <html> (Skript im <head> gegen Aufblitzen), helle
Tokens, danger-/warn-/ok-text-Tokens statt fester Farben.
- Spenden-Banner (schliessbar); ohne DONATE_URL bleiben Banner und Knopf weg.
- User.labels und isAdmin; Platzhalter fuer Startseite und Detailseite.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>