- Restore explicit overflow-y:auto on #main-app for mobile (removed in
63f5d64) — implicit coercion from overflow-x:auto is not reliable in
all Safari/WebKit versions.
- Override position:sticky on .readme to position:relative on mobile.
The desktop sticky (left:0) is correct for horizontal scroll, but on
mobile vertical scroll it pinned the 100dvh-tall readme across the
entire viewport, hiding all stacked notes behind it.
All database reads and writes now run off the main thread via a
dedicated worker, eliminating IndexedDB overhead from the frame budget.
- Create data.worker.ts exposing the Data class via Comlink
- Refactor data.ts to export a Comlink-wrapped proxy and a standalone
generateId() pure function (workers can't expose sync methods cleanly)
- Update all 10 call sites to import generateId directly instead of
calling data.generateId()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Narrow backlinks watcher from entire store to store.files only,
reducing trigger count from ~8 to 2 per navigation
- Defer computation start by 300ms so it runs after the 250ms view
transition animation completes
- Yield to the browser between each file iteration using
scheduler.yield() (with setTimeout fallback) to avoid blocking frames
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>