github miniflux/v2 2.2.12
Miniflux 2.2.12

latest release: v2.2.12
15 days ago

✨ 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.

Don't miss a new v2 release

NewReleases is sending notifications on new releases.