Version 2.1.0 (February 17, 2024) --------------------------------- * Add Linkwarden integration * Add LinkAce integration * Add `FORCE_REFRESH_INTERVAL` config option * Add `item-meta-info-reading-time` CSS class * Add `add_dynamic_iframe` rewrite function * Add attribute `data-original-mos` to `add_dynamic_image` rewrite candidates * Update entry processor to allow blocking/keeping entries by tags and/or authors * Change default `Accept` header when fetching feeds * Rewrite relative RSS Bridge URL to absolute URL * Use numeric user ID in Alpine and distroless container image (avoid `securityContext` error in Kubernetes) * Always try to use HTTP/2 when fetching feeds if available * Add `type` attribute in OPML export as per OPML 2.0 specs * Fix missing translation argument for the key `error.unable_to_parse_feed` * Fix Debian package builder when using Go 1.22 and `armhf` architecture * Fix typo in log message * Fix incorrect label shown when saving an article * Fix incorrect condition in refresh feeds cli * Fix incorrect label `for` attribute * Add missing label ID for custom CSS field * Accessibility improvements: * Add workaround for macOS VoiceOver that didn't announce `details` and `summary` when expanded * Add `alert` role to alert message element * Add a `h2` heading to the article element so that the screen reader users can navigate the article through the heading level * Add an `aria-label` attribute for the article element for screen readers * Remove the icon image `alt` attribute in feeds list to prevent screen reader to announce it before entry title * Add `sr-only` CSS class for screen reader users (provides more context) * Differentiate between buttons and links * Change links that could perform actions to buttons * Improve translation of hidden Aria elements * Remove the redundant article role * Add a search landmark for the search form so that the screen reader users can navigate to it * Add skip to content link * Add `nav` landmark to page header links * Limit feed/category entry pagination to unread entries when coming from unread entry list * Update German translation * Update GitHub Actions to Go 1.22 * Bump `golang.org/x/term` from `0.16.0` to `0.17.0` * Bump `github.com/google/uuid` from `1.5.0` to `1.6.0` * Bump `github.com/yuin/goldmark` from `1.6.0` to `1.7.0` * Bump `golang.org/x/oauth2` from `0.15.0` to `0.17.0` * Bump `github.com/tdewolff/minify/v2` from `2.20.10` to `2.20.12` * Bump `golang.org/x/term` from `0.15.0` to `0.16.0` * Bump `github.com/prometheus/client_golang` from `1.17.0` to `1.18.0` * Bump `github.com/tdewolff/minify/v2` from `2.20.9` to `2.20.16` * Bump `golang.org/x/crypto` from `0.16.0` to `0.19.0` * Bump `github.com/go-webauthn/webauthn` from `0.9.4` to` 0.10.1` * Bump `golang.org/x/net` from `0.20.0` to `0.21.0` Version 2.0.51 (December 13, 2023) ---------------------------------- * Add Omnivore integration * Fixes for the regressions introduced in version 2.0.50: * Ensure all HTML documents are encoded in UTF-8 * Send default User-Agent and HTTP caching headers when making HTTP requests * Allow Youtube links to be opened outside the `iframe` (avoid `ERR_BLOCKED_BY_RESPONSE` error) * Fix inaccessible metrics endpoint when listening on Unix socket * Allow renaming and moving feed at the same time in the Google Reader API * Log `nb_jobs` only when number of jobs is larger than 0 in background scheduler * Deduplicate feed URLs when parsing HTML document during discovery process * Calculate a virtual weekly count based on the average updating frequency (`POLLING_SCHEDULER=entry_frequency`) * Update GitHub Actions workflow to be able to run the linter and tests on-demand * Add `SCHEDULER_ROUND_ROBIN_MIN_INTERVAL` config option * Add links to GitHub for the commit hash and the version in the about page * Use "starred" rather than "bookmarked" in English translation * Update Chinese (CN & TW) translation * Bump `github.com/google/uuid` from `1.4.0` to `1.5.0` * Bump `github.com/coreos/go-oidc/v3` from `3.7.0` to `3.9.0` * Bump `github.com/tdewolff/minify/v2` from `2.20.6` to `2.20.9` * Bump `github.com/go-webauthn/webauthn` from `0.8.6` to `0.9.4` * Bump `golang.org/x/oauth2` from `0.14.0` to `0.15.0` Version 2.0.50 (November 12, 2023) ---------------------------------- * Add WebAuthn / Passkey integration * Add RSS-Bridge integration * Take RSS TTL field into consideration to schedule next check date * Show number of visible entries instead of number of read entries in feed list * OpenID Connect: Redirect to configured user home page after successful authentication * Google Reader API fixes: * `user/{userID}/state/com.google/read` is missing in categories section for read entries * Take `ExcludeTargets` into consideration in feed stream handler * Allow iframes pointing to Twitch videos * Filter feed entries based on URL or title * Take into consideration `hide_globally` property defined for categories in `/v1/entries` API endpoint * Add category ID to webhooks request body * Update date parser to parse more invalid date formats * Refactor feed discovery handler, and avoid an extra HTTP request if the URL provided is the feed * Refactor HTTP Client and `LocalizedError` packages * Refactor Batch Builder, and prevent accidental and excessive refreshes from the web UI * Refactor icon finder: - Continue the discovery process when the feed icon is invalid - Search all icons from the HTML document and do not stop on the first one * Add support for SVG icons with data URL without encoding * Expose `next_check_at` in the web ui and API * Add database indexes to improve performance * Change log level to warning for failed feeds refresh in cronjob * Do not log website without icon as warning * Add GitHub workflow to build binaries * Add GitHub extensions to devcontainer * Make sure to pull the latest base image when building the Docker image * Strip version prefix when building Debian package * Add `github-cli` and `docker-outside-of-docker` features to devcontainer * Bump `golang.org/x/*` dependencies * Bump `github.com/gorilla/mux` from `1.8.0` to `1.8.1` * Bump `github.com/tdewolff/minify/v2` from `2.19.9` to `2.20.6` * Bump `github.com/yuin/goldmark` from `1.5.6` to `1.6.0` * Bump `github.com/coreos/go-oidc/v3` from `3.6.0` to `3.7.0` Version 2.0.49 (October 15, 2023) --------------------------------- * Implement structured logging using `log/slog` package. New config options available: * `LOG_FORMAT`: `json` or `text` * `LOG_LEVEL`: `debug`, `info`, `warning`, or `error` * `LOG_FILE`: `sdterr`, `stdout`, or a file path * The `DEBUG` option is now deprecated in favor of `LOG_LEVEL` * API Improvements: * Add endpoint `/v1/version` * Add endpoint `PUT /v1/entries` to update entry title and content * Add endpoint `/v1/icons/{iconID}` * Add endpoint `/v1/flush-history` to flush history * Make the category optional when creating feeds for API clients who don't support categories * Add enclosures to `GET /v1/entries` endpoint * Add `published_after`, `published_before`, `changed_after` and `changed_before` options to `/v1/entries` endpoint * Telegram integration improvements: * Replace feed HTML link with a button to avoid page preview issues * Add the possibility to disable buttons * Add Bruno Miniflux API collection in `contrib` folder (Bruno is an open source alternative to Postman/Insomnia) * Add command line argument to export user feeds as OPML * Add new rewrite rules `add_hn_links_using_hack` and `add_hn_links_using_opener` to open HN comments with iOS apps * Fix timestamp format for `Expires` response header * Fix Javascript error when reading time option is disabled * Fix Apprise logic to handle feed service URLs * Fix missing word in force refresh message * Remove deprecated `PreferServerCipherSuites` TLS option * Replace `github.com/rylans/getlang` with `github.com/abadojack/whatlanggo` because `getlang` doesn't seems to be updated anymore * Bump `github.com/mccutchen/go-httpbin/v2` from `2.11.0` to `2.11.1` * Bump `golang.org/x/*` dependencies Version 2.0.48 (September 15, 2023) ----------------------------------- * Add generic webhook integration * Send webhook events when new entries are detected * Send wehbook events when saving an entry * Sign the outgoing requests with HMAC-SHA256 * Improve Telegram integration * Add built-in Telegram client * Remove dependency on `go-telegram-bot-api` library * Add new options: * Optional topic ID * Disable page preview * Disable notifications * Add new button to go to article * Improve Matrix integration * Add built-in Matrix client * Remove dependency on `gomatrix` library * Send HTML formatted messages to Matrix * OpenID Connect authentication improvements: * Add OAuth2 PKCE support * Add `profile` scope to OIDC integration to support accounts without email address * Prevent empty username when using the OIDC integration * Add `factor` for `entry_frequency` scheduler: * Allow the user to increase the frequency of the `entry_frequency` scheduler by a configurable factor in order to shorten the time between updates. * Fix: status bar is unreadable when using PWA in dark mode on Firefox Android * Group form fields into fieldsets to improve page layout * Update Russian translation * Make sure icon URLs are always absolute * Add Apprise service URLs per feed * Trim `username` and `password` form fields * Strip HTML tags from DublinCore Creator tags * Fix scroll up behavior on Firefox Android * Add missing `return` statement in `fetchContent` UI handler * Add `replace_title` rewrite rule to adjust entry titles * Fix Pocket integration redirect URL and Google Reader API HREF * Fix feed `hide_globally` property to use it with third-party clients. Version 2.0.47 (August 20, 2023) -------------------------------- * Update rules for `webtoons.com` * Use HTTP client from the standard library for third-party integrations * Rename internal `url` package to `urllib` to avoid overlap with `net/url` * Add Shaarli integration * Add Shiori integration * Add Apprise integration * Add Readwise Reader integration * Consider base path when generating third-party services API endpoint * Use podcast duration tag as reading time * Move internal packages to an `internal` folder * For reference: * Rename Miniflux package name to follow Go module naming convention * For reference: * Update RockyLinux image from 8 to 9 (used to build RPM package) * Add force refresh in feed edit and feed entries page * Use Odysee video duration as read time * Upgrade to Go 1.21 * Use details disclosure element to show the list of third-party services * Use Web Share API for sharing entry * Add a workaround for parsing some invalid date format * Add Thunder Client API collection into contrib folder * Add new API endpoint: `/entries/{entryID}/save` * Trigger Docker and packages workflows only for semantic tags * Go module versioning expect Git tags to start with the letter v. * The goal is to keep the existing naming convention for generated artifacts and have proper versioning for the Go module. * Bump `golang.org/x/*` dependencies * Bump `github.com/yuin/goldmark` * Bump `github.com/tdewolff/minify/v2` * Bump `github.com/mccutchen/go-httpbin/v2` Version 2.0.46 (July 21, 2023) ------------------------------ * Add scraper and rewrite rules for Webtoons * Fix regression in integration page and simplify SQL query * Wallabag integration: add more information in log messages * Add support for custom Youtube embed URL * Fix accessibility issues in modal component * Fix modal aria role * Trap focusing with tab / shift+tab inside the modal * Restore keyboard focus when closing modal * Automatically move keyboard focus to first focusable element unless specified otherwise * Keyboard shortcut help modal: move keyboard focus to modal title * Keyboard shortcut help modal: change close control from link to button * Add Notion integration * Update `golang.org/x/*` dependencies and `go-oidc` to v3.6.0 * Improve responsive design * Add user setting for marking entry as read on view * Improve Russian translation * Add the possibility to run cleanup tasks from the command line * Add the possibility to run Miniflux as a cronjob * Use `go-httpbin` to run tests locally and avoid remote calls to `httpbin.org` * Display tags when viewing entries * Update categories API endpoint to return `total_unread` and `feed_count` * Improve date parser to handle various broken date formats * Avoid `pq: time zone displacement out of range` errors * Improve entry existance check to make better use of index * Add unique index `enclosures_user_entry_url_idx` * Add mark as unread for Linkding integration * Add sub-folder support for Wallabag integration * Use RockyLinux to build RPM package * Disable CGO when building RPM package * Disable CGO when building Docker images Version 2.0.45 (June 21, 2023) ------------------------------ * Add media player to listen to audio and video podcasts with the possiblity to resume to last playback position * Add default tag names for Linkding integration * Mark only globally visible entries when marking all entries from UI * Use image included in feed as feed icon when available * Order history by `changed_at` and `published_at` * Remove title attribute from entry title links * Fix reading time that is not aligned correctly with the latest version of Safari * Use glyphs of the same size on keyboard shortcuts page * Add maskable versions of the PWA icon * Replace copyright header with SPDX identifier * Remove the "í" letter from the Portuguese "lido" word * Increase golangci-lint timeout value * Bump `github.com/tdewolff/minify/v2`, `github.com/prometheus/client_golang`, `golang.org/x/*` dependencies Version 2.0.44 (May 6, 2023) ---------------------------- * Add link to the URL rewrite rules documentation * Update scraping rules for `ilpost.it` * Update rewrite rules for `theverge.com` * Add a rewrite rule to remove clickbait titles * Make sure `PROXY_IMAGES` option is backward compatible with `PROXY_OPTION` and `PROXY_MEDIA_TYPES` * Add new rule to remove tables * Add support for searching well-known URLs in subdirectory * Add CSS `word-wrap` rule to break very long entry title into multiple lines * Add swipe as option for gesture navigation between entries. There are now 3 possible choices: `none`, `double-tap`, and `swipe`. * Prefer typographic punctuation in English translation * Process older entries first: - Feed entries are usually ordered from most to least recent. - Processing older entries first ensures that their creation timestamp is lower than that of newer entries. - This is useful when we order by creation, because then we get a consistent timeline. * Fix Grafana dashboard * Push Docker images to `Quay.io` (RedHat) * Bump `golang.org/x/*`, `github.com/lib/pq`, `mvdan.cc/xurls/v2` and `github.com/prometheus/client_golang` dependencies Version 2.0.43 (March 16, 2023) ------------------------------- * Avoid XSS when opening a broken image due to unescaped ServerError in proxy handler (CVE-2023-27592) Creating an RSS feed item with the inline description containing an `` tag with a `srcset` attribute pointing to an invalid URL like `http:a`, we can coerce the proxy handler into an error condition where the invalid URL is returned unescaped and in full. This results in JavaScript execution on the Miniflux instance as soon as the user is convinced to open the broken image. * Use `r.RemoteAddr` to check `/metrics` endpoint network access (CVE-2023-27591) HTTP headers like `X-Forwarded-For` or `X-Real-Ip` can be easily spoofed. As such, it cannot be used to test if the client IP is allowed. The recommendation is to use HTTP Basic authentication to protect the metrics endpoint, or run Miniflux behind a trusted reverse-proxy. * Add HTTP Basic authentication for `/metrics` endpoint * Add proxy support for several media types * Parse feed categories from RSS, Atom and JSON feeds * Ignore empty link when discovering feeds * Disable CGO explicitly to make sure the binary is statically linked * Add CSS classes to differentiate between category/feed/entry view and icons * Add rewrite and scraper rules for `blog.cloudflare.com` * Add `color-scheme` to themes * Add new keyboard shortcut to toggle open/close entry attachments section * Sanitizer: allow `id` attribute in `` element * Add Indonesian Language * Update translations * Update Docker Compose examples: - Run the application in one command - Bring back the health check condition to `depends_on` - Remove deprecated `version` element * Update scraping rules for `ilpost.it` * Bump `github.com/PuerkitoBio/goquery` from `1.8.0` to `1.8.1` * Bump `github.com/tdewolff/minify/v2` from `2.12.4` to `2.12.5` * Bump `github.com/yuin/goldmark` from `1.5.3` to `1.5.4` * Bump `golang.org/x/*` dependencies Version 2.0.42 (January 29, 2023) --------------------------------- * Fix header items wrapping * Add option to enable or disable double tap * Improve PWA display mode label in settings page * Bump `golang.org/x/*` dependencies * Update translations * Add scraping rule for `ilpost.it` * Update reading time HTML element after fetching the original web page * Add category feeds refresh feature Version 2.0.41 (December 10, 2022) ---------------------------------- * Reverted PR #1290 (follow the only link) because it leads to several panics/segfaults that prevent feed updates * Disable double-tap mobile gesture if swipe gesture is disabled * Skip integrations if there are no entries to push * Enable TLS-ALPN-01 challenge for ACME - This type of challenge works purely at the TLS layer and is compatible with SNI proxies. The existing HTTP-01 challenge support has been left as-is. * Preconfigure Miniflux for GitHub Codespaces * Updated `golang.org/x/net/*` dependencies Version 2.0.40 (November 13, 2022) ---------------------------------- * Update dependencies * Pin Postgres image version in Docker Compose examples to avoid unexpected upgrades * Make English and Spanish translation more consistent: - Use "Feed" everywhere instead of "Subscription" - Use "Entry" instead of "Article" * Allow Content-Type and Accept headers in CORS policy * Use dirs file for Debian package * Use custom home page in PWA manifest * Fix scraper rule that could be incorrect when there is a redirect * Improve web scraper to fetch the only link present as workaround to some landing pages * Add Matrix bot integration * Proxify images in API responses * Add new options in user preferences to configure sorting of entries in the category page * Remove dependency on `github.com/mitchellh/go-server-timing` * Add support for the `continuation` parameter and result for Google Reader API ID calls * Use automatic variable for build target file names * Add rewrite rule for `recalbox.com` * Improve Dutch translation Version 2.0.39 (October 16, 2022) --------------------------------- * Add support for date filtering in Google Reader API item ID calls * Handle RSS entries with only a GUID permalink * Go API Client: Accept endpoint URLs ending with `/v1/` * CORS API headers: Allow `Basic` authorization header * Log feed URL when submitting a subscription that returns an error * Update `make run` command to execute migrations automatically * Add option to send only the URL to Wallabag * Do not convert anchors to absolute links * Add config option to use a custom image proxy URL * Allow zoom on mobile devices * Add scraping rules for `theverge.com`, `royalroad.com`, `swordscomic.com`, and `smbc-comics.com` * Add Ukrainian translation * Update `golang.org/x/*` dependencies * Bump `github.com/tdewolff/minify/v2` from `2.12.0` to `2.12.4` * Bump `github.com/yuin/goldmark` from `1.4.13` to `1.5.2` * Bump `github.com/lib/pq` from `1.10.6` to `1.10.7` Version 2.0.38 (August 13, 2022) -------------------------------- * Rename default branch from master to main * Update GitHub Actions * Bump `github.com/prometheus/client_golang` from `1.12.2` to `1.13.0` * Fix some linter issues * Handle Atom links with a text/html type defined * Add `parse_markdown` rewrite function * Build RPM and Debian packages automatically using GitHub Actions * Add `explosm.net` scraper rule * Make default home page configurable * Add title attribute to entry links because text could be truncated * Highlight categories with unread entries * Allow option to order by title and author in API entry endpoint * Update Russian translation * Make reading speed user-configurable * Added translation for Hindi language used in India * Add rewrite rules for article URL before fetching content * Bump `github.com/tdewolff/minify/v2` from `2.11.7` to `2.12.0` * Support other repo owners in GitHub Docker Action * Proxify empty URL should not crash * Avoid stretched image if specified width is larger than Miniflux's layout * Add support for OPML files with several nested outlines * sanitizer: handle image URLs in `srcset` attribute with comma * Allow `width` and `height` attributes for `img` tags * Document that `-config-dump` command line argument shows sensitive info * Add System-V init service in contrib folder * Fix syntax error in `RequestBuilder.getCsrfToken()` method Version 2.0.37 (May 27, 2022) ----------------------------- * Add rewrite rule to decode base64 content * Add Linkding integration * Add comment button to Telegram message * Add API endpoint to fetch unread and read counters * Fixes logic bug in Google Reader API sanity check * Reduce number of CORS preflight check to save network brandwidth * Add Espial integration * Allow API search for entries which are not starred * Try to use outermost element text when title is empty * Make swipe gestures feel more natural - Removes opacity transition when swiping an article read/unread - Adds "resistance" to the swiped entry when the 75px threshold is reached - Fixes an issue in which a swiped article couldn't be moved <15px * Add support for feed streams to Google Reader API IDs API * Fix invalid parsing of icon data URL * Add Traditional Chinese translation * Add distroless Docker image variant * Add Go 1.18 to GitHub Action * Bump `github.com/tdewolff/minify/v2` from `2.10.0` to `2.11` * Bump `github.com/prometheus/client_golang` from `1.12.1` to `1.12.2` * Bump `github.com/lib/pq` from `1.10.4` to `1.10.6` Version 2.0.36 (March 8, 2022) ------------------------------ * Gray out pagination buttons when they are not applicable * Use truncated entry description as title if unavailable * Do not fallback to InnerXML if XHTML title is empty * Add `+` keyboard shortcut for new subscription page * Add `(+)` action next to Feeds to quickly add new feeds * Fix unstar not working via Google Reader API * Remove circles in front of page header list items * Fix CSS hover style for links styled as buttons * Avoid showing `undefined` when clicking on read/unread * Add new keyboard shortcut `M` to toggle read/unread, and go to previous item * Add several icons to menus according to their roles * Add missing event argument to `onClick()` function call * Add links to scraper/rewrite/filtering docs when editing feeds * Add a rewrite rule for Castopod episodes * Fix regression: reset touch-item if not in `/unread` page * Add API endpoint to fetch original article * Show the category first in feed settings * Add pagination on top of all entries * Display Go version in "About" page * Bump `mvdan.cc/xurls/v2` from 2.3.0 to 2.4.0 * Bump `github.com/prometheus/client_golang` from 1.11.0 to 1.12.1 * Bump `github.com/tdewolff/minify/v2` from 2.9.28 to 2.10.0 Version 2.0.35 (January 21, 2022) --------------------------------- * Set `read-all` permission to `GITHUB_TOKEN` for GitHub Actions * Pin `jshint` version in linter job * Fix incorrect conversion between integer types * Add new GitHub Actions workflows: CodeQL and Scorecards analysis * Handle Atom feeds with space around CDATA * Bump `github.com/tdewolff/minify/v2` from 2.9.22 to 2.9.28 * Add Documentation directive to Systemd service * Do not reset `touch-item` if successfully swiped * Add support for multiple authors in Atom feeds * Omit `User-Agent` header in image proxy to avoid being blocked * Use custom feed user agent to fetch website icon * Make default Invidious instance configurable * Add new rewrite rule `add_youtube_video_from_id` to add Youtube videos in Quanta articles * Add scrape and rewrite rules for `quantamagazine.org` * Expose entry unshare link in the entry and list views * Add Google Reader API implementation (experimental) * Add `Content-Security-Policy` header to feed icon and image proxy endpoints - SVG images could contain Javascript. This CSP blocks inline script. - Feed icons are served using `` tag and Javascript is not interpreted. * Add Finnish translation * Add scraper rule for `ikiwiki.iki.fi` * Remove `SystemCallFilter` from `miniflux.service` * Fix minor typo in French translation Version 2.0.34 (December 16, 2021) ---------------------------------- * Add rewrite rule for comics website http://monkeyuser.com * Add `` tag to OPML export * Tighten Systemd sandboxing and update comments in `miniflux.service` * Add `RuntimeDirectory` to Systemd service * Order disabled feeds at the end of the list * Add support for theme color based on preferred color scheme of OS * Bump `github.com/lib/pq` from 1.10.3 to 1.10.4 * Bump `github.com/PuerkitoBio/goquery` from 1.7.1 to 1.8.0 * Fix typos in `model/icon.go` * Add `data-srcset` support to `add_dynamic_image rewrite` rewrite rule * Fix Docker Compose example files compatibility to v3 * Added the `role="article"` to `
` elements for better accessibility with screen readers * Redact secrets shown on the about page * Handle `srcset` images with no space after comma * Hide the logout link when using auth proxy * Fix wrong CSS variable * Change `-config-dump` command to use `KEY=VALUE` format Version 2.0.33 (September 25, 2021) ----------------------------------- * Build RPM and Debian package with PIE mode enabled * Add CSS rule to hide `