Miniflux 2.2.12

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

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

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

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

* 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).

* 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

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