Notechondria
Version: 0.1.34 Build Date: 2026-04-18T12:00
What's Changed
§1.7 migration: Planner rounds complete
Every direct _appendUiLog(String) call site in
frontend/planner_app/lib/app_shell.dart now emits the canonical
"<consequence>: <module>/<process> \u2014 <cause>" shape via the
structured _log({level, source, message}) helper.
Migrated sources (grouped):
Planner.LocalStore/{seed_starter, clear, clear_cache, copy_logs, restore_templates}\u2014 first-run seed, clear-local-data, clear-cache, frontend-logs-copy, admin template restore.Planner.Sync.Settings/{save, avatar.upload}\u2014 settings save (no-change / offline-save / cloud success / remote-fail fallback) and avatar upload (missing session, cancellation reasons, success, error).Planner.Sync.Courses/{push, create_local, load, subscribe, unsubscribe}\u2014 local-course push (missing-session + success), local-course creation log, course-load failure, subscribe/unsubscribe missing-session guards.Planner.Sync.Notes/{pull, push, create, save, save_local, delete, delete_local, restore, empty_trash, push_all, list}\u2014 the full draft + cloud-note sync surface, including offline-fallback toasts in_createNote/_saveNote.Planner.Sync.Events/{create, create_local, toggle, toggle_local}\u2014 planner event creation (both cloud and local) and the is-completed toggle (both cloud and local).Planner.Sync.Calendar/{refresh, import, subscribe, toggle, delete}\u2014 the five calendar-feed operations.Planner.Sync.Activity/load_week\u2014 heatmap week load success + failure.Planner.UI/{open_course, open_note, open_note_viewer, note_session.start, note_session.finish}\u2014 user-visible navigation actions and the note-session lifecycle.
No direct _appendUiLog(String) call sites remain
As with the editor in 0.1.33, the wrapper _appendUiLog stays only
as the callback signature for widgets consuming onLogEvent (e.g.
_LearnerPage, _SettingsPage). Calls routed through it still flow
into _log with level: info, source: ''; those will be migrated
when the module part-files are next touched.
Files Changed
New
docs/versions/0.1.34.md(this file).
Modified
VERSION: 0.1.33 \u2192 0.1.34.docs/TODO.md: \u00a71.7 migration checklist marks Planner round done; only Portal round remains.frontend/planner_app/lib/app_shell.dart: ~45 message sites rewritten to \u00a71.7 shape via_log(...). SnackBar text in the user-facing surfaces (_updateSettings,_uploadAvatar, offline-fallback create/save,_syncAllLocalData,_restoreTemplateCourses,_clearLocalCache,_clearLocalData,_copyFrontendLogs) also now carries the module/process prefix so an operator pasting the toast has the source. One renamed variable (message\u2192cause) consistency fix in the_saveNotecatch block was caught by the analyzer during the pass and corrected in the same commit.
Verification
planner_app:flutter analyze\u2014 68 issues (up from 53 in 0.1.27). The delta is entirelyprefer_single_quotesinfo-level false-positives on intentional double-quoted strings that contain'around titles (same category of lint misfire documented in 0.1.31/0.1.32/0.1.33). No errors; no new warnings.planner_app:flutter test test/smoke_test.dart -r compact\u2014 passes.
Notes / follow-ups
Portal.*round (frontend/portal_app/lib/app_shell.dart) remains the last frontend \u00a71.7 round. Its structure mirrors the editor/planner paths; the migration should be mechanical with the same module-name conventions (Portal.LocalStore/*,Portal.Sync.*,Portal.UI/*).- Module part-files (
modules/learner.dart,modules/settings.dart,modules/course.dart,modules/activity.dart) in all three apps still route throughonLogEvent: _appendUiLog; those will be migrated as their files are next touched.