Notechondria
Version: 0.1.58 Build Date: 2026-04-22T18:05
What's Changed
Cross-app dedup — portal_app onto the shared mixins (step 5 of 8)
-
Third and final app joins the party. portal_app's
_AppShellStatenow mixes inAppShellLogMixin,AppShellAuthActionsMixin,AppShellOAuthMixin. 363 lines of duplicate method bodies dropped (same 10 methods +showMessagehelper that editor and planner already migrated). -
128 private call sites renamed. portal's
NotechondriaClientnowimplements AuthClientwith a newcheckSessiondeclaration +HttpNotechondriaClientimplementation. portal also gets the{bool showMessage}→{bool announce}rename. -
portal's
app_shell.dartshrinks 3760 → 3414 lines. Still over cap; the next round splits per-concern.
Summary of cross-app sharing so far (0.1.54 – 0.1.58)
All three apps now share one implementation of:
log/appendUiLog/timed<T>/showMessage/refreshStateregister/verify/resendVerification/login/requestPasswordReset/confirmPasswordResetlaunchOAuth/handleOAuthCallback
Approximately 700 lines of inter-app duplication removed across the five rounds. All three smoke tests pass.
Files Changed
frontend/portal_app/lib/app_shell.dart— same migration pattern as planner.frontend/portal_app/lib/core/client.dart—implements AuthClient+checkSession.frontend/portal_app/lib/core/local_trash.dart—_trashRefreshrename.frontend/portal_app/lib/modules/{course,settings}.dart—{bool announce}rename.