Notechondria
Version: 0.1.7 Build Date: 2026-04-07T12:00
What's Changed
Startup splash screen animation (Citric acid cycle)
-
Created
_SplashScreenwidget with_KrebsCyclePainterCustomPainter that renders an animated Krebs (Citric acid) cycle during app startup. - 8 metabolite nodes (Citrate, Isocitrate, alpha-Ketoglutarate, Succinyl-CoA, Succinate, Fumarate, Malate, Oxaloacetate) orbit a central ring with a 4-second animation loop.
- Byproducts (CO2, NADH, FADH2, GTP) pulse outward at their respective reaction steps. Acetyl-CoA entry arrow shown at the Citrate junction.
- Active node glow ring cycles through metabolites; tap anywhere to dismiss.
-
Replaces
CircularProgressIndicatorin all three apps (editor, planner, portal) during initial loading. -
10-second cancellable
Timerensures splash dismisses even if network is unavailable. Timer is cancelled indispose()to avoid test framework warnings.
Page transition animations
-
Added
AnimatedSwitcherwith combined fade + slide transition to page navigation in all three apps. -
300ms duration with
easeOut/easeIncurves; subtle horizontal slide (3% offset) for a polished feel. -
Pages keyed on
_selectedIndexviaKeyedSubtreeso transitions fire on navigation changes.
Staggered card and sidebar animations
-
Created
_StaggeredFadeInwidget: fade + slide entrance with index-based stagger delay (50ms per item, 350ms duration). -
Created
_showSlideInDialoghelper: fullscreen dialog with slide-from-right + fade entrance (300ms, 8% horizontal offset). - Note editor dialog now opens with slide-in-from-right transition instead of default dialog animation.
- Note cards (editor learner page) fade in top-to-bottom with staggered delay for both local drafts and cloud notes.
- Course cards (planner), module cards, and discussion note cards fade in with staggered delay.
- Portal front page cards (intro, route cards, evolution card) fade in sequentially.
- Editor category sidebar items (both wide layout and drawer) slide in from right with staggered fade.
Fix admin avatar reset on deploy
-
ensure_creator()increators/utils.pyno longer checkscreator_has_image_file()— only attaches default avatar when creator is newly created or has no image field set. Prevents overwriting user-uploaded avatars on ephemeral deploy filesystems.
Cross-app feature parity (from 0.1.6)
-
Ported
resendVerificationclient method and "Resend code" button with 60s cooldown to planner and portal apps (editor was done in 0.1.6). -
Added
_resendVerificationhandler andonResendVerificationwiring to planner and portal_AppShellState.
Files Changed
frontend/editor_app/lib/components/splash_screen.dart-- New: Krebs cycle splash animation widgetfrontend/editor_app/lib/main.dart-- Addedpart 'components/splash_screen.dart'frontend/editor_app/lib/app_shell.dart-- Replaced CircularProgressIndicator with _SplashScreen; added 10s Timer + dispose(); added page transition AnimatedSwitcherfrontend/planner_app/lib/components/splash_screen.dart-- New: Krebs cycle splash animation widgetfrontend/planner_app/lib/main.dart-- Addedpart 'components/splash_screen.dart'frontend/planner_app/lib/app_shell.dart-- Replaced CircularProgressIndicator with _SplashScreen; added 10s Timer + dispose(); added page transition AnimatedSwitcherfrontend/planner_app/lib/core/client.dart-- AddedresendVerification(email)to interface and implementationfrontend/planner_app/lib/modules/settings.dart-- AddedonResendVerificationparameter and 60s cooldown resend buttonfrontend/portal_app/lib/components/splash_screen.dart-- New: Krebs cycle splash animation widgetfrontend/portal_app/lib/main.dart-- Addedpart 'components/splash_screen.dart'frontend/portal_app/lib/app_shell.dart-- Replaced CircularProgressIndicator with _SplashScreen; added 10s Timer + dispose(); added page transition AnimatedSwitcherfrontend/portal_app/lib/core/client.dart-- AddedresendVerification(email)to interface and implementationfrontend/portal_app/lib/modules/settings.dart-- AddedonResendVerificationparameter and 60s cooldown resend buttonfrontend/editor_app/lib/core/helpers.dart-- Added_StaggeredFadeInwidget and_showSlideInDialoghelperfrontend/editor_app/lib/modules/learner.dart-- Note editor uses slide-in dialog; note cards wrapped with staggered fade-infrontend/planner_app/lib/core/helpers.dart-- Added_StaggeredFadeInwidgetfrontend/planner_app/lib/modules/course.dart-- Course cards, module cards, discussion cards wrapped with staggered fade-infrontend/portal_app/lib/core/helpers.dart-- Added_StaggeredFadeInwidgetfrontend/portal_app/lib/modules/front.dart-- Front page cards wrapped with staggered fade-inbackend/creators/utils.py--ensure_creator()no longer resets avatar when image file is missing but field is setdocs/TASKS.md-- Marked startup animation, page transitions, and avatar reset tasks as complete