Releases: MasterJ93/ATProtoKit
v0.21.3
Version 0.21.3 includes the following changes:
- Updated
getSession
to check if the output matches theUserSession
object.- If it’s not a match, then the method will create a new
UserSession
object.
- If it’s not a match, then the method will create a new
- Fixed an issue where
refreshSession
may not have been able to create a newUserSession
object in a certain scenario. - Fixed an issue where
ATRecordTypeRegistry
crashes while the mainATProtoKit
class
is initializing.- This is a temporary fix until a better solution can be found.
- Fixed some decoding issues.
- Fixed an issue where Bluesky records may be added during configuration.
- This should not be happening unless the developer is explicitly and directly invoking the main
ATProtoKit
class
(and does not explicitly disable it).
- This should not be happening unless the developer is explicitly and directly invoking the main
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.21.2
Version 0.21.2 includes the following changes:
- Tweaked
getSession
andrefreshSession
inATProtocolConfiguration
. Now you can pass an access token or refresh token directly as an argument.- Furthermore, you can pass a
UserSession
object intoATProtocolConfiguration.session
if you wish to do so. - This is a temporary solution until a better way to handle sessions is made without disrupting the code base of developers already using this project.
- Furthermore, you can pass a
- Fixed how
ratelimit-reset
is handled. (Thanks, @mfreiwald!) - Fixed an issue where
getAuthorFeed
doesn’t properly handle the value of thepostFilter
argument. - Updated references to remove CentOS 7, since Swift no longer supports this Linux distro.
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.21.1
Version 0.21.1 includes the following changes:
- Tweaked
getSession
andrefreshSession
inATProtocolConfiguration
. Now you can pass an access token or refresh token directly as an argument.- Furthermore, you can pass a
UserSession
object intoATProtocolConfiguration.session
if you wish to do so. - This is a temporary solution until a better way to handle sessions is made without disrupting the code base of developers already using this project.
- Furthermore, you can pass a
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.21.0
Version 0.21.0 includes the following changes:
- Changed the way handing sessions work.
- The now old method only inserted the
UserSession
object to theATProtoKit
class
. This created issues with respect to how the session will be updated. This also made theSessionProtocol
protocol
useless, since developers that want to make their own session configuration will have a more difficult time doing so. This change will solve these issues.- This is a breaking change, so you’ll need to migrate your code to reflect on this. However, this is easy to do:
authenticate()
no longer has a return statement, so there’s no need to have a variable attached to it.- The
ATProtoKit
class
will replace thesession
argument that asks for aUserSession
object with aProtocolConfiguration
object. - Everything else should work from there.
- This is a breaking change, so you’ll need to migrate your code to reflect on this. However, this is easy to do:
- The now old method only inserted the
- You can now create and delete repost records with
ATProtoBluesky
. (Thanks, @andylin2004!) - Progress for support for custom user agents. (Thanks, @airowe!)
- Not everything has been hooked up yet, but for now, a user agent has been added to clients. In a future update, you will be able to add your own custom user agents.
- Moved all session-related lexicon methods to the main
ATProtoKit
class
.ATProtocolConfiguration
now accesses those methods via proxy methods.
- Added a Special Thanks section in CONTRIBUTIONS.
- Added Package@6.0.0.swift
- This is a configuration file for the compiler. We want to have a separate file just for compilers that are on the Swift 6.0 toolchain or higher so we can make sure the build runs successfully on each supported version.
- Progress towards renaming variables in accordance with the Swift API Design Guidelines.
- Fixed an issue where
getSession
has a decoding error.
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.20.3
Version 0.20.3 includes the following changes:
- Re-organized the DocC a bit more.
- Moved
ImageQuery
toATProtoTools
. - Fixed an issue where the headers weren’t decoding correctly.
- According to the AT Protocol specification, you should be using the “Retry-After” header when error 429 is made. However, the actual header name is "ratelimit-reset”.
- Fixed an issue where
getSession
returnsSessionResponse
instead ofUserSession
.
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.20.2
Version 0.20.2 includes the following changes:
- Fixed last remaining data race issue.
- As a result,
StrictConcurrency
has been re-enabled.
- As a result,
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.20.1
Version 0.20.1 includes the following changes:
- Disabled
StrictConcurrency
temporarily.- This will be commented out until all data race issues have been resolved.
- Fixed an issue where listing notifications would give a decoding error. (Thanks, @Dimillian!)
- Fixed an issue where two-factor authentication may not work if you passed the token.
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.20.0
Version 0.20.0 includes the following changes:
ATProtoBluesky
now includes proper implementation for link embeds.- You can use your own implementation on how you grab the URL, title, description, and thumbnail image for the link. You can also use the built-in
ATLinkBuilder
for your client to grab the links for you.Note: If a custom
ATLinkBuilder
is not included, then link previews will not work automatically. Please see the DocC for more details.
- You can use your own implementation on how you grab the URL, title, description, and thumbnail image for the link. You can also use the built-in
- ATProtoKit now has now has
StrictConcurrency
enabled.- This is to check for more data race errors. Once it goes down to 0 and there’s a more established structure, Swift 6 language mode will be turned on.
- Replaced the use of
@DateFormatting
and@DateFormattingOptional
withencodeDate
,encodeDateIfPresent
,decodeDate
, anddecodeDateIfPresent
.- This is due to the constant issues with respect to decoding
Date
andDate?
properties. With these new functions the issues that have been present should no longer exist. ATLexiconModel
will be updated to reflect this change.- The affected article will be archived and will be removed at a later date.
@DateFormatting
and@DateFormattingOptional
will be deprecated.- As a side note:
truncateEncode
andtruncateEncodeIfPresent
will now be publicly available for developers to use.
- This is due to the constant issues with respect to decoding
- Fixed additional data race errors.
- Logging-related code has been separated from
ATProtocolConfiguration
and into a separateactor
.
- Logging-related code has been separated from
- Fixed a crash related to
ATRecordTypeRegistry
. - Made sure swift-syntax works across Swift 5.10 and 6.0. (Thanks @rhysm94!)
- Tweaked
getPopularFeedGenerators
to use authentication. (Thanks, @Dimillian!) - Fixed an issue where
getPreferences()
would fail to decode the output.- This is because
app.bsky.actor.defs#preferences
is anarray
in the lexicon and not anobject
. This was an oversight.AppBskyLexicon.Actor.PreferencesDefinition
has now been converted from astruct
to atypealias
.- Thank you @Dimillian for fixing the bug! While their PR wasn’t merged, it did point to the right direction.
- This is because
- Fixed an issue where the JSON object related to starter packs may incorrectly be decoded as a labeller.
- Made sure
getPopularFeedGenerators()
uses authentication. (Thanks @Dimillian!) - Fixed issue where embed records were not decoding correctly. (Thanks @andylin2004!)
- This format will be a new change for all records and record views in order to ensure that things are decoding and encoding correctly.
- Made some minor fixes to documentation and names.
- Documentation to most of
ATLexiconModel
’s methods have been added.
- Documentation to most of
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.19.2
Version 0.19.2 includes the following changes:
- Fixed an issue where handles would not resolve properly if the post’s text is in a facet. (Thanks @aaronvegh!)
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.
v0.19.1
Version 0.19.1 includes the following changes:
- Fixed some errors related to data race errors.
- More objects have been marked as
Sendable
.
- More objects have been marked as
- Fixed an issue where creating hashtag facets will result in having double hashtag symbols (
##[hashtag]
] when searching for posts under the hashtag. (Thanks @aaronvegh!) - Fixed the DocC with respect to the error structs and
CodableValue
.
Once again, thank you for your support. Please give feedback, bug reports, and contributions if you have time. You can also speak to me on Bluesky (@cjrriley.com) for any questions.