Original release notes
This is a security-oriented major release with several important security patches, so users are encouraged to update without delay.
From this release, we are also making it clear that our rolling-release channel (*edge*) is recommended for faster security patches.
Breaking change :
- Disallow access to local networks such as
127.0.0.1by default, for security reasons
Feature highlights:
- Filter global view feed list by state and search
- New option to hide badges showing number of unread articles (*Phantom Obligation*)
- Refresh only feeds in the current view
- Offer to add a prefix when re-sharing user labels
Bug fixes highlights :
- Several security attack scenarios patched
- Fix lost elements while parsing search query
- Fix "mark as read older than..." widening the active search
- Fix saving user queries
- Fix SQL errors breaking some regex searches with MySQL / MariaDB
This release has been made by @Alkarex, @andris155, @ColonelMoutarde, @Frenzie, @IEEE-754, @Inverle, @math-GH, @nykula, @polybjorn, @Stunkymonkey and newcomers @0xdeadrelay, @AdamKorcz, @aligundogar, @bossaarebecca-alt, @Cactys12, @chrislongros, @Divinelink, @Elgeryy1, @featurecreep-cron, @Fripix, @fzlzjerry, @georatas, @gshimo, @iatman ,@ihsanarifr, @jamalkamaladdin, @JamBalaya56562, @jbrayton, @jeremy-code, @juherr, @kobihikri, @LeeXiaolan, @masskrdjn, @mohammadlashkari, @nathanpixodeo, @Otolock, @payaci, @salvador-castro, @SamCyber001, @satyvm, @senti-man, @simitana, @ThomasVermeer, @Totara-thib, @TowyTowy, @utkutibet, @XiaoSong1223
Full changelog:
- Security
- Disallow access to local networks such as
127.0.0.1by default, for security reasons (breaking change) #8400,
- Selected local networks can be allowed under *System configuration* or using the
INTERNAL_HOST_ALLOWLISTenvironment variable - Passing
*allows all networks like before (unsafe) - Improve SSRF mitigations by restricting
CURLOPT_PROXY#8950 - Fix auth CSRFs (login and register actions) #9171
- Log invalid challenge and ignore JSON error during login #9278
- Disallow fetching of non remote URI #9215
- Only allow HTTP/HTTPS schemes for enclosure and thumbnail URLs #9272
- Fix access control in
rssandopmlactions #8912 - Refactor to use CSRF field directly instead of borrowing it from a form #9169, #9205
- Cleaner limit anonymous mode to default user #9235
- Fix HTML ingestions in templates #9146, #9170
- Fix bad header filtering bypass #8964
- Sanitize all fields during JSON import #9168
- Gate
greader(JSON) user query share format behind *Share by OPML* #9248 - Public OPML should not contain cURL parameters #9070
- Ignore security-relevant OPML attributes for dynamic OPML sources #9276
- Strip feed URL credentials from anonymous user query output #9246
- Set limits for regex during search #8913
- Fix path disclosure in cache error message #9206
- Limit the length and parentheses nesting depth of a search query #9277
- Use timing-safe comparison for tokens #8945
- Use
hash_equals()for GReader API token comparison #9183 - Mailer: allow disabling SMTPAutoTLS via config #9026
- Warn during install if document root does not point to
./p/#9010 - Stop the unread-count poller after the session ends #9065
- Add remote IP address to warning on form login #8942
- Pin the GitHub actions using SHA #9200
- Harden cache and SimplePie cache deserialization #9273
- SimplePie
- Security: Disallow
javascript:URI scheme (protocol) #8263 - Fix wrong player parent logic leading to invalid type #8893, simplepie#978
- Consistently enable
XML_OPTION_PARSE_HUGE#8894, simplepie#977 - Fix null warning in IRI for PHP 8.5+ #8918, simplepie#979
- Fix sanitizer whitelist stripping order #9066
- Show only one representation per
media:group#9009 - Bump upstream SimplePie #8947
- Features
- Filter global view feed list by state and search #9132
- Use global view when searching from subscription page #9144
- New option to hide badges showing number of unread articles (*Phantom Obligation*) #8844
- Refresh only feeds in the current view #9060
- Offer to add a prefix when resharing user labels #9236
- Add log search to the logs page #9059
- Add configurable
log_levelsystem setting #9185 - New option to keep or not the custom sort order when navigating between categories and feeds #8969
- New per-feed option to show or hide enclosures (attachments) #9015
- Detect JSON feeds from URLs containing
json#9058 - Also when subscribing via the API #9167
- Order categories during OPML import/export according to position #9203
- OPML: include each feed's refresh interval (TTL) in export/import #8982
- Log failed CSS content retrieval (Web scraping) #9077
- Allow providing a category when adding a feed by bookmarklet #9047
- Add LinkAce sharing service #9024
- Add Nextcloud Bookmarks sharing service #9032
- Bug fixing
- Fix lost elements while parsing search query #8884
- Fix "mark as read older than..." widening the active search #9173
- Fix saving user queries #9190
- Fix SQL errors breaking some regex searches with MySQL / MariaDB #9036
- Fix marking filtered label articles as read in SQLite and PostgreSQL #9264
- Fix tagging an already-tagged entry on PostgreSQL raising a SQL error instead of being a no-op #9136
- PostgreSQL: make committing new entries resilient to duplicate keys #9231
- Preserve negative timezone offsets in date intervals #9071
- Fix feed dropdown bugs due to hash desync #8949
- Fix slider not reinitializing after form submit #8973
- Minz: Skip loading duplicated JS/CSS assets #9000
- Respect
simplepie_syslog_enabledfor the *uses cache* logs #8986 - Fix statistics repartition averages #8996
- Fix article hover date visibility #8997
- Keep search and state filters when marking articles as read #9007
- Fix
--db-prefixsilently drops following CLI flags #9042 - Remove stale dynamic favicon links #9127
- Fix desync between favicon and title unread counters #9262
- Fix outdated username length hint on registration and install forms #9013
- Redirect away from wrong URL paths #9075
- Fix auto-share shortcut on first use #9072
- Exclude hidden feeds from global view counts #9152
- Fix only the last
<media:credit>being written to the RSS output #9174 - CLI
- New
cli/reconfigure-user.phpto read/write per-user config attributes #8873 - Report new articles count per feed in
app/actualize_script.phpoutput #8948 - Output a diagnostic when the
cli/health.phpcheck fails #8980 - API
- Add a warning message to the API password section and a log warning when a client uses GET instead of recommended POST #8845
- Fever API: log the client IP address on authentication failure #8981
- WebSub: ignore HTTP/HTTPS scheme difference in Self URL comparison #9005
- Deployment
- Docker alternative image updated to Alpine 3.24 with PHP 8.5.7 and Apache 2.4.67 #8916
- Start supporting PHP 8.6+
- Docker dev
:newestwith PHP 8.6 #9155 - Docker: attach provenance and SBOM attestations to the published image #9150
- Apache use only
CONN_REMOTE_ADDRin logs whenmod_remoteipis available, for compatibility with LiteSpeed Web Server #8890 - Fix
.dockerignorebeing ignored during build in CI #9001 - New
ENABLE_ACCESS_LOGenvironment variable to disable access logs #9191 - Check GMP during 32-bit installation #9046
- Improve actualize mutex to allow multiple instances #9045
- OIDC: redirect to a default URL on expired auth state instead of 400 #9143
- UI
- Always jump article to top when header is offscreen, also when *Stick the article to the top when opened* is disabled #8870
- Move article header/footer options (feed title, authors and date, icons position, tags) from *Reading* to *Display* configuration #9139
- Move disable button before remove button in user management #8944
- Keep scroll position of slider after form submit #8974
- Group export feeds by category #9079, #9154
- Sort feed names with locale-aware collation #8985
- Sort labels with locale-aware collation #9023
- Format unread counter in title on page load #9263
- Display slider after submit for all buttons in feed update UI #8999
- Improve aside keyboard navigation #9202
- Allows usage of <kbd>Ctrl/Shift</kbd> keys with the open website shortcut #9186
- Fix padding for
.nav_menuin Alternative-Dark, Flat, and Nord themes #8901 - Fix typo in alert error border
colorvariable #9266 - Use JavaScript
Event()constructor instead of deprecatedinitEvent()#9035

