Notechondria
Version: 0.1.32 Build Date: 2026-04-18T10:00
What's Changed
§1.7 migration: Editor.Sync.Notes round
All draft + cloud-note sync surfaces in
editor_app/lib/app_shell.dart migrated to
Editor.Sync.Notes/<process> sources.
Migrated:
Editor.Sync.Notes/pull\u2014_pullCloudNotesToLocalmissing-session guard, conflict-dialog cancellation, success log + ActionFeedback (imported/updated/kept counts), and error catch.Editor.Sync.Notes/push\u2014_syncLocalDraftmissing-session guard, cloud-copy update success log, and fresh-create success log (the two code paths through_syncLocalDraft).Editor.Sync.Notes/push_all\u2014_syncAllLocalDatamissing-session guard, success, and catch; the SnackBar surfaced to the user also now carries the canonical shape so copy-paste into ops logs yields a greppable module/process.Editor.Sync.Notes/restore\u2014_restoreDeletedNotemissing-session guard + success log.Editor.Sync.Notes/empty_trash\u2014_emptyDeletedNotesmissing-session guard + success log.
§1.7 migration: Editor.Sync.Settings round
Settings save and avatar upload in editor_app/lib/app_shell.dart
migrated to Editor.Sync.Settings/<process> sources.
Migrated:
Editor.Sync.Settings/save\u2014_updateSettings:- No-change short-circuit (\u201CNo settings changes\u201D).
- Offline save fallback (\u201CSettings saved locally \u2014 no cloud session\u201D).
- Cloud success (\u201CSettings saved \u2014 $summary pushed to cloud\u201D), both SnackBar and structured debug-log entry.
- Cloud-update failure fallback (warning-level log + ActionFeedback that names the failing $summary and the upstream cause).
Editor.Sync.Settings/avatar.upload\u2014_uploadAvatar:- Missing-session guard.
- File-picker-cancelled, unmount, preview-rejected cancellation paths now carry the module/process prefix so the debug log can grep the cancellation reason.
- Success log + ActionFeedback.
- Error catch with structured error-level log and corresponding ActionFeedback.
Other
- Legacy
_appendUiLogusages in the migrated sites were replaced with the structured_log({level, source, message})form so each entry lands with its canonical source in the debug log card's filter chip row.
Files Changed
New
docs/versions/0.1.32.md(this file).
Modified
VERSION: 0.1.31 \u2192 0.1.32.docs/TODO.md: \u00a71.7 migration checklist marksEditor.Sync.Notes+Editor.Sync.Settingsdone.frontend/editor_app/lib/app_shell.dart: ~12 message sites in_pullCloudNotesToLocal,_syncLocalDraft,_syncAllLocalData,_restoreDeletedNote,_emptyDeletedNotes,_updateSettings, and_uploadAvatarrewritten to the \u00a71.7 shape. OneActionFeedback(message: message, ...)reference to a renamed localmessagevariable was also corrected (caught by the analyzer); no behavior change.
Verification
editor_app:flutter analyze\u2014 46 issues (unchanged vs 0.1.31 modulo the known info-levelprefer_single_quotesfalse-positives on intentional double-quoted strings that contain'around titles). No errors.editor_app:flutter test test/smoke_test.dart -r compact\u2014 passes.
Notes / follow-ups
Editor.LocalStoreround still open: starter-workspace seed,_clearLocalData,_restoreTemplateCourses, draft persistence logging.Editor.UIround still open: ~22 remaining legacy_appendUiLogcalls covering cosmetic info logs ("Opened category X", etc.).Planner.Sync.*,Planner.UI,Portal.Sync.*,Portal.UIrounds remain.