The $: block applying note changes to CodeMirror listed the autosave
bookkeeping vars (saveTimer, lastKnown) as dependencies, so the 400 ms
autosave re-ran it before App delivered the updated note prop. That stale
run misread the save echo as an external sync change and replaced the
whole doc mid-typing: on Android this aborted every IME composition and
threw the cursor to the top of the note.
Apply note/query via $: fn(prop) so the statements re-run only when the
prop itself changes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>