Release Notes
Here comes the 3rd major release of Caliban! 🎉
The main reason for a major version change is the upgrade from sttp 3 to sttp 4, which should only impact users of Caliban Client. See this page for more details on how to migrate your sttp code.
We seized the opportunity of a major version to do some more small breaking changes that shouldn't impact most Caliban users. The most notable ones are that we removed all deprecated features, and that we split the tools modules into smaller modules with only minimal dependencies.
Apart from that, there are some cool new additions in this release, such as support for Relay's global identifier or the ability to use the sbt plugin with sbt 2.x. And lots of performance improvements as usual!
Important Breaking Changes
- Upgraded sttp from 3.x to 4.x in Caliban Client by @ghostdogpr in #2611
- Split the
toolsmodules into 3 separate modules with less dependencies:codegen(codegen utilities, used by the sbt plugin),stitchingandtools(schema loader, schema comparison) by @ghostdogpr in #2796 - Removed everything that was deprecated by @ghostdogpr in #2618
New Features
- Added utilities to support the global identifier specification from Relay by @paulpdaniels in #2510
- Added heartbeating for SSE-based subscriptions by @SvenW in #2806
- Added support for fragments in Caliban Client by @paulpdaniels in #2723
- Added support for directives at the query level in Caliban Client by @alexdupre in #2720
- Added utilities to improve federated rendering by @paulpdaniels in #2488
Bug Fixes
- Fixed the name of field
specifiedByintospecifiedByURLin introspection ADT by @camarena in #2800 - Fixed nullability check for variables and
@oneOftypes by @guymers in #2818 - Fixed validation to only consider variables in the requested operation by @li-nkSN in #2847
Tools
- Added cross-building for sbt 2 by @mrdziuban in #2771
Performance Improvements
- Avoided unnecessary schema renaming by @kyri-petrou in #2625
- Optimized
FederationHelpersandValidationOpsby @kyri-petrou in #2621 - Fixed laziness issue with derived
ArgBuilderclass initialization by @kyri-petrou in #2837 - Made
Schema,ArgBuilderandWrapperabstract classes by @kyri-petrou in #2629 - Used
@threadUnsafefor cached hash codes in Scala 3 by @kyri-petrou in #2703 - Used a
Productwrapper to avoid converting an array to tuple (Scala 3) by @kyri-petrou in #2841 - Used concrete classes for derived
ArgBuilderinstances by @kyri-petrou in #2838 - Changed EntityResolver#resolve to return a Step by @ghostdogpr in #2626
- Optimized
ArgBuilder.listand unify implementation withFederationHelpersby @kyri-petrou in #2630 - Used local params val in
ArgBuilder(Scala 3) by @kyri-petrou in #2840