Notechondria
Version: 0.1.3 Build Date: 2026-04-07T07:00
What's Changed
Note preview
-
Avatar CORS on production. Nginx
/media/location now sendsAccess-Control-Allow-Originheaders; DjangoApiCorsMiddlewareextended to cover/media/paths (was/api/only). Fixes cross-origin avatar loads from GitHub Pages frontend.
Editor Settings
-
Unified save/cancel buttons per section. Both "Online account" and "Editor preferences" cards now have a full-width Save (left) / Cancel (right) button row. Cancel is greyed out when nothing changed; clicking it restores values from the server. Added
_hasProfileChanges,_hasPreferenceChanges,_cancelProfileChanges,_cancelPreferenceChangeshelpers and_buildSectionButtonsfactory.
Login and account info
-
Username displayed as read-only
@usernamesubtext below the display name. Removed the read-onlyTextFieldfor username. -
Added First name / Last name text fields on the same row, replacing the username editor. Backend
SettingsSerializerandauth_payloadnow includefirst_name/last_name;display_namederived fromfirst_name + last_name(falls back to username). -
Avatar tap now opens a preview dialog showing the full-size image. The "Change avatar" button remains as the upload trigger. Added
_previewAvatarmethod.
Files Changed
backend/creators/api.py—SettingsSerializer: addedfirst_name/last_namefields,to_representation,update;auth_payload: addedfirst_name/last_name/display_namebackend/nginx/nginx.conf— CORS headers on/media/location and@django_mediafallbackbackend/notechondria/middleware.py—ApiCorsMiddlewarenow covers/media/pathsdocs/TASKS.md— removed completed itemsfrontend/editor_app/lib/app_shell.dart—_updateSettingsacceptsfirstName/lastName, diff logic addedfrontend/editor_app/lib/modules/settings.dart—_firstNameController/_lastNameController,_previewAvatar,_buildSectionButtons,_hasProfileChanges/_hasPreferenceChanges,_cancelProfileChanges/_cancelPreferenceChanges; profile fields restructured with first/last name row, username as subtext, avatar tap = preview