Skip to content

Releases: blowdart/idunno.Bluesky

v.1.8.0

04 Apr 14:38
Immutable release. Only release title and notes can be modified.
v1.8.0
b842d06

Choose a tag to compare

Added

idunno.AtProto

  • Added metrics in AtProtoHttpClientMetrics including request duration, request count and failure count.
  • Added metrics in DidPlcDirectory including request duration, request count and failure count.
  • Added extensions for OpenTelemetry.Metrics: AddAtProtoHttpClientMetrics, AddAtProtoDirectoryMetrics, and AddAtProtoJetStreamMetrics.
  • Added new constructor overloads for AtProtoHttpClient to allow for use with MetricsFactory.
  • Added Throttled to AccountStatus in Jetstream account events.
  • Added MaxMessageSize to JetStreamOptions to guard against a malicious jetstream server sending overly large messages.
  • Added optional validation callbacks to AtProtoAgent.BuildOAuthLoginUri to allow for validation of the discovered PDS and authorization server URIs.
  • Added default validation function to disallow loopback and private IP ranges in discovered URIs, to mitigate SSRF attacks.
  • Added override on ToString() on AtProtoCredential to return a redacted string in case of accidental logging.
  • Added default SSRF protections to AtProtoAgent, AtProtoHttpClient and AtProtoJetStream with idunno.Security.Ssrf.
    This can be disabled by passing your own HttpClient when creating an agent, or into AtProtoHttpClient.
  • Added AllowLoopback parameter to BuildOAuth2LoginUri to allow loopback addresses in discovered URIs for testing and development purposes. This is disabled by default.

idunno.AtProto.Types

  • Added == and != operations to Cid.

idunno.Bluesky

  • Added Bot property to Profile record to set or unset the profile self label
    indicating a bot account, see [APP-1928] add bot/automated account badge and self-labeling settings

  • Added SelfLabels property to ProfileViewBasic which returns a list of self labels applied to a profile,
    which can be used in conjunction with SelfLabelValues to check if a profile has applied any self labels to itself,
    including the Bot self label and DiscourageShowingToLoggedOutUser self label. e.g.

    var profile = await agent.GetProfile("beans.monster");
    if (profile.Result.SelfLabels.Contains(SelfLabelValues.Bot))
    {
        // 🤖 - Do some action because the profile self identifies as a bot.
    }
  • Added SelfLabels property to PostView.

  • Added SelfLabelValues class.

  • Added Bot and DiscourageShowingToLoggedOutUser to SelfLabelValues.

  • Added JsonPolymorphic attributes to individual records to remove the extraneous ExtensionData entries.

  • Added CreateStatus, GetStatus and UpdateStatus to BlueskyAgent.

  • Added a setter to DurationMinutes on Status and setters to ExternalProperties to allow for updating of an existing profile status.

Documentation

  • Added documentation for metrics.
  • Added documentation for setting a status on a profile.

Changed

idunno.AtProto

  • Changed AtJetStreamIdentity class to make Handle property nullable.
  • Add version to JetstreamMetrics
  • Made JetStream.MeterName and JetStream.MeterVersion properties public to allow for easy OTEL configuration.
  • Fixed OAuth logout.
  • Changed JetStreamMetrics from public to internal because it is not intended for public use.
  • Remove [Serializable] from AtProtoCredential.
  • Exclude Credential in CredentialException from serialization because it may contain sensitive information.

idunno.AtProto.Types

idunno.Bluesky

  • Updated SuggestedActors to include RecIdStr, see Add recIdStr to suggested follows by actor
  • Added setter to Notification.Declaration.AllowSubscriptions for easy updating of the value.
  • Mark SetStatus as obsolete in favor of CreateStatus and UpdateStatus.
    This allows for better handling of the case where a profile does not have an existing status,
    and clearer intent when updating an existing status.
  • Marked SelfLabelNames as obsolete in favor of SelfLabelValues, as the new name is more correct.

v.1.7.0

12 Mar 20:40
Immutable release. Only release title and notes can be modified.
v1.7.0
13cd1ea

Choose a tag to compare

⚠️Security Advisory

A transitive dependency of idunno.AtProto and idunno.AtProto.OAuthCallback, Microsoft.Bcl.Memory had a Denial of Service security vulnerability, CVE-2026-26127

v1.7.0 updates the dependencies, resolving the vulnerability.

v1.6.0

21 Feb 19:34
Immutable release. Only release title and notes can be modified.
v1.6.0
cd055dc

Choose a tag to compare

Added

idunno.AtProto

  • Added AccessTokenException, which will be thrown if a supplied access token is not valid for a service.
  • Added GetRawRecord to AtProtoAgent and AtProtoServer.

idunno.AtProto.Types

  • Added Self property to RecordKey which returns a RecordKey with the value of self.

idunno.Bluesky

  • Added support for drafts, including Draft record, CreateDraft(), GetDraft(), ListDrafts(), DeleteDraft() and PublishDraft().
  • Added Post(DraftWithId) to create a post from a draft.

Fixed

idunno.Bluesky

  • Fixed DeleteLike() to use the correct collection when validating the uri parameter.

Documentation

  • Removed erroneous references to CreatePost(), thanks shiftkey

Changed

idunno.AtProto

  • GetRecord<T> and ListRecords<T> will now attempt to resolve the PDS hosting the record if a service is not specified.
  • GetRecord, CreateRecord, DeleteRecord, PutRecord, ListRecords and ApplyWrites methods on AtProtoServer will now
    throw AccessTokenException if any specified credentials have not been issued by the specified service.
  • Removed Type property from Blob.
  • Removed Type property from SelfLabels.

idunno.Bluesky

  • Removed Type property from Facet.

Breaking Changes

idunno.AtProto

  • The overloads for ListRecords<T> that requires authentication will ignore any service parameter passed to it.

idunno.Bluesky

  • Switched RemainingDailyVideos and RemainingDailyBytes in UploadLimits to long?

v1.5.0

03 Feb 04:31
Immutable release. Only release title and notes can be modified.
v1.5.0
00f7eee

Choose a tag to compare

Added

idunno.AtProto

  • Added TypeResolver static class.
  • Added TimestampIdentifier to SourceGenerationContext.

idunno.AtProto.Types

  • Added new constructor on TimeStampIdentifier to create from a RecordKey.
  • Added TimeStampIdentifierJsonConverter for TimeStampIdentifier.
  • Added explicit and implicit conversions between TimeStampIdentifier and RecordKey.
  • Added tests for TimeStampIdentifier serialization and deserialization.

idunno.Bluesky

  • Added TypeResolver static class.
  • Added support for GetActorStarterPacks(), addresses #288, thank you j-childers
  • Added FeedItem record to represent feeds added in a StarterPack record.
  • Added Presentation property to EmbeddedVideo and EmbeddedVideoView to for video presentation hints.
  • Added VideoPresentationKnowValues static class with known presentation values for videos.

Changed

idunno.Bluesky

  • Added Status property to ProfileViewBasic, ProfileView and ProfileViewDetailed to represent live streaming status for a profile, if any.
  • Changed Description property in ListView to be nullable to match the API, fixes #289
  • EmbeddedVideo and EmbeddedVideoView include the optional Presentation property. See Add presentation to video embed as a hint to the client about how to display the video.
  • EmbeddedVideo and EmbeddedVideoView constructors updated to take optional presentation parameter.

Breaking Changes

idunno.AtProto

  • BlobReferences now enforces that the link property is a CID.

idunno.Bluesky

  • Changed StarterPack Feeds property to be a list of FeedItem, fixes #288
  • Changed StarterPack constructor to take a list of FeedItem for feeds parameter, fixes #288
  • Changed EmbeddedVideo and EmbeddedVideoView to include the optional Presentation property.
  • EmbeddedVideo constructor overload that took a single Caption parameter has been removed. Use the constructor that takes an ICollection of Caption.

v.1.4.0

18 Jan 20:12
Immutable release. Only release title and notes can be modified.
v1.4.0
4eb7207

Choose a tag to compare

Added

idunno.AtProto

  • Add public AtProtoJsonSerializerOptions to enable easier creation of JsonSerializerOptions with chained resolvers
    for custom AtProtoRecord classes.
  • Add ToAccessCredentials and ToAccessTokenCredential methods to Session.

idunno.Bluesky

  • Add "cashtag" facet detection to the default facet extractor. See Add cashtag support for stock ticker discussions
  • Add SetLiveStatus to indicate if a user is live streaming, and SetStatus and DeleteStatus to set and delete a user's status.
  • Add BlueskyJsonSerializerOptions to enable easier creation of JsonSerializerOptions with chained resolvers

v1.3.0

10 Jan 21:11
Immutable release. Only release title and notes can be modified.
v1.3.0
60bf0ac

Choose a tag to compare

Added

idunno.AtProto

  • Add non-generic version of AtProtoHttpClient to allow for "raw" get/post operations.
  • Add AccessTokenCredential to wrap an access jwt for which no refresh token is available.
  • Add Resolution class with static methods to resolve DIDs for handles,and DidDocuments and PDS URIs for handles and DIDs without needing to instantiate a client.
  • Add GetGraphemeLength extension method on string to get the grapheme length of a string.

Documentation

  • Add documentation for using the raw client
  • Add documentation on using your own record types with typed client, and an approach to mapping a lexicon definition to a C# POCO.

Changed

idunno.AtProto

  • Bump ZstdSharp.Port from 0.8.6 to 0.8.7.

idunno.Bluesky

  • Change DeleteRepost to accept either a repost AT-URI, or the AT-URI of the original post.
  • Change access modifiers on the constructors for Facet and PostBuilderFacetFeature to public.

v1.2.0

27 Dec 14:57
Immutable release. Only release title and notes can be modified.
v1.2.0
ebb12dc

Choose a tag to compare

Added

idunno.AtProto

  • Add .NET 10 support
  • Add support for configuration binding and options in DI.
  • Add OAuthLoginState to SourceGenerationContext.
  • Expose ValidationRegex constants on Did and Handle.
  • Add optional parameter uriExtraParameters to BuildOAuth2LoginUri.
  • Add optional parameter stateExtraProperties to BuildOAuth2LoginUri.

idunno.AtProto.OAuthCallback

  • Add .NET 10 support

idunno.AtProto.Types

  • Create common ATProto types idunno.AtProto.Types package.

idunno.Bluesky

  • Add .NET 10 support
  • Add support for configuration binding and options in DI.

Changed

idunno.AtProto

  • Update 3rd party dependencies.
  • Fix AtProtoAgent.RefreshCredentials() to attempt a refresh if the access token has expired and there is a refresh token available.
  • Update OAuth code for IdentityModel.OidcClient.Extensions version 7.0.0.

idunno.AtProto.OAuthCallback

  • Update 3rd party dependencies.

idunno.Bluesky

  • Update 3rd party dependencies.

Breaking Changes

idunno.AtProto

  • Move common ATProto types to idunno.AtProto.Types package.
  • The AtProtoAgent constructor can now take an ClaimsPrincipal or ClaimsIdentity.
    This means you must now use named parameters to call the desired constructor, e.g.
    using var agentWithoutLogging =
      new AtProtoAgent(service: new("https://bsky.social"));
    {
    }

v1.1.0

30 Sep 17:17
Immutable release. Only release title and notes can be modified.
v1.1.0
4b49afb

Choose a tag to compare

Added

idunno.Bluesky

  • Add support for pronouns and website in Profile and its associated views.
  • Add support for some of the more useful unspecced APIs
    • GetAgeAssuranceState()
    • GetPopularFeedGenerators()
    • GetSuggestedStarterPacks()
    • GetSuggestedUsers()
    • GetTaggedSuggestions()
    • GetTrendingTopics()
    • GetTrends()
  • Add support for Tags in ReplyTo() and Quote() methods.
  • Expose FacetExtractor on BlueskyAgent.

Fixed

idunno.AtProto

  • Calling logout on an agent which is authenticated via OAuth no longer causes a DPoP error on the AtProto API.

Breaking Changes

idunno.Bluesky

  • The constructor for Profile() which takes requires values for all parameters now includes a pronouns and website parameter.

v1.0.0

17 Sep 12:28
f316c10

Choose a tag to compare

Features

idunno.Bluesky

  • Add support for Tags in Post() methods.

v0.9.9

11 Sep 17:09
v0.9.9-prerelease
0fe732e

Choose a tag to compare

v0.9.9 Pre-release
Pre-release
  • Bump System.Text.Json from 9.0.8 to 9.0.9.