Tags: miniflux/v2
Tags
Miniflux 2.2.4 * test(rewrite): add unit test for referer rewrite function * refactor(subscription): use `strings.HasSuffix` instead of a regex in `FindSubscriptionsFromYouTubePlaylistPage` * refactor(sanitizer): use `token.String()` instead of `html.EscapeString(token.Data)` * refactor(sanitizer): simplify `isValidTag` * refactor(sanitizer): simplify `hasRequiredAttributes` * refactor(sanitizer): remove condition because `config.Opts` is guaranteed to never be nil * refactor(sanitizer): remove a now-useless function after refactoring * refactor(sanitizer): refactor conditions to highlight their similitude, enabling further refactoring * refactor(sanitizer): optimize `strip_tags.go` * refactor(sanitizer): micro-optimizations of `srcset.go` * refactor(sanitizer): merge two conditions * refactor(sanitizer): inline a function in `sanitizeAttributes` and fix a bug in it * refactor(sanitizer): inline a condition in `sanitizeSrcsetAttr` * refactor(sanitizer): improve `rewriteIframeURL()` * refactor(sanitizer): Google isn't a thing anymore * refactor(sanitizer): change the scope of a variable * refactor(rewriter): replace regex with URL parsing for referrer override * refactor(rewriter): avoid the use of regex in `addDynamicImage` * refactor(rewrite): remove unused function arguments * refactor(readability): various improvements and optimizations * refactor(readability): simplify the regexes in `readability.go` * refactor(processor): use URL parsing instead of a regex * refactor(processor): improve the `rewrite` URL rule regex * refactor(locale): delay parsing of translations until they're used * refactor(js): factorise a line in `app.js` * refactor(handler): delay `store.UserByID()` as much as possible * refactor(css): replace `-ms-text-size-adjust` with `text-size-adjust` * refactor(css): remove `-webkit-clip-path` * refactor(css): factorise `.pagination-next` and `.pagination-last` together * refactor: use a better construct than `doc.Find(…).First()` * refactor: use `min/max` instead of `math.Min/math.Max` * refactor: refactor `internal/reader/readability/testdata` * refactor: optimize `sanitizeAttributes` * refactor: get rid of `numberOfPluralFormsPerLanguage` test-only variable * fix(storage): replace timezone function call with view * fix(consistency): align feed modification behavior between API and UI * fix(ci): fix grammar in pull-request template * fix: load icon from site URL instead of feed URL * fix: feed icon from xml ignored during force refresh * feat(rewrite)!: remove `parse_markdown` rewrite rule * feat(mediaproxy): update predefined referer spoofing rules for restricted media resources * feat(locale): update translations to clarify readeck URL instead of readeck API endpoint * feat(locale): update German translations * feat(locale): update Chinese translations * feat(apprise): update `SendNotification` to handle multiple entries and add logging * feat(apprise): add title in notification request body * feat: resize favicons before storing them in the database * feat: optionally fetch watch time from YouTube API instead of website * feat: only show the commit URL if it's not empty on `/about` * feat: add predefined scraper rules for `arstechnica.com` * feat: add date-based entry filtering rules * chore: remove `blog.laravel.com` rewrite rule * build(deps): bump `library/alpine` in `/packaging/docker/alpine` to `3.21` * build(deps): bump `golang.org/x/term` from `0.26.0` to `0.27.0` * build(deps): bump `golang.org/x/net` from `0.31.0` to `0.33.0` * build(deps): bump `golang.org/x/crypto` from `0.30.0` to `0.31.0` * build(deps): bump `github.com/tdewolff/minify/v2` from `2.21.1` to `2.21.2`
Miniflux 2.2.3 * fix: unable to change password due to a typo in SQL parameter * fix: show only one player when there are several audio/video enclosures * feat(mediaproxy): pass original filename in `Content-Disposition` header * feat(mediaproxy): implement referer spoofing for restricted media resources * feat(integration): update Shiori integration to use new API endpoints for login/bookmark * build(deps): bump `golang.org/x/text` from `0.19.0` to `0.20.0` * build(deps): bump `golang.org/x/term` from `0.25.0` to `0.26.0` * build(deps): bump `golang.org/x/oauth2` from `0.23.0` to `0.24.0` * build(deps): bump `golang.org/x/net` from `0.30.0` to `0.31.0` * build(deps): bump `golang.org/x/crypto` from `0.28.0` to `0.29.0`
Miniflux 2.2.3 * fix: unable to change password due to a typo in SQL parameter * fix: show only one player when there are several audio/video enclosures * feat(mediaproxy): pass original filename in `Content-Disposition` header * feat(mediaproxy): implement referer spoofing for restricted media resources * feat(integration): update Shiori integration to use new API endpoints for login/bookmark * build(deps): bump `golang.org/x/text` from `0.19.0` to `0.20.0` * build(deps): bump `golang.org/x/term` from `0.25.0` to `0.26.0` * build(deps): bump `golang.org/x/oauth2` from `0.23.0` to `0.24.0` * build(deps): bump `golang.org/x/net` from `0.30.0` to `0.31.0` * build(deps): bump `golang.org/x/crypto` from `0.28.0` to `0.29.0`
Miniflux 2.2.2 * fix(webauthn): add backup eligibility flag workaround to avoid a 401 response * fix: update `Last-Modified` if it changes in a 304 response * feat(webauthn): show help message regarding username and non-discoverable credentials * feat(rss): calculate hash based on item title/content for feeds without GUID and link * feat(locale): update Chinese translations * feat(locale): update Polish translations * feat(integration): add Cubox integration * feat(client): add `custom_js` field to Go API client * feat(api): add endpoint for user integration status * feat: update feed icon during force refresh * feat: take `Retry-After` header into consideration for rate limited feeds * feat: set entry URL to rewritten URL if a rewrite rule is defined * feat: replace `xurls` third-party module with an ad-hoc regexp * feat: add new settings option to allow external fonts * feat: add custom user JavaScript similar to custom CSS * chore: update test case comment * build(deps): bump `golang.org/x/net` from `0.29.0` to `0.30.0` * build(deps): bump `github.com/yuin/goldmark` from `1.7.4` to `1.7.8` * build(deps): bump `github.com/tdewolff/minify/v2` from `2.20.37` to `2.21.1` * build(deps): bump `github.com/prometheus/client_golang` * build(deps): bump `github.com/andybalholm/brotli` from `1.1.0` to `1.1.1`
Miniflux 2.2.1 * refactor: split processor package into smaller files * fix(mediaproxy): forward client user-agent to origin to bypass bot protection * fix: use root URL to generate absolute proxy URL * fix: remove progression save on shared entry * fix: add datasource variable and upgrade depecrated panels on the Grafana dashboard * feat(locale): update zh_CN translations * feat(locale): update Ukrainian translations * feat(locale): update Spanish translations * feat(locale): update Dutch translations * feat: use Bilibili API instead of web scraping to get videos watch time * feat: add pagination to shared entries listing * feat: add button to show only starred entries per category * build(deps): bump `golang.org/x/term` from `0.23.0` to `0.24.0` * build(deps): bump `golang.org/x/oauth2` from `0.22.0` to `0.23.0` * build(deps): bump `golang.org/x/net` from `0.28.0` to `0.29.0` * build(deps): bump `github.com/PuerkitoBio/goquery` from `1.9.2` to `1.10.0` * build(deps): bump `github.com/prometheus/client_golang` from `1.20.3` to `1.20.4` * build(deps): bump `github.com/go-webauthn/webauthn` from `0.10.2` to `0.11.2` * build: update go.mod to Go 1.23 * build: bump devcontainer version to Go 1.23
Miniflux 2.2.0 * refactor: simplify Youtube feeds discovery * fix(integration): define content encoding explicitly when sending article body to Readeck * fix(fever): correct sorting direction when using `max_id` argument * fix(client): Return `nil` and error if endpoint is an empty string * fix: video poster image URL is encoded twice when using `MEDIA_PROXY_MODE=all` * fix: use `BASE_URL` instead of `r.Host` to generate absolute media proxy URL * fix: panic during YouTube channel feed discovery * fix: honor `hide_globally` when creating a new feed through the api * fix: align pagination correctly on small screens with non-English text * fix: `store.GetEnclosure()` should return `nil` if no rows are returned * feat(locale): update Turkish translations * feat(locale): update French translations * feat(locale): update Chinese` translations * feat(integration): add ntfy integration * feat(api): add API routes `/v1/enclosures/{enclosureID}` * feat: validate `OAUTH2_PROVIDER` config option value * feat: remove YouTube video page subscription finder because `meta[itemprop="channelId"]` no longer exists * feat: remove well-known URL parameter trackers * feat: mark media as read when playback reaches 90% * feat: change log level to info when running migrations * feat: allow customizing the display name of the OpenID Connect provider * feat: add support for `base` HTML element when discovering feeds * feat: add support for `aside` HTML element in entry content * feat: Add option to disable local auth form * feat: add license info to Javascript files for LibreJS compatibility * feat: add `FETCH_BILIBILI_WATCH_TIME` config option * docs: update links to filtering rules * chore: avoid using legacy key/value format in Dockerfile * build(deps): bump `golang.org/x/oauth2` from `0.21.0` to `0.22.0` * build(deps): bump `golang.org/x/net` from `0.27.0` to `0.28.0` * build(deps): bump `golang.org/x/crypto` from `0.25.0` to `0.26.0` * build(deps): bump `github.com/tdewolff/minify/v2` from `2.20.36` to `2.20.37` * build(deps): bump `github.com/prometheus/client_golang` * build: update GitHub Actions to Go 1.23 * build: publish OCI images only if `PUBLISH_DOCKER_IMAGES=true` * build: bump Alpine Linux build image to v3.20 * build: add sha256 checksum file for published binaries
Miniflux 2.2.0 * refactor: simplify Youtube feeds discovery * fix(integration): define content encoding explicitly when sending article body to Readeck * fix(fever): correct sorting direction when using `max_id` argument * fix(client): Return `nil` and error if endpoint is an empty string * fix: video poster image URL is encoded twice when using `MEDIA_PROXY_MODE=all` * fix: use `BASE_URL` instead of `r.Host` to generate absolute media proxy URL * fix: panic during YouTube channel feed discovery * fix: honor `hide_globally` when creating a new feed through the api * fix: align pagination correctly on small screens with non-English text * fix: `store.GetEnclosure()` should return `nil` if no rows are returned * feat(locale): update Turkish translations * feat(locale): update French translations * feat(locale): update Chinese` translations * feat(integration): add ntfy integration * feat(api): add API routes `/v1/enclosures/{enclosureID}` * feat: validate `OAUTH2_PROVIDER` config option value * feat: remove YouTube video page subscription finder because `meta[itemprop="channelId"]` no longer exists * feat: remove well-known URL parameter trackers * feat: mark media as read when playback reaches 90% * feat: change log level to info when running migrations * feat: allow customizing the display name of the OpenID Connect provider * feat: add support for `base` HTML element when discovering feeds * feat: add support for `aside` HTML element in entry content * feat: Add option to disable local auth form * feat: add license info to Javascript files for LibreJS compatibility * feat: add `FETCH_BILIBILI_WATCH_TIME` config option * docs: update links to filtering rules * chore: avoid using legacy key/value format in Dockerfile * build(deps): bump `golang.org/x/oauth2` from `0.21.0` to `0.22.0` * build(deps): bump `golang.org/x/net` from `0.27.0` to `0.28.0` * build(deps): bump `golang.org/x/crypto` from `0.25.0` to `0.26.0` * build(deps): bump `github.com/tdewolff/minify/v2` from `2.20.36` to `2.20.37` * build(deps): bump `github.com/prometheus/client_golang` * build: update GitHub Actions to Go 1.23 * build: publish OCI images only if `PUBLISH_DOCKER_IMAGES=true` * build: bump Alpine Linux build image to v3.20 * build: add sha256 checksum file for published binaries
Miniflux 2.1.4 * test: add unit tests for `IsModified()` behaviour * refactor: improve YouTube page feed detection * fix(ui): settings form is not populated correctly after validation errors * fix(ui): playback speed indicator precision * fix(ui): playback speed indicator on shared entries * fix(integration): preserve existing Pinboard bookmarks * fix(googlereader): set `CrawlTimeMsec` to the correct precision * fix(build): failed to solve container image `arm64v8/golang:1.22-bookworm` * fix(build): add `distroless` suffix on `latest` tag in GitHub workflow * fix: use `ETag` as a stronger validator than `Last-Modified` * fix: update `theverge.com` rewrite rule to avoid duplicate image * fix: incorrect Go package comment `reader/readingtime` * fix: error out for improper rewrite regexp when processing feed entries * fix: ensures that session cookies are not expiring before the session is cleaned up from the database as per `CLEANUP_REMOVE_SESSIONS_DAYS` * fix: `<img>` aspect ratio with `height: auto` * feat(ui): add `viewport-fit=cover` * feat(sanitizer): add support for HTML hidden attribute * feat(locale): update French translations * feat(integration): add Raindrop integration * feat(integration): add feed name to Telegram message * feat(integration): add Betula integration * feat: use of insecure TLS ciphers when "Allow self-signed or invalid certificates" is enabled to workaround some broken websites * feat: discover feeds from a Youtube playlist pages * feat: add navigation to last/first page * feat: add global block and keep filters * feat: add description field to feed settings * feat: add `pitchfork.com` scraping rule * feat: add `FETCH_NEBULA_WATCH_TIME` config option * Bump `github.com/PuerkitoBio/goquery` from` 1.9.1` to` 1.9.2` * Bump `github.com/prometheus/client_golang` from `1.19.0` to `1.19.1` * build(deps): bump `library/alpine` in `/packaging/docker/alpine` * build(deps): bump `golangci/golangci-lint-action` from `4` to `6` * build(deps): bump `golang.org/x/term` from `0.19.0` to `0.22.0` * build(deps): bump `golang.org/x/oauth2` from `0.19.0` to `0.21.0` * build(deps): bump `golang.org/x/net` from `0.22.0` to `0.27.0` * build(deps): bump `golang.org/x/crypto` from `0.24.0` to `0.25.0` * build(deps): bump `github.com/yuin/goldmark` from `1.7.1` to `1.7.4` * build(deps): bump `github.com/tdewolff/minify/v2` from `2.20.20` to `2.20.36` * build(deps): bump `github.com/coreos/go-oidc/v3` from `3.10.0` to `3.11.0` * build(deps): bump `docker/build-push-action` from `5` to `6`
Miniflux 2.1.3 * `api`: `rand.Intn(math.MaxInt64)` causes tests to fail on 32-bit architectures (use `rand.Int()` instead) * `ci`: use `docker/metadata-action` instead of deprecated shell-scripts * `database`: remove `entries_feed_url_idx` index because entry URLs can exceeds btree index size limit * `finder`: find feeds from YouTube playlist * `http/response`: add brotli compression support * `integration/matrix`: fix function name in comment * `packaging`: specify container registry explicitly (e.g., Podman does not use `docker.io` by default) * `packaging`: use `make miniflux` instead of duplicating `go build` arguments (this leverages Go's PIE build mode) * `reader/fetcher`: add brotli content encoding support * `reader/processor`: minimize feed entries HTML content * `reader/rewrite`: add a rule for `oglaf.com` * `storage`: change `GetReadTime()` function to use `entries_feed_id_hash_key` index * `ui`: add seek and speed controls to media player * `ui`: add tag entries page * `ui`: fix JavaScript error when clicking on unread counter * `ui`: use `FORCE_REFRESH_INTERVAL` config for category refresh * Bump `github.com/tdewolff/minify/v2` from `2.20.19` to `2.20.20` * Bump `golang.org/x/net` from `0.22.0` to `0.24.0` * Bump `golang.org/x/term` from `0.18.0` to `0.19.0` * Bump `golang.org/x/oauth2` from `0.18.0` to `0.19.0` * Bump `github.com/yuin/goldmark` from `1.7.0` to `1.7.1`
Miniflux 2.1.2 * `api`: rewrite API integration tests without build tags * `ci`: add basic ESLinter checks * `ci`: enable go-critic linter and fix various issues detected * `ci`: fix JavaScript linter path in GitHub Actions * `cli`: avoid misleading error message when creating an admin user automatically * `config`: add `FILTER_ENTRY_MAX_AGE_DAYS` option * `config`: bump the number of simultaneous workers * `config`: rename `PROXY_*` options to `MEDIA_PROXY_*` * `config`: use `crypto.GenerateRandomBytes` instead of doing it by hand * `http/request`: refactor conditions to be more idiomatic * `http/response`: remove legacy `X-XSS-Protection` header * `integration/rssbrige`: fix rssbrige import * `integration/shaarli`: factorize the header payload concatenation as data * `integration/shaarli`: no need to base64-encode then remove the padding when we can simply encode without padding * `integration/shaarli`: the JWT token was declared as using HS256 as algorithm, but was using HS512 * `integration/webhook`: add category title to request body * `locale`: update Turkish translations * `man page`: sort config options in alphabetical order * `mediaproxy`: reduce the internal indentation of `ProxifiedUrl` by inverting some conditions * `mediaproxy`: simplify and refactor the package * `model`: replace` Optional{Int,Int64,Float64}` with a generic function `OptionalNumber()` * `model`: use struct embedding for `FeedCreationRequestFromSubscriptionDiscovery` to reduce code duplication * `reader/atom`: avoid debug message when the date is empty * `reader/atom`: change `if !a { a = } if !a {a = }` constructs into `if !a { a = ; if !a {a = }}` to reduce the number of comparisons and improve readability * `reader/atom`: Move the population of the feed's entries into a new function, to make BuildFeed easier to understand/separate concerns/implementation details * `reader/atom`: refactor Atom parser to use an adapter * `reader/atom`: use `sort compact` instead of `compact sort` to remove duplicates * `reader/atom`: when detecting the format, detect its version as well * `reader/encoding`: inline a one-liner function * `reader/handler`: fix force refresh feature * `reader/json`: refactor JSON Feed parser to use an adapter * `reader/media`: remove a superfluous error-check: `strconv.ParseInt` returns `0` when passed an empty string * `reader/media`: simplify switch-case by moving a common condition above it * `reader/processor`: compile block/keep regex only once per feed * `reader/rdf`: refactor RDF parser to use an adapter * `reader/rewrite`: inline some one-line functions * `reader/rewrite`: simplify `removeClickbait` * `reader/rewrite`: transform a free-standing function into a method * `reader/rewrite`: use a proper constant instead of a magic number in `applyFuncOnTextContent` * `reader/rss`: add support for `<media:category>` element * `reader/rss`: don't add empty tags to RSS items * `reader/rss`: refactor RSS parser to use a default namespace to avoid some limitations of the Go XML parser * `reader/rss`: refactor RSS Parser to use an adapter * `reader/rss`: remove some duplicated code in RSS parser * `reader`: ensure that enclosure URLs are always absolute * `reader`: move iTunes and GooglePlay XML definitions to their own packages * `reader`: parse podcast categories * `reader`: remove trailing space in `SiteURL` and `FeedURL` * `storage`: do not store empty tags * `storage`: simplify `removeDuplicates()` to use a `sort` `compact` construct instead of doing it by hand with a hashmap * `storage`: Use plain strings concatenation instead of building an array and then joining it * `timezone`: make sure the tests pass when the timezone database is not installed on the host * `ui/css`: align `min-width` with the other `min-width` values * `ui/css`: fix regression: "Add to Home Screen" button is unreadable * `ui/js`: don't use lambdas to return a function, use directly the function instead * `ui/js`: enable trusted-types * `ui/js`: fix download button loading label * `ui/js`: fix JavaScript error on the login page when the user not authenticated * `ui/js`: inline one-line functions * `ui/js`: inline some `querySelectorAll` calls * `ui/js`: reduce the scope of some variables * `ui/js`: remove a hack for "Chrome 67 and earlier" since it was released in 2018 * `ui/js`: replace `DomHelper.findParent` with `.closest` * `ui/js`: replace `let` with `const` * `ui/js`: simplify `DomHelper.getVisibleElements` by using a `filter` instead of a loop with an index * `ui/js`: use a `Set` instead of an array in a `KeyboardHandler`'s member * `ui/js`: use some ternaries where it makes sense * `ui/static`: make use of `HashFromBytes` everywhere * `ui/static`: set minifier ECMAScript version * `ui`: add keyboard shortcuts for scrolling to top/bottom of the item list * `ui`: add media player control playback speed * `ui`: remove unused variables and improve JSON decoding in `saveEnclosureProgression()` * `validator`: display an error message on edit feed page when the feed URL is not unique * Bump `github.com/coreos/go-oidc/v3` from `3.9.0` to `3.10.0` * Bump `github.com/go-webauthn/webauthn` from `0.10.1` to `0.10.2` * Bump `github.com/tdewolff/minify/v2` from `2.20.18` to `2.20.19` * Bump `google.golang.org/protobuf` from `1.32.0` to `1.33.0`
PreviousNext