TerminusDB 12.0 Changelog

Open inAnthropic

Every open-source release in the TerminusDB 12.0 line, newest first. Releases marked with a feature page link have a dedicated write-up of what shipped.

v12.0.8

Released 12 October 2026 · GitHub release · Feature page · Full changelog

Thanks to our two new contributors in this 12.0.8 release 👏

New functionality

  • UuidV7 key strategy: generated UUIDs, arbitrary IRIs (!!), WOQL (#2547)

Developer experience (DX) improvments

  • Faster CLI and integration test battery via parallelism and startup trims (#2543)

Maintenance and Bugfixes

  • Fix unbundle failing with unknown_layer_reference across stores (#2540)
  • Fix significant insert performance regressions (#2529)
  • Fix field-level @unfold being silently ignored for List and multi-dim Array properties (#2513)
  • Accept @shared class annotation in GraphQL frames (#2533)
  • Remove leftover GraphQL debug logging that panics on multibyte UTF-8 (#2532)
  • Put with charset=utf-8 regression on PUT prevented document write (#2544)
  • Fix garbled UTF-8 in streaming history endpoint response (#2545)
  • Bump JS integration test packages: axios, qs, source-map-js, js-yaml, brace-expansion, joi, stream-json
  • Bump rustls from 0.23.43 to 0.23.45 in /src/rust (#2526)
  • JWT scopes (upgrade) now resolves roles by id, not display name (#2539)
  • Remove a debug log detected via #2530 (#2534)
  • Fix GraphQL __typename and fragment resolution on dynamically generated types (#2551)
  • Fix WOQL JSON boolean and list scalar insertion (#2546)

New Contributors (thank you!!)

  • @hideo67 made their first contribution (#2532)
  • @bixycler made their first contribution (#2513)

v12.0.7

Released 10 August 2026 · GitHub release · Feature page · Full changelog

Thanks to no less than three new contributers in this 12.0.7 release 👏

New clients

  • Add Elixir Client link to README (#2455)

New functionality

  • Apply explicit diffs (#2486)
  • Add unfold parameter to the diff API endpoint (#2464)

Maintenance and Bugfixes

  • Fix RFC 3986 scheme detection in uri_has_protocol/1 (#2458)
  • Fix false patch conflict on xsd:decimal properties (#2462)
  • Add @shared to rust change detection algorithm (#2478)
  • docs: document protoc and make install-deps prerequisites for macOS build (#2502)
  • Upgrade swipl to 10.0.2, with the jwt implementation backed by Rust, (#2507)

New Contributors

  • @Kidnix101 made their first contribution (#2486)
  • @drernie made their first contribution (#2502)
  • @thanos made their first contribution (#2455)

v12.0.6

Released 24 June 2026 · GitHub release · Feature page · Full changelog

New functionality

  • @shared class-level annotation for cascade-deleted shared documents, (#2437)
  • Add api to render handlebars embeddings, (#2447)

Bugfixes

  • Fix @ref capture resolution with TaggedUnion variants, (#2432)
  • Fix silent document loss for non-ASCII characters in document API, (#2450)
  • fix: handle dicts/lists/numbers in SwapValue patches, (#2438)

Maintenance

  • Bump dependencies: lodash flatted picomatch picomatch tar brace-expansion pytest form-data follow-redirects qs rand tar axios js-yaml to new versions

v12.0.5

Released 26 March 2026 · GitHub release · Feature page · Full changelog

Enhancements

  • Add diff and streaming to history endpoint and bugfix to document change detection (#2397)
  • Enable group_by on more types - by fixing unliterally to handle compound terms (#2403)
  • Support merge_repeats on document interface update too (#2410)

Maintenance

  • Bump minimatch from 3.1.3 to 3.1.5 in /tests (#2399)
  • Switch trivy to non-vulnerable version (#2417)

Bugfixes

  • Only run auto-optimize on write and with parent (#2400)
  • Fix race condition: reject operations on databases still being created #2407

v12.0.4

Released 25 February 2026 · GitHub release · Feature page · Full changelog

We are proud to release v12.0.4, a massive milestone in the 12.x release series.

Highlights and core enhancements

  • support for very fast range queries over triples
  • ISO8601 date, time, and interval predicates (Allen interval algebra) for WOQL
  • schema context elements now managed atomically, introduced JSON for @context and @metadata elements in the schema.
  • @context value as IRI in schema context, is provided as JSON-LD header value in document API if set (custom context)
  • system is now prepared for heavy-duty enterprise usage overall (especially in enterprise version)
  • at least 10% performance increase or more for reasoning-heavy workloads thanks to swipl 10 and other changes
  • significant investment in lean memory usage and memory defragmentation for handling heavy sustained workloads

Features

  • builds are prepared to be included in nixos
  • add cardinality functionality to Set (Cardinality is now deprecated)
  • record the actual user making the change in the commit log (not only author)
  • support for very fast range queries over triples
  • ISO8601 date, time, and interval predicates (Allen interval algebra) for WOQL
  • added comment predicate to WOQL to make it easy to comment out code, in the AST
  • Add collect keyword to match member for use instead of overloading group_by without grouping
  • Add WOQL comment predicate (#2337)
  • Add cardinality constraints to Set too, for consistency (#2339)
  • Handle @metadata and @context keys starting with an @ properly (#1775) (#2344)
  • Atomic context prefix management (#2350)
  • Idempotent prefix creation (#2355)
  • Implement ChangeKey migration for subdocument ID conformance (#2373)

Bugfixes

  • Ensure that xsd:anyURI is RFC3987 compliant for the URI/IRI (#2338)
  • Address regression in optimize code due to cache eviction work in this dev version (#2348)
  • Fix delegated database access pattern (#2347)
  • Fix incorrect commit of label during optimization (#2353)
  • tests: respect TERMINUSDB_EXEC_PATH override (#2362)
  • Addressed schema migration bug for inherited properties (#2372)
  • Add use-system-gmp feature flag for system GMP/MPFR (#2360)
  • Fix SWI-Prolog 10 stack exhaustion and improve memory management (#2377)
  • Fix eviction of memory for stale layers for #2301 (#2342)

Maintenance

  • Bump qs from 6.11.0 to 6.14.2 in /tests
  • Restore previsouly blocked push and pull tests (#2349)
  • Bump lru from 0.11.1 to 0.16.3 in /src/rust (#2354)
  • Support for building both swipl 9 and 10 in TerminusDB (#2367)
  • Bump bytes from 1.10.1 to 1.11.1 in /src/rust (#2365)
  • Bump diff from 5.2.0 to 5.2.2 in /tests (#2361)
  • Bump lodash from 4.17.21 to 4.17.23 in /tests (#2363)
  • CI: Use PR workflow for man page documentation updates (#2356)
  • Enable customer-specific build support (#2375)

Documentation

  • Update documentation for capabilities endpoint, fixes #2340 (#2345)
  • Fix openapi linting (#2352)
  • docs: Update generated man page (#2371)
  • The woql.json specification now includes slice, set and comment predicates

Deprecation

  • Cardinality is deprecated, use Set instead.

New Contributors

  • @daniel-fahey made their first contribution (#2362)

v12.0.3

Released 25 February 2026 · GitHub release

Gap release (build issue)

v12.0.2

Released 16 December 2025 · GitHub release · Full changelog

Bug fixes

  • New set operators also work for non-admin users, and tests added to prevent this ahead

v12.0.1

Released 15 December 2025 · GitHub release · Feature page

Enhancements

  • Added _count query field to GraphQL for counting filtered results
  • Added field-level @unfold schema annotation for controlling document expansion
  • Added high-performance WOQL set operators (union, intersection, difference)

Bug fixes

  • Fixed sys:JSON numeric values now properly cast to other numeric types
  • Fixed nested subdocument ID generation bug
  • Fixed stray subdocument residue during deletion (v12.0.0 regression)
  • Fixed Foreign type schema validation and inclusion in schema graph

Maintenance and bug fixes

  • Re-enabled in-memory server for testing
  • Improved make pr workflow for accurate PR testing
  • Reduced server startup delay
  • Cleaned up Rust lifetime warnings and dead code
  • Improved schema checker accuracy with additional test coverage
  • Aligned @unfold with @unfoldable and prevented potential WOQL unfolding issues

v12.0.0

Released 2 December 2025 · GitHub release · Feature page · Full changelog

This major release of TerminusDB forges a new path forward. The on-disk storage format remains unchanged since version 11 and the changes are performed for improved stringency, precision and clarity of the graph database interfaces.

TerminusDB is maintained by the team at Gettier since 2025.

Major changes overall in v12.0.0 since v11.1.17:

  • New refreshed project website: https://terminusdb.com
  • High precision decimals capped at 20 decimal places, using rationals
  • Auto-optimizer for continuous roll-ups now enabled by default
  • JSON numbers are now used across interfaces, with high precision
  • Significantly enhanced dictionary and list support handling through WOQL
  • Addressed remaining open bugs and improved test coverage significantly
  • Higher precision logic processing with improved datatype handling
  • Unstructured JSON support, with high precision decimal numbers support
  • Security improvements (no-root docker image, fixed error handling)
  • HTTP request correlation headers introduced in across requests
  • Dashboard component deprecated, yet possible to re-enable manually.

Breaking changes in v12.0.0 since v11.1.17:

  • Numbers in all API uses JSON numbers with high precision accurately, not strings as before.
  • The path() operator with .* pattern matching now traverses Lists correctly
  • The group_by() operator unwraps single element templates automatically, no nesting.
  • Error handling is now precise, no stack traces in the HTTP response, same general format
  • WOQL calculations performed with precise rationals, not double/float, for correct precision

Enhancements since 11.2-rc5

  • Add support for new slice operator for WOQL list item handling
  • Enabled dot to address parts of path edge variable bindings
  • New datatype introduced, sys:Dictionary for Document/DictionaryTemplate
  • Document templates now have the internal type_of name of sys:Dictionary
  • Strings with JSON can now be typecast/transformed into xdd:json and back
  • Addressing fields in xdd:json is now possible using dot
  • New sys:Dictionary can be typecast to and from xdd:json
  • Added idgen_random to JavaScript WOQL client.

Bugfixes since 11.2-rc5

  • Fix path times{0,N} operator in path spec to correctly handle zero hops too.

Consistency changes according to how TerminusDB should work, since 11.2-rc5

  • Added RandomKey type to WOQL (replaces RandomIdgen for consistency reasons)
  • Replaced random_idgen with idgen_random in Python WOQL client
  • Ensured accurate wildcard path matching (such as.*), code relying on old incorrect behaviour may break, potentially returning duplicates.

TerminusDB Server v11.2.0-rc5 Release Notes

Maintenance and bug fixes

  • WOQL.dot works correctly again for addressing fields in documents

Breaking changes, may break code relying on old behaviour

  • WOQL.group_by now automatically unwraps single-element templates

TerminusDB Server v11.2.0-rc4 Release Notes

Enhancements

  • Free form JSON support with deduplication is back, using the sys:JSON type
  • Arbitrary top level JSON values supported too, except for null; workaround: use Optional
  • sys:JSON numbers are processed as capped BigDecimal/BigInt precision (beyond float/double)
  • sys:JSON stores arbitrary precision decimals and integers up 256 digits each

Other

  • 5x faster internal Rust serde JSON parsing, instead of previous JSON parser

TerminusDB Server v11.2.0-rc3 Release Notes

Release Candidate 3 brings improved error handling and observability, makes it possible again to run the dashboard component (or other static webapp dashboards), and further strengthens the core of TerminusDB with additional bug fixes.

Enhancements

  • Improved error handling and observability (#1631)
    • Added unique request IDs (UUID v4) to all error responses for easier debugging
    • Added W3C Trace Context support (transparent header) for distributed tracing
    • Stack traces no longer exposed in HTTP responses (security improvement)
    • Error messages now include helpful Prolog error terms without exposing internal stack traces
    • New error type: api:IncompatibleNumericComparison for clearer numeric type mismatch errors
  • Dashboard component is possible to enable manually, see dashboard docs

Maintenance and bug fixes

  • Ensure correct resulting type (floats are contagious)
  • Fixed error message duplication between api:error and api:message fields
  • Add specific error handling for common git-for-data error "api:RemoteDiverged"
  • Fix string vs atom comparisons when patching enum values (#2141)

TerminusDB Server v11.2.0-rc2 Release Notes

This marks a substantial release of TerminusDB with support for high precision calculations in the WOQL core, and with alignment to JSON, letting clients handling native JSON with high precision.

Enhancements

  • xsd:decimals are now normalized (2 and 2.0 are the same) fixing #2242
  • greater, less and eq require commensurable types to compare (#2225)
  • Auto optimizer plugin is now included by default for continuous performance

Maintenance and bug fixes

  • Further improvements to the build system
  • group_by with decimals works as intended again (#2094)

TerminusDB Server v11.2.0-rc1 Release Notes (since v11.1.17)

Enhancements

  • Rationals are now used by default for all calculations (#128)
  • JSON output is now consistent between WOQL, Document API and GraphQL:
    • Numbers are outputed as number, arbitrary size, capped at 20 decimals
  • Dashboard component has been discontinued. A deprecation notice is shown at /dashboard with instructions for legacy usage. See dashboard docs for full documentation (#2238)

Was this helpful?