Notechondria

Version: 0.1.57 Build Date: 2026-04-22T18:00

What's Changed

Cross-app dedup — planner_app onto the shared mixins (step 4 of 8)

  • planner_app's _AppShellState now mixes in AppShellLogMixin<AppShell>, AppShellAuthActionsMixin<AppShell>, AppShellOAuthMixin<AppShell>. 348 lines of inline duplicate method bodies dropped from planner_app/lib/app_shell.dart: launchOAuth, handleOAuthCallback, log, appendUiLog, register, verify, resendVerification, login, requestPasswordReset, confirmPasswordReset — 10 methods that previously lived in identical (modulo log prefix) form across all three apps.

  • 125 private call sites renamed in planner_app/lib/ to match the mixins' public API (_loglog, _applyAuthPayloadapplyAuthPayload, etc.).

  • planner's NotechondriaClient now implements AuthClient, with a new checkSession declaration in the abstract + an HttpNotechondriaClient implementation pasted from editor's to keep the contract tight. Without checkSession the auth client interface couldn't be satisfied.

  • {bool showMessage} on _syncAllLocalData renamed to {bool announce} across planner modules to avoid shadowing the mixin's showMessage method (same shadowing fix editor_app needed in 0.1.54).

  • Editor regression noticed and fixed: a _logoutlogout rename had been missed in editor_app/lib/core/build_helpers.dart's settings-callback wiring. editor_app smoke test had been passing against an old analysis cache; this commit makes both apps' smoke tests pass on a fresh run.

  • planner's app_shell.dart shrinks 3861 → 3522 lines. Still over the §1.5 cap — the next round (per-concern extensions) gets it under, and the round after promotes the rest of the duplicates to shared mixins.

Files Changed

  • frontend/planner_app/lib/app_shell.dart — 348 lines of duplicates dropped, three mixins applied.
  • frontend/planner_app/lib/core/client.dart — abstract + concrete checkSession added.
  • frontend/planner_app/lib/core/local_trash.dart_trashRefresh rename matching editor.
  • frontend/planner_app/lib/main.dartpart 'core/logging.dart' removed (the file no longer exists; logging is now shared).
  • frontend/planner_app/lib/modules/{course,settings}.dart{bool announce} rename on onSyncLocalData typedef and call sites.
  • frontend/editor_app/lib/core/build_helpers.dart_logoutlogout regression fix.