commits
- Add ScopeError type with miette diagnostics
- Add check_scope guard in OAuthSession::send_with_opts (feature-gated)
- Extract callback_core() and resolve_include_scopes() to eliminate duplication
- Implement eager resolution of include scopes at session creation
- Add CallbackError::ScopeResolution variant for scope resolution errors
- Fix check_scope: match lxm only, ignore audience at pre-flight
- Fix expand_permission_set: select highest account action privilege
- Add integration tests with real app.bsky.authCreatePosts permission set
- Add audience-specific RPC regression test
- Add expand_permission_set() for LexPermissionSet → Vec<Scope<SmolStr>> conversion
- Add resolve_permission_set() using LexiconSchemaResolver with namespace validation
- Add scope-check feature flag gating jacquard-lexicon dependency
- Add resolved_scopes field to ClientSessionData (feature-gated)
- Add eager resolution infrastructure at session creation
- Move AccountResource, AccountAction, RepoAction to jacquard-common
- Add LexPermissionSet, LexPermission, LexPermissionResource types
- Add PermissionSet variant to LexUserType with IntoStatic impls
- Add namespace constraint validation (PermissionSetError)
- Add codegen dispatch for permission sets (returns default)
- Replace all Vec<Scope<S>> fields with Scopes<S> across jacquard-oauth
- Migrate OAuthState/OAuthSession persistence format (Vec<String> → String)
- Migrate main crate consumers and integration tests
- Retire old utility methods (parse_multiple, serialize_multiple, remove_scope)
- Use expect instead of unwrap_or_default for scope parsing in token refresh
- Implement Scopes<S> with eager parse, scope reduction, and index computation
- Add scope reconstruction from buffer indices (unsafe, invariant-guarded)
- Add BorrowOrShare accessors (iter, get, get_owned, get_as)
- Add conversion methods (borrow, convert, into_static, to_normalized_string)
- Add Serialize/Deserialize with sorted normalised output
- Add convenience methods (len, is_empty, as_str, empty, Default, grants)
- Use fluent-uri EStr for percent-decoding in include scope parsing
- Add TransitionScope::ChatBsky variant with parsing, serialisation, and grants
- Add IncludeScope<S> type and Scope::Include variant with percent-encoded audience
- Add scope index types (ScopeIndices, ScopeInnerIndices, RepoActionFlags, etc.)
- Make validate_did and validate_nsid public in jacquard-common
- Add MimePattern validation and unchecked constructor
Create xrpc/atproto.rs module with minimal XRPC endpoint types for:
- com.atproto.repo.listRecords
- com.atproto.repo.getRecord
- com.atproto.identity.resolveHandle
- com.atproto.identity.resolveDid
These types are vendored in jacquard-common to break circular dependencies
between jacquard-lexgen/jacquard-identity and jacquard-api. Implements
XrpcRequest/XrpcResp traits and manual IntoStatic impls (cannot use
jacquard_derive::IntoStatic due to lack of jacquard-derive dependency).
Includes 10 unit tests verifying serialization, deserialization, and
IntoStatic trait implementation for all types.
LexBlob fields now cause proper code to be generated for them and the generated validation function will now verify against them.
- Fixes https://tangled.org/nonbinary.computer/jacquard/issues/28
Default values from lexicons will now generate Default implementations that use them where possible, and will affect generated builder defaults.
should potentially keep track of what methods failed and how to provide more detailed context.
- Add ScopeError type with miette diagnostics
- Add check_scope guard in OAuthSession::send_with_opts (feature-gated)
- Extract callback_core() and resolve_include_scopes() to eliminate duplication
- Implement eager resolution of include scopes at session creation
- Add CallbackError::ScopeResolution variant for scope resolution errors
- Fix check_scope: match lxm only, ignore audience at pre-flight
- Fix expand_permission_set: select highest account action privilege
- Add integration tests with real app.bsky.authCreatePosts permission set
- Add audience-specific RPC regression test
- Add expand_permission_set() for LexPermissionSet → Vec<Scope<SmolStr>> conversion
- Add resolve_permission_set() using LexiconSchemaResolver with namespace validation
- Add scope-check feature flag gating jacquard-lexicon dependency
- Add resolved_scopes field to ClientSessionData (feature-gated)
- Add eager resolution infrastructure at session creation
- Move AccountResource, AccountAction, RepoAction to jacquard-common
- Add LexPermissionSet, LexPermission, LexPermissionResource types
- Add PermissionSet variant to LexUserType with IntoStatic impls
- Add namespace constraint validation (PermissionSetError)
- Add codegen dispatch for permission sets (returns default)
- Replace all Vec<Scope<S>> fields with Scopes<S> across jacquard-oauth
- Migrate OAuthState/OAuthSession persistence format (Vec<String> → String)
- Migrate main crate consumers and integration tests
- Retire old utility methods (parse_multiple, serialize_multiple, remove_scope)
- Use expect instead of unwrap_or_default for scope parsing in token refresh
- Implement Scopes<S> with eager parse, scope reduction, and index computation
- Add scope reconstruction from buffer indices (unsafe, invariant-guarded)
- Add BorrowOrShare accessors (iter, get, get_owned, get_as)
- Add conversion methods (borrow, convert, into_static, to_normalized_string)
- Add Serialize/Deserialize with sorted normalised output
- Add convenience methods (len, is_empty, as_str, empty, Default, grants)
- Use fluent-uri EStr for percent-decoding in include scope parsing
- Add TransitionScope::ChatBsky variant with parsing, serialisation, and grants
- Add IncludeScope<S> type and Scope::Include variant with percent-encoded audience
- Add scope index types (ScopeIndices, ScopeInnerIndices, RepoActionFlags, etc.)
- Make validate_did and validate_nsid public in jacquard-common
- Add MimePattern validation and unchecked constructor
Create xrpc/atproto.rs module with minimal XRPC endpoint types for:
- com.atproto.repo.listRecords
- com.atproto.repo.getRecord
- com.atproto.identity.resolveHandle
- com.atproto.identity.resolveDid
These types are vendored in jacquard-common to break circular dependencies
between jacquard-lexgen/jacquard-identity and jacquard-api. Implements
XrpcRequest/XrpcResp traits and manual IntoStatic impls (cannot use
jacquard_derive::IntoStatic due to lack of jacquard-derive dependency).
Includes 10 unit tests verifying serialization, deserialization, and
IntoStatic trait implementation for all types.
LexBlob fields now cause proper code to be generated for them and the generated validation function will now verify against them.
- Fixes https://tangled.org/nonbinary.computer/jacquard/issues/28
Default values from lexicons will now generate Default implementations that use them where possible, and will affect generated builder defaults.