Notechondria
Version: 0.1.36 Build Date: 2026-04-18T14:00
What's Changed
§1.7 migration: module part-files round
Every direct widget.onLogEvent(...) emission across the three
apps' module part-files now follows the canonical
"<consequence>: <module>/<process> \u2014 <cause>" shape.
Migrated sites (same message patterns across editor, planner, portal
with only the Editor|Planner|Portal prefix differing):
<App>.UI/open_editor\u2014 editor dialog opens on a selected note.<App>.UI/create_note\u2014 new note shell created before the editor opens.<App>.UI/editor.save\u2014 note saved from inside the editor (autosave, manual save, etc.).<App>.UI/editor.metadata\u2014 user opened the metadata dialog from the editor toolbar.<App>.UI/editor.mode\u2014 user switched editor modes (P/G/B/M/T).<App>.UI/editor.attachment\u2014 attachment uploaded while the editor is open (editor_app only).<App>.UI/editor.close\u2014 editor dialog dismissed.
Host wrapper still routes these
_appendUiLog(String) in each app's app_shell.dart is still the
callback registered on widget onLogEvent params. It forwards the
string into the debug log controller as an Info-level entry with an
empty structured source. The source field in the structured log stays
empty for these entries (the structured source slot belongs to the
\u00a71.7 host-side _log({source: ...}) path, not the callback
route). The string itself now carries the module/process prefix, so
grepping the persisted log text for Editor.UI/editor.save or
equivalent still works and operators reading the SnackBar / copied log
see the canonical shape.
Files Changed
New
docs/versions/0.1.36.md(this file).
Modified
VERSION: 0.1.35 \u2192 0.1.36.docs/TODO.md: \u00a71.7 migration checklist marks the module part-files round done.frontend/editor_app/lib/modules/learner.dart: 2onLogEventcall sites rewritten toEditor.UI/{open_editor,create_note}.frontend/editor_app/lib/modules/note_editor.dart: 5onLogEventcall sites rewritten toEditor.UI/editor.{save,metadata,mode, attachment,close}.frontend/planner_app/lib/modules/learner.dart: 7onLogEventcall sites rewritten toPlanner.UI/{open_editor,create_note,editor.save, editor.metadata,editor.mode,editor.close}(the editor widget is inlined into this file for the planner app; the attachment path is not wired yet).frontend/portal_app/lib/modules/learner.dart: 7onLogEventcall sites rewritten toPortal.UI/{open_editor,create_note,editor.save, editor.metadata,editor.mode,editor.close}(same inlined layout as planner; no attachment path).
Verification
flutter analyzeon editor / planner / portal \u2014 52 / 70 / 68 issues respectively (was 50 / 68 / 66 in 0.1.35 modulo theprefer_single_quotesinfo-level false-positives on intentional double-quoted strings with embedded'). No errors.flutter test test/smoke_test.dart -r compacton all three apps \u2014 passes.
Notes / follow-ups
- \u00a71.7 migration is now complete across every call site that
emits to the debug log, UI SnackBars, or
ActionFeedbacksurfaces in this repo (backend + frontend). Future commits should adopt the shape from the start and use the canonical module/process names documented in docs/AGENTS.md. - The remaining
onLogEvent/_appendUiLogplumbing is structural: the callback is how widget tree children report events to the host state. Migrating those entries to have a structuredsourceslot (rather than the""empty source that_appendUiLogcurrently emits) would require threading a richer callback type through the part-files; defer that until a reason appears to surface source in the debug log filter chip row for these entries.