❌

Normale weergave

v12.5.1

23 Oktober 2026 om 17:31

πŸ› Bug Fixes & Optimizations

  • @directus/app
    • Bumped dependencies for nodejs, dompurify, follow-redirects, ip-address and hono (e4e3a51 by @br41nslug)
  • @directus/api
    • Bumped dependencies for nodejs, dompurify, follow-redirects, ip-address and hono (e4e3a51 by @br41nslug)

πŸ“¦ Published Versions

  • @directus/app@18.1.1
  • @directus/api@40.0.1

  •  

Release 2026.10.23

23 Oktober 2026 om 15:54

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.10.23

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.10.23

Changes

  • fix: don't mark private playlist videos seen in subscription scans (closes #1105) (0f3fc1d)
  • fix: give subscription downloads the playlist/channel output template (closes #1106) (1756269)

  •  

v1.17.1 - Security Updates, Push Onboarding & Mobile Sign-In Fixes

Door: rathlinus
22 Oktober 2026 om 23:51

1.17.1 (2026-10-22)

Security

  • Dependencies: Next.js 16.4.2 and DOMPurify 3.4.17 fix six published advisories, three of them critical. None of them reached Bulwark: the webmail has no use cache functions and no Server Actions, its image optimizer refuses SVG and runs on sharp 0.35.5, which already carries the fix, and the mail sanitizer uses none of the DOMPurify modes the bypasses need (SAFE_FOR_TEMPLATES, IN_PLACE, XHTML parsing). Updating is still recommended

1.17.1 stops the background-notifications prompt from asking you to turn push on while the app is still restoring a subscription the browser dropped, and an open tab now repairs a dropped subscription on its own. The message list stays within the screen on phones, and a browser that was already signed in hands a mobile sign-in to the app again.

Thank you for your donations:

One-time

Monthly

Changes

  • Dependencies: vitest 4.1.12 and vite 8.3.5 (npm audit)

Fixes

  • Push: The background-notifications prompt waits for the background re-sync and only asks if push is still off afterwards, instead of appearing while the app is restoring a subscription Safari dropped (#1321, thanks @oguzyilmaznet)
  • Push: A tab that stays open notices when the browser drops or replaces its push subscription and registers the new one at once, and coming back to the tab recreates a lost subscription instead of waiting for the next reload (#1321)
  • Mobile: On phones, the message list is never wider than the screen, so the header's buttons, each row's date and the subject's ellipsis stay on screen and the selection toolbar compacts its buttons
  • Login: A mobile sign-in opened in a browser that was already signed in keeps the sign-in form and hands the sign-in to the app, instead of opening the mailbox and leaving the app stuck in its sign-in sheet

  •  

v1.10.0

22 Oktober 2026 om 22:43

Notice

VersityGW Security Update: Go crypto/x509 Certificate Distrust
This release updates VersityGW’s Go toolchain to include Go’s fix for CVE-2026-111943 (Go issue 82345). The fix blocks certificate chains containing compromised eMudhra intermediate certificates.

VersityGW uses Go’s certificate verification when connecting to TLS-protected services, including S3-compatible storage, IAM/OIDC providers, Vault, LDAP, and webhooks. Before the fix, a network attacker able to intercept or redirect one of these connections could potentially use a certificate issued through an affected intermediate to impersonate the service. After the update, Go rejects those chains, and connections to endpoints still presenting them may fail until their certificates are replaced.

This fix applies to binaries rebuilt with a patched Go toolchain. Go 1.26.10 and Go 1.27.3 contain the fix; use a later patched release if available. Existing VersityGW binaries must be rebuilt and redeployed. Connections configured to skip certificate verification do not receive this protection. These release artifacts are built with Go 1.27.3.

Action: Upgrade to this VersityGW release and redeploy. If you operate a TLS endpoint that VersityGW connects to, confirm its certificate chain does not use a distrusted intermediate.

Changelog

  • 5fd3386 chore(deps): bump github/codeql-action from 4.38.2 to 4.38.3
  • 53fdd1b chore(deps): bump github/codeql-action from 4.38.3 to 4.39.0
  • 2bece2f chore(deps): bump the dev-dependencies group with 38 updates
  • 626ec9a chore(deps): bump the dev-dependencies group with 8 updates
  • 9503489 docs(helm): note tpl caveats for extraObjects
  • 1f7e6dd feat(helm): add extraObjects for additional manifests
  • a987fb2 feat: run functional tests on FreeBSD in CI
  • 1207dd1 fix(posix): make the listing skip-directory list configurable
  • c07ffdc fix(webui): send the LocationConstraint when creating a bucket outside us-east-1
  • 7662573 fix: accept HTTP dates for LastModifiedTime in DeleteObjects
  • 9debca3 fix: echo the client ETag in InvalidPart errors and stop duplicating request ID headers
  • a7b91dd fix: honor encoding-type=url in ListObjects and ListObjectsV2
  • 416acd3 fix: keep object keys literal under fiber v3.6 path normalization
  • 5d5ece2 fix: keep the version id and delete marker in s3 backend GetObjectAttributes
  • e63998f fix: log the client IP from a trusted proxy header
  • e92ad0b fix: map quota and no-space errors when creating the multipart upload directory
  • 7edbd62 fix: only look up the parts count when ObjectParts is requested
  • 4a9748b fix: prevent OOM kills of FreeBSD functional tests in CI
  • a664004 fix: race between object uploads and deletes on shared parent directories
  • 5616f38 fix: reject posix object keys that resolve into the .sgwtmp staging directory
  • 3715b38 fix: return NoSuchUpload for malformed upload IDs ahead of access and request checks
  • f88fe63 fix: return the parts count in GetObjectAttributes for multipart objects
  • 112e50c fix: serialize concurrent CompleteMultipartUpload claims under the publish lock
  • b4f02dc fix: set the gateway region on the standalone admin server
  • f513678 fix: skip excluded directories and reserve their keys
  • 81e287f fix: update staticcheck CI with Go 1.27.2 support

  •  

v0.21.1

Door: henrygd
22 Oktober 2026 om 19:24

What's Changed

For developers using the agent as a Go package, Agent.Start now requires a context.Context.

For authors of integrations, existing memory fields other than memory percentage are deprecated in favor of new fields which provide raw byte values. The deprecated fields are still populated, but will be removed from the API in a future version.

type Stats struct {
  // Deprecated fields (populated on hubs <= 0.21.1; will be removed in a future version)
	Mem            float64     `json:"m" cbor:"2,keyasint"`  // Deprecated: GB, use MemBytes. Memory GB fields are kept for older hubs and integrations.
	MaxMem         float64     `json:"mm,omitzero" cbor:"-"` // Deprecated: GB, use MaxMemBytes.
	MemUsed        float64     `json:"mu" cbor:"3,keyasint"` // Deprecated: GB, use MemBytes.
	MemBuffCache   float64     `json:"mb" cbor:"5,keyasint"` // Deprecated: GB, use MemBytes.
	MemZfsArc      float64     `json:"mz,omitzero" cbor:"6,keyasint,omitempty"` // Deprecated: GB, use MemBytes.
	Swap           float64     `json:"s,omitzero" cbor:"7,keyasint,omitempty"`  // Deprecated: GB, use SwapBytes.
	SwapUsed       float64     `json:"su,omitzero" cbor:"8,keyasint,omitempty"` // Deprecated: GB, use SwapBytes.
  // New fields (populated on hub version 0.21.1+ for all agents)
	MemBytes       [4]uint64   `json:"mem,omitzero" cbor:"41,keyasint,omitzero"`  // [total, used, buff/cache, zfs arc] bytes
	MaxMemBytes    uint64      `json:"memm,omitzero" cbor:"-"`                    // max used memory bytes
	SwapBytes      [2]uint64   `json:"swap,omitzero" cbor:"42,keyasint,omitzero"` // [total, used] bytes
}
  • Add TLS certificate expiry alert for network monitors (#2627)
  • Add opt-in cgroup CPU and memory accounting (#2505)
  • Add pagination with a shared rows-per-page setting to data tables (#2444)
  • Add IRQ, SoftIRQ and Nice to the CPU usage breakdown (#2647)
  • Add OAUTH_DEFAULT_USER_ROLE environment variable to set the role of new OAuth users (#2516)
  • Add HUB_HEADERS environment variable to set custom WebSocket headers on the agent (#2585)
  • Add option to ignore TLS errors for HTTPS monitors (#2500)
  • Add zpool status messages to ZFS pool health (#2509)
  • Add CPU socket count to the system page (#2646)
  • Add CONTAINER_NAME_LABEL environment variable to name containers from a label (#2644)
  • Add env and envFrom options to the Helm chart (#2626)
  • Add Brazilian Portuguese (pt-BR) and Catalan translations (#2635)
  • Add xbps support to package update checks (#2522)
  • Change agent tokens to be masked until explicitly revealed (#2625)
  • Change the user created from USER_EMAIL to be an admin (#2516)
  • Fix users being able to reassign record ownership through updates (#2632)
  • Fix dashboard universal tokens appearing in request URLs (#2630)
  • Fix fan sensor reads blocking collection indefinitely (#2638, #2639)
  • Fix HTTPS monitor certificates not being re-checked (now hourly) (#2673)
  • Fix scheduled monitor probes running while the hub isn't requesting stats
  • Fix sensor names being changed by exclude filters (#2645)
  • Fix Libre Hardware Monitor helper stopping after sensor failures (#2624)
  • Fix arm/v6 Docker images being built with the wrong GOARM setting (#2637)
  • Fix numbers not using the app language for formatting (#2621)
  • Fix systems table showing no loading spinner until systems are loaded
  • Fix btrfs pool health when sysfs device info is unavailable (#2489)
  • Fix ZFS pool capacity to use the root dataset (#2540)
  • Fix package update checks under the systemd sandbox (#2538)
  • Fix systemd service logs missing output from services running as a non-system user (#2553)
  • Fix systemd monitoring starting when systemd is not available on D-Bus (#2573)
  • Fix hub dropping slow agent connections between polls (#2435)
  • Fix hub keeping connections open to unresponsive agents
  • Fix agent reconnect and shutdown handling (#2464)
  • Fix network counter underflow when interfaces are removed or containers restart (#2574)
  • Fix host CPU usage after a counter rollback
  • Fix larger stored stats records caused by zero-value fields
  • Fix legacy hubs receiving a duplicate stats payload (#2529)
  • Fix NVIDIA GPU power when power usage is unsupported by falling back to NVML power samples (#2550)
  • Fix zero GPU package power being stored (#2551)
  • Fix intel_gpu_top parsing when samples are missing commas (#2589)
  • Fix NVMe unsafe shutdowns counter overflowing (#2583)
  • Fix NVMe namespace fallbacks being lost on rescan (#2597)
  • Fix handling of cached NVMe failures and empty SMART responses
  • Fix zypper's apt-get wrapper being detected as apt (#2523)
  • Fix updater stopping when the system record lookup fails (#2588)
  • Fix systems table losing the update count when a host is down (#2559)
  • Fix latency tolerance in 1m realtime charts (#2521)
  • Fix charts hiding isolated points and spinning endlessly on empty values (#2514)
  • Fix live metrics subscriptions not ending after leaving the 1m view (#2599)
  • Fix sorting of monitor targets without a URL scheme and show HTTPS in the badge (#2501)
  • Fix lazy loading of the systemd table (#2602)
  • Fix system dialog layout shifting between tabs (#2571)
  • Improve accessibility and fix login page translation (#2604)
  • Update Go to 1.27.2 and Go dependencies
  • Update npm packages with security alerts (#2575)

New Contributors

Full Changelog: v0.21.0...v0.21.1

  •  

Release 2026.10.22

22 Oktober 2026 om 02:19

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.10.22

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.10.22

Changes

  • upgrade yt-dlp from 2026.8.19 to 2026.10.21 (f794c99)

  •  

v1.17.0 - Plugin Panels, Selection Menus & Reworked Admin Panel

Door: rathlinus
21 Oktober 2026 om 23:50

1.17.0 (2026-10-21)

1.17.0 gives plugins real panels: a panel next to the message you write or read can fill its height, start folded, be opened by the plugin, and be dragged wider, and plugins get right-click menus on selected text in the composer and in a message. Plugins can also search mail and the settings, read the user's preferences and the app's version. The AI Writing Assistant in the marketplace builds on this and needs this release. The reader's side panel stays open from message to message, and the admin panel is reworked around a settings-style sidebar with one URL per page. The Docker images move to Node.js 24.22.1 for a Node.js security fix.

Thank you for your donations:

One-time

Monthly

Security

  • Server: The Docker images are built on Node.js 24.22.1, which fixes an out-of-bounds write in the Brotli decoder (CVE-2026-111497). The server decodes Brotli responses when it fetches a calendar subscription, a WebDAV share or a plugin request, so a signed-in user could point it at a host that sends a crafted response and run code on the server. The same Node.js release fixes TLS hostname checks for servers addressed by IP. Standalone installs run on the system's Node.js: update it to 22.23.4, 24.22.1 or 26.12.1

Features

  • Plugins: A panel slot (composer-sidebar, composer-sidebar-right, email-detail-sidebar) can fill its panel and scroll inside (fill), start folded until the user or the plugin opens it (startFolded), and be opened, closed and toggled by the plugin with api.ui.openPanel, closePanel and togglePanel, which answer null where no panel is on screen (phones), so a plugin can fall back to a dialog. A panel opened this way gets a focusRequest prop
  • Plugins: The composer's plugin panels get the composer id, the draft and the selected text as it changes; the reader's side panel gets the selected text; reader frames learn whether they are on a phone, a tablet or a desktop (deviceType)
  • Plugins: Right-click menus on selected text: composer-selection-menu in the message being written and reader-selection-menu in an open message. The browser's own menu stays until a plugin adds entries; the webmail then draws Cut and Copy and the plugin's entries, and the click carries the selected text
  • Plugins: Text selected inside a message's body (an HTML mail in its frame) now reaches onTextSelectionChange
  • Plugins: Plugins can search mail with api.email.search, search the settings and read the user's preferences, and read the app's name and version with api.app.getInfo
  • Mail: The reader's side panel stays open when you move to another message, and its toggle sits in the reader toolbar, which now runs over the side panels to the right edge
  • Composer: The plugin panels beside the composer can be dragged wider or narrower, and keep their width
  • Admin: The admin panel is reworked around a settings-style sidebar with one URL per page, the real navigation rail and extension icons

Fixes

  • Mail: Rescheduling a scheduled message cancels the original send before creating the new one, so it works on servers that allow one active submission per message (#1308)
  • Mail: Dragging messages out of the list and downloading attachments, inline images and the raw message in the Pro view use the account that owns the message, so shared and secondary-account messages no longer fail (#1299, #1300, thanks @VasilisNtovolos)
  • Mail: Deleting a message from its hover actions shows the actions on the next row that slides under the pointer, so you can delete one after another from the same spot (#1297, thanks @dealerweb)
  • Mail: PDF attachment previews open in Safari (#1301)
  • Mail: The contact card for a sender or recipient opens in place instead of sliding in from the top left
  • Plugins: A plugin's passphrase dialog stays open while you type (#1302)
  • Plugins: The push preference mirror no longer throws in sandboxed plugin frames (#1298, thanks @dealerweb)
  • Layout: A pane divider stops following the mouse when the button is released over a frame
  • i18n: The German dialog that hands a sign-in to the mobile app is translated (#1296, thanks @dealerweb)

  •  

FreshRSS 1.30.4

Door: Alkarex
21 Oktober 2026 om 22:45

This is a fourth security release in the continuation of 1.30.x, mostly to address some severe PHP vulnerabilities and update our official alternative Docker images (Alpine) (our default Docker images based on Debian were already fixed).

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

Bug fixes highlights πŸ›:

This release has been made by @Alkarex, @Frenzie and newcomer @icco

Full changelog:

  • Security
    • Docker alternative image (Alpine 3.24) updated with PHP 8.5.12 and Apache 2.4.69 #9475
    • Docker: disable PHP session.upload_progress.enabled for additional security #9476
  • I18n

  •  

v2.17.0

21 Oktober 2026 om 19:36

Note

This release adds native Podman support, hostname configuration, and a delay option for new image auto-updates. It also improves performance and hardens Docker operations, projects, backups, and authentication.

Features

Docker, images, and projects

Reliability, security, and backups

UI, templates, and integrations

Performance and internal improvements

  •  

FreshRSS 1.30.3

Door: Alkarex
21 Oktober 2026 om 16:30

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

21 Oktober 2026 om 11:47

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

21 Oktober 2026 om 12:10
  • 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.
  •  

Release 2026.10.20

20 Oktober 2026 om 18:54

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.10.20

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.10.20

Changes

  • build: upgrade Python and frontend dependencies (f651a95)
  • build: drop the duplicate deno.land install; yt-dlp[deno] already ships it (6a2810a)
  • Address review: build connect payload on the loop, drop import batching (5be4c2a)
  • Fix socket.io connect ACK delayed by get_custom_dirs() (b35fbb7)
  • Fix socket.io connect handler blocking the event loop (680ed6d)

  •  

BookStack v26.09.2

20 Oktober 2026 om 13:48

Security Release

This is a security release to address the following vulnerabilities:

  • Comments of deleted pages could remain visible to API users while the page remained in the recycle bin.
  • Attachments of pages could be modified by others (that have attachment update/delete permissions), while that page remained in draft status.

This update also includes various security improvements, which can be found listed below.

Updating is generally advised, but more so if either of the above two scenarios is a concern for your instance.

A big thanks to the following researchers for responsibly reporting vulnerabilities and security considerations, which were addressed in this release:

  • Huzaifa Dal (GitHub, LinkedIn)
  • Nicol (cqliuke)
  • Semilore Osofisan (of Seneca Polytechnic, reporting as part of their WAS705 application security project)
  • VG
  • Xora (Website)

Full List of Changes

  • Updated user password change to also drop any remember-me cookies to limit existing session use.
  • Updated ZIP import validation to check total uncompressed sizes to help limit denial of service attacks.
  • Updated SAML2 routes to prevent nuisance cross-site requests causing logouts.
  • Updated PHP package versions.
  • Fixed comments incorrectly showing in the API when their related pages are in the recycle bin.
  • Fixed the permissions checked for attachment actions to consider draft status of the related page.

  •  

FreshRSS 1.30.2

Door: Alkarex
19 Oktober 2026 om 22:57

This is a second security and bug-fixing release in the continuation of 1.30.x.

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

Bug fixes highlights πŸ›:

  • Fix PHP 8.5+ deprecation warning with SQLite
  • Block data: URI scheme in some cases

Performance highlights 🏎️:

  • Reduce memory consumption of export

This release has been made by @Alkarex, @Inverle and newcomers @abp002, @Arslan-TR, @Emredinho61, @HawkForge, @lordmarrik, @spa77k, @tomac4t, @tpq2030

Full changelog:

  • Security
    • SimplePie sanitizer: block data: URI scheme while keeping data:image for images #9417
    • Mitigate some 404 situations #9435
    • Do not log the Fever API key on authentication failure #9468
    • Fix local DNS leak when fetching feeds through a proxy #9451
  • Bug fixes
    • WebSub fix POST, fix warning, better message #9420
    • Fix PHP 8.5+ deprecation of sqliteCreateFunction for SQLite #9421
    • Preserve explicit sort overrides when searching #9467
    • Fix wrong order of args in extension compatibility check #9445
  • Performance
    • Reduce memory consumption of export #9350
  • Features
    • Better doc and log proxy cases #9436
  • Extensions
  • UI
    • Disallow user page navigation while refreshing feeds #9446
    • Various UI and style improvements #9426, #9441
  • I18n
  • Misc.
    • Update to GT\CssXPath 1.6.0 #9411
    • CI/CD: Fix login to Docker Hub #9433
    • Fix SVGO zero percent filtering in CI #9422
    • Update dev dependencies #9425

  •  

v1.16.0 - Simpler Settings, @Mention Chips & Marketplace Rollback

Door: rathlinus
19 Oktober 2026 om 21:32

1.16.0 (2026-10-19)

1.16.0 regroups the settings into fewer pages with an Advanced switch for the power-user options, shows the message list as columns on request, turns @mentions into contact chips, and opens the company directory in contacts and the composer. The marketplace can install any version of an extension and roll back to a replaced one, admins get policies for the colour mode, archiving and the provider sign-out, and the Estonian locale arrives. A security audit of the whole app fixed cross-account actions on repeated message ids and about thirty smaller findings.

Thank you for your donations:

One-time

Monthly

Security

  • Mail: Delete, move and drag in merged views and cross-account search act on the clicked message. When two accounts had messages with the same id, the action could hit the other account's message, which also made sent mail vanish from the Sent folder (#857, GHSA-8x23-qw3w-mhrx, thanks @FeliceBalsamo and @knittingcode)
  • Mail: HTML attachments preview as sanitised text in a locked frame. The preview used to open the sender's HTML as a same-origin document that could run script in the webmail origin
  • Mail: A crafted style attribute, read-receipt header, mail body or subject no longer freezes the reader or the message list
  • Mail: Only an SPF or DKIM pass aligned with the From domain counts as sender verification, and oversized winmail.dat and embedded message parts stay attachments instead of being decoded on open
  • Mail: Attachment names show without directional override characters, and imported and synced HTML templates are sanitised before the composer previews them
  • Login: The login page asks before handing a sign-in to the mobile app, and only hands it to the app's own callback link
  • Login: Failed sign-ins are capped per client at 5 in 15 minutes, and the client address is forwarded to the mail server as X-Forwarded-For so the server's own limits hit the client instead of the webmail. Add the webmail to Stalwart's server.proxy.trusted-networks for that to take effect
  • Login: Synced settings are keyed on the account a token login resolves to, not on the claimed name, so two users can no longer share a settings blob
  • Admin: OAuth client secrets and the session secret stay out of the admin audit log, the config API and dashboard writes
  • Admin: OAuth discovery no longer follows a redirect to another host, the extension directory URL cannot point at a private address, a directory keyring older than the newest one seen is refused, marketplace versions are validated and a silent downgrade on update is refused, and the installer writes its env file readable by its owner only
  • Plugins: Plugin POSTs stay off the plugin proxy, secrets, agenda, ical and translate routes, only a plugin known to the server can connect and use credentials, plugin-authored HTML drops remote images, and a plugin frame that navigated to another document gets no more host messages
  • Server: TLS responses carry HSTS and the X-Powered-By header is gone. Upstream mail server requests get a deadline, CalDAV discovery probes and concurrent favicon fetches are bounded, and calendar feeds, synced settings blobs and the settings route have size caps

Features

  • Settings: The settings are regrouped into Account, Security, Notifications, General and Appearance, the mail pages Message list, Reading, Composing, Folders & tags, Filters and Out of office, then Calendar, Contacts, Files and Add-ons with the plugin pages under it, and Backup & reset. Every page has a jump row to its sections, settings links can name a section, and old settings links keep working
  • Settings: An Advanced switch hides power-user settings until turned on. Search results and section links that point at a hidden setting turn it on
  • Settings: Themes show as one row with a Show all button, and the settings search box looks like the mail search box
  • UI: The message list can show as columns with one-line conversation rows (#262, thanks @fdisamuel)
  • Composer: Typing @ offers contacts and adds the picked one as a recipient. Mentions become chips with a contact card on hover, in the composer and in received mail
  • Contacts: The company directory can be browsed in contacts and the composer (#1253, thanks @diegonix)
  • Mail: "Remove from this folder" takes a message out of just the open folder when it is in several (#615, thanks @arnauda-gh)
  • Mail: n jumps to the next unread message (#514, thanks @muelli)
  • Mail: Shift+arrow keys extend the selection (#992, thanks @IntExCZ), and while selecting, a click anywhere on a row ticks it (#1014, thanks @mmomjian)
  • Mail: Search results from all folders show the folder (#1172, thanks @PoltoS)
  • Mail: Your own folders are listed in a separate section of the sidebar (#1205, thanks @roedy-dev)
  • Mail: The counter can be set per folder, e.g. keep the Drafts count with totals off (#982, thanks @mbjboon-netizen)
  • Mail: The account dot in the unified view can be hidden (#912, thanks @mmomjian)
  • Mail: Sender icons are refreshed when they changed on the sender's website (#960, thanks @IntExCZ)
  • Composer: Message priority can be set in the composer (#970, thanks @douwezijlstra-frl)
  • Composer: Templates get numeric date, day, month and year placeholders (#1284, thanks @Yahatix)
  • Accounts: When the admin turns on "Account List Backup: Passwords", saving the account list offers to include the passwords of accounts signed in with a plain password, encrypted in the browser. Restoring signs those accounts in in the background (#1247, thanks @lucamzanon)
  • Admin: The theme policy can set and lock the colour mode (#1280, thanks @chodid)
  • Admin: A configured logout URL ends the provider session for providers whose discovery has no end_session_endpoint (#1279, thanks @chodid)
  • Admin: A policy gate turns archiving off (#1257, #1258, thanks @HOLOEYE-JZ)
  • Admin: The admin panel asks before leaving with unsaved changes (#1255, thanks @passibe15)
  • Admin: The version is hidden from the connector probe when the login page hides it (#896, thanks @x86dev)
  • Marketplace: Any version of an extension can be installed. The detail page lists every version, previews the picked one and warns about withdrawn versions, advisories, deprecations and suspensions, the listing can be sorted and filtered to installed extensions with an updates strip, and an install link can name the version to offer
  • Marketplace: Replaced plugin and theme versions are kept and can be rolled back to
  • Plugins: The UI kit gets a Combobox (#1251, thanks @tobiasge)
  • Translations: Estonian is a new locale, including the company directory and the strings added since (#1254, thanks @raudraido)
  • Demo: The demo follows one persona with a work account, a personal account and a shared Support mailbox, with real headers, an invitation, mentions, tags, templates and files

Changes

  • Marketplace: The marketplace talks to the extension directory's v2 API only. A self-hosted directory older than 2026-10-14 no longer works with it
  • Plugins: A user credential now exists only for a registry plugin or an admin-approved upload whose manifest declares it. Approvals made before this version need a fresh approval request before the plugin can use credentials
  • UI: The whole app uses the theme's sans font (#1278, thanks @chodid)
  • UI: The app switcher uses simpler calendar, contacts and files icons, and the calendar, contacts, files and settings sidebar headers have the mail header's height
  • Performance: Starting a search no longer re-renders every row

Fixes

  • Mail: Push notifications can be enabled for an account with access to a shared folder (#1050, thanks @magnetic6)
  • Mail: The list shows the mail's own date and keeps it on .eml import (#891, thanks @johnnyq)
  • Mail: PGP and S/MIME messages inside conversations are decrypted (#902, thanks @rajil)
  • Mail: Attachments preview in the installed app instead of opening a blank window (#865, thanks @navidrast)
  • Mail: Message previews drop plain-text emphasis markers (#1260, thanks @mmomjian)
  • Mail: Today's and yesterday's mail are told apart by the time zone setting in the list and the sender line (#1259, #1262, thanks @mmomjian and @balabommablock-cpu)
  • Mail: The category tab filter is kept when the mailbox refreshes, and the whole folder comes back after a restart when a category tab was open (#1264, #1265, thanks @alyyousuf7)
  • Mail: Shared folders from other servers are kept when they reuse an account id, and a shared folder reachable through two logins is listed once in cross views (#1108, thanks @hildebrandttk)
  • Mail: Renaming a tag follows it into the filter rules that name it, and keeps vacation forwarding and plugin vetoes while doing so (#854, thanks @dev-hive-kazniisa)
  • Mail: Bulk archive across accounts is routed by the owning account, and Archive is only created where the account allows it (#1178, thanks @VasilisNtovolos)
  • Mail: Conversation blobs are fetched from the message they belong to, and file previews stay open in development Strict Mode (#1287, #1288, thanks @VasilisNtovolos)
  • Mail: A shared conversation is marked read on the owner account, and the mark-as-read delay is followed when expanding a conversation or opening a Pro folder row (#1272, thanks @Peterka35)
  • Mail: The reader's Move, Tag and Rules flyouts open on the side with room (#1261, thanks @beja19)
  • Mail: Vacation filter rules are skipped on shared accounts without Sieve (#1263, thanks @somus)
  • Mail: Nextcloud filter markers inside rule text are ignored
  • Composer: A reply to a message from another connected account is sent from that account to the right recipient (#703, #1270, thanks @jesperordrup and @vixh)
  • Composer: Replies whose From is picked after the composer opens are signed (#842, thanks @mmomjian)
  • Composer: A contact group whose member is not an address is no longer sent (#795, thanks @brambuijs)
  • Composer: Your own address stays out of reply-all before your identities have loaded (#803, thanks @lucletoffe)
  • Composer: Sent mail keeps blank lines instead of collapsing them (#1015, thanks @mbjboon-netizen)
  • Composer: Inline images in replies and forwards are attached once (#1125, thanks @guisea)
  • Composer: The quote containment styles stay in the editor and out of the sent mail, and a quoted original can no longer paint over the composer
  • Composer: The composer opens when the mail client can't report directory support
  • Composer: A click on a mention chip opens the contact card instead of the mailto handler in Firefox
  • Calendar: Zero-length events end at their start instead of midnight (#837, thanks @Flying-Bas)
  • Calendar: Invitation times show in your time zone (#1252, thanks @TomekCodeWave)
  • Calendar: Answering an invite sent to a non-primary identity works (#1283, thanks @taranasus)
  • Calendar: The visible range is refetched after creating a recurring event (#1268, thanks @sanitz)
  • Calendar: Month view day columns align with the header (#1286, thanks @tobiasge)
  • Tasks: An all-day task's due and start are sent as a LocalDateTime (#1256, thanks @sanitz)
  • Notifications: Push notifications stay silent when the notification sound is off (#1289, thanks @chreds)
  • Admin: The admin panel loads when the config is read-only, policy defaults are applied to user settings, and OAuth auto-setup is refused before touching Stalwart when the config is read-only (#1248, #1249, #1250, thanks @chodid)
  • Accounts: Restored sign-ins are remembered only when the restoring account is remembered, and contact and calendar data that arrives after switching accounts is dropped instead of landing in the other account
  • Plugins: api.email.get reads a listed message of a shared account and no longer reads mail of other connected logins (#1273, #1274, thanks @alyyousuf7)
  • Plugins: A plugin slot's callbacks keep working when its props change while it loads (#1266, thanks @dedoitalia)
  • Plugins: Plugin dropdown messages are checked before the host draws them
  • Lite: Demo portraits load from the mount prefix so a bundle under a subpath stays self-contained, and the dev server stays inside its export directory
  • Translations: German strings that still showed in English (#1285, thanks @dealerweb), contact field types and more French strings

  •  

Release 2026.10.19

19 Oktober 2026 om 19:42

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.10.19

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.10.19

Changes

  • fix: stop yt-dlp from writing its default templates into YTDL_OPTIONS (cd1368b)
  • test: let the queued-download test finish before its state dir is removed (920d4e4)
  • test: run the ytdl helper tests against the real yt-dlp (04fa578)
  • build: drop mutagen and curl-cffi as direct dependencies (d79d2dc)
  • ci: run the compile check with the project's Python (9cc7759)
  • ci: name yt-dlp by package in the nightly lock upgrade (c43e65e)
  • fix: stop binding with SO_REUSEPORT, so a second instance cannot share the port (e18d026)
  • fix: treat a blank YTDL_OPTIONS or YTDL_OPTIONS_PRESETS as unset (8bfd8a4)
  • fix: sanitize extracted entries for the JSON state store, not for pickle (a7fd304)
  • refactor(ui): fetch the version with a relative URL like every other call (24f003c)
  • refactor(ui): use the shared actionError in the Subscriptions section (6755bc4)
  • refactor(ui): drop the customDirsChanged subject nobody listened to (cffd819)
  • fix: list custom folders relative to the base, and cache them plainly (9c5424e)
  • refactor(ui): move the Completed section into its own component (d768e85)
  • chore: anchor the runtime-state ignore patterns to the repo root (0e7b7b2)
  • refactor(ui): move the Downloading section into its own component (713943a)
  • refactor(ui): move batch import into a modal component of its own (8257431)
  • refactor(ui): move the Subscriptions section into its own component (a486af9)
  • refactor: one locked save-with-rollback helper for subscription changes (7bcef57)
  • refactor: backfill old DownloadInfo records from one table of defaults (3e25760)
  • fix: keep cancellations made during a playlist add when other adds overlap (733ff1c)
  • refactor: carry a download's options as one DownloadOptions value (bd01f1f)
  • fix(ui): keep form settings in localStorage instead of cookies (eff4646)
  • fix(ui): send Retry failed a few requests at a time (8f84801)
  • refactor: store validated integer settings as ints (8e6a198)
  • fix: load completed records without running them through the format mapping (c13e922)
  • fix: merge user outtmpl and paths into MeTube's instead of replacing them (27244ac)
  • fix: record a download that fails to start as failed instead of stranding it (1b3f546)
  • fix(ui): accept shared links that arrive without a text parameter (effa7d6)
  • refactor(ui): handle queue and done changes in one subscription each (4b0abf9)
  • fix(ui): stop the number fields from swallowing Enter and shortcuts (4476930)
  • fix(ui): render cookie, version and copy results under OnPush (80f0135)
  • fix: check CUSTOM_DIRS_EXCLUDE_REGEX, LOGLEVEL and DEFAULT_THEME at startup (b15d2c0)
  • fix: keep SponsorBlock, audio tags and video password on failed-add records (dfb6b28)
  • fix: validate the boolean, numeric and string fields of /add and /subscribe (2c32347)
  • fix: keep reloading YTDL_OPTIONS_FILE after the file is replaced (6014508)

  •  

Part-DB 2.20.2

Door: jbtronics
18 Oktober 2026 om 14:28

Tip

If you like Part-DB, consider donating to support the development. Press the sponsor button on the main github page, for more info.

Note

If you are using Part-DB it would be helpful if you fill out this short survey on your usage of Part-DB (Google Forms): https://forms.gle/Q15twx3YYq3qCNfe8

Part-DB 2.20.2

New features / Improvements

  • Added form to directly create parts from info providers using a known ID (#1605)
  • Allow to paste files from clipboard into the URL field of attachments to upload them
  • Allow to create new attachments from an image in the clipboard
  • Added an "Export as CSV (formula escaped)" mode to avoid formula injection when importing CSVs into excels

Bug fixes

  • Fix BOM CSV Export (#1598)
  • Made expanded navbar scroll on mobile view (#1570)
  • Fixed problems of hotkeys interfering with global barcode scanning
  • Show a proper error when trying to create a part from info provider and it fails (#1565)
  • Fixed behavior of "Only single part" constraint of storage locations (#1568)
  • Fixed loading behavior of part tables, when a non-50 items per page were selected (#1494)
  • Fixed resolving last editing user for parts, when the only change was in attachment, supplier infos, etc. (#1561)

Other changes

  • Updated translations
  • Updated dependencies

Full Changelog: v2.20.1...v2.20.2

  •  

v1.15.0 - Plugins Everywhere, Faster Folders & Default Reminders

Door: rathlinus
16 Oktober 2026 om 00:19

1.15.0 (2026-10-15)

1.15.0 opens the plugin system up: plugins can add UI in most places of the app, hear and stop most actions, and use accounts and API keys through the server without seeing them, and users can install their own plugins once an admin has reviewed the code. Opening folders and messages is faster, with far fewer re-renders and requests. Calendars get default reminders, notifications can be muted per folder or account, and every sign-in is now remembered unless the admin shows the Remember me box.

Thank you for your donations:

One-time

  • Anonymous
  • Anonymous
  • Anonymous

Monthly

Features

  • Notifications: Folders and whole accounts can be muted from the folder context menu. A muted folder or account sends no push notifications and shows a muted mark in the sidebar (#1169, thanks @xnilsit)
  • Calendar: Each calendar has default reminders, set in calendar management. New events start on them, an event that switches back to the defaults picks up the current ones, and the event popover lists every reminder (#1209, thanks @rich0)
  • Calendar: Each reminder can be a notification or an email (#1209, thanks @rich0)
  • Accounts: Shared mail accounts can be hidden from the sidebar, from their context menu or under Settings > Layout (#1228, thanks @chodid)
  • Mail: The prompt before deleting several messages can be turned off (#1225, thanks @mmomjian)
  • UI: In Mountain View, several messages of a conversation can be open at once, the compose window stays open while reading other mail, and the selection is kept while reading a message (#1222, #1229, #1231, thanks @mmomjian)
  • UI: Ctrl+K opens a command palette, and a notifications panel collects plugin notifications and app errors
  • Admin: "Custom From Address" under Admin > Policy turns off the free-text sender address in the composer, so users can only send as their identities
  • Admin: Without a configured SESSION_SECRET, one is generated on first start and kept in data/admin-state. Keep that folder on a persistent volume
  • Plugins: Users can install their own plugins from Settings > Plugins when the admin allows uploads. The server reads the manifest and code itself, the admin reviews the actual code in the Plugins tab before approving, and the approval is checked again on every start. Settings lists in plain words what each plugin may do
  • Plugins: Plugins can add UI to the message list, reader, composer, sidebar, top bar, calendar, contacts, tasks, files and settings, and pages of their own with a navigation entry. Every area has its own permission
  • Plugins: Plugins are told about sign-in, navigation, mail, folder, calendar, contact, task, file, template, identity, filter, preference and theme changes, and can stop most of them
  • Plugins: Plugins can read messages and folders, move and archive messages, open a filled-in composer or a reply, edit the message being written, save drafts, read and change events and tasks, and manage templates, signatures and the out-of-office reply
  • Plugins: Users connect accounts for plugins in a dialog the plugin can't read, and plugins use those accounts and admin-set API keys through the server without seeing them
  • Plugins: The UI kit gives plugins the app's own controls and dialogs, plus side panels, detail rows, colour dots, labelled check boxes and a change preview
  • Plugins: Marketplace installs check the extension directory's signature

Changes

  • Login: The Remember me box is hidden by default and every sign-in is remembered. Set LOGIN_SHOW_REMEMBER_ME=true to show the box again
  • Performance: Opening a message, switching folders and searching render much less. Message rows, the folder sidebar and the reading pane only redraw what changed, a visited folder reopens without reloading, and a message starts loading when the mouse is pressed on it
  • Performance: Login loads the mailboxes and first page once instead of twice, the mail view's code loads while the login form is shown, and large HTML messages open with one request instead of two
  • Performance: Search results show before their highlighted excerpts arrive, and the list stays on screen while a search runs

Fixes

  • Send: Attachments stay sendable after the server's upload time limit runs out (#1243, thanks @lemourin)
  • Send: Uploads over 10 MB that pass through the server, such as office documents saved from the editor, are no longer cut off
  • Login: The sign-in response stays small enough for proxies when OIDC tokens are large, so logins on a subdomain no longer fail with a 502 (#1237, thanks @kadogams)
  • Login: Lite reloads into the login page instead of a missing route
  • Mail: The storage quota counts against the soft limit when the server sets one (#1242, thanks @somus)
  • Mail: The All mail and All unread views leave out a server's own "all" mailbox (#1241, thanks @somus)
  • Mail: Contacts, filters, calendars and files are only offered for shared accounts that support them (#1239, thanks @somus)
  • Mail: User folders named like system folders, such as "Spam reports", get the plain folder icon (#1235, thanks @dlrudie)
  • Mail: ISO timestamps are no longer offered as verification codes (#1236, thanks @mmomjian)
  • Mail: Shift-click selects the rows shown between the two ends instead of messages in other conversations from that time span (#1230, thanks @mmomjian)
  • Mail: The message list no longer reorders or repaints when switching accounts, and the loading skeleton no longer flickers after a reload or account switch
  • Mail: In Mountain View, a message opens together with its conversation, and threads open as a conversation on the phone (#1223, #1224, thanks @mmomjian)
  • Identities: A new identity is created without blank signatures (#1240, thanks @somus)
  • Composer: A cell range pasted from Excel becomes a table instead of an image (#1233, thanks @soringabrielalbu)
  • Composer: Text typed under the signature stays when the signature is swapped or removed, and picking a From address without a signature removes the old one
  • Composer: Dropped files no longer insert their path into the message body
  • Composer: The top and bottom bar buttons are easier to hit on a phone
  • Calendar: Invitations and replies carry the sender's Message-ID
  • Contacts: The contact name stays readable when the detail pane is narrow
  • UI: The iOS app gets its full screen height back after resuming (#1226, thanks @mmomjian)
  • UI: An attachment's download and menu buttons show when the keyboard reaches them
  • Plugins: A message is never sent when a plugin that checks it before sending fails or does not answer, and plugins can no longer block or stall sign-out
  • Plugins: Privileged plugins need a signed bundle, plugin network access is limited to the origins in the manifest, plugin bundles are only served to signed-in users, and slot plugins only get messages, events or contacts with the matching read permission
  • Plugins: Plugin and theme packages are checked the same way on every install path, marketplace bundles whose id differs from the directory entry are refused, and Theme API v2 themes install from the admin page and the marketplace
  • Plugins: A deleted or disabled theme is no longer forced, an extension keeps its admin state on re-upload, and a plugin's stored data is cleared when the admin removes it
  • Plugins: Plugins start once on every page, get their default settings, follow setting and language changes without a reload, and lay out right-to-left in Arabic, Hebrew and Persian
  • Plugins: Actions a plugin stopped are no longer reported as done
  • Plugins: Plugin buttons and panels fold away in narrow composers, toolbars and phone layouts instead of overlapping, and plugin frames keep the app's theme in dark mode
  • Translations: The new plugin, calendar reminder and notification strings are translated, and "composer" and the certificate subject are no longer translated as a music composer and an email subject

  •  

v2.16.1

15 Oktober 2026 om 06:06

Note

This release fixes backup handling across older Docker daemons and S3, improves health and scheduler reliability, and reduces live-stats rendering costs.

Backups and storage

  • Bind-mount volume subpaths when backing up on daemons older than API 1.45. (#4399) @kmendell
  • Send S3 request checksums only when required, improving GCS compatibility. (#4401) @kmendell
  • Write S3-only system backups directly to S3 without a local repository. (#4400) @kmendell
  • Include the absolute path and UID in project-directory permission errors. (#4404) @kmendell

Containers, projects, and scheduling

  • Report Francis as down when its host exits and extend its health-check deadline. (#4402) @kmendell
  • Exclude Swarm task containers from the standalone-container filter. (#4405) @kmendell
  • Preserve build image references when Compose fails to load, and document the update-check label. (#4406) @kmendell
  • Reset invalid cron settings to defaults at startup. (#4425) @kmendell
  • Clear caches when refreshing a workspace. (#4427) @kmendell
  • Allow manual updates for services with the updater disabled. (#4430) @kmendell

Registries, updates, and access

  • Retry digest lookups after TLS handshake timeouts. (#4428) @kmendell
  • Remove the stale digest name left behind when a frozen pull is tagged. (#4409) @kmendell
  • Stop resending image-update push notifications on every poll. (cd7c39cfcb6c364751d4b55bab887c11b5ebd859) @kmendell
  • Restrict SSH host-key algorithms to entries in known_hosts. (#4403) @kmendell
  • Match user email lookups without regard to case. (#4429) @kmendell

Interface and performance

  • Fix virtualized table cells being clipped by locking column widths in pixels. (#4407) @kmendell
  • Localize settings backup cards and role presets, and prevent long labels from overflowing. (#4408) @kmendell
  • Batch live stats by environment to reduce table rendering costs. (3330f4e0f53bb152cc4720be8ae724cdb1bd8cbb) @kmendell

Maintenance

  • Merge all-environment resource lists on the server. (#4419) @kmendell
  • Simplify registry helpers with composite literals and inline helpers. (00daf4441a6724cc9ff991f2927d73dcd61f4b89) @kmendell
  • Simplify project construction, merge duplicates, and remove dependency-injection nil checks. (a432f2c80c44017d1cba7042cf971bb03a63c410) @kmendell
  • Simplify system construction and remove dependency-injection nil checks and mappers. (cdfe49e8cbe0110e60e582aba3a4ce93c8fdb962) @kmendell

  •  

v5.58.0

14 Oktober 2026 om 12:20

5.58.0 (2026-10-14)

πŸš€ New feature

  • admin: add License details and Support debug dump (#27034)
  • admin: record failed admin logins and sso auto-registration in audit logs (#27930)

πŸ”₯ Bug fix

  • removing firefox from the e2e test suite (3af89ee777)
  • cleaning up firefox inclusion in e2e tests (8580c0dbe1)
  • admin: render reset password strength feedback (#27741)
  • admin: show unset boolean fields as neither true nor false (#28014)
  • content-manager: relation fields share cached options across component instances (#27732)
  • content-manager: relation fields hide available relations after a selection or a failed request (#28006)
  • content-type-builder: make field conditions follow attribute renames (#27953)
  • core: document-service query transform mutates the caller's fields array (#27948)
  • core: treat only all-digit relation shorthand strings as numeric ids (#27892)
  • deps: bump the pinned axios and handlebars past their advisories (#28008)
  • e2e: webkit jobs fail in global setup without chromium (65067fc0c8)
  • upload: cancel does not abort in-flight uploads and asset edits (#27896)

πŸ“š Documentation Changes

  • contributor-docs: modernize the contributor docs site (#27879)
  • e2e: install chromium and webkit for local e2e (1bfad16822)
  • upload: fix the stale JSDoc param on signEntityMedia (#27720)

βš™οΈ Chore

  • merge back release 5.57.0 (#27970)
  • deps: upgrade MCP SDK to 2.3.1 (#27996)
  • deps: bump ip-address from 10.4.0 to 10.7.3 (#27904)
  • deps: bump piscina from 4.9.3 to 4.9.4 (#27905)
  • deps: bump http-cache-semantics from 4.1.1 to 4.3.0 (#27918)
  • deps: bump @fastify/busboy from 2.0.0 to 2.1.1 (#27919)
  • deps: bump shell-quote from 1.10.0 to 1.12.0 (#27957)
  • deps: bump axios from 1.19.0 to 1.20.0 (#27883)
  • deps: bump proxy-addr from 2.0.7 to 2.0.8 (#27958)
  • deps: bump dompurify from 3.4.13 to 3.4.16 (#27903)
  • deps: bump source-map-js from 1.2.1 to 1.2.2 (#27959)
  • deps: bump sharp from 0.35.4 to 0.35.5 (#27954)
  • generators: migrate unit tests from jest to vitest (#27221)

❀️ Thank You

  •  

v1.9.0

14 Oktober 2026 om 20:04

Important Release Notes:

#2521 v1.9.0 - Object Lock default-retention migration

Changelog

  • acc14a9 change cors check order ; test
  • 783381a chore(deps): bump actions/download-artifact from 6 to 8
  • e836eb7 chore(deps): bump actions/upload-artifact from 6 to 7
  • 3742fa6 chore(deps): bump github/codeql-action from 4.37.9 to 4.38.0
  • 8162344 chore(deps): bump github/codeql-action from 4.38.0 to 4.38.1
  • a37aead chore(deps): bump github/codeql-action from 4.38.1 to 4.38.2
  • 3daad06 chore(deps): bump the dev-dependencies group with 11 updates
  • 0e61bd6 chore(deps): bump the dev-dependencies group with 21 updates
  • 3798f8f chore(deps): bump the dev-dependencies group with 23 updates
  • 57c256d chore(deps): bump the dev-dependencies group with 29 updates
  • fd3864d cuobjclient: select GID index 0 on InfiniBand ports in the host client
  • ea44925 docs(netutil): correct the comment on handing sniffed bytes to the handshake
  • 658c379 feat: add OIDC endpoint relaxations for private/isolated networks
  • 0c79ae7 feat: add directio option for scoutfs backend
  • f997770 feat: add helm chart hooks for SPIRE support
  • 3979267 feat: add opt-in --fsync to flush new objects before acknowledging them
  • 1c1272c feat: add per-provider OIDC discovery URL override
  • 23d8384 feat: add s3:if-match and s3:if-none-match policy condition keys
  • 3b5c74a feat: add storage class to put object flows input
  • 13b6bb0 feat: add utils command to convert preexisting posix datasets
  • 23317c7 feat: add versioning support for directory objects in posix
  • 7e9f556 feat: add webui concurrent uploads with progress tracking
  • 966a6a8 feat: admin API path prefix, Helm WebUI prefixes and separate IAM storage
  • e448a8a feat: expose POSIX I/O buffer size to scoutfs options
  • c354e1a feat: validate SSE-C headers and reject SSE-C in posix and azure
  • 25f9790 fix(s3api): strip aws-chunked only for streaming uploads
  • daa25ed fix: accept upload-id-marker together with key-marker in ListMultipartUploads
  • 3610edd fix: add explicit RDMA build constraints
  • 241571a fix: align signing region mismatch errors with s3 regional endpoints
  • a7f1336 fix: allow vgwrdma explicit RC GID selection
  • b939fc8 fix: answer plaintext HTTP sent to a TLS listener with a 400
  • d313772 fix: apply bucket CORS right before auth middleware
  • 0667514 fix: authorize browser-based POST object uploads against the object ARN
  • 834ce25 fix: authorize multi-action requests per action across bucket and identity policies
  • 11a517c fix: avoid nil-pointer panic in mtime
  • 00fa54d fix: clear stale delete-marker metadata on reupload
  • c366966 fix: close connections with unread chunked bodies
  • 41783bd fix: combine bucket policy with ACL so a policy no longer locks the owner out
  • 592e91b fix: compute IsTruncated from the absolute index in ListMultipartUploads
  • 293d9f5 fix: deprecations in JWK and IPA RSA handling
  • 070b030 fix: drop upload-id-marker without key-marker in ListMultipartUploads
  • 24f6273 fix: echo only the request continuation token in ListObjectsV2
  • e8f6be5 fix: echo the full Authorization header in Unsupported Authorization Type errors
  • 08c0904 fix: enforce destination If-Match/If-None-Match on CopyObject
  • 1b9fedb fix: enforce object lock on browser-based POST object uploads
  • e1d7290 fix: handle the null version id correctly in posix versioning
  • 51c2873 fix: harden RC device initialization
  • 3db22f3 fix: hide webui user management when server in single-user mode
  • d7895e3 fix: honor the per-object ETag and Size conditions in DeleteObjects
  • 027a36d fix: include the empty TagKey in InvalidTag errors and match S3 tag validation
  • 752da31 fix: keep O_DIRECT active for object uploads and reads
  • bb59020 fix: keep the last modified time of promoted object versions in posix
  • 7093e91 fix: keep the object on DeleteObject with a versionId in a never-versioned bucket
  • 4826502 fix: list only the objects not deleted in DeleteObjects quiet mode
  • 3de8228 fix: make ListMultipartUploads ordering deterministic and stabilize test timing
  • 9c363b2 fix: make conditional publish lock modes explicit
  • 859f81f fix: map azure AuthorizationPermissionMismatch to AccessDenied
  • bca801b fix: match S3 for conditional deletes of missing keys, delete markers and versions
  • 888fd5c fix: match S3's Content-Encoding error details for aws-chunked with UNSIGNED-PAYLOAD
  • 0ab0db4 fix: object verson mtime
  • 6518246 fix: omit ObjectLockConfiguration Rule when there is no default retention
  • cdbebb0 fix: place the null version by its recorded position in posix versioning
  • ee25c95 fix: port the cuObjServer wrapper to libcuobjserver 2.0.0
  • f21434c fix: prevent path traversal via multipart upload IDs and DeleteObjects keys
  • 84e8b0d fix: reject DeleteObjects requests with more than 1000 keys
  • 6c6b14f fix: reject ListMultipartUploads requests that also carry uploadId
  • ee46df2 fix: reject a ListBuckets bucket-region other than the gateway region
  • d03ac3c fix: reject a PutObject whose body ends before Content-Length
  • aed4617 fix: reject an empty start-after and continuation-token in ListObjects (V1)
  • 1e0d7b2 fix: reject empty versionId query parameter in object actions
  • 44dc2e7 fix: reject the start-after query in ListObjects (V1)
  • 2ebe5be fix: reload standalone IAM and private-channel mTLS certs on SIGHUP
  • 9c98084 fix: remove legacy rdma header descriptors
  • 03a6e82 fix: replace fixed sleep with readiness polling in azurite CI
  • 20b3334 fix: report the delete time as the last modified time of delete markers in posix
  • 95a6da8 fix: report the last upload in ListMultipartUploads next markers on a single page
  • a014c7c fix: report the upload, part and ETag in InvalidPart for a malformed part ETag
  • aa1e82b fix: require s3:PutObjectTagging for tagged browser-based POST object uploads
  • 2a86b86 fix: require an integrity check for uploads with Object Lock parameters and authorize every action of anonymous requests
  • d68efb6 fix: restore IPA KRA compatibility and fix JWK parse panic
  • 2d087f9 fix: return AccessDenied for filesystem permission errors on posix writes
  • c99f9ba fix: return InvalidAccessKeyId for unknown access keys in single, Vault and IPA IAM
  • 915fc7a fix: return InvalidArgument for an empty website configuration
  • 5d5ee06 fix: return InvalidURI for a malformed escape in the request path
  • 63922ed fix: return MalformedXML for a DeleteObjects request without objects
  • 1a68d10 fix: return Marker when the request omits it
  • c02173d fix: return NextMarker in ListObjects only when a delimiter is set
  • a58e125 fix: return BucketAlreadyExists for existing dirs without acl meta attr
  • 4432f2d fix: scope CompleteMultipartUpload retries to the completed upload
  • 7c6fcad fix: set the CreateBucket location constraint from the S3 backend region
  • dc0265b fix: snapshot the replaced object before storing metadata in posix CompleteMultipartUpload
  • c339f39 fix: staticcheck on cuObject stubs
  • 4887633 fix: stop object annotation, rename and torrent requests from reaching plain object handlers
  • d204d2e fix: stop posix copying data from a delete marker
  • bd6cfe6 fix: stop posix mixing up keys that differ only by a trailing slash
  • 729ced9 fix: stop posix publish lock serializing the same key across buckets
  • ba02c76 fix: stop posix rewriting the current version on a copy to itself
  • 5b13559 fix: stop sidecar attributes leaking into new and promoted object versions
  • bbad4b5 fix: store bucket default retention on each object at write time and support Object Lock fields in browser POST
  • d21828e fix: store posix object keys with Windows-invalid characters under encoded names on Windows
  • 370d909 fix: strip aws-chunked from stored Content-Encoding
  • bbe398a fix: strip aws-chunked when the request declares no payload type
  • d383e1f fix: track how the request body ended before closing the connection
  • cc48b75 fix: treat root-level non-directory entries as non-existing buckets in posix
  • e0d98d0 fix: unblock govulncheck and staticcheck CI after Go 1.27.2 release
  • 5847f04 fix: update the example systemd configs with latest options
  • 20a5778 fix: use content-legnth for PutObject and UploadPart allocation sizes
  • aaf7321 fix: validate and apply the ListBuckets bucket-region query
  • 7ae119d posix: add AbsolutePaths option for embedding without chdir
  • ae2a3a6 rdma: acquire session admission credit atomically
  • 50b098c rdma: add --rc-device to pick the RC data plane's verbs device by name
  • d782e62 rdma: add a log callback ABI to the RC data plane
  • c07f75a rdma: add a point-in-time session snapshot to the RC C ABI
  • 138504d rdma: add terminal notification callback to the RC server ABI
  • 368dae0 rdma: address the RC peer by LID on InfiniBand link layers
  • 96be4d1 rdma: bound publication backpressure and close the reservation window
  • 51e63e2 rdma: cap the session-less publication backlog
  • f92d6d6 rdma: carry the session id in the reaped session record
  • 39aae54 rdma: close publication gaps for RC pre-session failures
  • b0954d9 rdma: correct the license header on newly authored RC files
  • 8e23315 rdma: dispatch poll_cq/post_send/post_recv through the object's own context
  • 7c19b34 rdma: drop Inc. from our copyright notices
  • 9edd21e rdma: drop the personal name from copyright notices
  • 6eb574d rdma: expose live RC sessions on the admin server
  • 980078d rdma: expose the RC data plane resource limits as gateway flags
  • 60bec2c rdma: gate session admission on audit publication backlog
  • 279f5e7 rdma: harden RC outcome publication ownership and record fidelity
  • e7edb71 rdma: install the gateway shutdown wrapper at function entry
  • d30ace7 rdma: keep reaper callbacks off sink threads
  • c9668b4 rdma: keep sinks outside the publication lock and self-close metrics
  • 23a7121 rdma: make the teardown callback the single RC publication owner
  • 06a3463 rdma: name the deviceless init failures in the RC server
  • e9a2a2f rdma: never run operational sinks on callback threads
  • 34a3e41 rdma: pin session strings passed to the RC cgo ABI
  • 49b1c6f rdma: publish RC transfer outcomes into the gateway operational services
  • 97238d8 rdma: reserve session publication before completion calls
  • 09bbe9c rdma: resolve the inline-only verbs calls from the provider ops table
  • 55c82f5 rdma: size publications to session capacity and preserve committed PUT facts
  • 64a6ed0 rdma: synchronize publication acceptance with the drain boundary
  • d3e45fd rdma: track terminal events held off by an active reservation
  • 49e0c36 s3api: report the bound addresses from the listen hook
  • 745926a tests: build the integration SDK config without the host's AWS setup
  • b1f8cea webui: show upload progress in the Explorer

  •  

v2.16.0

13 Oktober 2026 om 23:30

Note

This release adds OpenTelemetry support, a redesigned multiplexed edge tunnel, and useful CLI previews and self-update tooling. It also improves container and project workflows while fixing issues across authorization, databases, and connectivity.

Interface and container workflows

Jobs, storage, and reliability

Edge, security, and observability

CLI and integrations

  •  
❌