Skip to content

Releases: visualfusion/feedkeeper

FeedKeeper 0.28.4

Choose a tag to compare

@visualfusion visualfusion released this 18 Oct 13:59

This bugfix release improves full-text image extraction for lazy-loaded publisher images and image proxy diagnostics.

  • Resolve lazy-loaded images: Automatically convert data-lazy-src, data-src, data-original, and responsive data-lazy-srcset / data-srcset attributes into standard src and srcset attributes before article readability parsing, ensuring images on WordPress and similar publishers are extracted with their real URLs.
  • Image proxy diagnostics: Log upstream fetch failures on /api/v1/items/:id/image with status and URL details.

FeedKeeper 0.28.3

Choose a tag to compare

@visualfusion visualfusion released this 18 Oct 11:40

This bugfix release improves feed auto-discovery resilience and subscription error reporting.

  • Resilient feed discovery: Errors during the initial page inspection (such as Cloudflare challenges on website landing pages) no longer abort the entire auto-discovery process, allowing alternate common feed paths to be probed.
  • Trailing-slash candidates: Common feed probes now include /feed/ and /rss/, and trailing-slash URL variants are automatically probed when an input URL returns no direct feed result.
  • Differentiated subscription errors: Feed poll failures during initial subscription now propagate specific error codes (such as HTTP 403 or network errors) to clients instead of generic no-feeds-found errors.

FeedKeeper 0.28.2

Choose a tag to compare

@visualfusion visualfusion released this 18 Oct 07:16

This bugfix release keeps textless media out of new editions and tidies up repeated author metadata in the reader.

  • Readable editions: Video/audio-only entries and read-more placeholders are excluded from edition candidates and publication, regardless of publisher. Short reports, summaries and transcripts remain eligible; library entries and existing editions stay intact.
  • Cleaner bylines: Repeated author and date lines are removed even when publishers wrap them in standalone inline elements. Author attribution stays when it is not available separately, and mentions within the story are preserved.

FeedKeeper 0.28.1

Choose a tag to compare

@visualfusion visualfusion released this 17 Oct 14:44

This bugfix release improves reader cleanup for product cards, empty ad slots and duplicate responsive images.

  • Product card and ad slot cleanup: Remove orphan product-card headers and empty ad-slot labels, including wrappers left by full-text extraction, with German, English and Japanese label recognition. Actual advertising, affiliate disclosures and sponsored-article labels are preserved.
  • Deduplicate adjacent images: Collapse identical adjacent desktop and mobile image copies in reader HTML while preserving distinct sources, links, responsive sources, captions and repetitions separated by text. Stored publisher HTML remains untouched.

FeedKeeper 0.28.0

Choose a tag to compare

@visualfusion visualfusion released this 17 Oct 12:12

This release strengthens account isolation in the web reader and keeps empty gallery entries out of article streams.

  • Account-safe offline reading: Offline articles and pending changes now belong to the signed-in account. Login changes and expired sessions clear private browser responses, and late requests cannot refill a later session’s cache. Other tabs refresh their account binding when the account changes.
  • Cleaner article streams: Gallery links without meaningful text are filtered from lists, search, notifications and curated candidates. Short articles and photo captions remain visible, and saved or annotated articles stay accessible.
  • Upgrade: Existing offline copies without account ownership are discarded; sign in online once to download a fresh copy. Migration 0040_empty_gallery.sql classifies existing articles gradually in the background without removing publisher content or saved state.

FeedKeeper 0.27.2

Choose a tag to compare

@visualfusion visualfusion released this 16 Oct 11:11

FeedKeeper 0.27.2 brings major performance optimizations across database indexing, delta sync hydration, reader noise filtering, and background job scheduling.

• Database and query performance: Connection pragmas configure memory-backed temporary storage and a 64 MB cache with normal WAL checkpoints. Full-text search queries page article IDs before loading HTML blobs, avoiding large temporary sort tables, and cleanup queries avoid correlated JSON lookups.
• Delta sync and hydration: Changes to item content, reading states, bookmarks, and notes are hydrated in batch queries instead of per-entity lookups, and sequence numbers remain strictly monotonic across change log pruning.
• Reader noise cleaning: Leading character counting now short-circuits once the start of the article is passed, eliminating quadratic range calculations on long documents.
• Worker and cache reliability: Full-text worker queues back off adaptively when waiting for scheduled items, image caching rejects known missing URLs immediately before queueing, and access token last-used touches are throttled to every 5 minutes.

Migration 0039_performance_indexes.sql adds composite indexes for cascade deletes, housekeeping, item pagination, and full-text candidates, along with monotonic sequence floor triggers. Existing data is preserved automatically.

FeedKeeper 0.27.1

Choose a tag to compare

@visualfusion visualfusion released this 16 Oct 09:12

FeedKeeper 0.27.1 makes the new authors reach the apps that already know an article, and widens a few reader rules to English.

  • Authors on synced clients. When a feed's next poll adds or changes an item's author, the item's content revision moves, so apps that sync by revision fetch it once more and show the name. Before, only articles an app loaded after the poll had an author. No full text is fetched again.
  • English forms of the new rules. Bylines such as "Posted by" or "Words by", comment-rule headings such as "Community guidelines" and "House rules", and ad labels such as "Ad", "Sponsored content" and "Paid content" are handled like their German counterparts.

The release adds one migration (a trigger); nothing needs to be done. After the update, the next poll of each feed moves the revision of the items that gain an author.

FeedKeeper 0.27.0

Choose a tag to compare

@visualfusion visualfusion released this 16 Oct 08:04

FeedKeeper 0.27.0 puts a name to the story: articles now show who wrote them, and a few more bits of page clutter stay out of the reader.

  • Authors. Items carry the author their feed names and the web reader shows it beside the date. When there are several authors, all of them are listed. Addresses without a name, generic names such as "admin" or "editorial staff" and the publication's own name are left out. Clients can look for item.author.
  • Video players. The play-button picture of a player that needs the publisher's script no longer shows up as a broken image. A player with an address stays as one plain link to the video (embeds of YouTube, Vimeo and Dailymotion included); a player without one is left out.
  • Less page chrome. Bylines that only repeat the author or the date, a comment section's house rules at the end of an article, an "Advertisement" or "Sponsored" label with no ad behind it and shop cards without a picture no longer clutter the reader.

Items get their author on the next poll of their feed. The release adds one migration (a nullable column); nothing else needs to be done.

FeedKeeper 0.26.6

Choose a tag to compare

@visualfusion visualfusion released this 16 Oct 06:19

A reader-quality release: pictures come in better, and a few things that never belonged in the article text are gone.

  • Larger hero pictures: When a feed only offers a thumbnail of a picture (a size in the file name such as …__wide__148 or …-720x405.jpg) and the article shows the same picture in a clearly larger size, that size is now used, up to 2000 px wide. It applies to new items and as soon as an article's full text is stored.
  • One badge instead of two: A link that holds a light and a dark variant of the same badge no longer shows both at full size in the reader. It keeps its label as text, and the publisher's call to action stays.
  • No structured data in the text: JSON-LD that a page framework renders as an element of any name no longer shows up as article text.
  • Dates and reading times: A line that is only a date or a reading time (15. Oktober 2026, 10:51 Uhr, 2 min, 4 min read) near the start of an article is dropped, since the reader shows both in its own head. The same lines further into the story stay.
  • Dependency update: ipaddr.js 2.5.0 for the address check on feed hosts. It recognises more special-purpose ranges as non-public and treats short forms such as 127.1 as loopback; nothing that was blocked before is allowed now (#20).

No migration and nothing to do when upgrading.

FeedKeeper 0.26.5

Choose a tag to compare

@visualfusion visualfusion released this 15 Oct 11:57

A small release with one welcome addition from the community: a guide for putting FeedKeeper behind a reverse proxy.

  • Reverse-proxy guide: docs/reverse-proxy.md walks through HTTPS with Caddy, nginx and Traefik using Docker Compose. It covers PUBLIC_URL and HSTS, TRUST_PROXY for single and chained proxies, when CLIENT_IP_HEADER is needed (Cloudflare, and hosts that overwrite X-Forwarded-For), the request-body limit for OPML imports on nginx, and the optional buffering settings for the MCP endpoint. Written by @Aaqibhafeezkhan in #32, thank you!

No code changes and nothing to do when upgrading.