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