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

@ -508,7 +508,7 @@
"profileSwitchStay": "Stay anonymous",
"profileSwitchConfirm": "Switch",
"publicProfileTitle": "Public profile",
"publicProfileIntro": "How others see you once you publish: the handle they find you by, your name, a few words and links. Nothing here shows until you save it.",
"publicProfileIntro": "How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.",
"publicProfileAnonymousHint": "Sign in with GitHub to have a public profile and publish.",
"publicProfileDisplayName": "Display name",
"publicProfileDisplayNameHint": "The name shown beside your handle",
@ -523,7 +523,23 @@
"publicProfileLinkHint": "https://…",
"publicProfileAddLink": "Add link",
"publicProfileRemoveLink": "Remove link",
"publicProfileSaved": "Profile saved.",
"publicProfileSaving": "Saving…",
"publicProfileSavedNow": "Saved",
"publicProfileHandleChoose": "Choose a handle",
"publicProfileHandleFirst": "Choose your handle first: your profile is made with it, and saves as you write from then on.",
"publicProfileHandleChooseTitle": "Choose your handle",
"publicProfileHandleChangeTitle": "Change your handle",
"publicProfileHandleDialogText": "Others find you by your handle. You can change it until you first publish a studyset.",
"publicProfileHandleChecking": "Checking…",
"publicProfileHandleFree": "@{handle} is free",
"@publicProfileHandleFree": {
"placeholders": {
"handle": {"type": "String"}
}
},
"publicProfileHandleYours": "This is your handle",
"publicProfileHandleConfirmChoose": "Choose",
"publicProfileHandleConfirmChange": "Change",
"publicProfileRemove": "Remove profile",
"publicProfileRemoveTitle": "Remove your public profile?",
"publicProfileRemoveMessage": "Your handle becomes free for others to take.",
@ -544,7 +560,7 @@
"publicProfileChoosePicture": "Choose picture",
"publicProfileRemovePicture": "Remove picture",
"publicProfilePictureType": "Images",
"publicProfilePictureLater": "Save your profile to add a picture.",
"publicProfilePictureLater": "Choose your handle to add a picture.",
"settingsTitle": "Settings",
"settingsAccount": "Account",