A library for ATProtocol identities.
1# Changelog 2 3All notable changes to this project will be documented in this file. 4 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 8## [Unreleased] 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 26## [0.12.0] - 2025-09-17 27### Added 28- Unified `Auth` enum for authentication methods in `atproto-client` supporting None, DPoP, and AppPassword authentication 29- `com.atproto.server.deleteSession` support in `atproto-client` with AppPassword authentication requirement 30- `com.atproto.identity.resolveHandle` support in `atproto-client` for handle resolution 31- OAuth client credentials token flow in `atproto-oauth-aip` for service-to-service authentication 32- `session_exchange_with_options` function with optional `access_token_type` and `subject` parameters 33- Documentation for all Auth enum variants and authentication methods 34 35### Changed 36- Updated all XRPC client methods to use the unified `Auth` enum pattern instead of optional DPoP parameters 37- Made `refresh_token` field optional in `TokenResponse` structure as not all token responses include refresh tokens 38- Refactored `session_exchange` to use `session_exchange_with_options` internally with backward compatibility 39- Enhanced error handling with new `InvalidAuthMethod` error variant in client errors 40 41### Fixed 42- Removed unused imports and cleaned up code after Auth enum refactoring 43- Fixed doctest failures from outdated function signatures 44- Resolved compilation errors from type mismatches in error handling 45 46## [0.11.3] - 2025-09-03 47### Added 48- OAuth scope types, parsing, and utilities for the `atproto-oauth` crate 49- Comprehensive support for AT Protocol OAuth 2.0 scope handling 50 51## [0.11.2] - 2025-08-20 52### Fixed 53- Fixed `atproto-jetstream` consumer to correctly send multiple query parameters for `wantedCollections` and `wantedDids` instead of joining them with commas 54 55## [0.11.1] - 2025-08-20 56### Fixed 57- Base64 decoding in `atproto-record` now accepts both padded and unpadded base64 strings for better compatibility with various AT Protocol implementations 58- Updated `signature::verify` function to only accept `{"$bytes": "..."}` format for signatures 59 60### Added 61- Comprehensive unit tests for record signature creation and verification across P-256, P-384, and K-256 curves 62- Unit test for deserializing real-world RSVP records with signatures 63 64### Changed 65- Made `create` and `verify` functions in the signature module synchronous (removed `async`) as they don't perform async operations 66 67## [0.11.0] - 2025-08-18 68### Added 69- Document builder functionality for AT Protocol documents 70- New `atproto-oauth-service-token` CLI tool for OAuth service token management 71- Community lexicon support for extended AT Protocol functionality 72 73### Changed 74- Updated record signature and verification to align with current AT Protocol proposal 75- Removed `issuedAt` field as required signature field 76- Streamlined Debug derive implementations across crates 77 78### Improved 79- Removed unused dependencies for smaller build size 80- Release preparation and project maintenance 81 82## [0.10.0] - 2025-07-28 83### Changed 84- Version release 0.10.0 with updated dependencies and stability improvements 85 86## [0.9.7] - 2025-07-13 87### Changed 88- Updated `list_records` method to support optional DPoP authentication for enhanced security 89 90## [0.9.6] - 2025-07-11 91### Improved 92- Enhanced DID method validation for did-method-plc and did-method-web 93- Updated validation examples and documentation for better clarity 94 95## [0.9.5] - 2025-07-09 96### Changed 97- Refactored OAuth components to support blind OAuth workflows for enhanced security and privacy 98 99## [0.9.4] - 2025-07-09 100### Fixed 101- Fixed issue where login_hint was always sent in OAuth initialization 102 103## [0.9.3] - 2025-07-06 104### Added 105- `delete_record` method to atproto-client for removing AT Protocol records 106 107## [0.9.2] - 2025-06-30 108### Added 109- Optional `zeroize` feature for secure memory handling of sensitive cryptographic data 110 111## [0.9.1] - 2025-06-29 112### Changed 113- Updated dependency versions for improved compatibility 114 115## [0.9.0] - 2025-06-29 116### Security 117- Explicitly forbid unsafe code usage across all crates for enhanced security 118 119### Changed 120- Reduced debug information exposure in production builds 121- Improved sensitive data handling and reduced exposure 122- Cleaned up tracing instrumentation for better performance 123 124### Improved 125- Enhanced documentation across all crates and modules 126 127## [0.8.1] - 2025-06-21 128### Improved 129- Enhanced module documentation across all crates with comprehensive usage examples 130- Standardized error handling with consistent naming and unique identifiers 131- Updated OAuth AIP crate with detailed API documentation and security considerations 132- Improved project documentation and README files across all crates 133 134### Fixed 135- Code formatting compliance with rustfmt standards 136- Consistent error message formatting and numbering 137 138## [0.8.0] - 2025-06-18 139### Added 140- OAuth Authorization Initiation Protocol (AIP) crate for AT Protocol OAuth workflows 141 142## [0.7.0] - 2025-06-16 143### Added 144- DPoP validation support for enhanced security 145- Embedded JWKS in OAuth metadata 146- P-384 cryptographic curve support and JWK conversion 147- App password creation method to atproto-client 148- Client authentication binaries for app password and session management 149 150### Changed 151- Standardized CLI tools with clap for consistent command-line interfaces 152- Enhanced security measures across client tools 153- Streamlined documentation structure 154 155### Fixed 156- Error cleanup and improved error handling throughout codebase 157- Removed unused issuer field from DPoP implementation 158 159## [0.6.0] - 2025-06-08 160### Added 161- AT Protocol event streaming via atproto-jetstream crate with WebSocket support 162 163## [0.5.0] - 2025-06-05 164### Added 165- XRPC service helpers and framework crate 166- PORT environment variable support for service configuration 167- Enhanced DPoP client support for query and procedure methods 168 169### Changed 170- Improved tracing and logging throughout the codebase 171- Updated Docker configuration to include additional binaries 172 173### Fixed 174- Removed hardcoded OAuth metadata field values 175- Added missing crate metadata fields 176 177## [0.4.0] - 2025-06-03 178### Added 179- Initial OAuth client implementation 180- Basic AT Protocol identity resolution 181- Core DID document handling 182- Cryptographic key operations for P-256 curves 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 186[0.11.3]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.3 187[0.11.2]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.2 188[0.11.1]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.1 189[0.11.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.11.0 190[0.10.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.10.0 191[0.9.7]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.7 192[0.9.6]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.6 193[0.9.5]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.5 194[0.9.4]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.4 195[0.9.3]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.3 196[0.9.2]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.2 197[0.9.1]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.1 198[0.9.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.9.0 199[0.8.1]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.8.1 200[0.8.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.8.0 201[0.7.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.7.0 202[0.6.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.6.0 203[0.5.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.5.0 204[0.4.0]: https://tangled.sh/@smokesignal.events/atproto-identity-rs/tree/v0.4.0