Reader mark-as-read: - Track visible entry IDs with onAppear/onDisappear - Only mark as read when entry disappears AND other entries are still visible (meaning user is scrolling, not navigating to an article) - Prevents the bug where opening an article marked all visible entries Goals (#11): - Added .scrollDismissesKeyboard(.interactively) for drag-to-dismiss - Added tap-to-dismiss keyboard on background Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>