Releases: rsform/jacquard
0.11.0 - Codegen you might enjoy reading
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, andcom.atproto.identity.resolveDid - These types break circular dependencies between
jacquard-lexgen/jacquard-identityandjacquard-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
CidLinkdeserialization from CBOR tag-42 bytes through internally-tagged enums (reported by @natalie.sh, fixed by adorable robot) serde_ipld_dagcborbuffers tag-42 CIDs as a newtype struct wrapping raw bytes when deserializing throughContent; the visitor now handlesvisit_bytes,visit_byte_buf, andvisit_newtype_structto cover this path
Lexicon code generation (jacquard-lexicon, jacquard-api)
- Fixed
BlobRefgeneration 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
urlcrate tofluent_urifor validated URL/URI types - All
Urltypes are nowUrifromfluent_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_stdsupport for core types jacquard-apigains feature gating forstd/no_stdusage
Datetime improvements (jacquard-common)
- PR from @blyoom.dev exposing timestamps directly on
Datetimetype - Naming aligned with
chronoconventions
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)
knownValuesgeneration 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_jwtnow accepts&[Signing](fromjose_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)
- PR from @alephcubed.com fixing
DidDocument::handles()always failing when parsed fromMiniDoc
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)
- PR from @nekomimi.pet cleaning up more debug logs, and adding tracing feature gate to jacquard-axum
Fixed
Repo commit signatures (jacquard-repo)
- commit signatures generated by
jacquard-reposhould now be consistent with other implementations - previously, they included an empty
sigbytes field in the signed struct, which has a different CBOR serialization from the canonical relay implementation expectations.
Version 0.9.5 binary release
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
DataandRawDatatypes - Fixed DID document serialization when optional fields are absent
v0.9.0 - Codegen binaries moved to jacquard-lexgen package
0.9.0 binaries
v0.7.0 - Codegen binaries
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
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
Fixes a bug in codgen output for lexicons with properties which are blank objects rather than marked "unknown".
v0.5.3 codegen binaries
Binaries published for e.g. cargo binstall in CI. Linux only for now.