A fork of the Mastodon Android client with Bluesky/ATProto support.
5672 1 0

Clone this repository

https://tangled.org/leap.nekoweb.org/MastodonAT
git@knot.synth.download:leap.nekoweb.org/MastodonAT

For self-hosted knots, clone URLs may differ based on your setup.

README.md

MastodonAT (working title)#

A fork of the Mastodon Android client with Bluesky/ATProto support. Currently work-in-progress. Screenshot

What?#

Yes, really. This is a fork of the Mastodon Android client with added support for Bluesky and AT Protocol.

Why??#

yeah i just like the mastodon android client more since the react native-based bluesky client is near unusable on my phone but i don't really like the fediverse much sooooooooooo

How???#

This uses the Ozone Kotlin library (not to be confused with the Bluesky moderation tool of the same name) with a small Kotlin-to-Java wrapper to interact with the PDS's XRPC API. ATProto-specific code using the wrapper are written on calls that normally route to the Mastodon API. Unimplemented features will still try to use the Mastodon API on the PDS however though it'll fail every time in most cases.

Can I still use my Mastodon account on this?#

Yes. I intended this to still support regular ActivityPub/Mastodon accounts. Bluesky/ATProto is just an added extra.

Can I use this as a daily-driver?#

While technically has most of the features of the official Bluesky client, you probably shouldn't using this as your main client yet. It's missing feeds so you're basically stuck with the chronological Following feed, and refresh token aren't implemented yet meaning you have to constantly log out and re-log in every time you want to use it. And since it's still work-in-progress, it's extremely unstable and may unexpectedly crash at any point.

Implemented features#

  • Logging in (password-based right now)
  • Viewing the timeline
  • Viewing posts
  • Sending posts
  • Like, repost, reply, quote, and pin
  • Search
  • Mute, block, and report
  • Bookmarks
  • Lists
  • Filters
  • Trending posts
  • Notifications
  • Live feed (using Jetstream)
  • Push notifications (ditto)
  • Bluesky-specific features
    • Feeds
    • Chats
    • Labels
    • Tenor GIFs
    • Starter packs
    • Moderation stuff
    • Post interaction settings (equivalent to post visibility settings in Mastodon)
    • Multi-language posts (Mastodon only allows one languages on a post)
    • Detaching quotes
  • Mastodon-specific features (implemented through custom lexicons)
    • Polls (probably using Red Dwarf's implementation)
    • Custom emojis (using Bluemoji)
    • Content warnings
    • Video attachments coexisting with images (and also more than one videos)
    • Client indicators (maybe)
  • Miscellaneous stuff
    • Refresh tokens (it's already implemented but i couldn't figure out how to make it work)
    • Custom appview servers
    • (or alternatively) Fetch from Constellation and the PDS directly instead of relaying on the appview (ala ActivityPub, probably could reference Red Dwarf's implementation)
    • Moshidon-specific features (Moshidon is currently based on the pre-UI change Mastodon though it's being rewritten, basing it off on post-UI change Mastodon)
    • Wafrn-specific features (Markdown posts, bites, etc.)
    • Support for Bridgy Fed-specific metadata
    • Proper support for other ActivityPub-based servers (Misskey, Pleroma, etc) and their specific features

Original readme:

Mastodon for Android#

Crowdin

This is the repository for the official Android app for Mastodon.

Get it on F-Droid Get it on Google Play

Or get the APK from the The Releases Section.

Contributing#

Our goal is delivering a polished, professionally designed and user-friendly app. We proceed according to wireframes provided by a professional UX designer that works with Mastodon gGmbH. This means that any outside contributions that change the app visually must first be coordinated with the UX designer. This can take time. Furthermore, we work off of an internal roadmap and aim for feature-parity and consistency with our iOS app. The iOS app is designated as the "primary" between the two, therefore, if you want to request features, please do so in the Mastodon for iOS repository, as you are requesting a feature to be both in iOS and Android (exceptions being system integrations specific to Android). On the other hand, any contributions that improve existing functionality, performance, or accessibility should not have any roadblocks to being merged.

If you would like to help translate the app into your language, please go to Crowdin. If your language is not listed in the Crowdin project, please create an issue and we will add it. Please do not create pull requests that modify strings.xml files for languages other than English.

Building#

As this app is using Java 17 features, you need JDK 17 or newer to build it. Other than that, everything is pretty standard. You can either import the project into Android Studio and build it from there, or run the following command in the project directory:

./gradlew assembleRelease

License#

This project is released under the GPL-3 License.

The Mastodon name and logo are trademarks of Mastodon gGmbH. If you intend to redistribute a modified version of this app, use a unique name and icon for your app that does not mistakenly imply any official connection with or endorsement by Mastodon gGmbH.