Add native Miniflux account type with API key authentication - #5335
IngmarStein wants to merge 2 commits into
Conversation
Uses Miniflux's native REST API (/v1/*) instead of the Google Reader compatibility layer. Authenticates via X-Auth-Token header. - New AccountType.miniflux (24) with dedicated MinifluxAccountDelegate - MinifluxCaller: full API client for feeds, categories, entries, OPML - Version detection (GET /v1/version) gates /v1/entries/ids for v2.3.2+ with transparent fallback to /v1/entries pagination on older instances - macOS: credential sheet with API URL + API key fields - iOS: credential view controller with same - Asset catalogs: accountMiniflux icon in both Mac and iOS Closes Ranchero-Software#3593 Closes Ranchero-Software#4743
|
I'd love to see this merged, as I've just moved to Miniflux as a back-end for my feeds. |
|
Hey @brentsimmons, is this something you'd consider merging? I know that Miniflux can already be connected as a FreshRSS account, but this PR improves upon that in several ways:
|
|
Yeah, it would be nice to have this instead of having the other API poke at the database. My picoflux fork (which uses SQLite) works with the Reader API, but the native one is quite a bit more efficient, and it shows at the database level. |
|
Hi @IngmarStein — great to see this PR. I owe you an apology for not finding it sooner: I've been building a native Miniflux account type for NetNewsWire in parallel, over on Rather than run two competing PRs, I'd like to team up on a single effort. I feel like one well-tested PR seems like our best shot at getting Miniflux support landed. A few things my branch brings that might be useful to combine:
And I've already adopted two ideas from your PR into my branch — thank you for these:
One thing I deliberately didn't carry over is If you're open to it: take a look at my branch, poke holes in it, and let's jointly propose a merged version as the successor to this PR. Or just tell me to go fly a kite 😉 |
|
@dave-atx looks like you already incorporated the good parts of this PR into your branch. Happy to retire this one in favor of yours - maybe you get more traction! |
|
Sounds great... I opened a thread in the NetNewsWire discourse to discuss there. |
|
Alright. That link doesn't work for me, but there's also https://discourse.netnewswire.com/t/miniflux-support/37 |
|
@IngmarStein you have to be logged in and join the developer subforum, then the link works. |
|
@dewey ah, I was logged in but missed the requirement to join the netnewswire-dev group. Thanks! |
|
Thanks for working on this @IngmarStein ! Would be nice if we can get this consolidated with work I am doing as part of #5399 for freshRSS |
|
@jeankhawand Sure, but I think @dave-atx wanted to take over for Miniflux as soon as @brentsimmons has reached the bug count goal and is ready to accept new features. |
|
Looks like we're getting closer: https://inessential.com/2026/08/26/after-fixin-the-bugs.html |
|
@IngmarStein for sure! I'll do that later this afternoon. |
Adds Miniflux as a first-class account type alongside Feedbin, Feedly,
NewsBlur, and Reader API accounts, on both macOS and iOS.
Refreshes are incremental: the changed_after parameter means read and
starred status ride along with the entries in a single pass instead of
needing separate status scans. Articles missing locally are backfilled by
ID via GET /v1/entries/{id}; a 404 means the entry is gone server-side, so
its statuses are deleted and it is not requested again on every refresh.
Starred changes go out as idempotent batch updates.
Requires Miniflux 2.0.49 or newer. The server version is detected at
runtime via GET /v1/version and persisted in AccountSettings. Servers
older than 2.3.2 have no /v1/entries/ids and no batch starred updates, so
those paths fall back transparently to paged /v1/entries and per-entry
bookmark toggles.
Both HTTP Basic and API-token authentication are supported, selectable in
the account sheet on either platform. Entered URLs are normalized (scheme
added, trailing slash and /v1 suffix stripped), and adding a second
account for a server that already has one is rejected.
Tests cover folder sync, model decoding, version parsing, the pre-2.3.2
fallback paths, and duplicate-endpoint detection, with JSON fixtures for
the API responses.
The runtime version detection and the duplicate-endpoint check were
informed by IngmarStein's independent Miniflux implementation in Ranchero-Software#5335.
Co-Authored-By: Ingmar Stein <490610+IngmarStein@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
PR opened here: #5405 |
Adds Miniflux as a first-class account type alongside Feedbin, Feedly,
NewsBlur, and Reader API accounts, on both macOS and iOS.
Refreshes are incremental: the changed_after parameter means read and
starred status ride along with the entries in a single pass instead of
needing separate status scans. Articles missing locally are backfilled by
ID via GET /v1/entries/{id}; a 404 means the entry is gone server-side, so
its statuses are deleted and it is not requested again on every refresh.
Starred changes go out as idempotent batch updates.
Requires Miniflux 2.0.49 or newer. The server version is detected at
runtime via GET /v1/version and persisted in AccountSettings. Servers
older than 2.3.2 have no /v1/entries/ids and no batch starred updates, so
those paths fall back transparently to paged /v1/entries and per-entry
bookmark toggles.
Both HTTP Basic and API-token authentication are supported, selectable in
the account sheet on either platform. Entered URLs are normalized (scheme
added, trailing slash and /v1 suffix stripped), and adding a second
account for a server that already has one is rejected.
Tests cover folder sync, model decoding, version parsing, the pre-2.3.2
fallback paths, and duplicate-endpoint detection, with JSON fixtures for
the API responses.
The runtime version detection and the duplicate-endpoint check were
informed by IngmarStein's independent Miniflux implementation in Ranchero-Software#5335.
Co-Authored-By: Ingmar Stein <490610+IngmarStein@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds Miniflux as a first-class account type alongside Feedbin, Feedly,
NewsBlur, and Reader API accounts, on both macOS and iOS.
Refreshes are incremental: the changed_after parameter means read and
starred status ride along with the entries in a single pass instead of
needing separate status scans. Articles missing locally are backfilled by
ID via GET /v1/entries/{id}; a 404 means the entry is gone server-side, so
its statuses are deleted and it is not requested again on every refresh.
Starred changes go out as idempotent batch updates.
Requires Miniflux 2.0.49 or newer. The server version is detected at
runtime via GET /v1/version and persisted in AccountSettings. Servers
older than 2.3.2 have no /v1/entries/ids and no batch starred updates, so
those paths fall back transparently to paged /v1/entries and per-entry
bookmark toggles.
Both HTTP Basic and API-token authentication are supported, selectable in
the account sheet on either platform. Entered URLs are normalized (scheme
added, trailing slash and /v1 suffix stripped), and adding a second
account for a server that already has one is rejected.
Tests cover folder sync, model decoding, version parsing, the pre-2.3.2
fallback paths, and duplicate-endpoint detection, with JSON fixtures for
the API responses.
The runtime version detection and the duplicate-endpoint check were
informed by IngmarStein's independent Miniflux implementation in Ranchero-Software#5335.
Co-Authored-By: Ingmar Stein <490610+IngmarStein@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds Miniflux as a first-class account type alongside Feedbin, Feedly,
NewsBlur, and Reader API accounts, on both macOS and iOS.
Refreshes are incremental: the changed_after parameter means read and
starred status ride along with the entries in a single pass instead of
needing separate status scans. Articles missing locally are backfilled by
ID via GET /v1/entries/{id}; a 404 means the entry is gone server-side, so
its statuses are deleted and it is not requested again on every refresh.
Starred changes go out as idempotent batch updates.
Requires Miniflux 2.0.49 or newer. The server version is detected at
runtime via GET /v1/version and persisted in AccountSettings. Servers
older than 2.3.2 have no /v1/entries/ids and no batch starred updates, so
those paths fall back transparently to paged /v1/entries and per-entry
bookmark toggles.
Both HTTP Basic and API-token authentication are supported, selectable in
the account sheet on either platform. Entered URLs are normalized (scheme
added, trailing slash and /v1 suffix stripped), and adding a second
account for a server that already has one is rejected.
Tests cover folder sync, model decoding, version parsing, the pre-2.3.2
fallback paths, and duplicate-endpoint detection, with JSON fixtures for
the API responses.
The runtime version detection and the duplicate-endpoint check were
informed by IngmarStein's independent Miniflux implementation in Ranchero-Software#5335.
Co-Authored-By: Ingmar Stein <490610+IngmarStein@users.noreply.github.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Uses Miniflux's native REST API (/v1/*) instead of the Google Reader compatibility layer. Authenticates via X-Auth-Token header.
Closes #3593
Closes #4743