What arangodb/arangodb shipped
Written by FoxPlug from the repository's own releases; not affiliated with Arangodb. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/arangodb/arangodb; Arangodb did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- AQL sorted COLLECT now reuses a preceding SORT only if that SORT starts with the group variables, so grouped rows stay adjacent and each group is returned once with its count and aggregate values. Pull request #23603
- MATCH with a bare unbound vertex that has no label now reports a parse error asking for a label or an earlier binding instead of an internal variable-not-found error. Pull request #23586
- MATCH results now correctly reflect inline projections on the endpoints of a variable-length segment. Pull request #23577
- FullCount no longer double-counts for an empty COLLECT AGGREGATE; a query over empty input with LIMIT and fullCount true reports 1 instead of 2. Pull request #23554
- The IVF vector index now reports profiling statistics on searches, lists scanned and centroid selection time. Pull request #23535
- The server checks the x-arango-api-version request header against its version and includes a version header in responses. Pull request #23588
- The temporary directory is now set up once in a thread-safe way, removing a race between a hot backup upload and download that start at the same time. Pull request #23585
- A collection is accessed from the transaction only after begin succeeded, avoiding an assertion when begin fails, for example because the shard was dropped. Pull request #23595
- Foxx installer url matching was improved. Pull request #23591
- The docs version remark for the http.decompressed-request-body-global-memory-limit startup option was corrected. Pull request #23567
Why it matters
Queries get correctness fixes this week: sorted COLLECT no longer repeats groups, fullCount stops double-counting empty aggregates, and MATCH handles unbound vertices and projected variable-length endpoints properly. Vector index users gain profiling statistics on search time. Stability work covers thread-safe temp directory setup and a transaction begin assertion.
Changelog entry
- AQL: a sorted COLLECT reuses a preceding SORT only if it starts with the group variables. Pull request #23603
- Backport of the sorted COLLECT SORT reuse fix to 3.12. Pull request #23605
- AQL: fixed fullCount double-counting for an empty COLLECT AGGREGATE. Pull request #23554
- Forward port of the fullCount fix for empty COLLECT AGGREGATE. Pull request #23604
- MATCH: an unbound vertex without a label now reports a parse error instead of an internal error. Pull request #23586
- MATCH: endpoints of a variable-length segment now honor inline projections in the path. Pull request #23577
- Added IVF vector index profiling statistics for searches, lists scanned and centroid selection time. Pull request #23535
- The server checks x-arango-api-version against its own version and includes a version header in responses. Pull request #23588
- Collections are accessed from a transaction only after begin succeeded. Pull request #23595
- Backport of the transaction begin collection access fix to 3.12. Pull request #23596
- The temporary directory is set up once thread-safely, and shard sync checks wait for Current. Pull request #23585
- Docs: fixed the version remark for the http.decompressed-request-body-global-memory-limit startup option. Pull request #23567
This week: sorted COLLECT only reuses a SORT starting with the group variables, fullCount no longer double-counts empty COLLECT AGGREGATE, MATCH fixes for unbound vertices and projected variable-length endpoints, and IVF index profiling stats.
This week's changes to arangodb/arangodb include several query correctness fixes. A sorted COLLECT now reuses a preceding SORT only when it starts with the group variables, so each group is returned once. fullCount no longer reports 2 for an empty COLLECT AGGREGATE with LIMIT, and MATCH now reports a parse error for an unbound vertex without a label instead of an internal error. Inline projections on the endpoints of a variable-length MATCH segment are now reflected in results. The IVF vector index exposes profiling statistics on searches and centroid selection, the server checks the x-arango-api-version header, the temporary directory is set up thread-safely, and collections are accessed from a transaction only after begin succeeded.
Week of October 26, 2026
What shipped
- Fixed fullCount reporting one too high for COLLECT WITH COUNT combined with LIMIT. Pull request #23539
- Fixed LENGTH() and COUNT() of a subquery with COLLECT returning null or zero instead of the subquery's row count. Pull request #23543
- Fixed an IndexNode skipping index lookups of an OR condition when an output block filled exactly. Pull request #23544
- Fixed smart joins on smart edges returning fewer edges when the SmartGraph is not disjoint. Pull request #23547
- Fixed AQL traversals returning null for path attributes when a path variable is used inside an expansion in a non-trivial way. Pull request #23512
- Fixed traversal FILTER conditions on path vertices or edges dropping outer document attributes from projections. Pull request #23520
- Extended projection pushdown to MATCH collection scans, including attributes used in inline RETURN lists and WHERE conditions. Pull request #23481
- Changed PUT /_api/query/properties to require a new UpdateQueryProperties permission scoped to the request's database instead of the admin AQL permission. Pull request #23515
- Requests with invalid API versions in the URL are now consistently rejected with 404 and an error listing the valid version prefixes. Pull request #23507
- Added a startup option to cap global memory for concurrent decompression of request bodies, defaulting to 10 percent of physical memory. Pull request #23486
Why it matters
This week brings several correctness fixes for AQL queries that could silently return too few rows or wrong counts, including COLLECT WITH COUNT, OR conditions answered by several index lookups, subquery length and count, and smart edge joins. Two traversal projection bugs are also fixed, and permissions for updating query properties moved to a database-scoped permission.
Changelog entry
- Fix fullCount being one too high for COLLECT WITH COUNT combined with LIMIT. Pull request #23539
- Fix LENGTH() and COUNT() of a subquery with COLLECT returning null or zero instead of the subquery row count. Pull request #23543
- Fix IndexNode skipping later index lookups of an OR condition when an output block filled exactly. Pull request #23544
- Fix smart joins on smart edges losing edges stored with a vertex in another shard when the SmartGraph is not disjoint. Pull request #23547
- Fix traversal path attributes returning null when a path variable is used inside an expansion in a non-trivial way. Pull request #23512
- Fix traversal FILTER on path vertices or edges dropping outer document attributes from projections. Pull request #23520
- Push MATCH projections to collection scans, including attributes from inline RETURN lists and WHERE conditions. Pull request #23481
- PUT /_api/query/properties now requires the new database-scoped UpdateQueryProperties permission instead of admin AQL permission. Pull request #23515
- Reject invalid API versions in the URL consistently with 404 and an error message listing valid version prefixes. Pull request #23507
- Add startup option http.decompressed-request-body-global-memory-limit to cap global memory for concurrent decompression, defaulting to 10 percent of physical memory. Pull request #23486
- Make arangosearch AQL type analyzer execution interruptible. Pull request #23414
- Update bundled boost to 1.92.0 via CMake FetchContent and remove the old 1.78.0 source. Pull request #23522
This week: fixed fullCount for COLLECT WITH COUNT, subquery LENGTH/COUNT with COLLECT, skipped index lookups in OR conditions, smart edge joins, and two traversal projection bugs. Invalid API versions now get a clear 404.
This week's changes include several AQL correctness fixes: fullCount reporting one too high for COLLECT WITH COUNT with LIMIT, LENGTH and COUNT of a subquery with COLLECT returning null or zero, an IndexNode skipping index lookups of an OR condition when an output block filled exactly, smart edge joins losing edges on non-disjoint SmartGraphs, and two traversal projection bugs that produced null attributes or too few results. Projection pushdown now also covers MATCH collection scans. PUT /_api/query/properties requires a new database-scoped UpdateQueryProperties permission, invalid API versions in the URL are rejected with a 404 listing valid prefixes, and a new startup option caps global memory for concurrent request body decompression.
Week of October 19, 2026
What shipped
- Admins can now list, inspect and abort other users' stream transactions via /_api/transaction using new AdminMonitorTransactions and AdminKillTransactions permissions. Pull request #23450
- AQL query monitoring and killing now use dedicated AdminMonitorAqlQueries and AdminKillAqlQueries permissions instead of the generic AdminAqlQueries. Pull request #23449
- RocksDB now applies iterator bounds in write transactions, letting the storage engine enforce range limits on uncommitted changes. Pull request #23505
- LZ4, gzip and deflate decompression requests now have a configurable size limit, defaulting to 512 MiB, via the new --http.max-decompressed-request-body-size flag. Pull request #23441
- Fixed a bug where an AQL FILTER combining equality (IN [...] or ==) with a range operator on the same string attribute could collapse into NoResultsNode when byte order disagrees with ICU order. Pull request #23502
- Fixed a bug where a subquery in an array expansion inside a ternary was evaluated unconditionally instead of respecting conditions outside the expansion. Pull request #23501
- The planner now emits ERROR_QUERY_MATCH_EXCLUDED_ATTRIBUTE when a query accesses an attribute excluded by a MATCH inline projection, instead of returning null at runtime. Pull request #23447
- When reading JWT secrets from a folder, only regular files and symlinks to them are processed. Pull request #23477
- Fixed miscalculation of soft, hard limits and allocated values in document cache metadata that could drive cache allocation beyond limits. Pull request #23485
- The join rule is now stricter: JoinNodes are not placed when an IndexNode post filter refers to another IndexNode's out document, and post filters may only refer to variables valid before the first IndexNode. Pull request #23503
Why it matters
This week brings finer-grained access control for transactions and AQL queries through new RBAC permissions, giving administrators more control over other users' operations. It also delivers a configurable limit for decompressed request bodies to protect against oversized payloads, and several correctness fixes in AQL conditions and caching. The storage engine now applies iterator bounds in write transactions, which improves consistency in transactional reads.
Changelog entry
- Admins can now list, inspect and abort other users' stream transactions via /_api/transaction using AdminMonitorTransactions and AdminKillTransactions permissions. Pull request #23450
- AQL monitoring and killing now use AdminMonitorAqlQueries and AdminKillAqlQueries permissions instead of AdminAqlQueries. Pull request #23449
- RocksDB now applies iterator bounds in write transactions. Pull request #23505
- Added --http.max-decompressed-request-body-size flag, default 512 MiB, shared by gzip, deflate and LZ4. Pull request #23441
- Fixed AQL FILTER with equality and range operators on the same string attribute collapsing to NoResultsNode when byte order disagrees with ICU order. Pull request #23502
- Fixed subquery in array expansion inside ternary being evaluated unconditionally. Pull request #23501
- Planner now emits ERROR_QUERY_MATCH_EXCLUDED_ATTRIBUTE when a MATCH projection excludes an accessed attribute. Pull request #23447
- JWT secret folder reading now only processes regular files and symlinks to them. Pull request #23477
- Fixed miscalculation of soft, hard limits and allocated values in document cache metadata. Pull request #23485
- Join rule is stricter: no JoinNode when a post filter refers to another IndexNode's out document, and post filters must only refer to variables valid before the first IndexNode. Pull request #23503
- Set server.jwt-renewal-threshold default to match the server's renewal threshold. Pull request #23463
- Adopted a new way of remoting GDB after the old method stopped working. Pull request #23519
New RBAC permissions let admins monitor and kill other users' transactions and AQL queries. Also: configurable decompression size limit, AQL condition fixes, and RocksDB iterator bounds in write transactions.
This week's updates include new RBAC permissions: AdminMonitorTransactions and AdminKillTransactions let admins inspect and abort other users' stream transactions via API, while AdminMonitorAqlQueries and AdminKillAqlQueries enable monitoring and killing others' AQL queries. A configurable decompression size limit now protects against oversized request bodies, defaulting to 512 MiB. Several AQL fixes address ternary subqueries, IN with range operators, and MATCH projection warnings. Cache manager limits are corrected, and RocksDB now applies iterator bounds in write transactions.
Week of October 12, 2026
What shipped
- Fixed AND and OR comparison in AQL so the two orders are treated as commutative and no longer return wrong results. Pull request #23465
- Changed the smart-joins optimizer rule to only join across SatelliteCollections, fixing queries that returned too few rows. Pull request #23474
- Restricted propagate-constant-attributes to attributes of variables so filters like FIRST().attr no longer rewrite join conditions and return too many rows. Pull request #23469
- Stopped the optimizer from using an index when the lookup value is non-deterministic, fixing wrong results with filters such as FLOOR(RAND() * 2). Pull request #23478
- Limited upgrade-scatter-to-distribute to upgrade a ScatterNode only when it handles the node, fixing queries where an ArangoSearch view in a loop returned no rows. Pull request #23476
- Fixed AQL arithmetic to handle integer and double operations separately, avoiding wrong results past 2^53. Pull request #23470
- Fixed the ROUND AQL function to handle corner cases correctly for very large numbers. Pull request #23467
- Fixed TO_NUMBER to parse with std::from_chars, including hex numbers and small values like 1e-308 and 5e-324. Pull request #23466
- Fixed locale usage in LOWER and UPPER for languages with special lowercase and uppercase letters. Pull request #23489
- Fixed FIND_LAST so a search such as FIND_LAST("café", "é", 0, 3) returns 3 instead of -1. Pull request #23455
Why it matters
This week brings a set of AQL correctness fixes: several optimizer rules and functions could return wrong results or too many or too few rows in specific queries. Users running queries with AND and OR, smart joins, constant attribute propagation, or large-number arithmetic should see correct results now.
Changelog entry
- Fix AND and OR not being commutative in AQL comparisons. Pull request #23465
- Smart-joins now only skips SatelliteCollections between joined collections. Pull request #23474
- Propagate-constant-attributes now only uses attributes of variables. Pull request #23469
- Do not use an index when the lookup value is non-deterministic. Pull request #23478
- Upgrade-scatter-to-distribute now only upgrades nodes it handles. Pull request #23476
- Fix AQL arithmetic by handling integer and double operations separately. Pull request #23470
- Fix the ROUND AQL function for corner cases. Pull request #23467
- Fix the TO_NUMBER AQL function for corner cases. Pull request #23466
- Fix locale usage in LOWER and UPPER. Pull request #23489
- Fix FIND_LAST return value for offset searches. Pull request #23455
- Fix clang 20 compilation. Pull request #23448
- JoinNode no longer joins persistent and primary indexes together. Pull request #23437
This week: AQL correctness fixes. AND/OR now behave commutatively, smart-joins only joins across SatelliteCollections, and constant attribute propagation is restricted to variables. Indexes are no longer used for non-deterministic lookups.
This week we shipped a set of AQL correctness fixes. AND and OR are now treated as commutative, smart-joins only joins across SatelliteCollections, and propagate-constant-attributes only uses attributes of variables, so affected queries no longer return too many or too few rows. The optimizer no longer chooses an index when the lookup value is non-deterministic. Arithmetic now handles integers and doubles separately, ROUND and TO_NUMBER handle corner cases, and LOWER, UPPER, CONTAINS and FIND_LAST are fixed.
Week of October 5, 2026
What shipped
- AQL now uses a sparse index for an OR branch only when that branch excludes null, so documents that match only through the other branch are no longer missing. Pull request #23418
- SUBSTITUTE no longer skips a match when a replacement overlaps another search value's next match. Pull request #23416
- Getcwd(nullptr, 0) was replaced with std::file_systems::current_path() and unused getcwd() lines were removed. Pull request #23370
- Unit tests were added for the read_cwd() and ensure_absolute() functions. Pull request #23381
- The hotbackup list API always returns a valid time stamp, so the CreationTime field is never an empty string. Pull request #23445
- Several small issues in the Join Node were fixed, including missing copies of filterProjections and isUniqueStream in clone and incorrect strategy reset on skip. Pull request #23429
- Error handling during arangosh connections was fixed. Pull request #23405
- Velocypack was updated to parse doubles using fast float parsing. Pull request #23435
Why it matters
This week brings fixes that change query results directly: sparse indexes are no longer used for OR branches that include null, and SUBSTITUTE no longer skips matches. Backups now always report a valid creation time, and arangosh connections handle errors more reliably.
Changelog entry
- Fixed the optimizer so a sparse index is used for an OR branch only if the branch excludes null. Pull request #23418
- Fixed SUBSTITUTE skipping a match when a replacement overlapped the next match of another search value. Pull request #23416
- The hotbackup list API now always returns a valid time stamp. Pull request #23445
- Fixed the Join Node to copy filterProjections and isUniqueStream in clone and to reset the strategy correctly on skip. Pull request #23429
- Replaced getcwd(nullptr, 0) with std::file_systems::current_path(). Pull request #23370
- Added unit tests for read_cwd() and ensure_absolute(). Pull request #23381
- Updated velocypack to parse doubles with fast float parsing. Pull request #23435
- Fixed error handling during arangosh connections. Pull request #23405
AQL fix: sparse indexes are used only for OR branches that exclude null, so results are correct. SUBSTITUTE no longer skips matches. Hotbackup list always returns a valid time stamp. Several Join Node issues fixed. arangosh error handling fixed.
This week a few correctness fixes landed. The optimizer now uses a sparse index for an OR branch only when that branch excludes null, so documents matching through the other branch are no longer dropped. SUBSTITUTE no longer skips a match when a replacement overlaps another search value's next match. The hotbackup list API now always returns a valid time stamp. Several small Join Node issues were fixed, including missing copies in clone and an incorrect strategy reset on skip. arangosh error handling was also fixed.
Week of September 28, 2026
What shipped
- Released version 3.12.12.1. Release
- Released version 3.11.14.6. Release
- Updated brace-expansion to 5.0.12 and fast-uri to 3.1.8 to resolve multiple CVEs. Pull request #23407
- MATCH queries now disallow filters and constraints on variables that reference documents defined outside the MATCH pattern. Pull request #23392
- Client tools arangodump, arangorestore, arangoexport, arangobench, and arangobackup now request and renew JWT tokens automatically when started with username and password. Pull request #23342
- MDI index queries in write transactions now stay within their index to prevent returning duplicate documents. Pull request #23380
- Improved floating point number calculation in array functions to handle larger ranges without extra elements. Pull request #23330
- Fixed SUBSTITUTE function to handle empty replacement strings correctly. Pull request #23353
- Fixed AQL REVERSE function to keep characters above U+FFFF intact instead of breaking them into replacement characters. Pull request #23376
- Document validation is now ignored during initial syncing to prevent replication failures from stale vertex references. Pull request #23368
Why it matters
Two patch releases address stability and security issues across the 3.12 and 3.11 branches. Multiple AQL query fixes improve correctness for MATCH patterns, regex matching, sparse indexes, and string operations. Client tooling enhancements streamline authentication workflows.
Changelog entry
- Security: Updated brace-expansion to 5.0.12 and fast-uri to 3.1.8 to resolve CVE-2026-102276, CVE-2026-102277, CVE-2026-102278, and CVE-2026-86472 Pull request #23407
- AQL: MATCH queries now disallow filters and constraints on variables referencing external documents Pull request #23392
- Tools: arangodump, arangorestore, arangoexport, arangobench, and arangobackup now automatically request and renew JWT tokens Pull request #23342
- AQL: Fixed MDI index queries in write transactions to prevent duplicate document results Pull request #23380
- AQL: Fixed SUBSTITUTE function to correctly handle empty replacement strings Pull request #23353
- AQL: Fixed REVERSE function to preserve characters above U+FFFF instead of breaking them Pull request #23376
- AQL: Fixed REGEX_MATCHES to correctly handle empty input strings Pull request #23377
- AQL: Fixed sparse MDI index queries to accept non-comparison filter conditions Pull request #23378
- Replication: Document validation now ignored during initial syncing to prevent stale vertex reference failures Pull request #23368
- Fixed floating point calculation in array functions to handle larger numeric ranges Pull request #23330
- Fixed web UI error message when creating indexes with arangosearch view links Pull request #23354
- Fixed use-after-free vulnerability in JWT token renewal Pull request #23366
Shipped v3.12.12.1 and v3.11.14.6 with security updates and fixes for AQL queries, client authentication, and MDI indexes. MATCH now validates reference constraints, and REVERSE correctly handles emoji and special characters.
This week we released v3.12.12.1 and v3.11.14.6, addressing security vulnerabilities and improving query reliability. Updates include stricter MATCH constraint validation, JWT token auto-renewal in client tools, fixes for MDI index behavior in transactions, and corrections to string and numeric operations in AQL. These releases ensure better data consistency, security, and developer experience across supported versions.
Week of September 21, 2026
What shipped
- Released version 3.12.12. Release
- Released version 3.12.11.1. Release
- Client tools arangodump, arangorestore, arangoexport, arangobench, and arangobackup now request and renew JWT tokens from the server when started with username and password. Pull request #23341
- Arangodump, arangorestore, and arangosh now renew JWT tokens during execution to prevent timeouts on long-running operations. Pull request #23308
- Vector index is now enabled by default in all setups. Pull request #23333
- Added maximum WAL point TTL to prevent clients from indefinitely pinning RocksDB WAL. Pull request #23339
- ArangoSearch stats API now returns information about all indexes across all ArangoSearch stores instead of just the first store. Pull request #23303
- Fixed graph traversal bug where integer underflow caused the server to skip edges when refilling cache. Pull request #23316
- Fixed AQL UPDATE with keepNull: false on non-disjoint SmartGraphs leaving attributes in the shadow collection. Pull request #23318
- Metric names are now escaped for Prometheus output compatibility. Pull request #23340
Why it matters
Two patch releases ship this week with critical fixes for JWT token handling in long-running operations and graph traversal. The default enablement of vector indexing and improved ArangoSearch stats reporting expand functionality for users working with advanced index types and analytics.
Changelog entry
- Released v3.12.12 Release
- Released v3.12.11.1 Release
- Client tools (arangodump, arangorestore, arangoexport, arangobench, arangobackup) request and renew JWT tokens via /_open/auth when started with username and password Pull request #23341
- Arangodump, arangorestore, and arangosh renew JWT tokens if they expire during long-running operations Pull request #23308
- Fixed JWT vs.
jwt_secrethandling in additional places Pull request #23346 - Vector index enabled by default in all setups Pull request #23333
- Added maximum WAL point TTL to prevent indefinite WAL pinning by clients Pull request #23339
- ArangoSearch stats API (/_admin/arangosearch/stats) now returns statistics for all indexes across all stores Pull request #23303
- Fixed graph traversal missing edges due to integer underflow when refilling cache Pull request #23316
- Fixed AQL UPDATE with keepNull: false leaving attributes in non-disjoint SmartGraph shadow collections Pull request #23318
- Metric names are now properly escaped for Prometheus output format Pull request #23340
- Separated fixed-length and variable-length relationship handling in MATCH queries Pull request #23332
- Added comprehensive unit tests for MATCH components including PatternTypes, VariableScope, and PathConstruction Pull request #23344
- Refactored MATCH path construction into dedicated logic Pull request #23310
- Fixed flaky NetworkFeature assertion in restart tests Pull request #23312
- Fixed forwarding of API version in /_arango/experimental/_admin/activities requests Pull request #23325
- Fixed StringBuffer pre-allocation in lz4Decompress with size validation Pull request #23332
- Fixed improper AstNode comparison for non-const objects that generated invalid vpack Pull request #23311
- Made OBJECT comparison order-independent when keys are safe to reorder Pull request #23313
- Fixed TSAN race conditions in faiss IVF_HNSW parallel searches Pull request #23327
3.12.12 and 3.12.11.1 released. JWT tokens now auto-renew in client tools for long operations. Vector index enabled by default. Graph traversal and SmartGraph UPDATE bugs fixed.
Versions 3.12.12 and 3.12.11.1 are now available. Key improvements include automatic JWT token renewal in arangodump, arangorestore, and other client tools to prevent timeout failures, vector index enabled by default, expanded ArangoSearch stats to cover all indexes, and fixes for graph traversal edge skipping and SmartGraph UPDATE operations.
Week of September 14, 2026
What shipped
- Fixed returnNew/returnOld incorrectly being stored as document attributes in shadow collections on non-disjoint SmartGraphs, causing inconsistency between edge halves. Pull request #23279
- Fixed shutdown crash caused by a race condition in the heartbeat thread that did not wait for scheduled work items to complete. Pull request #23299
- Fixed UI login for users without _system database access. Pull request #23301
- Fixed SUBSTITUTE function to return empty string instead of null when operating on empty input strings. Pull request #23297
- Security fix applied to address COR-984. Pull request #23295
- Made swagger.json publicly available again at /_admin/aardvark/api/ for REST API documentation without authentication. Pull request #23291
- Restored public access to / root path for Aardvark UI when authentication-system-only is disabled. Pull request #23281
- Improved arangodump error messages to include actual server errors when connection attempts fail. Pull request #23274
- Hardened JavaScript sandbox settings and removed broken routes in /_admin/foxx/* endpoints. Pull request #23298
- Added typed AST node wrappers for MATCH and PATTERN_MATCH_EXPRESSION with updated builder and normalizer entry points. Pull request #23305
Why it matters
This week includes fixes for critical issues affecting SmartGraphs, server stability, and UI accessibility. Security improvements and hardened JavaScript sandbox settings strengthen the platform. Refactoring of MATCH query planning code improves code organization and maintainability.
Changelog entry
- Fixed returnNew/returnOld being incorrectly stored as document attributes in shadow collections on non-disjoint SmartGraphs Pull request #23279
- Fixed shutdown crash caused by race condition in heartbeat thread Pull request #23299
- Fixed UI login for users without _system database access Pull request #23301
- Fixed SUBSTITUTE function returning null instead of empty string on empty input Pull request #23297
- Security fix for COR-984 Pull request #23295
- Restored public access to swagger.json at /_admin/aardvark/api/ Pull request #23291
- Restored public access to root path / for Aardvark UI Pull request #23281
- Improved arangodump error messages to display actual server errors Pull request #23274
- Hardened JavaScript sandbox settings and removed broken routes in Foxx endpoints Pull request #23298
- Added typed AST node wrappers for MATCH query planning Pull request #23305
Week 25 shipped: SmartGraph attribute fix, shutdown race condition fix, UI login for non-_system users, SUBSTITUTE on empty strings, API documentation access restored, and security improvements.
This week's release includes important fixes for SmartGraph consistency issues, a critical shutdown race condition, and improved UI accessibility for users without _system access. We've also restored public access to API documentation and strengthened security with hardened sandbox settings. These changes address stability, usability, and security concerns identified by the community.