feed-repeat v1.1.0
·
16 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
feed-repeat is a small Haskell tool that resurfaces older entries from RSS/Atom feeds by writing weighted-random selections to new Atom feeds. See the README.md for what it does and how to use it.
Get it
- Docker / Podman:
ghcr.io/abhin4v/feed-repeat:1.1.0 - Static binaries: attached below (
x86_64-linux,aarch64-linux) - Source:
cabal buildornix-build nix/release.nix
Verify the binaries
sha256sum -c feed-repeat-x86_64.sha256 # or
shasum -a 256 -c feed-repeat-x86_64.sha256
Reporting issues
Bugs: open an issue.
Security: SECURITY.md.
Changelog
Added
- Passthrough of new entries from source feed to output feed via
passthroughNewEntriesconfig option. - SSRF protection for source feed URLs — DNS resolution and IP range validation before connecting.
- HTTP 429 (Too Many Requests) detection — treated like 304, falls back to cached feed.
- Source feed deduplication across tasks sharing the same URL.
- Canonicalization of output and cache directory paths.
- ETag and Last-Modified header persistence for conditional feed fetches.
- Configurable
User-Agentheader via--user-agentCLI option. - Configurable service username in the NixOS module via the
userNameoption. - A GitHub Action workflow to generate and host the generated feeds on GitHub Pages.
devToolsparameter throughout the Nix build files for faster Nix shell builds without HLS and other dev tools.
Changed
- Cache files are now per-task instead of per-source, enabling different
saveSourceFeedEntriesper task for the same source URL. Old cache files are migrated automatically to the new file names. - Credentials embedded in source feed URLs (e.g.,
https://token@host/feed) are now redacted from all log output. - Explicit dependency version bounds.
- Minimum supported GHC version is now 9.10 (Cabal 3.12+), no support for GHC 9.6 and 9.8.
Fixed
- HTTP retry for server errors — retry logic was previously broken because 5xx exceptions bypassed the retry loop. Server errors are now properly retried with exponential backoff.
- Statically-linked build for AArch64 — the Nix GC root was not being created.
- URL credentials in source feed URLs were not being sent with HTTP requests, breaking authentication for feeds that require them. The original URL is now preserved as-is for the request.
Removed
- Legacy cache file migration code.