Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: askedrelic/miniflux

Tags

2.1.1

Toggle 2.1.1's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.1.1

* Move search form to a dedicated page
* Add Readeck integration
* Add feed option to disable HTTP/2 to avoid fingerprinting
* Add `Enter` key as a hotkey to open selected item
* Proxify `video` element `poster` attribute
* Add a couple of new possible locations for feeds
    * Hugo likes to generate `index.xml`
    * `feed.atom` and `feed.rss` are used by enterprise-scale/old-school gigantic CMS
* Fix categories import from Thunderbird's OPML
* Fix logo misalignment when using languages that are more verbose than English
* Google Reader: Do not return a 500 error when no items is returned
* Handle RDF feeds with duplicated `<title>` elements
* Sort integrations alphabetically
* Add more URL validation in media proxy
* Add unit test to ensure each translation has the correct number of plurals
* Add missing plurals for some languages
* Makefile: quiet `git describe` and `rev-parse` stderr: When building from a tarball instead of a cloned git repo, there would be two `fatal: not a git repository` errors emitted even though the build succeeds. This is because of how `VERSION` and `COMMIT` are set in the Makefile. This PR suppresses the stderr for these variable assignments.
* Makefile: do not force `CGO_ENABLED=0` for `miniflux` target
* Add GitHub Action pipeline to build packages on-demand
* Remove Golint (deprecated), use `staticcheck` and `golangci-lint` instead
* Build amd64/arm64 Debian packages with CGO disabled
* Update `go.mod` and add `.exe` suffix to Windows binary
* Add a couple of fuzzers
* Fix CodeQL workflow
* Code and performance improvements:
    * Use an `io.ReadSeeker` instead of an `io.Reader` to parse feeds
    * Speed up the sanitizer:
        - Allow Youtube URLs to start with `www`
        - Use `strings.Builder` instead of a `bytes.Buffer`
        - Use a `strings.NewReader` instead of a `bytes.NewBufferString`
        - Sprinkles a couple of `continue` to make the code-flow more obvious
        - Inline calls to `inList`, and put their parameters in the right order
        - Simplify `isPixelTracker`
        - Simplify `isValidIframeSource`, by extracting the hostname and comparing it directly, instead of using the full url and checking if it starts with multiple variations of the same one (`//`, `http:`, `https://` multiplied by `/www.`)
        - Add a benchmark
        - Instead of having to allocate a ~100 keys map containing possibly dynamic values (at least to the go compiler), allocate it once in a global variable. This significantly speeds things up, by reducing the garbage
        - Use constant time access for maps instead of iterating on them
        - Build a ~large whitelist map inline instead of constructing it item by item (and remove a duplicate key/value pair)
        - Use `slices` instead of hand-rolled loops
    collector/allocator involvements.
    * Reuse a `Reader` instead of copying to a buffer when parsing an Atom feed
    * Preallocate memory when exporting to OPML: This should marginally increase performance when exporting a large amount of feeds to OPML
    * Delay call of `view.New` after logging the user in: There is no need to do extra work like creating a session and its associated view until the user has been properly identified and as many possibly-failing sql request have been successfully run
    * Use constant-time comparison for anti-csrf tokens: This is probably completely overkill, but since anti-csrf tokens are secrets, they should be compared against untrusted inputs in constant time
    * Simplify and optimize `genericProxyRewriter`
        - Reduce the amount of nested loops: it's preferable to search the whole page once and filter on it (even with filters that should always be false), than searching it again for every element we're looking for.
        - Factorize the proxying conditions into a `shouldProxy` function to reduce the copy-pasta.
    * Speed up `removeUnlikelyCandidates`: `.Not` returns a brand new `Selection`, copied element by element
    * Improve `EstimateReadingTime`'s speed by a factor 7
        - Refactorise the tests and add some
        - Use 250 signs instead of the whole text
        - Only check for Korean, Chinese and Japanese script
        - Add a benchmark
        - Use a more idiomatic control flow
    * Don't compute reading-time when unused: If the user doesn't display reading times, there is no need to compute them. This should speed things up a bit, since `whatlanggo.Detect` is abysmally slow.
    * Simplify `username` generation for the integration tests: No need to generate random numbers 10 times, generate a single big-enough one. A single int64 should be more than enough
    * Add missing regex anchor detected by CodeQL
    * Don't mix up slices capacity and length
    * Use prepared statements for intervals, `ArchiveEntries` and `updateEnclosures`
    * Use modern for-loops introduced with Go 1.22
    * Remove a superfluous condition: No need to check if the length of `line` is positive since we're checking afterwards that it contains the `=` sign
    * Close resources as soon as possible, instead of using `defer()` in a loop
    * Remove superfluous escaping in a regex
    * Use `strings.ReplaceAll` instead of `strings.Replace(…, -1)`
    * Use `strings.EqualFold` instead of `strings.ToLower(…) ==`
    * Use `.WriteString(` instead of `.Write([]byte(…`
    * Use `%q` instead of `"%s"`
    * Make `internal/worker/worker.go` read-only
    * Use a switch-case construct in `internal/locale/plural.go` instead of an avalanche of `if`
    * Template functions: simplify `formatFileSize` and `duration` implementation
    * Inline some templating functions
    * Make use of `printer.Print` when possible
    * Add a `printer.Print` to `internal/locale/printer.go`: No need to use variadic functions with string format interpolation to generate static strings
    * Minor code simplification in `internal/ui/view/view.go`: No need to create the map item by item when we can create it in one go
    * Build the map inline in `CountAllFeeds()`: No need to build an empty map to then add more fields in it one by one
    * Miscellaneous improvements to `internal/reader/subscription/finder.go`:
        - Surface `localizedError` in `FindSubscriptionsFromWellKnownURLs` via `slog`
        - Use an inline declaration for new subscriptions, like done elsewhere in the
        file, if only for consistency's sake
        - Preallocate the `subscriptions` slice when using an RSS-bridge,
    * Use an update-where for `MarkCategoryAsRead` instead of a subquery
    * Simplify `CleanOldUserSessions`' query: No need for a subquery, filtering on `created_at` directly is enough
    * Simplify `cleanupEntries`' query
        - `NOT (hash=ANY(%4))` can be expressed as `hash NOT IN $4`
        - There is no need for a subquery operating on the same table, moving the conditions out is equivalent.
    * Reformat `ArchiveEntries`'s query for consistency's sake and replace the `=ANY` with an `IN`
    * Reformat the query in `GetEntryIDs` and `GetReadTime`'s query for consistency's sake
    * Simplify `WeeklyFeedEntryCount`: No need for a `BETWEEN`: we want to filter on entries published in the last week, no need to express is as "entries published between now and last week", "entries published after last week" is enough
    * Add some tests for `add_image_title`
    * Remove `github.com/google/uuid` dependencies: Replace it with a hand-rolled implementation. Heck, an UUID isn't even a requirement according to Omnivore API docs
    * Simplify `internal/reader/icon/finder.go`:
        - Use a simple regex to parse data uri instead of a hand-rolled parser, and document what fields are considered mandatory.
        - Use case-insensitive matching to find (fav)icons, instead of doing the same query twice with different letter cases
        - Add `apple-touch-icon-precomposed.png` as a fallback `favicon`
        - Reorder the queries to have `icon` first, since it seems to be the most popular one. It used to be last, meaning that pages had to be parsed completely 4 times, instead of one now.
        - Minor factorisation in `findIconURLsFromHTMLDocument`
    * Small refactoring of `internal/reader/date/parser.go`:
        - Split dates formats into those that require local times and those who don't, so that there is no need to have a switch-case in the for loop with around 250 iterations at most.
        - Be more strict when it comes to timezones, previously invalid ones like -13 were accepted. Also add a test for this.
        - Bail out early if the date is an empty string.
    * Make use of Go ≥ 1.21 slices package instead of hand-rolled loops
    * Reorder the fields of the `Entry` struct to save some memory
* Dependencies update:
    * Bump `golang.org/x/oauth2` from `0.17.0` to `0.18.0`
    * Bump `github.com/prometheus/client_golang` from `1.18.0` to `1.19.0`
    * Bump `github.com/tdewolff/minify/v2` from `2.20.16` to `2.20.18`
    * Bump `github.com/PuerkitoBio/goquery` from `1.8.1` to `1.9.1`
    * Bump `golang.org/x/crypto` from `0.19.0` to `0.20.0`
    * Bump `github.com/go-jose/go-jose/v3` from `3.0.1` to `3.0.3`

v2.1.1

Toggle v2.1.1's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.1.1

* Move search form to a dedicated page
* Add Readeck integration
* Add feed option to disable HTTP/2 to avoid fingerprinting
* Add `Enter` key as a hotkey to open selected item
* Proxify `video` element `poster` attribute
* Add a couple of new possible locations for feeds
    * Hugo likes to generate `index.xml`
    * `feed.atom` and `feed.rss` are used by enterprise-scale/old-school gigantic CMS
* Fix categories import from Thunderbird's OPML
* Fix logo misalignment when using languages that are more verbose than English
* Google Reader: Do not return a 500 error when no items is returned
* Handle RDF feeds with duplicated `<title>` elements
* Sort integrations alphabetically
* Add more URL validation in media proxy
* Add unit test to ensure each translation has the correct number of plurals
* Add missing plurals for some languages
* Makefile: quiet `git describe` and `rev-parse` stderr: When building from a tarball instead of a cloned git repo, there would be two `fatal: not a git repository` errors emitted even though the build succeeds. This is because of how `VERSION` and `COMMIT` are set in the Makefile. This PR suppresses the stderr for these variable assignments.
* Makefile: do not force `CGO_ENABLED=0` for `miniflux` target
* Add GitHub Action pipeline to build packages on-demand
* Remove Golint (deprecated), use `staticcheck` and `golangci-lint` instead
* Build amd64/arm64 Debian packages with CGO disabled
* Update `go.mod` and add `.exe` suffix to Windows binary
* Add a couple of fuzzers
* Fix CodeQL workflow
* Code and performance improvements:
    * Use an `io.ReadSeeker` instead of an `io.Reader` to parse feeds
    * Speed up the sanitizer:
        - Allow Youtube URLs to start with `www`
        - Use `strings.Builder` instead of a `bytes.Buffer`
        - Use a `strings.NewReader` instead of a `bytes.NewBufferString`
        - Sprinkles a couple of `continue` to make the code-flow more obvious
        - Inline calls to `inList`, and put their parameters in the right order
        - Simplify `isPixelTracker`
        - Simplify `isValidIframeSource`, by extracting the hostname and comparing it directly, instead of using the full url and checking if it starts with multiple variations of the same one (`//`, `http:`, `https://` multiplied by `/www.`)
        - Add a benchmark
        - Instead of having to allocate a ~100 keys map containing possibly dynamic values (at least to the go compiler), allocate it once in a global variable. This significantly speeds things up, by reducing the garbage
        - Use constant time access for maps instead of iterating on them
        - Build a ~large whitelist map inline instead of constructing it item by item (and remove a duplicate key/value pair)
        - Use `slices` instead of hand-rolled loops
    collector/allocator involvements.
    * Reuse a `Reader` instead of copying to a buffer when parsing an Atom feed
    * Preallocate memory when exporting to OPML: This should marginally increase performance when exporting a large amount of feeds to OPML
    * Delay call of `view.New` after logging the user in: There is no need to do extra work like creating a session and its associated view until the user has been properly identified and as many possibly-failing sql request have been successfully run
    * Use constant-time comparison for anti-csrf tokens: This is probably completely overkill, but since anti-csrf tokens are secrets, they should be compared against untrusted inputs in constant time
    * Simplify and optimize `genericProxyRewriter`
        - Reduce the amount of nested loops: it's preferable to search the whole page once and filter on it (even with filters that should always be false), than searching it again for every element we're looking for.
        - Factorize the proxying conditions into a `shouldProxy` function to reduce the copy-pasta.
    * Speed up `removeUnlikelyCandidates`: `.Not` returns a brand new `Selection`, copied element by element
    * Improve `EstimateReadingTime`'s speed by a factor 7
        - Refactorise the tests and add some
        - Use 250 signs instead of the whole text
        - Only check for Korean, Chinese and Japanese script
        - Add a benchmark
        - Use a more idiomatic control flow
    * Don't compute reading-time when unused: If the user doesn't display reading times, there is no need to compute them. This should speed things up a bit, since `whatlanggo.Detect` is abysmally slow.
    * Simplify `username` generation for the integration tests: No need to generate random numbers 10 times, generate a single big-enough one. A single int64 should be more than enough
    * Add missing regex anchor detected by CodeQL
    * Don't mix up slices capacity and length
    * Use prepared statements for intervals, `ArchiveEntries` and `updateEnclosures`
    * Use modern for-loops introduced with Go 1.22
    * Remove a superfluous condition: No need to check if the length of `line` is positive since we're checking afterwards that it contains the `=` sign
    * Close resources as soon as possible, instead of using `defer()` in a loop
    * Remove superfluous escaping in a regex
    * Use `strings.ReplaceAll` instead of `strings.Replace(…, -1)`
    * Use `strings.EqualFold` instead of `strings.ToLower(…) ==`
    * Use `.WriteString(` instead of `.Write([]byte(…`
    * Use `%q` instead of `"%s"`
    * Make `internal/worker/worker.go` read-only
    * Use a switch-case construct in `internal/locale/plural.go` instead of an avalanche of `if`
    * Template functions: simplify `formatFileSize` and `duration` implementation
    * Inline some templating functions
    * Make use of `printer.Print` when possible
    * Add a `printer.Print` to `internal/locale/printer.go`: No need to use variadic functions with string format interpolation to generate static strings
    * Minor code simplification in `internal/ui/view/view.go`: No need to create the map item by item when we can create it in one go
    * Build the map inline in `CountAllFeeds()`: No need to build an empty map to then add more fields in it one by one
    * Miscellaneous improvements to `internal/reader/subscription/finder.go`:
        - Surface `localizedError` in `FindSubscriptionsFromWellKnownURLs` via `slog`
        - Use an inline declaration for new subscriptions, like done elsewhere in the
        file, if only for consistency's sake
        - Preallocate the `subscriptions` slice when using an RSS-bridge,
    * Use an update-where for `MarkCategoryAsRead` instead of a subquery
    * Simplify `CleanOldUserSessions`' query: No need for a subquery, filtering on `created_at` directly is enough
    * Simplify `cleanupEntries`' query
        - `NOT (hash=ANY(%4))` can be expressed as `hash NOT IN $4`
        - There is no need for a subquery operating on the same table, moving the conditions out is equivalent.
    * Reformat `ArchiveEntries`'s query for consistency's sake and replace the `=ANY` with an `IN`
    * Reformat the query in `GetEntryIDs` and `GetReadTime`'s query for consistency's sake
    * Simplify `WeeklyFeedEntryCount`: No need for a `BETWEEN`: we want to filter on entries published in the last week, no need to express is as "entries published between now and last week", "entries published after last week" is enough
    * Add some tests for `add_image_title`
    * Remove `github.com/google/uuid` dependencies: Replace it with a hand-rolled implementation. Heck, an UUID isn't even a requirement according to Omnivore API docs
    * Simplify `internal/reader/icon/finder.go`:
        - Use a simple regex to parse data uri instead of a hand-rolled parser, and document what fields are considered mandatory.
        - Use case-insensitive matching to find (fav)icons, instead of doing the same query twice with different letter cases
        - Add `apple-touch-icon-precomposed.png` as a fallback `favicon`
        - Reorder the queries to have `icon` first, since it seems to be the most popular one. It used to be last, meaning that pages had to be parsed completely 4 times, instead of one now.
        - Minor factorisation in `findIconURLsFromHTMLDocument`
    * Small refactoring of `internal/reader/date/parser.go`:
        - Split dates formats into those that require local times and those who don't, so that there is no need to have a switch-case in the for loop with around 250 iterations at most.
        - Be more strict when it comes to timezones, previously invalid ones like -13 were accepted. Also add a test for this.
        - Bail out early if the date is an empty string.
    * Make use of Go ≥ 1.21 slices package instead of hand-rolled loops
    * Reorder the fields of the `Entry` struct to save some memory
* Dependencies update:
    * Bump `golang.org/x/oauth2` from `0.17.0` to `0.18.0`
    * Bump `github.com/prometheus/client_golang` from `1.18.0` to `1.19.0`
    * Bump `github.com/tdewolff/minify/v2` from `2.20.16` to `2.20.18`
    * Bump `github.com/PuerkitoBio/goquery` from `1.8.1` to `1.9.1`
    * Bump `golang.org/x/crypto` from `0.19.0` to `0.20.0`
    * Bump `github.com/go-jose/go-jose/v3` from `3.0.1` to `3.0.3`

2.1.0

Toggle 2.1.0's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.1.0

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

2.0.51

Toggle 2.0.51's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.0.51

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

2.0.50

Toggle 2.0.50's commit message
Miniflux 2.0.50

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

2.0.49

Toggle 2.0.49's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.0.49

* 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

v2.0.49

Toggle v2.0.49's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.0.49

* 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

2.0.48

Toggle 2.0.48's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.0.48

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

v2.0.48

Toggle v2.0.48's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.0.48

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

2.0.46

Toggle 2.0.46's commit message

Verified

This tag was signed with the committer’s verified signature.
fguillot Frédéric Guillot
Miniflux 2.0.46

* 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