Skip to content

v0.9.0

Latest

Choose a tag to compare

@matt-beanland matt-beanland released this 23 Jun 02:21

Features:

  • Target Neo4j 2026.05 / Cypher 25 / BOLT 6.0 (#236) — moves the data layer onto the
    date-versioned Neo4j line via ash_neo4j 0.9.0. Queries now run under an explicit
    CYPHER 25 language selector over BOLT 6.0 — negotiated through bolty ≥ 0.2.0 — rather
    than relying on a server default heading for the CYPHER 5 sunset.

Fixes:

  • Public Diffo.Provider.create_instance/1 + create_instance!/1 (#244) — restores the
    generic instance creator to the dispatcher API, symmetric with create_place!/2 and
    create_party!/2; it dispatches on the referenced specification's type
    (:serviceSpecification → the generic Service, :resourceSpecification → the new generic
    Diffo.Provider.ResourceInstance leaf). Without it, provider-only consumers and the
    tutorial livebook had no public way to create a generic instance. Also types the dispatcher
    @specs precisely (closed-union creators, an open projected_record for projecting reads)
    and clears the mix docs warnings from the phantom Ash.Resource.record() type.

Dependencies:

  • Bump ash_neo4j to 0.10.1 (#238) — picks up graph-traversal Ash expressions
    (traverse/2) and read-time ProjectedTraversal, atomic & bulk writes, typed
    (never-raised) data-layer errors, and identity/primary-key uniqueness constraints; plus
    the upstream fix for the 0.10.0 atomic-upsert label regression
    (ash_neo4j#392) that dropped the
    :Place/:Party fragment label on upserted nodes. Two behaviour shifts are handled
    diffo-side: atomic-by-default is disabled for this edge-managing graph domain
    (require_atomic_by_default? false, since nearly every action manages edges or runs
    non-atomic validations), and Diffo.Type.Dynamic gains dump_to_embedded/2 +
    cast_from_embedded/2 for ash 3.28's composite embedded casting (#239). Tracks ash 3.29.

    Upgrading from 0.8.x: consumers must add config :ash, :require_atomic_by_default?, false
    to their own config — diffo's resources recompile under the consumer's config, and without
    it the edge-managing actions raise must be performed atomically. mix diffo.install and
    the livebooks now set this for you. Target Neo4j is now 2026.05 (Cypher 25 / BOLT 6.0).


📦 hex.pm/packages/diffo · 📖 hexdocs.pm/diffo/0.9.0