feat(profile): the profile saves as it is written, the handle chosen in a dialog that checks it

Changing the profile meant a Save button at the foot of the form, which
the floating navigation bar half covered on a phone. A field now saves
when it is left or Enter is pressed in it, and a link when it is
removed; "Saving…" and "Saved" show beside the title. The form keeps
what is being written as saves come back, where it used to start afresh
and lose focus after each one.

The handle is chosen in a dialog that asks the instance while it is
typed whether it is free (`ProfileEndpoint.checkHandle`, which tells
nothing `byHandle` doesn't), and choosing the first makes the profile
with what was written. Saves go one at a time, the latest of those
waiting next, and a handle chosen holds for every save after it, so a
field's save can't take it back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-12 19:07:42 +02:00
commit 959014b4a1
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -449,7 +449,7 @@
"profileSwitchStay": "Anonym bleiben",
"profileSwitchConfirm": "Wechseln",
"publicProfileTitle": "Öffentliches Profil",
"publicProfileIntro": "Wie andere dich sehen, sobald du veröffentlichst: das Handle, unter dem sie dich finden, dein Name, ein paar Worte und Links. Nichts davon ist sichtbar, bevor du es speicherst.",
"publicProfileIntro": "Wie andere dich sehen, sobald du veröffentlichst: das Handle, unter dem sie dich finden, dein Name, ein paar Worte und Links. Es speichert sich beim Schreiben, sobald du dein Handle gewählt hast.",
"publicProfileAnonymousHint": "Melde dich mit GitHub an, um ein öffentliches Profil zu haben und zu veröffentlichen.",
"publicProfileDisplayName": "Anzeigename",
"publicProfileDisplayNameHint": "Der Name neben deinem Handle",
@ -464,7 +464,19 @@
"publicProfileLinkHint": "https://…",
"publicProfileAddLink": "Link hinzufügen",
"publicProfileRemoveLink": "Link entfernen",
"publicProfileSaved": "Profil gespeichert.",
"publicProfileSaving": "Wird gespeichert …",
"publicProfileSavedNow": "Gespeichert",
"publicProfileHandleChoose": "Wähle ein Handle",
"publicProfileHandleFirst": "Wähle zuerst dein Handle: Damit wird dein Profil angelegt, und ab dann speichert es sich beim Schreiben.",
"publicProfileHandleChooseTitle": "Wähle dein Handle",
"publicProfileHandleChangeTitle": "Ändere dein Handle",
"publicProfileHandleDialogText": "Andere finden dich unter deinem Handle. Du kannst es ändern, bis du zum ersten Mal ein Lernset veröffentlichst.",
"publicProfileHandleChecking": "Wird geprüft …",
"publicProfileHandleFree": "@{handle} ist frei",
"@publicProfileHandleFree": {"placeholders": {"handle": {"type": "String"}}},
"publicProfileHandleYours": "Das ist dein Handle",
"publicProfileHandleConfirmChoose": "Wählen",
"publicProfileHandleConfirmChange": "Ändern",
"publicProfileRemove": "Profil entfernen",
"publicProfileRemoveTitle": "Dein öffentliches Profil entfernen?",
"publicProfileRemoveMessage": "Dein Handle wird für andere frei.",
@ -485,7 +497,7 @@
"publicProfileChoosePicture": "Bild wählen",
"publicProfileRemovePicture": "Bild entfernen",
"publicProfilePictureType": "Bilder",
"publicProfilePictureLater": "Speichere dein Profil, um ein Bild hinzuzufügen.",
"publicProfilePictureLater": "Wähle dein Handle, um ein Bild hinzuzufügen.",
"settingsTitle": "Einstellungen",
"settingsAccount": "Konto",