Notechondria
Version: 0.1.73 Build Date: 2026-04-26T18:30
What's Changed
Online account → 3 sub-pages + Logout
-
Spec: "Use the same logic [as 0.1.68] to organize the online account setting into: personal information; sign in and security (third party account, email, password); API settings (mcp for now). Logout (or login, hide former sections when not logged in, show the below sections). Signup (align in same line as prev, signup and login(logout) always as button in the same row). Signin with github / Signin with google (show in round button, span horizontal line)."
-
Signed-in account block restructured. Old single Card with embedded profile / sync / API key / connected accounts split into three Apple-style sub-page rows + a separate destructive Logout card:
- Personal information →
_PersonalInfoPage(avatar, names, motto, social link). - Sign in & security →
_SignInSecurityPage(third-party account linking + change email + change password). - API settings →
_ApiSettingsPage(MCP API key + endpoint). - Logout — full-width red row at the bottom of the account section, separate Card.
- Personal information →
-
Signed-out account block also restructured. Replaces the shared
AuthHubCard with a tighter layout:- "Sign up" + "Login" on the same row as equal-width FilledButtons.
- "Continue with GitHub" and "Continue with Google" as
full-width pill buttons (
StadiumBorderOutlinedButtons that span the full row) below aordivider. - New
_OAuthPillButtonwidget at the bottom ofsettings_build.dart.
Sub-page feedback bus — fixes "feedback only on first level"
-
Spec: "Note that since we have secondary menu, the user should see the feedback / error message in the secondary menu; now the error message is on first level menu only, fix that."
-
Refactored
ActionFeedback? _saveFeedback(asetStatefield that only re-rendered the top page) into aValueNotifier<ActionFeedback?> _feedback. The new_FeedbackBannerwidget watches the notifier and renders at the top of every sub-page._runMaintenanceAction,_submitSettings, and the avatar upload all write to the notifier instead ofsetState— sub-pages see the same errors / success messages without bouncing back to the top page.
Restore template — local + remote variants
-
Spec: "The restore template should have two options depends on availability, one is to restore local inbox category with default welcome note. … in a new developer section, place the original restore remote template with three course."
-
New
_restoreLocalStarterTemplateextension method on_AppShellState(ineditor_app/lib/core/maintenance_actions.dart). Re-seeds the local Inbox + welcome note regardless of online state, by clearing the seeded marker and delegating to_ensureStarterWorkspace. Surfaced in Local data sub-page as "Restore starter inbox". -
The original admin-only
_restoreTemplateCourses(3-course remote catalog re-seed) moves to a new Developer sub-page, reachable from the top-level menu via a science-flask-icon row. Non-admin sessions get a clear backend error in the per-page feedback banner.
Auto-save in sub-pages — "always save and persist across
restarts"
-
Spec: "In secondary menu, always save and persist across restarts."
-
Theme preset / theme mode / default editor mode picks now call
_autoSavePreferences(delegates to_submitSettings) so changes persist across restarts without forcing the user back to a Save button. The API URL field saves ononSubmitted(Enter / software-keyboard Done).
Sync rows moved to Local data sub-page
- Push local→cloud and Pull cloud→local moved into the Local data sub-page where data movement lives. Old Sync subsection inside the giant online-account Card is gone with the restructure.
Files Changed
frontend/editor_app/lib/modules/settings.dart—_feedbacknotifier; top-levelbuild()reads viaValueListenableBuilder;_autoSavePreferencesmethod added; Developer sub-page row in_buildSettingsMenu.frontend/editor_app/lib/modules/settings_pages.dart—_FeedbackBanner,_DeveloperSettingsPage,_PersonalInfoPage,_SignInSecurityPage,_ApiSettingsPage. Local data sub-page gets new "Push" / "Pull" / "Restore starter inbox" rows.frontend/editor_app/lib/modules/settings_build.dart—_buildOnlineAccountSectionrewritten as_buildSignedInAccount/_buildSignedOutAccount;_OAuthPillButtonwidget;_openSignUpDialog/_openLoginDialog/_apiBaseHostSubtitlehelpers.frontend/editor_app/lib/core/maintenance_actions.dart— new_restoreLocalStarterTemplateaction.frontend/editor_app/lib/core/build_helpers.dart— passonRestoreLocalStarterTemplate: _restoreLocalStarterTemplatethrough to_SettingsPage.
Notes
- All editor module files still under the §1.5 1000-line cap after the additions. Editor smoke test passes.
- The 3-course remote-template restore is now visibly demoted to "Developer" with a science-flask icon — clear indication that it's not for end users. The per-page feedback banner shows the backend-permissions error inline if a non-admin session triggers it.