You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Exoplanet.Filters now accepts allow_categories: :all and block_categories: :none to express "no constraint" explicitly.
Lists keep working unchanged; atoms are normalized to [] internally
by both Exoplanet.Filters.merge/2 and Exoplanet.Config.from_file/1, so the struct's default_filters
field is always in canonical list form. Invalid atoms
(allow_categories: :none, block_categories: :all, or any
unrecognized atom) raise ArgumentError at config-load / merge time.
The Exoplanet.Filters.t() typespec is widened accordingly.
Fixed
Exoplanet.build/1 now sorts each feed's entries by published
(descending) before applying the per-feed new_feed_items cap.
Previously the first N entries in document order were kept, so feeds
that don't list newest-first (some Bridgetown / Jekyll templates,
podcast feeds) had genuinely recent posts dropped before the global
merge.
The feed parser now trims trailing , / ; and surrounding
whitespace from feed categories at extraction time. Some Atom feeds
emit terms like otp, (apparent producer-side templating bug) which
silently failed Exoplanet.Filters.passes_allowlist? against the
canonical otp allow-list entry, dropping the post.
The Atom parser now derives Exoplanet.Post.id from the entry's <link rel="alternate"> (or any <link> without a rel, per
RFC 4287 §4.2.7.2) before falling back to <id>. Bridgetown-style
feeds emit <id>repo://posts.collection/_posts/...md</id> and the
canonical web URL only lives in <link rel="alternate">; consumers
were rendering the repo:// URN as a clickable link.