Miniflux logo

Miniflux

Minimalist and opinionated feed reader

Alternative to: feedly, inoreader, newsblur


About Versions (81)

2.2.12

2025-08-21

✨ New Features

  • Keep only metadata of removed entries to reduce database size.
  • Removed entry status is now immutable and cannot be changed back to unread or read status.
  • SVG favicons are now minified before storing them in the database.
  • Added support for resizing WebP images.
  • Main menu now includes icons.
  • Added Progressive Web App (PWA) shortcuts for quick access to common actions.
  • Added direct link to the Apache 2.0 license on the About page.
  • Feed-level webhook URLs now take priority when saving entries.
  • New option: POLLING_LIMIT_PER_HOST to limit concurrent requests per host. Limits the number of concurrent requests to the same hostname when polling feeds. This helps prevent overwhelming a single server during batch processing by the worker pool.
  • Added a rewrite rule to remove useless heading images on Phoronix articles.
  • Use Golang’s built-in VCS feature to get commit and build date when not specified by LDFLAGS.
  • Disable OAuth2 and WebAuthn routes when the feature is not enabled.
  • Added request URI logging in authentication handlers.

πŸ›  Fixes

  • Limited tsvector indexing to the first 500K characters to avoid PostgreSQL limits.
  • Use rel=apple-touch-icon instead of rel=apple-touch-icon-precomposed.png.
  • Fixed broken WebAuthn error alert message on the settings page.
  • Reverted SameSiteStrict cookie mode because it forces people to authenticate each time when using the PWA on Android.
  • Prevent stale data by forcing reload when navigating back from articles (fix for Chrome’s bfcache).
  • Fixed URL detection capturing newlines in media descriptions.

⚑ Performance Improvements

  • Optimized SQL queries (FetchJobs, markFeedAsRead) by removing unnecessary joins and heavy-weight operations.
  • Improved memory usage by minimizing SVGs, static images, and templates.
  • WebAuthn script (webauthn.js) is no longer loaded when the feature is disabled.
  • Replaced regex-based YouTube and Invidious video ID extraction with URL parsing.
  • Introspect the translation files at load time.
  • Parse and merge filters only once per refresh.

πŸ”§ Refactoring & Internal Changes

  • Extensive refactoring across UI, templates, storage, and fetcher to simplify code and reduce memory allocations.
  • Replaced interface{} with any (Go 1.18+ idiomatic usage).
  • Reorganized JavaScript code: simplified functions, reduced duplication, and modernized handlers.
  • app.js bundle and service worker files are now loaded as a JavaScript module.
  • Use request builder in media proxy handler.

πŸ“š Documentation

  • Fixed typos and updated default values in the man page.
  • Removed ChangeLog file (release notes are visible on GitHub and the official website - use the commit history for more details).

πŸ›  Dependencies

  • Updated GitHub Actions workflows to use Go version 1.25.

  • Updated dependencies:

    • golang.org/x/net β†’ 0.43.0
    • golang.org/x/image β†’ 0.30.0
    • golang.org/x/term β†’ 0.34.0
    • github.com/tdewolff/minify/v2 β†’ 2.23.11
    • github.com/coreos/go-oidc/v3 β†’ 3.15.0
    • github.com/prometheus/client_golang β†’ 1.23.0
    • GitHub Actions: actions/checkout bumped to v5

βœ… Tests

  • Added API integration tests for fetching categories with counters.
  • Added tests for icon URL discovery, SVG minification error handling, and version format enforcement.
  • Added unit tests for RequestBuilder.
  • Avoided building a temporary binary for integration tests.

For more details, look at the commit history.