Replace OptionalBool with an explicit require_email_verification value for the login settings save request while keeping legacy read defaults intact.
Use positive RequireEmailVerification naming through the registration flow and inline the site setting mapping.
Add validation, save-path, and registration coverage for the explicit email verification setting.
Fix#1524
Root cause
DeepSeek's reasoning models stream reasoning_content alongside content.
Answer ignored it, so follow-up requests failed with 400: The
reasoning_content in the thinking mode must be passed back to the API,
and the thinking text was never shown or saved.
Fix
- Capture reasoning_content from the stream and pass it back to theAPI
on subsequent rounds.
- Persist it with the conversation (new DB column via migrationv2.0.2).
- Render it in the chat UI as a collapsible "Thinking…/Thoughts"panel
above the answer.
Compatibility
Nullable column, omitempty field, UI hides the panel when empty — old
conversations and non-reasoning models behave exactly as before.
Demo
https://github.com/user-attachments/assets/49b1a2a1-9133-4ac2-bbeb-860215a50285
The avatar column was too short to store long URLs from external OAuth
providers. When users log in via connector-google plugin, the Google
profile picture URL can exceed 1024 characters, causing a database error:
Error 1406 (22001): Data too long for column 'avatar' at row 1
This change expands the avatar column from VARCHAR(1024) to VARCHAR(2048).
Note: While URLs can technically exceed 2048 characters per specification,
2048 is the practical limit supported by most browsers and services.
URLs longer than 2048 characters are extremely rare in real-world usage.
- [x] create file_record table
- [x] avatar and branding files are added to file_record
- [x] branding files are being deleted
- [x] avatar files are being deleted
- [x] reload latest avatar (frontend) after backend state is being
updated
problems addressed in the pr:
- clean up job fails, because it cannot access file_record table
- avatar and branding files are not added to the file_record table
- avatar and branding files are never deleted
- after an avatar is being updated/deleted, the old file is still being
requested due to browser caching. This is causing error logs ("no such
file or directory") in the backend.
cf. conversation in [pr
1326](https://github.com/apache/answer/pull/1326)
---------
Co-authored-by: broccoli <lekker.broccoli@gmail.com>
Co-authored-by: LinkinStars <linkinstar@foxmail.com>