Frédéric Guillot
d3a1e7dbec
ci: update Debian packager Docker image to Trixie
2026-02-12 19:59:43 -08:00
Frédéric Guillot
7edf42fe18
fix: run go fmt with Go 1.26
2026-02-12 19:22:47 -08:00
dependabot[bot]
5513827cdd
build(deps): bump github.com/lib/pq from 1.11.1 to 1.11.2
...
Bumps [github.com/lib/pq](https://github.com/lib/pq ) from 1.11.1 to 1.11.2.
- [Release notes](https://github.com/lib/pq/releases )
- [Changelog](https://github.com/lib/pq/blob/master/CHANGELOG.md )
- [Commits](https://github.com/lib/pq/compare/v1.11.1...v1.11.2 )
---
updated-dependencies:
- dependency-name: github.com/lib/pq
dependency-version: 1.11.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-10 18:32:53 -08:00
dependabot[bot]
052ad27e38
build(deps): bump golang.org/x/net from 0.49.0 to 0.50.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.49.0 to 0.50.0.
- [Commits](https://github.com/golang/net/compare/v0.49.0...v0.50.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.50.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-09 19:40:37 -08:00
dependabot[bot]
96c45874f5
build(deps): bump golang.org/x/crypto from 0.47.0 to 0.48.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.47.0 to 0.48.0.
- [Commits](https://github.com/golang/crypto/compare/v0.47.0...v0.48.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.48.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-09 19:28:42 -08:00
dependabot[bot]
3e022fb86e
build(deps): bump golang.org/x/image from 0.35.0 to 0.36.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/image/compare/v0.35.0...v0.36.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.36.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-09 19:21:08 -08:00
dependabot[bot]
aa814491f6
build(deps): bump golang.org/x/oauth2 from 0.34.0 to 0.35.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.34.0 to 0.35.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.34.0...v0.35.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.35.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-09 19:08:12 -08:00
dependabot[bot]
90c2199f0f
build(deps): bump golang.org/x/term from 0.39.0 to 0.40.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.39.0 to 0.40.0.
- [Commits](https://github.com/golang/term/compare/v0.39.0...v0.40.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-version: 0.40.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-02-09 19:04:01 -08:00
Emiel Wiedijk
d40e523d25
fix: 'v' shortcut uses main browser in Safari PWA
...
When using the 'v' shortcut in a Safari PWA on macOS, Miniflux opened
the link in something similar to an 'in-app browser' with no URL bar and
a separate window for each link. When clicking the link with the mouse,
a "normal" browser tab is opened instead.
It looks like target="_blank" on the <a> element implies the "noopener"
attribute, which causes Safari to use the main browser. For window.open,
"noopener" is not implied. This commit adds the "noreferrer" argument to
the window.open call (which implies the "noopener" option) rather than
changing the window.opener attribute manually. This option causes Safari
to use the main browser with the 'v' shortcut.
2026-02-09 16:09:09 -08:00
Frédéric Guillot
46e77eccb0
fix(request): change FindRemoteIP to fallback to 127.0.0.1
2026-02-08 19:39:26 -08:00
eyjhb
f19fc2ff53
feat: add validation for TRUSTED_REVERSE_PROXY_NETWORKS config
...
Currently if the IP is not in CIDR notation it will just silently
fail, which can be very confusing. This commit changes that, as well
as adds a test.
2026-02-08 14:19:37 -08:00
jvoisin
0201c80db1
refactor(subscription): improve wp-json skip
...
No need for an extra-condition, we can simply express the constrain in the
query instead.
2026-02-08 14:00:11 -08:00
Frédéric Guillot
0022d0646b
feat(subscription): ignore Wordpress API endpoint when discovering JSON feed
2026-02-06 16:56:28 -08:00
jvoisin
253119ed5f
refactor(http): minor code cleanup
...
- Fix a grammar issue in the logs
- Factorize and name two checks
- Replace a variable with a `continue`
2026-02-06 16:31:58 -08:00
jvoisin
2619eba43c
security(http): don't expose miniflux' version on an unauthenticated endpoint
...
There is no reason to expose miniflux' version to the internet.
2026-02-06 16:28:23 -08:00
Frédéric Guillot
31f4f366a9
fix(commit-checker): add security to conventional commit pattern
2026-02-06 16:23:59 -08:00
jvoisin
fc9cb9e5d5
refactor(googlereader): unexport two symbols
2026-02-06 16:18:02 -08:00
jvoisin
9b859e7f3f
refactor(storage): unexport a bunch of symbols
2026-02-06 16:17:18 -08:00
Julien Voisin
6f3c92db74
perf(subscription): don't read the body twice
...
Since FindSubscriptions is reading the Body in a []byte, there is no need to
wrap it into a Reader for NewCharsetReader to ReadAll into another buffer: we
can simply pass the []byte instead. For some large webpages, this might shave
off two allocation-deallocation of a handful of megabytes when looking for
subscriptions.
2026-02-06 16:15:51 -08:00
jvoisin
0dcc0a852b
refactor(sanitizer): improve a bit sanitizeAttributes
...
- Sort blockedResourceURLSubstrings
- Add x.com to the list of blocked links
- Move isBlockedResource above ResolveToAbsoluteURLWithParsedBaseURL, to
avoid having to properly parse blocked urls.
2026-02-05 21:48:21 -08:00
jvoisin
7b65255757
refactor(sanitizer): handle deeply nested recursion
2026-02-05 21:47:17 -08:00
jvoisin
6a9d7894d1
refactor(sanitizer): improve how attributes are sanitized
...
Move hasRequiredAttributes above getExtraAttributes, as extra attributes,
as their name implies, aren't required. This allows to return a []string
instead of a ([]string, []string), as well as simplifying getExtraAttributes
of course. Note that this resulted in an ordering change of <iframe> attributes
so the testsuite had to be updated.
This improves the performances of SanitizeHTML by a bit less than 10% on local
benchmarks.
2026-02-04 19:34:01 -08:00
jvoisin
f3d0e0378b
refactor(workflows): don't run useless on forks job forks
...
There is no need to build binaries and docker images, as well as mirroring to
codeberg, on fork repositories.
2026-02-02 15:48:36 -08:00
Frédéric Guillot
4d27f66ff9
refactor(sanitizer): reorder non-public functions alphabetically
2026-01-30 17:38:51 -08:00
Frédéric Guillot
5a8431b144
refactor(sanitizer): enforce isBlockedResource() on srcset URLs
2026-01-30 17:27:05 -08:00
Frédéric Guillot
9e760e14cd
test(sanitizer): rewrite TestSelfClosingTags
2026-01-30 17:05:18 -08:00
Frédéric Guillot
879e40670c
test: refactor TestImg and TestURIScheme
2026-01-30 16:57:39 -08:00
jvoisin
bf24fd1ec9
perf(sanitizer): don't do a map lookup for every attribute of a tag
...
There is no need to do a lookup in allowedHTMLTagsAndAttributes in the loop,
as the tag never changes in this function. This is a minor optimization,
but since sanitizeAttributes is in the hot path of SanitizeHTML, it should be
worthwhile.
2026-01-30 16:40:57 -08:00
jvoisin
b57ebac757
refactor(sanitizer): remove a useless case
2026-01-30 16:39:35 -08:00
Frédéric Guillot
acfb7dc213
test: refactor TestAttrLowerCase
2026-01-30 16:39:23 -08:00
jvoisin
62f316c7cf
refactor(sanitizer): html attributes keys are always lowercase
2026-01-30 16:33:21 -08:00
Frédéric Guillot
89638b448a
refactor(sanitizer): remove workaround that strip large img width attribute
...
The browser will do the right thing by default even if the image width
is larger than Miniflux's layout.
2026-01-29 21:24:15 -08:00
jvoisin
d8181b1f65
refactor(sanitizer): use a parser instead of a tokenizer
...
As stated in [golang.org/x/net/html's documentation](https://pkg.go.dev/golang.org/x/net ):
> If your use case requires semantically well-formed HTML documents, as defined
by the WHATWG specification, the parser should be used rather than the
tokenizer.
The sanitizer is modifying the HTML document, and I'm pretty sure we don't want
to implement a WHATWG-compliant parser ourself, as there are _so many_
edge cases everywhere. Picking the parser instead of the tokenizer ensures that
miniflux has the same view of the DOM than web browsers, removing the risk of
disparities, and thus injection-related security issues. Another benefit of
this commit is to make the code way more readable/simple.
The only changes made to the testsuites are:
- Removing the trailing `/` on self-contained tags, as the spec doesn't require
them. Adding them systematically could also have been done, but as the
testsuite isn't consistent in this regard, it would have significantly
increased the size of the commit to normalize it.
- Some weird things that were wrong in the first place, like how
`<td rowspan="<b>injection</b>">text</td>` is interpreted by the browser as
`text`, and not as `<td rowspan="<b>test</b>">test</td>`.
Care has been taken to re-use as much code from the tokenizer-based sanitizer
as possible.
2026-01-29 20:36:09 -08:00
Bùi Minh Đức
ce6cd0b2b6
fix(rewrite): update rewrite rules for vnexpress.net
2026-01-29 20:09:46 -08:00
Bùi Minh Đức
ba05c96d88
feat(rewrite): add rewrite rules for vnexpress.net
...
Add lazy loading images, remove embedded related news articles, surveys, and fix video display
2026-01-29 20:09:46 -08:00
Bùi Minh Đức
58674b9277
feat(scraper): add scraper rule for vnexpress.net
2026-01-29 20:09:46 -08:00
dependabot[bot]
6b1f208209
build(deps): bump github.com/lib/pq from 1.10.9 to 1.11.1
...
Bumps [github.com/lib/pq](https://github.com/lib/pq ) from 1.10.9 to 1.11.1.
- [Release notes](https://github.com/lib/pq/releases )
- [Changelog](https://github.com/lib/pq/blob/master/CHANGELOG.md )
- [Commits](https://github.com/lib/pq/compare/v1.10.9...v1.11.1 )
---
updated-dependencies:
- dependency-name: github.com/lib/pq
dependency-version: 1.11.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-29 19:29:49 -08:00
Julien Voisin
7c41128d88
refactor(sanitizer): use uint instead of int when possible
...
This helps with bound-check elimination, and makes the code a bit more clear.
2026-01-28 19:46:59 -08:00
Frédéric Guillot
3aea68e725
refactor(sanitizer): rewrite srcset parser according to HTML specs
...
The new implementation follows the WebKit HTMLSrcsetParser approach. It
correctly handles various edge cases that the previous string-splitting
method could not parse.
2026-01-27 20:06:45 -08:00
jvoisin
a5fb91e3e8
refactor(sanitizer): rename isValidTag to isAllowedTag
2026-01-26 20:21:08 -08:00
jvoisin
8357e6decf
refactor(sanitizer): don't process tags when len(blockedStack) != 0
...
Then there are things in blockedStack, it means that we're currently iterating
on children of a blocked tag, so there is no need to actually process them.
2026-01-26 20:21:08 -08:00
Bùi Minh Đức
ad4ca71f68
feat(scraper): add scraper rule for bleepingcomputer.com
2026-01-26 15:45:28 -08:00
Bùi Minh Đức
660c79bbdd
feat(rewrite): add rewrite rules for bleepingcomputer.com
...
Remove embedded in-article advertisements, links to other articles, and add lazy loading images
2026-01-26 15:45:28 -08:00
Frédéric Guillot
2fa8995a35
fix: avoid possible deadlock when cleaning removed entries
...
- Lock delete targets in order with SKIP LOCKED before deleting removed entries
- Have the removed-entry scrubber skip locked rows to prevent blocking
2026-01-19 12:04:57 -08:00
Frédéric Guillot
ffed2b4fa1
fix(storage): do not keep any old enclosures if there is none in the updated entry
2026-01-19 11:24:54 -08:00
Frédéric Guillot
9fc69fd2e0
refactor(storage): update IconByFeedID to handle sql.ErrNoRows
2026-01-19 10:47:18 -08:00
Frédéric Guillot
cddd2eb168
feat(jsonfeed): include external_url in JSON entry hash fallback
2026-01-18 17:41:47 -08:00
Frédéric Guillot
33b780d9c0
fix(jsonfeed): stop the title fallback loop at the first non-empty value
2026-01-18 17:29:43 -08:00
Frédéric Guillot
5d8540b324
fix(jsonfeed): avoid panic when parsing null JSON feed
2026-01-18 17:16:15 -08:00
Frédéric Guillot
a2a5244387
feat(jsonfeed): support malformed feeds with author object in authors array
2026-01-18 17:01:55 -08:00
Frédéric Guillot
3a232d0c8d
test(request): add 100% unit test coverage
2026-01-16 17:23:20 -08:00
Frédéric Guillot
5a8df8abf0
fix(fetcher): ensure response body is closed even on client error
2026-01-16 17:02:32 -08:00
Julien Voisin
a4883ca11e
refactor(fetcher): use modern string functions and improve error messages
2026-01-16 15:35:44 -08:00
Frédéric Guillot
4cd66aef5f
docs(client): improve Godoc comments for exported functions
2026-01-16 14:31:38 -08:00
Frédéric Guillot
0ab3bb5efb
refactor(api): replace inlined map and structs with named payload structs
2026-01-16 14:20:37 -08:00
Frédéric Guillot
71c551ffe0
test(timezone): add test for AvailableTimezones()
2026-01-16 13:59:09 -08:00
Frédéric Guillot
bb05b25530
refactor(urllib): replace AbsoluteURL and GetAbsoluteURL
2026-01-16 13:50:54 -08:00
Frédéric Guillot
7b7fd48e15
test(validator): add more unit tests for the validation functions
2026-01-16 11:43:03 -08:00
Frédéric Guillot
fb0fcfb266
fix(js): use arrow functions for touchcancel event to maintain context
2026-01-15 21:33:22 -08:00
Frédéric Guillot
39840bb0d2
refactor(js): avoid returning values from forEach callbacks to prevent ignored results
2026-01-15 21:20:00 -08:00
Frédéric Guillot
79a3369699
refactor(js): use template literals for string concatenation to improve readability
2026-01-15 21:01:48 -08:00
Frédéric Guillot
696b98bb16
refactor(js): store keyboard shortcuts in a Map instead of plain object
2026-01-15 20:44:29 -08:00
Márton Salomváry
85fa69ba38
fix: unbreak cmd/ctrl/shift click on main nav
...
Most browsers allow opening links in a new window or new
tab by holding down a modifier key like shift, command,
control (depending on the OS and browser) while clicking a link.
Unconditional event.preventDefault() on click events breaks this functionality.
2026-01-15 19:38:56 -08:00
jvoisin
c5a9111d58
refactor(timezone): improve internal timezones handling
...
- Add a new IsValid method to avoid having to materialize a map just to check
if a given timezone is in it.
- Use an iterator instead of materializing a map every time the full list of
timezones is required.
- Use a slice in the template instead of a map to iterate over all timezones.
2026-01-12 20:40:10 -08:00
dependabot[bot]
a46afe6979
build(deps): bump golang.org/x/net from 0.48.0 to 0.49.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.48.0 to 0.49.0.
- [Commits](https://github.com/golang/net/compare/v0.48.0...v0.49.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.49.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-12 19:34:56 -08:00
dependabot[bot]
2f67a68e75
build(deps): bump golang.org/x/crypto from 0.46.0 to 0.47.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.46.0 to 0.47.0.
- [Commits](https://github.com/golang/crypto/compare/v0.46.0...v0.47.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.47.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-12 19:21:01 -08:00
dependabot[bot]
83ca211cfb
build(deps): bump golang.org/x/image from 0.34.0 to 0.35.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.34.0 to 0.35.0.
- [Commits](https://github.com/golang/image/compare/v0.34.0...v0.35.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.35.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-12 19:10:53 -08:00
dependabot[bot]
55aa15dd52
build(deps): bump golang.org/x/term from 0.38.0 to 0.39.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/term/compare/v0.38.0...v0.39.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-version: 0.39.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2026-01-09 17:37:45 -08:00
Frédéric Guillot
e54e6c097c
feat(config)!: deprecate FILTER_ENTRY_MAX_AGE_DAYS config option
...
This option can be replaced with a filter rule `max-age:<duration>` instead.
Global environment variables should be reserved for the Miniflux process
configuration that are not meant to be modified by end users.
2026-01-08 20:28:01 -08:00
Frédéric Guillot
56a11d1d45
chore: remove prealloc linter
2026-01-07 20:24:43 -08:00
lclee3390
df28028b24
feat(ui): add filter to search results by unread status
2026-01-07 20:13:56 -08:00
Frédéric Guillot
6439d352d2
docs(man): improve miniflux.1 consistency and fix typos
2026-01-05 18:55:33 -08:00
Frédéric Guillot
a33cfb2b7d
feat(locale): update translations
2026-01-05 17:58:19 -08:00
Frédéric Guillot
590adb9967
refactor(googlereader): remove output param check for user-info handler
...
The `output` parameter seems to be optional and Miniflux will always
returns a JSON response. This change makes Miniflux more consistent with
other open source RSS readers.
2026-01-05 16:01:01 -08:00
Frédéric Guillot
9e817e646f
feat(googlereader)!: remove CORS handler
...
The Google Reader API is not supposed to be used by web clients.
Removing CORS should not break any Google Reader client and it
reduces the attack surface.
2026-01-05 15:49:53 -08:00
Frédéric Guillot
5594586941
fix(googlereader): generated tokens should not be logged even in debug mode
2026-01-05 15:31:23 -08:00
Frédéric Guillot
5db66fc279
refactor(storage): avoid using Sprintf to update session fields
2026-01-04 20:30:09 -08:00
Frédéric Guillot
561389da69
feat: add TRUSTED_REVERSE_PROXY_NETWORKS config option
...
Add an IP-based allow list to prevent spoofing of HTTP headers that
should only be set by trusted reverse proxies.
Note that `TRUSTED_REVERSE_PROXY_NETWORKS` must be configured when
`AUTH_PROXY_HEADER` is used.
The following HTTP headers are taken into consideration only when the
client is an allowed reverse proxy: `X-Forwarded-For`,
`X-Forwarded-Proto` and `X-Real-Ip`.
2026-01-04 11:10:46 -08:00
jvoisin
cd7d61966c
refactor(database): dont' index removed entries' content
...
`document_vectors_idx` used to take 30M before this commit, now it's only 226
kB, after a full VACUUM. A handy command to check the size of indexes is `\di+
public.*`
2026-01-03 14:11:09 -08:00
Frédéric Guillot
29f6dc8896
feat(icon): disallow fetching icon on private networks
...
This change avoid possible SSRF issues and it's configurable at the instance level
2025-12-29 11:15:44 -08:00
Frédéric Guillot
6c83e8c477
feat(mediaproxy): disallow the media proxy to fetch resources on private networks
...
This change avoid possible SSRF issues and it's configurable at the instance level
2025-12-29 11:15:44 -08:00
jvoisin
29015903ba
feat(ui): smooth pages transitions
...
Smooth transitions are pretty nice,
see https://htmhell.dev/adventcalendar/2024/3/
2025-12-28 19:04:54 -08:00
Frédéric Guillot
709e671168
feat(api): execute the content sanitizer when updating or importing entries
2025-12-28 17:34:10 -08:00
Julien Voisin
473c9f225e
refactor(config): reuse validateChoices in validateListChoices to avoid duplication
2025-12-28 17:10:20 -08:00
Gerald Cox
90a389ac25
feat: add API endpoint to import entries into existing feed
2025-12-28 16:56:23 -08:00
Frédéric Guillot
6106546a32
test(rewrite): add additional test cases for GetRefererForURL
2025-12-21 12:23:57 -08:00
Lennard Schwarz
ad82191ce1
chore: remove obsolete docker compose 'version' key
2025-12-21 11:59:01 -08:00
Lennard Schwarz
6080d56a5c
fix: Update go devcontainer image to go:1-trixie
2025-12-21 11:57:59 -08:00
jvoisin
854985bcfa
refactor(config): visibility reduction and assorted changes
...
- Don't expose struct members unnecessarily
- Don't use `fmt.Fprintf` to format strings
- Don't check if a value needs to be redacted if it's empty
2025-12-20 16:55:58 -08:00
Mateusz Jabłoński
1bf7c0bb51
feat(ui): add route for viewing individual starred entries from category starred list
2025-12-19 17:07:02 -08:00
dependabot[bot]
bc409480e7
build(deps): bump actions/upload-artifact from 5 to 6
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-15 17:52:20 -08:00
Matthaiks
3cb74e152b
feat(locale): update Polish translation
2025-12-14 19:54:12 -08:00
Lennard Schwarz
fbc4d700d5
feat: add auto-push option to readeck integration
2025-12-13 20:28:34 -08:00
Julien Voisin
40d9965b28
feat(template): add link to the GitHub contributors page
2025-12-13 20:12:41 -08:00
Michael Kuhn
28e670d989
build: update Distroless container to Debian 13
2025-12-13 20:09:42 -08:00
dependabot[bot]
dc12713be1
build(deps): bump golang.org/x/net from 0.47.0 to 0.48.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.47.0 to 0.48.0.
- [Commits](https://github.com/golang/net/compare/v0.47.0...v0.48.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.48.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-09 16:31:26 -08:00
dependabot[bot]
7bf58e7ab0
build(deps): bump library/alpine from 3.22 to 3.23 in /packaging/docker/alpine
2025-12-08 16:31:51 -08:00
dependabot[bot]
c502b80fa9
build(deps): bump github.com/tdewolff/minify/v2 from 2.24.7 to 2.24.8
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.24.7 to 2.24.8.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.24.7...v2.24.8 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.8
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 14:42:54 -08:00
dependabot[bot]
c23a62184b
build(deps): bump golang.org/x/oauth2 from 0.33.0 to 0.34.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.33.0 to 0.34.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.33.0...v0.34.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.34.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 14:40:13 -08:00
dependabot[bot]
327119c828
build(deps): bump golang.org/x/image from 0.33.0 to 0.34.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.33.0 to 0.34.0.
- [Commits](https://github.com/golang/image/compare/v0.33.0...v0.34.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.34.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 14:31:00 -08:00
dependabot[bot]
488a3bba5f
build(deps): bump golang.org/x/crypto from 0.45.0 to 0.46.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.45.0 to 0.46.0.
- [Commits](https://github.com/golang/crypto/compare/v0.45.0...v0.46.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.46.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 14:27:18 -08:00
Frédéric Guillot
7f3c6db4d8
ci: remove create event from Codeberg workflow
2025-12-08 14:24:00 -08:00
dependabot[bot]
884569fc76
build(deps): bump actions/checkout from 4 to 6
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-12-08 14:21:28 -08:00
Frédéric Guillot
0960624e85
ci: add workflow to mirror Git repo to Codeberg
2025-12-05 17:41:44 -08:00
Julien Voisin
4063ca39c9
feat(config): add new option to disable Miniflux's API
2025-12-04 17:43:08 -08:00
Matthaiks
f6476db767
feat(locale): update Polish translation
2025-12-02 09:55:31 -08:00
Frédéric Guillot
142d8d7679
refactor(integration): standardize Linkwarden collection ID naming
2025-12-01 17:16:39 -08:00
Barend van der Walt
5bd5993a24
feat: add Linkwarden collection ID support
2025-12-01 16:56:10 -08:00
Frédéric Guillot
18cd544fab
chore(contrib): update postgres volume path in Docker Compose sample files
...
Starting with Postgresql 18, the volume path has been changed to
`/var/lib/postgresql`.
See https://hub.docker.com/_/postgres/#pgdata
2025-12-01 16:12:27 -08:00
Mateusz Jabłoński
88f9f279e6
feat(finder): generate feeds for stable youtube playlists
2025-11-30 12:39:41 -08:00
Mateusz Jabłoński
dc1653ba3a
feat(finder): make cannonical url detection a proper step
2025-11-30 12:39:41 -08:00
Mateusz Jabłoński
3ea4aee4d6
feat(finder): enhance youtube channel parsing with default playlists
2025-11-30 12:39:41 -08:00
jvoisin
f447307359
feat: add the i and small tags to the sanitizer's allowlist
2025-11-30 12:11:14 -08:00
Frédéric Guillot
4892e04e9b
fix: avoid YouTube error 153 for embed iframes
...
Add the attribute `referrerpolicy="strict-origin-when-cross-origin"` to
YouTube iframes.
Superseded PR #3862
2025-11-28 17:09:08 -08:00
dependabot[bot]
579b1efc68
build(deps): bump github.com/coreos/go-oidc/v3 from 3.16.0 to 3.17.0
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.16.0 to 3.17.0.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.16.0...v3.17.0 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-version: 3.17.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-28 11:43:35 -08:00
dependabot[bot]
a16aa10fed
build(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.44.0 to 0.45.0.
- [Commits](https://github.com/golang/crypto/compare/v0.44.0...v0.45.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.45.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-28 11:35:13 -08:00
dependabot[bot]
ea9adc8978
build(deps): bump actions/checkout from 5 to 6
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-28 11:34:48 -08:00
dependabot[bot]
fd7c886997
build(deps): bump github.com/PuerkitoBio/goquery from 1.10.3 to 1.11.0
...
Bumps [github.com/PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery ) from 1.10.3 to 1.11.0.
- [Release notes](https://github.com/PuerkitoBio/goquery/releases )
- [Commits](https://github.com/PuerkitoBio/goquery/compare/v1.10.3...v1.11.0 )
---
updated-dependencies:
- dependency-name: github.com/PuerkitoBio/goquery
dependency-version: 1.11.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-28 11:34:18 -08:00
Jiacheng
b3a63dbd86
fix(api): rewrite entry content URLs with media proxy in fetchContent endpoint
2025-11-11 20:41:29 -08:00
dependabot[bot]
7ac8eb96c4
build(deps): bump golang.org/x/net from 0.46.0 to 0.47.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.46.0 to 0.47.0.
- [Commits](https://github.com/golang/net/compare/v0.46.0...v0.47.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.47.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-11 20:08:16 -08:00
dependabot[bot]
c43a90716b
build(deps): bump golang.org/x/crypto from 0.43.0 to 0.44.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.43.0 to 0.44.0.
- [Commits](https://github.com/golang/crypto/compare/v0.43.0...v0.44.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.44.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-11 19:57:07 -08:00
dependabot[bot]
0a08f4832e
build(deps): bump golang.org/x/image from 0.32.0 to 0.33.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.32.0 to 0.33.0.
- [Commits](https://github.com/golang/image/compare/v0.32.0...v0.33.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.33.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-11 19:42:05 -08:00
dependabot[bot]
bc375e3c59
build(deps): bump github.com/go-webauthn/webauthn from 0.14.0 to 0.15.0
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.14.0 to 0.15.0.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.14.0...v0.15.0 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-10 19:34:22 -08:00
dependabot[bot]
d3ebfd67dd
build(deps): bump golang.org/x/oauth2 from 0.32.0 to 0.33.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.32.0 to 0.33.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.32.0...v0.33.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.33.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-10 19:31:54 -08:00
dependabot[bot]
c1cfd184ee
build(deps): bump github.com/tdewolff/minify/v2 from 2.24.6 to 2.24.7
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.24.6 to 2.24.7.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.24.6...v2.24.7 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.7
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-10 19:31:06 -08:00
dependabot[bot]
e580126b8d
build(deps): bump golangci/golangci-lint-action from 8 to 9
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 8 to 9.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v8...v9 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-version: '9'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-10 19:28:48 -08:00
Frédéric Guillot
86fca5d060
test(urlcleaner): add test case to cover Matomo tracking URL
2025-11-06 18:58:39 -08:00
jvoisin
c365118cf7
feat(urlcleaner): add a bunch of parameters
...
Taken from a cursory look at https://rules2.clearurls.xyz/data.minify.json
2025-11-06 18:58:39 -08:00
dependabot[bot]
6f2d10c436
build(deps): bump github.com/tdewolff/minify/v2 from 2.24.5 to 2.24.6
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.24.5 to 2.24.6.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.24.5...v2.24.6 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.6
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-11-04 17:04:08 -08:00
Julien Voisin
093004b724
refactor(rewrite): avoid string concatenation in a loop (perfsprint linter fix)
2025-11-04 16:59:46 -08:00
dependabot[bot]
d2c783b06c
build(deps): bump actions/upload-artifact from 4 to 5
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-27 19:53:47 -07:00
Frédéric Guillot
7e2dd3afe6
fix: avoid YouTube error 153 video player configuration error
2025-10-26 14:11:56 -07:00
jvoisin
4ace959667
refactor(js): use replace instead of remove+add.
2025-10-26 13:06:01 -07:00
Frédéric Guillot
14f31954d1
fix(ci): enhance CodeQL workflow with language matrix and dynamic analysis category
2025-10-25 17:55:16 -07:00
Frédéric Guillot
907daf78bf
fix(ci): specify version for RPM package for schedule and pull_request events
2025-10-25 17:44:59 -07:00
Frédéric Guillot
cf6386b471
fix(ci): GitHub Workflow does not contain permissions
...
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-10-25 17:22:17 -07:00
Frédéric Guillot
76df99f3a3
fix: only relative path should allowed for redirectURL parameter
...
Protocol-relative URLs like `//example.org` should not be allowed.
2025-10-25 17:17:33 -07:00
jvoisin
57e3eaecd9
refactor(js): minor regex simplification
...
There is no need to match on the whole title, use two groups, then merge the
whole thing together, when we can simply search-and-replace only the matching
value.
2025-10-25 16:45:46 -07:00
dependabot[bot]
21d3a5a61c
build(deps): bump github.com/tdewolff/minify/v2 from 2.24.4 to 2.24.5
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.24.4 to 2.24.5.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.24.4...v2.24.5 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-24 18:10:02 -07:00
Kelly Norton
385d8bb969
feat(client): allow http.Client as option and add context to api methods
2025-10-18 12:45:00 -07:00
jvoisin
c171da1734
refactor(reader): minor date parsing simplifications
...
- There is no need to use two replacers instead of one. It might help keep the
input in a low CPU cache.
- Don't cast an int to float (twice) for nothing in checkTimezoneRange.
2025-10-16 20:26:18 -07:00
dependabot[bot]
11ea137027
build(deps): bump github.com/tdewolff/minify/v2 from 2.24.3 to 2.24.4
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.24.3 to 2.24.4.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.24.3...v2.24.4 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-16 20:14:43 -07:00
jvoisin
0a15075c00
refactor(sanitizer): save some cycles in hasRequiredAttributes
...
There is no need to iterate twice on the attributes of source and img tags,
when we can do it once. This shouldn't bring any noticeable performances
improvements, except maybe in some extreme cases on pages with a lot of images
with a lot of attributes.
2025-10-14 20:03:47 -07:00
Christian Frommert
b1fda599ac
feat(integration): add tags option for karakeep integration
2025-10-13 16:03:33 -07:00
dependabot[bot]
509b7682ad
build(deps): bump github/codeql-action from 3 to 4
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/github/codeql-action/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-13 15:20:11 -07:00
Julien Voisin
06c2e50ffa
refactor(ui): use native <dialog> element instead of custom modal implementation
...
This simplifies the client-side code and improves accessibility.
2025-10-12 15:31:05 -07:00
Frédéric Guillot
ec93656ef5
perf: preallocate slices
2025-10-10 20:28:13 -07:00
Julien Voisin
317aaeeec7
perf: replace from ParseInt/ParseFloat with faster Itoa
...
There is no need to use strconv.ParseInt and strconv.ParseFloat instead of
the much simpler/faster strconv.Itoa.
2025-10-10 20:27:26 -07:00
jvoisin
d862f79123
refactor(fever): explicitly size slices
2025-10-10 20:14:12 -07:00
dependabot[bot]
1bea41b19c
build(deps): bump golang.org/x/oauth2 from 0.31.0 to 0.32.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.31.0 to 0.32.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.31.0...v0.32.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.32.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-08 19:26:12 -07:00
dependabot[bot]
65a39096e7
build(deps): bump golang.org/x/image from 0.31.0 to 0.32.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.31.0 to 0.32.0.
- [Commits](https://github.com/golang/image/compare/v0.31.0...v0.32.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.32.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-08 19:22:26 -07:00
dependabot[bot]
131dc674e4
build(deps): bump golang.org/x/net from 0.45.0 to 0.46.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.45.0 to 0.46.0.
- [Commits](https://github.com/golang/net/compare/v0.45.0...v0.46.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.46.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-08 19:10:16 -07:00
dependabot[bot]
b0dced42c0
build(deps): bump golang.org/x/net from 0.44.0 to 0.45.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.44.0 to 0.45.0.
- [Commits](https://github.com/golang/net/compare/v0.44.0...v0.45.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.45.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-07 19:08:50 -07:00
Frédéric Guillot
a34e33b5c5
chore: update make lint command
2025-10-06 18:26:53 -07:00
Frédéric Guillot
af12fe309e
ci: enable perfsprint and goheader Go linters
2025-10-06 18:25:00 -07:00
jvoisin
dd44fbcc76
refactor(misc): replace fmt.Errorf with errors.New where possible
...
No need to to invoke the whole Printf machinery for constant strings. While
this shouldn't have an impact on memory consumption nor allocation (as
constructing errors to return is never in a hot path), this should reduce a bit
the code size, as errors.New will be inlined to a simple struct initialization
instead of a function call.
2025-10-06 17:54:04 -07:00
dependabot[bot]
9c956d1b0d
build(deps): bump github.com/coreos/go-oidc/v3 from 3.15.0 to 3.16.0
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.15.0 to 3.16.0.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.15.0...v3.16.0 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-version: 3.16.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-10-03 17:00:08 -07:00
Julien Voisin
bf7f55e28a
feat(template): extract CSP to a function, systematically use nonces, and use default-src 'none' instead of self
...
Having the CSP built in a function instead of in the template makes it easier
to properly construct it. This was also the opportunity to switch from
default-src 'self' to default-src 'none', to deny everything that isn't
explicitly allowed, instead of allowing everything coming from 'self'.
Moreover, as Miniflux is shoving the content of feeds in the same origin as
itself, using self doesn't do much security-wise. It's much better to
systematically use a nonce-based policy, so that an attacker able to bypass the
sanitization will have to guess the nonce to gain arbitrary javascript
execution.
2025-10-02 19:38:37 -07:00
Axel Verhaeghe
b8bc367a00
feat(rewrite): add remove_img_blur_params rule
...
Adds a new content rewrite rule to strip image URL query parameters from blurred images.
This addresses issues with sites like Belgian national news that use blurry placeholder images which get replaced with high-quality versions, allowing Miniflux to fetch the original images instead of the placeholders.
2025-10-01 20:41:08 -07:00
Frédéric Guillot
04a360a536
test(xml): add test cases regarding XML encoding
2025-09-30 20:44:36 -07:00
Julien Voisin
fac18d5c57
refactor(xml): change getEncoding to return []byte and move CharsetReader callback to a separate function
...
- There is no need for getEncoding to return a string instead of an array of
bytes, so let's make it return a []byte instead of a string.
- There is no reason why the function used for decoder.CharsetReader
has to be defined as a lambda instead of a proper function. One might argue
the other way around, but a lambda is living on the heap, while a "real"
function doesn't.
2025-09-30 18:04:42 -07:00
jvoisin
a3d1ecc58a
refactor(database): get rid of the dependency on hstore
...
The hstore extension was briefly used at some point by miniflux, but not
anymore. Yet it's still required to deploy miniflux, as a hstore column is
created then destroyed during the database creation/migration. This commit
refactor the migrations (scary!) to get rid of hstore, so that it doesn't need
to be installed/present when deploying/running miniflux.
This should close #3759
2025-09-30 17:41:56 -07:00
Frédéric Guillot
8adcaed29e
docs: clarify POLLING_FREQUENCY documentation
2025-09-29 21:22:59 -07:00
Julien Voisin
5a97bf8b5e
refactor(sanitizer): simplify hasValidURIScheme and isBlockedResource functions
...
- use an array instead of a map for the schemes, as the overwhelming majority
of them will be either http or https, which we can place in front of the
array. This is faster than using a map.
- Simplify hasValidURIScheme by using strings.HasPrefix instead of doing
strings.IndexByte
- Simplify isBlockedResource by using a simple for loop, instead of a weird
slices.ContainsFunc+strings.Contains construct.
On my noisy system:
```
goos: linux
goarch: arm64
pkg: miniflux.app/v2/internal/reader/sanitizer
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
Sanitize-8 22.19m ± 4% 21.97m ± 4% ~ (p=0.948 n=50)
```
2025-09-29 19:42:45 -07:00
Frédéric Guillot
e279b955c4
fix(css): avoid layout overflow when external link is too long
2025-09-28 13:34:18 -07:00
Julien Voisin
1620f8d3f2
refactor(database): remove implicit not null constraint for serial types
...
- The (big)serial keyword is already `not null`, so no need to it explicitly.
See https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-SERIAL
2025-09-28 13:13:54 -07:00
Devon
1a29c1568c
feat(ui): redirect back to original page after logging in
2025-09-26 20:20:34 -07:00
Frédéric Guillot
ff07f02716
fix(jsonfeed): fallback to external_url when url is missing
2025-09-26 20:05:39 -07:00
jvoisin
79b0d0b9cc
feat(integration): add integration with archive.org
...
Tested locally:
```console
$ Tue 26 Aug 17:34:05 CEST 2025
$ go build && ./miniflux.app -c ./config.ini -debug
level=DEBUG msg="Starting daemon..."
level=DEBUG msg="Starting background scheduler..."
level=DEBUG msg="Worker started" worker_id=15
level=DEBUG msg="Worker started" worker_id=0
[…]
level=DEBUG msg="Incoming request" client_ip=127.0.0.1 request.method=POST request.uri=/entry/save/29773 request.protocol=HTTP/1.1 request.execution_time=5.57385ms
level=DEBUG msg="Sending entry to archive.org" user_id=1 entry_id=29773 entry_url=https://sumnerevans.com/portfolio/
level=DEBUG msg="Sending entry to archive.org" title=Portfolio url=https://sumnerevans.com/portfolio/
^C
$ curl -I -H "User-Agent: Mozilla" https://web.archive.org/web/20250826153413/https://sumnerevans.com/portfolio/ | grep orig-date
x-archive-orig-date: Tue, 26 Aug 2025 15:34:13 GMT
$
```
2025-09-26 19:46:12 -07:00
Julien Voisin
5fa0709663
feat(rewrite): add add_image_title rule for explainxkcd.com
2025-09-25 17:32:22 -07:00
jakubp
a7fa2ecc8c
fix(scraper): update Dark Reading scraper rule
2025-09-23 19:52:17 -07:00
dependabot[bot]
10b2b36895
build(deps): bump github.com/go-webauthn/webauthn from 0.13.4 to 0.14.0
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.13.4 to 0.14.0.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.13.4...v0.14.0 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.14.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-15 16:57:47 -07:00
Frédéric Guillot
87e65f800e
feat(locale): update French translation
2025-09-14 11:15:52 -07:00
Frédéric Guillot
907cf16af1
fix(fever): fix typo in variable name
2025-09-14 11:11:41 -07:00
Cthulhux
854a78a7d1
feat(locale): update German translation
2025-09-14 10:51:32 -07:00
Frédéric Guillot
5e607be86a
refactor(config): rewrite config parser
...
This PR refactors the configuration parser, replacing the old parser implementation with a new, more structured approach that includes validation and improved organization.
Key changes:
- Complete rewrite of the configuration parser using a map-based structure with built-in validation
- Addition of comprehensive validator functions for configuration values
- Renamed numerous configuration getter methods for better consistency
2025-09-14 10:51:04 -07:00
Matthaiks
502e7108dd
feat(locale): update Polish translation
2025-09-12 18:00:58 -07:00
Julien Voisin
0b93d8abcc
refactor(subscription): combine findSubscriptionsFromYouTubeChannelPage and findSubscriptionsFromYouTubePlaylistPage functions
2025-09-12 17:59:41 -07:00
Julien Voisin
93a8629910
refactor(js): simplify modal_handler.js
2025-09-12 17:24:51 -07:00
Frédéric Guillot
b1742168e1
fix(timezone): make sure legacy time zones are no longer used
...
Debian Trixie has removed several time zones. This change makes sure only the current IANA time zones are in use.
2025-09-12 16:20:27 -07:00
Steven vanZyl
4eff9129ab
feat(ui): add "back to top" link
2025-09-12 13:41:39 -07:00
Cthulhux
eb22d90b56
feat(locale): update German translation
2025-09-10 18:26:23 -07:00
Julien Voisin
8f2dd02f3f
refactor(subscription): combine all JSON feed mime types in one query
...
- Look for JSON feeds in one pass instead of two
- Move conditions around to reduce the amount of comparisons
- Edit an existing test to exercise this commit's changes
2025-09-10 16:50:40 -07:00
Matthaiks
da8d4d86c3
feat(locale): update Polish translation
2025-09-10 16:28:21 -07:00
Frédéric Guillot
7ada5d54be
fix(icon): implement better handling of relative icon URLs within a subfolder
2025-09-09 20:18:50 -07:00
Kevin Sicong Jiang
8129500296
feat(integration): add support for Wallabag tags
2025-09-09 17:47:51 -07:00
dependabot[bot]
f1143151c5
build(deps): bump golang.org/x/net from 0.43.0 to 0.44.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.43.0 to 0.44.0.
- [Commits](https://github.com/golang/net/compare/v0.43.0...v0.44.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.44.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-09 16:16:09 -07:00
dependabot[bot]
baf8e40152
build(deps): bump golang.org/x/image from 0.30.0 to 0.31.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/image/compare/v0.30.0...v0.31.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.31.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:59:40 -07:00
dependabot[bot]
a98374b81f
build(deps): bump golang.org/x/crypto from 0.41.0 to 0.42.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.41.0 to 0.42.0.
- [Commits](https://github.com/golang/crypto/compare/v0.41.0...v0.42.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.42.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:50:16 -07:00
dependabot[bot]
77e0b07f9f
build(deps): bump golang.org/x/term from 0.34.0 to 0.35.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.34.0 to 0.35.0.
- [Commits](https://github.com/golang/term/compare/v0.34.0...v0.35.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-version: 0.35.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:42:29 -07:00
Julien Voisin
645800ce3c
refactor(js): remove isTouchSupported() static function
2025-09-08 15:41:50 -07:00
dependabot[bot]
a60a153003
build(deps): bump github.com/tdewolff/minify/v2 from 2.24.0 to 2.24.3
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.24.0 to 2.24.3.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.24.0...v2.24.3 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:36:47 -07:00
dependabot[bot]
7d40e2993b
build(deps): bump golang.org/x/oauth2 from 0.30.0 to 0.31.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.30.0...v0.31.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.31.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:36:03 -07:00
dependabot[bot]
91a625c559
build(deps): bump actions/setup-python from 5 to 6
...
Bumps [actions/setup-python](https://github.com/actions/setup-python ) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases )
- [Commits](https://github.com/actions/setup-python/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/setup-python
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:35:34 -07:00
dependabot[bot]
dbb3855901
build(deps): bump actions/setup-go from 5 to 6
...
Bumps [actions/setup-go](https://github.com/actions/setup-go ) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases )
- [Commits](https://github.com/actions/setup-go/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: actions/setup-go
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 15:35:06 -07:00
Julien Voisin
3051acf369
perf(xml): eliminate bound checks in filterValidXMLChars
...
Optimizes the filterValidXMLChars function by changing the loop variable type from int to uint to eliminate bound checks during compilation, resulting in a ~4% performance improvement.
- Changes loop variable i from int to uint to remove compiler-generated bound checks
- Adjusts type conversions accordingly to maintain correctness
```
goos: linux
goarch: arm64
pkg: miniflux.app/v2/internal/reader/parser
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
Parse-8 40.91m ± 3% 39.30m ± 2% -3.94% (p=0.000 n=50)
```
2025-09-08 15:33:55 -07:00
Frédéric Guillot
5f38054965
fix(ui): incorrect force refresh interval unit used in messages
...
Regression introduced in commit c6536e8
2025-09-08 12:12:11 -07:00
Julien Voisin
fa361ab1ce
perf: convert some slices to array
2025-09-08 12:11:18 -07:00
jvoisin
afe80e6bae
refactor(proxy): remove usage of fmt
...
There is no need to use the heavy machinery (fmt) when we can simply use
string concatenation instead.
2025-09-08 12:00:59 -07:00
Julien Voisin
f2976bff5d
refactor: remove model.UserSessions struct
2025-09-08 11:56:43 -07:00
Julien Voisin
84078c7c20
refactor: avoid unnecessary usage of Printf
2025-09-08 11:54:16 -07:00
dependabot[bot]
d70817e441
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.23.0 to 1.23.2.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.23.0...v1.23.2 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-version: 1.23.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-09-08 11:42:23 -07:00
Frédéric Guillot
e8f5c2446c
fix(config): FORCE_REFRESH_INTERVAL duration should be in minutes
...
Regression introduced in commit c6536e8
2025-08-25 15:46:10 -07:00
Matthaiks
737f25f441
feat(locale): update Polish translation
2025-08-24 13:04:25 -07:00
Frédéric Guillot
f83d66769d
fix(api): do not return removed entries
...
Since Miniflux 2.2.12, the content of removed entries is cleared.
2025-08-23 15:17:37 -07:00
jvoisin
af149e46df
Revert "refactor(storage): simplify feed.go by using min(), inline errors, and use idiomatic conditions"
...
This reverts commit b1cbaae71c .
2025-08-22 12:51:54 -07:00
jvoisin
4f252b33c9
refactor(template): rename noescape to safeHTML
...
This makes the code more consistent, since all the other escaping escape
hatches have a `safe` prefix.
2025-08-22 12:51:21 -07:00
jvoisin
da9c3a4032
feat(js): tighten the trusted types policy
...
- Implement a better/simpler polyfill for web browsers that don't supported
trusted types yet
- Use two separate policies: one to create HTML, another to create/use script
urls
- Instead of having the policy live in the top-level scope, they're now
declared at the lowest possible scope, right before they're used, making them
inaccessible outside of it. This puts their usage completely out of reach of
an attacker unable to gain some control outside of those two (small) scopes,
and thus removes the need to tighten the policies.
- Remove the now-unused tt.js file
This has been tested on Firefox (doesn't support trusted types) and on Chromium
(does support trusted types).
2025-08-21 19:41:45 -07:00
Benedikt Hopmann
8e1d0bb693
fix(locale): Update de_DE translation to match changes from 'bookmark' to 'starred'
...
Updated strings to match changes from 'bookmark' to 'starred'. Also renamed some strings from 'Einträge' to 'Artikel' for more consistency.
2025-08-21 16:59:54 -07:00
Steven vanZyl
60cd7ffe88
refactor: Replace "Bookmarks" with "Starred"
...
Replaces usage of the word "bookmark" with "star"/"starred" in order to be more
consistent with the UI and database models, and to reduce confusion with
"bookmarklet" and integration features.
This is in preparation of future work on read-it-later features.
Which are also not called "bookmarks" to prevent any further confusion.
https://github.com/orgs/miniflux/discussions/3719
Related-to: https://github.com/miniflux/v2/pull/2219
2025-08-20 20:49:45 -07:00
Peter Sanchez
4d656d2739
feat(integration): add LinkTaco service for saving articles
2025-08-20 20:35:33 -07:00
gudvinr
983291c78b
refactor(cli): use time.Duration for cleanup tasks
2025-08-20 19:45:24 -07:00
gudvinr
7060ecc163
refactor(cli): use time.Duration for scheduler frequency
...
Polling frequency is undocumented so it's not exacly clear what units were.
2025-08-20 19:45:24 -07:00
gudvinr
4af12a4129
refactor(metric): use time.Duration for refresh duration
2025-08-20 19:45:24 -07:00
gudvinr
c6536e8d90
refactor(http): use time.Duration for refresh interval
...
It's not clear which units of time used for refresh interval.
Convert to time.Duration for clarity.
2025-08-20 19:45:24 -07:00
gudvinr
30453ad7ec
refactor(fetcher): use time.Duration for client timeout values
...
All functions use time.Duration, so instead of converting everywhere, do it once.
2025-08-20 19:45:24 -07:00
gudvinr
71af68becd
refactor(server): use time.Duration for timeout values
...
Instead of converting at the very last moment,
it's simpler and more readable to use time.Duration ASAP.
2025-08-20 19:45:24 -07:00
gudvinr
ed3bf59356
refactor(reader): use time.Duration instead of minutes count
...
In general, duration is used as time unit representation.
At some places when int is returned, there's no documentation which unit is used.
So just convert to time.Duration ASAP.
2025-08-20 19:45:24 -07:00
gudvinr
03021af53c
feat(config): time interval parser
...
Simplifies handling of time intervals in config values.
2025-08-20 19:45:24 -07:00
gudvinr
83254a1f26
refactor(model): replace Sprintf("%d") in tests
...
This is just Itoa but weird.
2025-08-20 19:45:24 -07:00
Julien Voisin
3acb888309
refactor(response): simplify switch-case and remove unnecessary defer
...
- b.body can never be of type error, so let's remove it from the switch-case
construct.
- there is no need to use defer when the only return statement is two lines
after.
2025-08-20 19:31:28 -07:00
Julien Voisin
7c29166ef9
refactor(ui): move inline SVG to sprite.svg
...
There is no need to have an inline svg when we can have it in the sprite.svg
file.
2025-08-20 19:26:47 -07:00
Julien Voisin
71105bec56
refactor(template): improve consistency in layout.html (meta tags, whitespace, comments)
...
- Group the `<meta>` tags together
- Trim some superfluous whitespace
- Remove an obvious and thus useless comment
2025-08-20 19:24:13 -07:00
Julien Voisin
2a372674a2
refactor(icon): avoid calling AbsoluteURL twice for the feed icon URL
...
The url of a feed's icon is always absolute.
2025-08-20 19:01:59 -07:00
Julien Voisin
9d32b23ab0
perf(sanitizer): make sanitizer ~10% faster by using slices.Contains instead of nested maps
...
```console
$ go test -bench=. -count=25 > old.txt
$ go test -bench=. -count=25 > new.txt
$ benchstat old.txt new.txt
goos: linux
goarch: arm64
pkg: miniflux.app/v2/internal/reader/sanitizer
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
Sanitize-8 21.55m ± 5% 19.64m ± 9% ~ (p=0.059 n=25)
```
Almost a 10% improvement, yay.
2025-08-20 18:54:49 -07:00
jvoisin
da8bf3890c
refactor(templates): be explicit about dependencies
...
Instead of blindly compiling all the common/ templates for every view/ ones,
let's be explicit about the dependencies. This should significantly decrease
the resident memory consumption, as ParseTemplate is responsible for ~10M of
the current 11M of heap memory on my instance, so any win there is interesting.
This will also allow better factorization of templates, now that everything is
explicit. Another side-effect is that it'll make testing easier, as we now have
a comprehensive list of views/ templates affected by a change in a file in
common/
2025-08-20 18:51:51 -07:00
dependabot[bot]
b30eac4ebe
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.11 to 2.24.0
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.11 to 2.24.0.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.11...v2.24.0 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.24.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-20 17:52:22 -07:00
Frédéric Guillot
459b1bf1ee
test(icon): add tests for finding icon URLs in HTML documents
2025-08-19 20:14:34 -07:00
Frédéric Guillot
fdc12bf18c
fix(icon): improve logging messages in resizeIcon function
2025-08-19 20:14:34 -07:00
Frédéric Guillot
1b1ceaf8b4
test(icon): add test case to verify SVG minification with error
2025-08-19 20:14:34 -07:00
jvoisin
cad40cc158
feat(icon): minify svg favicons
2025-08-19 20:14:34 -07:00
Frédéric Guillot
d0e43f8682
docs: fix typos in the man page
2025-08-19 19:26:50 -07:00
Frédéric Guillot
c105b14f58
test(api): add integration test for fetching categories with counters
2025-08-18 20:08:31 -07:00
Frédéric Guillot
49575c8902
test(version): add a test to enforce the version format
2025-08-18 19:51:09 -07:00
Frédéric Guillot
b25f9651fe
test(fetcher): add unit tests for RequestBuilder
2025-08-18 19:38:14 -07:00
Frédéric Guillot
953ea885e0
fix(mediaproxy): always forward the browser Accept header
...
Tumblr CDN is blocking the Accept header used to fetch feeds
2025-08-18 18:08:21 -07:00
Frédéric Guillot
9536ce7dbc
fix(version): change development version naming to avoid breaking some clients
...
Some Miniflux clients expect a specific version format.
For example, Flux News converts the string version to an integer.
Using `Development Version` will break some clients.
2025-08-18 17:41:17 -07:00
Frédéric Guillot
f6532e16f2
docs: update incorrect default value for DATABASE_MIN_CONNS in the man page
2025-08-18 17:21:16 -07:00
Frédéric Guillot
84ae1d5dc0
fix(storage): index only the first 500K characters of the article contents to avoid tsvector limits
...
The length of a tsvector (lexemes + positions) must be less than 1 megabyte.
We don't need to index the entire content, and we need to keep a buffer for the positions.
2025-08-17 19:32:56 -07:00
Frédéric Guillot
5403ca09f6
feat(storage): add limit parameter to ClearRemovedEntriesContent
...
Without the limit, this query is going to hangs forever on large
databases with millions of entries.
2025-08-17 17:39:04 -07:00
gudvinr
905d652511
refactor(ui): use request builder in media proxy handler
...
builder is used seemingly everywhere but media proxy uses manual
transport construction
2025-08-17 13:09:32 -07:00
Frédéric Guillot
a16ac51326
refactor(storage): split DeleteContentRemovedEntries into 2 functions and fix condition
...
- Add `content IS NOT NULL` to avoid clearing the same entries over and over
- Create `DeleteRemovedEntriesEnclosures` and `ClearRemovedEntriesContent` that report individual counts
2025-08-16 21:19:28 -07:00
jvoisin
5c26e06780
feat(entry): keep only metadata for removed entries
...
This should significantly shrink the space taken by miniflux' database:
```sql
miniflux=#
SELECT
relname, pg_size_pretty(pg_total_relation_size(relname::regclass))
FROM
pg_catalog.pg_statio_user_tables
ORDER BY
pg_total_relation_size(relname::regclass)
DESC;
relname | pg_size_pretty
----------------------+----------------
entries | 158 MB
icons | 3312 kB
enclosures | 1568 kB
sessions | 1048 kB
feeds | 288 kB
feed_icons | 72 kB
users | 64 kB
user_sessions | 64 kB
categories | 48 kB
integrations | 32 kB
api_keys | 32 kB
webauthn_credentials | 24 kB
schema_version | 16 kB
acme_cache | 16 kB
(14 rows)
miniflux=#
```
This should close #3524
2025-08-16 20:57:59 -07:00
Frédéric Guillot
9e722839b5
test: skip building a temporary binary for integration tests
2025-08-16 20:56:36 -07:00
Frédéric Guillot
9e4248c7c1
fix(templates): remove non-breaking space in about page
2025-08-16 16:51:39 -07:00
Frédéric Guillot
a654a5f710
feat(template): show GitHub links in about page only when tag and commit are available
2025-08-16 13:08:38 -07:00
Frédéric Guillot
6bf3b3c464
fix(version): allow build info to be set with LDFLAGS and fallback to VCS metadata when available
2025-08-16 12:41:45 -07:00
Frédéric Guillot
a010544200
fix(version): be explicit when VCS info is unavailable
2025-08-16 12:21:40 -07:00
Frédéric Guillot
c1af510ead
feat(version): use Golang's builtin vcs feature to get commit and build date
2025-08-16 12:05:53 -07:00
Frédéric Guillot
88d9682f5f
ci: update Go version to 1.25 in workflows and Dockerfile
2025-08-16 12:05:07 -07:00
gudvinr
ce6cadc176
refactor(mediaproxy): use *url.URL for MEDIA_PROXY_CUSTOM_URL
...
Same behaviour as for HTTP_CLIENT_PROXY.
2025-08-15 18:12:44 -07:00
Julien Voisin
40fa77851c
refactor(locale): avoid code duplication in Printer.Printf() function
2025-08-15 18:02:25 -07:00
jvoisin
dd8011a4aa
refactor(template): remove some useless attributes
...
When `target="_blank"` is used, it has the same effect than rel="noopener",
so we can remove the latter. Moreover, since we're already setting `<meta
name="referrer" content="no-referrer" />` in the `<head>`, there is no need to
set it on every single link in the HTML, as we're rendering everything in the
same origin.
Note that we need to keep adding those in the sanitizer, the entry content HTML
can be consumed by third-party clients via the Miniflux/GoogleReader/Fever API.
See https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/rel/noopener
and https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Referrer-Policy#integration_with_html
2025-08-15 17:55:49 -07:00
Julien Voisin
3955df43f5
perf(js): don't load webauthn,js when disabled
...
This saves around 1kB of data, yay.
2025-08-15 17:11:12 -07:00
Julien Voisin
6f2ec8b3e9
refactor(ui): rename the small favicons to icons
...
There is no need to distinguish between "Android icons" and favicons.
2025-08-15 16:37:39 -07:00
jvoisin
2fa813fe01
refactor(fetcher): use errors.New when possible instead of fmt.Errorf
2025-08-15 16:25:58 -07:00
gudvinr
7c1602c2c0
refactor(internal): fix doc comments
2025-08-15 16:24:48 -07:00
gudvinr
5e3bba9ae1
refactor(request): fix typo in big corp name
2025-08-15 16:24:48 -07:00
gudvinr
ab26a4e20f
refactor(config): fix typos in test
2025-08-15 16:24:48 -07:00
Julien Voisin
2c4f4e2ae6
perf(templates): removes superfluous whitespaces in two templates
2025-08-14 19:40:30 -07:00
Julien Voisin
261b72f149
feat(icon): add resizing support for webp images
2025-08-14 19:36:11 -07:00
Julien Voisin
6c60d61f36
fix(icon): use rel=apple-touch-icon instead of rel=apple-touch-icon-precomposed.png
...
https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html
2025-08-14 19:32:50 -07:00
Julien Voisin
fa85a0eff4
feat(ui): disable OAuth routes if OAuth is disabled
2025-08-13 21:15:26 -07:00
jvoisin
eb6f7f30bb
feat(storage): make removed entries' status immutable
...
This is a first step towards "keeping only metadata for removed entries" #3524 .
2025-08-12 20:17:34 -07:00
jvoisin
93fc206f42
refactor(opml): reduce indirections
...
Don't use a slice of pointers to opml items, when we can simply use a slice of
items instead. This should reduce the amount of memory allocations and the
number of indirections the GC has to process, speedup up the import process.
Note that this doesn't introduce any additional copies, as the only time a
slice of subscription is created, the items are created and inserted inline.
2025-08-12 19:47:47 -07:00
Julien Voisin
8bca777a6d
refactor(model): remove some indirection
...
For small fixed-size structures, it's better to use a slice of values, instead
of a slice of pointers to values: they're stored contiguously and thus can be
iterated on quickly by the CPU, and it does remove an indirection per object
every time the GC kicks in.
2025-08-12 19:46:14 -07:00
dependabot[bot]
1e6d227e40
build(deps): bump actions/checkout from 4 to 5
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-12 16:49:06 -07:00
Frédéric Guillot
37d539eb42
fix(template): webauthn error alert was broken on the settings page
2025-08-11 20:01:53 -07:00
jvoisin
f5188b1edc
refactor(ui): don't expose webauthn routes if webauthn is disabled
2025-08-11 19:53:23 -07:00
Julien Voisin
5d9d0b2652
refactor(ui): standardize user variable naming and avoid a SQL query when only userID is used
...
- Use `user` everywhere, instead of sometimes `loggedUser`
- Delay the instantiation of some variables: no need to perform SQL queries for
nothing.
- Remove a SQL query getting the whole user struct when only user.ID is used.
2025-08-11 19:48:36 -07:00
jvoisin
50c5996280
refactor: remove some fmt.Sprintf calls
...
fmt.Sprintf is slow, so let's get rid of it in trivial cases that are in (at
least) moderately hot paths.
2025-08-11 19:27:34 -07:00
jvoisin
884521a7dd
refactor(template): use modern svg directive
...
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Element/use
https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/xlink:href
> Warning: Since SVG 2, the xlink:href attribute is deprecated in favor of
href. See xlink:href page for more information.
2025-08-11 18:31:16 -07:00
jvoisin
3a01f8a691
perf(misc): use arrays instead of slices where possible
...
Arrays have a fixed size in go, while slices don't, making the former way
faster than the latter: https://go-benchmarks.com/array-vs-slice
2025-08-11 18:26:58 -07:00
jvoisin
68984da332
perf(static): minimize the SVG
...
Since tdewolff/minify supports SVG minimization, let's make use of it. As we
need to keep the license in the SVG because we're nice netizens, we can at
least use SPDX identifiers instead of using it verbatim.
This does save a couple of kB.
2025-08-09 15:38:43 -07:00
jvoisin
485baf9654
refactor(misc): fix a handful of TODO
2025-08-09 15:22:02 -07:00
Julien Voisin
06cbf1b3b3
fix(icon): update incorrect log messages
2025-08-09 15:20:33 -07:00
Frédéric Guillot
b20a8c97b0
fix(ui): invert toast notification icons
2025-08-09 14:23:20 -07:00
Frédéric Guillot
e0ca92fca4
fix(storage): revert DISTINCT in FetchJobs query
2025-08-08 16:53:52 -07:00
Frédéric Guillot
598d4d4f51
feat(storage): improve BatchBuilder logging
2025-08-08 16:34:36 -07:00
Frédéric Guillot
a2229198ae
feat(api): log request URI in authentication handlers
2025-08-08 14:27:23 -07:00
Frédéric Guillot
34499b887b
feat: add POLLING_LIMIT_PER_HOST to limit concurrent requests per host
...
Each batch of feeds sent to the worker pool is now guaranteed to contain unique feed URLs.
When `POLLING_LIMIT_PER_HOST` is set, an additional limit is applied to the number of concurrent requests per hostname, helping to prevent overloading a single server.
Note: Additional requests may still be made during feed refresh. For example, to fetch feed icons or when the web scraper is enabled for a particular feed.
2025-08-08 12:33:46 -07:00
Tim Douglas
a4f672b589
fix: URL detection incorrectly capturing newlines in media descriptions
2025-08-08 10:42:09 -07:00
Julien Voisin
98da7b3f22
feat(template): provide a link for the Apache 2.0 license in the about page
...
- Provide a link for the Apache 2.0 license
- Factorise the checks for IsAdmin
- Fix some indentation issues
2025-08-08 10:31:21 -07:00
jvoisin
b4c82a4c53
perf(static): minimize images
2025-08-08 10:16:32 -07:00
Frédéric Guillot
4d7c601f6d
feat(ui): add PWA app shortcuts
...
References:
- https://web.dev/articles/app-shortcuts
- https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/shortcuts
2025-08-07 20:47:08 -07:00
Frédéric Guillot
f7e672452b
feat(js): force page reload to prevent stale data from bfcache
...
The unread page may show outdated entries when navigating back from an article, due to Chrome's back/forward cache (bfcache) restoring the page from memory.
Reference: https://web.dev/articles/bfcache
2025-08-07 19:35:16 -07:00
Frédéric Guillot
6532435db9
fix(css): align icon labels vertically in entry actions
2025-08-07 17:50:17 -07:00
jvoisin
14cd5e9c0d
refactor(template): reduce the amount of code in common templates
...
There is no need to have templates used only used in a single file be part of
every single other ones. This should reduce a bit the resident memory
consumption of miniflux.
2025-08-07 17:36:41 -07:00
Julien Voisin
566670cc06
refactor: unexport symbols
2025-08-07 17:27:04 -07:00
dependabot[bot]
a4d51b5586
build(deps): bump golang.org/x/net from 0.42.0 to 0.43.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.42.0 to 0.43.0.
- [Commits](https://github.com/golang/net/compare/v0.42.0...v0.43.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.43.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-07 17:25:08 -07:00
dependabot[bot]
e6d01896e0
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.10 to 2.23.11
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.10 to 2.23.11.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.10...v2.23.11 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.11
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-07 17:15:46 -07:00
dependabot[bot]
b4a814a5b2
build(deps): bump golang.org/x/term from 0.33.0 to 0.34.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.33.0 to 0.34.0.
- [Commits](https://github.com/golang/term/compare/v0.33.0...v0.34.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-version: 0.34.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-07 17:14:36 -07:00
dependabot[bot]
940d94e793
build(deps): bump golang.org/x/image from 0.29.0 to 0.30.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/image/compare/v0.29.0...v0.30.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.30.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-08-07 17:04:43 -07:00
Frédéric Guillot
80f48c88c7
refactor: replace interface{} with any
2025-08-05 20:26:07 -07:00
Frédéric Guillot
045f2f1747
chore(view): remove unused webauthn_js_checksum key
2025-08-05 20:20:33 -07:00
Julien Voisin
2565ff930c
refactor(template): make use of template.ParseFS
2025-08-05 20:07:49 -07:00
Julien Voisin
b3fce752d2
refactor: replace Sprintf with string concatenation
...
There is no need to have go parse the whole format string then introspect the
arguments when we an simply use string concatenation.
2025-08-05 19:47:26 -07:00
Julien Voisin
798bc4cd2d
refactor(static): use a simple struct instead of two slices to store assets data and checksums
...
- Use a simple struct instead of two slices to store the data and the checksums
of resources
- Remove a superfluous call to Sprintf
- Factorise presence check and data retrieval in some maps
- Size the maps when possible
2025-08-05 19:35:27 -07:00
Julien Voisin
b1cbaae71c
refactor(storage): simplify feed.go by using min(), inline errors, and use idiomatic conditions
...
- Use `min` instead of doing the comparison by hand.
- Inline error handling where it makes sense
- Invert a condition to make it more idiomatic
2025-08-05 19:25:50 -07:00
Julien Voisin
924293ee5c
perf(storage): avoid heavy-weight SQL when marking feed as read
...
There is no need to perform a heavy-weight SQL query gathering all the
information available on a feed when we're only interested in its last check
timestamp.
2025-08-05 18:01:58 -07:00
Julien Voisin
826977bc8c
perf(api): speed up markFeedAsRead by avoiding a JOIN operation
2025-08-05 17:55:15 -07:00
Julien Voisin
ed0e4a667d
refactor(template): reindent and merge tags in feed_list.html
...
- Fix some indentation
- Factorize/merge some <span>
- Remove superfluous spaces
- Reindent some nested tags
2025-08-05 17:50:09 -07:00
jvoisin
5affd78f4f
refactor(reader): move the fetcher outside of a loop
...
There is no need to rebuilt the fetcher for every item, creating it once is
enough.
2025-08-05 17:39:23 -07:00
Frédéric Guillot
d3ad460c9d
Revert "feat(cookie): use SameSiteStrictMode when not using OAuth2/OIDC"
...
This reverts commit 135ce1d546 .
People using Miniflux as PWA on Android are constantly being logged out.
2025-08-05 17:32:20 -07:00
Frédéric Guillot
0f3c04a98a
test(rewrite): fix flaky test case by sorting query string keys
2025-08-05 17:31:43 -07:00
gudvinr
e8e3a600b4
refactor(googlereader): remove intermediate variable
2025-08-03 13:21:40 -07:00
Julien Voisin
a6ce5c92dc
perf(storage): minor optimization for FetchJobs
...
- Replace a call to fmt.Sprintf with a concatenation
- Explicit declaration of return values in FetchJobs
- Initialize the size of FetchJobs return value to b.limit: when b.limit is
used, which is most of the time, this avoid resizing the slice, and when it
isn't, the size of the map is set to 0, which is equivalent to the previous
situation anyway.
- Move a call to `request.UserID(r)` to a lower scope.
2025-08-03 13:19:14 -07:00
gudvinr
76ef8f3579
refactor(googlereader): replace Sprintf("%d") with FormatInt
...
see https://medium.com/swlh/bad-go-frivolous-sprintf-2ad28fedf1a0
2025-08-03 13:15:49 -07:00
Julien Voisin
a43d150a27
refactor(parser): centralize seek logic and provide a hint for the compiler to eliminate a useless bound check
...
- Move the seeking inside of DetectFeedFormat instead of having it everywhere
in ParseFeed
- Provide a hint for the compiler to eliminate a useless bound check in
DetectJSONFormat, otherwise it'll check that buffer[i] is valid on every
iteration of the loop. This shouldn't make a big difference, but oh well.
2025-08-03 12:53:10 -07:00
Frédéric Guillot
3bb965913d
refactor(js): create utility functions to manage buttons state
2025-08-02 21:37:16 -07:00
Frédéric Guillot
b505a63f3b
refactor(js): rewrite toast notification implementation
2025-08-02 21:37:16 -07:00
Frédéric Guillot
e9d9256ae2
refactor(js): rename functions to include action suffix
2025-08-02 18:44:12 -07:00
Frédéric Guillot
391792a424
refactor(js): combine handleBookmark and toggleBookmark functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
d2cfca589b
refactor(js): combine handleSaveEntry() and saveEntry() functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
f2e34cf07f
refactor(js): split openOriginalLink() into smaller functions
2025-08-02 18:44:12 -07:00
Frédéric Guillot
5c3be3e74f
refactor(js): combine handleShare() and triggerWebShare() functions
2025-08-02 18:44:12 -07:00
jvoisin
546fbcff8f
perf(storage): pair all SELECT true with LIMIT 1
...
Apparently, postgresql isn't smart enough to realize that once a true value
value is found as part of a `SELECT true`, there is no need to scan the rest of
the table, so we have to make this explicit. We could also have used the
`SELECT EXISTS(…)` construct, but it's more verbose and I don't like it.
2025-08-02 16:13:55 -07:00
Frédéric Guillot
2e28bf78bd
refactor(js): improve item navigation logic in goToListItem function
2025-08-02 16:12:53 -07:00
Frédéric Guillot
52c1386450
refactor(js): enable touch handlers only on touch devices and fix various issues in WebAuthnHandler
2025-08-02 15:39:01 -07:00
Frédéric Guillot
4910f1f0f4
refactor(js): remove RequestBuilder
2025-08-02 15:14:35 -07:00
Frédéric Guillot
bbe3c2ea71
refactor(js): simplify some functions using modern JavaScript
2025-08-02 14:06:18 -07:00
Frédéric Guillot
b116da85a9
refactor(js): remove bootstrap.js
2025-08-02 13:41:40 -07:00
Frédéric Guillot
07246e2b59
refactor(js): improve menu handlers
2025-08-02 13:09:57 -07:00
Frédéric Guillot
62410659d5
refactor(js): code cleanup and add jshint comments
2025-08-02 12:38:29 -07:00
Frédéric Guillot
3e1a7e411c
feat(js): register the service worker as JavaScript module
2025-08-02 11:26:43 -07:00
Frédéric Guillot
bfbc1c88c3
feat(js): load app.js using JavaScript module
...
- The JS bundle has its own isolated scope
- There is no need to use IIFEs anymore (Immediately Invoked Function Expressions)
- Modules are executed after the HTML document is fully parsed, similar to `defer` attribute
- There is no need to use `DOMContentLoaded` anymore
- Module scripts inherently run in strict mode (no need to define `use strict` anymore)
2025-08-02 11:07:27 -07:00
Frédéric Guillot
50197c2be3
refactor(js): reorder functions and add comments
2025-08-01 21:56:25 -07:00
Frédéric Guillot
7a25cf5037
fix(js): handle multiple buttons in a single form when showing loading state
2025-08-01 20:53:59 -07:00
Frédéric Guillot
1ec90e34f5
refactor(js): simplify CSRF token retrieval from the document
2025-08-01 20:44:40 -07:00
Frédéric Guillot
5e07278e87
feat(ui): refresh the page when marking as read the last visible entry
2025-08-01 20:16:45 -07:00
Julien Voisin
cce0e7bd29
refactor(rewrite): replaced regex-based YouTube and Invidious video ID extraction with URL parsing
2025-08-01 17:44:12 -07:00
Frédéric Guillot
1f7843e313
feat(integration): prioritize feed-level webhook URL when available when saving entries
2025-07-31 19:56:44 -07:00
Julien Voisin
181e1341e1
refactor(locale): introspect the translation files at load time
...
Since Go doesn't support unions, and because the translation format is a bit
wacky with the same field having multiple types, we must resort to
introspection to switch between single-item translation (for singular), and
multi-items ones (for plurals).
Previously, introspection was done at runtime, which is not only slow, but will
also only catch typing errors while trying to use the translations. The current
approach is to use a struct with a different field per possible type, and
implement a custom unmarshaller to dispatch the translations to the right one.
This should marginally reduce the memory consumption since interface-boxing
doesn't happen anymore, speed up the translations matching, and enforce proper
typing earlier. This also allows us to remove a bunch of now-useless tests.
2025-07-31 19:10:14 -07:00
jvoisin
f3052eb8ed
refactor(misc): make use of type constraints where possible
2025-07-31 18:59:55 -07:00
Julien Voisin
078eb39db9
refactor(config): don't check random.Read's return value
...
As stated in the documentation:
> Read calls io.ReadFull on Reader and crashes the program irrecoverably if an
error is returned. The default Reader uses operating system APIs that are
documented to never return an error on all but legacy Linux systems.
2025-07-31 18:03:53 -07:00
dependabot[bot]
6aeb565edc
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.22.0 to 1.23.0.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.23.0/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.22.0...v1.23.0 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-version: 1.23.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-31 16:51:21 -07:00
Frédéric Guillot
0c3e251884
refactor(filter): parse and merge filters only once per refresh
2025-07-30 21:34:03 -07:00
Frédéric Guillot
bfd8cb3d22
feat(ui): add icons to main menu
2025-07-30 19:12:50 -07:00
jvoisin
9eea9873b5
feat(rewrite): add a rule to remove useless heading images on phoronix
2025-07-30 18:53:04 -07:00
dependabot[bot]
240ec8bd0a
build(deps): bump github.com/coreos/go-oidc/v3 from 3.14.1 to 3.15.0
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.14.1 to 3.15.0.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.14.1...v3.15.0 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-version: 3.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-30 18:05:45 -07:00
Frédéric Guillot
f3ac4dacf6
test(rewrite): add unit tests for addYoutubeVideoFromId and addInvidiousVideo functions
2025-07-29 21:51:15 -07:00
Frédéric Guillot
13986e9cc0
docs: remove ChangeLog file
...
Maintaining a separate ChangeLog file is redundant and error-prone,
as it largely duplicated the Git commit history without adding meaningful context.
Release notes are still available on GitHub Releases and the Miniflux website.
2025-07-26 15:24:00 -07:00
Frédéric Guillot
4d7d554df8
docs: update release notes for version 2.2.11
2025-07-26 13:13:53 -07:00
Frédéric Guillot
66b269e6cd
feat(readability): avoid removing elements with content class
2025-07-25 19:59:47 -07:00
Frédéric Guillot
54abd0a736
fix(parser): handle feeds with leading whitespace that exceeds buffer size
2025-07-23 21:06:15 -07:00
Frédéric Guillot
5eab4753e8
refactor(googlereader): rename/unexport response types and functions
2025-07-23 20:36:04 -07:00
Frédéric Guillot
bf466425db
ci: update commit linter to allow default Git revert message
2025-07-23 20:03:04 -07:00
jvoisin
a62b97bddd
refactor(readability): get rid of getClassWeight
...
Its naming was confusing, and its code simple enough that it could be inlined.
2025-07-23 19:55:47 -07:00
jvoisin
1de9cf4241
perf(readability): simplify removeUnlikelyCandidates
...
- Use an iterator instead of generating a whole slice when iterating on the selection.
- Using an iterator allows to use a for-loop construct, instead of a lambda,
which is a bit clearer
- Do the filtering Find()'s selector, instead of in the loop, which doesn't
matter much now that we're using an iterator, but it makes the code a bit
more obvious/simpler, and likely reduces a bit the number of iterations.
2025-07-23 19:55:47 -07:00
jvoisin
7912b9b8fb
perf(readability): avoid materializing text to count commas
...
There is no need to materialize the whole text content of the selection only to
count its number of commas. As we already have a getLengthOfTextContent
function that is pretty similar, this commit refactors it to make it more
generic, in the form of a map/fold(+).
2025-07-23 19:55:47 -07:00
jvoisin
2d24f5d04e
refactor(readability): minor code folding
2025-07-23 19:55:47 -07:00
Frédéric Guillot
20825a92c5
Revert "perf(template): use ParseFS to directly parse the embedded template data"
...
This reverts commit 4336a0bd85 .
2025-07-22 21:31:34 -07:00
Frédéric Guillot
1d1162327e
feat(integration): use Bearer token authorization instead of cookie for Linkwarden client
2025-07-22 21:13:48 -07:00
Frédéric Guillot
202de7c787
fix(integration): rename Linkwarden endpoint label to base URL ( #3568 )
2025-07-22 20:49:54 -07:00
Frédéric Guillot
b470b186b3
feat(makefile)!: remove unsupported platforms and stop distributing Windows binary
...
There is no installation wizard for Windows and running the
command line binary as-is could lead to confusion for some users.
Unit tests still run on Windows, and people can still compile from
source if interested.
2025-07-22 20:24:39 -07:00
dependabot[bot]
5877cf340a
build(deps): bump github.com/go-webauthn/webauthn from 0.13.3 to 0.13.4
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.13.3 to 0.13.4.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.13.3...v0.13.4 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.13.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-22 17:31:06 -07:00
dependabot[bot]
d417b0ff12
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.9 to 2.23.10
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.9 to 2.23.10.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.9...v2.23.10 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.10
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-22 17:27:56 -07:00
Frédéric Guillot
703f113fbd
fix(storage): ensure strings are truncated to fit tsvector size limit and remain valid UTF-8
2025-07-20 13:42:58 -07:00
Frédéric Guillot
f02213a168
refactor(readability): use String explicitly in debug log instead of Any
2025-07-19 10:58:49 -07:00
Frédéric Guillot
410b43a787
chore(contrib): update PostgreSQL image from 15 to latest in docker-compose examples
2025-07-19 10:51:00 -07:00
Frédéric Guillot
d9de9d1852
feat(rss): fallback to enclosure URL when entry URL is missing
2025-07-19 10:46:43 -07:00
dependabot[bot]
33d55cc4e9
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.8 to 2.23.9
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.8 to 2.23.9.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.8...v2.23.9 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.9
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-18 17:35:03 -07:00
Julien Voisin
1825320369
refactor(template): remove unused functions and reduce the complexity of truncate function
...
- Remove unused functions like hasKey, domain, hasPrefix and contains.
- Lower the complexity of truncate from O(n) to O(1).
2025-07-17 20:53:41 -07:00
jvoisin
d80fb242db
refactor(template): reduce translation-related introspection
...
Keys in translation maps are always strings, never anything else, so there is
no need to introspect them.
2025-07-17 20:48:36 -07:00
Julien Voisin
4336a0bd85
perf(template): use ParseFS to directly parse the embedded template data
...
Use ParseFS to directly parse the embedded template data, instead of manually
reading it and then using Parse.
2025-07-17 20:46:33 -07:00
Frédéric Guillot
dc81725788
fix(filter): remove \r\n in rule parsing
2025-07-16 21:03:53 -07:00
Julien Voisin
86e2ce6d0b
perf(readability): move transformMisusedDivsIntoParagraphs call after removeUnlikelyCandidates
2025-07-13 14:34:14 -07:00
Frédéric Guillot
4679691c94
refactor(googlereader): rename stream suffix constants for clarity
2025-07-13 14:28:25 -07:00
Julien Voisin
0d5f4a710f
refactor(googlereader): unexport a lot of symbols
2025-07-13 14:16:08 -07:00
dependabot[bot]
92d2ac4f58
build(deps): bump github.com/go-webauthn/webauthn from 0.13.1 to 0.13.3
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.13.1 to 0.13.3.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.13.1...v0.13.3 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.13.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-11 17:09:37 -07:00
dependabot[bot]
1cfee27a50
build(deps): bump golang.org/x/image from 0.28.0 to 0.29.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/image/compare/v0.28.0...v0.29.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.29.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-10 19:32:49 -07:00
jvoisin
0e9da3a090
refactor(icon): simplify findIconURLsFromHTMLDocument
...
- Don't define the queries before possible early returns
- Check for the presence of the href attribute in the queries, instead of later
on iterating on the selection
- Add two edge-cases to the tests
- Use EachIter instead of Each, if only to avoid the lambda
2025-07-10 19:32:29 -07:00
jvoisin
57bd384951
refactor(icon): unexport a bunch of symbols
2025-07-10 19:32:29 -07:00
dependabot[bot]
fdbd5b08a1
build(deps): bump golang.org/x/net from 0.41.0 to 0.42.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.41.0 to 0.42.0.
- [Commits](https://github.com/golang/net/compare/v0.41.0...v0.42.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.42.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-10 19:24:08 -07:00
jvoisin
f455c18c66
perf(rewrite): anchor the rewrite regex
...
There is no need to try to match the regexp over the whole input, having it
anchored is enough. If we feel extra-lenient, we might strip spaces in
front/tail, but I don't think it's necessary.
This commit also invert a condition to reduce the level of nested indentation,
and make a condition stricter.
2025-07-10 19:23:54 -07:00
dependabot[bot]
9dea26c923
build(deps): bump golang.org/x/crypto from 0.39.0 to 0.40.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.39.0 to 0.40.0.
- [Commits](https://github.com/golang/crypto/compare/v0.39.0...v0.40.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.40.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-10 17:33:04 -07:00
jvoisin
46adb0ffad
refactor(fetcher): simplification of ExecuteRequest
...
Instead of doing some ciphers manipulation before instantiating the http.Transport
and then assigning them, instantiate http.Transport, and then in an if do the
manipulation. This makes the code a bit clearer, which is always nice when it
comes to cryptographic shenanigans.
2025-07-09 19:36:36 -07:00
jvoisin
61583d53d5
refactor(config): simplify SortedOptions
...
Make use of the slices and maps packages instead of doing things by hand,
and pre-allocated sortedOptions.
2025-07-09 19:29:53 -07:00
jvoisin
7c42e777ec
refactor(config): minor improvements of the config parser
...
- Surface the faulty line number when trying to parse it
- Use strings.Cut instead of strings.SplitN
- Use strings.TrimSuffix instead of an if
- Simplify parseStringList and make its code more compact
2025-07-09 19:28:02 -07:00
dependabot[bot]
335dffbb75
build(deps): bump golang.org/x/term from 0.32.0 to 0.33.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.32.0 to 0.33.0.
- [Commits](https://github.com/golang/term/compare/v0.32.0...v0.33.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-version: 0.33.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-09 19:18:08 -07:00
Qeynos
f0cdfb33dd
feat(locale): update Chinese translations
2025-07-09 19:14:40 -07:00
jvoisin
13ef89f785
fix(storage): don't truncate title/content fields
...
As found out by @fguillot in https://github.com/miniflux/v2/pull/3461#issuecomment-3047204354
2025-07-08 19:36:18 -07:00
jvoisin
32fbb4e882
fix(ui): improve margins consistency wrt. header/footer
2025-07-08 19:30:13 -07:00
Julien Voisin
135ce1d546
feat(cookie): use SameSiteStrictMode when not using OAuth2/OIDC
2025-07-08 19:20:24 -07:00
Cthulhux
abed7b11ce
feat(locale): update German translation
...
Missed two weird translations and one typo
2025-07-08 19:17:28 -07:00
Frédéric Guillot
2e26f5ca75
test(reader): ensure consistent tags parsing across feed formats
2025-07-07 20:07:35 -07:00
jvoisin
d6d18a2d61
perf(reader): shrink the json detection buffer
...
There is no need to allocate half a kilobyte of memory only check that a buffer
starts with a bunch of spaces and a `{`, 32b should be more than enough. Also,
no need to allocate it on the heap, having it on the stack works perfectly.
2025-07-07 19:21:59 -07:00
Frédéric Guillot
63891501e5
refactor(model): add test coverage and simplify ProxifyEnclosureURL
2025-07-07 18:41:44 -07:00
dependabot[bot]
7107ff985f
build(deps): bump github.com/go-webauthn/webauthn from 0.13.0 to 0.13.1
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.13.0 to 0.13.1.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.13.0...v0.13.1 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.13.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-07-07 18:39:51 -07:00
jvoisin
50d5cb96c8
refactor(enclosure): simplify model/enclosure.go
...
- Reuse isAudio and isVideo instead of re-implementing them
- In IsImage, return early is the mimetype is enough, instead of systematically
lowercasing the url as well.
- Extract the common parts of the two ProxifyAbsoluteURL implementations into a
private function, make the code smaller and clearer.
- Fix a logic error where `A && B || C` was used instead of `A && (B || C)
2025-07-07 17:42:44 -07:00
Frédéric Guillot
f860daef7f
test(locale): increase test coverage to 100%
2025-07-07 17:39:56 -07:00
Frédéric Guillot
e7b98afdbe
refactor(subscription): avoid using Sprintf to construct Youtube playlist feed URL
2025-07-07 17:08:47 -07:00
Frédéric Guillot
2cfeefc8d2
test(processor): increase test coverage for parseISO8601Duration
2025-07-07 17:01:10 -07:00
jvoisin
b48e6472f5
refactor(processor): parse ~ISO8601 in a proper way
...
Instead of using an ugly (and incomplete) regex, let's use a simple for-loop to
parse ISO8601 dates, and make it explicit that we're only supporting a subset
of the spec, as we only care about youtube video durations.
2025-07-07 16:28:58 -07:00
jvoisin
24043ece07
refactor(config): unexport some symbols
2025-07-07 16:01:21 -07:00
jvoisin
a09129d220
refactor(proxyrotator): simplify mutex handling
...
There is no need to use a mutex to check the length of the proxies list,
as it's read-only during the whole lifetime of a ProxyRotator structure.
Moreover, it's a bit clearer to explicitly wrap the 2 lines of mutex-needing
operations between a Lock/Unlock instead of using a defer.
2025-07-07 15:52:16 -07:00
jvoisin
f864a2ed70
refactor(mediaproxy): simplify shouldProxy
...
The original function was non-trivial to understand, as `!A && (B || !C)` isn't
easily grokable by humans.
2025-07-07 15:50:13 -07:00
jvoisin
052e8dd0aa
refactor(config): remove two unused constants
2025-07-07 15:45:20 -07:00
jvoisin
7a394b0bf8
refactor(subscription): replace a regex with strings.CutPrefix
2025-07-07 15:44:45 -07:00
jvoisin
dcfe0a7d94
refactor(locale): simplify pluralForm
...
Instead of having a switch-case returning a function to be executed, it's
simpler/faster to have a single function containing a switch-case. It also
allows to group languages with identical plural form in a single
implementation, and remove the "default" guard value, as switch-case already
have a `default:` case.
2025-07-07 15:30:41 -07:00
jvoisin
33c648825f
refactor(locale): make Printf's code structure similar to Print's
...
And also change the order of the cases in the Plural function, to make it
explicit that []string shouldn't match []any.
2025-07-07 15:30:41 -07:00
jvoisin
78c7f66df7
refactor(locale): remove a call to fmt.Sprintf
2025-07-07 15:30:41 -07:00
jvoisin
f2b805850c
refactor(locale): remove an unused function
2025-07-07 15:30:41 -07:00
jvoisin
915b7b3cf7
refactor(locale): unexport a symbol
2025-07-07 15:30:41 -07:00
jvoisin
8e86004936
refactor(locale): use any instead of interface{}
2025-07-07 15:30:41 -07:00
Julien Voisin
a8b4e88742
perf(sanitizer): improve the performances of the sanitizer ( #3497 )
...
- Grow the underlying buffer of SanitizeHTML's strings.Builder to 3/4 of the
raw HTML from the start, to reduce the amount of iterative allocations. This
number is a complete guesstimation, but it sounds reasonable to me.
- Add a `absoluteURLParsedBase` function to avoid parsing baseURL over and over.
2025-07-07 15:21:13 -07:00
jvoisin
15e4c3a374
refactor(database): get rid of the sqlite tentative
2025-07-02 17:18:03 -07:00
jvoisin
69a74c4abf
refactor(readability): minor clean up
...
Remove a now-useless regex and its associated test.
2025-07-02 16:50:49 -07:00
jvoisin
766d4ab834
refactor(readability): make use of getSelectionLength
2025-07-02 16:47:27 -07:00
Frédéric Guillot
cb617ff6e0
test(sanitizer): enhance tests for image width and height attributes
2025-07-01 20:52:45 -07:00
Frédéric Guillot
8c3f280f32
test(readability): add test case for ExtractContent with broken reader
2025-07-01 20:14:52 -07:00
jvoisin
8a98926674
refactor(readability): add a getSelectionLength function
...
When we're only interested in the length of contained Text, there is no need to
materialize it fully to then call len() on the result: we can simply iterate
over the text element and sum their length instead.
2025-07-01 19:52:53 -07:00
jvoisin
435a950d64
refactor(sanitizer): minor refactorization
...
Use a proper switch-case instead of a bunch of if.
2025-07-01 19:48:55 -07:00
jvoisin
89c32d518d
perf(readability): significantly improve transformMisusedDivsIntoParagraphs
2025-07-01 19:44:58 -07:00
jvoisin
2f7b2e7375
perf(readability): improve getLinkDensity
...
- There is no need to materialize all the content of a given Node when we can
simply compute its length directly, saving a lot of memory, on the order of
several megabytes on my instance, with peaks at a couple of dozen.
- One might object to the usage of a recursive construct, but this is a direct
port of goquery's Text method, so this change doesn't make anything worse.
- The computation of linkLength can be similarly computed, but this can go in
another commit, as it's a bit trickier, since we need to get the length of
every Node that has a `a` Node as parent, without iterating on the whole
parent chain every time.
2025-07-01 19:40:47 -07:00
Frédéric Guillot
6eeccae7cd
test(readability): increase test coverage
2025-06-30 21:29:07 -07:00
jvoisin
99c5bcdb01
perf(storage): truncate strings on go's side instead of pgsql's
...
There is no need to send the whole title and content to have them truncated on
postgresql's side when we can do this client-side. This should save some
memory on the database's side, as well as some bandwidth
if it's located on another server. And it makes the SQL queries a tad more
readable as well.
2025-06-30 19:45:45 -07:00
jvoisin
aed99e65c1
perf(readability): improve getClassWeight speed
...
Before
```console
$ go test -bench=.
goos: linux
goarch: arm64
pkg: miniflux.app/v2/internal/reader/readability
BenchmarkExtractContent-8 34 86102474 ns/op
BenchmarkGetWeight-8 10573 103045 ns/op
PASS
ok miniflux.app/v2/internal/reader/readability 5.409s
```
After
```console
$ go test -bench=.
goos: linux
goarch: arm64
pkg: miniflux.app/v2/internal/reader/readability
BenchmarkExtractContent-8 56 83130924 ns/op
BenchmarkGetWeight-8 246541 5241 ns/op
PASS
ok miniflux.app/v2/internal/reader/readability 6.026s
```
This should make ProcessFeedEntries marginally faster, while saving
some memory.
2025-06-30 19:28:20 -07:00
jvoisin
d1a3f98df9
perf(fetcher): save 8 bytes in the RequestBuilder struct
...
before:
```
// request_builder.go:25 | Size: 64 (Optimal: 56)
type RequestBuilder struct {
headers http.Header ■ ■ ■ ■ ■ ■ ■ ■
clientProxyURL *url.URL ■ ■ ■ ■ ■ ■ ■ ■
useClientProxy bool ■ □ □ □ □ □ □ □
clientTimeout int ■ ■ ■ ■ ■ ■ ■ ■
withoutRedirects bool ■
ignoreTLSErrors bool ■
disableHTTP2 bool ■ □ □ □ □ □
proxyRotator *proxyrotator.ProxyRotator ■ ■ ■ ■ ■ ■ ■ ■
feedProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
}
```
after:
```
// request_builder.go:25 | Size: 56
type RequestBuilder struct {
headers http.Header ■ ■ ■ ■ ■ ■ ■ ■
clientProxyURL *url.URL ■ ■ ■ ■ ■ ■ ■ ■
clientTimeout int ■ ■ ■ ■ ■ ■ ■ ■
useClientProxy bool ■
withoutRedirects bool ■
ignoreTLSErrors bool ■
disableHTTP2 bool ■ □ □ □ □
proxyRotator *proxyrotator.ProxyRotator ■ ■ ■ ■ ■ ■ ■ ■
feedProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
}
```
2025-06-29 16:10:35 -07:00
jvoisin
112494bb66
perf(feed): save 16 bytes in the Feed struct
...
before:
```
// feed.go:25 | Size: 560 (Optimal: 544)
type Feed struct {
ID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserID int64 ■ ■ ■ ■ ■ ■ ■ ■
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
SiteURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Title string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Description string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CheckedAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NextCheckAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
EtagHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
LastModifiedHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorMsg string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorCount int ■ ■ ■ ■ ■ ■ ■ ■
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Crawler bool ■ □ □ □ □ □ □ □
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■
HideGlobally bool ■
DisableHTTP2 bool ■ □
AppriseServiceURLs string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
WebhookURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NtfyEnabled bool ■ □ □ □ □ □ □ □
NtfyPriority int ■ ■ ■ ■ ■ ■ ■ ■
NtfyTopic string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
PushoverEnabled bool ■ □ □ □ □ □ □ □
PushoverPriority int ■ ■ ■ ■ ■ ■ ■ ■
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Category *Category ■ ■ ■ ■ ■ ■ ■ ■
Icon *FeedIcon ■ ■ ■ ■ ■ ■ ■ ■
Entries Entries ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
TTL int ■ ■ ■ ■ ■ ■ ■ ■
IconURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UnreadCount int ■ ■ ■ ■ ■ ■ ■ ■
ReadCount int ■ ■ ■ ■ ■ ■ ■ ■
NumberOfVisibleEntries int ■ ■ ■ ■ ■ ■ ■ ■
}
```
after:
```
// feed.go:25 | Size: 544
type Feed struct {
ID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserID int64 ■ ■ ■ ■ ■ ■ ■ ■
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
SiteURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Title string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Description string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CheckedAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NextCheckAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
EtagHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
LastModifiedHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorMsg string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorCount int ■ ■ ■ ■ ■ ■ ■ ■
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■
HideGlobally bool ■
DisableHTTP2 bool ■
PushoverEnabled bool ■
NtfyEnabled bool ■
Crawler bool ■ □ □ □ □ □ □
AppriseServiceURLs string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
WebhookURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NtfyPriority int ■ ■ ■ ■ ■ ■ ■ ■
NtfyTopic string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
PushoverPriority int ■ ■ ■ ■ ■ ■ ■ ■
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Category *Category ■ ■ ■ ■ ■ ■ ■ ■
Icon *FeedIcon ■ ■ ■ ■ ■ ■ ■ ■
Entries Entries ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
TTL int ■ ■ ■ ■ ■ ■ ■ ■
IconURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UnreadCount int ■ ■ ■ ■ ■ ■ ■ ■
ReadCount int ■ ■ ■ ■ ■ ■ ■ ■
NumberOfVisibleEntries int ■ ■ ■ ■ ■ ■ ■ ■
}
```
2025-06-29 16:10:35 -07:00
jvoisin
9f7ecdb75a
perf(model): save 16 bytes in the FeedCreationRequest struct
...
before:
```
// feed.go:154 | Size: 240 (Optimal: 224)
type FeedCreationRequest struct {
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CategoryID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Crawler bool ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■ □ □
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
DisableHTTP2 bool ■ □ □ □ □ □ □ □
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
HideGlobally bool ■ □ □ □ □ □ □ □
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
}
```
after:
```
// feed.go:154 | Size: 224
type FeedCreationRequest struct {
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CategoryID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Crawler bool ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■
HideGlobally bool ■
DisableHTTP2 bool ■
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
}
```
2025-06-29 16:10:35 -07:00
jvoisin
4e1f836266
refactor(readability): simplify a bit getArticle
...
- Use a proper division instead of multiplying by a float.
- Extract a condition in the parent scope
- Use an else-if construct instead of a simple if
2025-06-29 16:06:34 -07:00
Frédéric Guillot
a68de4ee6a
test(readability): add tests for getArticle function
2025-06-29 16:03:17 -07:00
jvoisin
c064891314
perf(readability): Simplify removeUnlikelyCandidates
...
- Use an array of strings instead of a regex, like done in ef13756b1a7a7ba30fd34174a5367381fd8b4849
- Extract the `shouldRemove` function from `removeUnlikelyCandidates`, as there
is no reason to have it there instead of being a proper standalone function.
- Improve a condition, where the goquery selection would have its `id`
attribute left unchecked if a `class` one was present, regardless of if
`class` was a candidate to removal or not.
- Add some comments
2025-06-29 15:31:01 -07:00
Frédéric Guillot
5129f53d58
test(readability): add tests for removeUnlikelyCandidates function
2025-06-29 15:23:56 -07:00
Frédéric Guillot
e60f0fd142
test(readability): add tests for getClassWeight function
2025-06-29 13:24:06 -07:00
Julien Voisin
2b26a345cd
perf(processor): minify content even further
...
There is no need to keep comments (conditionals or not, as IE isn't a thing
anymore), nor default attribute values.
2025-06-29 12:55:34 -07:00
Frédéric Guillot
3de31a1a4d
test(processor): add more unit tests for minifyContent function
2025-06-29 12:53:23 -07:00
jvoisin
560be66147
refactor(misc): Use proper slog.XXX instead of slog.Any
...
This has close to no impact for now, as our slog.Debug/Info/... are leaking
their parameters to the heap, but using proper typing instead of Any allows
to skip some reflection-based computation, making things marginally faster,
and removing the corresponding heap leak.
2025-06-29 12:30:17 -07:00
Ingmar Stein
fcf86e33b9
feat: TLS support for Unix socket listeners
...
This change enables Miniflux to serve TLS over Unix domain sockets.
If `CERT_FILE` and `KEY_FILE` are configured, Unix socket listeners
specified via `LISTEN_ADDR` will now automatically start with TLS enabled,
using the provided certificates. This uses the existing `http.Server.ServeTLS`
method.
If no certificates are provided, Unix socket listeners will continue to
operate as plain, non-TLS sockets.
2025-06-24 21:25:55 -07:00
dependabot[bot]
113f6b8982
build(deps): bump github.com/andybalholm/brotli from 1.1.1 to 1.2.0
...
Bumps [github.com/andybalholm/brotli](https://github.com/andybalholm/brotli ) from 1.1.1 to 1.2.0.
- [Commits](https://github.com/andybalholm/brotli/compare/v1.1.1...v1.2.0 )
---
updated-dependencies:
- dependency-name: github.com/andybalholm/brotli
dependency-version: 1.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-24 19:52:21 -07:00
jvoisin
cbdcf1a56c
Revert "perf(storage): take advantage of entries_feed_id_hash_key in updateEntry"
...
This reverts commit 6527c04307 .
2025-06-24 19:51:21 -07:00
Frédéric Guillot
95eb6c1230
chore(docker): update golang base image to alpine 3.22
2025-06-23 19:11:03 -07:00
jvoisin
643b89ec89
perf(storage): take advantage of entries_feed_id_hash_key in updateEntry
2025-06-23 17:59:17 -07:00
Frédéric Guillot
84ebf1a033
docs(manpage): update LISTEN_ADDR description
2025-06-23 17:51:02 -07:00
Frédéric Guillot
875618d786
docs(changelog): update release notes for version 2.2.10
2025-06-23 16:57:29 -07:00
Frédéric Guillot
1503a5c946
docs: add CONTRIBUTING.md file
2025-06-22 12:44:02 -07:00
jvoisin
8641f5f2a3
refactor(database): drop 3 columns in a single transaction
2025-06-20 16:23:20 -07:00
jvoisin
93b17af78b
refactor(appjs): no need to check if always present elements are always present
2025-06-20 13:16:57 -07:00
Frédéric Guillot
92876a0c61
refactor(http): rename package from httpd to server for consistency
2025-06-20 13:15:13 -07:00
Frédéric Guillot
d62df4e02a
refactor(server): avoid double call to Sprintf
2025-06-20 13:05:21 -07:00
Ingmar Stein
8fa5041c37
feat: Allow multiple listen addresses
...
This change implements the ability to specify multiple listen addresses.
This allows the application to listen on different interfaces or ports simultaneously,
or a combination of IP addresses and Unix sockets.
Closes #3343
2025-06-20 12:46:34 -07:00
Julien Voisin
dc05965895
chore(template): remove X-UA-Compatible meta tag specific to Internet Explorer
2025-06-20 11:59:08 -07:00
jvoisin
109e668ac7
perf(storage): pre-allocate a slice in RefreshFeedEntries
2025-06-20 11:57:04 -07:00
Frédéric Guillot
6d58052504
fix(readability): do not remove elements within code blocks
...
`<span class="hljs-comment"># exit 1</span>` will match the `unlikelyCandidatesRegexp` because it contains the `comment` string.
2025-06-19 21:03:53 -07:00
Matthaiks
491d51c95f
feat(locale): update Polish translation
2025-06-19 18:47:28 -07:00
Frédéric Guillot
db49e41acf
refactor(processor): move FilterEntryMaxAgeDays filter to filter package
2025-06-19 17:56:45 -07:00
Frédéric Guillot
e6b814199b
feat(filter): add EntryDate=max-age:duration filter
...
Example: `EntryDate=max-age:30d` or `EntryDate=max-age:1h`
Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h", "d".
2025-06-19 17:25:19 -07:00
Frédéric Guillot
b0a10f02fd
feat(css): add margin-bottom to input for consistent spacing
2025-06-19 16:35:17 -07:00
Frédéric Guillot
9c05c3c493
feat(filter): merge user and feed entry filter rules
2025-06-19 16:24:57 -07:00
Frédéric Guillot
2a9d91c783
feat: add entry filters at the feed level
2025-06-19 15:15:16 -07:00
Frédéric Guillot
cb59944d6b
refactor(processor): move RewriteEntryURL function to rewrite package
2025-06-19 13:22:29 -07:00
Frédéric Guillot
c12476c1a9
refactor(filter): avoid code duplication between IsBlockedEntry and IsAllowedEntry functions
2025-06-19 12:55:00 -07:00
Frédéric Guillot
bc6ab44ff2
fix(filter): skip invalid rules instead of exiting the loop
2025-06-19 12:36:35 -07:00
Frédéric Guillot
6282ac1f38
refactor(processor): move filters to a filter package
2025-06-19 12:06:30 -07:00
jvoisin
96c0ef4efd
refactor(processor): massive refactoring of filters.go
...
- Use proper variable names for `key=value` strings parts
- Explicitly assign false to the `match` boolean
- Use an explicit `len(parts) == 2` assertion to help the compiler remove
`isSliceInBounds` calls.
- Refactor identical code into a containsRegexPattern function.
- Early exit when parsing the first date fails when using the `Between`
operator, instead of trying to parse the second one.
2025-06-19 11:43:47 -07:00
jvoisin
b139ac4a2c
refactor(youtube): Remove a regex and make use of fetchWatchTime
2025-06-19 11:43:47 -07:00
jvoisin
c818d5bbb8
refactor(youtube): initiliaze two maps to the proper length
2025-06-19 11:43:47 -07:00
jvoisin
e366710529
refactor(processor): remove a useless type declaration
2025-06-19 11:43:47 -07:00
jvoisin
5cff4d7117
refactor(processor): remove a duplication function call
...
As youtubeVideoID is assigned to getVideoIDFromYouTubeURL(entry.URL),
there is no need to call the latter again when we can simly use youtubeVideoID
instead.
2025-06-19 11:43:47 -07:00
jvoisin
f31a784eaa
refactor(processor): refactor common code into a fetchWatchTime function
...
Both nebula and odysee were using the same function to parse time.
2025-06-19 11:43:47 -07:00
jvoisin
7edfcc3cf7
refactor(processor): remove a useless type declaration
2025-06-19 11:43:47 -07:00
jvoisin
fe4b00b9f8
refactor(processor): extract some functions into an utils.go file
2025-06-19 11:43:47 -07:00
jvoisin
46b159ac58
refactor(processor): simplify bilibili processing
...
- Use strings.Contains instead of a regex
- Use strings concatenation instead of a call to fmt.Sprintf
- Use `any` instead of `interface{}`
2025-06-19 11:43:47 -07:00
jvoisin
86c58e11f6
perf(reader): use a non-cryptographic hash when possible
...
There is no need to use SHA256 everywhere, especially on small inputs where we
don't care about its cryptographic properties. We're using FNV as it's the
faster available hash in go's standard library, and we're picking its "a"
version as it's slightly better avalanche characteristics, which are
relevant for small inputs.
This commit has the side-effect of invalidating all favicons saved in the
database, which is desirable to benefit from the resize process implemented in
777d0dd2 , as it didn't apply retro-actively.
We're also making use of hex.EncodeToString instead of fmt.Sprintf, as it's
marginally faster.
Note that we can't change the usage of sha256 for feed.Hash as it's used to
deduplicate entries in the database.
2025-06-18 20:28:23 -07:00
jvoisin
9a1d9593b3
refactor(crypto): use rand.Text() instead of a custom implementation
...
Go 1.24 provides the helpful rand.Text() function, returning a base32-encoded
string containing at least 128 bits of randomness. We should make use of it
everywhere it makes sense to do so, if only to not having to think about much
entropy do we need for each cases, and just trust the go crypto team.
Also, rand.Read() can't fail, so no need to check its return value:
https://pkg.go.dev/crypto/rand#Read This behaviour is consistent with go's
standard library itself.
2025-06-18 20:12:55 -07:00
jvoisin
43546976d2
refactor(tests): use b.Loop() instead of for range b.N
...
See https://tip.golang.org/doc/go1.24#new-benchmark-function
2025-06-18 20:12:55 -07:00
jvoisin
3ab9ca9e4d
refactor(http): Don't hardcode TLS configuration
...
- TLS 1.2 is used as MinVersion by default
- With regard to CipherSuites, in Go 1.22 RSA key exchange based cipher suites
were removed from the default list, and in Go 1.23 3DES cipher suites were
removed as well. Ciphers for TLS1.3 aren't configurable.
- No need to specify CurveP25, as the servers will likely disable the weird
ones like CurveP384 and CurveP521. Removing the explicit specification also
enables the post-quantum X25519MLKEM768, wow!
I trust the go team to make better choices on the long term than us keeping
miniflux up to date with the latest TLS trend.
2025-06-18 20:12:55 -07:00
jvoisin
1af6df7cb9
perf(api): use math/rand/v2
2025-06-18 20:12:55 -07:00
jvoisin
50dff576b0
build(go): bump to go 1.24
2025-06-18 20:12:55 -07:00
Frédéric Guillot
6af4d69c39
test(sanitizer): add test case to cover Vimeo iframe rewrite without query string
2025-06-17 17:55:39 -07:00
Frédéric Guillot
27015a5e34
test(sanitizer): add unit test for 0x0 pixel tracker
2025-06-17 17:42:55 -07:00
jvoisin
cdb57b3843
perf(sanitizer): minor simplifications of the sanitizer
...
- Factorize some conditions
- Remove useless `default` case and move the return at the end of the functions
- Use strings.CutPrefix instead of strings.HasPrefix + strings.TrimPrefix
- Use switch-case constructs instead of slices.Contains, as this reduces the
complexity of the functions and allows them to be inlined, as well as helping
the compiler to optimize them, as it sucks at interprocedural optimizations.
2025-06-17 17:42:45 -07:00
jvoisin
152ef578d2
feat(sanitizer): consider images of size 0x0 as pixel trackers
2025-06-17 17:32:00 -07:00
jvoisin
72486b9bd1
refactor(processor): minor simplification of a loop
...
This makes the code a tad clearer.
2025-06-17 17:30:13 -07:00
jvoisin
81df0b2a16
perf(rewrite): make getPredefinedRewriteRules O(1)
2025-06-17 17:27:36 -07:00
jvoisin
b296f21e98
refactor(internal): add an urllib.DomainWithoutWWW function
2025-06-17 17:27:36 -07:00
jvoisin
af15032145
perf(fetcher): pre-allocate the cipherSuites
2025-06-17 16:53:00 -07:00
jvoisin
6a6a88d06d
docs(readme): document a couple of nifty features
2025-06-17 16:50:38 -07:00
jvoisin
8660f5e3c7
perf(media): minor regex simplification
...
The previous regex was using the [ABC..D]*[ABC] pattern, resulting in a lot of
backtracking. The new regex is stopping the matching at the first space or end
of text (and removes the trailing `.` should one be present).
The backtracking was taking around 50% of the CPU time spent in atom.Parse
2025-06-17 16:49:07 -07:00
Frédéric Guillot
da4ab4263c
feat(rewrite): add parkablogs.com to the referer override list
2025-06-16 20:28:11 -07:00
jvoisin
237672a62c
perf(sanitizer): use a switch-case instead of a map
...
This removes a heap allocation, and should be way faster. It also makes the
code shorted/simpler.
2025-06-16 14:54:48 -07:00
jvoisin
e9d4a130fd
refactor(sanitizer): remove two useless www. prefixes
...
No need to have those prefixes, as the check is for substrings, so removing
them will improve the amount of matches.
2025-06-16 14:53:15 -07:00
Frédéric Guillot
d291d6a74d
refactor(config): remove deprecated config options
2025-06-15 14:42:28 -07:00
Frédéric Guillot
e0f7e6f2a8
feat(config)!: remove SERVER_TIMING_HEADER config option
...
BREAKING CHANGE: This option is not really useful and it's used only on
the unread page.
2025-06-15 14:17:28 -07:00
jvoisin
ef3dbd3707
perf(database): use TRUNCATE instead of DELETE FROM in migrations
...
This is marginally faster.
2025-06-15 13:58:46 -07:00
jvoisin
32f08053aa
perf(database): marginally speeds migrations up
...
PostgreSQL allows table alterations to be done in a single query, so let's take
advantage of it. This should marginally speed the CI up.
2025-06-15 13:58:46 -07:00
jvoisin
117c031f1c
feat(integration)!: remove Pocket integration
...
BREAKING CHANGE: Pocket will no longer be available after July 8, 2025.
https://support.mozilla.org/en-US/kb/future-of-pocket#w_when-is-pocket-shutting-down
2025-06-15 13:29:55 -07:00
Frédéric Guillot
b95c9023ee
refactor(sanitizer): make isValidAttribute() check O(1)
2025-06-13 21:44:25 -07:00
Frédéric Guillot
3538c4271b
refactor(sanitizer): use global variables to avoid recreating slices on every call
2025-06-13 21:34:07 -07:00
Frédéric Guillot
ac44507af2
refactor(sanitizer): use a map for iframe allow list
2025-06-13 21:05:23 -07:00
jvoisin
44c48d109f
perf(sanitizer): extract a call to url.Parse and make intensive use of it
...
Previously, url.Parse(baseUrl) was called on every self-closing tags, and on
most opening tags, accounting for around 15% of the CPU time spent in
processor.ProcessFeedEntries
2025-06-13 17:05:17 -07:00
Frédéric Guillot
40727704c2
feat(rewrite): add support for YouTube Shorts video URL pattern
2025-06-12 21:02:46 -07:00
jvoisin
8a014c6abc
perf(readability): minor regex improvement
...
- Improve the check for tags by matching only if its name is followed either by
a space, a slash or a closing angle
- Use an anonymous group
2025-06-12 19:13:58 -07:00
jvoisin
60ad19c427
perf(rss): early return when looking for an item's author
...
The `sanitizer.StripTags` function is calling `html.NewTokenizer`, which is
allocating a 4096 bytes buffer on the heap, as well a running a complex state
machine to tokenize html. There is no need to do all of this for empty strings.
This commit also fixes a TrimSpace/StripTags call inversion.
2025-06-11 19:06:15 -07:00
jvoisin
f40c1e7f63
fix(reader): fix a crash introduced by d59990f1
...
And add a fuzzer and a testcase as well to validate that nothing breaks.
2025-06-11 19:04:46 -07:00
Frédéric Guillot
a4d16cc5c1
refactor(rewrite): rename Rewriter function to ApplyContentRewriteRules
2025-06-10 20:28:15 -07:00
jvoisin
7c857bdc72
perf(reader): optimize RemoveTrackingParameters
...
A bit more than 10% of processor.ProcessFeedEntries' CPU time is spent in
urlcleaner.RemoveTrackingParameters, specifically calling url.Parse, so let's
extract this operation outside of it, and do it once before calling
urlcleaner.RemoveTrackingParameters multiple times.
Co-authored-by: Frédéric Guillot <f@miniflux.net >
2025-06-10 19:29:25 -07:00
jvoisin
0caadf82f2
perf(rss): optimize a bit BuildFeed
...
Calls to urllib.AbsoluteURL take a bit less than 10% of the time spent in
parser.ParseFeed, completely parsing an url only to check if it's absolute, and
if not, to make it so.
Checking if it starts with `https://` or `http://` is usually enough to find if
an url is absolute, and if is doesn't, it's always possible to fall back to
urllib.AbsoluteURL.
This also comes with the advantage of reducing heap allocations, as most of the
time spent in urllib.AbsoluteURL is heap-related (de)allocations.
2025-06-10 19:23:16 -07:00
jvoisin
0086e0b356
perf(validator): slightly optimize a regex
...
- There is no need to have groups as we're only using this regex for
`MatchString`.
- Since the only place where this regex is used is already calling
strings.ToLower, there is no need to check for `A-Z`.
2025-06-10 19:20:58 -07:00
Frédéric Guillot
70b513b8db
feat(ui): display external URL in single entry view
...
Display the article's external URL directly in the single entry view.
Rationale: On mobile devices, users couldn't see where a link pointed before tapping it.
Previously, the only way to view the external URL was by hovering - an action not available on touch devices.
2025-06-09 21:14:55 -07:00
Frédéric Guillot
cecc18420d
feat(sanitizer): add validation for empty width and height attributes in img tags
2025-06-09 20:38:17 -07:00
Frédéric Guillot
d53fd17e10
feat(sanitizer): validate MathML XML namespace
2025-06-09 20:28:54 -07:00
Frédéric Guillot
21d22d7f0b
feat(sanitizer): add support for fetchpriority and decoding attributes in img tags
2025-06-09 20:12:15 -07:00
jvoisin
d59990f1dd
perf(xml): optimize xml filtering
...
Instead of using bytes.Map which is returning a copy of the provided []byte,
use a custom in-place implementation, as the bytes.Map call is taking around
25% of rss.Parse
2025-06-09 13:49:10 -07:00
jvoisin
49085daefe
perf(xml): optimized NewXMLDecoder
...
io.ReadAll is growing the underlying buffer progressively, while
io.Copy is able to allocate it in one go, which is significantly faster.
io.ReadAll is currently accounting for around 10% of the CPU time of rss.Parse
2025-06-09 13:49:10 -07:00
jvoisin
5872710d22
perf(storage): optimize away two Sprintf calls
...
The call to fmt.Sprintf in WithFeedID accounts for more than 20% of the time
spent in GetFeed. Use strconv.Itoa instead, as it's much much faster.
Also change WithCategoryID in the same way, for consistency's sake.
2025-06-09 13:10:51 -07:00
Qeynos
d2212dee12
feat(locale): update Chinese translations
2025-06-08 21:11:04 -07:00
Frédéric Guillot
8db637cb39
feat(ui): add user setting to control target="_blank" on links
...
Rationale: Opening links in the current tab is the default browser behavior.
Using `target="_blank"` on external links can lead to accessibility issues and override user preferences. It may also interfere with assistive technologies and expected browser behavior.
To maintain backward compatibility, this option is enabled by default (`true`), which adds `target="_blank"` to links.
2025-06-08 21:07:11 -07:00
Frédéric Guillot
699deea72c
feat(oidc): use preferred_username first instead of email claim
2025-06-08 18:05:47 -07:00
Frédéric Guillot
c41d189a7a
fix(karakeep): correct method name and improve error handling in SaveURL
2025-06-08 17:47:20 -07:00
Frédéric Guillot
adfc38d237
feat(locale): update locales using machine translation
2025-06-08 17:14:45 -07:00
Frédéric Guillot
a8bb7a48d7
feat(ui): avoid showing an excessive number of tags
2025-06-08 15:29:09 -07:00
jvoisin
f9dce3d10f
perf(timzone): cache getLocation's results
...
Every time getLocation is called, it's opening and parsing a file on disc,
sometimes a zip file depending on the system. We can cache the results instead
of doing this.
See https://github.com/golang/go/issues/24844 and https://github.com/golang/go/issues/26106
2025-06-08 13:50:18 -07:00
dependabot[bot]
567e8cfc89
build(deps): bump golang.org/x/image from 0.27.0 to 0.28.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.27.0 to 0.28.0.
- [Commits](https://github.com/golang/image/compare/v0.27.0...v0.28.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.28.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-05 19:09:51 -07:00
dependabot[bot]
a8e73d6875
build(deps): bump golang.org/x/net from 0.40.0 to 0.41.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.40.0 to 0.41.0.
- [Commits](https://github.com/golang/net/compare/v0.40.0...v0.41.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.41.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-05 19:04:04 -07:00
dependabot[bot]
fa7f2b18a0
build(deps): bump golang.org/x/crypto from 0.38.0 to 0.39.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/crypto/compare/v0.38.0...v0.39.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.39.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-05 17:48:47 -07:00
Jesse Jaggars
43d302e768
feat: adding support for saving entries to karakeep
...
Signed-off-by: Jesse Jaggars <jhjaggars@gmail.com >
2025-06-04 21:10:26 -07:00
dependabot[bot]
4e181330d0
build(deps): bump library/alpine in /packaging/docker/alpine
...
Bumps library/alpine from 3.21 to 3.22.
---
updated-dependencies:
- dependency-name: library/alpine
dependency-version: '3.22'
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-06-02 19:17:39 -07:00
the7thNightmare
0369f03940
feat(locale): update Indonesian translations
2025-05-28 20:45:45 -07:00
Qeynos
4597d9b289
feat(locale): update Chinese translations
2025-05-28 20:44:40 -07:00
Cthulhux
7bfd22aab7
feat(locale): update German translation
...
Translated one string, found a good wording for the other.
2025-05-27 19:17:23 -07:00
Frédéric Guillot
325c505b88
docs(changelog): update release notes for version 2.2.9
2025-05-26 18:13:05 -07:00
Frédéric Guillot
bfd8860398
feat(api): add new endpoints to manage API keys
2025-05-25 15:50:13 -07:00
Matthaiks
ebd65da3b6
feat(locale): update Polish translation
2025-05-25 15:30:36 -07:00
Frédéric Guillot
83191b0c1d
fix(storage): remove extra comma introduced by commit 09fb05a
2025-05-25 13:33:41 -07:00
Frédéric Guillot
8142268799
feat: populate feed description automatically
2025-05-24 21:15:52 -07:00
Frédéric Guillot
5920e02562
feat: add liveness and readiness probes
...
- Added new routes: /liveness, /healthz, /readiness, /readyz
- These routes do not take the base path into consideration and are always available at the root of the server
2025-05-24 20:36:05 -07:00
Kelly Norton
09fb05aaaf
feat: add option to always open articles externally
2025-05-24 19:46:01 -07:00
Frédéric Guillot
52b184394f
fix(migrations): prevent failure at v45 with long entry URLs
...
Fixes an issue where upgrading from older versions of Miniflux could fail with the following PostgreSQL error:
```
[FATAL] [Migration v45] pq: index row size 2744 exceeds btree version 4 maximum 2704 for index "entries_feed_url_idx"
```
2025-05-23 13:27:05 -07:00
Matthaiks
7c8c7c2711
feat(locale): update Polish translation
2025-05-23 12:21:28 -07:00
Frédéric Guillot
9768eb9fb9
feat(locale): update French translations
2025-05-22 20:28:38 -07:00
Tianzhi Jin
b65373db7e
feat(webauthn): perfer creation of a client-side discoverable credential
2025-05-22 20:14:00 -07:00
dependabot[bot]
596d22c02c
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.6 to 2.23.8
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.6 to 2.23.8.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.6...v2.23.8 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.8
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-22 19:32:06 -07:00
Anton Larionov
4b86570b7c
chore(gitignore): ignore miniflux binary in root directory
2025-05-22 19:31:52 -07:00
Anton Larionov
e99864a456
fix(locale): localize Git commit label at about page
2025-05-22 19:30:10 -07:00
Anton Larionov
225463817c
feat(locale): complete Russian translation
2025-05-20 19:37:41 -07:00
Matthaiks
3db6e822cb
feat(locale): update Polish translation
2025-05-20 19:36:44 -07:00
dependabot[bot]
1c19151925
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.5 to 2.23.6
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.5 to 2.23.6.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.5...v2.23.6 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.6
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-20 19:36:20 -07:00
Anton Larionov
553c578f2e
feat(rssbridge): support auth token for RSS-Bridge
2025-05-19 20:47:12 -07:00
Tianzhi Jin
81ec32a8b6
fix(webauthn): correct arg in debug log
2025-05-14 21:01:52 -07:00
dependabot[bot]
3818a8a4fb
build(deps): bump github.com/go-webauthn/webauthn from 0.12.3 to 0.13.0
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.12.3 to 0.13.0.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.12.3...v0.13.0 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.13.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-13 19:17:05 -07:00
Frédéric Guillot
036704b3e4
feat(response): change error response content type to plain text and escape HTML
...
Adding another layer of security in addition to the existing CSP cannot
hurt.
2025-05-11 19:15:54 -07:00
Frédéric Guillot
327d027d38
feat(settings): replace div.panel with paragraph tags for OAuth2 links
2025-05-11 18:06:16 -07:00
Frédéric Guillot
5ae2cbd943
feat(settings): add validation for entry order and categories sorting order
2025-05-11 17:52:59 -07:00
dependabot[bot]
f15d29deb3
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.3 to 2.23.5
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.3 to 2.23.5.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.3...v2.23.5 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-08 19:03:12 -07:00
Frédéric Guillot
828a4334db
fix(sanitizer): MathML tags are not fully supported by golang.org/x/net/html
...
See https://github.com/golang/net/blob/master/html/atom/gen.go
and https://github.com/golang/net/blob/master/html/atom/table.go
2025-05-06 21:18:19 -07:00
jvoisin
d1dc369bb2
feat(sanitizer): add MathML tags to the sanitizer
...
This was found by reading the article pointed by https://lobste.rs/s/nobvmp/how_prime_factorizations_govern_collatz
2025-05-06 20:19:56 -07:00
Frédéric Guillot
a8076e1891
ci: remove deprecated reviewers field from dependantbot.yml
2025-05-06 20:17:19 -07:00
dependabot[bot]
3448d6267c
build(deps): bump golang.org/x/net from 0.39.0 to 0.40.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.39.0 to 0.40.0.
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.40.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-06 20:10:57 -07:00
dependabot[bot]
159261f2f8
build(deps): bump golang.org/x/oauth2 from 0.29.0 to 0.30.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.29.0...v0.30.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.30.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-06 20:07:15 -07:00
jvoisin
ff2dfe977b
feat: remove the ref parameter from url
...
This is used by (at least) Ghost (https://forum.ghost.org/t/ref-parameter-being-added-to-links/38335 )
Examples:
- https://blog.exploits.club/exploits-club-weekly-newsletter-66-mitigations-galore-dirtycow-revisited-program-analysis-for-uafs-and-more/
- https://labs.watchtowr.com/is-the-sofistication-in-the-room-with-us-x-forwarded-for-and-ivanti-connect-secure-cve-2025-22457/
2025-05-06 19:59:55 -07:00
dependabot[bot]
a5e3719773
build(deps): bump golang.org/x/crypto from 0.37.0 to 0.38.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.38.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-06 08:32:46 -07:00
dependabot[bot]
cdadb87203
build(deps): bump golang.org/x/image from 0.26.0 to 0.27.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/image/compare/v0.26.0...v0.27.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.27.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-06 08:28:02 -07:00
dependabot[bot]
5284d61fe3
build(deps): bump golangci/golangci-lint-action from 7 to 8
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 7 to 8.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v7...v8 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-version: '8'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-06 08:25:14 -07:00
Frédéric Guillot
3de9629a49
feat(googlereader): avoid SQL query to fetch username in streamItemContentsHandler
2025-05-04 20:38:53 -07:00
Frédéric Guillot
8d821dfc3b
fix(googlereader): handle various item ID formats
...
- Expected format: "tag:google.com,2005:reader/item/00000000148b9369" (hexadecimal string with prefix and padding)
- NetNewsWire uses this format: "tag:google.com,2005:reader/item/2f2" (hexadecimal string with prefix and no padding)
- Reeder uses this format: "000000000000048c" (hexadecimal string without prefix and padding)
- Liferea uses this format: "12345" (decimal string)
2025-05-04 20:11:37 -07:00
Frédéric Guillot
cb775bc79e
refactor(googlereader): move constants to separate files
2025-05-04 13:02:54 -07:00
Frédéric Guillot
6cc8d8abf1
fix(googlereader): /items/contents should accept short form item IDs
2025-05-03 21:48:41 -07:00
Frédéric Guillot
50395f13ca
feat(googlereader): add mark-all-as-read endpoint
2025-05-03 18:38:54 -07:00
Frédéric Guillot
e8c3435bb9
fix(googlereader): return a 400 instead of 500 for invalid edit requests
2025-05-02 18:15:00 -07:00
Frédéric Guillot
9a8a8bdca3
refactor(googlreader): remove redundant log message
2025-05-02 17:56:21 -07:00
Frédéric Guillot
63f0a17388
fix(googlereader): avoid panic for inexisting feed or category
2025-05-02 17:42:25 -07:00
NoelNegash
81c7669945
feat(sanitized): allow Spotify iframes
2025-05-02 16:25:17 -07:00
dependabot[bot]
2b000d1022
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.2 to 2.23.3
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.2 to 2.23.3.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.2...v2.23.3 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-05-02 16:20:29 -07:00
dependabot[bot]
27253c8a97
build(deps): bump github.com/tdewolff/minify/v2 from 2.23.1 to 2.23.2
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.23.1 to 2.23.2.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.23.1...v2.23.2 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-28 16:54:23 -07:00
Frédéric Guillot
f68046cce0
docs(changelog): update release notes for version 2.2.8
2025-04-22 21:01:43 -07:00
Frédéric Guillot
d33e305af9
fix(api): hide_globally categories field should be a boolean
2025-04-21 19:43:25 -07:00
Frédéric Guillot
764212f37c
refactor(js): replace DomHelper methods with standalone functions
2025-04-17 18:15:08 -07:00
Tali Auster
e02b65d4bc
fix: deal with navigator.share exceptions
...
Navigator.share returns a promise that's executed in the background, but
unless we await it explicitly, we won't get the exceptions in the
try/catch block.
2025-04-17 17:07:38 -07:00
Tali Auster
fe7ec25a09
chore: fix indentation
2025-04-17 17:07:38 -07:00
Tali Auster
2959a4d2bf
fix: clarify share flow in UI
...
Prior to this commit, to share an entry, a user has to click on the
share link and then copy the URL they are redirected to. The danger is
that they may right-click and copy the share link without actually
clicking on it, and therefore share a link that, when authenticated,
shares the entry, rather than actually sharing the entry.
Here, we avoid this misinterpretation by making sharing into a POST
request and using a form rather than a link.
2025-04-17 17:07:38 -07:00
AiraNadih
6b70a7dc81
feat(api): add update_content query parameter to /entries/{entryID}/fetch-content endpoint
2025-04-17 12:41:58 -07:00
dependabot[bot]
495c6aacd9
build(deps): bump github.com/mattn/go-sqlite3 from 1.14.27 to 1.14.28
...
Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3 ) from 1.14.27 to 1.14.28.
- [Release notes](https://github.com/mattn/go-sqlite3/releases )
- [Commits](https://github.com/mattn/go-sqlite3/compare/v1.14.27...v1.14.28 )
---
updated-dependencies:
- dependency-name: github.com/mattn/go-sqlite3
dependency-version: 1.14.28
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-16 19:27:11 -07:00
Frédéric Guillot
bc228d0afe
ci: add documentation issue template
2025-04-12 14:29:52 -07:00
Frédéric Guillot
d139d8a6ce
feat(cli): add -reset-feed-next-check-at argument
2025-04-11 15:56:57 -07:00
dependabot[bot]
28d0185e79
build(deps): bump github.com/PuerkitoBio/goquery from 1.10.2 to 1.10.3
...
Bumps [github.com/PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery ) from 1.10.2 to 1.10.3.
- [Release notes](https://github.com/PuerkitoBio/goquery/releases )
- [Commits](https://github.com/PuerkitoBio/goquery/compare/v1.10.2...v1.10.3 )
---
updated-dependencies:
- dependency-name: github.com/PuerkitoBio/goquery
dependency-version: 1.10.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-11 15:44:47 -07:00
Frédéric Guillot
c87c93d85f
feat(config): add SCHEDULER_ROUND_ROBIN_MAX_INTERVAL option
...
Add option to cap maximum refresh interval when RSS TTL, Retry-After, Cache-Control, or Expires headers specify excessively high values.
2025-04-11 15:40:32 -07:00
dependabot[bot]
0ef21e85c2
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.21.1 to 1.22.0.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.21.1...v1.22.0 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-version: 1.22.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-08 20:53:15 -07:00
dependabot[bot]
7438d67061
build(deps): bump github.com/tdewolff/minify/v2 from 2.22.4 to 2.23.1
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.22.4 to 2.23.1.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.22.4...v2.23.1 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-version: 2.23.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-07 20:49:12 -07:00
dependabot[bot]
e4399b4f9a
build(deps): bump golang.org/x/image from 0.25.0 to 0.26.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/image/compare/v0.25.0...v0.26.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-version: 0.26.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-07 20:48:54 -07:00
dependabot[bot]
b4f891705a
build(deps): bump golang.org/x/oauth2 from 0.28.0 to 0.29.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.28.0...v0.29.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-version: 0.29.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-07 20:10:31 -07:00
dependabot[bot]
3d72404ace
build(deps): bump golang.org/x/net from 0.38.0 to 0.39.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.38.0 to 0.39.0.
- [Commits](https://github.com/golang/net/compare/v0.38.0...v0.39.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.39.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-07 19:55:08 -07:00
Matthaiks
c4e92e6111
feat(locale): update Polish translation
2025-04-07 12:06:44 -07:00
Frédéric Guillot
ef22e95f8b
feat: implement proxy URL per feed
2025-04-06 21:05:19 -07:00
tssujt
7b344de846
feat(telegrambot): replace "Go to website" button with "Go to Miniflux"
2025-04-06 18:30:42 -07:00
Frédéric Guillot
c45b51d1f8
feat: use Cache-Control max-age and Expires headers to calculate next check
2025-04-06 16:24:00 -07:00
Frédéric Guillot
0af1a6e121
refactor: avoid logging twice the feed errors in the background worker
2025-04-06 15:39:40 -07:00
Frédéric Guillot
535fd050b7
feat: add proxy rotation functionality
2025-04-06 14:59:00 -07:00
Frédéric Guillot
d20e8a4e2c
ci(linter): replace commitlint with a Python script
2025-04-05 20:41:34 -07:00
Qeynos
7514e8a0c1
feat(locale): update Chinese translation
2025-04-04 19:40:44 -07:00
Cthulhux
ca3ede3183
Update de_DE.json
...
More translations
2025-04-04 19:37:53 -07:00
dependabot[bot]
038d33600a
build(deps): bump github.com/coreos/go-oidc/v3 from 3.13.0 to 3.14.1
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.13.0 to 3.14.1.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.13.0...v3.14.1 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-version: 3.14.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-03 17:34:17 -07:00
dependabot[bot]
1a3a174688
build(deps): bump github.com/mattn/go-sqlite3 from 1.14.25 to 1.14.27
...
Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3 ) from 1.14.25 to 1.14.27.
- [Release notes](https://github.com/mattn/go-sqlite3/releases )
- [Commits](https://github.com/mattn/go-sqlite3/compare/v1.14.25...v1.14.27 )
---
updated-dependencies:
- dependency-name: github.com/mattn/go-sqlite3
dependency-version: 1.14.27
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-02 19:25:34 -07:00
dependabot[bot]
6848c759b5
build(deps): bump github.com/mattn/go-sqlite3 from 1.14.24 to 1.14.25
...
Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3 ) from 1.14.24 to 1.14.25.
- [Release notes](https://github.com/mattn/go-sqlite3/releases )
- [Commits](https://github.com/mattn/go-sqlite3/compare/v1.14.24...v1.14.25 )
---
updated-dependencies:
- dependency-name: github.com/mattn/go-sqlite3
dependency-version: 1.14.25
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-01 19:46:53 -07:00
dependabot[bot]
10578f512f
build(deps): bump github.com/go-webauthn/webauthn from 0.12.2 to 0.12.3
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.12.2 to 0.12.3.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.12.2...v0.12.3 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-version: 0.12.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-04-01 19:46:40 -07:00
Frédéric Guillot
f99dff5238
docs(changelog): update release notes for version 2.2.7
2025-04-01 17:18:32 -07:00
Frédéric Guillot
1936ced1ed
docs: update README
2025-03-30 11:18:16 -07:00
Frédéric Guillot
cb695e653a
fix(security): use a more restrictive CSP for untrusted content
2025-03-29 19:49:41 -07:00
Matthaiks
f57949c9a2
feat(locale): update Polish translation
2025-03-29 15:15:21 -07:00
Frédéric Guillot
94fb3d6159
fix: change labels from Read / Unread to "Mark as Read"
2025-03-28 17:34:44 -07:00
Frédéric Guillot
51560f191f
fix(subscription): add /rss/feed.xml to the list of known feed URLs
2025-03-28 16:59:06 -07:00
Frédéric Guillot
c0fcdf3b6e
fix(ui): update entry tags display logic to show links based on user authentication
2025-03-28 15:53:08 -07:00
Frédéric Guillot
969efd2af7
fix(ui): update share feature to correctly select title element and handle empty title
2025-03-28 15:36:43 -07:00
Frédéric Guillot
87fccfee3a
fix(ui): remove touch-action style because it could cause horizontal scrolling issue
2025-03-28 15:20:31 -07:00
Frédéric Guillot
e643effefa
feat: combine feed icon handlers to use only externalIconID
2025-03-28 14:29:19 -07:00
Frédéric Guillot
c531be8780
fix: update Content-Security-Policy to use 'sandbox' directive
2025-03-28 13:06:59 -07:00
Frédéric Guillot
6e3cecc57e
feat(locale): add Romanian translation
...
This contribution was sent outside GitHub. Credit to Laurentiu.
2025-03-28 11:11:20 -07:00
Tali Auster
b3d385861f
fix: log warning on an empty client secret
...
Because Miniflux runs as a confidential service, a missing client secret
is a mistake in configuration. An empty client secret appears to be
valid per RFC 6749 (and is in fact the default set by Miniflux!), so we
log a warning.
2025-03-27 20:00:09 -07:00
dependabot[bot]
cc5a8fa4b3
build(deps): bump golang.org/x/net from 0.37.0 to 0.38.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.37.0 to 0.38.0.
- [Commits](https://github.com/golang/net/compare/v0.37.0...v0.38.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-27 17:26:54 -07:00
Frédéric Guillot
78ff727064
fix: name "external_id": converting NULL to string is unsupported
...
Regresion introduced by commit df8bc742fb .
2025-03-26 20:51:57 -07:00
dependabot[bot]
54dad707a4
build(deps): bump github.com/tdewolff/minify/v2 from 2.22.3 to 2.22.4
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.22.3 to 2.22.4.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.22.3...v2.22.4 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-26 19:48:23 -07:00
Josiah Campbell
df8bc742fb
feat(googlereader): add feed icon field, endpoint
...
Adds an endpoint to the Google Reader integration to serve
feed icon URLs.
2025-03-25 20:55:16 -07:00
Frédéric Guillot
e342a4f143
fix: address minor issues detected by Go linters
2025-03-24 20:48:46 -07:00
dependabot[bot]
febb7b1748
build(deps): bump golangci/golangci-lint-action from 6 to 7
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 6 to 7.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v6...v7 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-24 20:02:03 -07:00
Frédéric Guillot
537867a64b
ci: replace GitHub Issue Markdown templates with YAML forms
2025-03-24 17:27:31 -07:00
Frédéric Guillot
82a6fe64ae
feat(storage): reduce the number of SQL queries when fetching entry enclosures
2025-03-23 14:13:33 -07:00
dependabot[bot]
984a66b590
build(deps): bump github.com/golang-jwt/jwt/v5 from 5.2.1 to 5.2.2
...
Bumps [github.com/golang-jwt/jwt/v5](https://github.com/golang-jwt/jwt ) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/golang-jwt/jwt/releases )
- [Changelog](https://github.com/golang-jwt/jwt/blob/main/VERSION_HISTORY.md )
- [Commits](https://github.com/golang-jwt/jwt/compare/v5.2.1...v5.2.2 )
---
updated-dependencies:
- dependency-name: github.com/golang-jwt/jwt/v5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-21 15:33:19 -07:00
dependabot[bot]
bd79ad2a7d
build(deps): bump github.com/tdewolff/minify/v2 from 2.22.2 to 2.22.3
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.22.2 to 2.22.3.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.22.2...v2.22.3 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-20 20:26:38 -07:00
dependabot[bot]
b583de88f3
build(deps): bump github.com/tdewolff/minify/v2 from 2.21.3 to 2.22.2
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.21.3 to 2.22.2.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.21.3...v2.22.2 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-14 17:57:04 -07:00
dependabot[bot]
baccb9e719
build(deps): bump github.com/coreos/go-oidc/v3 from 3.12.0 to 3.13.0
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.12.0 to 3.13.0.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.12.0...v3.13.0 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-13 19:30:26 -07:00
dependabot[bot]
0fd11693f3
build(deps): bump github.com/go-webauthn/webauthn from 0.12.1 to 0.12.2 ( #3209 )
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.12.1 to 0.12.2.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.12.1...v0.12.2 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-10 18:02:27 -07:00
Matthaiks
05f7a34d43
feat(locale): update Polish translation
2025-03-07 11:36:25 -08:00
Frédéric Guillot
315e72c412
fix(rewrite): remove obsolete rule for webtoons.com
2025-03-06 20:11:03 -08:00
jvoisin
f916373f55
fix: allow the <b> tag
2025-03-06 19:27:30 -08:00
jvoisin
5353211206
fix: allow the <u> tag in feeds
2025-03-06 19:26:26 -08:00
dependabot[bot]
999ab0df2b
build(deps): bump golang.org/x/net from 0.36.0 to 0.37.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.36.0 to 0.37.0.
- [Commits](https://github.com/golang/net/compare/v0.36.0...v0.37.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-05 16:29:56 -08:00
dependabot[bot]
f8700c84b8
build(deps): bump golang.org/x/image from 0.24.0 to 0.25.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/image/compare/v0.24.0...v0.25.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-05 16:22:29 -08:00
dependabot[bot]
ddd916161e
build(deps): bump golang.org/x/crypto from 0.35.0 to 0.36.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/crypto/compare/v0.35.0...v0.36.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-05 16:16:27 -08:00
dependabot[bot]
c3cd5e3109
build(deps): bump golang.org/x/oauth2 from 0.27.0 to 0.28.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.27.0 to 0.28.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.27.0...v0.28.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-05 16:11:59 -08:00
dependabot[bot]
051441d875
build(deps): bump golang.org/x/term from 0.29.0 to 0.30.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/term/compare/v0.29.0...v0.30.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-05 15:53:41 -08:00
Paul Stenius
0cf5051cf8
feat: show size of DB on the about page
2025-03-05 15:49:32 -08:00
Paul Stenius
12ca7aa085
feat: add a make add string command to add new localized strings
2025-03-04 21:22:33 -08:00
dependabot[bot]
d53dc4cf28
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.21.0...v1.21.1 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-04 16:47:52 -08:00
dependabot[bot]
e7298b255a
build(deps): bump golang.org/x/net from 0.35.0 to 0.36.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.35.0 to 0.36.0.
- [Commits](https://github.com/golang/net/compare/v0.35.0...v0.36.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-03-04 16:45:39 -08:00
AiraNadih
ad02f21d04
refactor(rewrite): reorganize referer rules and remove obsolete mapping
2025-03-02 19:40:52 -08:00
Frédéric Guillot
46323b3fe7
test(api): update base url after upgrading hugo
2025-03-02 19:32:09 -08:00
David Pedersen
86b3593fec
docs: update client README to not reference deprecated function
2025-02-27 17:52:08 -08:00
Frédéric Guillot
d7c504f48e
fix(ui): avoid 500 error and NaN when marking as read a deleted entry
...
Steps to reproduce:
1. In /unread, open a feed's settings in a new tab. The feed must have unread entries in /unread.
2. In the new tab/window, delete the feed.
3. Without refreshing, mark an entry from the now-deleted feed as read.
4. Result: The total unread count in the UI header switches to NaN.
2025-02-26 16:39:38 -08:00
Matthaiks
6ad2001c7d
feat(locale): update Polish translation
2025-02-26 16:33:18 -08:00
dependabot[bot]
c5d4c762d8
build(deps): bump golang.org/x/crypto from 0.33.0 to 0.35.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.33.0 to 0.35.0.
- [Commits](https://github.com/golang/crypto/compare/v0.33.0...v0.35.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-24 16:59:46 -08:00
dependabot[bot]
8b66c2be1d
build(deps): bump golang.org/x/oauth2 from 0.26.0 to 0.27.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.26.0...v0.27.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-24 16:58:57 -08:00
dependabot[bot]
cfb22d7ec1
build(deps): bump github.com/go-webauthn/webauthn from 0.11.2 to 0.12.1
...
Bumps [github.com/go-webauthn/webauthn](https://github.com/go-webauthn/webauthn ) from 0.11.2 to 0.12.1.
- [Release notes](https://github.com/go-webauthn/webauthn/releases )
- [Commits](https://github.com/go-webauthn/webauthn/compare/v0.11.2...v0.12.1 )
---
updated-dependencies:
- dependency-name: github.com/go-webauthn/webauthn
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-24 16:54:07 -08:00
Maytham Alsudany
f01ff067a5
fix(processor): add missing quotation marks to import comments
2025-02-24 16:34:26 -08:00
Uziskull
55a3f9fcc9
feat(integrations/ntfy): make ntfy topics configurable per feed, with default one as fallback
2025-02-24 16:29:08 -08:00
dependabot[bot]
996f6f68d2
build(deps): bump github.com/go-jose/go-jose/v4 from 4.0.2 to 4.0.5
...
Bumps [github.com/go-jose/go-jose/v4](https://github.com/go-jose/go-jose ) from 4.0.2 to 4.0.5.
- [Release notes](https://github.com/go-jose/go-jose/releases )
- [Changelog](https://github.com/go-jose/go-jose/blob/main/CHANGELOG.md )
- [Commits](https://github.com/go-jose/go-jose/compare/v4.0.2...v4.0.5 )
---
updated-dependencies:
- dependency-name: github.com/go-jose/go-jose/v4
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-24 16:03:48 -08:00
Matthaiks
3b8ac8b16a
feat(locale): update Polish translation
2025-02-23 11:46:28 -08:00
Frédéric Guillot
381f03b56a
fix(greader): return enclosures in streamItemContentsHandler response
2025-02-22 20:11:41 -08:00
jvoisin
117d711d7d
feat(urlcleaner): add more Google Analytics parameters
2025-02-22 17:07:59 -08:00
dependabot[bot]
2f71804ff4
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.20.5 to 1.21.0.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.5...v1.21.0 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-22 17:06:47 -08:00
Frédéric Guillot
600f19cc87
docs(changelog): update release notes for version 2.2.6
2025-02-22 16:25:31 -08:00
jvoisin
4a77e937af
perf(sanitizer): remove two useless calls to strings.ReplaceAll
...
The [strings.Fields](https://pkg.go.dev/strings#Fields ) considers `'\t', '\n',
'\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP).` as spaces, so no need to
remove them beforehand.
This is a continuation of f2f60a8f73
2025-02-18 19:42:39 -08:00
dependabot[bot]
f7e30822c3
build(deps): bump golang in /packaging/debian
...
Bumps golang from 1.23-bookworm to 1.24-bookworm.
---
updated-dependencies:
- dependency-name: golang
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-18 19:39:27 -08:00
Frédéric Guillot
1cffb70362
ci: trigger packaging tests on pull requests
2025-02-17 20:48:42 -08:00
Frédéric Guillot
462ba8d7f7
feat(sanitizer): allow img tags with only a srcset and no src attribute
2025-02-15 18:03:36 -08:00
Frédéric Guillot
991c54150d
fix(css): avoid aside overflow on the pagination menu
2025-02-15 17:15:52 -08:00
Frédéric Guillot
6eedf4111f
fix(scraper): avoid encoding issue if charset meta tag is after 1024 bytes
2025-02-15 17:05:14 -08:00
Frédéric Guillot
af1f966250
test(encoding): add unit tests for CharsetReader function
2025-02-15 15:40:07 -08:00
Frédéric Guillot
7f54b27079
fix(rss): handle item title with CDATA content correctly
...
Fix regression introduced in commit a3ce03cc
2025-02-15 14:51:27 -08:00
Frédéric Guillot
a3ce03cc9d
feat(rss): add workaround for RSS item title with HTML content
2025-02-14 21:21:49 -08:00
Frédéric Guillot
502db64b28
ci: update GitHub Actions workflows to use Go 1.24
2025-02-13 21:29:58 -08:00
Frédéric Guillot
033806df4b
refactor(locale): sort JSON documents by key
2025-02-13 21:25:26 -08:00
Frédéric Guillot
50bd6eb5d9
feat(locale): update French translation
2025-02-13 21:15:29 -08:00
Sergio Moura
3387201634
feat(pushover): add integration with pushover.net
2025-02-13 20:50:37 -08:00
dependabot[bot]
76acd81fa4
build(deps): bump github.com/PuerkitoBio/goquery from 1.10.1 to 1.10.2
...
Bumps [github.com/PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery ) from 1.10.1 to 1.10.2.
- [Release notes](https://github.com/PuerkitoBio/goquery/releases )
- [Commits](https://github.com/PuerkitoBio/goquery/compare/v1.10.1...v1.10.2 )
---
updated-dependencies:
- dependency-name: github.com/PuerkitoBio/goquery
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-13 17:30:22 -08:00
krvpb024
28b235595e
feat(locale): add Taiwanese POJ (nan-Latn-pehoeji) support
2025-02-13 17:29:13 -08:00
dependabot[bot]
9398f7abd7
build(deps): bump golang.org/x/net from 0.34.0 to 0.35.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.34.0 to 0.35.0.
- [Commits](https://github.com/golang/net/compare/v0.34.0...v0.35.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-10 18:01:37 -08:00
dependabot[bot]
0f55c81e2b
build(deps): bump golang.org/x/crypto from 0.32.0 to 0.33.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.32.0 to 0.33.0.
- [Commits](https://github.com/golang/crypto/compare/v0.32.0...v0.33.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-07 16:21:33 -08:00
Frédéric Guillot
f2f60a8f73
feat(sanitizer): improve text truncation with better space handling
2025-02-06 21:21:49 -08:00
Frédéric Guillot
e777f12490
fix(sanitizer): correct HTML tag name from tfooter to tfoot
2025-02-06 21:16:29 -08:00
Frédéric Guillot
7bdf133b9d
ci: add commitlint to validate PR commit messages
2025-02-06 20:11:56 -08:00
Julien Voisin
7eb1d15315
refactor(date): use an else-if instead of two if statements
2025-02-06 19:44:12 -08:00
Cthulhux
a74186c555
fix(locale): missing hyphen in de_DE.json
2025-02-05 20:13:08 -08:00
dependabot[bot]
fb2fdf17b7
build(deps): bump golang.org/x/image from 0.23.0 to 0.24.0
...
Bumps [golang.org/x/image](https://github.com/golang/image ) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/image/compare/v0.23.0...v0.24.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/image
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-04 19:08:24 -08:00
dependabot[bot]
6edb3da977
build(deps): bump golang.org/x/term from 0.28.0 to 0.29.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/term/compare/v0.28.0...v0.29.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-04 17:43:43 -08:00
dependabot[bot]
c0309b6ad1
build(deps): bump golang.org/x/oauth2 from 0.25.0 to 0.26.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.25.0...v0.26.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-02-04 17:33:18 -08:00
MDeLuise
7bf1dd6e7a
fix: update Linkace integration to support API v2
2025-02-02 12:40:02 -08:00
Frédéric Guillot
6a008eee14
feat(ui): open the <details> tag in edit feed page when the feature is enabled
2025-01-31 17:21:49 -08:00
Matthaiks
b9b2d6822a
feat(locale): update Polish translation
2025-01-31 17:18:48 -08:00
Wesley van Tilburg
459284ab96
feat(integration): add webhook URL per feed
2025-01-31 16:33:11 -08:00
Julien Voisin
b193bc212a
refactor(xml): improve the performances of NewXMLDecoder
...
- Invert a condition to make the code more readable
- Extract the encoding directly from the slice of bytes instead of converting
it to string first.
2025-01-30 19:37:06 -08:00
Frédéric Guillot
3ebeb38ade
fix(api): return 500 response when JSON serialization fails
2025-01-30 18:19:50 -08:00
Frédéric Guillot
c951ac2876
fix: json encoding is failing with dates at OAD and negative timezone offset
2025-01-30 18:19:50 -08:00
Julien Voisin
7275bc808a
feat(urlcleaner): add trackers to the blocklist
2025-01-29 19:32:19 -08:00
Sangeeth Sudheer
e40446ad3c
fix(ui): Redirect correctly post feed removal from category feeds list
...
Currently, removing a feed from `/category/{id}/feeds` redirects incorrectly to `/feeds`. This change fixes it so that
removing a feed will now correctly redirect to `/category/{id}/feeds`. Removing a feed from `/feeds` is unaffected and
will work as it does currently.
To fix this, a new UI endpoint `/category/{categoryID}/feed/{feedID}/remove` is added and a corresponding handler method
to validate and perform the removal from DB.
2025-01-27 17:43:54 -08:00
CaptainArk
fba23cf464
feat(integration): add Slack integration
2025-01-27 17:37:22 -08:00
Mikael Berthe
bae872e79b
feat(locale): update French translations
...
Fix some French translations.
2025-01-26 10:38:31 -08:00
Peter Dave Hello
d0c9ef5acf
chore(i18n): update and improve zh_TW Traditional Chinese translations
2025-01-25 14:56:14 -08:00
Frédéric Guillot
0c74497ef7
fix(js): regression introduced in commit ffe1be5
...
The default argument should be set to false.
2025-01-24 17:52:58 -08:00
Frédéric Guillot
369054b02d
feat(processor): fetch YouTube watch time in bulk using the API
2025-01-24 15:16:23 -08:00
Frédéric Guillot
c3c42b0c37
fix(scraper): update TechCrunch scraper rule
2025-01-23 19:29:32 -08:00
jvoisin
4938a94968
Remove another superfluous cast
2025-01-23 19:20:13 -08:00
jvoisin
ffe1be59ea
Use a default parameter for goToPage as isn't ~always called with a single one
2025-01-23 19:20:13 -08:00
jvoisin
2318e9011d
Use proper types in app.js
2025-01-23 19:20:13 -08:00
jvoisin
67df305ac2
Use shortcuts to declare padding
2025-01-23 19:20:13 -08:00
jvoisin
2e57e3351b
Remove superfluous parenthesis
2025-01-23 19:20:13 -08:00
jvoisin
a412cde3b3
Don't define receivers on both values and pointer
...
And use `o` instead of `outline` as done everywhere else.
2025-01-23 19:20:13 -08:00
jvoisin
abfd9306a4
Guard against a potential null dereference
2025-01-23 19:20:13 -08:00
jvoisin
8889e44b5d
Simplify a condition
2025-01-23 19:20:13 -08:00
jvoisin
9657bf1f5b
Don't define methods both on instance and pointer
...
See https://go.dev/tour/methods/8
2025-01-23 19:20:13 -08:00
jvoisin
8c5f88ac62
Remove superfluous parenthesis
2025-01-23 19:20:13 -08:00
jvoisin
736f8b4dac
Don't use defer in a loop
...
As the body of request isn't used, we can sloe it immediately.
2025-01-23 19:20:13 -08:00
jvoisin
60e1d9e361
Broaden an error condition
...
`http.ErrNoCookie` isn't the only possible error value.
2025-01-23 19:20:13 -08:00
jvoisin
7967ce4df2
Remove a useless cast
2025-01-23 19:20:13 -08:00
jvoisin
71c7845c42
Anchor = removal in webauthn_handler.js
...
Since we're base64-encoding, `=` can only happen at the end, so no need to
traverse the whole payload.
2025-01-23 19:20:13 -08:00
jvoisin
aa56d23551
Replace the deprecated window.pageYOffset with window.scollY
...
See https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY
2025-01-23 19:20:13 -08:00
jvoisin
3cd448099d
Remove a useless return
2025-01-23 19:20:13 -08:00
Frédéric Guillot
47ccefba4e
fix(css): --entry-content-aside-border-color is missing from
...
`system.css`
2025-01-22 21:00:50 -08:00
Frédéric Guillot
1faccc7eca
fix(sanitizer): non-allowed attributes are not properly stripped
...
Regression introduced in commit 58178d90cb
2025-01-22 20:50:38 -08:00
Frédéric Guillot
e74d875d95
feat(css): improve aside element position on smartphone
2025-01-22 20:24:33 -08:00
Frédéric Guillot
33063a7775
docs(changelog): update release notes for version 2.2.5
2025-01-20 11:12:46 -08:00
Frédéric Guillot
49c62db2e1
fix: update Wallabag URL label to avoid confusion
2025-01-18 17:22:49 -08:00
Frédéric Guillot
400e8974f9
fix: improve pagination when having identical publication date
2025-01-18 16:59:48 -08:00
Frédéric Guillot
9c82e55b98
fix: do not strip tags in Atom entry title
2025-01-18 15:33:44 -08:00
Frédéric Guillot
c9c422b135
feat: bump linter and minifier from ECMAScript 2017 to 2020 (ES11)
2025-01-18 11:32:50 -08:00
Julien Voisin
91f9a7650e
refactor(js): add jshint check for strict comparison
2025-01-16 17:50:09 -08:00
jvoisin
605eeb4525
Fix a mistake introduced in f67d2e230b
...
Spotted by @michaelkuhn
2025-01-16 17:37:54 -08:00
Julien Voisin
eb6991ae49
tests(js): improve .jshintrc
2025-01-15 18:43:03 -08:00
Cthulhux
eac5d59f5b
feat(locale): update German translation
...
New ntfy string translated
2025-01-15 17:15:55 -08:00
dependabot[bot]
3861f1aa67
build(deps): bump github.com/tdewolff/minify/v2 from 2.21.2 to 2.21.3
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.21.2 to 2.21.3.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.21.2...v2.21.3 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-01-14 20:50:56 -08:00
Julien Voisin
6af0cd5b5c
refactor(js): simplify a bit keyboard_handler.js
...
- Mark two methods as static
- Use a `switch-case` construct instead of an Object and a loop.
2025-01-14 20:50:21 -08:00
Julien Voisin
fccca0ce1e
refactor(js): minor refactoring of touch_handler.js
...
- Mark a method as `static`
- use `Math.sqrt` instead of `Math.pow(…, 0.5)`
- Use `Math.sign` instead of a condition on the sign
- Inline some used-once variables
- Reduce the scope of some variables
2025-01-14 20:47:30 -08:00
Julien Voisin
8c3a9184ac
refactor(js): remove an outdated check for {passive: true}
...
According to https://caniuse.com/?search=passive ,
all browsers released after 2016 do support passive event listeners,
so no need to check for its presence.
2025-01-14 20:18:11 -08:00
Matthaiks
3b317b0b80
feat(locale): update Polish translation
2025-01-13 18:38:22 -08:00
Brieuc Dubois
a702bf0342
feat(ntfy): Add option to use internal links
2025-01-13 10:36:49 -08:00
Frédéric Guillot
e9520f5d1c
fix(finder): do not add redirections to the list of subscriptions to avoid confusion
2025-01-12 17:09:32 -08:00
Frédéric Guillot
f5fde36d45
fix(ui): reading preferences are reset if the form values are incorrect
2025-01-12 16:16:29 -08:00
Jake Walker
6cbe8c3a9d
feat: add fix_ghost_cards rewrite rule
2025-01-12 14:43:27 -08:00
Julien Voisin
1e54a073d3
refactor(js): minor improvements in app.js
...
- Use `….classList.toggle` instead of `….classList.add`/`….classList.remove` in a condition
- Replace a `function()` with a `() =>`
- Use `Math.min` instead of a handwritten condition
2025-01-12 12:54:08 -08:00
dependabot[bot]
bf66ef5a0f
build(deps): bump github.com/coreos/go-oidc/v3 from 3.11.0 to 3.12.0
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.11.0 to 3.12.0.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.11.0...v3.12.0 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-01-12 12:22:16 -08:00
CaptainArk
9b25ea4ed6
feat(integration): add Discord integration
2025-01-12 12:18:57 -08:00
Julien Voisin
f116f7dd6a
test(sanitizer): add a fuzzer
2025-01-11 17:19:31 -08:00
dependabot[bot]
e540547104
build(deps): bump golang.org/x/oauth2 from 0.24.0 to 0.25.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.24.0...v0.25.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-01-11 17:12:57 -08:00
dependabot[bot]
5b1abbf340
build(deps): bump golang.org/x/net from 0.33.0 to 0.34.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.33.0 to 0.34.0.
- [Commits](https://github.com/golang/net/compare/v0.33.0...v0.34.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-01-11 17:05:27 -08:00
dependabot[bot]
0d72cef82e
build(deps): bump golang.org/x/crypto from 0.31.0 to 0.32.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.31.0 to 0.32.0.
- [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.32.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2025-01-11 16:51:21 -08:00
Julien Voisin
79ec6ef81f
feat(database): add optional build support for SQLite
...
Miniflux can be build with `go build -tags=sqlite` to test this. Note that
while it builds, it will fail at runtime, as some of the SQL used in miniflux is
postgresql-specific.
2024-12-29 15:09:26 -08:00
jvoisin
8d4954e29b
Return an error should it happen in migrations
2024-12-29 11:51:47 -08:00
dependabot[bot]
c81e17c20d
build(deps): bump github.com/PuerkitoBio/goquery from 1.10.0 to 1.10.1
...
Bumps [github.com/PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery ) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/PuerkitoBio/goquery/releases )
- [Commits](https://github.com/PuerkitoBio/goquery/compare/v1.10.0...v1.10.1 )
---
updated-dependencies:
- dependency-name: github.com/PuerkitoBio/goquery
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-27 15:08:35 -08:00
Frédéric Guillot
5549f75dd7
fix(sanitizer): allow <hr> tags
2024-12-27 13:56:06 -08:00
Frédéric Guillot
fc3c4873e5
doc: add note regarding validateUsername
2024-12-26 15:05:15 -08:00
Frédéric Guillot
b87c547a07
ci: run Docker tests only when the Dockerfiles are modified
2024-12-26 14:58:32 -08:00
Frédéric Guillot
3466e9e2d6
ci: avoid building Linux packages for each pull-request
2024-12-26 14:57:52 -08:00
Julien Voisin
8df4b780a8
refactor(readingtime): replace whatlanggo with an ad-hoc implementation
...
The package `github.com/abadojack/whatlanggo` is unmaintained since 5 years, is
overkill for simply detecting CJK, and is quite slow.
2024-12-26 14:21:07 -08:00
Julien Voisin
e22520fc55
feat: validate usernames upon creation
...
The validation doesn't apply to already created usernames.
This should close #925
2024-12-26 14:14:07 -08:00
Julien Voisin
518bc4d6ff
refactor(database): add special handling for PostgreSQL-specific migrations
2024-12-26 14:09:37 -08:00
Julien Voisin
89620a7dd2
refactor(oauth2): no need to use io.WriteString when sha256 provides a way to obtain a sum in a single call
2024-12-26 10:39:55 -08:00
Julien Voisin
bbfe39722a
ci: tighten the CodeQL rules
...
- don't run CodeQL on test files
- don't run CodeQL if no `.go` nor `.js` file have been modified.
2024-12-26 10:33:41 -08:00
Julien Voisin
f3989cdb2f
ci: checkout before installing Go
...
Obtaining the code before deploying go allows better caching, as the go.sum
file becomes available.
See https://github.com/actions/setup-go/issues/281
2024-12-23 21:24:22 -08:00
Julien Voisin
195b75d185
refactor(rewriter): use custom title case converter implementation instead of golang.org/x/text/cases.Title()
...
The implementation is equivalent to
`cases.Title(language.English).String(strings.ToLower(…))`,
and this is the only place in miniflux where
"golang.org/x/text/cases" and "golang.org/x/text/language"
are (directly) used.
This reduces the binary size from 27015590 to
26686112 on my machine.
Kudos to https://gsa.zxilly.dev for making it straightforward to catch things
like this.
2024-12-23 21:16:02 -08:00
Julien Voisin
f52411f734
ci: only run -race -cover on Ubuntu
...
The coverage information isn't used anywhere in the CI, so no need to have it
for every OS. As for `-race`, there is no point in using it everywhere, one
time should be enough, especially since it's taking a lot of time on Windows.
2024-12-23 11:45:45 -08:00
Julien Voisin
b93543f416
feat: replace %{?systemd_requires} with %{?systemd_ordering}
...
As said [in the documentation](https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_dependencies_on_the_systemd_package ):
> If the package wants to use systemd tools if they are available, but does not
want to declare a dependency, then the `%{?systemd_ordering}` macro MAY be used
as a weaker form of %{?systemd_requires} that only declares an ordering during
an RPM transaction.
See https://github.com/systemd/systemd/commit/2424b6bd716f0c1c3bf3406b1fd1a16ba1b6a556
and https://pagure.io/packaging-committee/issue/644 for more information.
And also use `--setopt=install_weak_deps=False` to avoid installing a lot of
useless dependencies.
2024-12-23 11:34:29 -08:00
Julien Voisin
057f760196
ci: don't run go vet ./... as it's run as part of golangci-lint
...
See https://golangci-lint.run/usage/linters/#govet
2024-12-22 22:04:00 -08:00
Julien Voisin
28fe053329
ci: don't specify languages for CodeQL
...
As stated in the [documentation](https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#changing-the-languages-that-are-analyzed ):
> CodeQL code scanning automatically detects code written in the supported languages.
This will also reduce the number of CodeQL jobs from two to one.
See #3029
2024-12-22 22:00:06 -08:00
Frédéric Guillot
d345c87376
docs(changelog): update release notes for version 2.2.4
2024-12-20 13:05:52 -08:00
jvoisin
bd91e5f320
Add more referer spoofing
...
Based on #2261 . For moyu.im/jandan.net, see https://github.com/DIYgod/RSSHub/issues/11528
2024-12-20 11:53:38 -08:00
dependabot[bot]
276b2d8b0b
build(deps): bump golang.org/x/net from 0.32.0 to 0.33.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.32.0 to 0.33.0.
- [Commits](https://github.com/golang/net/compare/v0.32.0...v0.33.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-18 17:41:28 -08:00
Sevi.C
bca9bea676
feat: add date-based entry filtering rules
2024-12-16 20:38:20 -08:00
dependabot[bot]
7346d751cc
build(deps): bump library/alpine in /packaging/docker/alpine
...
Bumps library/alpine from 3.20 to 3.21.
---
updated-dependencies:
- dependency-name: library/alpine
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-16 19:35:31 -08:00
jvoisin
7939b54341
Resize favicons to 32x32 to account of scaling
...
As suggested by @michaelkuhn in https://github.com/miniflux/v2/pull/2998#issuecomment-2546702212
2024-12-16 19:28:38 -08:00
jvoisin
a06657b74d
Factorise a line in internal/ui/static/js/app.js
2024-12-15 20:54:17 -08:00
jvoisin
2df59b4865
Refactor internal/reader/readability/testdata
...
- Use chained strings.Contains instead of a regex for
blacklistCandidatesRegexp, as this is a bit faster
- Simplify a Find.Each.Remove to Find.Remove
- Don't concatenate id and class for removeUnlikelyCandidates, as it makes no
sense to match on overlaps. It might also marginally improve performances, as
regex now have to run on two strings separately, instead of both.
- Add a small benchmark
2024-12-15 20:52:32 -08:00
Julien Voisin
777d0dd248
feat: resize favicons before storing them
...
Some websites are using images of O(10kB) when not )O(100kB) for their
favicons. As miniflux only displays them with a 16x16 resolution, let's do our
best to resize them before storing them in the database. This should make
miniflux consume less bandwidth when serving pages, for the joy of mobile users
on a small data plan.
Of course, images that already are 16x16 aren't resized.
2024-12-15 20:47:19 -08:00
Julien Voisin
cfda948c3a
refactor(rewriter): avoid the use of regex in addDynamicImage
...
See https://dustri.org/b/parsing-noscript-tags-with-goquery.html for the whole
story.
2024-12-15 17:56:39 -08:00
jvoisin
14a6e8ed3a
Factorise .pagination-next and .pagination-last together
2024-12-15 17:03:09 -08:00
jvoisin
c3e842eba6
Remove -webkit-clip-path
...
https://caniuse.com/?search=clip-path says that `clip-path`
is supported since Safari 13.1
2024-12-15 17:03:09 -08:00
jvoisin
fd9cfd757a
Replace -ms-text-size-adjust with text-size-adjust
...
https://caniuse.com/?search=text-size-adjust says that
`ms-text-size-adjust` is supported in Edge.
2024-12-15 17:03:09 -08:00
Julien Voisin
945d436055
refactor(rewriter): replace regex with URL parsing for referrer override
...
No need for brittle regex when matching plain strings or domain names.
This should save some negligible amount of heap memory as well as
tremendously speeding up the matching.
2024-12-13 14:50:12 -08:00
Frédéric Guillot
c3649bd6b1
refactor(rewrite): remove unused function arguments
2024-12-12 21:10:35 -08:00
Julien Voisin
6ad5ad0bb2
refactor(readability): various improvements and optimizations
...
- Replace a completely overkill regex
- Use `.Remove()` instead of a hand-rolled loop
- Use a strings.Builder instead of a bytes.NewBufferString
- Replace a call to Fprintf with string concatenation, as the latter are much
faster
- Remove a superfluous cast
- Delay some computations
- Add some tests
2024-12-12 20:41:56 -08:00
Frédéric Guillot
113abeea59
test(rewrite): add unit test for referer rewrite function
2024-12-12 20:11:47 -08:00
Julien Voisin
e6185b1393
refactor: use min/max instead of math.Min/math.Max
...
This saves a couple of back'n'forth casts.
2024-12-11 19:43:14 -08:00
Julien Voisin
1b0b8b9c42
refactor: use a better construct than doc.Find(…).First()
...
As mentioned in goquery's documentation (https://pkg.go.dev/github.com/PuerkitoBio/goquery#Single ):
> By default, Selection.Find and other functions that accept a selector string
to select nodes will use all matches corresponding to that selector. By using
the Matcher returned by Single, at most the first match will be selected.
>
> The one using Single is optimized to be potentially much faster on large documents.
2024-12-11 19:40:55 -08:00
dependabot[bot]
68448b4abb
build(deps): bump golang.org/x/crypto from 0.30.0 to 0.31.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/crypto/compare/v0.30.0...v0.31.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-11 19:31:26 -08:00
Julien Voisin
3caa16ac31
refactor(processor): use URL parsing instead of a regex
2024-12-11 19:30:59 -08:00
Julien Voisin
637fb85de0
refactor(handler): delay store.UserByID as much as possible
...
In internal/reader/handler/handler.go:RefreshFeed, there is a call to
store.UserByID pretty early, which is only used for
originalFeed.WithTranslatedErrorMessage(localizedError.Translate(user.Language)
Its only other usage is in processor.ProcessFeedEntries(store, originalFeed,
user, forceRefresh), which is pretty late in RefreshFeed, and only called if
there are new items in the feed. It makes sense to only fetch the user's
language if the error localization function is used.
Calls to `store.UserByID` take around 10% of the CPU time of RefreshFeed in my
profiling.
This commit also makes `processor.ProcessFeedEntries` take a `userID` instead
of a `user`, to make the code a bit more concise.
This should close #2984
2024-12-09 19:32:59 -08:00
Julien Voisin
02c6d14659
refactor(subscription): use strings.HasSuffix instead of a regex in FindSubscriptionsFromYouTubePlaylistPage
2024-12-09 17:19:28 -08:00
Julien Voisin
728423339a
refactor(sanitizer): improve rewriteIframeURL()
...
- Use `url.Parse` instead of a regex, as this is much faster and way more robust
- Add support for Vimeo's Do Not Track parameter
2024-12-09 17:14:54 -08:00
Julien Voisin
eed3fcf92a
refactor(locale): delay parsing of translations until they're used
...
While doing some profiling for #2900 , I noticed that
`miniflux.app/v2/internal/locale.LoadCatalogMessages` is responsible for more
than 10% of the consumed memory. As most miniflux instances won't have enough
diverse users to use all the available translations at the same time, it
makes sense to load them on demand.
The overhead is a single function call and a check in a map, per call to
translation-related functions.
2024-12-09 17:05:14 -08:00
Qeynos
d5cfcf8956
feat(locale): update Chinese translation
2024-12-08 17:06:29 -08:00
Julien Voisin
dea46ac0ea
refactor: optimize sanitizeAttributes
...
- Use string concatenation instead of `Sprintf`, as this is much faster, and the
call to `Sprintf` is responsible for 30% of the CPU time of the function
- Anchor the youtube regex, to allow it to bail early, as this also account for
another 30% of the CPU time. It might be worth chaining calls to `TrimPrefix`
and check if the string has been trimmed instead of using a regex, to speed
things up even more, but this needs to be benchmarked properly.
2024-12-08 14:42:18 -08:00
Julien Voisin
30c44380e0
refactor: get rid of numberOfPluralFormsPerLanguage test-only variable
...
The `numberOfPluralFormsPerLanguage` variable is only used for tests, so it
should be declared in the test file.
2024-12-08 14:39:11 -08:00
Julien Voisin
a913f3f75f
feat(rewrite)!: remove parse_markdown rewrite rule
...
It was added in 2022 by #1513 , to support blog.laravel.com, which has
since switched to HTML. The Atom 0.3/1.0, RSS 1.0/2.0, RDF, and JSON formats
don't support markdown in their spec, and any website serving it there should
be considered as buggy and fixed.
This shaves off 2MB from the miniflux binary, which is quite steep for a
feature that nobody is/should be using, and remove a dependency which is always
a good thing.
2024-12-08 14:34:47 -08:00
AiraNadih
c1ef986cab
fix(consistency): align feed modification behavior between API and UI
2024-12-08 10:49:14 -08:00
Julien Voisin
2671f57edd
refactor(readability): simplify the regexes in internal/reader/readability/readability.go
...
- Use strings.ToLower() instead of having case-insensitive regex
- Remove overlapping words in the regex
- Split a condition to increase readability
2024-12-07 16:56:19 -08:00
jvoisin
2f56ebd3a6
Remove a now-useless function
2024-12-07 16:50:18 -08:00
jvoisin
059f5c0905
Inline a condition
2024-12-07 16:50:18 -08:00
jvoisin
58178d90cb
Refactor Sanitize
...
- Use `token.String()` instead of `html.EscapeString(token.Data)`
- Refactor conditions to highlight their similitude, enabling further
refactoring
This refactoring brings forth at least one bug: `tagStack` is never emptied.
2024-12-07 16:50:18 -08:00
jvoisin
cc885bbabb
config.Opts is guaranteed to never be nil
2024-12-07 16:50:18 -08:00
jvoisin
0e185849b4
Google+ isn't a thing anymore
2024-12-07 16:50:18 -08:00
jvoisin
d0984f29da
Simplify isValidTag
2024-12-07 16:50:18 -08:00
jvoisin
902ca63c45
Inline a function and fix a bug in it
...
The `isAnchor` function's first parameter was always `a`, instead of being
passed `tagName`. As this function is a single line and was only called in a
single place, it can be inlined.
2024-12-07 16:50:18 -08:00
jvoisin
2314500515
Merge two conditions
2024-12-07 16:50:18 -08:00
jvoisin
787d373211
Change the scope of a variable
2024-12-07 16:50:18 -08:00
Julien Voisin
fefbf2c935
refactor(processor): improve the rewrite URL rule regex
...
- Use `[^"]` instead of `.`, to help the regex engine to determine boundaries,
instead of having it bruteforce its way to find them
- Use `+` instead of `*`, as empty rules don't make sense
2024-12-07 16:35:51 -08:00
Julien Voisin
bfb429b919
refactor(sanitizer): optimize internal/reader/sanitizer/strip_tags.go
...
- Use strings instead of doing string->bytes->string
- Use a strings.Builder to build the output
2024-12-07 16:31:48 -08:00
Julien Voisin
331c831c23
refactor(sanitizer): simplify hasRequiredAttributes
...
This function takes around 1.5% of the total CPU time on my instance, and most
of it is spent in `mapassign_faststr` to initialize the `map`. This is replaced
with a switch-case construct, that should be both significantly faster as well
as pretty dull in term of memory consumption.
2024-12-07 16:30:15 -08:00
Julien Voisin
92a49d7e69
refactor(sanitizer): micro-optimizations of internal/reader/sanitizer/srcset.go
...
- Pre-allocate a slice
- Inline a local variable
- Remove a superfluous call to `strings.TrimSpace`
- Simplify some conditions via a switch-case construct
2024-12-07 16:27:56 -08:00
mrchi
8cdf76df69
fix(linting): remove unnecessary blank line in PushEntries function
2024-12-07 16:19:53 -08:00
mrchi
7bc0bffd85
feat(apprise): update SendNotification to handle multiple entries and add logging
2024-12-07 16:19:53 -08:00
mrchi
3a18e5d205
feat(apprise): add title in notification request body
2024-12-07 16:19:53 -08:00
Gabe Cook
c3ca603960
fix: load icon from site URL instead of feed URL
2024-12-07 16:06:26 -08:00
telnet23
7e2b50efee
feat: optionally fetch watch time from YouTube API instead of website
2024-12-07 16:00:35 -08:00
Gabe Cook
b61ee15c1b
fix: feed icon from xml ignored during force refresh
2024-12-07 15:59:49 -08:00
Cthulhux
b7b0ccbf4b
feat(locale): update German translation to use Readeck URL
2024-12-06 15:13:21 -08:00
dependabot[bot]
9c5228b2ee
build(deps): bump golang.org/x/net from 0.31.0 to 0.32.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.31.0 to 0.32.0.
- [Commits](https://github.com/golang/net/compare/v0.31.0...v0.32.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-04 18:29:21 -08:00
dependabot[bot]
53beec685b
build(deps): bump golang.org/x/term from 0.26.0 to 0.27.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/term/compare/v0.26.0...v0.27.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-04 16:32:39 -08:00
Mohit Raj
b1fb8be185
feat(locale): update translations to clarify readeck url instead of readeck api endpoint
2024-12-03 04:50:34 -08:00
Anshul Gupta
3a966c6ce5
fix: replace timezone function call with view
...
The `pg_timezone_names` view was added in 8.2.
It should be equivalent to the function query.
See: https://pgpedia.info/p/pg_timezone_names.html
This small change allows `miniflux` to run on postgres-compatible
databases like CockroachDB, which don't have this function.
2024-12-03 01:44:48 -08:00
dependabot[bot]
b2e702218d
build(deps): bump github.com/tdewolff/minify/v2 from 2.21.1 to 2.21.2
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.21.1 to 2.21.2.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.21.1...v2.21.2 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-12-03 01:33:05 -08:00
Gabe Cook
30c2e09a56
chore: remove blog.laravel.com rewrite rule
2024-12-03 01:21:42 -08:00
3zero2
c6c71c58b8
feat: add predefined scraper rules for arstechnica.com
2024-11-14 17:47:31 -08:00
Julien Voisin
6eb1f25a53
feat: only show the commit URL if it's not empty on /about
2024-11-12 20:09:48 -08:00
AiraNadih
f0fe91172f
feat(mediaProxy): update predefined referer spoofing rules for restricted media resources
2024-11-12 19:47:23 -08:00
Cthulhux
c3016a4c55
fix: fix grammar in pull-request template
2024-11-11 19:55:01 -08:00
Cthulhux
3a028a0669
feat(locale): update German translations
2024-11-11 19:53:58 -08:00
Frédéric Guillot
da951164d5
docs(changelog): update release notes for version 2.2.3
2024-11-10 15:53:03 -08:00
dependabot[bot]
a0988f6c16
build(deps): bump golang.org/x/net from 0.30.0 to 0.31.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.30.0 to 0.31.0.
- [Commits](https://github.com/golang/net/compare/v0.30.0...v0.31.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-11-09 21:38:00 -08:00
dependabot[bot]
fddc861e41
build(deps): bump golang.org/x/crypto from 0.28.0 to 0.29.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/crypto/compare/v0.28.0...v0.29.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-11-08 20:56:26 -08:00
dependabot[bot]
9288001f09
build(deps): bump golang.org/x/text from 0.19.0 to 0.20.0
...
Bumps [golang.org/x/text](https://github.com/golang/text ) from 0.19.0 to 0.20.0.
- [Release notes](https://github.com/golang/text/releases )
- [Commits](https://github.com/golang/text/compare/v0.19.0...v0.20.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/text
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-11-08 20:55:59 -08:00
dependabot[bot]
da261a5fc7
build(deps): bump golang.org/x/term from 0.25.0 to 0.26.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/term/compare/v0.25.0...v0.26.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-11-08 19:47:31 -08:00
dependabot[bot]
edeb5f0366
build(deps): bump golang.org/x/oauth2 from 0.23.0 to 0.24.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.23.0...v0.24.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-11-07 21:50:20 -08:00
Frédéric Guillot
65ff328804
fix: show only one player when there are several audio/video enclosures
2024-11-03 21:28:26 -08:00
John Tiesselune
7759ea1b43
feat(integration-shiori): updated shiori API to new endpoint for login/bookmark
2024-11-02 20:19:14 -07:00
Frédéric Guillot
7c5d6cf35f
feat(mediaproxy): pass original filename in Content-Disposition header
...
When you download/save proxified media, the original filename is lost. That
information could be retained by passing a header `Content-Disposition: inline;
filename="ORIGNAL_FILENAME.EXT"` when serving the media file. The requested URL
would still be obfuscated, but if the client downloads the file it'll use that
original filename.
2024-10-30 20:44:19 -07:00
Frédéric Guillot
39cc1887ea
fix: unable to change password due to a typo in SQL parameter
2024-10-30 19:58:37 -07:00
AiraNadih
b0a3b4d5d9
style(mediaProxy): format with gofmt to pass linter checks
2024-10-30 19:50:12 -07:00
AiraNadih
469f23968e
feat(mediaProxy): implement referer spoofing for restricted media resources
2024-10-30 19:50:12 -07:00
Frédéric Guillot
051bdecabd
docs(changelog): update release notes for version 2.2.2
2024-10-29 20:08:17 -07:00
dependabot[bot]
fe10d4302d
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.37 to 2.21.1
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.37 to 2.21.1.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.37...v2.21.1 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-28 17:13:38 -07:00
Matthaiks
b9dfd5bf6d
feat(locale): update Polish translations
2024-10-28 17:12:48 -07:00
Frédéric Guillot
51030ef1a8
feat(webauthn): show help message regarding username and non-discoverable credentials
...
The username is required for non-resident keys, but it's not necessary for discoverable credentials like Passkeys.
2024-10-26 21:49:23 -07:00
Frédéric Guillot
2bcc4b8399
fix(webauthn): add backup eligibility flag workaround to avoid a 401
...
Since go-webauthn v0.11.0, the backup eligibility flag is strictly validated, but Miniflux does not store this flag.
This workaround to set the flag based on the parsed response, and avoid "BackupEligible flag inconsistency detected during login validation" error.
See https://github.com/go-webauthn/webauthn/pull/240
2024-10-26 18:36:38 -07:00
Matthaiks
ea4d0a4f72
feat(locale): update Polish translation
2024-10-22 20:16:58 -07:00
Julien Voisin
5c5ad19c43
feat: replace xurls third-party module with an ad-hoc regexp
2024-10-21 20:48:12 -07:00
Frédéric Guillot
191f3a7ad7
feat(rss): calculate hash based on item title/content for feeds without GUID and link
2024-10-18 18:37:38 -07:00
Shaolong Chen
366928b35d
feat(integration): add cubox integration
...
Signed-off-by: Shaolong Chen <shaolong.chen@outlook.it >
2024-10-18 18:06:09 -07:00
Frédéric Guillot
3b654fefa7
feat(api): rename integrations status endpoint
2024-10-17 21:29:44 -07:00
AiraNadih
0adbcc3a04
feat(api): add endpoint for user integration status
2024-10-17 20:59:05 -07:00
Frédéric Guillot
7fdb450446
Update issue templates
2024-10-17 20:27:10 -07:00
dependabot[bot]
86285f5a05
build(deps): bump github.com/yuin/goldmark from 1.7.7 to 1.7.8
...
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark ) from 1.7.7 to 1.7.8.
- [Release notes](https://github.com/yuin/goldmark/releases )
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.7...v1.7.8 )
---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-16 21:09:35 -07:00
dependabot[bot]
8a4b4e459e
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.20.4 to 1.20.5.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.4...v1.20.5 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-15 16:42:00 -07:00
dependabot[bot]
879446bdb2
build(deps): bump github.com/yuin/goldmark from 1.7.6 to 1.7.7
...
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark ) from 1.7.6 to 1.7.7.
- [Release notes](https://github.com/yuin/goldmark/releases )
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.6...v1.7.7 )
---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-15 16:36:56 -07:00
dependabot[bot]
ef633dc427
build(deps): bump github.com/yuin/goldmark from 1.7.4 to 1.7.6
...
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark ) from 1.7.4 to 1.7.6.
- [Release notes](https://github.com/yuin/goldmark/releases )
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.4...v1.7.6 )
---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-14 18:18:38 -07:00
July
86c0cc61ba
feat: set entry URL to rewritten URL if a rewrite rule is defined
2024-10-13 21:21:28 -07:00
dependabot[bot]
ffe3ed4b9a
build(deps): bump github.com/andybalholm/brotli from 1.1.0 to 1.1.1
...
Bumps [github.com/andybalholm/brotli](https://github.com/andybalholm/brotli ) from 1.1.0 to 1.1.1.
- [Commits](https://github.com/andybalholm/brotli/compare/v1.1.0...v1.1.1 )
---
updated-dependencies:
- dependency-name: github.com/andybalholm/brotli
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-11 20:13:37 -07:00
Frédéric Guillot
5c4df786de
fix: avoid panic in IsRateLimited() function
2024-10-06 21:34:23 -07:00
Qeynos
ee8c6621e9
feat(locale): update zh_CN translations
2024-10-06 20:12:00 -07:00
Matthaiks
f748513df6
feat(locale): update Polish translations
2024-10-06 12:56:49 -07:00
Frédéric Guillot
e1050e21b5
feat: take Retry-After header into consideration for rate limited feeds
2024-10-05 22:26:05 -07:00
Frédéric Guillot
e555e442fb
feat: add new settings option to allow external fonts
2024-10-05 21:21:12 -07:00
Frédéric Guillot
600dea6ce5
feat(client): add custom_js field to Go API client
2024-10-05 18:37:34 -07:00
milhnl
e07203ad46
feat: add custom user JavaScript
2024-10-05 16:54:11 -07:00
Frédéric Guillot
f16735fd6d
feat: update feed icon during force refresh
2024-10-04 20:51:40 -07:00
Scott Leggett
562a7b79a5
fix: update Last-Modified if it changes in a 304 response
...
When a server returns a 304 response with a strong validator, any other
stored fields must be updated if they are also present in the response.
This behaviour is described in RFC9111, sections 3.2 and 4.3.4.
2024-10-04 17:47:48 -07:00
Scott Leggett
cb610230d9
chore: update test case comment
...
The updated comment reflects a better understanding of the RFCs.
2024-10-04 17:47:48 -07:00
dependabot[bot]
628b2b388d
build(deps): bump golang.org/x/net from 0.29.0 to 0.30.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.29.0 to 0.30.0.
- [Commits](https://github.com/golang/net/compare/v0.29.0...v0.30.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-10-04 17:19:04 -07:00
Frédéric Guillot
faa70f3019
docs(changelog): update release notes for version 2.2.1
2024-09-27 19:20:06 -07:00
Frédéric Guillot
cfe410f202
refactor: split processor package into smaller files
2024-09-22 18:54:19 -07:00
Qeynos
c2ac2bfb83
feat: use Bilibili API instead of web scraping to get video watch time
2024-09-22 18:05:43 -07:00
Dark Dragon
c326d5574b
build: Bump devcontainer version to go 1.23
2024-09-21 20:56:56 -07:00
dependabot[bot]
f1c8c060c0
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.20.3 to 1.20.4.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.3...v1.20.4 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-17 16:48:06 -07:00
Victorhck
6944fb1e50
feat(locale): update Spanish translations
2024-09-12 21:26:02 -07:00
Frédéric Guillot
7d21298fab
fix(mediaproxy): forward client user-agent to origin to bypass bot protection
2024-09-11 21:01:56 -07:00
Frédéric Guillot
95201fc5cf
build(deps): bump github.com/go-webauthn/webauthn from 0.10.2 to 0.11.2
2024-09-07 16:03:05 -07:00
dependabot[bot]
5e335995e1
build(deps): bump github.com/PuerkitoBio/goquery from 1.9.2 to 1.10.0
...
Bumps [github.com/PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery ) from 1.9.2 to 1.10.0.
- [Release notes](https://github.com/PuerkitoBio/goquery/releases )
- [Commits](https://github.com/PuerkitoBio/goquery/compare/v1.9.2...v1.10.0 )
---
updated-dependencies:
- dependency-name: github.com/PuerkitoBio/goquery
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-07 15:51:55 -07:00
Frédéric Guillot
70f126fc5a
build: update go.mod to Go 1.23
2024-09-07 15:27:20 -07:00
Michiel Janssens
38cdc4d3df
feat(locale): update Dutch translations
2024-09-05 20:16:43 -07:00
dependabot[bot]
4ab1cdd2e9
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.20.2 to 1.20.3.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.20.3/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.2...v1.20.3 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-05 19:41:17 -07:00
dependabot[bot]
f3e48505df
build(deps): bump golang.org/x/net from 0.28.0 to 0.29.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.28.0 to 0.29.0.
- [Commits](https://github.com/golang/net/compare/v0.28.0...v0.29.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-05 19:40:53 -07:00
dependabot[bot]
60c75ab3b6
build(deps): bump golang.org/x/term from 0.23.0 to 0.24.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/term/compare/v0.23.0...v0.24.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-04 20:54:05 -07:00
dependabot[bot]
349f040921
build(deps): bump golang.org/x/oauth2 from 0.22.0 to 0.23.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.22.0 to 0.23.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.22.0...v0.23.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-09-04 20:28:21 -07:00
Ztec
74376cd33c
fix: remove progression save on shared entry
...
Shared entry does not link to any user and therefore should not display
any saved progression. Curiously, the progression of a user (the one that shared ?)
was still integrated in the page. This does not make sens regarding the sharing
feature itself. It is also a leak of user personal information onto a public page.
I simply removed the data from the template when the user object is not present.
I tested the change on "regular" entry page, ensuring the save progression feature
still works, and on shared page checking if any error happened in the JavaScript console.
Everything seems in order.
2024-09-03 20:50:04 -07:00
Qeynos
2a4d2985c4
feat(locale): update zh_CN translations
2024-09-03 19:45:20 -07:00
Phantop
907941394b
feat: add pagination to shared entries listing
2024-09-02 21:27:17 -07:00
Kierán Meinhardt
88ea0ade3e
feat(locale): add dummy translations for menu.show_only_starred_entries
2024-09-02 21:23:17 -07:00
Kierán Meinhardt
fcf9fde118
feat(locale): add translations for menu.show_only_starred_entries
2024-09-02 21:23:17 -07:00
Kierán Meinhardt
5c38688783
feat: add button to show only starred entries per category
...
fixes #1468
2024-09-02 21:23:17 -07:00
John
e0850fc648
feat(locale): update Ukrainian translations
2024-09-02 19:32:03 -07:00
dependabot[bot]
8708a109b3
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.20.1 to 1.20.2.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.20.2/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.1...v1.20.2 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-29 05:09:52 -07:00
dependabot[bot]
0fe787bb93
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.20.0 to 1.20.1.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.20.1/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.20.0...v1.20.1 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-22 14:31:21 -07:00
Jonatas Baldin
2dffcfeadc
fix: add datasource variable and upgrade depecrated panels on the grafana dashboard
2024-08-22 14:29:50 -07:00
Frédéric Guillot
4bbc12e3b2
fix: use root URL to generate absolute proxy URL
...
When using `BASE_URL` with a subfolder, the root URL must be used to
avoid base folder appearing twice in the generated URL.
2024-08-19 20:44:46 -07:00
Frédéric Guillot
3e0e8dda2b
docs(changelog): update release notes for v2.2.0
2024-08-18 12:48:00 -07:00
Frédéric Guillot
eb4bca6eb7
fix: store.GetEnclosure() should return nil if no rows are returned
2024-08-18 12:41:30 -07:00
Pontus Jensen Karlsson
810b351772
feat: add API routes /v1/enclosures/{enclosureID}
2024-08-18 11:53:19 -07:00
Alexandros Kosiaris
89ff33ddd0
fix(client): Return nil and error if endpoint is empty string
...
Why:
Passing an empty string as an endpoint to Client when instantiating a
new client might seem like something that should never happen but I
managed to trigger it while parsing some input files to register feeds
in bulk.
What:
In the execute() function, check early if the endpoint is "" and then
return immediately nil and a new error, named ErrEmptyEndpoint with a
descriptive string
2024-08-18 11:35:45 -07:00
Frédéric Guillot
f3a5a3ee14
fix(fever): correct sorting direction when using max_id argument
2024-08-17 18:08:01 -07:00
Frédéric Guillot
e98e16e45a
build: add sha256 checksum file for published binaries
2024-08-15 17:24:28 -07:00
Frédéric Guillot
eb057d0415
build: bump Alpine Linux build image to v3.20
2024-08-15 16:48:26 -07:00
Frédéric Guillot
fa51c3ead7
chore: avoid using legacy key/value format in Dockerfile
2024-08-15 16:39:43 -07:00
Frédéric Guillot
56d7e4d5e9
build: update GitHub Actions to Go 1.23
2024-08-15 16:34:00 -07:00
Frédéric Guillot
cc94ab704a
feat: validate OAUTH2_PROVIDER value
2024-08-14 19:09:14 -07:00
Michael Kuhn
9b8eabf036
feat: change log level to info when running migrations
...
When upgrading my installation, I noticed that `miniflux -migrate` does
not provide any output by default. This can be a bit confusing since one
cannot be sure whether anything has happened. Use `Info` instead of
`Debug` to provide some basic output by default.
2024-08-14 17:07:27 -07:00
dependabot[bot]
a8ac3dec47
build(deps): bump github.com/prometheus/client_golang
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.19.1 to 1.20.0.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.19.1...v1.20.0 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-14 17:04:43 -07:00
Finn
6feee555ba
feat: allow customizing the display name of the OpenID Connect provider
2024-08-12 22:05:15 -07:00
Piper McCorkle
ee926e73cb
feat: add license info to js, for LibreJS compatibility
...
[LibreJS][0] is a browser extension developed by GNU which ensures only Free (libre) JavaScript is run. To determine whether given JavaScript is Free, LibreJS consults metadata included in the JavaScript file. Since Miniflux is Free Software, getting its JavaScript to work when LibreJS is installed is just a matter of adding license metadata to the returned JavaScript source.
[0]: https://www.gnu.org/software/librejs/index.html
2024-08-12 20:43:18 -07:00
Pontus Jensen Karlsson
ade412f453
fix: Honor hide_globally when creating a new feed through the api
...
TestGetGlobalEntriesEndpoint was failing because CreateFeed ignored HideGlobally, this fixes that.
2024-08-12 20:20:44 -07:00
Pontus Jensen Karlsson
6fb7e84ce1
feat: API: Allow filtering entries on globally_hidden
...
Currently there's no way through the API to mimic the Unread page of the client.
This is now possible by filtering on globally_visible=true and status=unread.
2024-08-12 20:20:44 -07:00
Finn
770cc1dbb3
feat: Add option to disable local auth form
2024-08-12 19:27:08 -07:00
dependabot[bot]
59dac15bdf
build(deps): bump golang.org/x/net from 0.27.0 to 0.28.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.27.0 to 0.28.0.
- [Commits](https://github.com/golang/net/compare/v0.27.0...v0.28.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-08 21:46:15 -07:00
dependabot[bot]
da6aa36758
build(deps): bump golang.org/x/oauth2 from 0.21.0 to 0.22.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.21.0...v0.22.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-08 16:55:38 -07:00
dependabot[bot]
2a22fe6b75
build(deps): bump golang.org/x/crypto from 0.25.0 to 0.26.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/crypto/compare/v0.25.0...v0.26.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-08-08 15:28:35 -07:00
Qeynos
bcbf9f4025
feat: add FETCH_BILIBILI_WATCH_TIME config option
2024-08-01 19:52:31 -07:00
Qeynos
569529d73b
feat(locale): update zh_CN translations
2024-07-31 19:06:36 -07:00
Qeynos
31cb06026d
feat(locale): update zh_CN translations
2024-07-30 20:30:47 -07:00
Frédéric Guillot
d048d59d39
fix: use BASE_URL instead of r.Host to generate absolute media proxy URL
2024-07-29 16:04:31 -07:00
Loïc Doubinine
4f55361f5f
feat: mark media as read when playback reaches 90%
2024-07-28 12:29:45 -07:00
Frédéric Guillot
37309adbc0
fix: do not alter the original URL if there is no tracker parameter
2024-07-25 22:10:28 -07:00
Frédéric Guillot
92f3dc26e4
feat: add support for aside HTML element in entry content
2024-07-25 21:11:37 -07:00
Frédéric Guillot
f6dc952551
feat: add support for base element when discovering feeds
2024-07-25 20:54:51 -07:00
Frédéric Guillot
29387f2d60
feat: implement base element handling in content scraper
2024-07-25 20:36:56 -07:00
Frédéric Guillot
c0f6e32a99
feat: remove well-known URL parameter trackers
2024-07-19 21:35:47 -07:00
Frédéric Guillot
11cafec863
fix: align pagination correctly on small screens with non-English text
2024-07-19 18:32:37 -07:00
Wojtek
8cfe77a3cd
build: publish OCI images only if PUBLISH_DOCKER_IMAGES=true
2024-07-17 18:28:16 -07:00
Thiago Perrotta
8d4d092cd7
docs: update links to filtering rules
2024-07-16 19:30:49 -07:00
Frédéric Guillot
968355f9b9
feat(integration): add ntfy integration
2024-07-13 17:51:17 -07:00
Frédéric Guillot
3ca52c7f7f
feat(locale): update French translations
2024-07-13 13:18:31 -07:00
Frédéric Guillot
2e856a6bf0
fix(integration): define content encoding explicitly when sending article body to Readeck
2024-07-13 13:07:50 -07:00
Frédéric Guillot
36c25e7689
refactor: simplify Youtube feeds discovery
2024-07-13 12:17:13 -07:00
Frédéric Guillot
cb97d4a1a8
feat: remove YouTube video page subscription finder because meta[itemprop="channelId"] no longer exists
2024-07-13 11:11:50 -07:00
Frédéric Guillot
79ea9e28b5
fix: panic during YouTube channel feed discovery
...
Regression introduced in commit e54825b
2024-07-13 10:18:15 -07:00
wangb
f847c3e754
fix: video poster image URL is encoded twice when using MEDIA_PROXY_MODE=all
2024-07-13 09:20:55 -07:00
WShihan
4ca19d123a
feat(locale): update Chinese translations
2024-07-10 19:30:04 -07:00
dependabot[bot]
90ef864edd
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.36 to 2.20.37
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.36 to 2.20.37.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.36...v2.20.37 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-10 19:07:48 -07:00
Taylan Tatlı
01133c586f
feat(locale): update Turkish translations
2024-07-10 19:07:28 -07:00
Frédéric Guillot
b683756d8e
Update ChangeLog
2024-07-09 20:51:30 -07:00
dependabot[bot]
3dfc70cee6
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.35 to 2.20.36
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.35 to 2.20.36.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.35...v2.20.36 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-09 20:03:17 -07:00
dependabot[bot]
91b4a7d35f
build(deps): bump github.com/coreos/go-oidc/v3 from 3.10.0 to 3.11.0
...
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc ) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/coreos/go-oidc/releases )
- [Commits](https://github.com/coreos/go-oidc/compare/v3.10.0...v3.11.0 )
---
updated-dependencies:
- dependency-name: github.com/coreos/go-oidc/v3
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-08 17:13:45 -07:00
Paul Esch-Laurent
2fbe2df086
fix: <img> aspect ratio w/ height: auto
...
Complement with `max-width: 100%` with a `height: auto` to preserve `<img>` aspect ratios, particularly when it's not wrapped in a block parent e.g. `<p>` or `<figure>` most commonly.
Related: https://www.smashingmagazine.com/2020/03/setting-height-width-images-important-again/
2024-07-08 17:13:20 -07:00
dependabot[bot]
964698f363
build(deps): bump golang.org/x/net from 0.26.0 to 0.27.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.26.0 to 0.27.0.
- [Commits](https://github.com/golang/net/compare/v0.26.0...v0.27.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-05 21:08:51 -07:00
dependabot[bot]
e34af65ae9
build(deps): bump golang.org/x/crypto from 0.24.0 to 0.25.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/crypto/compare/v0.24.0...v0.25.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-05 20:39:28 -07:00
dependabot[bot]
e99a675912
build(deps): bump golang.org/x/term from 0.21.0 to 0.22.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.21.0 to 0.22.0.
- [Commits](https://github.com/golang/term/compare/v0.21.0...v0.22.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-04 16:04:01 -07:00
Frédéric Guillot
d96ad4ddef
feat(locale): update French translations
2024-07-04 16:03:30 -07:00
Frédéric Guillot
4272932402
Update GitHub PR template
2024-07-04 13:12:10 -07:00
Krish Mamtora
a60996e666
Update the expected rule template for the rule validator
2024-07-04 13:07:40 -07:00
Krish Mamtora
a09ddbbaf4
Remove carriage returns to sanitizer strings from windows
2024-07-04 13:07:40 -07:00
Danila Gorelko
92db691344
Add Betula integration
2024-07-04 12:59:47 -07:00
Frédéric Guillot
a334c8e691
locale: update French translation
2024-07-03 10:33:21 -07:00
Scott Leggett
bf1c851093
fetcher: use ETag as a stronger validator than Last-Modified
...
As per the MDN article on HTTP caching:
During cache revalidation, if both If-Modified-Since and If-None-Match
are present, then If-None-Match takes precedence for the validator.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Previously Miniflux would consider a resource unmodified if the
Last-Modified header had not changed, even if the ETag had changed.
With this commit, Miniflux will consider a resource modified if the ETag
header has changed, even if Last-Modified has not.
This fixes Bug 1 in https://rachelbythebay.com/w/2024/06/11/fsr/
2024-07-02 22:05:49 -07:00
Scott Leggett
c787bb5b48
fetcher: add tests for IsModified behaviour
...
In particular, add a failing test for the case where ETag changes but
Last-Modified does not.
2024-07-02 22:05:49 -07:00
privatmamtora
1a81866bb9
Add global block and keep filters
2024-07-02 21:03:49 -07:00
dependabot[bot]
c4278821cb
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.34 to 2.20.35
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.34 to 2.20.35.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.34...v2.20.35 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-07-02 18:32:05 -07:00
Ztec
4498ba10e8
Fix: Integration with Pinboard: Preserve Existing Bookmarks
...
The Issue:
When saving an entry that is already bookmarked on Pinboard,
Miniflux was overriding all existing data on Pinboard. This action
removed any extended content or, worse, changed the private settings
to public, making previously private bookmarks publicly available.
The Fix:
Now, upon saving an entry as a bookmark, I first fetch it. If it
already exists, I apply the necessary modifications (adding tags and any state)
that Miniflux would have normally done, then add it again. This way, no
data is lost in the process. Pinboard has a stable API, so I don't anticipate
any new fields being added soon.
I manually tested the integration by hitting the save button in the following situations:
- Entry URL does not exist on Pinboard:
- Bookmark is properly added on Pinboard with tags and "to read" status according to Miniflux settings.
- Entry URL already exists on Pinboard:
- Existing data remains unchanged.
- Tags from Miniflux settings are properly added to the bookmark.
- "To read" status is set to yes when the option is checked in Miniflux. Nothing is changed otherwise.
2024-06-28 20:27:52 -07:00
Wojtek
a46e702536
Add navigation to last/first page
2024-06-28 20:19:38 -07:00
dependabot[bot]
f0e8323f19
build(deps): bump github.com/yuin/goldmark from 1.7.3 to 1.7.4
...
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark ) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/yuin/goldmark/releases )
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.3...v1.7.4 )
---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-25 16:11:25 -07:00
dependabot[bot]
a0106c9ffc
build(deps): bump github.com/yuin/goldmark from 1.7.2 to 1.7.3
...
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark ) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/yuin/goldmark/releases )
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.2...v1.7.3 )
---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-24 20:21:48 -07:00
emv33
f98d5de484
Telegram: add feed name to message
...
39d752c removed a link to the feed name to solve a web preview issue. This change brings back the feed name without the link, thus restoring the feed name without bringing back the issue.
Fixes #2620
2024-06-21 14:23:30 -07:00
JohnnyJayJay
ee5e18ea9f
sanitizer: add support for HTML hidden attribute
...
This commit adjusts the `Sanitize` function to skip tags with the
`hidden` attribute, similar to how it skips blocked tags and their
contents.
2024-06-21 14:00:40 -07:00
dependabot[bot]
3ef2522c62
build(deps): bump docker/build-push-action from 5 to 6
...
Bumps [docker/build-push-action](https://github.com/docker/build-push-action ) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases )
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-17 18:23:26 -07:00
dependabot[bot]
839c4ad044
build(deps): bump github.com/yuin/goldmark from 1.7.1 to 1.7.2
...
Bumps [github.com/yuin/goldmark](https://github.com/yuin/goldmark ) from 1.7.1 to 1.7.2.
- [Release notes](https://github.com/yuin/goldmark/releases )
- [Commits](https://github.com/yuin/goldmark/compare/v1.7.1...v1.7.2 )
---
updated-dependencies:
- dependency-name: github.com/yuin/goldmark
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-14 16:43:20 -07:00
Ztec
9f3a8e7f1b
Request builder: Allow the use of insecure TLS ciphers when Allow self-signed or invalid certificates is used
...
Some server on the wild are badly configured. Either by mistake or lack
of maintenance. Safe and unsafe Ciphers change overtime based on new
discoveries.
This proposition will include considered unsafe ciphers when `Allow self-signed or invalid certificates` is used.
It could be put into a separate option but, I felt this could fit in.
fix #2671
2024-06-13 20:23:37 -07:00
Ztec
e54825bf02
Improve YouTube page feed detection
...
In order to be more resilient to YouTube URLs variation and
to address this feature_request: https://github.com/miniflux/v2/issues/2628
I've reworked a bit the way the YouTube feed extraction is done.
I've kept all the `FindSubscriptionsFromYouTube*` in order
to keep all the existing unit tests as-is ensuring little to no
regressions. By doing so, I had to call twice `youtubeURLIDExtractor`.
Small performance penalty for peace of mind in my opinion.
`youtubeURLIDExtractor` is made in a way only one kind
of page can be detected at a time. This mean I can
solve the "video in a playlist" feature_request
by prioritizing the playlist ID over the Video ID
Also, by using `url.Parse()` to get ids, it's safer
to url mangle and variation. The most common variation
being the `t=42` parameters that start the playback
at a given position. Previously, this kind of url
would not be detected as "YouTube URL".
I deliberately ignored the url parsing error
to keep previous behavior (skip the YouTube analysis and follow with the other analysis)
I also tried to keep debug logs the same as before as much as I could.
I manually tested all the YouTube cases (video,channel,playlist)
and they all work as expected except for the video. But this one
does not work either on main. The `meta` html tag that was searched for
does not seem to exist anymore.
fix : #2628
2024-06-13 20:18:47 -07:00
Ztec
07f6d397d4
Fix Playback speed indicator precision
...
The original idea was to have two digit precision at all time
in order to ensure the length of the string is always the same.
This prevents the UI button to move when pressed.
I completely missed the first press as the precision was not right
upon first click.
2024-06-13 20:13:07 -07:00
Ztec
f33e76eb8c
Fix Playback speed indicator on shared entries
...
On shared entries, there is no speed configured as this
is bound to the user. Shared entries are displayed without user config.
I've changed the default view to reflect the
actual default playback speed in this case. 1x.
2024-06-13 20:11:33 -07:00
dependabot[bot]
84e97826d8
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.33 to 2.20.34
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.33 to 2.20.34.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.33...v2.20.34 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-11 20:24:20 -07:00
x
839fc3843a
Add pitchfork.com scraping rule
2024-06-10 21:08:59 -07:00
x
0bab8fac8e
Update theverge.com rewrite rule: fix duplicate image
...
See: https://github.com/miniflux/v2/issues/1979
2024-06-10 21:08:59 -07:00
dependabot[bot]
0cf1a40276
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.32 to 2.20.33
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.32 to 2.20.33.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.32...v2.20.33 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-09 20:38:34 -07:00
dependabot[bot]
91479bc0ee
build(deps): bump golang.org/x/net from 0.25.0 to 0.26.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.25.0 to 0.26.0.
- [Commits](https://github.com/golang/net/compare/v0.25.0...v0.26.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-04 20:02:27 -07:00
dependabot[bot]
251821289c
build(deps): bump golang.org/x/oauth2 from 0.20.0 to 0.21.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.20.0...v0.21.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-04 19:40:09 -07:00
dependabot[bot]
cac0bc682f
build(deps): bump golang.org/x/crypto from 0.23.0 to 0.24.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.23.0 to 0.24.0.
- [Commits](https://github.com/golang/crypto/compare/v0.23.0...v0.24.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-04 19:39:49 -07:00
dependabot[bot]
a733c14c61
build(deps): bump golang.org/x/term from 0.20.0 to 0.21.0
...
Bumps [golang.org/x/term](https://github.com/golang/term ) from 0.20.0 to 0.21.0.
- [Commits](https://github.com/golang/term/compare/v0.20.0...v0.21.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/term
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-06-04 19:15:01 -07:00
Ankit Pandey
b68b05c64c
reader/processor: error out for improper rewrite regexp
...
It's possible to specify a rewrite regex that validates but doesn't compile such
as:
rewrite("(((unmatched-capture-group"|"rewrite)))")
In case we encounter one, exit early instead of letting the server panic.
2024-06-01 10:37:02 -07:00
Frédéric Guillot
5ce3f24838
googelreader: set CrawlTimeMsec at the correct precision
...
Fixes #2669
Fixes #2670
2024-05-29 21:54:02 -07:00
dependabot[bot]
48ddc02ba8
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.30 to 2.20.32
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.30 to 2.20.32.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.30...v2.20.32 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-27 15:46:53 -07:00
dependabot[bot]
fe9f1bba16
build(deps): bump library/alpine in /packaging/docker/alpine
...
Bumps library/alpine from 3.19 to 3.20.
---
updated-dependencies:
- dependency-name: library/alpine
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-27 15:44:57 -07:00
Krish Mamtora
740fa4a5d2
Add missing properties when reloading page after error
2024-05-27 15:37:53 -07:00
dependabot[bot]
8a38f54ef5
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.25 to 2.20.30
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.25 to 2.20.30.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.25...v2.20.30 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-22 19:16:11 -07:00
Zhizhen He
ae432bc9c6
reader/readingtime: fix incorrect package name
2024-05-21 18:12:24 -07:00
dependabot[bot]
96f7e8bae0
---
...
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-21 17:48:00 -07:00
rootknight
1f35ed1675
ui: add viewport-fit=cover
2024-05-19 10:39:34 -07:00
dependabot[bot]
d6deac1810
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.21 to 2.20.24
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.21 to 2.20.24.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.21...v2.20.24 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-18 08:39:43 -07:00
Frédéric Guillot
b692768730
packaging: fix failed to solve: arm64v8/golang:1.22-bookworm
2024-05-17 21:07:40 -07:00
dependabot[bot]
2178580a75
build(deps): bump golangci/golangci-lint-action from 5 to 6
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 5 to 6.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-13 17:59:04 -07:00
dependabot[bot]
b52f61cc77
build(deps): bump github.com/tdewolff/minify/v2 from 2.20.20 to 2.20.21
...
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify ) from 2.20.20 to 2.20.21.
- [Release notes](https://github.com/tdewolff/minify/releases )
- [Commits](https://github.com/tdewolff/minify/compare/v2.20.20...v2.20.21 )
---
updated-dependencies:
- dependency-name: github.com/tdewolff/minify/v2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-13 17:58:41 -07:00
dependabot[bot]
3388f8e376
Bump github.com/prometheus/client_golang from 1.19.0 to 1.19.1
...
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang ) from 1.19.0 to 1.19.1.
- [Release notes](https://github.com/prometheus/client_golang/releases )
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md )
- [Commits](https://github.com/prometheus/client_golang/compare/v1.19.0...v1.19.1 )
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-09 21:37:53 -07:00
dependabot[bot]
83ceb20c1c
Bump golang.org/x/net from 0.24.0 to 0.25.0
...
Bumps [golang.org/x/net](https://github.com/golang/net ) from 0.24.0 to 0.25.0.
- [Commits](https://github.com/golang/net/compare/v0.24.0...v0.25.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-06 16:45:02 -07:00
dependabot[bot]
c06850ca34
Bump golang.org/x/oauth2 from 0.19.0 to 0.20.0
...
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2 ) from 0.19.0 to 0.20.0.
- [Commits](https://github.com/golang/oauth2/compare/v0.19.0...v0.20.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/oauth2
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-06 16:22:00 -07:00
dependabot[bot]
d856c02fbb
Bump golang.org/x/crypto from 0.22.0 to 0.23.0
...
Bumps [golang.org/x/crypto](https://github.com/golang/crypto ) from 0.22.0 to 0.23.0.
- [Commits](https://github.com/golang/crypto/compare/v0.22.0...v0.23.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-05-06 15:42:12 -07:00
Jan-Lukas Else
a33b1adf13
Add description field to feed settings
...
This adds a new "description" field to the feed settings. This allows to
save custom description regarding a feed. It is also exported and
imported as "description" in OPML.
2024-05-06 15:40:36 -07:00
fin444
a631bd527d
options: add FETCH_NEBULA_WATCH_TIME
2024-05-02 16:30:01 -07:00
Alpha Chen
ca62b0b36b
integration/raindrop: initial draft implementation
2024-05-02 16:23:00 -07:00
Kioubit
7d6a4243c1
Make cookie duration dependent on configuration
...
This ensures that session cookies are not expiring before the session is cleaned up from the database as per CLEANUP_REMOVE_SESSIONS_DAYS.
As of now the usefulness of this configuration option is diminished as extending it has no effect on the actual browser session due to the cookie expiry.
Fixes : #2214
2024-05-01 19:34:13 -07:00
dependabot[bot]
d056aa1f73
Bump github.com/PuerkitoBio/goquery from 1.9.1 to 1.9.2
...
Bumps [github.com/PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery ) from 1.9.1 to 1.9.2.
- [Release notes](https://github.com/PuerkitoBio/goquery/releases )
- [Commits](https://github.com/PuerkitoBio/goquery/compare/v1.9.1...v1.9.2 )
---
updated-dependencies:
- dependency-name: github.com/PuerkitoBio/goquery
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-30 17:23:35 -07:00
dependabot[bot]
018e24404e
Bump golangci/golangci-lint-action from 4 to 5
...
Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action ) from 4 to 5.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases )
- [Commits](https://github.com/golangci/golangci-lint-action/compare/v4...v5 )
---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
2024-04-29 16:51:20 -07:00