Highlights
Performance, safety, and capability improvements for day-to-day use.
Performance
- Checkbox toggles no longer re-render every note or re-run MathJax
- Shared MarkdownIt instance + O(1) task-index lookup
- Per-note HTML cache
- Linear folder task scan (was O(n²))
- Cheaper archiver progress check (no full HTML re-serialize each pass)
Safety
- Atomic
notes.mdwrites (tmp+os.replace) - Default bind is
127.0.0.1(localhost only); use--host 0.0.0.0for LAN - Upload path sanitization, collision renames, 50 MiB size cap
- Config file only rewritten when values actually change
Capability
- External
notes.mdedits picked up via mtime poll (skips while editor is dirty) - Contiguous task reindex after add/update/delete
- Richer AI context modes: recent N notes, note being edited, selection, none, plus char budget
- Abortable search requests while typing
- AI chat uses in-memory notes (including unsaved session state)
Quality
- First unit-test suite (
python -m unittest tests.test_core -v) - Dropped unused
jinja2dependency
Install
pip install -U noteflow
# or
brew upgrade noteflow-py # after formula bumpCLI
noteflow --host 127.0.0.1 # default
noteflow --host 0.0.0.0 # LAN (no auth — use carefully)