❌

Lees weergave

FreshRSS 1.30.3

This is a third security release in the continuation of 1.30.x, mostly to address some severe PHP vulnerabilities and update our official default Docker images (Debian) (but not our alternative Alpine images yet, which are delayed).

Note that our rolling-release channel (edge) is recommended for faster security patches.

Bug fixes highlights πŸ›:

This release has been made by @Alkarex, @Inverle and newcomer @Ricardo-Simoes

Full changelog:

  • Deployment
    • Docker default image updated to Debian 13 Trixie with PHP 8.4.27-1~deb13u1 and Apache 2.4.69
  • Extensions
    • New hook: Minz_HookType::AutofillField for auth views #9362
  • I18n
    • Improve Brazilian Portuguese #9473
  • Misc.
    • Translate non-English code comments and identifiers #9383

  •  

v5.59.0

5.59.0 (2026-10-21)

πŸš€ New feature

πŸ”₯ Bug fix

  • correcting linting after Codex review (13c317ddbd)
  • updating the spacing beween the lines (f6aa6e3b96)
  • trying the space in a different way (d6450b12ad)
  • admin: reject role name and description longer than 255 characters (#28002)
  • admin: apply boolean false filters in list view (#27938)
  • admin: custom RBAC conditions in a custom category are discarded (#28020)
  • admin: derive the auth cookie path from admin.url (#27619)
  • admin: reject token name and description longer than 255 characters (#28004)
  • cli: remove the expiration date check (#28076)
  • content-manager: keep list columns when an attribute is renamed (#28036)
  • content-releases: deleting a non-localized entry leaves it in its releases (#28023)
  • content-releases: await release cleanup inside its try/catch (#27893)
  • content-releases: bootstrap fails when the core store has no saved schemas (#28121)
  • core: close remaining clone relation edge cases (#26970)
  • core: fetch requests setting their own content-length fail after loading undici 8 (8b5dea865d)
  • core: https requests through a proxy fail after loading undici 8 (29c762cd0d)
  • core: unhandled rejection when an entry event fails to emit after commit (#28017)
  • core/core: event hub off() and once() remove the wrong listener (#28051)
  • create-strapi-app: next-step cd command misreads folder names that start with - or ~ (31e16d56df)
  • create-strapi-app: bump better-sqlite3 pin to 12.11.1 for Node 26 support (#27759)
  • database: populate relations sequentially inside a transaction (#27644)
  • database: connection function holds a pool connection forever on postgres and mysql (#27979)
  • document-service: publishing an entry linked from a widely reused component takes minutes (#27942)
  • email-nodemailer: decodeRfc2047 ignores the charset of encoded words (#27822)
  • i18n: restore ICU arguments in 68 admin locale strings (#27908)
  • review-workflows: weekly telemetry sends metrics object as numberOfActiveWorkflows (#27866)
  • review-workflows: hide review workflow panel on published tab (#28009)
  • review-workflows: weekly metrics sendMetrics regression tests never run (#28063)
  • upload: honor sharp limitInputPixels config in image manipulation (#27161)
  • upload: rebuild the content manager media field (#27848)
  • upload: add an Add asset menu to the media field (#27856)

πŸ“š Documentation Changes

  • fix three dead relative links (#27719)

βš™οΈ Chore

  • format files with prettier 3.9.9 (#28043)
  • ai: add create-issue skill (#27992)
  • database: upgrade knex from 3.0.1 to 3.3.0 (#27982)
  • deps: bump prettier from 3.6.2 to 3.9.9 (f8ce51ac65)
  • deps: upgrade undici from 6.29.0 to 8.11.2 (bff2ccfc7f)
  • deps: upgrade undici from 8.11.2 to 8.12.1 (a78ad0d6de)
  • deps: bump browserslist from 4.28.8 to 4.28.9 (#27851)
  • deps: bump markdown-it (#28074)
  • docs: contributor docs are excluded from prettier checks (#28062)
  • lint: eslint fails to parse vitest.config.ts in admin/server packages (#28064)
  • lint: extra-policy oxlint perf on the blocking gate (#27671)
  • review-workflows: migrate unit tests from jest to vitest (#27388)
  • review-workflows: stop passing ignored populate to workflow create and update (#27865)
  • types: centralise the window.strapi type in @strapi/types (#26213)
  • upload: enforce the media MCP ambient guard by construction (#27617)

πŸ’… Enhancement

  • database: describe connection pool timeouts (#28000)
  • utils: avoid rebuilding curried traversal wrappers on every call (#27947)
  • utils: remove per-key allocations from the query traversal (#27233)

⚠️ Changes to be aware of

Database driver update (knex 3.3.0)

Custom code that uses strapi.db.connection and calls delete() with limit or having, or truncate() with where, having or limit, now throws on PostgreSQL and SQLite. MySQL now applies the LIMIT. Before, the limit was ignored and every matching row was deleted, so check plugins or scripts that build such queries. Connection pool timeout errors now include the underlying connection error, and knex warnings now appear in the Strapi log as [database] knex: ….

(#27982)

Token and role names are limited to 255 characters

The name and description of API tokens, admin tokens, transfer tokens and admin roles now accept at most 255 characters. Longer values get a validation error under the field. Before, PostgreSQL returned a generic server error. Existing tokens with longer values keep working, but the admin rejects that long text on save until you shorten it.

(#28004) (#28002)

Node.js 22.19 or later is required

Strapi now uses undici 8, which requires Node.js 22.19.0 or later. The engines field still says >=20.0.0, so check your runtime: this release was only tested on Node 22.20 and later.

(#27934)

limitInputPixels must be a number or a boolean

The upload plugin now applies sharp.limitInputPixels. Strapi refuses to start if the value is not true, false or an integer of 0 or more. A value read straight from an environment variable is a string, so use env.int().

(#27161)

Known issue: deleting an entry changes past releases

When you delete an entry that belongs to a release that was already published, the entry is removed from that release, and the release status changes from "done" to "empty" or "ready". The published content is not affected. This already happened for localized entries, and it now happens for all entries.

(#28023)

Known issue: editing webhook headers

In Settings > Webhooks, if you clear the last header row and type a new header name, the old text can stay in front of it (for example X-CX-D instead of X-D). Check the header names before you save.

(#27671)

❀️ Thank You

  •  

9.8.7

  • Mobile: mail login form migrated to the new Vue.js UI.
  • Mobile: added read/unread buttons.
  • Removed the unnecessary confirmation dialog when deleting a message.
  • Added Custom Mail Tags module.
  • Long folder names are now truncated in the Files drawer.
  • Added missing Contacts indexes, which fixes very slow performance.
  • Verified compatibility with PHP 8.4 and 8.5.
  • Extended the log entry format to include the user account, session hash
  • Fixed cross-user arbitrary file access.
  • Fixed the verify-security-key vulnerability.
  • Fixed JS/CSS/HTML injection in calendar events.
  • Mobile: fixed plain-text messages and linked images not being shown in emails.
  • Messages are moved to Trash instead of being removed permanently.
  • Fixed BCC with scheduled messages.
  • Fixed fresh contacts missing from the suggestion list.
  • Fixed the incorrect path when restoring a file from Trash.
  • Fixed creating public links and deleting file shortcuts.
  • Fixed removing the last instance of a recurring event.
  • Fixed the number of repetitions of recurring tasks.
  • Fixed using the calendar with an alias email address.
  • Fixed logging in as superadmin and deleting a user via the admin panel.
  • Fixed tenant admin access to users' data.
  • Users are no longer deleted when their mail server is deleted.
  •  
❌