❌

Normale weergave

v5.52.1

19 Augustus 2026 om 13:37

5.52.1 (2026-08-19)

πŸ”₯ Bug fix

  • admin: unrelated permission conditions no longer block page access (3ded36a7b0)
  • content-manager: deduplicate MCP tool names when an api has multiple content types (#27357)
  • content-manager: refraining from counting error draft relations … (#26900)
  • upload: show tooltip on truncated names in the media library (#27340)
  • users-permissions: unable to clear refresh token cookie on logout due to mismatched options (#25106)

βš™οΈ Chore

  • update develop with release 5.52.0 (#27343)
  • deps: bump fast-uri from 3.1.4 to 3.1.5 (#27242)

❀️ Thank You

  •  

v2.8.1

Door: kmendell
19 Augustus 2026 om 03:33

Bug fixes

  • report never-pulled image refs as a distinct 'not pulled' state instead of failing the update check (#3631 by @kmendell)
  • localize category cards (#3596 by @InfinityPacer)
  • coalesce concurrent Docker image/container list calls to cut duplicate decodes (#3635 by @kmendell)
  • gate project archiving on live Docker state instead of stale persisted status(c487936 by @kmendell)
  • use stored credentials for non-Docker Hub registries (#3639 by @BobzTH)
  • add missing options to project redeploy dropdown(f7cb885 by @kmendell)
  • go1.26.6 h2c ReadHeaderTimeout regression(6d4f222 by @kmendell)
  • use errors.Is(err, fs.ErrNotExist) for acfs error checks (#3647 by @rohitkumbhar)
  • unblock git sync workspaces and pre-deploy hooks on permission edges (#3637 by @kmendell)

Dependencies

Other

Full Changelog: v2.8.0...v2.8.1

  •  

v12.3.0

18 Augustus 2026 om 19:28

⚠️ Potential Breaking Changes

Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076)
exists() now throws when the lookup itself fails, for example on a timeout, a connection error or rejected credentials, instead of also reporting false. Callers that relied on a false result for any failure need to handle the error. Note that S3 answers 403 rather than 404 for a missing object when the credentials cannot list the bucket, so granting s3:ListBucket is needed to keep getting a clean "missing" answer.

Fixed "Update Items" and "Delete Items" operations affecting every item in a collection when given an empty or missing key or query (#27759)
Nothing to target is a no-op

"Update Items" and "Delete Items" operations now return null instead of falling back to every item whenever the configuration doesn't target anything β€” that is, when key is empty or missing (e.g. [], "") and query is empty or missing (e.g. {}). "Update Items" additionally returns null when there is nothing to write, i.e. an empty or missing payload (e.g. {}, or [] for a batch payload). Flows that relied on the previous fallback to every item can use {"limit": -1}.

Contradictory options error

"Update Items" and "Delete Items" operations now throw an error when both key and query are defined. "Update Items" also throws when key or query is combined with a batch payload.

Updated ASSETS_TRANSFORM_IMAGE_MAX_OUTPUT_DIMENSION to match ASSETS_TRANSFORM_IMAGE_MAX_DIMENSION (6000 px) (#28111)
The default maximum output dimension is now 6000 px. Users who rely on the previous limit of 3000 px can explicitly configure ASSETS_TRANSFORM_IMAGE_MAX_OUTPUT_DIMENSION.

Used the pm2 bundled with @directus/api in the Docker images instead of installing a separate copy, so its dependencies follow the versions pinned by the workspace (#28120)
If you extend the Docker image: it now boots via CMD ["node", "docker-entrypoint.cjs"], which runs the same bootstrap then pm2-runtime sequence as before. pm2-runtime is no longer on the PATH, so a custom CMD that called it directly should hand off to docker-entrypoint.cjs instead. pm2 itself remains on the PATH for docker exec diagnostics.

  • @directus/api
    • Fixed "Update Items" and "Delete Items" operations affecting every item in a collection when given an empty or missing key or query (#27759 by @ComfortablyCoding)
  • @directus/storage-driver-cloudinary
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
  • @directus/storage-driver-s3
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
  • @directus/storage-driver-local
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
  • @directus/storage-driver-supabase
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
  • @directus/sdk
    • Updated outdated type definitions for directus_files, directus_collections, directus_deployments, directus_settings, and directus_users (#27945 by @kheiner)

✨ New Features & Improvements

  • @directus/app
    • Added search-first AI tool discovery for chat and MCP tools, with schema pinned as a root chat tool. (#27797 by @bryantgillespie)
    • Added a caption field to the WYSIWYG image drawer, which wraps the image in a figure with a figcaption (#28026 by @alvarosabu)
    • Added the collection name appended to display template in item and drawer headers (#28078 by @AlexGaillard)
  • @directus/api
    • Added search-first AI tool discovery for chat and MCP tools, with schema pinned as a root chat tool. (#27797 by @bryantgillespie)
  • @directus/cli
    • Introduced @directus/cli (d6s / directus-cli) β€” a client-side CLI that syncs schema and configuration between Directus instances through committed JSON files, with sync pull, sync diff, sync push, and an interactive wizard (#27861 by @bryantgillespie)
  • @directus/types
    • Updated outdated type definitions for directus_files, directus_collections, directus_deployments, directus_settings, and directus_users (#27945 by @kheiner)

πŸ› Bug Fixes & Optimizations

  • @directus/app
    • Removed unused dependencies across the monorepo (#28049 by @ComfortablyCoding)
    • Removed dead β€œSave and Quit” dropdown row outside the content item view (#28051 by @robluton)
    • Fixed relational items with unsaved nested values, such as newly added translated items in a content version, rendering as -- instead of their display template (#28010 by @alvarosabu)
    • Fixed the repeater interface options showing empty sub-fields, and dropping their key and type on save, when the sub-fields were created through the API without repeating the key and type inside their meta (#28041 by @lazerg)
    • Fixed relational fields showing stale values after a manual flow updated them (#28056 by @AlexGaillard)
    • Fixed the Markdown interface's Edit and Preview buttons not indicating which view is currently active (#28023 by @Aniket-a14)
    • Fixed silent failure of dragging & dropping files with an unrecognized extension into the file library (#28093 by @alvarosabu)
    • Fixed a request for a non-existent item when opening an item whose Many-to-One field references an unsaved parent (#27975 by @sourav-18)
    • Updated outdated type definitions for directus_files, directus_collections, directus_deployments, directus_settings, and directus_users (#27945 by @kheiner)
    • Fixed field configuration appearing to close when selecting related collection that switches interface (#28118 by @robluton)
    • Fixed the translations interface AI translation button only showing for admins (#28089 by @AlexGaillard)
    • Fixed SSO login redirecting to the last visited page instead of the originally requested page (#28080 by @AlexGaillard)
    • Stopped the policy creation modal from writing app access permission rows to the database, matching the policy detail page where app access permissions are applied at runtime instead of stored (#28101 by @alvarosabu)
    • Added block-level custom formats to the WYSIWYG interface, so block, selector and items entries in the Custom Formats option apply classes and attributes to paragraphs, headings and other block nodes from the Formats dropdown (#28044 by @alvarosabu)
    • Fixed WYSIWYG content the editor can't represent being hidden and unrestorable in the comparison modal (#28067 by @alvarosabu)
  • @directus/api
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
    • Added a batch-import regression test pinning that a negative temporary key maps like any other non-existent auto-increment key in merge mode (#27861 by @bryantgillespie)
    • Updated MCP tool descriptions and safety annotations for connector clients. (#28090 by @bryantgillespie)
    • Updated or replaced various dependencies to address GHSA-rgw5-rvv9-x895 (#28050 by @br41nslug)
    • Improved MS SQL Server reliability and performance by optimizing schema introspection and only enabling trigger compatibility when required (#27699 by @br41nslug)
    • Updated various dependencies to address CVEs (#28110 by @br41nslug)
    • Fixed slow extension sync from remote storage during startup. Added EXTENSIONS_STORAGE_MAX_CONCURRENCY to configure the maximum number of concurrent requests to the extensions storage location (#27989 by @dstockton)
    • Updated ASSETS_TRANSFORM_IMAGE_MAX_OUTPUT_DIMENSION to match ASSETS_TRANSFORM_IMAGE_MAX_DIMENSION (6000 px) (#28111 by @ComfortablyCoding)
    • Removed unused dependencies across the monorepo (#28049 by @ComfortablyCoding)
    • Fixed TranslationsService.updateMany incorrectly rejecting single-row updates containing both key and language (#28001 by @suhailopensource)
    • Fixed collection names with surrounding whitespace being accepted on creation (#28038 by @lazerg)
    • Fixed WebSocket rate limiting breaking on shared Redis setups where keys must start with a per-project prefix. The WebSocket limiter now accepts RATE_LIMITER_WEBSOCKETS_* values as overrides, including RATE_LIMITER_WEBSOCKETS_KEY_PREFIX to override the Redis key prefix. (#28107 by @AlexGaillard)
  • @directus/storage-driver-azure
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
  • @directus/storage-driver-gcs
    • Fixed storage connections leaking when asset requests were cancelled or a transformation failed, which eventually made every asset request return a permission error until Directus was restarted (#28076 by @dstockton)
  • @directus/release-notes-generator
  • @directus/schema
    • Improved MS SQL Server reliability and performance by optimizing schema introspection and only enabling trigger compatibility when required (#27699 by @br41nslug)
  • @directus/env
    • Fixed slow extension sync from remote storage during startup. Added EXTENSIONS_STORAGE_MAX_CONCURRENCY to configure the maximum number of concurrent requests to the extensions storage location (#27989 by @dstockton)
    • Updated ASSETS_TRANSFORM_IMAGE_MAX_OUTPUT_DIMENSION to match ASSETS_TRANSFORM_IMAGE_MAX_DIMENSION (6000 px) (#28111 by @ComfortablyCoding)
  • @directus/extensions-registry
  • @directus/composables
  • @directus/extensions
  • @directus/errors
  • @directus/stores
  • @directus/utils
    • Removed unused dependencies across the monorepo (#28049 by @ComfortablyCoding)
    • Updated ESLint dependencies eslint, @eslint/js, eslint-plugin-vue, and typescript-eslint. Replaced eslint-plugin-import with eslint-plugin-import-x (#28047 by @br41nslug)
  • @directus/sdk
    • Removed unused dependencies across the monorepo (#28049 by @ComfortablyCoding)
    • Fixed an unhandled rejection in the sdk realtime client when the socket errored or closed during the auth handshake (#28009 by @Deluvio)
  • @directus/specs
    • Fixed OpenAPI spec drift, added missing query parameters, and ensured consistent parameter ordering across list endpoints (#27938 by @kheiner)
  • @directus/types
    • Fixed extensions that set sandbox without an enabled flag being rejected as invalid (#28087 by @dstockton)
  • @directus/extensions-sdk
    • Fixed extension validate crashing on extensions with a disabled sandbox due to an invalid findIndex call (#28087 by @dstockton)

πŸ“¦ Published Versions

  • @directus/app@17.1.0
  • @directus/api@39.0.0
  • @directus/cli@12.2.0
  • @directus/composables@11.6.1
  • create-directus-extension@12.1.3
  • @directus/env@6.2.1
  • @directus/errors@2.5.1
  • @directus/extensions@4.0.3
  • @directus/extensions-registry@4.0.3
  • @directus/extensions-sdk@18.0.3
  • @directus/memory@4.0.3
  • @directus/pressure@4.0.3
  • @directus/release-notes-generator@3.0.1
  • @directus/schema@14.0.2
  • @directus/schema-builder@1.0.2
  • @directus/specs@15.1.1
  • @directus/storage-driver-azure@13.0.3
  • @directus/storage-driver-cloudinary@14.0.0
  • @directus/storage-driver-gcs@13.0.3
  • @directus/storage-driver-local@14.0.0
  • @directus/storage-driver-s3@14.0.0
  • @directus/storage-driver-supabase@5.0.0
  • @directus/stores@3.0.1
  • @directus/themes@2.0.3
  • @directus/types@16.2.0
  • @directus/utils@13.5.3
  • @directus/validation@3.0.3
  • @directus/sdk@25.0.0

  •  

Release 2026.08.18

18 Augustus 2026 om 16:09

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.08.18

GitHub Container Registry:

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

Changes

  • fix: let the download reach the PO token provider (closes #1064) (f3c464f)
  • feat: carry the SponsorBlock toggle into subscriptions (b10bb61)
  • feat: first-class SponsorBlock toggle (8c2990e)

  •  

thumbex

Door: 9001
18 Augustus 2026 om 00:19

there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2026-07-27)

recent important news

πŸ§ͺ new features

  • #1602 custom thumbnail extractors; docs/example (thx @kamaeff!) 1864805 dbc6df8
  • #1604 u2c: password can be provided in env-var U2C_PW (thx @shermanhlc!) 4729747
  • wopi: option --wopi-accs to limit who's able to use the feature 78a4ee4
    • also fixes wopi on servers where user does not have read/write-access to root volume
    • also restricts the token to just that one file; good if the wopi-client is some cloud thing that shouldn't be trusted
  • #1591 wopi: use persistent file-ID which is necessary for real-time collab (thx @kamaeff!) efcf96e
  • #1605 the lightbox can show svg images now 825f1c9

🩹 bugfixes

  • up2k: client could waste a little bandwidth while recovering from a network glitch 18791c5
  • if PRTY_CONFIG is set to a config-file that is also autodetected, then explain the misconfiguration instead of crashing like before 14e2d79
  • wopi: fix session-timeout hint to clients (thx @kamaeff!) 92c3f32
  • js: fix chance of duplicate prologue on very first page visit eeb399e
  • js: fix panic on image dragdrop out of the browser window dcc0abd

πŸ”§ other changes

  • up2k: client now detects when server or reverseproxy is incorrectly configured with an impractically small request-body-size-limit, crashing the website with an explanation how to fix it f19ef03
    • also allows setting the chunksize all the way down to 1 megabyte when absolutely necessary (bad idea, slow)
  • new option --allow-svg-js if you really want that 566de65
  • shares: harden single-file shares some more 21c2c72 9ff6a71
    • just removing footguns (motivated by a bug-report that was a false-positive)
  • copyparty.exe: upgrade to python 3.14.7 from 3.13.14 8b6e897
    • larger and slightly faster (compensated for the size bloat by making the text-image-generator more shitty)

🌠 fun facts

  • the thumbex example is also a cool example how relevant the "pseudo" in PRNG can be; with random.randrange instead of os.urandom, first run followed by restarting copyparty and another run...heh

πŸ’Ύ what to download?

download link is it good? description
copyparty-sfx.py βœ… the best πŸ‘ runs anywhere! only needs python
copyparty-en.py βœ… also good same but english-only, no i18n
a docker image it's ok good if you prefer docker πŸ‹
copyparty.exe ⚠️ acceptable for win8 or later; built-in thumbnailer
u2c.exe ⚠️ acceptable CLI uploader as a win7+ exe (video)
copyparty.pyz ⚠️ acceptable similar to the regular sfx, mostly worse
copyparty-en.pyz ⚠️ acceptable english-only, no smb-server
copyparty32.exe ⛔️ dangerous for win7 -- never expose to the internet!
cpp-winpe64.exe ⛔️ dangerous runs on 64bit WinPE, otherwise useless
bootable usb ┐(οΎŸβˆ€οΎŸ)β”Œ a surprisingly useful joke (x86_64)
  • except for u2c.exe, all of the options above are mostly equivalent
  • the zip and tar.gz files below are just source code
  • python packages are available at PyPI

  •  

v0.18.8

Door: henrygd
17 Augustus 2026 om 23:32

What's Changed

  • Add multi-battery monitoring
  • Add Linux fan RPM monitoring (#2032)
  • Add Intel Arc GPU monitoring through nvtop (#2020, #2223)
  • Add CPU and ACPI thermal zone monitoring on FreeBSD (#2227)
  • Add popup-free OAuth login when OAUTH_DISABLE_POPUP=true (#2171)
  • Add a :slim NVIDIA agent container image (#2002, #2003)
  • Add Intel sysfs GPU power collector (Xe/i915 hwmon energy counters) - #2020
  • Add ARMv5 and ARMv6 builds, and ARM64 support for the NVIDIA agent image (#1884, #2207)
  • Improve mdraid consistency checks (fixes false positives) (#2067)
  • Improve SMART device detection for shared paths and explicit device type hints (#2102)
  • Improve agent startup after OPNsense and pfSense reboots (#2089, #2214)
  • Improve SSH-pull agent reconnection when connections silently fail (#2126)
  • Add checksum verification and archive path containment to update process
  • Add public key display to universal token settings (#2028)
  • Add system theme selection in addition to light/dark mode (#1903)
  • Add support for showing all IP and port mappings for containers bound to multiple IPs (#1993)
  • Fix stale SMART records when drives are no longer reported (#2178)
  • Fix Docker memory charts and container statistics after malformed or backwards Docker counters (#2027, #2066, #2205)
  • Fix memory calculation underflow and Linux battery percentages (#1978, #1957)
  • Improve connection source IP detection behind proxies (#1973)
  • Add EXIT_ON_INITIAL_FAILURE environment variable by @utafrali in #1929
  • Allow agent to connect to hub via SOCKS5 proxy by @marmelo in #1919
  • Use rfcEmail validator to allow IDN/Punycode email addresses by @BootstrapperSBL in #1935
  • Prevent a malformed Docker response from permanently breaking container stats by @Quadrubo in #2066
  • Update Go and JavaScript dependencies (fixes Matrix notification issues)
  • Other small fixes and improvements

New Contributors

Full Changelog: v0.18.7...v0.18.8

  •  

Release 2026.08.17

17 Augustus 2026 om 09:48

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.08.17

GitHub Container Registry:

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

Changes

  • fix: detect channels addressed without a tab (closes #1024) (e15aff3)
  • fix: carry yt-dlp warning context on the DownloadError path (closes #1047) (fccd207)
  • fix: keep generated filenames within the filesystem limit (closes #1034) (6461924)
  • feat: show the queued format in the Downloading table (closes #551) (c68fcad)
  • feat: DEFAULT_FOLDER pre-selects a download folder (closes #875) (a4454ac)
  • feat: shift-click to select a range of rows (closes #525) (75fe1f0)
  • fix: surface yt-dlp warning context on failed downloads (5826d0d)

  •  

Release 2026.08.16

16 Augustus 2026 om 09:40

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.08.16

GitHub Container Registry:

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

Changes

  • feat: let a subscription carry clip bounds (closes #1049) (aac9c63)
  • feat: allow a subscription's download folder to be changed (closes #1052) (3444b16)
  • build(deps): upgrade frontend dependencies to Angular 22.1 (59cf84a)
  • build(deps): upgrade Python dependencies (99b6452)

  •  

Release 2026.08.15

15 Augustus 2026 om 17:27

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.08.15

GitHub Container Registry:

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

Changes

  • docs: note that a configured proxy needs no ALLOW_PRIVATE_ADDRESSES (c8fb5bb)
  • fix: let a configured proxy live on any internal address (closes #1055) (de57484)
  • fix: judge the IPv4 tunnelled inside IPv6 transition addresses (7082858)
  • build(deps): bump aiohttp in the uv group across 1 directory (97d1cc8)

  •  

v2.8.0

Door: kmendell
13 Augustus 2026 om 03:13

New features

Bug fixes

  • move ios app passkey logic to backend(3b0fc6a by @kmendell)
  • return actual passkey identity(1ef7cc5 by @kmendell)
  • keep detecting passkeys with old ids(bfc35fb by @kmendell)
  • serialize concurrent per-container updates to prevent stranded recreate (#3541 by @JoeJoeflyn)
  • put arcane binary on $PATH in container images (#3547 by @JoeJoeflyn)
  • editor line highlight and selection rendering fully opaque on default accent color (#3554 by @kmendell)
  • git sync no longer fails on sockets or unreadable files outside the repo (#3561 by @kmendell)
  • allow saving compose files with includes outside the project directory (#3556 by @kmendell)
  • make compose up wait timeout configurable so long depends_on conditions don't abort deploys (#3557 by @kmendell)
  • webhook trigger endpoint responds 202 immediately instead of blocking until action completes (#3558 by @kmendell)
  • redeploy swarm stack when saving edited stack source (#3559 by @kmendell)
  • allow logging in with email address (#3555 by @kmendell)
  • actionable error when the projects directory is unreadable by the runtime user(802ab89 by @kmendell)
  • only log environment connect/disconnect events on real state transitions (#3564 by @kmendell)
  • resolve docker.sock host path for self-upgrade when using network_mode service (#3565 by @kmendell)
  • pick a DOCKER_HOST-reachable network for the self-update upgrader (#3566 by @kmendell)
  • dispatch agent notifications over the edge tunnel so remote environments send notifications (#3567 by @kmendell)
  • report CPU count from scheduler affinity so LXC core limits are respected (#3568 by @kmendell)
  • surface container shell websocket close codes for disconnect diagnostics (#3569 by @kmendell)
  • serve named pprof profiles instead of the index page (#3563 by @rknightion)
  • false 409 workspace conflict when saving files in imported projects (#3560 by @kmendell)
  • prevent white flash on page load and refreshes(a680185 by @kmendell)
  • stop loading every scan blob to serve one list page (#3610 by @kmendell)
  • show the real v2.x.x-next.xx upgrade target for next builds(5321b2a by @kmendell)

Performance improvements

  • cache validated API keys and debounce last_used_at writes (#3603 by @kmendell)
  • omit the output column from the build history list query (#3604 by @kmendell)
  • filter unhealthy containers at the daemon in auto-heal (#3605 by @kmendell)
  • stop building a new Docker CLI per compose call (#3607 by @kmendell)
  • share snapshot production and cheapen badge queries (#3608 by @kmendell)
  • cache GPU stats and pace the system-stats sampler to subscribers (#3609 by @kmendell)
  • batch message appends and drop the per-line re-SELECT (#3611 by @kmendell)
  • materialize the effective config once per refresh (#3619 by @kmendell)

Dependencies

  • bump github.com/google/go-containerregistry from 0.21.7 to 0.21.8 in /backend (#3529 by @dependabot[bot])
  • bump github.com/shirou/gopsutil/v4 from 4.26.6 to 4.26.7 in /backend (#3530 by @dependabot[bot])
  • bump gorm.io/driver/postgres from 1.6.1 to 1.6.2 in /backend (#3528 by @dependabot[bot])
  • bump the aws-sdk-go-v2 group across 1 directory with 3 updates (#3527 by @dependabot[bot])
  • bump @internationalized/date from 3.12.2 to 3.12.3 (#3521 by @dependabot[bot])
  • bump the tanstack-table group across 1 directory with 2 updates (#3514 by @dependabot[bot])
  • bump tailwind-variants from 3.3.0 to 3.3.1 (#3523 by @dependabot[bot])
  • bump pnpm to v11.21.0(9e2fe2f by @kmendell)
  • bump github.com/docker/cli from 29.7.1+incompatible to 29.7.2+incompatible in /backend (#3590 by @dependabot[bot])
  • bump the tanstack-table group across 1 directory with 2 updates (#3575 by @dependabot[bot])
  • bump github.com/moby/buildkit from 0.32.1 to 0.32.2 in /backend (#3587 by @dependabot[bot])
  • bump github.com/nicholas-fedor/shoutrrr from 0.16.3 to 0.17.0 in /backend (#3585 by @dependabot[bot])
  • bump github.com/libtnb/sqlite from 1.2.1 to 1.2.2 in /backend (#3592 by @dependabot[bot])
  • bump the aws-sdk-go-v2 group in /backend with 3 updates (#3584 by @dependabot[bot])
  • bump github.com/google/go-containerregistry from 0.21.8 to 0.21.9 in /backend (#3593 by @dependabot[bot])
  • bump github.com/klauspost/compress from 1.19.1 to 1.19.2 in /backend (#3588 by @dependabot[bot])
  • bump the codemirror group across 1 directory with 2 updates (#3576 by @dependabot[bot])
  • bump react-email from 6.9.1 to 6.9.2 (#3583 by @dependabot[bot])
  • bump marked from 18.0.7 to 18.0.9 (#3591 by @dependabot[bot])
  • bump go.getarcane.app/builds to v0.3.1(6d2ec79 by @kmendell)
  • bump @sveltejs/kit from 3.0.0-next.13 to 3.0.0-next.21 (#3579 by @dependabot[bot])
  • bump google.golang.org/protobuf from 1.36.12-0.20260120151049-f2248ac996af to 1.36.12 in /backend (#3617 by @dependabot[bot])

Other

Full Changelog: v2.7.0...v2.8.0

  •  

v5.52.0

12 Augustus 2026 om 09:29

5.52.0 (2026-08-12)

πŸš€ New feature

  • record MCP actions in audit logs (#27151)
  • i18n: add locale codes for Corsican (#27099)
  • server: enhance Koa app configuration with proxy settings (#26409)

πŸ”₯ Bug fix

  • typescript pipeline issue (99a723d024)
  • admin: dedupe react-dnd in the admin bundle (#27217)
  • admin: address filter entries by position so duplicate filter chips behave (#27188)
  • content-manager: merge query populate paths to preserve nested populate (#27236)
  • content-type-builder: editing relations removes inverse field conditions (#27226)
  • content-type-builder: clear stale validation errors when the form data is replaced (#27222)
  • data-transfer: skip orphaned links and isolate FK failures on restore (#26852)
  • permissions: skip unregistered RBAC conditions during ability generation (#27282)
  • strapi: allowlist Vite optimizeDeps.exclude for plugin UI kits (#27264)
  • upload: refresh folder header count on upload & delete (CMS-1563) (#27231)
  • upload: guard cache-buster on signed URLs in new-ML AssetCropEditor (#27228)
  • upload: target current asset in drawer actions (#27259)
  • upload: keep infinite scroll loading when the sentinel stays visible (CMS-1562) (#27230)

βš™οΈ Chore

  • release v5.51.2 update develop (101643bcfb)
  • bump design system version (#27292)
  • cloud-cli: migrate unit tests from jest to vitest (#27218)
  • database: replace umzug with internal migration runner (#26824)
  • deps: bump ip-address from 10.2.0 to 10.4.0 (#27238)
  • deps: bump ws from 8.21.1 to 8.21.2 (#27239)
  • deps: bump hono from 4.12.27 to 4.13.0 (#27243)
  • deps: bump prettier from 3.3.3 to 3.6.2 (#27244)
  • deps: bump direct deps and yarn dedupe (#27291)
  • deps: bump nanoid from 3.3.16 to 3.3.18 (#27329)
  • permissions: migrate unit tests from jest to vitest (#27219)
  • sentry: migrate unit tests from jest to vitest (#27252)
  • tooling: add admin translation verification (#26960)
  • upload-aws-s3: migrate unit tests from jest to vitest (#27216)

πŸ’… Enhancement

  • utils: memoize private attributes in sanitizeOutput (#27140)
  • utils: stop using a thrown Error to test for boolean-like populate keys (#27234)
  • utils: memoize scope decisions and keep the relation visitor sync (#27145)

🚨 Security

  • deps: bump @modelcontextprotocol/sdk to 1.30.0 (#27301)
  • upload: bump sharp to 0.35.3 for libvips CVEs (#27255)

❀️ Thank You

  •  

Part-DB 2.15.0

Door: jbtronics
10 Augustus 2026 om 23:41

Warning

After upgrade, you need to run php bin/console doctrine:migrations:migrate (or equivalent) as webserver user after upgrade.. If you are running a docker container, use sudo docker exec --user=www-data partdb php bin/console doctrine:migrations:migrate, or sudo -E inside the docker container, to ensure that the migrations are applied to the correct database.

Important

Since this version Part-DB can enable foreign key checks for SQLite: it is recommend to do this, but it requires some manual intervention. See this announcement on how to do it: #1486

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

New Features

  • Added OAuth server capability, for easy and automatic API access to Part-DB without the need to generate an API token by hand. An application can redirect to an Part-DB page, where an user can authorise the access of the external application. This feauture is opt-in and requires some setup by hand.
  • With the OAuth server capability, Part-DB can now be used as an remote MCP connector for AI applications like claude.ai. Just add a custom connector with your Part-DB url, and you can authorize the access via one click. No need for fiddeling with API tokens or config files
  • Allow to enable foreign key checking for sqlite via an env variable. It is recommended to do this, however it requires some manual intervention.
  • Add Docker based development environment by @swdee in #1441
  • Link to update manager from homepage banner update notification

Bug fixes

  • Fixed that orphaned BOMEntries, APITokens and Orderdetails were possible
  • Fix TypeError when tree expand/collapse/search is used before the tree finished loading by @Sebbeben in #1482
  • Require full user authentication, when changing users or groups
  • Fixed problem with MCP Endpoint Host validation

Other changes

  • Updated dependencies
  • Updated KiCad symbols
  • Improved documentation
  • Improved translations
  • Improved code structure

New Contributors

Full Changelog: v2.14.1...v2.15.0

  •  

v1.8.1 - Nested Tags, Encryption at Rest, Forward as Attachment, Deep Links, Catalan Translation, Expanded Plugin APIs

Door: rathlinus
7 Augustus 2026 om 01:58

1.8.1 (2026-08-07)

A GitHub Actions incident left the 1.8.0 release build queued indefinitely, so no Docker image was ever published for that tag. 1.8.1 re-runs the release with the same code, plus one plugin slot that merged in the meantime.

Thank you for your donations:

One-time

Monthly

Features

  • Mail: Nest tags in a tree by picking a parent when you create one
  • Mail: Per-tag visibility β€” always, only when unread, or always hidden
  • Mail: Assign and clear several tags at once, with a reworked tag display
  • Mail: Recover tags from the server by scanning mail for JMAP keywords no local tag explains (#658)
  • Mail: "Forward as attachment" in the viewer and the message-list context menu
  • Mail: Refresh button in the mail-list toolbar
  • Composer: Confirm sending without a subject instead of blocking the send, with "Don't ask again" (#684)
  • Contacts: Contact cards for organizations (#701)
  • Security: Manage S/MIME and PGP public keys and configure Stalwart encryption at rest from account security settings
  • Notifications: Background notification onboarding, sequenced after the PWA install prompt
  • Navigation: Deep links for mail, calendar, contacts, files, and settings, with screen-reader improvements
  • Settings: Always show the Unified Mailbox switch in Layout settings
  • i18n: Catalan translation
  • i18n: Localized editor toolbar across every locale
  • Plugins: Contact API β€” contact.get, contact.create, contact.update, contact.search
  • Plugins: contact-cryptokeys UI slot, behind the ui:contact-cryptokeys permission, so a plugin can render a contact's crypto keys in place of the built-in list
  • Plugins: user.getAccounts and user.getIdentities
  • Plugins: user.logout method and logout hook
  • Plugins: Crypto API β€” public-key management and encryption-at-rest control on the privileged tier
  • Plugins: onBeforeBlobUpload can offload an attachment to external storage
  • Plugins: Binary Blob/File bodies for api.http.post
  • Plugins: upfiles.get moved behind email:blob-read, off the privileged tier
  • Dev: Mock JMAP defaults now include nested tags

Changes

  • Mail: The "Reset to defaults" button is gone from tag settings β€” one stray click wiped a carefully built tag list, with no confirmation and no undo

Fixes

  • Send: Send through the identity's own account client so DKIM matches the From domain (#461)
  • Send: Split Name <addr> recipients into the JMAP name and email fields (#672)
  • Send: Time out stalled JMAP requests so a send can't hang forever (#702)
  • Mail: Keep inline images when replying to application/octet-stream cid parts (#543)
  • Mail: Reply on your own thread message no longer re-addresses the original recipients (#703)
  • Mail: Empty folder no longer stops after 500 emails (#711)
  • Mail: Move messages across accounts from the "Move to" context menu, preserving read state and deferring source removal to Stalwart
  • Mail: Stop resurrecting deleted rows in the mailbox refresh merge
  • Mail: Keep the message/rfc822 attachment visible after inline unwrapping
  • Mail: Strip sender and recipient names from forward-as-attachment filenames
  • Mail: Open mailto: links in the built-in composer
  • Mail: Spell out the full tag path in drag-and-drop toasts, so Personal/Receipts and Work/Receipts no longer read as the same tag
  • Mail: Act on current email state in the context menu's mark-as-read instead of a stale copy
  • Mail: Match the selected-row tint between dark and light mode
  • Mail: Restore lost animations after the Tailwind config move
  • Drafts: Restore the sender identity when reopening a draft
  • Calendar: Stop re-adding the organizer to the attendee list on every save (#731)
  • Calendar: Stop re-probing shared accounts that have no calendar access
  • Calendar: Route the parse dump through the debug logger
  • Contacts: Stop minting duplicate "Trusted Senders" address books (#730)
  • Contacts: Hide Contacts and Calendars when the account lacks the JMAP capability
  • Contacts: Require an explicit shared-account fallback for contacts and calendars
  • Files: Show the modification date instead of the creation date (#700)
  • PWA: Honor the configured theme color in the desktop title bar and keep it in step with the active theme (#671)
  • Accounts: Reconcile the stale persisted account chip after an impersonation handoff
  • Auth: Only request a credential cookie when the server has a SESSION_SECRET
  • JMAP: Split requests to stay inside the server's advertised limits β€” maxCallsInRequest, maxObjectsInGet/InSet, maxSizeRequest, and concurrency
  • JMAP: Treat an aborted SSE connect as a close, not a failure
  • JMAP: Surface the underlying network error cause in passthrough failures
  • Settings: Avoid leaving TZ="undefined" when restoring an unset timezone
  • Plugins: Stop a privileged plugin from reading another privileged plugin's PRF secret
  • Plugins: Correct the method names for message errors and crypto.getPublicKeys
  • i18n: Restore key parity across locales and the English send_timeout string
  • Docs: Document the remaining env vars in the env templates, and correct the facts and headings in README and FEATURES

  •  

v1.8.0 - Nested Tags, Encryption at Rest, Forward as Attachment, Deep Links, Catalan Translation, Expanded Plugin APIs

Door: rathlinus
6 Augustus 2026 om 19:44

1.8.0 (2026-08-06)

Thank you for your donations:

One-time

Monthly

Features

  • Mail: Nest tags in a tree by picking a parent when you create one
  • Mail: Per-tag visibility β€” always, only when unread, or always hidden
  • Mail: Assign and clear several tags at once, with a reworked tag display
  • Mail: Recover tags from the server by scanning mail for JMAP keywords no local tag explains (#658)
  • Mail: "Forward as attachment" in the viewer and the message-list context menu
  • Mail: Refresh button in the mail-list toolbar
  • Composer: Confirm sending without a subject instead of blocking the send, with "Don't ask again" (#684)
  • Contacts: Contact cards for organizations (#701)
  • Security: Manage S/MIME and PGP public keys and configure Stalwart encryption at rest from account security settings
  • Notifications: Background notification onboarding, sequenced after the PWA install prompt
  • Navigation: Deep links for mail, calendar, contacts, files, and settings, with screen-reader improvements
  • Settings: Always show the Unified Mailbox switch in Layout settings
  • i18n: Catalan translation
  • i18n: Localized editor toolbar across every locale
  • Plugins: Contact API β€” contact.get, contact.create, contact.update, contact.search
  • Plugins: user.getAccounts and user.getIdentities
  • Plugins: user.logout method and logout hook
  • Plugins: Crypto API β€” public-key management and encryption-at-rest control on the privileged tier
  • Plugins: onBeforeBlobUpload can offload an attachment to external storage
  • Plugins: Binary Blob/File bodies for api.http.post
  • Plugins: upfiles.get moved behind email:blob-read, off the privileged tier
  • Dev: Mock JMAP defaults now include nested tags

Changes

  • Mail: The "Reset to defaults" button is gone from tag settings β€” one stray click wiped a carefully built tag list, with no confirmation and no undo

Fixes

  • Send: Send through the identity's own account client so DKIM matches the From domain (#461)
  • Send: Split Name <addr> recipients into the JMAP name and email fields (#672)
  • Send: Time out stalled JMAP requests so a send can't hang forever (#702)
  • Mail: Keep inline images when replying to application/octet-stream cid parts (#543)
  • Mail: Reply on your own thread message no longer re-addresses the original recipients (#703)
  • Mail: Empty folder no longer stops after 500 emails (#711)
  • Mail: Move messages across accounts from the "Move to" context menu, preserving read state and deferring source removal to Stalwart
  • Mail: Stop resurrecting deleted rows in the mailbox refresh merge
  • Mail: Keep the message/rfc822 attachment visible after inline unwrapping
  • Mail: Strip sender and recipient names from forward-as-attachment filenames
  • Mail: Open mailto: links in the built-in composer
  • Mail: Spell out the full tag path in drag-and-drop toasts, so Personal/Receipts and Work/Receipts no longer read as the same tag
  • Mail: Act on current email state in the context menu's mark-as-read instead of a stale copy
  • Mail: Match the selected-row tint between dark and light mode
  • Mail: Restore lost animations after the Tailwind config move
  • Drafts: Restore the sender identity when reopening a draft
  • Calendar: Stop re-adding the organizer to the attendee list on every save (#731)
  • Calendar: Stop re-probing shared accounts that have no calendar access
  • Calendar: Route the parse dump through the debug logger
  • Contacts: Stop minting duplicate "Trusted Senders" address books (#730)
  • Contacts: Hide Contacts and Calendars when the account lacks the JMAP capability
  • Contacts: Require an explicit shared-account fallback for contacts and calendars
  • Files: Show the modification date instead of the creation date (#700)
  • PWA: Honor the configured theme color in the desktop title bar and keep it in step with the active theme (#671)
  • Accounts: Reconcile the stale persisted account chip after an impersonation handoff
  • Auth: Only request a credential cookie when the server has a SESSION_SECRET
  • JMAP: Split requests to stay inside the server's advertised limits β€” maxCallsInRequest, maxObjectsInGet/InSet, maxSizeRequest, and concurrency
  • JMAP: Treat an aborted SSE connect as a close, not a failure
  • JMAP: Surface the underlying network error cause in passthrough failures
  • Settings: Avoid leaving TZ="undefined" when restoring an unset timezone
  • Plugins: Stop a privileged plugin from reading another privileged plugin's PRF secret
  • Plugins: Correct the method names for message errors and crypto.getPublicKeys
  • i18n: Restore key parity across locales and the English send_timeout string
  • Docs: Document the remaining env vars in the env templates, and correct the facts and headings in README and FEATURES

  •  

v2.7.0

Door: kmendell
6 Augustus 2026 om 00:21

Important

Project variable resolution now matches the Docker Compose CLI

Previously, environment variables set on Arcane's own container (such as PORT) could be picked up when resolving ${VARIABLE} references in your projects' compose files. This could cause surprising results β€” for example, a project using ${PORT:-8191} could end up binding to Arcane's own port instead of its default (#3499).

Starting with this release, variable references in a project's compose file resolve only from:

  • your global Variables (.env.global)
  • the project's own .env file
  • defaults in the compose file itself (${VAR:-default})
  • timezone and locale from Arcane's environment (TZ, LANG, LANGUAGE, LC_ALL)

This means a project deployed through Arcane now resolves its variables the same way as running docker compose up in the project directory, and projects can no longer accidentally pick up Arcane's own configuration.

If a project referenced a variable that was only defined on Arcane's container, add it under Customization β†’ Variables to share it with all projects, or to that project's .env file. No other action is needed.

New features

  • simplify build registry image references (#3243 by @traeli)
  • add gated admin password reset to interal CLI (#3470 by @kmendell)
  • per user passkey mfa / passwordless login support (#3493 by @kmendell)
  • custom payload generic webhooks and google chat notifications (#3417 by @khanhx)
  • bump docker/compose to v5.4.0, gate diverged-volume recreation behind deploy option, pull pre_start hook and image-volume images (#3502 by @kmendell)

Bug fixes

  • synchronize structured log toggle state (#3418 by @Kstateag)
  • project log timestamps (#3456 by @Kstateag)
  • improve lifecycle permission diagnostics (#3404 by @Kstateag)
  • gate image event watcher to prevent registry rate limits (#3467 by @kmendell)
  • serialize bulk deletes and refresh image data (#3466 by @kmendell)
  • refresh image labels during self-upgrade (#3479 by @kmendell)
  • forward icon catalog setting over tunnel endpoints (#3495 by @kmendell)
  • update overridden env keys in place in effective .env instead of appending duplicates (#3496 by @kmendell)
  • bulk remove doing nothing on non-HTTPS deployments (#3498 by @kmendell)
  • stale environment bootstrap API keys accumulating and being undeletable (#3501 by @kmendell)
  • sheet panel animation restarting on hover during open (#3503 by @kmendell)
  • only grant default admin role during bootstrap or zero-admin recovery, not to any account named arcane (#3504 by @kmendell)
  • enforce configured password policy on all password creation and reset paths (#3505 by @kmendell)
  • stop leaking Arcane's own process environment into compose variable interpolation (#3508 by @kmendell)

CLI - Bug fixes

Dependencies

Other

  • move to coder/websocket library as it is actively maintained (#3431 by @kmendell)
  • move automation logic to use actors (#3458 by @kmendell)

Full Changelog: v2.6.0...v2.7.0

  •  
❌