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
- 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