Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions .changeset/bsky-read-helpers.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/dns-wellknown-handle-resolvers.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/germconvenience-0-11.md

This file was deleted.

14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# @germ-network/atprotoclient

## 0.11.0

### Minor Changes

- [#58](https://github.com/germ-network/AtprotoClient/pull/58) [`18c070d`](https://github.com/germ-network/AtprotoClient/commit/18c070d62897a63f70e74a082365abfbc95dd906) Thanks [@germ-mark](https://github.com/germ-mark)! - Add three Bluesky read helpers on `Atproto.XRPC.BskyAppCallable`: `relationshipLookup(actor:others:)`, which reports which `app.bsky.graph.getRelationships` subjects the AppView returned a relationship for and which it didn't (unlike `getRelationships(actor:subjects:)`, which drops every not-found subject and loses which ones they were) - note that this isn't an account-existence check, since the AppView returns a relationship entry for any well-formed DID whether or not the account exists; and `bskyProfileIfExists(actor:)`, which maps `app.bsky.actor.getProfile`'s undeclared not-found shape (a 400 `InvalidRequest` whose message is "Profile not found") to `nil` rather than throwing. Also add `Atproto.BskyCDN.imageURL(_:did:blob:host:)` to build Bluesky CDN image URLs from a blob reference.

Also fix `Lexicon.App.Bsky.Graph.GetRelationships.Parameters.init` to accept exactly 30 `others`, matching the lexicon's `others.maxLength: 30` - it previously rejected exactly 30, and make `Lexicon.App.Bsky.Graph.GetRelationships.Errors` (`tooManyOthersInput`, `actorMismatch`) public - it's already thrown by public API.

- [#57](https://github.com/germ-network/AtprotoClient/pull/57) [`f19d608`](https://github.com/germ-network/AtprotoClient/commit/f19d6082269141f7b36d0fe5da0f463db0a8f5d2) Thanks [@germ-mark](https://github.com/germ-mark)! - Add DNS-over-HTTPS TXT and well-known atproto-did handle-resolution components: `Atproto.WellKnownHandleResolver` and `Atproto.DnsHandleResolver`, plus the underlying `Atproto.DNSWireFormat` codec, `Atproto.DNSTXTFetcher` protocol, and `Atproto.DoHTXTFetcher` conformer they're built on. Together these implement the two handle-resolution methods from the atproto handle spec (https://atproto.com/specs/handle) - the DNS TXT method and the HTTPS well-known method - as standalone, portable, `Sendable` components matching `DidWebResolver`/`DidPlcResolver`'s conventions: redirect refusal, response-size bounds, and the resolved value parsed as an `Atproto.DID` (method form checked via `Atproto.DID.init(string:)`).

### Patch Changes

- [#59](https://github.com/germ-network/AtprotoClient/pull/59) [`0706814`](https://github.com/germ-network/AtprotoClient/commit/0706814cd8bc3c2f5100e02f1aafc1ab88ddc7e4) Thanks [@germ-mark](https://github.com/germ-mark)! - Require GermConvenience 0.11.0, whose `URLSession.manualRedirect()` also refuses redirects on Linux and Android. The DID resolvers screen the host once, before the request, so they depend on redirects not being followed.

## 0.10.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@germ-network/atprotoclient",
"private": true,
"version": "0.10.0",
"version": "0.11.0",
"engines": {
"node": ">=24"
},
Expand Down