What's Fixed
- Fixed a crash when a feed has no etag (NULL in the database):
httpxrejects aNoneheader value before the request is sent, so theIf-None-Matchheader is now only sent when an etag actually exists. - Full article fetching (via newspaper) now uses the same User-Agent logic as feed fetching: the
RSS_FETCH_USER_AGENTsetting is honored, and on failure the request is retried once with the fallback HTTP-client UA (curl/8.10.1) to bypass WAF (e.g. Cloudflare) blocks — mirroring the existing feed-fetch 403 fallback.
Full Changelog: 2026.9.5...2026.9.6