Notechondria
Version: 0.1.15 Build Date: 2026-04-09T00:00
What's Changed
OAuth error diagnostics
-
OAuth 400 responses now include the actual error detail from Google/GitHub (e.g.
redirect_uri_mismatch,bad_verification_code) instead of a generic message, aiding debugging of production OAuth failures.
Frontend performance: HTML web renderer
-
Switched all three frontend apps (editor, planner, portal) from CanvasKit to the HTML web renderer (
--web-renderer html) in both GitHub Pages workflow and Docker builds.- Fixes
webGLVersion is -1CPU-only rendering fallback that caused extreme lag. - Fixes cross-origin image loading (avatars from Cloudflare R2) since HTML renderer uses native
<img>tags that don't require CORS. - Reduces initial load size (no CanvasKit WASM download).
- Fixes
Gaussian blur dialog backdrop
-
All auth dialogs (login, register, verify, password reset) now show a gaussian-blurred background (
BackdropFilter, sigma 6) with a tinted overlay instead of the default Material barrier. - Slide-in dialogs (note editor, note viewer) also use the blurred backdrop.
Login loading animation
-
Added
CircularProgressIndicatorto the login dialog during credential submission, providing clear visual feedback while the API call is in progress.
Splash screen: skeletal structural formulas
-
Redesigned the Krebs cycle splash animation to use 2D bond-line skeletal formulas instead of the previous small inline text notation.
- Carbon backbones drawn as zigzag bond lines with proper single/double bond notation.
- Functional groups (COOH, OH, CoA, S, O) rendered as labeled text at bond endpoints.
- Active metabolite shown prominently in the center-right area with its name and full skeletal structure.
- Scales responsively based on canvas width (bond length 28-48px, font size 10-16px).
- Applied to all three frontend apps.
Note editor: file attachments
-
Added
NoteAttachmentmodel for per-note file uploads (stored underuser_upload/user_{id}/notes/note_{note_id}/). -
Backend upload (
POST), list (GET), and delete (DELETE) endpoints at/api/v1/notes/<id>/attachments/. -
20 MB max upload size enforced in both Django settings (
DATA_UPLOAD_MAX_MEMORY_SIZE,FILE_UPLOAD_MAX_MEMORY_SIZE) and the upload endpoint. -
Frontend
uploadNoteAttachment/listNoteAttachments/deleteNoteAttachmentclient methods using multipart upload. -
Attach-file FAB (lower-right) in the note editor opens a file picker; uploaded files are embedded as
(images) or[name](url)(other files) in the markdown body.
Environment and deployment (continued from 0.1.14)
-
Removed Cloudflare R2 variables from
prepare_env.sh(Jenkins uses Docker volumes, not R2). -
Updated
docs/deployment/deploy.mdProperties Content example with complete variable set, added image tag auto-generation note, added SMTP to required variable list.
Files Changed
backend/creators/api.py-- OAuth 400 responses include provider error details.github/workflows/frontend-pages.yml-- Added--web-renderer htmlto all three build commandsfrontend/editor_app/Dockerfile-- Added--web-renderer htmlfrontend/planner_app/Dockerfile-- Added--web-renderer htmlfrontend/portal_app/Dockerfile-- Added--web-renderer htmlfrontend/editor_app/lib/main.dart-- Addeddart:uiimport for BackdropFilterfrontend/editor_app/lib/core/helpers.dart--_showSlideInDialoguses blur backdrop, new_showBlurDialoghelperfrontend/editor_app/lib/components/auth_dialogs.dart-- Dialogs use_showBlurDialog, login shows CircularProgressIndicatorfrontend/editor_app/lib/components/splash_screen.dart-- Redesigned with skeletal structural formulasfrontend/planner_app/lib/components/splash_screen.dart-- Same splash redesignfrontend/portal_app/lib/components/splash_screen.dart-- Same splash redesigndeployment/jenkins/scripts/prepare_env.sh-- Removed R2 varsdocs/deployment/deploy.md-- Updated Properties Content exampledocs/versions/0.1.14.md-- Updated changelog for R2 removalsample.env-- Updated image tags to v0.1.15.localVERSION-- Bumped from 0.1.14 to 0.1.15backend/notes/models.py-- AddedNoteAttachmentmodel andnote_attachment_pathbackend/notes/api.py-- AddedNoteAttachmentApiViewandNoteAttachmentDetailApiViewbackend/notes/admin.py-- RegisteredNoteAttachmentin adminbackend/notes/migrations/0015_noteattachment.py-- Migration for NoteAttachment tablebackend/notechondria/api_urls.py-- Added attachment URL routesbackend/notechondria/settings.py-- Added 20 MB upload size limitsfrontend/editor_app/lib/core/client.dart-- Added attachment client methodsfrontend/editor_app/lib/modules/note_editor.dart-- Added attach-file FAB and upload flowfrontend/editor_app/lib/modules/learner.dart-- WiredonUploadAttachmentcallbackfrontend/editor_app/lib/app_shell.dart-- Added_uploadNoteAttachmentand passed to editor/learnerdocs/versions/0.1.15.md-- This version document