BookStack v25.12.2
Links
Full List of Changes
This release contains the following fixes and changes:
- Updated translations with latest Crowdin changes. (#5970)
- Updated PHP dependency versions.
This release contains the following fixes and changes:
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
urlform global-option was changed to get
connection:close (don't reuse tcp/uds connections), as giving each client a fresh socket helps avoid all such issues e1eff21 b4fddbc
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
?smsg=foo 6dcb1ef
smsg configures which HTTP-methods to allow; can be set to GET,POST but default is only POST because GET is dangerous (CSRF)?ls was still a bit jank 0a3a807
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
vol-nospawn (volflag nospawn) to not automatically create the volume's folder on the server's HDD if it doesn't existvol-or-crash (volflag assert_root) to intentionally crash on startup if a volume's folder doesn't already exist on the server HDD--flo to tweak the log-format used by the -lo option for logging to a file 826e84cunlistc* volflags could not be specified for single-file volumes 2664891ipu option can once again be used to reject connections from certain IP-ranges caf831f
?ls nested virtual folders could return an error 6675039
Tip
If you like Part-DB, consider donating to support the development. Press the sponsor button on the main github page, for more info.
Important
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
Full Changelog: v2.4.0...v2.5.0
Added multi-domain support for OAuth/OpenID (#26312)
SSO callback URL generation and redirect validation now includes port matching to ensure redirects target the correct server.
Fixed getAsset returning all file fields instead of only those allowed by the users permissions (#25905)
getAsset / GET /assets/:id now respects directus_files permissions when returning file based fields.
/webhooks functionality across the stack. This includes the API route and its related tests, (#26311 by @mobml)/webhooks functionality across the stack. This includes the API route and its related tests, (#26311 by @mobml)getAsset returning all file fields instead of only those allowed by the users permissions (#25905 by @gaetansenn)AI_ENABLED environment variable to allow opting out of our AI chat feature (#26458 by @bryantgillespie)/webhooks functionality across the stack. This includes the API route and its related tests, (#26311 by @mobml)/webhooks functionality across the stack. This includes the API route and its related tests, (#26311 by @mobml)/webhooks functionality across the stack. This includes the API route and its related tests, (#26311 by @mobml)/webhooks functionality across the stack. This includes the API route and its related tests, (#26311 by @mobml)AI_ENABLED environment variable to allow opting out of our AI chat feature (#26458 by @bryantgillespie)FILES_MAX_UPLOAD_CONCURRENCY env variable (#26424 by @thomas-svrts)FILES_MAX_UPLOAD_CONCURRENCY env variable (#26424 by @thomas-svrts)AI_ENABLED environment variable to allow opting out of our AI chat feature (#26458 by @bryantgillespie)FILES_MAX_UPLOAD_CONCURRENCY env variable (#26424 by @thomas-svrts)aws:kms Server Side Encryption (#26377 by @Joey92)datetime, file, select-dropdown-m2o & collection-item dropdowns interfaces (#26365 by @ComfortablyCoding)nodemailer dependency from 7.0.10 to 7.0.11 (#26288 by @dependabot)cockroachdb failing on "Add Marketplace" migration (#26467 by @ComfortablyCoding)CACHE_SYSTEM_TTL (#26295 by @clintmoyer)nodemailer dependency from 7.0.10 to 7.0.11 (#26288 by @dependabot)AI_ENABLED environment variable to allow opting out of our AI chat feature (#26458 by @bryantgillespie)CACHE_SYSTEM_TTL (#26295 by @clintmoyer)AI_ENABLED environment variable to allow opting out of our AI chat feature (#26458 by @bryantgillespie)fields from object notation to dot syntax in SDK subscription queries (#26397 by @bruno-costa)@directus/app@15.0.0@directus/api@33.0.0@directus/composables@11.2.9create-directus-extension@11.0.25@directus/env@5.4.0@directus/extensions@3.0.16@directus/extensions-registry@3.0.16@directus/extensions-sdk@17.0.5@directus/memory@3.0.14@directus/pressure@3.0.14@directus/schema@13.0.5@directus/schema-builder@0.0.11@directus/specs@12.0.0@directus/storage-driver-azure@12.0.14@directus/storage-driver-cloudinary@12.0.14@directus/storage-driver-gcs@12.0.14@directus/storage-driver-s3@12.1.0@directus/storage-driver-supabase@3.0.14@directus/system-data@4.0.0@directus/themes@1.2.1@directus/types@14.0.0@directus/utils@13.1.1@directus/validation@2.0.14@directus/sdk@21.0.0
This release fixes a regression that resulted in the agent binary being dynamically linked, causing it to fail on musl-based Linux distributions like Alpine and OpenWrt. If you were affected by this, see below for instructions to fix.
update command now detects your system's C library and downloads the optimal binary (static or glibc) on Linux.If you updated to a version that currently fails to start (./beszel-agent: not found), you can restore your agent by running the following commands:
# 1. Download latest static binary (replace 'amd64' with your arch if different) curl -L https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_linux_amd64.tar.gz | tar -xz # 2. Replace the broken binary mv beszel-agent /opt/beszel-agent/beszel-agent chmod +x /opt/beszel-agent/beszel-agent # 3. Restart the service # For Alpine: rc-service beszel-agent restart # For OpenWRT: /etc/init.d/beszel-agent restart
Full Changelog: v0.18.1...v0.18.2
Fixes bug in 0.18.0 release where all containers were cleared from the "All Containers" page when any system returned no containers.
Additionally, there was a temporary problem with the :latest Docker image which may have caused your agents to report as down. This is fixed now and you can re-pull the image if necessary: #1618 (comment)
--url and --token command line arguments to the agent. (#1524)SMART_INTERVAL environment variable to customize S.M.A.R.T. data collection interval.system_details collection to store infrequently updated system information.smartctl timeout to 15 seconds. (#1465)Full Changelog: v0.17.0...v0.18.0
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
?apnd was possible in volumes with non-reflink dedup, where it could propagate to deduped copies of the file 738a419
Note
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
Note
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
Tip
If you like Part-DB, consider donating to support the development. Press the sponsor button on the main github page, for more info.
Important
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
Full Changelog: v2.3.0...v2.4.0
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
im, iv, ac, djup_by and up_ip (uploader info) can now be displayed for non-admin users by adding them to the mte option 7bfd370PW header (thx @Le0Developer!) 120fdfbpw url-param and http-header can be changed f81d80b
dotfiles button now also toggles showing unlisted files e55e5a4/?h&ls (the api to list volumes) now includes the user's permissions for each volume 1f6e811
BookStack v25.12.1 has been released.
This is a security release which adds limits to search operations, and adds size checks to ZIP import files before they are extracted.
These changes help prevent potential abuse to host disk space usage and/or service availability.
We recommended to update your instance if untrusted users have ZIP import permissions, or if untrusted users can perform searches.
Thanks to Jeong Woo Lee (@eclipse07077-ljw) and Gabriel Rodrigues (aka TEXUGO) for reporting these vulnerabilities.
Note
If someone is asking you to pay money for access to UpSnap binaries, source code, or licenses, you are being scammed.
The official and only trusted source for UpSnap is this repository (and its linked releases).
Do not pay third parties for something that is provided here for free.
This is a major release, just in time for the holidays π
Selected new features β¨:
userdate:PT1H for the past hourImproved performance ποΈ:
Selected bug fixes π:
Breaking changes π₯:
This release has been made by @Alkarex, @Frenzie, @Inverle, @aledeg, @andris155, @horvi28, @math-GH, @minna-xD and newcomers @Darkentia, @FollowTheWizard, @GreyChame1eon, @McFev, @jocmp, @larsks, @martinhartmann, @matthew-neavling, @pudymody, @raspo, @scharmach, @scollovati, @stag-enterprises, @vandys, @xtmd, @yzx9.
Full changelog:
userdate:PT1H for the past hour #8093\b and \B for regex search using PostgreSQL #8141~ subsequent-sibling #8154
Retry-After rules for proxies #8029, #8218data: to CSP in subscription controller #8253Retry-After #8195f.kind to ease migrations from FreshRSS versions older than 1.20.0 #8148config.custom.php during install #8033window.bcrypt object #8166chart.js v4 update #8298WordPress.com HTTP duplicates with WebSub Automattic/pushpress#16cli/health.php compatibility with OpenID Connect #8040cli/access-permissions.sh to detect the correct permission Web group such as www-data, apache, or httpexec() function for git update #8228DOMDocument::saveHTML() scrambling charset encoding in some versions of libxml2 #8296php-intl #8334<select> #8190Promise to async/await: #8182move #8214lib_rss.php with potential breaking changes for some extensions #8193,#[Deprecated] #8325--no-progress #8315
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
xf-proto-fb to support reverseproxies which do not provide an x-forwarded-proto header 9c64788
--ipar, reverseproxy-aware alternative to --ipa 3368421
idp-chsub can be used to replace spaces in IdP usernames/groupnames 5e1d9a5@acct group was unavailable in groupless IdP setups b6c2ec1
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
prologues, epilogues, readmes, preadmes (global-options and/or volflags) accept a comma-separated list of filenames to look forthank you for playing ban-message ce2eebaCache-Control response-header 3bc0bf1
ipu with idp users 594ec39@eaDir 1b0eb45X-Forwarded-Proto is not added by the reverseproxy ad45de9 1b222fb
X-Forwarded-Host too before realizing that's generally not a thingchpw.json before starting copyparty is now supported and no longer crashes on startup efc6a09
fetchRolesTree,fetchGlobalAccess, fetchGlobalAccessForUser and fetchGlobalAccessForRoles to the public utility package (#26248 by @ComfortablyCoding)fetchRolesTree,fetchGlobalAccess, fetchGlobalAccessForUser and fetchGlobalAccessForRoles to the public utility package (#26248 by @ComfortablyCoding)files.upload when TUS is enabled (#26247 by @br41nslug)fetchRolesTree,fetchGlobalAccess, fetchGlobalAccessForUser and fetchGlobalAccessForRoles to the public utility package (#26248 by @ComfortablyCoding)esbuild dependency from 0.25.12 to 0.26.0 (#26215 by @dependabot)esbuild dependency from 0.25.12 to 0.26.0 (#26215 by @dependabot)esbuild dependency from 0.25.12 to 0.26.0 (#26215 by @dependabot)@directus/app@14.4.0@directus/api@32.2.0@directus/composables@11.2.8create-directus-extension@11.0.24@directus/env@5.3.3@directus/errors@2.1.0@directus/extensions@3.0.15@directus/extensions-registry@3.0.15@directus/extensions-sdk@17.0.4@directus/memory@3.0.13@directus/pressure@3.0.13@directus/schema-builder@0.0.10@directus/storage-driver-azure@12.0.13@directus/storage-driver-cloudinary@12.0.13@directus/storage-driver-gcs@12.0.13@directus/storage-driver-s3@12.0.13@directus/storage-driver-supabase@3.0.13@directus/stores@2.0.0@directus/system-data@3.5.0@directus/themes@1.2.0@directus/types@13.5.0@directus/utils@13.1.0@directus/validation@2.0.13@directus/sdk@20.3.0
BookStack v25.11.6 has been released.
This is a security release to address a vulnerability in our dependencies related to XML
handling, which could allow users to replay SAML authentication requests with specially crafted & manipulated requests.
It's strongly advised to update if you're using SAML authentication for BookStack.
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.
Tip
If you like Part-DB, consider donating to support the development. Press the sponsor button on the main github page, for more info.
Important
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
COMPOSER_EXTRA_PACKAGES env to docker containers, to install additional composer packages, like email bridges (#1138)Full Changelog: v2.2.1...v2.3.0
New
Bug Fixes
Enhancements:
Security
This release contains the following fixes and changes:
DISK_USAGE_CACHE environment variable. (#1426)SKIP_SYSTEMD environment variable. (#1448)Full Changelog: v0.16.1...v0.17.0
there is a discord server with an @everyone in case of future important updates, such as vulnerabilities (most recently 2025-09-07)
0 will run the next hook (if any), and let the initiating action proceed if no other hooks object100 will stop processing successive hooks, but return success, letting the initiating action proceedstats-u to grant access to prometheus-metrics based on username, not just permissions b427d78mt button (webworkers) was enabled in the settings tabgrid volflag is applied during navigation if user has not set a preference a9378a8-j is usually a bad idea cad15fb
Note: This was originally accidentally published as v24.11.4, so this is essential a re-publish with the correct version.
The wrong version number commit/history has been retained though to prevent any breakages for git-managed environments.
This release contains the following fixes and changes:
Release v24.11.4
_by_id querying with M2A filters in GraphQL (#26233 by @ComfortablyCoding)@directus/app@14.3.0@directus/api@32.1.1