- Fixed: Favicon used as article image
- Added: Resolve relative URLs in item link and media
- Added: Item thumbnail fallback to channel thumbnail
- Chore: Dependency updates
- Thank you: @cpwnd
- Fixed: Several style issues
- New: Adjust article grouping based on timezone. You need to add
timezone
inosmosfeed.yml
for accurate grouping. See details in documentation. - New: Card title now toggles card content
- New: all toggles on the UI are persisted with local storage. You can use it to track read/unread status within a single browser.
- New: Build timestamp now links to the GitHub Action run
- Changed: Sources are sorted based on publish time rather than alphabetical order
- Changed: Style adjusted for easier reading
- Fixed: Horizontal overflow on Safari
- Fixed: HTML syntax error in default template
- New: Thumbnail image display for each article
- New: Improved color, spacing, and typography for easier reading
- New: Click the date to toggle all accordions on that day. Ctrl + Click to toggle all accordions on the entire site.
- Changed: All sections are expanded by default
- Changed: Switched to vitest for easier testing
- Fixed: Long string (e.g. URL) caused horizontal overflow
- Thank you: @naari3, @tianheg
- Fixed: Future articles appeared in the feed
- Fixed: Security vulnerability from axios
- Thank you: @naari3
- New: When source download fails, fall back to cache and continue rest of the build.
- Chore: Dependency updates
- Thank you: @sokomin, @molakirlee, @philippnagel
- Fixed: Broken links in documentation
- Chore: Dependency updates
- Thank you: @hirdot
- Fixed: unicode characters in URL caused download error
- Fixed: Project root npm install error
- Added: Unit test library
- Chore: Dependency updates
- Thank you: @CaptNo1
- Fixed: Unexpected nested element in
author
field crashes the parser
- Changed: Default HTML template meta tag adjusted to match convention
- Changed:
sources
in template data is now ordered by last update timestamp (as opposed to alphabetical)
- Added: testing and CI/CD workflows
- Added: experimental support for podcast sources. You can render an audio control to play the mp3 file and display iTunes episode duration. Caveats:
-
- This feature is currently only available through custom template.
-
- iTunes has no strict format requirement for
duration
. The unit is most likely seconds. A future version may expose a human readable string to the template.
- iTunes has no strict format requirement for
-
- No image support yet. Some shows might have disabled CORS or use a relative URL for image, which forces osmosfeed to download the image during build. A future version may support it.
-
- You can't republish the podcast in the feed output. Supporting this goes beyond the scope of the project at the moment.
-
- Fixed: the
articles
in template data were not sorted. - Thank you: @Zenigata
- Fixed:
UnhandledPromiseRejectionWarning: Error: At least one option must be a string
- Changed: Smart summary truncation. When there is no dedicated
summary
(only Atom feed has it, and many sites don't use it) from the source, we check if the content/description (Both Atom and RSS) field is long enough to be full text. If so, it will be truncated into a "pseudo" summary. If not, we assume the source used thecontent
field as summary, and it will be displayed in full length. - Thank you: @LooperXX.
- This release has no user facing changes. It is created for recording keeping and won't be published.
- Chore: Refactoring initialization and filesystem io.
- Chore: Removed dependency
fs-extra
.
- ⚠ Deprecated: To accommodate the monorepo setup, the node version in all templates/demos/examples has changed from 14 to 16. This is not a breaking change as our compile target is still node 14, and node 16 is backward compatible. We still recommend you start using
node-version: "16"
in your.github/workflows/update-feed.yaml
today to get the performance/security improvements from the newer node. See example. - Chore: Reorganize to monorepo with npm workspace.
- Fixed: Static files were unnecessarily copied for custom templates.
- Added: Templating system. Demo | Source | Docs
- Chore: Rendering logic refactoring. Adopting functional paradigm.
- Thank you @tianheg, @onnyyonn
- Added: Link from the title of a subscription to its website.
- Added: Store
feedUrl
andsiteUrl
for each source in cache. - Added: Semantic element (
<time>
) for timestamp on the UI. - Added: Semantic API for theming the default template.
- Changed: Moved feed metadata from article level to feed level in cache.
- Fixed: Any html-like text was stripped from title. Fixed with encoded text.
- Removed:
href
for each source in cache. The value was never used so it's not a breaking change.
- Added: Atom feed generator
- Added: Customizable site title
- Added: Copy all files from
static
directory to the root of the site. - Changed: Favicon, css, and js assets now existing at site root level.
- Chore: Excluded testing files from repo.
- Added: Basic theme customization. See documentation.
- Fixed: Avoid crwalers.
- Fixed: Error logging from XML parser.
- Fixed: Typo in docs.
- Thank you: @dym-sh, @tabokie, @cheese1
- Added: Customize cache lifespan with
cacheMaxDays
property inosmosfeed.yaml
. - Added: Documentation for
osmosfeed.yaml
. - Fixed: More intuitive logging during build.
- Chore: Refactored parameter passing for
enrich
step.
- Changed: favicon update.
- Added: Display CLI version in footer.
- Fixed: The output website didn't have favicon.
- Fixed: Item description didn't use the
description
property from feed item.
- Added: MIT license
- Added:
cache.json
is stamped with the version of the builder. This allows future builder with breaking change to ignore incompatible cache. - Added: Feed source retry on fetch error (3 times total, 15 seconds timeout).
- Added: Item enrichment retry on fetch error (3 times total, 15 seconds timeout).
- Added: Console log for cache restore and update behavior.
- Added: npx command:
npx osmosfeed
- Changed: Improved console log that breaks down rendered item count into "new" and "cached".
- Fixed: Item enrichment timeout could crash the build.
- Changed: Runtime dependencies are moved out of devDependencies. This is not a breaking change, but to receive performance benefit, you need to make sure
@osmoscraft/osmosfeed
is listed asdependencies
instead ofdevDependencies
in thepackage.json
of your rss reader site. - Changed: Build target from node12 to node14.
- Changed: Switched to a more robust rss parser: rss-parser
- Fixed: RSS 1.0 feed
<dc:date>
was not parsed as publish date. - Chore: npm dependencies version updates.
- Pre-releases and prototypes.