22e50cc852
Two optimizations for feed metadata loading speed: 1. Batched author filter (FeedMetadataCoordinator.loadMetadataBatched): Single Filter(kind:0, authors:[all visible]) instead of individual per-pubkey subscriptions through rate limiter. Closes after EOSE. Follows ChessRelayFetchHelper one-shot pattern. Max 100 authors/filter. 2. Viewport-aware scroll observation (FeedScreen): snapshotFlow reads LazyListState.visibleItemsInfo (zero recomposition) with 500ms debounce + distinctUntilChanged. Only fetches metadata for visible notes ± 10 item buffer. Initial load batches first 30 notes. Before: 100+ authors × 20/sec rate limit × 7 relays = 5+ seconds After: ~20 visible authors × 1 batched sub × 7 relays = <1 second Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>