#22 Image overflow: added .frame(maxWidth: .infinity) before .frame(height: 180) on AsyncImage to constrain width within card. Card's .clipShape already clips corners. #23 Load more not triggering: added loadMoreIfNeeded(for:) that fires onAppear for entries 5 from the bottom. No longer relies solely on the bottom sentinel Color.clear which could be missed. Also increased sentinel height from 1pt to 40pt. #24 Refresh not updating read state: flushDeferredReads() now called before vm.refresh() in .refreshable. Deferred marks are synced to API before re-fetching, so the server returns correct read states. Also clears markedByScroll set. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>