Skip to content

Releases: rsform/jacquard

0.11.0 - Codegen you might enjoy reading

22 Mar 03:04

Choose a tag to compare

Changelog

[0.11.0] - 2026-03-21

Breaking changes

Code generation pipeline overhaul (jacquard-lexicon, jacquard-lexgen)

  • Jacquard's codegen output already was nice to use. now it's going to be nice to read.
  • New code generation tracks the types used, makes an import block for the file, and then organizes the file with stuff you care about at the top and internal stuff, like the builders, at the bottom.
  • Import resolution pass now conditionally generates short paths when types are unambiguous within a module, falling back to fully-qualified paths when collisions exist
  • Improved default value handling in generated code, reducing unnecessary boilerplate

Added

Hand-written XRPC bootstrap types (jacquard-common)

  • Added minimal XRPC endpoint types for com.atproto.repo.listRecords, com.atproto.repo.getRecord, com.atproto.identity.resolveHandle, and com.atproto.identity.resolveDid
  • These types break circular dependencies between jacquard-lexgen/jacquard-identity and jacquard-api, allowing the codegen tooling and identity resolver to function without depending on the generated API crate

Changed

Regenerated API crate (jacquard-api)

  • All generated code regenerated with the new codegen pipeline
  • Shorter import paths where unambiguous, cleaner builder output, better formatting throughout

[0.10.1] - 2026-03-20

Fixed

CID deserialization (jacquard-common)

  • Fixed CidLink deserialization from CBOR tag-42 bytes through internally-tagged enums (reported by @natalie.sh, fixed by adorable robot)
  • serde_ipld_dagcbor buffers tag-42 CIDs as a newtype struct wrapping raw bytes when deserializing through Content; the visitor now handles visit_bytes, visit_byte_buf, and visit_newtype_struct to cover this path

Lexicon code generation (jacquard-lexicon, jacquard-api)

  • Fixed BlobRef generation producing incorrect code in certain lexicon schemas

Identity resolution (jacquard-identity)

  • Error message when handle resolution exhausts all resolution methods no longer misleading

[0.10.0] - 2026-03-20

Breaking changes

URL type migration (jacquard-common, jacquard, jacquard-oauth, jacquard-identity, jacquard-api)

  • Migrated from url crate to fluent_uri for validated URL/URI types
  • All Url types are now Uri from fluent_uri
  • Affects any code that constructs, passes, or pattern-matches on endpoint URLs

Re-exported crate paths (jacquard-api, jacquard-common)

  • Re-exported crates (including non-proc-macro dependencies of the generated API crate) are now centralized into a distinct module
  • Import paths for re-exported types have changed as a result

Added

no_std groundwork (jacquard-common, jacquard-api)

  • Initial steps toward no_std support for core types
  • jacquard-api gains feature gating for std/no_std usage

Datetime improvements (jacquard-common)

  • PR from @blyoom.dev exposing timestamps directly on Datetime type
  • Naming aligned with chrono conventions

Handle normalization (jacquard-common)

  • Handles are now lowercase-normalized on construction

Embedded PDS primitives (jacquard-repo)

  • Initial lazy disk-spilling collection types for embedded PDS use cases
  • Repo firehose types now use generated API types instead of hand-written equivalents

Lexicon codegen improvements (jacquard-lexicon, jacquard-api)

  • knownValues generation now aligned with AT Protocol spec and triggers more frequently
  • Improved feature dependency tracking for API crate features

Additional signing algorithms (jacquard-oauth)

  • Keyset signing now supports ES384 (P-384), ES256K (secp256k1), and EdDSA (Ed25519) in addition to ES256
  • Keyset::create_jwt now accepts &[Signing] (from jose_jwa) instead of string-based algorithm names

Documentation (jacquard-oauth, jacquard-identity)

  • Doc comments across all public items in both crates (thanks Claude, but I played editor pretty heavily)

Fixed

Identity resolution (jacquard-identity)

Error handling (jacquard-common, jacquard, jacquard-oauth)

  • Big error quality-of-life pass with richer, more actionable diagnostics
  • More resilient error parsing for auth errors
  • Better lexicon parsing error messages

WASM (jacquard-common)

  • Fixed WASM CI smoke test compilation

Changed

Lexicons (jacquard-api)

  • Large batch of lexicon schema updates with manual cleanup

[0.9.6] - 2025-12-19

Changed

Logging (jacquard, jacquard-axum)

Fixed

Repo commit signatures (jacquard-repo)

  • commit signatures generated by jacquard-repo should now be consistent with other implementations
  • previously, they included an empty sig bytes field in the signed struct, which has a different CBOR serialization from the canonical relay implementation expectations.

Version 0.9.5 binary release

19 Dec 19:35
c7760d5

Choose a tag to compare

README

Quite a few little bugfixes and relevant enhancements. Benefits of dogfooding.

Changes included in this release

From jacquard-lexicon

  • Fixed nullable field handling in generated code
  • Fixed lifetime handling in codegen of binary xrpc outputs
  • Fixed lifetime handling in unions
  • Fixed incorrectly unescaped rust keywords in module paths
  • Fixed some other issues in builder generation

From jacquard-common and jacquard-identity

  • Serde bytes helpers for JSON fields
  • Fixed CID deserialization edge cases in Data and RawData types
  • Fixed DID document serialization when optional fields are absent

Changelog

v0.9.0 - Codegen binaries moved to jacquard-lexgen package

04 Nov 16:40

Choose a tag to compare

v0.7.0 - Codegen binaries

20 Oct 01:14

Choose a tag to compare

Few new features this release for the codegen binaries, but they are kept in sync with overall project version.

v0.6.0 codegen binary release

18 Oct 16:29

Choose a tag to compare

A number of substantial fixes and enhancements to the code generation ended up in 0.6.0. check the changelog for details.

Full Changelog: v0.5.4...v0.6.0

v0.5.4 code generation binaries

16 Oct 17:42

Choose a tag to compare

Fixes a bug in codgen output for lexicons with properties which are blank objects rather than marked "unknown".

v0.5.3 codegen binaries

15 Oct 22:46

Choose a tag to compare

Binaries published for e.g. cargo binstall in CI. Linux only for now.