diff --git a/CHANGELOG.md b/CHANGELOG.md index df004a5..5cc9084 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - A feed whose website names an icon that is missing shows the site's `/favicon.ico` instead of no artwork. +- A website's icon standing in for a feed's artwork follows the site when it changes, and a + feed that drops its own artwork gets the site's instead. Refreshing a feed checks again. - The read button shows whether an item is read, as the pin beside it shows whether it is pinned: a tick when read, an envelope when not. It used to show the opposite. - In Directory and Popular, Subscribe is a plus again, not the tick that marks a feed you have. diff --git a/src/main.rs b/src/main.rs index d252276..f27bb0b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1214,9 +1214,12 @@ async fn scan_one( } let mut parsed = feed::parse(&bytes)?; - // Looked for once. A miss is stored as "", which the page draws as no art, so a site with - // no icon is not asked again on every scan, nor the feed refetched in full for it above. - if parsed.image.is_none() && stored.image.is_none() { + // Looked for again whenever the feed is read in full, which is when it has changed or + // someone asked for a refresh, so an icon the site changes or fixes follows it (#80). A miss + // is stored as "", which the page draws as no art, and which stops the refetch above. + // ponytail: a feed without validators is read in full every scan and asks its site each + // time too; keep a checked-at time per feed if that shows up in anyone's logs. + if parsed.image.is_none() { parsed.image = Some(match &parsed.site { Some(site) => feed::site_icon(&ctx.client, site).await.unwrap_or_default(), None => String::new(),