❌

Lees weergave

v2.15.0

Note

This release adds registry browsing, mobile table sorting, and project deployment feedback. It also fixes issues with project and GitOps workflows, remote agents, job processing, and application reliability.

Features and interface

  • Browse repositories and tags in configured registries. (#4162) @Laval13
  • Add mobile sorting to the shared table menu. (#4225) @kmendell
  • Add unsaved-changes warnings when deploying or redeploying projects. (32f1e335) @kmendell
  • Add actor statuses to the diagnostics page. (01a8964d) @kmendell
  • Make several UI/UX improvements, support backup login, and show both digest values. (#4271) @kmendell
  • Update the dashboard header design. (#4269) @kmendell
  • Refresh the login screen layout. (32262306) @kmendell
  • Clean up crowded action buttons. (#4233) @kmendell

Fixes and reliability

  • Handle .env directories in project scans, environment saves, and workspaces. (#4213) @Mczubi
  • Honor *_FILE settings on the environment-managed settings path. (#4203) @mortencombat
  • Reduce manager polling and config-sync egress to remote agents. (#4218) @kmendell
  • Align editor themes with the selected application theme and prevent overlapping columns in virtualized tables. (#4219, #4220) @kmendell
  • Avoid duplicate deployment events on project redeploy. (1b31dd9c) @kmendell
  • Prevent GitOps directory sync from copying unrelated project data and stop loaded associations from overwriting repository updates. (#4222, #4243) @kmendell
  • Allow project redeploys with restricted bind sources. (#4260) @kmendell
  • Prevent volume detail-page errors when navigating away. (#4229) @kmendell
  • Include ECR Public in the Docker image list. (0d3cd419) @kmendell
  • Omit SQL parameters from query logs to prevent oversized logs. (#4221) @kmendell
  • Automatically clean up upgrade logs according to configurable retention. (#4230) @kmendell
  • Show upgrade status for Arcane self-upgrades. (#4278) @kmendell
  • Reject events from cancelled stream connections, and harden stream cleanup against stale cache fills. (#4241, #4267) @kmendell
  • Remove manual job review, fix Francis scheduling, and recover oversized legacy job histories on startup. (#4268, #4270) @kmendell

Performance and internal improvements

  • Reduce database queries and simplify frequently used queries. (#4239) @kmendell
  • Switch log streaming from JSON lines to SSE. (#4276) @kmendell
  • Simplify the JSON serializer. (b47a8b90) @kmendell
  • Adopt go.getarcane.app for common utilities. (#4223) @kmendell
  • Use Francis for distributed actors. (#4261) @kmendell
  • Standardize on Go standard-library errors. (#4263) @kmendell
  • Standardize domain package layouts. (7d41c588) @kmendell
  • Remove Viper config loading from the CLI in favor of raw YAML marshalling. (e4c1c0a3) @kmendell
  • Regroup CLI commands and add loading states. (0f6591f7) @kmendell

  •  

v0.21.0

What's Changed

  • Add pending package updates list to the system page (#2357, #2427)
  • Add Wi-Fi signal strength monitoring (#2367)
  • Add TLS certificate expiry check to HTTPS network monitors (#2401)
  • Add systemd service logs to service details (#2440)
  • Add option to set the DNS server queried by DNS monitors (#2389)
  • Add network monitor comparison across systems and within the same system (#2442, #2477)
  • Add SYNC_SYSTEM_NAMES environment variable to sync system names with hostnames (#1917)
  • Add DISABLE_SSH option to the hub to skip SSH fallback (#2469)
  • Add environment variable to disable container image update checks (#2371)
  • Add MB/s and GB/s unit selection to bandwidth alerts
  • Add log timestamp toggle (#2471)
  • Add view settings to the network monitors table (#2396)
  • Add Twemoji Country Flags font so flags always render (#2363)
  • Change active alerts grid to a banner and sheet (#2445)
  • Change network packet loss to a red line (#2377)
  • Improve Intel GPU monitoring by parsing intel_gpu_top JSON output (#2387)
  • Improve LXC guest CPU usage reporting using cgroup accounting (#2341)
  • Improve WebSocket and SSH fallback handling (#2441)
  • Fix LVM volumes not mapping to disk I/O by resolving device symlinks (#2486)
  • Fix ZFS pool I/O stats to include snapshot reads (#2474)
  • Fix inaccurate disk I/O on the first sample of an interval (#2420)
  • Fix Windows volume names being altered when matching I/O devices (#2419)
  • Fix 32-bit wrap of disk I/O time counters (#2407)
  • Fix partial NVMe SMART data handling (#2340)
  • Fix NVMe power-cycle SMART fields overflowing (#2484)
  • Fix nvethernet network counters (#2090)
  • Fix agent not reconnecting after an async WebSocket handshake failure (#2329, #2326)
  • Fix WebSocket reconnect loops on slow agent collections (#2294)
  • Fix SKIP_GPU not excluding GPU hwmon temperatures and fans (#2313)
  • Fix Docker image update check across all image repository digests (#2393)
  • Fix status alerts being lost during pending recovery (#2375)
  • Fix hub requiring system access for alert subscriptions and delivery (#2455)
  • Fix hub not honoring SSH request cancellation (#2450)
  • Fix hub not restarting beszel-hub.service after update (#2410)
  • Fix IP targets being accepted for DNS monitors (#2483)
  • Fix short monitor IDs failing schema validation (#2454)
  • Fix network monitor charts to show gaps for failed probes and disconnects (#2428)
  • Fix duplicate y-axis labels on network monitor response charts (#2426)
  • Fix translations not refreshing on locale change (#2405)
  • Fix scrollbar layout shifts (#2406)
  • Fix hub returning 200 for unknown frontend routes (#2414)
  • Fix proxy caching of systemd details (#2456)
  • Fix agent not exiting with code 0 when run without a key on Windows (#2376, #2247)
  • Fix OpenWrt user account handling in the install script (#2370)
  • Update Go dependencies

New Contributors

Full Changelog: v0.20.0...v0.21.0

  •  

v1.12.0 - Rules from the Message Menu, Copyable Sign-In Codes & Mobile App Linking for Every Account

1.12.0 (2026-09-30)

1.12.0 lets you create filter rules straight from a message, offers the code from sign-in mail for one-click copying, and gives a phone linked with "Link Mobile App" a sign-in of its own, for every kind of account. Search now leaves Spam and Trash out by default, and emptying an ordinary folder moves its mail to the Trash. Browsers with many logins start up much faster. It also contains three security fixes, so please update.

Thank you for your donations:

One-time

  • Anonymous

Monthly

Security

  • Auth: The password+TOTP login no longer sends the webmail's OAuth client secret to a mail server the user chose when custom JMAP endpoints are allowed. Only admin-configured servers get it
  • Auth: The identity provider round trip for "Link Mobile App" can no longer sign the browser in as whichever account answered it, and a re-authentication the provider answered from an existing session instead of a fresh login is refused
  • Mail: Opening a previewed SVG attachment in a new tab no longer runs the sender's script in the webmail origin

Features

  • Mail: A "Rules" entry in the message right-click menu creates filter rules from the message: always move mail from its sender, domain or mailing list, mark it read, tag it, or block the sender. A new rule can also run on the messages already in the folder, and it can be undone from the toast
  • Filters: The rule editor suggests conditions from the message it was opened from (subject, recipients, List-Id, sender domain), and the new "is the address" and "has the domain" conditions match an address exactly
  • Mail: Codes from sign-in and confirmation mail show as a copy chip in the message, and in the list for a day. "Show Verification Codes" in settings turns it off
  • Mail: In the unified view, rows can be tinted with their account's color instead of showing the account dot, and tags this browser has no definition for, such as ones set by a server-side filter, get a color of their own instead of grey (#1052, thanks @lucamzanon)
  • Search: The folder dropdown shows subfolders indented under their parents
  • Composer: Pasted plain-text lines that start with "- ", "* ", "β€’ ", "1. " or "1) " become real lists
  • Calendar: The event popover finds the join link of Teams, Zoom, Meet, Webex, Jitsi, Whereby and GoTo meetings in the location or description, and the location opens in maps, with a copy button next to it (#1095, thanks @lucletoffe)
  • Server: LIBRETRANSLATE_API_KEY_FILE, BULWARK_JWT_AUTH_SECRET_FILE, BULWARK_STALWART_MASTER_USER_FILE and BULWARK_STALWART_MASTER_PASSWORD_FILE read these secrets from files, and the admin config accepts oauthClientSecretFile and sessionSecretFile (#897, thanks @Cameo007)
  • Plugins: PLUGIN_SIGNING_KEY_FILE points at an existing Ed25519 key for signing managed plugin bundles, for read-only secret mounts (#996, thanks @mulatta)
  • Releases: Container images and release files come with a signed build provenance attestation, and the standalone tarballs get a .sha256. The README explains how to check them with gh attestation verify

Changes

  • Search: Search leaves out Spam and Trash unless "All folders" is picked in the folder dropdown. A search started in Spam or Trash searches that folder
  • Mail: Emptying a folder other than Trash or Junk moves its mail to the Trash, unless deleted mail is set to be removed permanently
  • Mobile app: "Link Mobile App" is offered for every account. Password and password+TOTP accounts confirm their password (and code) in the dialog. The phone gets a sign-in of its own, so signing out in the browser no longer signs it out, and a sign-in link to copy sits next to the QR code. Failed password attempts are limited per account
  • Calendar: Events are drawn as solid blocks of their calendar's color; declined and cancelled events are outlined
  • UI: Success and info toasts are plain cards; only errors and warnings are colored
  • Performance: With many logins, the browser restores them four at a time and no longer reloads every login's folders, identities and push connections each time one of them connects (#1132, thanks @lucamzanon)
  • License: An additional permission under section 7 of the AGPL allows distributing apps built from this code through app stores. It is provisional until every earlier contributor has agreed (consent request) and applies in full to contributions made since 30 September 2026
  • Docs: Guidelines for AI-assisted contributions in the README and CONTRIBUTING.md

Fixes

  • Mail: Clicking a folder's unread count lists only that folder's unread mail, not unread mail from every folder of every account
  • Mail: In "unread first" lists, a message you open stays in place until you open another
  • Mail: The message list no longer flashes a reload right after the page opens
  • Mail: On tablets, the message list comes back when the reading pane empties, for example after the open message is deleted or moved
  • Mail: Dividers between rows no longer disappear at 125% or 150% display scaling
  • Mail: The unread dot is centred on the sender avatar
  • Mail: Attachments declared with a type the browser cannot show, such as application/x-as400attachment from IBM i systems, application/x-pdf or a catch-all type, preview according to their file name (#1127, thanks @dealerweb)
  • Send: Recipients the server refuses at send are reported. When it refuses all of them, the message stays open as not sent; otherwise a warning names the refused ones (#1123)
  • Composer: The message body stays reachable in short reading panes, such as the bottom reading pane on a laptop (#1114)
  • Composer: Pasted plain text keeps its blank lines
  • Push: A notification link waits for a login that is still reconnecting instead of reporting the account as signed out, opens the folder of the right account, and no longer pulls you away from something you opened in the meantime (#1131, thanks @lucamzanon)
  • Push: A browser subscribed with another VAPID key resubscribes on its own, and Firefox can turn push on again when it cannot read its old subscription (#1121, thanks @shukiv)
  • Calendar: Dragged events no longer disappear: all-day events moved in the month view keep their start, and occurrences of recurring events with a UTC start, as in Google Calendar exports, no longer shift by the time-zone offset (#1119)
  • Calendar: A failed calendar fetch no longer hides every calendar or leaves only the birthday calendar selected
  • Calendar: The all-day area of the week view is sized from the visible week, stacks each day's tasks under its all-day events, and collapses to three rows with a toggle (#1122, thanks @sanitz)
  • Calendar: The Save button shows while an event is saving, and a save refused for its length says so (#921, thanks @texchi2)
  • Calendar: Invitations no longer carry blank participant names or an empty description (#748, thanks @lucletoffe)
  • Files: Files shared with you open and save in the office editor (#1094)
  • Files: Office editing works behind a reverse proxy at a sub-path (NEXT_PUBLIC_BASE_PATH) (#1101, thanks @dealerweb)
  • Accounts: Adding a sixth account through server-side SSO no longer overwrites the first account's sign-in
  • Mobile app: The app's "Sign in via webmail" keeps working past the first token expiry when the webmail uses a confidential OAuth client or an identity provider on another host
  • Admin: Admin sign-in works over plain HTTP. The admin cookie's Secure flag follows the request, or COOKIE_SECURE when it is set (#1063, thanks @lucamzanon)
  • Admin: The OAuth scope fields show the actual default scopes, which do not include offline_access (#1126)
  • Lite: SSO sessions survive a page reload with identity providers such as Rauthy that refuse an early token refresh (#552)
  • UI: The app retries loading its configuration after a timeout or a failed request instead of staying broken (#1112, thanks @theLucius7)
  • Docker: The image builds from a remote Git context (#1118)

  •  

2026-09-30

[BlueskyBridge] fix a TypeError on null for starter pack author havin…

  •  

v5.56.0

5.56.0 (2026-09-30)

πŸš€ New feature

  • admin: record admin account and password actions in audit logs (#27748)
  • admin: audit webhook create, update and delete (#27779)
  • strapi: compile Tailwind for the admin panel from one host stylesheet (#27550)

πŸ”₯ Bug fix

  • update create edit e2e test (#27751)
  • admin: build window.strapi before mount and type the project-type contract (#27683)
  • admin: reopen button on dismissed trial banner overlays page controls (#27777)
  • content-manager: create-relation option offered for relations targeting a Single Type (82a2ecb2dd)
  • content-manager: hide create-relation option for Single Type targets instead of disabling it (89b1efaeef)
  • content-manager: cannot re-assign a relation still present on the published version (#27602)
  • content-manager: relation-on-the-fly modal affects the background entry (584aa7b82a)
  • content-manager: nested relation-on-the-fly connects are lost on navigation (9c13d85f59)
  • content-type-builder: clear stale folder field in the edit modal (#27770)
  • core/core: correct "recieve" typo in content-structure service comment (#27825)
  • upload: folder deletion removes assets without permission (#27654)

πŸ“š Documentation Changes

  • fix typos across documentation pages (#27773)
  • point RFC contributions to GitHub Discussions (#27746)

βš™οΈ Chore

  • release v5.55.0 update develop (a82c2d8bab)
  • release v5.55.1 update develop (7a69d80b15)
  • add test:ts:back to packages with unchecked server code (#27811)
  • deps: drop React 17 from peer dependency ranges (#26194)
  • deps: bump js-yaml from 3.15.1 to 3.15.2 (#27516)
  • deps: bump fast-uri from 3.1.5 to 3.1.8 (#27808)
  • deps: bump postcss-selector-parser from 7.1.1 to 7.1.6 (#27541)
  • deps: bump baseline-browser-mapping from 2.10.8 to 2.11.26 (#27809)
  • deps: bump browserslist from 4.28.1 to 4.28.7 (#27531)
  • deps: bump qs from 6.15.3 to 6.16.0 (#27532)
  • deps: bump mysql2 from 3.20.0 to 3.23.1 (#27538)
  • deps: bump react-router-dom from 6.30.4 to 6.30.6 (#27586)
  • deps: bump sharp from 0.35.3 to 0.35.4 (#27600)
  • deps: bump brace-expansion from 1.1.18 to 1.1.21 (#27840)
  • deps: bump browserslist from 4.28.7 to 4.28.8 (#27838)
  • deps: bump undici from 6.28.1 to 6.29.0 (#27839)
  • deps: align react-router-dom in app-template (#27858)
  • tooling: make jest lcov paths repo-relative for Sonar (#27763)

πŸ’… Enhancement

  • ci: require an explicit QA label to merge (#27464)
  • upload: support custom AI providers for metadata generation (#27684)

❀️ Thank You

  •  

Release 2026.09.29

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.29

GitHub Container Registry:

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

Changes

  • fix: apply the connect-time address guard to playlist/channel metadata files (a389660)

  •  

BookStack v26.09.1

Links

Full List of Changes

This release contains the following fixes and changes:

  • Updated audit log to use the configured display timezone. Thanks to @assyrus-favolo. (#6170)
  • Updated translations with latest changes from Crowdin. (#6229)
  • Updated ZIP import handling to verify the actual uncompressed size before extraction.
  • Updated PHP package versions.
  • Fixed page permissions not being regenerated on chapter promotion. (#6226)
  • Fixed API attachment list endpoint showing attachments for pages in the recycle bin. (#6194)

Thanks to ma4ter (GitHub) for responsibly reporting the ZIP import scenario.

  •  

Part-DB 2.19.2

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.19.2

Bug fix

  • Fixed step 3D model viewer colors when one part contains multiple colors

Various changes

  • Update KiCad symbols and footprints lists by @jbtronics in #1562
  • Updated translations
  • Updated dependencies

Full Changelog: v2.19.1...v2.19.2

  •  

Release 2026.09.28

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.28

GitHub Container Registry:

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

Changes

  • fix: confine playlist/channel metadata files to the download directory (098cba4)
  • fix: also prompt in ask mode when only chapter files remain on disk (b2b4908)
  • feat: add an ask mode to DELETE_FILE_ON_TRASHCAN that prompts before deleting files (closes #1012) (52638fa)

  •  

v8.3.1

SECURITY

Bug fixes

  • Force video encoding if there are rotation info
  • Fix broken studio on only intro/outro/cut task
  • Fix broken sorts/invalid sort checkers for channel syncs and ownership changes
  • Fix downloading a download-protected video for admins
  • Fix broken email title in some emails
  • Fix broken notification window if the list contains a broken change ownership notification
  • Fix table pagination after a search
  • Include muted muted videos when admins/moderators display all videos of an account/channel

  •  

Version 2.19.0

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.19.0

New features

  • Added 3D model viewer, with support of STL, 3MF, OBJ, STEP, and more
image
  • Improved builtin footprint gallery viewer
image
  • Support to add custom "builtin footprints"
  • Added additional footprint images based on KiCad 3D models. You can download them with php bin/console partdb:attachments:download-footprint-images

Improvements

  • Optimized performance of part table views

Bugfixes

  • Fix remembered tabs hiding validation errors by @LMatt08 in #1559

Various changes

  • Updated dependencies
  • Updated KiCad symbols and footprints
  • Updated translations

New Contributors

Full Changelog: v2.18.0...v2.19.0

  •  

Release 2026.09.27

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.27

GitHub Container Registry:

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

Changes

  • feat: pair the video password with presets, give custom yt-dlp options a full row (345b8ae)
  • feat: add per-download video password for protected videos (closes #670) (080dcea)
  • ci: install corepack instead of relying on the copy bundled with Node (47553e8)
  • build: ship Python 3.14 in the image (be1d349)
  • build: move the frontend to pnpm 12 (2ffb718)
  • fix: let a cancel's SIGINT actually stop the download (c86f351)
  • ci: sync the Docker Hub description with a maintained action (aecd86d)

  •  

v1.11.2 - Docker Fix

1.11.2 (2026-09-26)

1.11.2 fixes the Docker image and the standalone tarballs of 1.11.1, which did not start. It contains all the security fixes from 1.11.1, so please update.

Thank you for your donations:

One-time

Monthly

Fixes

  • Docker: The server starts again. 1.11.1 excluded data/ from the standalone build with a pattern that also dropped Next.js's own metadata modules, so the Docker image and the bulwark-standalone-* tarballs failed on startup. npm start and Bulwark Lite were not affected

  •  

v1.11.1 - Security Hardening, Tasks in Month View & Multi-Account Fixes

1.11.1 (2026-09-26)

1.11.1 is a security and bug-fix release. It fixes four reported vulnerabilities, two of them critical, and the findings of a security audit. Please update.

Thank you for your donations:

One-time

Monthly

Security

  • Admin: Only a Stalwart superuser gets into the admin dashboard. The admin probe accepted Stalwart's default tenant-admin role, so the administrator of a single tenant was signed into a dashboard that configures the whole instance (GHSA-v6hr-cmxm-pv73, thanks @douwezijlstra-frl)
  • Admin: Admin status is only taken from an admin-configured server. A context cookie minted while custom JMAP endpoints were allowed let a user-chosen server keep answering the admin probe after the switch was turned off (GHSA-j867-89p4-v8hm, thanks @Vip3r-MC)
  • API: Cross-origin writes are refused on the JMAP passthrough and every other cookie-authenticated /api/ route, not only /api/auth/*. A page on a same-site sibling origin could run arbitrary JMAP as the signed-in user. The gate also decides on the decoded path, so /api/%61uth/... no longer skips it (GHSA-9mvj-98f5-9q6g, thanks @kah-ja)
  • Admin: Admin sign-in attempts are also capped at 50 per 15 minutes across all clients, because a forged X-Forwarded-For got a fresh per-IP budget when no reverse proxy is in front (GHSA-7pj2-232x-6698, thanks @richardweinberger)
  • Admin: Impersonation no longer puts the Stalwart master password into the session cookie. The webmail creates an app password on the target mailbox that expires after 8 hours and is revoked on sign-out, and a used impersonation link is refused after a restart or on another replica
  • Mail: A sender can no longer fake a DMARC or DKIM pass in the security badges, with a crafted envelope address or an Authentication-Results header of their own
  • Mail: Opening an SVG attachment's thumbnail on its own no longer runs the sender's script in the webmail origin
  • Mail: Remote content stays blocked in the mobile conversation view, the .eml attachment preview, the quoted original of a reply or forward, the print view, and for URL spellings the filter missed (backslashes, CSS escapes, image-set())
  • Mail: Links in image maps (<area>) no longer keep window.opener
  • Mail: A mailto: unsubscribe goes to the single address in the link, and the confirmation shows recipient, subject and body before sending
  • Mail: A crafted winmail.dat no longer freezes the tab
  • Composer: A sender name containing a quote can no longer add a recipient to a draft
  • Filters: Rule names, header names and sizes are escaped, so rules from plugins or imported filter sets cannot add commands such as redirect to the Sieve script
  • Plugins: Hooks and slots need a declared permission, like the host API does. http.post can no longer reach the JMAP passthrough, /api/admin/*, /api/settings or other credentialed routes, and plugin storage is kept per account and deleted on sign-out
  • Themes: The theme CSS sanitizer no longer lets remote resources through (url(//host), CSS escapes, image-set(), @font-face sources), and theme CSS can only target :root and .dark, also when a plugin transforms it
  • Files: WOPI file downloads are always served as inert attachments, so a blob typed text/html cannot run script in the webmail origin
  • Server: The SSRF guard also blocks loopback beyond 127.0.0.1, CGNAT, benchmark, multicast and reserved ranges, and NAT64, 6to4 and Teredo addresses that wrap an internal IPv4 address. Telemetry targets are checked at connect time, and OAuth token and revocation requests never follow redirects
  • Auth: Synced settings are keyed on the account a bearer token belongs to, so on a multi-domain server john@b.example can no longer read the settings of john@a.example
  • Auth: Wrong passwords tried through the login pre-check are limited, so the route can no longer be used as a password oracle or trip Stalwart's ban against the webmail itself
  • Auth: Signing out ends office editor sessions opened in that browser, and a full sign-out clears search history, open tabs, Files recents, staged plugin uploads and the other accounts' leftovers, also in other open tabs
  • Auth: Signing out when another account's restore had failed no longer leaves that account resumable
  • Auth: The failed TOTP login no longer passes on a user-chosen server's error body
  • Server: Visitors who are not signed in no longer get detailed health data, the pending advisory text, the plugin list, the full admin policy or every server's domain list
  • Server: The setup token is passed in the URL fragment, so it stays out of access logs, referers and history
  • Server: Not-found pages outside the app tree cannot be framed, ALLOWED_FRAME_ANCESTORS never applies to the admin dashboard or setup, and sibling subdomains can no longer widen the sidebar-app frame-src
  • Server: Favicons are only served as raster images
  • Docker: Runtime state and secrets (data/, local-data/, .env) stay out of the standalone build and the image, and the mock JMAP server can no longer be switched on in a release build
  • Lite: Sign-out revokes the refresh token, and a failed token login no longer keeps the password in sessionStorage
  • Lite: Every static page gets a CSP that allows only its own inline scripts, the Stalwart bundle refuses to run inside a foreign frame, and the Stalwart install instructions use a tagged release with a published .sha256 instead of releases/latest

Features

  • Calendar: Tasks with a due date show in the month view (#1107)

Changes

  • Plugins: Hooks that change outgoing mail need email:send, and display takeovers need email:render-takeover. Plugins that don't declare them lose those hooks
  • Themes: Theme CSS keeps only :root and .dark rules plus @font-face, @keyframes, @media and @supports. Every url() except a #fragment is removed
  • Admin: Impersonated sessions end after 8 hours, and sessions minted by earlier versions are signed out
  • Server: /api/health?detailed=true needs a session

Fixes

  • Mail: The inbox keeps rendering when a message has an unparsable date (#1099)
  • Mail: A folder no longer switches back to the unified inbox while it loads (#1102, thanks @guisea)
  • Mail: Replies in the unified inbox come from the identity of the account that received the mail (#1104)
  • Mail: Mail deleted during a list refresh no longer reappears (#966)
  • Mail: The message list no longer jumps while attachment chips load
  • Mail: Scrolling the unified inbox, cross-account views, tag views and "All folders" search no longer skips messages
  • Mail: A failed message-list read keeps the list on screen instead of showing an empty folder
  • Mail: Marking read, starring, tagging, emptying a folder and cancelling a scheduled send report it when the server refuses them
  • Mail: Tagging and pinning write only the keywords that change, so they no longer mark mail unread that was read on another device
  • Mail: New mail and folder changes keep arriving for users with seven or more shared accounts
  • Send: A dropped connection can no longer send a message twice
  • Send: Undo and edit of a message sent from a group identity act in the group's own account
  • Composer: A reply draft stays in its thread when it is re-opened or undone
  • Composer: An open draft stays on its own account across an account switch
  • Accounts: Quick account switches no longer mix up identities, so replies go out with the right From address
  • Accounts: Folders, filters and the account security page no longer show the previous account's data after a switch
  • Accounts: Settings sync turns back on after signing out of one of several accounts
  • Push: A notification opens its message in the account it came from
  • Calendar: Events you declined show struck through (#1110)
  • Calendar: Daily recurring events keep going past a DST gap
  • Calendar: iCal subscriptions stay with the login that created them, so refreshing or removing one no longer touches a calendar of another login
  • Auth: SSO sign-in behind nginx no longer fails with a 502 when the cookies would overflow its header buffer (#1096)
  • Auth: Sign-in and addresses work on internationalized domains (#1100)
  • Lite: A rate-limited token endpoint no longer signs you out
  • i18n: The dark/light mode titles and the "Themes" settings tab are translated in every language (#1105, #1106, thanks @dulinux), and so is the themes settings panel
  • i18n: Updated Portuguese (Brazil) translation (#1106, thanks @dulinux)

  •  

Release 2026.09.26

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.26

GitHub Container Registry:

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

Changes

  • chore: upgrade Python and frontend dependencies (f5e5ab3)
  • fix: say when an add is skipped because the video is in the download archive (98b0b10)
  • feat: Auto audio format and a Tags choice for what gets written into the file (ee2bb0b)
  • docs: reword the contribution guidance (d959cbc)
  • ci: warn when the README passes a 15,000-byte budget (04ebfb8)
  • docs: restructure the README as a landing page and variable reference (d310bcc)
  • docs: state in SECURITY.md that MeTube does not request CVEs (f319b26)

  •  

v2.14.0

Note

This release adds bulk actions for vulnerability findings, a redesigned risk-based security view, container process visibility, and search in the template selector.
It also improves update workflows, Compose handling, backups, Easy Join, and activity processing while resolving several access and configuration issues.

Security and vulnerability management

  • Added bulk ignore and restore actions for vulnerability findings β€” 8dd49f1ac48b6dc1a17c960e08287338934eb33f (#4158) (@kmendell)
  • Redesigned the risk-based security view β€” cac682df3161e4228b5217fc3c9361700485c280 (#4204) (@kmendell)
  • Improved the risk score model β€” 0238e1414138788e1b674b1ae9d1ffc5b65adc38 (#4205) (@kmendell)
  • Fixed environment-admin resource pages requesting globally protected data β€” 91825a6865e1e3a5a5913c0dfb938dc4093dbfe6 (#4151) (@kmendell)
  • Accepted Safari’s unrequested appid=false value during passkey assertions β€” a7db1aeafd3aff1e5e3161780dd37d117ac0084a (#4208) (@kmendell)

Containers, projects, and updates

  • Added a container processes tab β€” bbc70f7d6007b3532c1bc103e30e1cb9222ef6fe (#4187) (@kmendell)
  • Routed container updates through the activity system β€” 2e35dfda39ed51e692fb4b00c944fd1ba6ceb6e5 (#4167) (@kmendell)
  • Resolved pending update status consistently across containers, projects, and the dashboard β€” aaac10a0d5e1105edfa01a0708f4cdbaf6e96375 (#4189) (@kmendell)
  • Preserved Compose formatting when applying tag updates β€” b9d64a9f116f700f64fa30ebc04d5816e3174f20 (#4172) (@kmendell)
  • Recreated namespace dependents when updating Compose services β€” 33216715407a75a2b2ce499d228dab68a847ac87 (#4179) (@kmendell)
  • Preserved pinned Compose tags unless enabled by the updater strategy β€” 72532defe45ac340d07aaf01b6d6a9e393972d87 (#4180) (@kmendell)
  • Continued checking for updates for containers excluded from automatic updates β€” 4eeb7d43d3c4aea469803ea6f94645ab94f8de1c (#4181) (@kmendell)
  • Logged project updates during Git sync only when content changed β€” 439aee51db0e19769928e68454d610f2cb53cfcd (#4206) (@kmendell)
  • Skipped symlinked external bind sources when preparing project updates β€” bcaa9d447b5aa044c60a9aa657179b8000dfa2d7 (#4207) (@kmendell)
  • Kept the project Save action mounted to maintain a stable toolbar layout β€” dd37ce953c0e673776f7a843fabff612fa928147 (#4157) (@kmendell)

Environments, backups, and configuration

  • Allowed token re-entry when changing an agent API URL β€” af4dab5f00980e34c3870deffae636eb4a498793 (#4160) (@kmendell)
  • Allowed deleting backup records for missing snapshots β€” b30e617cfa403d91fd6306dfe88bdd2133a8dcb6 (#4161) (@kmendell)
  • Surfaced Docker join errors and added a manager-address override to Easy Join β€” e2312137c99ff400f8473265780816d6bf9cab3f (#4191) (@kmendell)
  • Allowed dots and hyphens in .env variable names β€” 144d7acced1ba23e0661148ce29b3db107732b58 (#4199) (@DominikZublasing)
  • Added search to the template selection dialog β€” 4bbcbfea6274e149a57daa386a57543df688f380 (#4183) (@kmendell)
  • Forwarded proxy configuration to Trivy scan containers β€” 85b9b16baa0d79edc7ab3d01df98dcd3d811a1d1 (#4168) (@kmendell)

Activity processing

  • Isolated activity subscriber payloads to prevent concurrent writes β€” 9fc00866b9107366824b91cdd887de54c8b089d6 (#4159) (@kmendell)

  •  

Release 2026.09.25

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.25

GitHub Container Registry:

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

⚠️ Action needed for bookmarklet users

MeTube now refuses requests sent from other websites unless their origin is listed in CORS_ALLOWED_ORIGINS. This closes a security hole (GHSA-cxj8-27g9-669f). If you use a bookmarklet, add the sites you use it on, e.g. CORS_ALLOWED_ORIGINS=https://www.youtube.com. Details in #1085.

Changes

  • docs: point readers at the wiki from the README top and the issue forms (dfe3daa)
  • fix: let a refused bookmarklet see why it was refused (e165b36)
  • test: pin that scheme-less internal URLs are refused before any fetch (2979e3a)
  • fix: refuse state-changing requests and socket connections from other sites (772a16c)

  •  

BookStack v26.09

Links

Upgrade Notices

  • Config - An APP_KEY value now must be set. It should be already set in the vast majority of cases, we just no longer fall back to a default value where unset, and instead error. If you get an error upon access after upgrading, ensure a key is set. You can find guidance here.

Full List of Changes

  • Added interface layout system for UI customization, with theme system support. (#6179)
  • Added API endpoints for searching within a specific book or chapter. Thanks to @enableservices. (#6182)
  • Added a page scroll progress indicator. (#6176, #5932)
  • Added ability to easily download API docs as JSON or HTML. (#6198)
  • Updated translations with the latest Crowdin changes. (#6225)
  • Updated app logo with better accessibility text. (#6171)
  • Updated codebase static analysis to PHPStan Level 5. (#6143, #6089)
  • Updated config to remove default APP_KEY value. (#6210)
  • Updated new WYSIWYG editor with a range of fixes and improvements. (#6207)
  • Updated page create/update endpoints to allow a changelog message. (#6162)
  • Updated user password changes to require their existing password. (#6181)
  • Fixed incorrect LDAP group result handling scenario. (#6088)
  • Fixed lack of label text connected to checkboxes for screen readers. Thanks to @MHameed. (#6173)
  • Fixed markdown table alignment being removed by page content filtering. (#6167)
  • Fixed page content popup being caught in text selection range. (#6214)
  • Fixed unexpected error when using an invalid page ID with the API. (#6136)

  •  

v5.55.1

5.55.1 (2026-09-24)

This is a hotfix release patching v5.55.0 that were causing a performance drop for the projects that have the documentation plugin.

βͺ Revert

  • documentation: restore properties for repeated relation targets (#27592), reverted in (#27783)

  •  

v1.11.0 - Bulwark Lite, Single-Occurrence RSVP & Stalwart Compatibility Fixes

1.11.0 (2026-09-23)

1.11.0 introduces Bulwark Lite, a static build of the webmail that runs without a Node server, and fixes many places where Bulwark and Stalwart disagreed about mail, filters, calendars, contacts and files. It contains everything from the three 1.11.0 betas. The latest Docker tag moves to this release.

Thank you for your donations:

One-time

Monthly

Features

  • Lite: Bulwark Lite, a static build that talks to the JMAP server straight from the browser. npm run build:lite builds it, and every release ships bulwark-lite-<version>.zip for any static web host
  • Lite: bulwark-lite-stalwart.zip, a Stalwart Application bundle that picks up its mount prefix at runtime, with OpenID Connect login
  • Lite: Container image ghcr.io/bulwarkmail/webmail-lite (#1081)
  • Themes: "Flat fields" theme
  • Calendar: Attendees can answer a single occurrence of a recurring event (#1086)
  • Mail: Office attachments open read-only in the document editor, straight from the message, when a WOPI editor is configured (#1047)
  • Push: Optional inbox-only push notifications (#983, thanks @guisea)
  • Mail: Toasts for mail actions that gave no feedback, and an "email sent" toast after immediate sends
  • Filters: "Keep a copy" option for forward actions
  • Filters: Per-rule "Also move messages marked as spam" option
  • Admin: Login page toggles in admin settings for the version, the 2FA code option, the heading and the subtitle (#1068)
  • Navigation: Deep links resolve to the local instance

Changes

  • Auth: Signing out of an SSO account also signs out of the identity provider when it advertises an end_session_endpoint (#905). Set OAUTH_END_SESSION=false to keep the provider session, for example when other apps share it, and OAUTH_POST_LOGOUT_REDIRECT_URI to send users back to the webmail afterwards
  • Filters: Move and copy rules leave mail that Stalwart marked as spam in Junk. Before, a rule such as "subject contains invoice" also collected phishing. "Keep" rules stay unguarded as the allow-list
  • Mail: Search sends terms exactly as typed, without adding a prefix wildcard, in tag views too
  • Mail: The message list loads attachment chips lazily, so large folders open faster (#1089)
  • Send: Scheduled send is limited to 7 days, the most Stalwart accepts
  • UI: Icon set migrated from Lucide to Tabler Icons
  • Docker: Pre-releases no longer move the latest tags
  • Docs: Most README details moved to the website docs, with new screenshots

Fixes

  • Mail: "All folders" search includes shared accounts (#1082)
  • Mail: A search inside a tag view narrows the tag instead of replacing it (#1084, thanks @rotterp)
  • Mail: Leaving an account drops a search folder scope that belongs to it (#1084, thanks @rotterp)
  • Mail: A failed search shows an error instead of "No results found"
  • Mail: In unified views, threads belong to the account that owns them (#1012, thanks @lucamzanon)
  • Mail: A failed move between accounts no longer deletes the original
  • Mail: "Mark all as read" marks every unread message instead of skipping pages past the first 500
  • Mail: Mark as spam and not spam report moves the server refuses
  • Mail: Unread-first order keeps bringing up unread mail past the first page
  • Mail: The tag button in a row's hover actions opens the tag picker instead of clearing the message's tags (#1032, thanks @douwezijlstra-frl)
  • Mail: Tag and tab counters no longer download every matching id
  • Mail: Text in fixed-width tables wraps to the screen on iOS (#1020)
  • Mail: Mail action toasts show again
  • Send: A send the server refuses is reported as failed instead of sent. When only filing the sent copy fails, a warning says so, so the mail is not sent twice
  • Send: A From override is also used as the envelope sender where the server accepts it. Where it doesn't, as on Stalwart, the composer says that the identity's address shows in the Return-Path (#1009)
  • Send: Sending with an identity adds its Bcc addresses
  • Composer: Attachments over the server's size limits are refused before upload
  • Composer: A staged attachment is kept until its upload finishes
  • Filters: Filters keep running while the auto-reply is on, and saving a filter no longer turns the auto-reply off
  • Filters: "Mark read", "star" and "add label" reach mail that the same rule moves, and rules keep their target folder after it is renamed
  • Filters: Forward actions respect the server's redirect limit (one on Stalwart) instead of being dropped without notice
  • Auto-reply: A warning appears before saving an auto-reply that Stalwart would refuse as too long
  • Calendar: Edits to a single occurrence stay on that occurrence and keep its details
  • Calendar: Date ranges are queried in the right time zone, and long recurring series or more than 1000 events no longer leave the calendar incomplete
  • Calendar: When the server refuses an event's invitations, you can save the event without sending them
  • Calendar: Subscriptions that fail with "Not authenticated" name the cause, such as a mail server certificate the webmail server does not trust (#1073)
  • Calendar: The subscription dialog no longer promises CalDAV URLs
  • Calendar: The import dropdown opens above the day and week views (#1049)
  • Contacts: Contacts with calendar, scheduling or free/busy links save, and cleared fields are cleared on the server
  • Contacts: vCard import no longer sends fields Stalwart rejects and writes addresses in the RFC 9553 form
  • Contacts: Deleting an address book that still holds contacts works
  • Files: Every file is listed, even when the account has more than maxObjectsInGet (#1069)
  • Files: Copying a folder copies its contents, and changes inside a shared drive go to the drive's account
  • Files: An upload or new folder whose name is taken becomes "name (2)" instead of failing
  • Files: Sharing works on Stalwart versions before 0.16.6
  • Files: Names Stalwart refuses are caught before sending, uploads store an accepted variant, and Office files keep their MIME type on Stalwart 0.16.6 and later
  • Account: You stay signed in after changing your password in settings
  • Account: Users who are not admins see their name, and changing the password or turning TOTP off asks for the current code
  • Auth: OAuth endpoints on the configured issuer's own host are accepted when they resolve to a private address, so split-DNS setups no longer need OAUTH_ALLOW_PRIVATE_ENDPOINTS (#1028)
  • Auth: Linking the mobile app re-authenticates against the account's own identity provider when OAuth is configured per server
  • Push: Push subscriptions are renewed before Stalwart's 7-day expiry, so a tab or app left open for over a week keeps getting notifications
  • Sharing: Principals are listed in directories with more than 500 users
  • Lite: The login page hides the server field once config.json sets jmapServerUrl (#1087)
  • Plugins: The plugin sandbox follows the app's "Automatic" language (#976, thanks @bartfaizoli76)
  • UI: The global error page loads the app's styles

  •  

Release 2026.09.23

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.23

GitHub Container Registry:

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

Changes

  • fix: stop folder errors from reading as a successful add (closes #1082) (292fe2d)

  •  

v12.4.1

πŸ› Bug Fixes & Optimizations

  • @directus/api
    • Fixed reading from folders endpoint as non admin (#28286 by @Nitwel)

πŸ“¦ Published Versions

  • @directus/app@18.0.1
  • @directus/api@39.2.1

  •  
❌