- 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>