feat(profile): avatar presets, upload, nickname editing

- FastAPI: preset assets 01–08, GET list/static, PUT /me/avatar/preset,
  safer uploaded-avatar path validation, preset_avatars + HTTP tests.
- Expo: personal-info (library + presets), profile tab avatar,
  resolveApiMediaUrl, auth hooks cache sync, Web multipart helper,
  partial-save messaging + profile i18n.
- Includes existing edits to conversation screen and voice use-player.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin
2026-05-06 13:51:43 +08:00
parent 59d4b19d7d
commit 7ad52fce89
27 changed files with 1271 additions and 270 deletions

View File

@@ -27,6 +27,8 @@
"recentChats": "Recent Chats",
"stopReadingAloud": "Stop reading aloud",
"readAloudAgain": "Play again",
"readAloudPause": "Pause reading",
"readAloudResume": "Resume reading",
"cannotReadAloud": "Read unavailable",
"readingAloud": "Reading aloud…",
"recordingPermissionDenied": "Microphone permission is required to record",

View File

@@ -33,6 +33,29 @@
"title": "Data & Privacy"
},
"editAvatar": "Edit Profile Picture",
"personalInfo": {
"avatarPresetFailed": "Could not set preset avatar",
"avatarUploadFailed": "Could not upload avatar",
"cancel": "Cancel",
"birthPlacePlaceholder": "Birthplace",
"birthYearPlaceholder": "Birth year",
"changeAvatar": "Change photo",
"chooseFromLibrary": "Choose from library",
"choosePreset": "Preset avatars",
"grewUpPlaceholder": "Where you grew up",
"libraryPermissionDenied": "Photo library access is required to pick an image",
"nickname": "Nickname",
"nicknamePlaceholder": "Enter nickname",
"nicknameRequired": "Please enter a nickname",
"occupationPlaceholder": "Occupation",
"presetPickTitle": "Choose a preset",
"save": "Save",
"saveFailed": "Could not save",
"savePartialBody": "Your nickname was saved, but profile fields below could not be saved. Check your connection and tap Save again.",
"savePartialTitle": "Partially saved",
"saving": "Saving…",
"title": "Personal info"
},
"helpSupport": {
"faq": "FAQ",
"feedback": "Feedback & Support",