ci: release#172
Merged
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
atproto-pds | 67f768e | May 24 2026, 10:31 PM |
commit: |
bd8270c to
c05fa08
Compare
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
cirrusdocs | 67f768e | Commit Preview URL Branch Preview URL |
May 24 2026, 10:31 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
pdscheck | 67f768e | May 24 2026, 10:31 PM |
82f91a2 to
98829a5
Compare
98829a5 to
67f768e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@getcirrus/oauth-provider@0.5.0
Minor Changes
ec284fdThanks @ascorbic! - Advertise ajwks_uriin OAuth authorization-server metadata and serve an empty JWKS at/oauth/jwks. OAuth clients that run JWKS discovery against the metadata endpoint no longer fail when talking to Cirrus. The key set is empty because Cirrus signs access tokens with HS256 (symmetricJWT_SECRET) — there are no public keys to publish.Patch Changes
#175
54ab459Thanks @ascorbic! - FixparseScoperejecting valid granular scopes that use the query-only form (e.g.repo?collection=a&collection=b) withUnknown scope resource. The parser previously only looked for:as the prefix delimiter, but per@atproto/oauth-scopessyntax a scope can useprefix:positional,prefix?query, or both. This affected permission sets whoserepopermission listed multiple collections, since those expand to a single query-form token.#186
22f09deThanks @ascorbic! - PAR (/oauth/par) now resolves everyinclude:<nsid>permission-set scope eagerly and rejects withinvalid_scopewhen an include points at a nonexistent or non-permission-set lexicon. Previously the resolver only ran at the authorize step, so clients with a typo in an include scope got a freshrequest_urifrom PAR and only learned about the bad scope at consent time. Matches reference oauth-provider behaviour (request-manager.ts:297-313).#184
47c8c1eThanks @ascorbic! - PAR (/oauth/par) now validatesredirect_uriagainst the client's registered redirect_uris at push time. Previously the check only ran at the authorize step, which let a malicious caller obtain arequest_urifor an unregistered redirect even though the subsequent authorize would have rejected it. Reject early per RFC 6749 §3.1.2.4.#185
aed8e1bThanks @ascorbic! -scopes_supportedin the authorization-server metadata now lists only the values the spec calls out:atproto,transition:generic,transition:email,transition:chat.bsky. Granular resource scopes (repo:<nsid>,rpc:<lxm>,blob:<mime>,account:<…>,identity:<…>) and permission-set scopes (include:<nsid>) are parameterised and aren't enumerable, so bare prefixes likerepoorincludeare no longer advertised — clients discover support by attempting the scope and falling back oninvalid_scope, matching the reference PDS.@getcirrus/pds@0.16.0
Minor Changes
#179
9f8adeeThanks @ascorbic! - Implement three PDS-side identity endpoints that previously fell through to the AppView proxy and returned 501:com.atproto.identity.resolveDidreturns the DID document for the local account.com.atproto.identity.resolveIdentityreturns{did, handle, didDoc}for the local handle or DID.com.atproto.identity.getRecommendedDidCredentials(authenticated) returns the rotation keys,alsoKnownAs, verification methods, and PDS service entry that a migrating account should advertise.Requests for foreign DIDs or handles continue to fall through to the AppView proxy unchanged.
#171
bf2f857Thanks @ascorbic! - The firehose now emits the sync 1.1 message shape, matching what the bsky.network relay and other AT Protocol consumers expect. Existing subscribers will start seeing new fields and new event types; nothing has to change on the consumer side, but the warnings some relays were logging against Cirrus hosts (notablymissing prevData field) will stop.What changed on the wire:
#commitmessages now includeprevData(the prior commit's MST root CID), so relays can verify each commit inductively without re-fetching the repo. The CAR slice now also carries the MST covering-proof blocks needed for that verification.ops[]entry on update and delete now includesprev, the previous CID of the touched record. Creates omit it as before.tooBigis alwaysfalse. It was previously set based on payload size, which never matched the field's meaning under sync 1.1.#accountevents are emitted on activation and deactivation, so relays learn about account status changes without polling. Deactivation reportsstatus: "deactivated"; activation reportsactive: truewith no status.#syncevents are emitted on activation (after migration or initial setup), giving relays the current commit block without a diff.#identityevents now allow thehandlefield to be omitted, per spec.#infoframe withname: "OutdatedCursor"is sent when a client connects with a cursor older than the retained event window. The stream continues from the oldest available event instead of disconnecting.applyWritesrejects calls with more than 200 operations, matching the spec cap.#168
71b988eThanks @simnaut! - Implementcom.atproto.sync.getLatestCommit.This sync XRPC endpoint was previously unimplemented, so requests fell through to the XRPC proxy and returned
501 MethodNotImplemented. Relays callgetLatestCommitduring their crawl bootstrap, so a freshly created repo could never be indexed by a freshrequestCrawl. The endpoint now returns the repo's head commit as{ cid, rev }(sourced from the samerpcGetRepoStatusdata used bygetRepoStatus/listRepos).#178
aceda62Thanks @ascorbic! - Implementcom.atproto.sync.listReposByCollection.Relays and crawlers use this endpoint to discover which PDSes host repos that contain a given record collection. The PDS now answers with
{ repos: [{ did }] }when its account has at least one record in the requested collection, or an empty list otherwise. Invalid or missingcollectionparameters returnInvalidRequest.Patch Changes
#181
6589e1dThanks @ascorbic! -applyWritesnow returns the record CID oncreateResultandupdateResulteven when the record is removed later in the same batch. The lexicon markscidas required, but the previous code looked it up in the post-commit MST — for a record that was created then deleted within one batch, the MST has no entry and the field was missing. The CID is now computed from the record bytes up front, matching reference PDS behaviour.#176
36b79fdThanks @ascorbic! -com.atproto.repo.applyWritesnow accepts batches that touch the same rkey more than once, matching the reference PDS. The common case is a create followed by a delete on the same rkey within one batch (an atomic no-op pattern several clients rely on); previously Cirrus rejected this with400 InvalidRequest: duplicate rkey in batch. Two creates on the same rkey still fail, but now as409 RecordAlreadyExistsfrom the repo layer rather than a pre-flight 400.#177
ec284fdThanks @ascorbic! - Advertise ajwks_uriin OAuth authorization-server metadata and serve an empty JWKS at/oauth/jwks. OAuth clients that run JWKS discovery against the metadata endpoint no longer fail when talking to Cirrus. The key set is empty because Cirrus signs access tokens with HS256 (symmetricJWT_SECRET) — there are no public keys to publish.#180
d107c59Thanks @ascorbic! - Fix three conformance issues found by pdscheck:com.atproto.server.getSessionnow accepts OAuth access tokens presented with theDPoPscheme (RFC 9449), not justBearer. OAuth clients can now read session info without first being rejected with 401.com.atproto.server.listAppPasswordsreturnscreatedAtas an RFC 3339 datetime (e.g.2026-03-29T15:30:17.000Z) instead of the SQLite"YYYY-MM-DD HH:MM:SS"form that violated the lexicon.com.atproto.server.getAccountInviteCodesis now implemented and returns{ codes: [] }for authenticated callers (Cirrus hasinviteCodeRequired: false, so there are no invite codes to list). Previously it fell through to the AppView proxy and returned 501.Updated dependencies [
ec284fd,54ab459,22f09de,47c8c1e,aed8e1b]: