Releases: dsh2dsh/miniflux
Releases · dsh2dsh/miniflux
v2.3.15
Changelog
- c8126ca Merge branch 'upstream-main'
- a364d21 Add "credentialless" attr to all iframes
- 979998c Add "credentialless" attr to youtube's iframe
- 3b77c61 Show youtube video descriptions below its iframe
- dc12713 build(deps): bump golang.org/x/net from 0.47.0 to 0.48.0
- fb238c1 Merge branch 'upstream-main'
- 7bf58e7 build(deps): bump library/alpine from 3.22 to 3.23 in /packaging/docker/alpine
- c502b80 build(deps): bump github.com/tdewolff/minify/v2 from 2.24.7 to 2.24.8
- c23a621 build(deps): bump golang.org/x/oauth2 from 0.33.0 to 0.34.0
- 327119c build(deps): bump golang.org/x/image from 0.33.0 to 0.34.0
- 488a3bb build(deps): bump golang.org/x/crypto from 0.45.0 to 0.46.0
- 7f3c6db ci: remove create event from Codeberg workflow
- 884569f build(deps): bump actions/checkout from 4 to 6
- 88db614 Bump golang.org/x/net from 0.47.0 to 0.48.0
- 33f2c9c Bump golang.org/x/image from 0.33.0 to 0.34.0
- 2f1145c Bump golang.org/x/crypto from 0.45.0 to 0.46.0
- 67833fe Refactor scraper package
- 3db5057 Don't apply content rewrite rules to extrenal content
- c385df5 All entries from the DB have Stored() == true
- 1fdd740 Switch to codeberg.org/readeck/go-readability/v2
- 88b5af4 Bump golang.org/x/sync from 0.18.0 to 0.19.0
- b30a962 Bump golang.org/x/oauth2 from 0.33.0 to 0.34.0
- 96b5fe9 Bump github.com/spf13/cobra from 1.10.1 to 1.10.2
- 3b31612 Bump github.com/klauspost/compress from 1.18.1 to 1.18.2
- d83ad04 Bump github.com/go-shiori/go-readability
- de6050e Use real feed for entry's Feed field
- 1de8c98 Delete codeberg_mirror.yml
- f922e3d Merge branch 'upstream-main'
- fbf1b7b Compile templates early, before daemon started
- 7dd2b1e Refactor rewrite package
- 0960624 ci: add workflow to mirror Git repo to Codeberg
- 20e0068 Merge branch 'upstream-main'
- 4063ca3 feat(config): add new option to disable Miniflux's API
- 6fc3adc Merge branch 'upstream-main'
- f6476db feat(locale): update Polish translation
- e6c008b Merge branch 'upstream-main'
- 142d8d7 refactor(integration): standardize Linkwarden collection ID naming
- 5bd5993 feat: add Linkwarden collection ID support
- 18cd544 chore(contrib): update postgres volume path in Docker Compose sample files
- b8a2c5b Bump github.com/dsh2dsh/gofeed/v2 from 2.0.0 to 2.1.0
- 16c7c94 Merge branch 'upstream-main'
- 88f9f27 feat(finder): generate feeds for stable youtube playlists
- dc1653b feat(finder): make cannonical url detection a proper step
- 3ea4aee feat(finder): enhance youtube channel parsing with default playlists
- f447307 feat: add the
iandsmalltags to the sanitizer's allowlist - a697e23 Merge branch 'upstream-main'
- 11eed28 Set referrerpolicy to youtube iframes only
- 889ecd4 Bump github.com/dsh2dsh/bluemonday/v2 from 2.0.0 to 2.1.0
- d5fa0d1 Merge pull request #3 from dsh2dsh/dependabot/github_actions/actions/setup-go-6
- 37aaa92 Merge branch 'master' into dependabot/github_actions/actions/setup-go-6
- beeb274 Merge pull request #4 from dsh2dsh/dependabot/github_actions/golangci/golangci-lint-action-9
- 26e3108 Merge pull request #2 from dsh2dsh/dependabot/github_actions/actions/upload-artifact-5
- 0a914a9 Merge pull request #9 from dsh2dsh/dependabot/github_actions/actions/checkout-6
- 4892e04 fix: avoid YouTube error 153 for embed iframes
- 8537cf4 Merge branch 'upstream-main'
- 579b1ef build(deps): bump github.com/coreos/go-oidc/v3 from 3.16.0 to 3.17.0
- a16aa10 build(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0
- ea9adc8 build(deps): bump actions/checkout from 5 to 6
- fd7c886 build(deps): bump github.com/PuerkitoBio/goquery from 1.10.3 to 1.11.0
- 16eb43e Cache db users during batch refresh
- c64f52a Don't load user if we don't have new entries
- 8729e35 Reuse loaded user during feed refresh
- 2357b56 Extract (*Pool).processQueueItem()
- fe8f13b build(deps): bump actions/checkout from 5 to 6
- f503bc9 Fix youtube embeds (miniflux#3890)
- c00491c Skip entries already stored in the DB
- 3f2350f Bump golang.org/x/crypto from 0.44.0 to 0.45.0
- 7049df2 Bump github.com/coreos/go-oidc/v3 from 3.16.0 to 3.17.0
- 4d51661 Replace all config.Opts.FUNC to config.FUNC
- 7c386a1 Unexport some config types
- 3c16e60 Bump github.com/PuerkitoBio/goquery from 1.10.3 to 1.11.0
- 097ac56 Fix subscription page after last changes
- 8794933 Refactor NewCharsetReader
- da53402 Simplify reader/encoding package
- b5d4535 Delete old feed parser
- b93666f Configurable polling interval for feeds, which reached their error limit.
- 3a291db Merge branch 'upstream-main'
- c62f69f Make goimports linter happy
- 55f98b1 Switch to new feed parser
- 03a9a14 Add new feed parser,
- b3a63db fix(api): rewrite entry content URLs with media proxy in fetchContent endpoint
- 7ac8eb9 build(deps): bump golang.org/x/net from 0.46.0 to 0.47.0
- c43a907 build(deps): bump golang.org/x/crypto from 0.43.0 to 0.44.0
- 0a08f48 build(deps): bump golang.org/x/image from 0.32.0 to 0.33.0
- bc375e3 build(deps): bump github.com/go-webauthn/webauthn from 0.14.0 to 0.15.0
- d3ebfd6 build(deps): bump golang.org/x/oauth2 from 0.32.0 to 0.33.0
- c1cfd18 build(deps): bump github.com/tdewolff/minify/v2 from 2.24.6 to 2.24.7
- e580126 build(deps): bump golangci/golangci-lint-action from 8 to 9
- 978cf59 Make modernize linter happy
- e7f3291 build(deps): bump golangci/golangci-lint-action from 8 to 9
- 86fca5d test(urlcleaner): add test case to cover Matomo tracking URL
- c365118 feat(urlcleaner): add a bunch of parameters
- 6f2d10c build(deps): bump github.com/tdewolff/minify/v2 from 2.24.5 to 2.24.6
- 093004b refactor(rewrite): avoid string concatenation in a loop (perfsprint linter fix)
- 28d0bbf Merge branch 'upstream-main'
- 82a24d8 fix: avoid YouTube error 153 video player configuration error
- d2c783b build(deps): bump actions/upload-artifact from 4 to 5
- 9e26b2d build(deps): bump actions/setup-go from 5 to 6
- 318d542 build(deps): bump actions/upload-artifact from 4 to 5
- 7e2dd3a fix: avoid YouTube error 153 video player configuration error
- 4ace959 refactor(js): use
replaceinstead ofremove+add. - cdf966e Merge branch 'upstream-main'
- 14f3195 fix(ci): enhance CodeQL workflow with language matrix and dynamic analysis category
- 907daf7 fix(ci): specify version for RPM package for schedule and pull_request events
- cf6386b fix(ci): GitHub Workflow does not contain permissions
- 76df99f fix: only relative path should allowed for redirectURL parameter
- 57e3eae refactor(js): minor regex simplification
...
v2.2.14
Changelog
- 689c981 Fix tests after last merge
- 0dbf36e Merge branch 'upstream-main'
- 385d8bb feat(client): allow http.Client as option and add context to api methods
- 54ea828 Merge branch 'upstream-main'
- c171da1 refactor(reader): minor date parsing simplifications
- 11ea137 build(deps): bump github.com/tdewolff/minify/v2 from 2.24.3 to 2.24.4
- e42db11 Bump github.com/dsh2dsh/bluemonday from 1.1.2 to 2.0.0
- 8d44f98 Bump github.com/dsh2dsh/bluemonday from 1.1.1 to 1.1.2
- 74fc5ed Merge branch 'upstream-main'
- 0a15075 refactor(sanitizer): save some cycles in hasRequiredAttributes
- 57f9153 Prepend base path to redirect after auth
- e6199e6 Merge branch 'upstream-main'
- b1fda59 feat(integration): add tags option for karakeep integration
- 509b768 build(deps): bump github/codeql-action from 3 to 4
- fccd934 Merge branch 'upstream-main'
- 06c2e50 refactor(ui): use native element instead of custom modal implementation
- 08f11d2 Log Content-Type
- af7e17a Fix unnecessary conversion (unconvert)
- 581c5fe Merge branch 'upstream-main'
- ec93656 perf: preallocate slices
- 317aaee perf: replace from ParseInt/ParseFloat with faster Itoa
- d862f79 refactor(fever): explicitly size slices
- 0a22506 Merge branch 'upstream-main'
- 1bea41b build(deps): bump golang.org/x/oauth2 from 0.31.0 to 0.32.0
- 65a3909 build(deps): bump golang.org/x/image from 0.31.0 to 0.32.0
- 131dc67 build(deps): bump golang.org/x/net from 0.45.0 to 0.46.0
- 4e1791c Merge branch 'upstream-main'
- b0dced4 build(deps): bump golang.org/x/net from 0.44.0 to 0.45.0
- 6ede0f1 Merge branch 'upstream-main'
- a34e33b chore: update
make lintcommand - af12fe3 ci: enable
perfsprintandgoheaderGo linters - dd44fbc refactor(misc): replace fmt.Errorf with errors.New where possible
- 3e5f3f4 Merge branch 'upstream-main'
- 9c956d1 build(deps): bump github.com/coreos/go-oidc/v3 from 3.15.0 to 3.16.0
- 92b9ef4 Tune content color for better light and dark themes
- 19455ea Tune colors of meta buttons for better dark theme
- 78c1054 Merge branch 'upstream-main'
- 34f2aca Refactor CSP from miniflux#3731
- bf7f55e feat(template): extract CSP to a function, systematically use nonces, and use
default-src 'none'instead ofself - a42a6c1 Change style of figcaption for better readability
- b9de300 Make light color of read title a little lighter
- 4bcfc61 Reuse *bytes.Buffer's for between refreshes with sync.Pool
- 28628a3 Merge branch 'upstream-main'
- b8bc367 feat(rewrite): add
remove_img_blur_paramsrule - 6d66171 Show feed errors in the list of entries, as a pseudo entry.
- a97d417 Revert browsers link colors inside content
- af2f9b6 Make title and content colors less contrast
- 7740b0e Merge branch 'upstream-main'
- 04a360a test(xml): add test cases regarding XML encoding
- fac18d5 refactor(xml): change
getEncodingto return[]byteand move CharsetReader callback to a separate function - a3d1ecc refactor(database): get rid of the dependency on hstore
- fa28282 Merge branch 'upstream-main'
- 5a97bf8 refactor(sanitizer): simplify
hasValidURISchemeandisBlockedResourcefunctions - 72d7f4f Allow theme switcher to switch to auto (system) theme
- 476adff Extract light dark switch back into theme.js
- 0f356c8 Restore --link-color
- f607648 Delete obsoleted system.css
- 5395048 Merge branch 'upstream-main'
- 2ddf126 Switch dark/light without page reload
- e279b95 fix(css): avoid layout overflow when external link is too long
- 1620f8d refactor(database): remove implicit
not nullconstraint forserialtypes - ea8e9dd Extract StoreFeedEntries() from (*Storage).RefreshFeedEntries()
- 3a05477 Adjust dark theme font color a little
- 06e8415 Switch dark/light using htmx
- 5685acb Extract global handler of htmx errors
- fbec1fb Thanks Feather for icons [skip ci]
- 40dd4ac Fast switch to dark or light mode for current session
- f4787ad One more fix of e2e tests after changing of default theme
- 65d18bc Switch golangci-lint back to "binary"
- 2c9b23e Fix e2e test after default theme change
- 2eada39 Make system_sans_serif default user theme
- 0391527 Merge branch 'upstream-main'
- f49e869 Redirect back to original page after logging in
- 1a29c15 feat(ui): redirect back to original page after logging in
- ff07f02 fix(jsonfeed): fallback to
external_urlwhenurlis missing - 79b0d0b feat(integration): add integration with archive.org
- 88f5e90 Merge branch 'upstream-main'
- 5fa0709 feat(rewrite): add
add_image_titlerule forexplainxkcd.com - 6bd2aa5 Make feed title not so dark
- b54f698 Refactor (*ResponseHandler).LocalizedError
- 5ea8b1d Move (*ResponseHandler).LocalizedError to errors.go
- b276d4d Merge branch 'upstream-main'
- a7fa2ec fix(scraper): update Dark Reading scraper rule
- a6ff4f3 Cancel all queued refresh requests to rate limited host
- 4c540bb Make gofumpt with extra-rules happy
- 26c06da Scroll downloaded item into the view
v2.2.13
Changelog
- 6433ac0 Make DedupEntries be property of storage.Storage,
- 18db320 Merge branch 'upstream-main'
- 10b2b36 build(deps): bump github.com/go-webauthn/webauthn from 0.13.4 to 0.14.0
- 4dcfbd3 Merge branch 'upstream-main'
- 87e65f8 feat(locale): update French translation
- 907cf16 fix(fever): fix typo in variable name
- 854a78a feat(locale): update German translation
- 5e607be refactor(config): rewrite config parser
- 5dc4fcd Add more config validation rules
- a9e7873 Extract alert-info into info.html and reuse it
- 4e0c293 Simplify pagination.html
- ab7cb86 Scroll to top on the elevator click,
- a896682 Restore pagination on pages which show all entries,
- 4fe0778 Log request query too
- bfb750d Refactor timezone/timezone.go
- 4bb3959 Merge branch 'upstream-main'
- 502e710 feat(locale): update Polish translation
- 0b93d8a refactor(subscription): combine
findSubscriptionsFromYouTubeChannelPageandfindSubscriptionsFromYouTubePlaylistPagefunctions - 93a8629 refactor(js): simplify
modal_handler.js - b174216 fix(timezone): make sure legacy time zones are no longer used
- 99ee6b3 Merge branch 'upstream-main'
- 4eff912 feat(ui): add "back to top" link
- 90550ac Always manual history.scrollRestoration
- ffad45a Restore item position after content download
- a3a7142 Fix FF console warning about h1
- a5ef15b Bump htmx from 2.0.6 to 2.0.7
- 3e54ac9 Refactor reader/icon package
- 198b5ef Pass context.Context into (*IconFinder).FindIcon
- 88c9062 Move "Download" link to the left, before "External"
- cb6919c Merge branch 'upstream-main'
- eb22d90 feat(locale): update German translation
- 8f2dd02 refactor(subscription): combine all JSON feed mime types in one query
- da8d4d8 feat(locale): update Polish translation
- 30bd2c6 Don't fetch icon twice from the same document
- 258f10b Switch to go.yaml.in/yaml/v4
- 5042a30 Merge branch 'upstream-main'
- 1338ac2 Merge branch 'main' of github.com:miniflux/v2 into upstream-main
- 17aea77 Bump dependencies
- 7ada5d5 fix(icon): implement better handling of relative icon URLs within a subfolder
- 8129500 feat(integration): add support for Wallabag tags
- f114315 build(deps): bump golang.org/x/net from 0.43.0 to 0.44.0
- baf8e40 build(deps): bump golang.org/x/image from 0.30.0 to 0.31.0
- a98374b build(deps): bump golang.org/x/crypto from 0.41.0 to 0.42.0
- 77e0b07 build(deps): bump golang.org/x/term from 0.34.0 to 0.35.0
- 645800c refactor(js): remove
isTouchSupported()static function - a60a153 build(deps): bump github.com/tdewolff/minify/v2 from 2.24.0 to 2.24.3
- 7d40e29 build(deps): bump golang.org/x/oauth2 from 0.30.0 to 0.31.0
- 91a625c build(deps): bump actions/setup-python from 5 to 6
- dbb3855 build(deps): bump actions/setup-go from 5 to 6
- 3051acf perf(xml): eliminate bound checks in filterValidXMLChars
- 5f38054 fix(ui): incorrect force refresh interval unit used in messages
- fa361ab perf: convert some slices to array
- afe80e6 refactor(proxy): remove usage of fmt
- f2976bf refactor: remove
model.UserSessionsstruct - 84078c7 refactor: avoid unnecessary usage of
Printf - d70817e build(deps): bump github.com/prometheus/client_golang
- 8f772c7 Fix TestFlushHistoryEndpoint()
- d1e2af5 Test refreshing of removed entry
- ab2fda8 Log info "Fetch original content"
- 115f95e Remove debug Oops from last change
- 4224ee4 Handle failed fetch original content
- 7b2f06a Back log debug "Making outgoing request", instead of info
- d4ab681 Show response error if entry inline was failed
- 2c0efe0 Fix my typo in last commit
- 69e26fb The mark read on scroll is the only mode now
- 4c27cd5 Bump github.com/stretchr/testify from 1.11.0 to 1.11.1
- 05ed0b7 Announce inline reader
- afc4be6 Merge branch 'upstream-main'
- e392031 Merge branch 'main' of github.com:miniflux/v2 into upstream-main
- e8f5c24 fix(config): FORCE_REFRESH_INTERVAL duration should be in minutes
- f6d96bc Fix template error after removing of share functionality
- 2561ab2 Fix last db migration
- 000a098 Prefer entry URL for hash generation, instead of id
- ae2e64b Delete entry sharing and old entry reader
- b194a5f Merge branch 'upstream-main'
- b165e17 fix(config): FORCE_REFRESH_INTERVAL duration should be in minutes
- 09b0c4d Merge branch 'upstream-main'
- 737f25f feat(locale): update Polish translation
- 9606a01 Bump github.com/stretchr/testify from 1.10.0 to 1.11.0
- 614abfc Remove id attributes from sanitized contents
- 76e5c1c Bump github.com/dsh2dsh/bluemonday from 1.1.0 to 1.1.1
- efb3d35 Refactor inlining of entry content
- ef77f8d Merge branch 'upstream-main'
- f83d667 fix(api): do not return removed entries
- fd188d4 Show Loading... during entry content inlining
- bbeaf70 Remove internal/reader/readability
- 129eb14 Make golangci-lint happy
- a2faeb6 Merge branch 'upstream-main'
- 32c23ff Fix proxy endpoint
- af149e4 Revert "refactor(storage): simplify
feed.goby usingmin(), inline errors, and use idiomatic conditions" - 4f252b3 refactor(template): rename noescape to safeHTML
- a16880a Add download content to inline reader
- 3cbfcb1 Rename entry UI endpoint using /entry/{entryID}/action pattern
- 32e7a65 Delete obsoleted UI entry endpoints, replaced by inline reader
- 3634aea Merge branch 'upstream-main'
- da9c3a4 feat(js): tighten the trusted types policy
- 8e1d0bb fix(locale): Update
de_DEtranslation to match changes from 'bookmark' to 'starred' - 29bd2b5 Extract common template into entries_list.html
v2.2.12
Changelog
- 2ec3ceb Merge branch 'upstream-main'
- 60cd7ff refactor: Replace "Bookmarks" with "Starred"
- 4d656d2 feat(integration): add LinkTaco service for saving articles
- 983291c refactor(cli): use time.Duration for cleanup tasks
- 7060ecc refactor(cli): use time.Duration for scheduler frequency
- 4af12a4 refactor(metric): use time.Duration for refresh duration
- c6536e8 refactor(http): use time.Duration for refresh interval
- 30453ad refactor(fetcher): use time.Duration for client timeout values
- 71af68b refactor(server): use time.Duration for timeout values
- ed3bf59 refactor(reader): use time.Duration instead of minutes count
- 03021af feat(config): time interval parser
- 83254a1 refactor(model): replace Sprintf("%d") in tests
- 3acb888 refactor(response): simplify switch-case and remove unnecessary defer
- 7c29166 refactor(ui): move inline SVG to
sprite.svg - 71105be refactor(template): improve consistency in
layout.html(meta tags, whitespace, comments) - 2a37267 refactor(icon): avoid calling
AbsoluteURLtwice for the feed icon URL - 9d32b23 perf(sanitizer): make sanitizer ~10% faster by using
slices.Containsinstead of nested maps - da8bf38 refactor(templates): be explicit about dependencies
- b30eac4 build(deps): bump github.com/tdewolff/minify/v2 from 2.23.11 to 2.24.0
- 0b85d7b Add attachments into inline entry reader
- 4823038 Merge branch 'upstream-main'
- 459b1bf test(icon): add tests for finding icon URLs in HTML documents
- fdc12bf fix(icon): improve logging messages in resizeIcon function
- 1b1ceaf test(icon): add test case to verify SVG minification with error
- cad40cc feat(icon): minify svg favicons
- 4d88ee1 Add list of tags to inline entry content
- 5f9fa01 Use document.body.dataset.markAsReadOnView here,
- 96b99af Merge branch 'upstream-main'
- c105b14 test(api): add integration test for fetching categories with counters
- 49575c8 test(version): add a test to enforce the version format
- b25f965 test(fetcher): add unit tests for RequestBuilder
- 953ea88 fix(mediaproxy): always forward the browser Accept header
- 9536ce7 fix(version): change development version naming to avoid breaking some clients
- 4271482 Add endpoints for user custom stylesheet and js,
- 4d88afb Make light content color a little bit darker
- 801d3c7 Merge branch 'upstream-main'
- e26a00a Implement inline entry reader,
- c25c408 Fix a typo in redirect code
- 84ae1d5 fix(storage): index only the first 500K characters of the article contents to avoid tsvector limits
- 5403ca0 feat(storage): add limit parameter to
ClearRemovedEntriesContent - c6f4168 Add
inlineEntryui endpoint:/entry/inline/{entryID}, - bdd9510 Handle .gz files in bundles
- 68d2c13 Fix generation of MEDIA_PROXY_PRIVATE_KEY
- 905d652 refactor(ui): use request builder in media proxy handler
- bcf0981 Vertical align all icons
- df68ed6 Merge branch 'upstream-main'
- 52a14ea Refactor version.go
- a16ac51 refactor(storage): split
DeleteContentRemovedEntriesinto 2 functions and fix condition - 5c26e06 feat(entry): keep only metadata for removed entries
- 9e4248c fix(templates): remove non-breaking space in about page
- 758aef4 Refactor json redirects
- 8c785c2 Merge branch 'upstream-main'
- 923aa18 Fix unreliable UI redirects
- a654a5f feat(template): show GitHub links in about page only when tag and commit are available
- 6bf3b3c fix(version): allow build info to be set with LDFLAGS and fallback to VCS metadata when available
- 6ef934e Merge branch 'upstream-main'
- bb1b3d1 Periodically delete lost feed icons
- a010544 fix(version): be explicit when VCS info is unavailable
- c1af510 feat(version): use Golang's builtin vcs feature to get commit and build date
- 88d9682 ci: update Go version to 1.25 in workflows and Dockerfile
- 5abb3a3 Refactor feed icons
- 189ffc9 Merge branch 'upstream-main'
- ce6cadc refactor(mediaproxy): use *url.URL for MEDIA_PROXY_CUSTOM_URL
- 40fa778 refactor(locale): avoid code duplication in
Printer.Printf()function - dd8011a refactor(template): remove some useless attributes
- 3955df4 perf(js): don't load
webauthn,jswhen disabled - 6f2ec8b refactor(ui): rename the small favicons to icons
- 2fa813f refactor(fetcher): use errors.New when possible instead of fmt.Errorf
- 7c1602c refactor(internal): fix doc comments
- 5e3bba9 refactor(request): fix typo in big corp name
- ab26a4e refactor(config): fix typos in test
- 2b0299f Add operator permission: users who can see admin info
- e5bad93 Size of icons in rem
- 713442c Set size of feed icons by CSS
- 999f4c9 Merge branch 'upstream-main'
- 2c4f4e2 perf(templates): removes superfluous whitespaces in two templates
- 261b72f feat(icon): add resizing support for webp images
- 6c60d61 fix(icon): use
rel=apple-touch-iconinstead ofrel=apple-touch-icon-precomposed.png - 4519be8 Merge branch 'upstream-main'
- fa85a0e feat(ui): disable OAuth routes if OAuth is disabled
- 7c8825e Return back options.header, because it need for next lines of code
- e919634 Switch golangci-lint action to "goinstall",
- 0d0e7ed Switch CSRF protection to new http.CrossOriginProtection
- 4de9e3c Switch to go 1.25
- 26d8d7d Merge branch 'upstream-main'
- eb6f7f3 feat(storage): make removed entries' status immutable
- 93fc206 refactor(opml): reduce indirections
- 8bca777 refactor(model): remove some indirection
- 1e6d227 build(deps): bump actions/checkout from 4 to 5
- 5ad9afa Merge branch 'upstream-main'
- 37d539e fix(template): webauthn error alert was broken on the settings page
- f5188b1 refactor(ui): don't expose webauthn routes if webauthn is disabled
- 5d9d0b2 refactor(ui): standardize user variable naming and avoid a SQL query when only
userIDis used - 50c5996 refactor: remove some
fmt.Sprintfcalls - 884521a refactor(template): use modern svg directive
- 3a01f8a perf(misc): use arrays instead of slices where possible
- c7030a3 xlink:href of svg use tag is deprecated
- 68bf289 Fix svg icons flickering (miniflux#3653)
- 93e2d6b Clone template on every request, before changing its Funcs
- 45fe589 Use correct dataset property for offlineURL
- 3af6b93 Merge branch 'upstream-main'
- 68984da perf(static): minimize the SVG
- 485baf9 refactor(misc): fix a handful of TODO
- 06cbf1b fix(icon): update incorrect log messages
- b20a8c9 fix(ui): invert toast notification icons
- b2103fd Use layout.html directly, instead of artifical "base"
- 0db614a pregzip css and js bundles
- 533a5dd M...
v2.2.11
Changelog
- 340304d Mark as read on /unread using less(-1) SQL queries
- 66eb446 Replace all location.reload() by location.replace(location.href)
- d2a1866 Disable auto restoration of scroll position on reload,
- d73bb66 Just a style change
- 8185399 JSON endpoints shouldn't redirect to /login
- 5aa3c0c Merge branch 'upstream-main'
- 80f48c8 refactor: replace
interface{}withany - 045f2f1 chore(view): remove unused
webauthn_js_checksumkey - 2565ff9 refactor(template): make use of
template.ParseFS - b3fce75 refactor: replace
Sprintfwith string concatenation - 798bc4c refactor(static): use a simple struct instead of two slices to store assets data and checksums
- b1cbaae refactor(storage): simplify
feed.goby usingmin(), inline errors, and use idiomatic conditions - 924293e perf(storage): avoid heavy-weight SQL when marking feed as read
- 826977b perf(api): speed up
markFeedAsReadby avoiding aJOINoperation - ed0e4a6 refactor(template): reindent and merge tags in
feed_list.html - 5affd78 refactor(reader): move the fetcher outside of a loop
- d3ad460 Revert "feat(cookie): use
SameSiteStrictModewhen not using OAuth2/OIDC" - 0f3c04a test(rewrite): fix flaky test case by sorting query string keys
- ccccc5e Mark as read on scroll unread entries only,
- 6dd59d6 Reorganize middlewares a little
- c0ca003 Merge branch 'upstream-main'
- e8e3a60 refactor(googlereader): remove intermediate variable
- a6ce5c9 perf(storage): minor optimization for
FetchJobs - 76ef8f3 refactor(googlereader): replace
Sprintf("%d")withFormatInt - a43d150 refactor(parser): centralize seek logic and provide a hint for the compiler to eliminate a useless bound check
- f9e6ad5 Refresh of active session cookie
- d97f59c Fix Uncaught ReferenceError: markPageAsRead is not defined
- 6be1c13 Change "Mark as read" to "Mark as unread" on scroll
- ee37731 Time to remove compat HashFromStringCompat and always use xxhash
- 52a65b4 Merge branch 'upstream-main'
- 0986e72 Move my js into dsh.js
- 3bb9659 refactor(js): create utility functions to manage buttons state
- b505a63 refactor(js): rewrite toast notification implementation
- e9d9256 refactor(js): rename functions to include action suffix
- 391792a refactor(js): combine
handleBookmarkandtoggleBookmarkfunctions - d2cfca5 refactor(js): combine
handleSaveEntry()andsaveEntry()functions - f2e34cf refactor(js): split
openOriginalLink()into smaller functions - 5c3be3e refactor(js): combine
handleShare()andtriggerWebShare()functions - 546fbcf perf(storage): pair all
SELECT truewithLIMIT 1 - 2e28bf7 refactor(js): improve item navigation logic in goToListItem function
- 52c1386 refactor(js): enable touch handlers only on touch devices and fix various issues in WebAuthnHandler
- 4910f1f refactor(js): remove RequestBuilder
- af6807d Merge branch 'upstream-main'
- 52e3cf6 Fix this json after upstream merge
- a578b51 Merge branch 'upstream-main'
- bbe3c2e refactor(js): simplify some functions using modern JavaScript
- b116da8 refactor(js): remove
bootstrap.js - b62fd8c Merge branch 'upstream-main'
- 1f1f945 Keep constant order of query args and
- 07246e2 refactor(js): improve menu handlers
- 05e5940 Merge branch 'upstream-main'
- 6241065 refactor(js): code cleanup and add jshint comments
- 64b3594 Merge branch 'upstream-main'
- 35a76fb Fix last upstream merge
- 3e1a7e4 feat(js): register the service worker as JavaScript module
- cb535a5 Merge branch 'upstream-main'
- bfbc1c8 feat(js): load
app.jsusing JavaScript module - f546ff3 Fix File is not properly formatted (goimports) after upstream merge
- ccc1655 Merge branch 'upstream-main'
- 91ddda1 Reorganize a little app.js and bootstrap.js
- b2de3f8 Switch to github.com/dsh2dsh/bluemonday
- 50197c2 refactor(js): reorder functions and add comments
- 7a25cf5 fix(js): handle multiple buttons in a single form when showing loading state
- 1ec90e3 refactor(js): simplify CSRF token retrieval from the document
- 5e07278 feat(ui): refresh the page when marking as read the last visible entry
- cce0e7b refactor(rewrite): replaced regex-based YouTube and Invidious video ID extraction with URL parsing
- 1f7843e feat(integration): prioritize feed-level webhook URL when available when saving entries
- 181e134 refactor(locale): introspect the translation files at load time
- f3052eb refactor(misc): make use of type constraints where possible
- 078eb39 refactor(config): don't check random.Read's return value
- 6aeb565 build(deps): bump github.com/prometheus/client_golang
- 0c3e251 refactor(filter): parse and merge filters only once per refresh
- bfd8cb3 feat(ui): add icons to main menu
- 9eea987 feat(rewrite): add a rule to remove useless heading images on phoronix
- 240ec8b build(deps): bump github.com/coreos/go-oidc/v3 from 3.14.1 to 3.15.0
- f3ac4da test(rewrite): add unit tests for
addYoutubeVideoFromIdandaddInvidiousVideofunctions - 4316be8 Merge branch 'upstream-main'
- 66b269e feat(readability): avoid removing elements with
contentclass - d60aa43 Couple of fixes after last merge
- 9490e4e Merge branch 'upstream-main'
- 54abd0a fix(parser): handle feeds with leading whitespace that exceeds buffer size
- 5eab475 refactor(googlereader): rename/unexport response types and functions
- bf46642 ci: update commit linter to allow default Git revert message
- a62b97b refactor(readability): get rid of getClassWeight
- 1de9cf4 perf(readability): simplify removeUnlikelyCandidates
- 7912b9b perf(readability): avoid materializing text to count commas
- 2d24f5d refactor(readability): minor code folding
- 682610c Wrap error returned from external package after last merge
- 0f2bcb0 Merge branch 'upstream-main'
- 20825a9 Revert "perf(template): use
ParseFSto directly parse the embedded template data" - 1d11623 feat(integration): use Bearer token authorization instead of cookie for Linkwarden client
- 202de7c fix(integration): rename Linkwarden endpoint label to base URL (miniflux#3568)
- b470b18 feat(makefile)!: remove unsupported platforms and stop distributing Windows binary
- 5877cf3 build(deps): bump github.com/go-webauthn/webauthn from 0.13.3 to 0.13.4
- d417b0f build(deps): bump github.com/tdewolff/minify/v2 from 2.23.9 to 2.23.10
- 3daf26b Merge branch 'upstream-main'
- 703f113 fix(storage): ensure strings are truncated to fit tsvector size limit and remain valid UTF-8
- 0b74074 Fix last merge
- 4e692d5 Merge branch 'upstream-main'
- f02213a refactor(readability): use
Stringexplicitly in debug log instead ofAny - 410b43a chore(contrib): update PostgreSQL image from 15 to latest in docker-compose examples
- d9de9d1...
v2.2.10
Changelog
- fadce82 Merge branch 'upstream-main'
- 3a7174f Refactor reader/filter package
- 95eb6c1 chore(docker): update golang base image to alpine 3.22
- 643b89e perf(storage): take advantage of entries_feed_id_hash_key in updateEntry
- 84ebf1a docs(manpage): update
LISTEN_ADDRdescription - 875618d docs(changelog): update release notes for version 2.2.10
- d453b5b Merge branch 'upstream-main'
- dcdf567 Always use current user id for mark-all-as-read
- 097ae6e Move feed's Size and Hash from Extra into Runtime jsonb
- 2142a3d Move client into internal
- 112e0a3 Merge branch 'upstream-main'
- 8641f5f refactor(database): drop 3 columns in a single transaction
- efb4bd9 Merge branch 'upstream-main'
- 9dd42b4 Use real user id instead of request param
- 93b17af refactor(appjs): no need to check if always present elements are always present
- 92876a0 refactor(http): rename package from httpd to server for consistency
- d62df4e refactor(server): avoid double call to Sprintf
- 8fa5041 feat: Allow multiple listen addresses
- 31b9689 Merge branch 'upstream-main'
- 449084e Make inputs and textarea wider
- dc05965 chore(template): remove
X-UA-Compatiblemeta tag specific to Internet Explorer - 61744c5 Merge branch 'upstream-main'
- 109e668 perf(storage): pre-allocate a slice in RefreshFeedEntries
- a0bac82 move FilterEntryMaxAgeDays filter to filter package
- 6d58052 fix(readability): do not remove elements within code blocks
- 491d51c feat(locale): update Polish translation
- db49e41 refactor(processor): move FilterEntryMaxAgeDays filter to filter package
- e6b8141 feat(filter): add
EntryDate=max-age:durationfilter - b0a10f0 feat(css): add margin-bottom to input for consistent spacing
- 9c05c3c feat(filter): merge user and feed entry filter rules
- 2a9d91c feat: add entry filters at the feed level
- edcef71 Merge branch 'upstream-main'
- cb59944 refactor(processor): move
RewriteEntryURLfunction torewritepackage - c12476c refactor(filter): avoid code duplication between IsBlockedEntry and IsAllowedEntry functions
- bc6ab44 fix(filter): skip invalid rules instead of exiting the loop
- 6282ac1 refactor(processor): move filters to a
filterpackage - 96c0ef4 refactor(processor): massive refactoring of filters.go
- b139ac4 refactor(youtube): Remove a regex and make use of fetchWatchTime
- c818d5b refactor(youtube): initiliaze two maps to the proper length
- e366710 refactor(processor): remove a useless type declaration
- 5cff4d7 refactor(processor): remove a duplication function call
- f31a784 refactor(processor): refactor common code into a fetchWatchTime function
- 7edfcc3 refactor(processor): remove a useless type declaration
- fe4b00b refactor(processor): extract some functions into an utils.go file
- 46b159a refactor(processor): simplify bilibili processing
- 1b87435 Switch from hash/fnv to xxhash
- 9159d24 Merge branch 'upstream-main'
- 86c58e1 perf(reader): use a non-cryptographic hash when possible
- 9a1d959 refactor(crypto): use rand.Text() instead of a custom implementation
- 4354697 refactor(tests): use b.Loop() instead of for range b.N
- 3ab9ca9 refactor(http): Don't hardcode TLS configuration
- 1af6df7 perf(api): use math/rand/v2
- 50dff57 build(go): bump to go 1.24
- d2a7c48 Refactor fever package
- 1b1c11c Merge branch 'upstream-main'
- 6af4d69 test(sanitizer): add test case to cover Vimeo iframe rewrite without query string
- 27015a5 test(sanitizer): add unit test for 0x0 pixel tracker
- cdb57b3 perf(sanitizer): minor simplifications of the sanitizer
- 152ef57 feat(sanitizer): consider images of size 0x0 as pixel trackers
- 72486b9 refactor(processor): minor simplification of a loop
- 81df0b2 perf(rewrite): make getPredefinedRewriteRules O(1)
- b296f21 refactor(internal): add an urllib.DomainWithoutWWW function
- af15032 perf(fetcher): pre-allocate the cipherSuites
- 6a6a88d docs(readme): document a couple of nifty features
- 8660f5e perf(media): minor regex simplification
- 1eed093 Implement deletion of empty keys from sessions
- 7fe148a Replace tab -> 2 spaces in panic traces,
- 7083151 Merge branch 'upstream-main'
- 4f3d4e8 Return back
WHERE f.user_id = $1 AND f.id = $2condition - da4ab42 feat(rewrite): add
parkablogs.comto the referer override list - 237672a perf(sanitizer): use a switch-case instead of a map
- e9d4a13 refactor(sanitizer): remove two useless
www.prefixes - 0149574 Refresh all feeds in the background will reset feeds errors
- 3a8f1af Merge branch 'upstream-main'
- 5c5b500 remove SERVER_TIMING_HEADER config option
- 1803653 Remove deprecated config options
- 763693c Fetch relative site icons using effective URL (after redirect),
- ca446bc Always clone headers in ExecuteRequest,
- d291d6a refactor(config): remove deprecated config options
- e0f7e6f feat(config)!: remove
SERVER_TIMING_HEADERconfig option - ef3dbd3 perf(database): use
TRUNCATEinstead ofDELETE FROMin migrations - 32f0805 perf(database): marginally speeds migrations up
- 117c031 feat(integration)!: remove Pocket integration
- c99ea87 Refactor googlereader package
- 5a092c2 Merge branch 'upstream-main'
- bd20b1c Make YOUTUBE_EMBED_URL_OVERRIDE type *url.URL
- b95c902 refactor(sanitizer): make
isValidAttribute()check O(1) - 3538c42 refactor(sanitizer): use global variables to avoid recreating slices on every call
- ac44507 refactor(sanitizer): use a map for iframe allow list
- 44c48d1 perf(sanitizer): extract a call to url.Parse and make intensive use of it
- 36bf1fa Replace "/v1" by const
- b4eb8d2 Separate auth middlewares by path prefix
- e99c683 Add worker pool err into healthcheck
- f0a2636 Merge branch 'upstream-main'
- 4072770 feat(rewrite): add support for YouTube Shorts video URL pattern
- 8a014c6 perf(readability): minor regex improvement
- 2291179 Move livenessProbe and readinessProbe into health.go
- b0019d0 Log storage summary after refreshing of batch of feeds
- 1e1c03e Log "worker: refreshed a batch of feeds with error"
- 1efe8aa Log refresh feed errors
- a6ff947 Merge branch 'upstream-main'
- 4cdfb57 Reapply "perf(xml): optimize xml filtering"
- 60ad19c perf(rss): early return when looking for an item's author
- f40c1e7 fix(reader): fix a crash introduced by d59990f
- c1f8c2b Merge branch 'upstream-main'
- 0c94c50 Log number of storage queries and their durations
- 17f6cf5 Don't increase feed errors on a db error
- 4a6c0db I don't think feed refresh needs AnotherFeedURLExists...
v2.2.9
Changelog
- 6ba9e7a Merge branch 'upstream-main'
- 325c505 docs(changelog): update release notes for version 2.2.9
- e8128aa Remove small delay before marking page as read on scroll
- 8c419ac Refactor ui package one more time (3rd pass)
- aa084a9 Merge branch 'upstream-main'
- bfd8860 feat(api): add new endpoints to manage API keys
- ebd65da feat(locale): update Polish translation
- 02e6380 Merge branch 'upstream-main'
- 83191b0 fix(storage): remove extra comma introduced by commit 09fb05a
- 51975af Remove pagination if MarkReadOnScroll,
- 947e835 Handle title click by js if AlwaysOpenExternalLinks,
- b9d9375 Hide external link if AlwaysOpenExternalLinks
- f949c08 Merge branch 'upstream-main'
- 8142268 feat: populate feed description automatically
- 5920e02 feat: add liveness and readiness probes
- 09fb05a feat: add option to always open articles externally
- fc8001d Merge branch 'upstream-main'
- 411c92b Mark entries as read when scrolled
- 52b1843 fix(migrations): prevent failure at v45 with long entry URLs
- 7c8c7c2 feat(locale): update Polish translation
- d3ef0b2 Don't hide read items, just mark it as read
- 36bb2b2 Use FeedByID directly, instead of via FeedQueryBuilder,
- 9690dbd Merge branch 'upstream-main'
- 9768eb9 feat(locale): update French translations
- b65373d feat(webauthn): perfer creation of a client-side discoverable credential
- 596d22c build(deps): bump github.com/tdewolff/minify/v2 from 2.23.6 to 2.23.8
- 4b86570 chore(gitignore): ignore miniflux binary in root directory
- e99864a fix(locale): localize Git commit label at about page
- 7e3521d Add index on feeds.user_id, parsing_error_count
- 4269054 Let schedule check for more jobs after refreshing feeds by tick
- d73653d Create index on feeds.next_check_at
- b352d47 Periodically delete old per server limits,
- 1f14fbe Rate limit connections per server
- 2a055e8 Merge branch 'upstream-main'
- 2254638 feat(locale): complete Russian translation
- 3db6e82 feat(locale): update Polish translation
- 1c19151 build(deps): bump github.com/tdewolff/minify/v2 from 2.23.5 to 2.23.6
- 20e4cb0 Fix handling of LastForceRefresh after refactoring of ui/session
- 009680b Bump github.com/jackc/pgx/v5 from 5.7.4 to 5.7.5
- a5386f1 Refactor ui/session package
- 8bbd933 Merge branch 'upstream-main'
- 553c578 feat(rssbridge): support auth token for RSS-Bridge
- 1306a88 Fix unable to encode into binary format for int8 after last commit
- f89e183 Extract updating of feed's runtime data into UpdateFeedRuntime
- c69d18e Update specific json keys instead of the whole session data
- 8a939b1 Refactor ui package (2nd pass)
- 51c7b27 Extract shared code from ui package and reuse it
- 48dbab1 Don't fetch content by default with list of entries
- f81d488 Allow custom comments URL template use "replace" function
- 800b83c Click on comments URL mark this entry as read.
- 49cb472 Custom comments URL per feed.
- 7a6cb7d Add size and hash to feed info page
- 4a2d3c1 Add info about my repo into about.html
- 5ce14c2 Refactor
miniflux refresh-feedsCLI, - 42f1b1c Log storage_queries for refresh feed
- b2cb137 Crop screenshots and remove empty space [skip ci]
- b9e14c2 Republished entries now marked as unread [skip ci]
- 3598fb5 Changed a little how article items looks like [skip ci]
- 1383a2c Merge branch 'upstream-main'
- 9464ef5 Fix cannot scan text (OID 25) in text format into string
- 3b5a913 Fix wrong order of args after last commits
- 81ec32a fix(webauthn): correct arg in debug log
- af6e7d2 Merge branch 'upstream-main'
- 4324bd8 Wakeup scheduler, instead of push jobs directly to the worker pool
- 83f4e59 LocalizedErrorWrapper implements error interface
- 47c8e90 Updated entries have updated published_at and changed_at,
- 3818a8a build(deps): bump github.com/go-webauthn/webauthn from 0.12.3 to 0.13.0
- cf584dc (*Pool).Push waits for completion of all jobs
- edc8371 Cleanup .github [skip ci]
- cbe070d This project is an opinionated fork of Miniflux.
- f6ae3e8 Limit max number of connections per server
- ab7aa59 Mark republished entries as unread
- e273420 Refactor internal/reader
- 5202fd5 Merge branch 'upstream-main'
- 036704b feat(response): change error response content type to plain text and escape HTML
- 327d027 feat(settings): replace
div.panelwith paragraph tags for OAuth2 links - 5ae2cbd feat(settings): add validation for entry order and categories sorting order
- 0ffa457 Increment feed error count atomically by SQL UPDATE,
- 18b534a Don't refresh entries if the list is empty
- 9a7296f Fix content changed check
- b960af6 Keep order of tags,
- 7c7df1b Don't refresh feeds with same size and content hash
- e6829f7 Don't try to refresh feed icon on feed refresh,
- fd33fd7 Update republished entries only
- ed18fc0 Log "daemon exited with error" if any error
- 133563f Info log level for "storage: refresh feed entries"
- c6d87c9 Ignore "read" and "removed" entries during refresh,
- 7dbfb72 Make refresh endpoints sync, instead of async
- 8bf5cc0 Stop refresh readed feed entries
- cdb96dc Merge branch 'upstream-main'
- ad6e338 Refactor (*Storage).RefreshFeedEntries
- f15d29d build(deps): bump github.com/tdewolff/minify/v2 from 2.23.3 to 2.23.5
- 57f1888 Make (*Storage).CreateFeed faster using pg copy protocol
- 8048e3b Merge branch 'upstream-main'
- 843f68a Refactor integration tests
- 828a433 fix(sanitizer): MathML tags are not fully supported by
golang.org/x/net/html - d1dc369 feat(sanitizer): add MathML tags to the sanitizer
- a8076e1 ci: remove deprecated
reviewersfield fromdependantbot.yml - 3448d62 build(deps): bump golang.org/x/net from 0.39.0 to 0.40.0
- 159261f build(deps): bump golang.org/x/oauth2 from 0.29.0 to 0.30.0
- ff2dfe9 feat: remove the
refparameter from url - 11c397f Merge branch 'upstream-main'
- 1e36cb6 Add more logging of cleanup tasks
- a5e3719 build(deps): bump golang.org/x/crypto from 0.37.0 to 0.38.0
- cdadb87 build(deps): bump golang.org/x/image from 0.26.0 to 0.27.0
- 5284d61 build(deps): bump golangci/golangci-lint-action from 7 to 8
- 0ee2f41 Use correct context.Context for pgx pool
- c379798 Add more log messages
- db9e0d5 Fix space after .item-meta-info and before .item-meta-icons
- 0401e4d Refactor daemon's startup
- 67ee235 Merge branch 'upstream-main'
- 2ed5ff9 Bump golangci/golangci-lint-action...
v2.2.8
Changelog
- 8dc925a Add goreleaser.yml workflow
- 6b14022 Make linters happy
- 1891089 Merge branch 'upstream-main'
- 7ac0f41 Refactor CLI
- f68046c docs(changelog): update release notes for version 2.2.8
- f901662 Fix parseFormat uses wrong format
- d33e305 fix(api):
hide_globallycategories field should be a boolean - 51c5594 Multiple log files
- af81000 Automatically reopen log file on rotation
- 971ea74 Add
LOG_FORMAT=human - 17ad9d2 Change some Debug log messages into Info
- 4620143 Merge branch 'upstream-main'
- a516474 Refactor and simplify config parser
- 764212f refactor(js): replace
DomHelpermethods with standalone functions - e02b65d fix: deal with navigator.share exceptions
- fe7ec25 chore: fix indentation
- 2959a4d fix: clarify share flow in UI
- 6b70a7d feat(api): add
update_contentquery parameter to/entries/{entryID}/fetch-contentendpoint - f1735f5 Makefile: add clean-e2e targets
- 495c6aa build(deps): bump github.com/mattn/go-sqlite3 from 1.14.27 to 1.14.28
- 938f33e Configure pgsql with trust for using minuflux user w/o password
- 01c83e1 Always archive e2e_api.log
- 17cf5ab Upload e2e_api.log as artefact
- 925d7f7 Add workflow_dispatch to go.yml
- cefafcc Add e2e tests into go.yml workflow
- fd5c477 Make linters happy
- 6202b7c Merge branch 'upstream'
- bc228d0 ci: add documentation issue template
- d139d8a feat(cli): add
-reset-feed-next-check-atargument - 28d0185 build(deps): bump github.com/PuerkitoBio/goquery from 1.10.2 to 1.10.3
- c87c93d feat(config): add
SCHEDULER_ROUND_ROBIN_MAX_INTERVALoption - b0a7488 Extract common code from StreamHandler-s into makeStreamIDResp
- d164c73 Google Reader API applies user's
Entry sortingby default - 4e1a1ec gofump it