Server: add slim query param (default true) to entries list endpoint,
returning EntrySlimOut without content/full_content HTML — cuts payload
size dramatically for list views. Single entry endpoint still returns
full content.
iOS: ArticleView now fetches full entry content on demand when opened
instead of relying on list data. Shows loading indicator while fetching.
Mark-as-read is fire-and-forget to avoid blocking the view.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Server-side (dashboard + iOS + any client):
- Added thumbnail column to reader_entries
- Worker extracts from media:thumbnail, media:content, enclosures, HTML img
- API returns thumbnail in EntryOut with & decoding
- Backfilled 260 existing entries
iOS:
- Prefers API thumbnail, falls back to client-side extraction
- Decodes HTML entities in URLs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>