Added
idunno.AtProto
- Added metrics in
AtProtoHttpClientMetricsincluding request duration, request count and failure count. - Added metrics in
DidPlcDirectoryincluding request duration, request count and failure count. - Added extensions for
OpenTelemetry.Metrics:AddAtProtoHttpClientMetrics,AddAtProtoDirectoryMetrics, andAddAtProtoJetStreamMetrics. - Added new constructor overloads for
AtProtoHttpClientto allow for use withMetricsFactory. - Added
ThrottledtoAccountStatusin Jetstream account events. - Added
MaxMessageSizetoJetStreamOptionsto guard against a malicious jetstream server sending overly large messages. - Added optional validation callbacks to
AtProtoAgent.BuildOAuthLoginUrito 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()onAtProtoCredentialto return a redacted string in case of accidental logging. - Added default SSRF protections to
AtProtoAgent,AtProtoHttpClientandAtProtoJetStreamwith idunno.Security.Ssrf.
This can be disabled by passing your ownHttpClientwhen creating an agent, or intoAtProtoHttpClient. - Added
AllowLoopbackparameter toBuildOAuth2LoginUrito 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
Botproperty toProfilerecord 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
SelfLabelsproperty toProfileViewBasicwhich returns a list of self labels applied to a profile,
which can be used in conjunction withSelfLabelValuesto check if a profile has applied any self labels to itself,
including theBotself label andDiscourageShowingToLoggedOutUserself 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
SelfLabelsproperty toPostView. -
Added
SelfLabelValuesclass. -
Added
BotandDiscourageShowingToLoggedOutUsertoSelfLabelValues. -
Added
JsonPolymorphicattributes to individual records to remove the extraneousExtensionDataentries. -
Added
CreateStatus,GetStatusandUpdateStatustoBlueskyAgent. -
Added a setter to
DurationMinutesonStatusand setters toExternalPropertiesto 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
AtJetStreamIdentityclass to makeHandleproperty nullable. - Add version to
JetstreamMetrics - Made
JetStream.MeterNameandJetStream.MeterVersionproperties public to allow for easy OTEL configuration. - Fixed OAuth logout.
- Changed
JetStreamMetricsfrompublictointernalbecause it is not intended for public use. - Remove
[Serializable]fromAtProtoCredential. - Exclude
CredentialinCredentialExceptionfrom serialization because it may contain sensitive information.
idunno.AtProto.Types
- Updated DID validation regex to align with specs: allow digits in DID method.
idunno.Bluesky
- Updated
SuggestedActorsto includeRecIdStr, see Add recIdStr to suggested follows by actor - Added setter to
Notification.Declaration.AllowSubscriptionsfor easy updating of the value. - Mark
SetStatusas obsolete in favor ofCreateStatusandUpdateStatus.
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
SelfLabelNamesas obsolete in favor ofSelfLabelValues, as the new name is more correct.