PackageTrack
Sign in Get early access

bluesky

The most famous and powerful Dart/Flutter library for Bluesky Social.

2.6.4 8.1K downloads/mo #3199 most downloaded on pub.dev myConsciousness/atproto.dart

What this package is like to depend on

Last release 3 days ago

20 Aug 2026

Release timing varies

gaps range from 8 days to 3 months

Nearly every release is documented

notes for 210 of 210 stable releases

1 version withdrawn

withdrawn after publishing

3 years old

232 releases · first in 2023

48 releases in the last 12 months

see the full history below

Release timeline

232 releases · Mar 2023 to Aug 2026
2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 232
  1. 2.6.4 20 Aug 2026
    Release notes

    chore: Sync lexicons and regenerate sources (#2565)

    Open source →
    Release notes
    • feat: added app.bsky.feed.defs#knownLikers
    • feat: added app.bsky.feed.defs#viewerState.knownLikers
    • chore: regenerated from synced lexicons
    Open source →
  2. 2.6.3 14 Aug 2026
    Release notes

    chore: Sync lexicons and regenerate sources (#2563)

    Open source →
    Release notes
    • feat: added app.bsky.actor.contentVisibilityDeclaration
    • chore: updated app.bsky.embed.video.alt
    • chore: updated app.bsky.embed.video#view.alt
    • chore: regenerated from synced lexicons
    Open source →
  3. 2.6.2 12 Aug 2026
    Release notes
    • feat: added app.bsky.video.abortUpload
    • chore: updated app.bsky.video.defs#jobStatus.state
    • feat: added app.bsky.video.finishUpload
    • feat: added app.bsky.video.getUploadStatus
    • feat: added app.bsky.video.startUpload
    • feat: added app.bsky.video.uploadPart
    • chore: regenerated from synced lexicons
    Open source →
  4. 2.6.1 11 Aug 2026
    Release notes
    • chore: updated app.bsky.embed.video.video
    • chore: regenerated from synced lexicons
    Open source →
  5. 2.6.0 09 Aug 2026
    Release notes
    • feat: added feed.buildPostText and feed.postText, which turn plain text into a faceted app.bsky.feed.post in one call. Getting this right by hand took three steps the docs had to spell out — format first (markdown links only become link facets after formatting), post the formatted text rather than the input (facet ranges are byte offsets into it, so the original string points every link at the wrong characters), and convert bluesky_text's facet maps into RichtextFacet models. buildPostText returns a PostText holding the formatted text and its facets together so the two cannot be separated by accident, and postText builds and publishes in one call.
    • fix: mentions are now resolved with com.atproto.identity.resolveHandle over this client's transport. bluesky_text on its own opens its own HTTP connection to a default host, so an account on a self-hosted PDS resolved its mentions against the wrong server, and none of the client's configuration — service, timeout, retry policy, custom getClient, proxy headers — applied to that call.
    • feat: a mention whose handle does not resolve is reported in PostText.unresolvedHandles (or through postText's onUnresolvedHandles) instead of being silently dropped. It is not an error — the mention just stays plain text — but throwing from the callback aborts before the record is created, for an author who would rather fix a typo than publish a mention that renders as plain text.
    • chore: bluesky_text moves from a dev dependency to a runtime dependency. It brings no new transitive packages (xrpc, http and characters are already dependencies) and there is no cycle: bluesky_text does not depend on bluesky.
    Open source →
  6. 2.5.0 09 Aug 2026
    Release notes
    • chore: bump atproto to ^2.5.0, which adds Firehose and CursorStore to package:bluesky/firehose.dart.
    Open source →
  7. 2.4.6 08 Aug 2026
    Release notes
    • fix: Bluesky.fromOAuthSession, BlueskyChat.fromOAuthSession and OzoneTool.fromOAuthSession pass their timeout through to the OAuthSessionManager they build, so a hung restore or refresh is bounded by the timeout the caller asked for instead of running unbounded.
    Open source →
  8. 2.4.5 06 Aug 2026
    Release notes
    • feat: added tools.ozone.queue.createQueue.errors.InvalidRecommendedPolicies
    • feat: added tools.ozone.queue.createQueue.input.recommendedPolicies
    • feat: added tools.ozone.queue.defs#queueView.recommendedPolicies
    • chore: updated tools.ozone.queue.updateQueue
    • feat: added tools.ozone.queue.updateQueue.errors.InvalidRecommendedPolicies
    • feat: added tools.ozone.queue.updateQueue.input.recommendedPolicies
    • chore: regenerated from synced lexicons
    Open source →
  9. 2.4.4 03 Aug 2026
    Release notes
    • chore: updated chat.bsky.group.createGroup.input.members
    • chore: regenerated from synced lexicons
    Open source →
  10. 2.4.3 02 Aug 2026
    Release notes
    • chore: updated app.bsky.actor.defs#viewerState.muted
    • feat: added app.bsky.actor.defs#viewerState.mutedOnlyQuoteposts
    • feat: added app.bsky.actor.defs#viewerState.mutedOnlyReposts
    • chore: updated app.bsky.graph.getMutes
    • chore: updated app.bsky.graph.muteActor
    • feat: added app.bsky.graph.muteActor.input.onlyQuoteposts
    • feat: added app.bsky.graph.muteActor.input.onlyReposts
    • chore: updated app.bsky.unspecced.defs#threadItemPost.opThread
    • feat: added app.bsky.unspecced.defs#threadItemPost.opThreadPostCount
    • feat: added app.bsky.unspecced.defs#threadItemPost.opThreadPostIndex
    • feat: added app.bsky.video.defs#jobStatus.failureCode
    • chore: regenerated from synced lexicons
    Open source →
  11. 2.4.2 29 Jul 2026
    Release notes
    • feat: added tools.ozone.report.closeReports
    • chore: updated tools.ozone.report.createActivity.errors.ReportNotFound
    • feat: added tools.ozone.report.createActivity.input.eventId
    • chore: tools.ozone.report.createActivity.input.reportId is now optional
    • chore: regenerated from synced lexicons
    • chore: bump atproto to ^2.4.1
    Open source →
  12. 2.4.1 28 Jul 2026
    Release notes
    • chore: updated app.bsky.draft.createDraft.output.id
    • chore: regenerated from synced lexicons
    Open source →
  13. 2.4.0 26 Jul 2026
    Release notes
    • feat: ThreadVerificationException now carries the thread's rkeys and uris, and reports a response without the optional results array as inconclusive rather than as a plain failure. applyWrites is atomic, so the exception is only ever raised after the thread is committed, and createThreadAtomic builds the batch internally — the record keys that make the posts findable used to die with it, leaving a published thread reported as a hard failure nothing could act on. A server that omits results has contradicted nothing, and inconclusive says so: the thread is there, and a feed.post.get on the first of uris confirms it.
    • fix: bluesky.video.uploadVideo now throws a StateError when the client has no authenticated account, instead of sending did= and surfacing whatever the video service makes of it — after the whole video has been uploaded. A caller supplying its own did in $parameters is unaffected.
    • fix: bluesky.video.uploadVideoAndAwait now rejects a zero or negative pollInterval or timeout with an ArgumentError before anything is sent. A non-positive interval polled video.bsky.app as fast as it answered, for as long as the job ran.
    • fix: bluesky.video.uploadVideoAndAwait no longer calls onProgress once its timeout has expired. A status that arrived while the budget ran out was still reported, so a caller that had already been handed VideoUploadTimeoutException saw one last progress event for an upload it had given up on.
    • feat: added ozoneDid to every OzoneTool factory, naming the Ozone instance tools.ozone.* should be routed to. OzoneTool was the only client that set no proxy header of its own and told the caller to supply one, but a caller-supplied atproto-proxy belongs to the shared context, so it rode on app.bsky.* and com.atproto.* as well — leaving fromAtproto a choice between misrouting the timeline and reintroducing the single-use refresh token race it exists to remove. OzoneTool now derives a context of its own, as BlueskyChat already did, and the header follows tools.ozone.* alone. #atproto_labeler is appended unless ozoneDid already names a service; omitting ozoneDid adopts the context unchanged, as before.
    • fix: a caller-supplied proxy header spelled in another casing no longer survives alongside BlueskyChat's own. The two were merged key-exactly, so Atproto-Proxy and atproto-proxy both reached the request; package:http happened to collapse them in the chat client's favour, but a custom GetClient/PostClient forwarding the raw map emitted both and a server reading the first sent DM listing and sending to whatever service the caller had named.
    • fix: a label preference scoped to a labeler is now remapped from its legacy identifier before it is stored. nsfw, gore and suggestive were remapped only on unscoped preferences, so the same preference with a labelerDid was filed under a key nothing ever reads — a labeler-scoped "hide nsfw" was silently a no-op while the unscoped one worked.
    • fix: ActorGetPreferencesOutput.getModerationPrefs no longer lists an app labeler twice when the user also subscribes to it. The app labelers are seeded first so that prefs scoped to them attach, and a labelersPref entry for one of them now reuses that seeded entry instead of appending a duplicate to ModerationPrefs.labelers.
    • fix: GroupBy.hour and GroupBy.minute bucket on UTC components with a UTC key. The bucket key was built from a local DateTime, so on a DST spring-forward date a local wall-clock time that does not exist normalized upward and collapsed two distinct UTC hours into one bucket.
    • fix: groups sharing an indexedAt are returned in the order they were created. List.sort is not stable, so beyond a handful of groups the ties came back in an arbitrary order.
    • feat: added NotificationsGrouperConfig.uniqueAuthors, which controls whether a group keeps at most one entry per author. The check used to be nested inside the time-window branch, so a custom config with window: null silently collapsed repeated notifications from one author. It now stands on its own and window governs the time window and nothing else. Defaults to true for custom configs; both shipped presets keep their current behavior (official on, lenient off).
    • perf: merging a large group is now linear rather than quadratic. Each group deduplicates its uris, authors and labels through hashed collections instead of rescanning the accumulated lists per member; grouping 8000 notifications into one group drops from ~16.8s to ~4ms. Output is unchanged, except that a single notification carrying the same label twice now contributes it once.
    • docs: NotificationsGrouper, NotificationsExtension.group and NotificationsGrouperConfig.window no longer describe the time window as sliding. The anchor is the notification that opened the group and is fixed for the group's lifetime; since notifications arrive newest first it is normally the group's newest.
    Open source →
  14. 2.3.0 26 Jul 2026
    Release notes
    • feat: added Bluesky.fromAtproto, BlueskyChat.fromAtproto and OzoneTool.fromAtproto, which drive their services from an ATProto the caller already owns instead of building a new one. Every factory used to build its own, and each of those owned a context holding its own copy of the session — so an app needing more than one client for the same account held two copies of one session. Refresh tokens are single-use, so those copies raced the moment the access token expired: the context that noticed first spent the token, and the other's refresh was rejected, surfacing as an UnauthorizedException the caller did nothing to provoke. Passing one ATProto to each client gives them one session, one deduplicated refresh, and one onSessionUpdated stream.
    • feat: added actorDid to Bluesky, BlueskyChat and OzoneTool, so the authenticated actor can be read without branching on the auth kind.
    • feat: added bluesky.feed.createThreadAtomic, which publishes a whole thread in a single com.atproto.repo.applyWrites commit. Record keys and reply CIDs are computed locally, so every post references the previous one without waiting for it to be written, and the thread is committed atomically rather than post by post. Also added ThreadPost, ThreadBatch, CreatedThread and ThreadVerificationException; ThreadBatch builds and verifies a batch without a client, exposing the record keys before the write and allowing an extra write — an app.bsky.feed.threadgate, say — in the same commit. Bluesky.feed is now FeedServiceImpl, a subclass of FeedService matching Bluesky.video; existing calls are unaffected.
    • feat: added VideoServiceImpl.uploadVideoAndAwait, which uploads a video and resolves with the resulting blob once the processing job terminates, polling getJobStatus at a caller-chosen interval and bounding the whole operation with a timeout. Added VideoUploadException with VideoJobFailedException, VideoJobMissingBlobException and VideoUploadTimeoutException, so a caller can tell a video the server rejected from one it gave up waiting for, and can show the server's own reason. A job that completes without a blob is reported as a failure rather than a success.
    • fix: a BlueskyChat's own atproto no longer sends the atproto-proxy chat header on the com.atproto.* calls made through it. The header identifies the chat service and belongs to chat.bsky.* alone; routing an identity or server call to it was unintended. BlueskyChat.headers is unchanged, and chat calls still carry the header.
    • docs: every OAuth factory now records that one shared OAuthSessionManager is what makes clients share a session, and that fromOAuthSession mints a fresh manager per call — two managers restored from one OAuthSession revoke each other rather than sharing.
    • chore: bump atproto_core to ^2.3.0 and atproto to ^2.3.0 (dev: bluesky_text ^1.6.0).
    Open source →
  15. 2.2.3 26 Jul 2026
    Release notes
    • feat: added app.bsky.ageassurance.defs#configRegion.platforms
    • feat: added app.bsky.notification.listNotifications#notification.starterPack
    • chore: regenerated from synced lexicons
    Open source →
  16. 2.2.2 22 Jul 2026
    Release notes
    • chore: widen atproto to ^2.2.1 and atproto_core to ^2.2.0.
    Open source →
  17. 2.2.0 21 Jul 2026
    Release notes
    • fix: chat.bsky.* and tools.ozone.* calls now refresh an expired access token instead of throwing UnauthorizedException. v2.1.2 described this as covering chat.bsky.*, but only Bluesky was changed: BlueskyChat.fromSession and OzoneTool.fromSession each still built a standalone ServiceContext with no refresh hook, so every call through chat.convo / chat.actor / the ozone services surfaced an expired token as an error. Both now drive their services from the context owned by their nested ATProto, as Bluesky already did — the proxy headers that route those calls are preserved, since the nested client is built with them.
    • feat: added onSessionUpdated to Bluesky, BlueskyChat and OzoneTool, surfacing the refreshed session so callers can re-persist it. Refresh tokens are single-use, so an app that keeps persisting the session it built the client with stores a spent token and is signed out on next launch.
    • chore: bump atproto to ^2.2.0 and atproto_core to ^2.1.0.
    Open source →
  18. 2.1.2 21 Jul 2026
    Release notes
    • fix: app.bsky.* and chat.bsky.* calls now refresh an expired access token instead of throwing UnauthorizedException. Bluesky.fromSession built a second ServiceContext for those services and never gave it the refresh hook, so only calls made through bsky.atproto recovered from an expired token. Every factory now shares the context owned by the nested ATProto, which also makes bsky.session reflect a refresh — previously it kept returning the spent credentials, so persisting it signed the user out on next launch. The OAuth factories were unaffected, since both contexts already shared one OAuthSessionManager.
    • chore: bump atproto to ^2.1.0.
    Open source →
  19. 2.1.1 21 Jul 2026
    Release notes
    • feat: added app.bsky.graph.searchStarterPacksV2
    • chore: regenerated from synced lexicons
    Open source →
  20. 2.1.0 18 Jul 2026
    Release notes
    • feat: notification grouping now matches the official Bluesky social-app by default. NotificationsGrouper / NotificationListNotificationsOutput.group() now group six reasons (like, repost, follow, like-via-repost, repost-via-repost, subscribed-post), apply a 48h sliding window anchored on each group's newest item, separate follow-backs into their own groups, and mark a group unread if any of its notifications is unread. This changes the default grouping output (a behavior change); to keep the previous behavior, pass NotificationsGrouperConfig.lenient() (e.g. output.group(config: const NotificationsGrouperConfig.lenient())).
    • feat: new NotificationsGrouperConfig (.official() / .lenient() / fully custom) controls groupable reasons, time window, follow-back separation, and the unread policy.
    • feat: NotificationsExtension.group() now accepts an optional config, and GroupBy / NotificationsExtension are now exported from package:bluesky/bluesky.dart.
    • feat: groupByHour / groupByMinute now use the official grouping default as well; for the legacy behavior with time bucketing, call group(by: GroupBy.hour(n), config: const NotificationsGrouperConfig.lenient()).
    • chore: bump dev dependency bluesky_text to ^1.5.3.
    Open source →
  21. 2.0.1 16 Jul 2026
    Release notes
    • docs: added an OAuth authentication section to the README — Bluesky.fromOAuth(OAuthSessionManager) (also on BlueskyChat/OzoneTool), OAuthSessionManager(oauth, sub:) / OAuthSessionManager.fromSession(restored), and the renamed oAuthSessionManager getter.
    • docs: added a short Firehose note pointing to bsky.atproto.sync.subscribeReposAsMessages() for typed messages.
    • chore: bump atproto_core to ^2.0.1 and atproto to ^2.0.1 (dev: bluesky_text ^1.5.2, atproto_oauth ^0.5.1).
    Open source →
  22. 2.0.0 16 Jul 2026
    Release notes
    • feat!: Bluesky.fromOAuth(OAuthSessionManager) (also on BlueskyChat/OzoneTool); fromOAuthSession(session, {oauthClient}) wraps a shared manager; oAuthSession getter replaced by oAuthSessionManager.
    • chore: updated tools.ozone.queue.defs#queueView.subjectTypes
    • chore: regenerated from synced lexicons
    • feat: the retryConfig parameter (on Bluesky/BlueskyChat/OzoneTool) now accepts any RetryStrategy, not only RetryConfig, so callers can fully customize backoff and which failures retry. RetryStrategy/RetryContext/RetryReason are re-exported. By default a procedure (POST) is no longer retried after an ambiguous failure the server may already have applied (see atproto_core).
    • fix: mute-word matching still scans quoted-post embeds when the top-level record fails validation.
    • fix: labeler-scoped content-label preferences (those carrying a labelerDid) are now applied only to the matching labeler and never leak into the global label defaults, and preferences scoped to an app labeler are honored instead of dropped — matching @atproto/api. Previously an orphaned scoped preference (e.g. for an unsubscribed labeler) could override the global defaults and, for example, unblur adult content.
    • fix: LinkPreview exposes cardyb's error/likelyType fields.
    • fix: the video service percent-encodes the port when building a did:web audience.
    • chore: removed duplicate imports in the tools extensions/utils.
    Open source →
  23. 1.7.2 15 Jul 2026
    Release notes
    • chore: tools.ozone.queue.defs#queueView.reportTypes is now optional
    • chore: tools.ozone.queue.defs#queueView.subjectTypes is now optional
    • feat: added tools.ozone.report.defs#reportView.isAutomated
    • chore: regenerated from synced lexicons
    Open source →
  24. 1.7.1 13 Jul 2026
    Release notes
    • chore: bump atproto to ^1.7.0, which exposes bsky.atproto.sync.subscribeReposAsMessages() — a Firehose subscription that yields already-decoded, typed messages instead of raw binary frames.
    Open source →
  25. 1.7.0 13 Jul 2026
    Release notes
    • fix!: rewrote the notification grouper as a typed O(n) implementation; notifications with a missing labels field (optional in the lexicon, common in practice) no longer crash group()/_mergeLabels (B-1/B-2/B-8).
    • fix: added current AppView reasons (verified, like-via-repost, subscribed-post, etc.); unknown reasons now fall back instead of throwing, so group() no longer crashes on live timelines (B-3).
    • fix: grouping keys use the remapped reason, so likes on feed generators (customFeedLike) actually merge (B-4).
    • fix: uploadVideo now uses ctx.repo, so it no longer crashes under an OAuth-authenticated client (session!.did was null) (B-13).
    • fix: the single-character mute-word check uses UTF-16 length (spec-conformant), and decidePost now guards with validate() so a malformed federated record no longer throws (B-9/B-11).
    • fix: out-of-range hour/minute now raise a runtime RangeError (was assert-only, so release builds silently misbehaved); labels are de-duped by value equality (B-5/B-6).
    • feat: added OzoneTool.fromOAuthSession and oAuthSession getters for parity with sibling clients (B-14).
    • fix!: regenerated from the fixed lex_gen — knownValues+default fields are now non-nullable with their spec default (e.g. app.bsky.actor.defs#mutedWord.actorTargetall, app.bsky.feed.getAuthorFeed.filterposts_with_replies, tools.ozone.setting.listOptions.scopeinstance); the corresponding hasX getters were removed and the moderation engine adapted accordingly (G-18).
    • chore: bump atproto to ^1.6.0, atproto_core to ^1.3.0, and bluesky_text to ^1.4.0.
    Open source →
  26. 1.6.0 10 Jul 2026
    Release notes

    Aligned the client-side moderation engine with the official @atproto/api implementation:

    • fix: moderateUserList now delegates to decideUserList instead of recursing into itself (previously caused a StackOverflowError).
    • fix: decideUserList no longer crashes on ListView subjects and now merges the creator's account/profile decisions, matching the official implementation.
    • fix: label causes from subscribed labelers are now attributed to the labeler (ModerationCauseSource.labeler) instead of always to the user.
    • fix: getInterpretedLabelValueDefinitions now defaults adultOnly to false (previously true), so labeler-defined labels are no longer adult-gated unless declared.
    • fix: getLabelerHeaders now appends ;redact only to app labelers (Bluesky's official labeler), matching the official atproto-accept-labelers header behavior. Subscribed labelers are sent without parameters.
    • feat: added the deprecated gore alias for graphic-media to the known label definitions (KnownLabelValue.gore), matching the official label defs.
    • feat: muted words now support expiresAt (expired words are ignored) and actorTarget: exclude-following (pass the post author via the new actor parameter).
    • feat: added matchMuteWords and MuteWordMatch, mirroring the official API. ModerationCauseMuteWord now carries the matches that triggered it.
    • fix: muted words with internal slashes now follow the official exclusion rule (and/or no longer matches andor), and all tag facet features are considered (previously only the first per facet).
    • feat: mute-word matching in moderatePost now scans app.bsky.embed.gallery alt texts and applies exclude-following via the post/quote author.
    • feat: added moderateStatus / decideStatus for live status (app.bsky.actor.defs#statusView) moderation.
    • feat: added ModerationBehaviors — a configuration object on ModerationOpts.behaviors that lets users customize block/mute/mute-word/hide behaviors and global label definitions without forking the engine. Defaults replicate the official logic.
    • chore: deprecated the string-keyed kBlockBehavior / kMuteBehavior / kMuteWordBehavior / kHideBehavior constants in favor of the typed kDefault*Behaviors maps.
    • chore: bump atproto and atproto_core.
    Open source →
  27. 1.5.0 09 Jul 2026
    Release notes
    • feat: added app.bsky.feed.searchPostsV2 endpoint.
    • feat: added chat.bsky.notification.getPreferences and chat.bsky.notification.putPreferences endpoints.
    • feat: added chat.bsky.notification.defs#preferences and #chatPreference.
    • feat: added isBetaUser to app.bsky.actor.defs#bskyAppStatePref.
    • feat: added additionalVerificationMethods to app.bsky.ageassurance.defs.
    • chore: deprecated chat preferences in app.bsky.notification.defs and app.bsky.notification.putPreferencesV2 in favor of chat.bsky.notification preferences.
    • feat: added app.bsky.embed.gallery embed (#image, #view, #viewImage).
    • feat: added chat.bsky.convo.getUnreadCounts endpoint.
    • feat: added chat.bsky.convo.defs#replyRef for message reply references.
    • feat: added chat.bsky.group.defs#disabledJoinLinkPreviewView and #invalidJoinLinkPreviewView.
    • feat: added tools.ozone.report.queryActivities endpoint.
    • fix: generate app.bsky.draft.defs#draftEmbedGallery correctly. Its items is now List<UDraftEmbedGalleryItems>; previously it referenced a non-existent file and failed to compile.
    • feat: handle the com.germnetwork.declaration record in RepoCommitHandler and re-export it from atproto.
    Open source →
  28. 1.4.7 27 May 2026
    Release notes
    • core: generated code. (#2355)
    Open source →
  29. 1.4.6 25 May 2026
    Release notes
    • core: generated code. (#2347)
    Open source →
  30. 1.4.5 22 May 2026
    Release notes
    • core: generated code. (#2343)
    Open source →
  31. 1.4.4 21 May 2026
    Release notes
    • core: generated code. (#2340)
    Open source →
  32. 1.4.3 20 May 2026
    Release notes
    • core: generated code. (#2337)
    Open source →
  33. 1.4.2 20 May 2026
    Release notes
    • core: generated code. (#2333)
    Open source →
  34. 1.4.1 20 Feb 2026
    Release notes
    • fix: optional jwt scope and auth identity. (#2224)
    Open source →
  35. 1.4.0 19 Feb 2026
    Release notes
    Open source →
  36. 1.3.0 20 Dec 2025
    Release notes
    Open source →
  37. 1.2.6 09 Nov 2025
    Release notes
    Open source →
  38. 1.2.5 19 Oct 2025
    Release notes
    • chore: Sync Lexicon Data.
    • Fix typo causing crash in moderation code.
    Open source →
  39. 1.2.4 30 Sep 2025
    Release notes
    • FIX: Fixed type compatibility issues with AtUri parameters
      • Corrected service method calls to properly handle AtUri objects instead of strings
      • Fixed moderation test data to use string URIs instead of AtUri objects where appropriate
      • Improved type safety in API parameter handling and mock data generation
    Open source →
  40. 1.2.3 30 Sep 2025
    Release notes
    • IMPROVEMENT: Enhanced union type classes with sealed class implementation
      • Union type classes are now generated as sealed classes instead of abstract classes
      • Enabled Dart's exhaustiveness checking for switch statements on union types
      • Improved compile-time safety by ensuring all union cases are handled
      • Prevents runtime errors from unhandled union variants through static analysis
    • FIX: Downgraded characters dependency from ^1.4.1 to ^1.4.0 for compatibility
    Open source →
  41. 1.2.2 27 Sep 2025
    Release notes
    • feat: Merged #2150 - Added pronouns field support to actor profiles
      • Added pronouns field to app.bsky.actor.defs#profileViewDetailed for displaying user pronouns in detailed profile views
      • Added pronouns field to app.bsky.actor.profile record for storing user pronouns in profile data
      • Enhanced user profile customization with pronouns information support
      • Synchronized with latest Bluesky lexicon updates for improved profile representation
    Open source →
  42. 1.2.1 26 Sep 2025
    Release notes
    • feat: Merged #2143 - Added onboarding suggested starter packs support
      • Added getOnboardingSuggestedStarterPacks endpoint for retrieving suggested starter packs during onboarding
      • Added getOnboardingSuggestedStarterPacksSkeleton endpoint for skeleton data of suggested starter packs
      • Enhanced onboarding experience with curated starter pack recommendations
      • New endpoints available via UnspeccedService for improved user onboarding flow
    Open source →
  43. 1.2.0 25 Sep 2025
    Release notes
    • feat: Merged #2137 - Added comprehensive Ozone moderation and administration services
      • Added CommunicationService for tools.ozone.communication.* endpoints
      • Added HostingService for tools.ozone.hosting.* endpoints
      • Added ModerationService for tools.ozone.moderation.* endpoints
      • Added SafelinkService for tools.ozone.safelink.* endpoints
      • Added ServerService for tools.ozone.server.* endpoints
      • Added SetService for tools.ozone.set.* endpoints
      • Added SettingService for tools.ozone.setting.* endpoints
      • Added SignatureService for tools.ozone.signature.* endpoints
      • Added TeamService for tools.ozone.team.* endpoints
      • Added VerificationService for tools.ozone.verification.* endpoints
      • Enhanced moderation and administrative capabilities for Bluesky applications
    • feat: Enhanced actor profile support
      • Added pronouns field to app.bsky.actor.defs#profileViewDetailed and app.bsky.actor.profile record
      • Added website field to app.bsky.actor.defs#profileViewDetailed and app.bsky.actor.profile record
      • Improved user profile customization capabilities with pronouns and website information
    Open source →
  44. 1.1.1 25 Sep 2025
    Release notes
    • MIGRATION: Updated to use the consolidated at_primitives package for all AT Protocol primitive types.
    • IMPROVEMENT: Simplified dependency management by adopting unified primitive types from at_primitives.
    Open source →
  45. 1.1.0 11 Sep 2025
    Release notes
    • feat: Version bump to v1.1.0 to reflect significant new functionality
      • Updated dependency to atproto: ^1.1.0 for compatibility with latest AT Protocol features
      • Minor version bump appropriate for major new OzoneTool capabilities
    Open source →
  46. 1.0.11 11 Sep 2025
    Release notes
    • feat: Added OzoneTool client for comprehensive tools.ozone.* API support
      • New OzoneTool class provides access to all Ozone moderation and administrative services
      • Includes Communication, Hosting, Moderation, Server, Team, and additional Ozone services
      • Available via separate package:bluesky/ozone.dart import for modular usage
      • Requires session-based authentication for secure administrative operations
      • Complete API coverage for moderation events, team management, server configuration, and more
    • chore: Update source files automatically (#2117)
      • Added new com.atproto.temp.dereferenceScope endpoint for temporary scope dereferencing
      • Added tools.ozone.moderation.defs.revokeAccountCredentialsEvent for account credential revocation
      • Updated Ozone moderation event unions to include new revoke credentials event type
      • Generated corresponding service methods, types, and documentation
    Open source →
  47. 1.0.10 07 Sep 2025
    Release notes
    • BREAKING CHANGE: Enhanced lexicon known values naming with proper camelCase convention
      • Enum values now use consistent namespaced naming (e.g., liveappBskyActorStatusLive)
      • Actor, feed, graph, and moderation enum values updated with improved naming
      • Updated test cases to match new enum naming convention (e.g., curatelistappBskyGraphDefsCuratelist)
    • feat: Added support for lexicon fragment-only values in code generation
    • feat: Enhanced lexicon generation with context-aware naming for better consistency
    • fix: Improved enum naming consistency across all Bluesky lexicon types
    Open source →
  48. 1.0.9 02 Sep 2025
    Release notes
    • chore: Sync Lexicon Data for Bookmark feature. (#2105, #2107)
    • feat: Add Bookmark feature support. (#2108)
    Open source →
  49. 1.0.8 22 Aug 2025
    Release notes
    • chore: Sync Lexicon Data. (#2100)
    Open source →
  50. 1.0.7 10 Aug 2025
    Release notes
    • fix: Drop universal_io for WASM compatibility.
    Open source →
  51. 1.0.6 10 Aug 2025
    Release notes
    • chore: fix WARNING: The annotation 'JsonSerializable.new' can only be used on classes..
    • chore: fix Links in README.md should be well formed Unable to parse 1 image link..
    Open source →
  52. 1.0.5 09 Aug 2025
    Release notes
    • Add service functions. Endpoints can be easily called as functions like appBskyFeedGetTime
    • Expose ServiceContext from core library.
    Open source →
  53. 1.0.4 06 Aug 2025
    Release notes
    • chore: Removed outdated processes.
    • fix: Use @JsonSerializable(includeIfNull: false) for lex gen objects.
    • Add accessors that are useful when using records.
      • supports get, list, create, put and delete operations for each record.
    Open source →
  54. 1.0.3 30 Jul 2025
    Release notes
    • chore: Update source files automatically. (##2081)
    Open source →
  55. 1.0.2 30 Jul 2025
    Release notes
    • Fix SDK constraint to '">=3.8.0 <4.0.0"'.
    Open source →
  56. 1.0.1 28 Jul 2025
    Release notes
    • Improved firehose conversion process. Use SyncSubscribeReposAdaptor to convert byte data from subscribeRepos.
    • Now the endpoint argument $unknown cannot override a known field. (#2068)
    • RepoCommitHandler is automatically generated based on Lexicon. (#2072)
    Open source →
  57. 1.0.1-legacy 28 Jul 2025 pre-release

    Nothing published for this version

  58. 1.0.0 18 Jul 2025
    Release notes
    • Bump SDK constraint to '^3.8.0'.
    • Fully replaced with objects generated by lexicons.
    Open source →
  59. 1.0.0-preview.8 19 Sep 2024 pre-release

    Nothing published for this version

  60. 1.0.0-preview.7 04 Sep 2024 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive