You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Make the notes editor a fluent, gold-standard writing surface (#10)
The Windows desktop editor felt laggy, formatting looked rough, and Markdown
editing was clumsy. This reworks the editor across performance, input, and
live styling so typing stays smooth even in very large notes.
Performance:
- Debounce note-body persistence in NotesViewModel: keystrokes update a
lightweight draft and only fold into the in-memory list + disk after a short
idle, so typing no longer re-allocates the whole note list and recomposes the
sidebar/tree on every key. Pending edits flush on note switch / trash / quit
(main.kt onCloseRequest awaits the final write).
- Memoize MarkdownVisualTransformation.filter by raw text (Compose calls it on
every layout pass, not just edits) and skip the inline regex passes above a
50k-char guard so huge documents stay responsive.
- Move outline + word-count off the composition hot path: a single
snapshotFlow + collectLatest collector recomputes them on Dispatchers.Default
a beat after typing pauses instead of re-parsing every keystroke.
Editing:
- Smart Enter continues bullet / ordered / task / blockquote lists (empty item
exits the list); Tab / Shift+Tab indent / outdent the selection. Tag
autocomplete still owns nav keys while its popup is open.
Live styling:
- Task checkboxes render a length-preserving glyph for done items (tinted +
struck), ordered markers and horizontal rules are styled, all without
changing the on-disk .md (identity offset mapping preserved).
235 desktop tests green (+16: smart-enter / indent / outdent, checkbox /
ordered / HR decoration).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>