A library for ATProtocol identities.

release: 0.13.0

Signed-off-by: Nick Gerakines <nick.gerakines@gmail.com>

Changed files
+54 -36
crates
atproto-client
atproto-identity
atproto-jetstream
atproto-lexicon
atproto-oauth
atproto-oauth-aip
atproto-oauth-axum
atproto-record
atproto-xrpcs
atproto-xrpcs-helloworld
+18
CHANGELOG.md
··· 7 7 8 8 ## [Unreleased] 9 9 10 + ## [0.13.0] - 2025-09-21 11 + ### Added 12 + - New `atproto-lexicon` crate for AT Protocol lexicon resolution and validation 13 + - `atproto-lexicon-resolve` CLI tool for resolving lexicons via DNS and XRPC 14 + - Comprehensive lexicon reference extraction and recursive resolution capabilities 15 + - Full support for NSID validation and DNS-based lexicon discovery 16 + 17 + ### Changed 18 + - Updated Rust minimum version requirement to 1.90 19 + - Enhanced error management across atproto-lexicon crate 20 + - Improved project documentation with atproto-lexicon integration 21 + 22 + ### Improved 23 + - Code formatting and linting across all crates 24 + - Updated README documentation to include atproto-lexicon references 25 + 10 26 ## [0.12.0] - 2025-09-17 11 27 ### Added 12 28 - Unified `Auth` enum for authentication methods in `atproto-client` supporting None, DPoP, and AppPassword authentication ··· 165 181 - Core DID document handling 166 182 - Cryptographic key operations for P-256 curves 167 183 184 + [0.13.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.13.0 185 + [0.12.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.12.0 168 186 [0.11.3]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.3 169 187 [0.11.2]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.2 170 188 [0.11.1]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.1
+10 -10
Cargo.lock
··· 107 107 108 108 [[package]] 109 109 name = "atproto-client" 110 - version = "0.12.0" 110 + version = "0.13.0" 111 111 dependencies = [ 112 112 "anyhow", 113 113 "atproto-identity", ··· 130 130 131 131 [[package]] 132 132 name = "atproto-identity" 133 - version = "0.12.0" 133 + version = "0.13.0" 134 134 dependencies = [ 135 135 "anyhow", 136 136 "async-trait", ··· 157 157 158 158 [[package]] 159 159 name = "atproto-jetstream" 160 - version = "0.12.0" 160 + version = "0.13.0" 161 161 dependencies = [ 162 162 "anyhow", 163 163 "async-trait", ··· 179 179 180 180 [[package]] 181 181 name = "atproto-lexicon" 182 - version = "0.12.0" 182 + version = "0.13.0" 183 183 dependencies = [ 184 184 "anyhow", 185 185 "async-trait", ··· 198 198 199 199 [[package]] 200 200 name = "atproto-oauth" 201 - version = "0.12.0" 201 + version = "0.13.0" 202 202 dependencies = [ 203 203 "anyhow", 204 204 "async-trait", ··· 230 230 231 231 [[package]] 232 232 name = "atproto-oauth-aip" 233 - version = "0.12.0" 233 + version = "0.13.0" 234 234 dependencies = [ 235 235 "anyhow", 236 236 "atproto-identity", ··· 245 245 246 246 [[package]] 247 247 name = "atproto-oauth-axum" 248 - version = "0.12.0" 248 + version = "0.13.0" 249 249 dependencies = [ 250 250 "anyhow", 251 251 "async-trait", ··· 274 274 275 275 [[package]] 276 276 name = "atproto-record" 277 - version = "0.12.0" 277 + version = "0.13.0" 278 278 dependencies = [ 279 279 "anyhow", 280 280 "atproto-identity", ··· 290 290 291 291 [[package]] 292 292 name = "atproto-xrpcs" 293 - version = "0.12.0" 293 + version = "0.13.0" 294 294 dependencies = [ 295 295 "anyhow", 296 296 "async-trait", ··· 316 316 317 317 [[package]] 318 318 name = "atproto-xrpcs-helloworld" 319 - version = "0.12.0" 319 + version = "0.13.0" 320 320 dependencies = [ 321 321 "anyhow", 322 322 "async-trait",
+8 -8
Cargo.toml
··· 23 23 categories = ["command-line-utilities", "web-programming"] 24 24 25 25 [workspace.dependencies] 26 - atproto-client = { version = "0.12.0", path = "crates/atproto-client" } 27 - atproto-identity = { version = "0.12.0", path = "crates/atproto-identity" } 28 - atproto-oauth = { version = "0.12.0", path = "crates/atproto-oauth" } 29 - atproto-oauth-axum = { version = "0.12.0", path = "crates/atproto-oauth-axum" } 30 - atproto-oauth-aip = { version = "0.12.0", path = "crates/atproto-oauth-aip" } 31 - atproto-record = { version = "0.12.0", path = "crates/atproto-record" } 32 - atproto-xrpcs = { version = "0.12.0", path = "crates/atproto-xrpcs" } 33 - atproto-jetstream = { version = "0.12.0", path = "crates/atproto-jetstream" } 26 + atproto-client = { version = "0.13.0", path = "crates/atproto-client" } 27 + atproto-identity = { version = "0.13.0", path = "crates/atproto-identity" } 28 + atproto-oauth = { version = "0.13.0", path = "crates/atproto-oauth" } 29 + atproto-oauth-axum = { version = "0.13.0", path = "crates/atproto-oauth-axum" } 30 + atproto-oauth-aip = { version = "0.13.0", path = "crates/atproto-oauth-aip" } 31 + atproto-record = { version = "0.13.0", path = "crates/atproto-record" } 32 + atproto-xrpcs = { version = "0.13.0", path = "crates/atproto-xrpcs" } 33 + atproto-jetstream = { version = "0.13.0", path = "crates/atproto-jetstream" } 34 34 35 35 anyhow = "1.0" 36 36 async-trait = "0.1.88"
+1 -1
Dockerfile
··· 69 69 LABEL org.opencontainers.image.description="AT Protocol identity management tools" 70 70 LABEL org.opencontainers.image.authors="Nick Gerakines <nick.gerakines@gmail.com>" 71 71 LABEL org.opencontainers.image.source="https://tangled.sh/@smokesignal.events/atproto-identity-rs" 72 - LABEL org.opencontainers.image.version="0.12.0" 72 + LABEL org.opencontainers.image.version="0.13.0" 73 73 LABEL org.opencontainers.image.licenses="MIT" 74 74 75 75 # Document available binaries
+6 -6
README.md
··· 36 36 37 37 ```toml 38 38 [dependencies] 39 - atproto-identity = "0.12.0" 40 - atproto-record = "0.12.0" 41 - atproto-lexicon = "0.12.0" 42 - atproto-oauth = "0.12.0" 43 - atproto-oauth-aip = "0.12.0" 44 - atproto-client = "0.12.0" 39 + atproto-identity = "0.13.0" 40 + atproto-record = "0.13.0" 41 + atproto-lexicon = "0.13.0" 42 + atproto-oauth = "0.13.0" 43 + atproto-oauth-aip = "0.13.0" 44 + atproto-client = "0.13.0" 45 45 # Add others as needed 46 46 ``` 47 47
+1 -1
crates/atproto-client/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-client" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "HTTP client for AT Protocol services with OAuth and identity integration" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-identity/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-identity" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "AT Protocol identity management - DID resolution, handle resolution, and cryptographic operations" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-jetstream/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-jetstream" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "AT Protocol Jetstream event consumer library with WebSocket streaming and compression support" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-lexicon/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-lexicon" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "AT Protocol lexicon resolution and validation" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-lexicon/README.md
··· 27 27 28 28 ```toml 29 29 [dependencies] 30 - atproto-lexicon = "0.12.0" 30 + atproto-lexicon = "0.13.0" 31 31 ``` 32 32 33 33 ## Usage
+1 -1
crates/atproto-oauth-aip/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-oauth-aip" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "ATProtocol AIP OAuth tools" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-oauth-axum/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-oauth-axum" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "Axum web framework integration for AT Protocol OAuth workflows" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-oauth/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-oauth" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "OAuth workflow implementation for AT Protocol - PKCE, DPoP, and secure authentication flows" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-record/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-record" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "AT Protocol record signature operations - cryptographic signing and verification for AT Protocol records" 5 5 readme = "README.md" 6 6 homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs"
+1 -1
crates/atproto-xrpcs-helloworld/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-xrpcs-helloworld" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "Complete example implementation of an AT Protocol XRPC service with DID web functionality and JWT authentication" 5 5 edition.workspace = true 6 6 rust-version.workspace = true
+1 -1
crates/atproto-xrpcs/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-xrpcs" 3 - version = "0.12.0" 3 + version = "0.13.0" 4 4 description = "Core building blocks for implementing AT Protocol XRPC services with JWT authorization" 5 5 edition.workspace = true 6 6 rust-version.workspace = true