The Mastodon-compatible API is at a stable stopping point, so I have removed the gating with_mastodon_api build flag and made it generally available.
I use the API daily via a couple different client apps. What works, works. There are known limitations, most of them rooted in architectural differences between Mastodon and Ktistec. For example, Mastodon and Ktistec manage media differently. In Ktistec, there is no simple way to upload and manage media apart from creating a post. That difference will take some work to bridge.
Here's the full changelog for this release:
Added
- Mastodon-compatible API endpoints:
/api/v1/accounts/api/v1/accounts/lookup/api/v1/accounts/:id/api/v1/accounts/:id/statuses/api/v1/accounts/:id/following/api/v1/accounts/:id/followers/api/v1/accounts/relationships/api/v1/follow_requests/api/v1/polls/:id/votes/api/v1/preferences
Fixed
- Correctly resolve
keyId from Signature header for inbox verification.
Changed
- Support both offset and cursor-based pagination in JSON collections.
- Switch following/followers pages to cursor-based pagination.
Credit goes to this thread for inspiring me to review my signature verification. There is now one more correct implementation. 😉
The next release will focus on cleaning up the internals. Ktistec is just under 100,000 lines of code, 307 source files, and 195 spec files (7030 tests). With one maintainer, the only way to stay sane is by ruthlessly refactoring and paying down the debt!
#ktistec #crystallang #activitypub #fediverse