Problem
There's no way to collapse completed checklist items out of sight. When a note has many checked todos, the live/unchecked items get buried. Users want a toggle — primarily in view mode, possibly in edit mode — that hides Checked == true checklist blocks entirely.
Context
- Existing
HideChecked config key in internal/config/config.go:18 is misleadingly named — it actually drives sort-to-bottom via m.sortChecked / sortCheckedToBottom(), not hiding. See project memory Sort-checked and the 2026-04-08 work.
- View-mode rendering:
internal/editor/editor.go viewMode flag (line 103) and render paths around lines 2540 / 2773 / 2891 / 2909 / 3035.
- Block iteration for rendering happens over
m.blocks; hiding likely means skipping blocks with Type == block.Checklist && Checked == true during render and viewport layout.
Approach
- Rename or disambiguate: either rename the existing config key to
SortChecked and introduce a new HideChecked key, or keep HideChecked meaning "hide" and rename the sort-to-bottom flag. Pick whichever minimizes migration pain; document in CHANGELOG.
- Add a runtime toggle (keybind, e.g., Ctrl+Shift+H, or via footer popup) that flips the in-memory flag for the current session.
- In the view-mode render pipeline, skip hidden blocks. Viewport height calculation must exclude them too, so scrolling stays correct.
- Decide edit-mode behavior: either supported symmetrically or scoped to view mode only for v1. Recommend view-mode-only first — editing a list while items vanish is confusing.
Tasks
Acceptance criteria
Problem
There's no way to collapse completed checklist items out of sight. When a note has many checked todos, the live/unchecked items get buried. Users want a toggle — primarily in view mode, possibly in edit mode — that hides
Checked == truechecklist blocks entirely.Context
HideCheckedconfig key ininternal/config/config.go:18is misleadingly named — it actually drives sort-to-bottom viam.sortChecked/sortCheckedToBottom(), not hiding. See project memory Sort-checked and the 2026-04-08 work.internal/editor/editor.goviewModeflag (line 103) and render paths around lines 2540 / 2773 / 2891 / 2909 / 3035.m.blocks; hiding likely means skipping blocks withType == block.Checklist && Checked == trueduring render and viewport layout.Approach
SortCheckedand introduce a newHideCheckedkey, or keepHideCheckedmeaning "hide" and rename the sort-to-bottom flag. Pick whichever minimizes migration pain; document in CHANGELOG.Tasks
HideCheckedconfig-name conflict (migration + CHANGELOG note).Acceptance criteria
.notefile is not mutated by toggling.