Releases: andregasser/bigbone
v2.0.0-20240518.212224
📢 Overview
It's been a long time! A new snapshot is here that brings some cool enhancements to the Admin API. With this snapshot we achieve feature completeness for the implementation of Mastodon Server API endpoints (as of December 2023).
⭐ New Features
- Add Admin::Accounts methods by @PattaFeuFeu in #404
- Add Admin::DomainAllow methods by @G10xy in #413
- Add Admin::Trends methods by @PattaFeuFeu in #399
- Fully implement partially implemented AccountMethods by @PattaFeuFeu in #411
- Add ScheduledStatuses methods by @PattaFeuFeu in #409
- Add Admin::Reports methods by @PattaFeuFeu in #414
- Fully support Media API methods by @PattaFeuFeu in #408
- Implement missing Account methods by @PattaFeuFeu in #415
- Clean up endpoint definitions in methods classes by @PattaFeuFeu in #410
- Make error details returned by server available in BigBoneRequestException by @bocops in #443
📔 Documentation
- Add text to title page on https://bigbone.social by @andregasser
- Add a "Getting Started" guide to https://bigbone.social by @andregasser
🔨 Dependency Upgrades
- Bump com.autonomousapps.dependency-analysis from 1.28.0 to 1.29.0 by @dependabot in #420
- Bump com.github.ben-manes.versions from 0.50.0 to 0.51.0 by @dependabot in #419
- Bump org.gradle.toolchains.foojay-resolver-convention from 0.7.0 to 0.8.0 by @dependabot in #418
- Bump gradle/gradle-build-action from 2 to 3 by @dependabot in #421
- Bump org.jlleitschuh.gradle.ktlint from 11.6.1 to 12.1.0 by @dependabot in #417
- Upgrade Gradle to 8.6 by @andregasser in #423
- Updated gradle wrapper to 8.7 by @nightm4re94 in #433
- Bump io.gitlab.arturbosch.detekt from 1.23.4 to 1.23.6 by @dependabot in #431
- Bump com.gradle.enterprise from 3.16.1 to 3.17.1 by @dependabot in #435
- Bump org.junit.platform:junit-platform-suite-engine from 1.10.1 to 1.10.2 by @dependabot in #426
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #422
- Bump softprops/action-gh-release from 1 to 2 by @dependabot in #430
- Bump kotlin from 1.9.22 to 1.9.23 by @dependabot in #436
- Bump org.jetbrains.kotlinx:kotlinx-serialization-json from 1.6.2 to 1.6.3 by @dependabot in #437
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core from 1.7.3 to 1.8.0 by @dependabot in #439
- Bump com.autonomousapps.dependency-analysis from 1.29.0 to 1.31.0 by @dependabot in #438
- Bump com.gradle.develocity from 3.17.1 to 3.17.3 by @dependabot in #446
- Bump org.junit.jupiter:junit-jupiter from 5.10.1 to 5.10.2 by @dependabot in #440
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core from 1.8.0 to 1.8.1 by @dependabot in #444
- Bump org.jlleitschuh.gradle.ktlint from 12.1.0 to 12.1.1 by @dependabot in #445
❤️ Contributors
Thank you to all the contributors who worked on this release:
Full Changelog: v2.0.0-20231228.215524...v2.0.0-20240518.212224
v2.0.0-20231228.215524
📢 Overview
This snapshot brings many new features and functionalities, but also various breaking changes. One of the highlights of this release is certainly the refactoring of the streaming API which has now been implemented based on the WebSocket protocol. Please read the “Breaking Changes” section carefully to understand where you should expect changes to your code. Happy holidays! 🎄
⭐ New Features
- Add followed tags method by @PattaFeuFeu in #355
- Add admin/dimensions API methods by @PattaFeuFeu in #352
- Add emails methods by @PattaFeuFeu in #354
- Implement Trends API by @PattaFeuFeu in #360
- Timelines: Add missing query parameters for full support by @PattaFeuFeu in #368
- lists: Add “exclusive” parameter for full support by @PattaFeuFeu in #379
- Add Admin::DomainBlocks entity and methods by @PattaFeuFeu in #397
- Add Admin::EmailDomainBlock methods by @PattaFeuFeu in #400
- Add Admin::CanonicalEmailBlocks methods by @PattaFeuFeu in #403
- Rewrite streaming API to use websocket by @PattaFeuFeu in #383
- Add ip block admin-related methods by @G10xy in #392
- Add release script that reacts on tags like v2.0.0 by @PattaFeuFeu in #336
- Replace missed Single#create with Single#fromCallable by @PattaFeuFeu in #373
- oAuth: Add missing function parameters, add revoke token method by @PattaFeuFeu in #370
- followRequests: Change return to Relationship by @PattaFeuFeu in #371
- RxAppMethods: Add missing
verifyCredentials
by @PattaFeuFeu in #374 - Mock server testing instead of hitting actual website by @PattaFeuFeu in #390
- Update scopes used in OAuth by @bocops in #382
🐞 Bug Fixes
- Propagate exceptions occurring during client instantiation by @PattaFeuFeu in #353
- Remove defaults for limit parameter + do not verify values by @PattaFeuFeu in #367
📔 Documentation
- Update pull request template by @andregasser in #356
- Update markdown documentation in the root folder of the project by @andregasser in #359
- Add Slack link to README.md by @andregasser in #362
- Update api coverage documentation to match current library state by @PattaFeuFeu in #361
- Create SECURITY.md by @andregasser in #363
- Add missing kDocs to all RxJava implementations by @PattaFeuFeu in #372
- Hide PR template suggestions even if they’re kept by @PattaFeuFeu in #391
- PR template: Add check boxes to Optional Checks section by @PattaFeuFeu in #401
- Fix broken Admin::IpBlocks kDoc links by @PattaFeuFeu in #402
🔨 Dependency Upgrades
- Bump kotlin from 1.9.20 to 1.9.21 by @dependabot in #357
- Bump io.gitlab.arturbosch.detekt from 1.23.3 to 1.23.4 by @dependabot in #358
- Upgrade Gradle from 8.4 to 8.5 by @andregasser in #369
- Bump kotlinx-serialization-json from 1.6.1 to 1.6.2 by @dependabot in #377
- Bump com.autonomousapps.dependency-analysis from 1.26.0 to 1.27.0 by @dependabot in #375
- Bump com.gradle.enterprise from 3.15.1 to 3.16 by @dependabot in #388
- Bump com.autonomousapps.dependency-analysis from 1.27.0 to 1.28.0 by @dependabot in #395
- Bump com.gradle.enterprise from 3.16 to 3.16.1 by @dependabot in #394
- Bump github/codeql-action from 2 to 3 by @dependabot in #393
- Bump kotlin from 1.9.21 to 1.9.22 by @dependabot in #398
⚡ Breaking Changes
Streaming API WebSocket Refactoring, introduced in #383
With the replacement came loads of breaking changes. I’ve replaced the previous Handler and Shutdownable with a leaner callback and an extension of Closeable, so now the signatures, while similar, are actually quite different for callers.
It’s no longer necessary (or even possible) to call useStreamingApi when building the MastodonClient.
Please check our updated Usages section about the streaming API or one of the following samples to see how to utilise the streaming API:
Mastodon Client Builder, introduced in #353
MastodonClient.Builder#build
may now throw a BigBoneClientInstantiationException.
ListMethods#createList
Changes, introduced in #379
ListMethods#createList
parameter repliesPolicy
now is null
by default and is defined as nullable. Likely won’t break anything, but just in case…
OAuthMethods Parameter Changes, introduced in #370
OAuthMethods#getOAuthUrl
: scope
moved from second to third parameter, switching places with redirectUri
, and also became optional (=> nullable).
Rx Return Type Changes, introduced in #371
RxFollowRequestMethods#authorizeFollowRequest
and RxFollowRequestMethods#rejectFollowRequest
now return Single<Relationship>
instead of Completable
.
Update Scopes Used in OAuth, introduced in #382
Scope
constructor can no longer be called without explicitly enumerating scopes that should be requested.Scope.NAME
enum has been replaced with hierarchically arranged scope definitions in the class. Example:Scope.Name.READ
becomesScope.READ.ALL
.- Existing
FOLLOW
scope has been removed. Use individual child scopes ofREAD
andWRITE
instead. - Existing
ALL
scope has been removed. Use individual scopes necessary for your use case instead.
Exception Handling Changes, introduced in #367
The following no longer throw or declare an IllegalArgumentException
, so any try/catch
can be removed:
DomainBlockMethods#getDomainBlocks
EndorsementMethods#getEndorsements
FollowedTagMethods#viewAllFollowedTags
SuggestionMethods#getSuggestions
❤️ Contributors
Thank you to all the contributors who worked on this release:
Full Changelog: v2.0.0-20231125.173242...v2.0.0-20231228.215524
v2.0.0-20231125.173242
📢 Overview
In this snapshot we have started to add methods from the Mastodon Admin API and improved the methods for retrieving notifications. Besides this, the search methods have been improved to allow searching for individual types.
⭐ New Features
- Add admin/retention methods by @PattaFeuFeu in #334
- Add admin/measures methods by @PattaFeuFeu in #333
- Add missing types and parameters to Notifications API by @PattaFeuFeu in #332
- Allow searches for individual types by @bocops in #345
- Clarify parameter interaction in searchContent method by @bocops in #346
📔 Documentation
- Add section for breaking changes to pull request template by @andregasser in #344
- Move documentation into docs folder by @andregasser in #347
🔨 Dependency Upgrades
- Bump org.junit.platform:junit-platform-launcher from 1.10.0 to 1.10.1 by @dependabot in #340
- Bump io.gitlab.arturbosch.detekt from 1.23.1 to 1.23.3 by @dependabot in #339
- Bump org.junit.platform:junit-platform-suite-engine from 1.10.0 to 1.10.1 by @dependabot in #337
- Bump org.junit.jupiter:junit-jupiter from 5.10.0 to 5.10.1 by @dependabot in #338
- Bump org.jetbrains.kotlinx:kotlinx-serialization-json from 1.6.0 to 1.6.1 by @dependabot in #350
- Bump com.github.ben-manes.versions from 0.49.0 to 0.50.0 by @dependabot in #348
- Bump com.autonomousapps.dependency-analysis from 1.25.0 to 1.26.0 by @dependabot in #349
⚡ Breaking Changes
Added missing parameters to getAllNotifications()
method, introduced in #332
Method signature of getAllNotifications
has changed from getAllNotifications(excludeTypes: List<Notification.NotificationType>? = null, range: Range = Range())
to getAllNotifications(includeTypes: List<Notification.NotificationType>? = null, excludeTypes: List<Notification.NotificationType>? = null, accountId: String? = null, range: Range = Range())
.
❤️ Contributors
Thank you to all the contributors who worked on this release:
Full Changelog: v2.0.0-20231105.202213...v2.0.0-20231125.173242
v2.0.0-20231105.202213
📢 Overview
This snapshot contains lots of contributions that came in thanks to Hacktoberfest 2023. Many aspects of the library have been fundamentally improved. As a result, it was inevitable to introduce certain incompatible changes to the previous snapshot. You will almost certainly have to adapt and recompile your code. In the "Breaking Changes" section, we do our best to document these changes in the hope that the transition to this snapshot will be as painless as possible for you.
⭐ New Features
- Update SearchContent with all possible request params by @G10xy in #267
- Update API calling favourites related dto by @G10xy in #268
- Add missing report field to Notification entity by @PattaFeuFeu in #271
- Update ReportMethods by adding all request params by @G10xy in #277
- update Relationship model by @G10xy in #278
- Implement featured_tags API by @PattaFeuFeu in #283
- Deserialize JSON using KotlinX Serialization instead of Gson by @PattaFeuFeu in #270
- Add FeaturedTags to MastodonClient by @PattaFeuFeu in #289
- Return instance version from server info if available by @PattaFeuFeu in #290
- Add ktlint plugin code styling and formatting by @G10xy in #281
- Implement endorsements API by @PattaFeuFeu in #286
- Add domain_blocks API by @PattaFeuFeu in #287
- Add custom_emojis API methods by @PattaFeuFeu in #301
- Implement dismiss single notification request by @PattaFeuFeu in #302
- Feat Suggestion methods api by @G10xy in #291
- implement preferences API methods by @G10xy in #284
- Implement instance API methods by @PattaFeuFeu in #303
- Parse ISO 8601 date(time) strings as Instant by @PattaFeuFeu in #312
- Replace Single/Completable#create with fromCallable/fromAction by @PattaFeuFeu in #288
- Add Announcement API by @AnuraagReddy123 in #309
- Update enum classes with kotlinx annotations by @G10xy in #310
- #299 Implement oEmbed API methods by @PattaFeuFeu in #317
- Feat new push notifications methods by @G10xy in #316
🐞 Bug Fixes
- PreviewCard property fixes by @andregasser in #319
📔 Documentation
- Updated contributing file with project structure by @Yordaniss in #306
🔨 Dependency Upgrades
- Add dependabot for GitHub Actions workflow dependencies by @PattaFeuFeu in #275
- Bump actions/checkout from 3 to 4 by @dependabot in #276
- Bump com.autonomousapps.dependency-analysis from 1.21.0 to 1.22.0 by @dependabot in #258
- Bump com.autonomousapps.dependency-analysis from 1.22.0 to 1.24.0 by @dependabot in #264
- Bump com.autonomousapps.dependency-analysis from 1.24.0 to 1.25.0 by @dependabot in #272
- Bump com.github.ben-manes.versions from 0.47.0 to 0.48.0 by @dependabot in #257
- Bump com.github.ben-manes.versions from 0.48.0 to 0.49.0 by @dependabot in #273
- Bump io.reactivex.rxjava3:rxjava from 3.1.7 to 3.1.8 by @dependabot in #265
- Bump kotlin from 1.9.0 to 1.9.10 by @dependabot in #255
- Bump kotlin from 1.9.10 to 1.9.20 by @dependabot in #315
- Bump okhttp from 4.11.0 to 4.12.0 by @dependabot in #307
- Bump org.jlleitschuh.gradle.ktlint from 11.6.0 to 11.6.1 by @dependabot in #308
- Remove explicitly set kotlin-stdlib from Gradle scripts by @PattaFeuFeu in #285
- Upgrate to Gradle 8.4 plus buildSrc improvements by @andregasser in #274
⚡ Breaking Changes
RxJava, introduced in #288
We now no longer check if a downstream consumer has been disposed when emitting errors. Please check the Error Handling section of our RxJava documentation
Replace Gson with kotlinx.serialization, introduced in #270
Gson has been completely replaced with kotlinx.serialization.
Previously, we defined Gson
as an api
dependency so that it would be bundled with our library. This is no longer the case. We are also not exposing kotlinx.serialization in the same way.
MastodonClient
previously exposed the Gson serializer via getSerializer
. This method has been removed without replacement.
Dates returned as PrecisionDateTime
which wraps java.time.Instant
, introduced in #312
Previously, dates (e.g. created_at
, last_status_at
, …) were returned as the String
we received from the Mastodon API. This is usually a full ISO8601 in UTC but sometimes is just a local date.
We now return PrecisionDateTime
which can have different values depending on what we get from the API:
PrecisionDateTime.ValidPrecisionDateTime.ExactTime
- We got an exact string that pinpoints an instant in time up to a second or higher like
2023-10-28T13:37:42Z
that can be parsed as anInstant
- We got an exact string that pinpoints an instant in time up to a second or higher like
PrecisionDateTime.ValidPrecisionDateTime.StartOfDay
- We got a string that describes a date without a time like
2023-10-28
. We default to the start of the day when parsing anInstant
- We got a string that describes a date without a time like
PrecisionDateTime.InvalidPrecisionDateTime.Invalid
- The string we received is invalid and could not be parsed
PrecisionDateTime.InvalidPrecisionDateTime.Unavailable
- The parameter was unavailable, thus no parsing happened. This is the default value.
We have added helper methods for you to use:
PrecisionDateTime#mostPreciseInstantOrNull
PrecisionDateTime#mostPreciseOrFallback
PrecisionDateTime#isValid
Please check the documentation for further info.
Instance API methods, introduced in #303
The old getInstance
pointing to the v1
endpoint of the Instance APIs has been renamed to getInstanceV1
.
getInstance
now points to the v2
endpoint of the Instance APIs.
As the V1 variant has been deprecated since Mastodon 4.0.0, it is unlikely that you will need the V1 variant anymore and it is due for removal as soon as older Mastodon API versions have been completely deprecated by Mastodon.
Notification methods renaming, introduced in #302
getNotifications
has been renamed togetAllNotifications
clearNotifications
has been renamed todismissAllNotifications
PreviewCard property renaming / removal, introduced in #319
methodUrl
has been renamed toembedUrl
to match the official documentationhistory
has been removed as it is not needed in this context and would always be an empty list
Enum improvements, introduced in #310
- All enum values are now uppercase to be more closely aligned with Kotlin coding conventions (e.g.
Action.Hide
is nowAction.HIDE
) Filter.Context
has been renamed toFilter.FilterContext
Filter.Action
has been renamed toFilter.FilterAction
Notification.Type
has been renamed toNotification.NotificationType
ReportType
has been renamed toReportCategory
Filter.context
now returns aList<FilterContext>
instead of aList<String>
Filter.filterAction
now returns aFilterAction
object instead of aString
MastodonList.repliesPolicy
now returns aRepliesPolicy
object instead of aString
MediaAttachment.type
now returns aMediaType
object instead of aString
Notification.type
now returns aNotificationType
object instead of aString
PreviewCard.type
now returns aCardType
object instead of aString
FilterMethods.createFilter()
:context
parameter type has been changed fromList<Filter.Context>
toList<Filter.FilterContext>
FilterMethods.createFilter()
:filterAction
parameter type has been changed fromFilter.Action
toFilter.FilterAction
FilterMethods.updateFilter()
:context
parameter type has been changed fromList<Filter.Context>
toList<Filter.FilterContext>
FilterMethods.updateFilter()
:filterAction
parameter type has been changed fromFilter.Action
toFilter.FilterAction
NotificationMethods.getAllNotifications()
:excludeTypes
parameter type has been changed fromList<Notification.Type>
toList<Notification.NotificationType>
ReportMethods.fileReport()
:category
parameter type has been changed fromReportType
to `Rep...
v2.0.0-20230902.213631
What's Changed
- Review existing API methods for "Java friendliness" by @andregasser in #253
- Fixed a kotlin-stdlib version issue (wrong stdlib versions were used as dependencies) by @andregasser in 7cd449f
Full Changelog: v2.0.0-20230818.202222...v2.0.0-20230902.213631
v2.0.0-20230818.202222
What's Changed
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core from 1.7.2 to 1.7.3 by @dependabot in #247
- Bump junit-jupiter from 5.9.3 to 5.10.0 by @dependabot in #244
- Bump detekt from 1.23.0 to 1.23.1 by @dependabot in #246
- Update detekt rules file by @andregasser in #248
- Bump mockk from 1.13.5 to 1.13.7 by @dependabot in #249
- Add markers api by @andregasser in #250
- Added bookmarks API by @andregasser in #252
- Upgrade build to Gradle 8.3 by @andregasser in #251
Full Changelog: v2.0.0-20230731.134507...v2.0.0-20230818.202222
v2.0.0-20230731.134507
What's Changed
- Update documentation (contribution guidelines, support, readme) by @andregasser in #242
- Bump org.junit.platform:junit-platform-suite-engine from 1.9.3 to 1.10.0 by @dependabot in #243
- Make idempotency key value optional when posting by @bocops in #245
Full Changelog: v2.0.0-20230719.193107...v2.0.0-20230731.134507
v2.0.0-20230719.193107
What's Changed
- fix some endpoint paths, avoiding empty path segments by @bocops in #227
- Bump com.github.ben-manes.versions from 0.46.0 to 0.47.0 by @dependabot in #228
- Bump kotlin from 1.8.21 to 1.8.22 by @dependabot in #229
- Use NodeInfo for instance version information by @bocops in #225
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core from 1.7.1 to 1.7.2 by @dependabot in #230
- Upgrade to Gradle 8.2 by @andregasser in #231
- implements Directory API by @bocops in #234
- Bump kotlin from 1.8.22 to 1.9.0 by @dependabot in #232
- add Idempotency-Key header to post status requests by @bocops in #233
- Upgrade to Gradle 8.2.1 by @andregasser in #236
- Add conversations API by @andregasser in #235
Full Changelog: v2.0.0-20230606.210428...v2.0.0-20230719.193107
v2.0.0-20230606.210428
What's Changed
- sample to showcase potential filtering in home timeline by @bocops in #221
- Bump detekt from 1.22.0 to 1.23.0 by @dependabot in #219
- Added missing fields to Instance entity. by @andregasser in #217
Full Changelog: v2.0.0-20230530.130705...v2.0.0-20230606.210428
v2.0.0-20230530.130705
What's Changed
- Add sample to get access token by oauth by @lamrongol in #195
- Add a code of conduct by @andregasser in #201
- Bump junit-jupiter from 5.9.2 to 5.9.3 by @dependabot in #203
- Bump kotlin from 1.8.20 to 1.8.21 by @dependabot in #205
- Bump org.amshove.kluent:kluent from 1.72 to 1.73 by @dependabot in #204
- Bump org.junit.platform:junit-platform-suite-engine from 1.9.2 to 1.9.3 by @dependabot in #206
- Add troubleshooting section to README.md by @andregasser in #200
- Support filters by @bocops in #211
- Bump org.jetbrains.kotlinx:kotlinx-coroutines-core from 1.6.4 to 1.7.1 by @dependabot in #210
- Remove vacation announcement from README.md by @andregasser in #212
- Add error_description to Error entity by @andregasser in #213
- Reconfigure checkstyle spacing rules by @andregasser in #216
- Bump okhttp from 4.10.0 to 4.11.0 by @dependabot in #193
- Add Java and Kotlin samples for Filter API: by @bocops in #215
- Disabled checking of *.java files for PMD by @andregasser in #218
- Make Status.isPinned a non-null value by @bocops in #220
Full Changelog: v2.0.0-20230428.112301...v2.0.0-20230530.130705