GithubHelp home page GithubHelp logo

mastodon / mastodon-android Goto Github PK

View Code? Open in Web Editor NEW
1.6K 28.0 248.0 33.22 MB

Official Android app for Mastodon

Home Page: https://app.joinmastodon.org/android

License: GNU General Public License v3.0

Java 99.72% HTML 0.04% AIDL 0.19% Ruby 0.05%
android mastodon

mastodon-android's Introduction

Mastodon

GitHub release Ruby Testing Crowdin

Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, and video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub!)

Click below to learn more in a video:

Screenshot

Navigation

Features

No vendor lock-in: Fully interoperable with any conforming platform

It doesn't have to be Mastodon; whatever implements ActivityPub is part of the social network! Learn more

Real-time, chronological timeline updates

Updates of people you're following appear in real-time in the UI via WebSockets. There's a firehose view as well!

Media attachments like images and short videos

Upload and view images and WebM/MP4 videos attached to the updates. Videos with no audio track are treated like GIFs; normal videos loop continuously!

Safety and moderation tools

Mastodon includes private posts, locked accounts, phrase filtering, muting, blocking, and all sorts of other features, along with a reporting and moderation system. Learn more

OAuth2 and a straightforward REST API

Mastodon acts as an OAuth2 provider, so 3rd party apps can use the REST and Streaming APIs. This results in a rich app ecosystem with a lot of choices!

Deployment

Tech stack

  • Ruby on Rails powers the REST API and other web pages
  • React.js and Redux are used for the dynamic parts of the interface
  • Node.js powers the streaming API

Requirements

  • PostgreSQL 12+
  • Redis 4+
  • Ruby 3.1+
  • Node.js 16+

The repository includes deployment configurations for Docker and docker-compose as well as specific platforms like Heroku, Scalingo, and Nanobox. For Helm charts, reference the mastodon/chart repository. The standalone installation guide is available in the documentation.

Development

Vagrant

A Vagrant configuration is included for development purposes. To use it, complete the following steps:

  • Install Vagrant and Virtualbox
  • Install the vagrant-hostsupdater plugin: vagrant plugin install vagrant-hostsupdater
  • Run vagrant up
  • Run vagrant ssh -c "cd /vagrant && bin/dev"
  • Open http://mastodon.local in your browser

MacOS

To set up MacOS for native development, complete the following steps:

  • Use a Ruby version manager to install the specified version from .ruby-version
  • Run brew install postgresql@14 redis imagemagick libidn to install required dependencies
  • Navigate to Mastodon's root directory and run brew install nvm then nvm use to use the version from .nvmrc
  • Run corepack enable && corepack prepare
  • Run bundle exec rails db:setup (optionally prepend RAILS_ENV=development to target the dev environment)
  • Finally, run bin/dev which will launch the local services via overmind (if installed) or foreman

Docker

For development with Docker, complete the following steps:

  • Install Docker Desktop
  • Run docker compose -f .devcontainer/docker-compose.yml up -d
  • Run docker compose -f .devcontainer/docker-compose.yml exec app .devcontainer/post-create.sh
  • Finally, run docker compose -f .devcontainer/docker-compose.yml exec app bin/dev

If you are using an IDE with support for the Development Container specification, it will run the above docker compose commands automatically. For Visual Studio Code this requires the Dev Container extension.

GitHub Codespaces

To get you coding in just a few minutes, GitHub Codespaces provides a web-based version of Visual Studio Code and a cloud-hosted development environment fully configured with the software needed for this project..

  • Click this button to create a new codespace:
    Open in GitHub Codespaces
  • Wait for the environment to build. This will take a few minutes.
  • When the editor is ready, run bin/dev in the terminal.
  • After a few seconds, a popup will appear with a button labeled Open in Browser. This will open Mastodon.
  • On the Ports tab, right click on the “stream” row and select Port visibilityPublic.

Contributing

Mastodon is free, open-source software licensed under AGPLv3.

You can open issues for bugs you've found or features you think are missing. You can also submit pull requests to this repository or submit translations using Crowdin. To get started, take a look at CONTRIBUTING.md. If your contributions are accepted into Mastodon, you can request to be paid through our OpenCollective.

IRC channel: #mastodon on irc.libera.chat

License

Copyright (C) 2016-2024 Eugen Rochko & other Mastodon contributors (see AUTHORS.md)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

mastodon-android's People

Contributors

alex-vit avatar arthur-gyt avatar cypressious avatar davidmhewitt avatar emirlogas avatar endeavour233 avatar finefindus avatar gargron avatar grishka avatar jblz avatar jixiaoyong avatar julroy67 avatar koyuawsmbrtn avatar kyori19 avatar lucasggamerm avatar mishnz avatar nilathedragon avatar poussinou avatar renchap avatar sk22 avatar sveinki avatar tinsuke avatar torgeros avatar tylersaunders avatar untitaker avatar xabellee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mastodon-android's Issues

Unclear build instructions

While I was trying to build the app myself, I learned that:

  1. Google no longer provides Build Tools 33.0.0-rc1, but there is 33.0.0-rc2 as of today
  2. Not covered https://github.com/grishka/appkit, which is required by the application. I don't understand how to assemble this one

That's all I've noticed so far.

Open toot URL as a toot

When you click in a toot URL (maybe posted in another toot) it opens an in-app browser or the default browser, depending on configuration.

I think would be interesting to have a config to open that toot in the app, in the detailed view of a toot.
Other apps (like Tusky) do so👌🏻

Feature: Multiple profiles

Please add the option to use multiple accounts within the app – just like Tusky (or any e-mail client).

Images in notifications overflow

Screenshot of image in notifications exceeding the quotation block boundaries

It seems that the images in notifications aren't confined to the boundaries of ‘quotation’ box, they are padded correctly (?) but can overflow (see at the bottom of screenshot).

Can't make an account on todon.eu

When you fill in everything and press Next, nothing happens. When you press a few times Next, you get the message 'Too many request'. Todon.eu requires approval, so maybe it has something to do with that?

Screenshot_20220414-193302_Mastodon

Search screen UX

`when you open the search screen you are greeted with a page that says "404x with a retry button before you have ever typed anything. This should either be removed or made more user friendly because regular users wont know what a 404 error is. Maybe something like " no search results" or "search something above" would be better. Also when offline completely you are greeted with the message "Unable to resolve host "instance.domain": No address associated with hostname"". This is not user friendly. A better way to present this would be something like "Can't connect to the internet or your instance at the moment"

Feature request: Fediverse service label

For example, Fedilab shows which service the profile is for, i.e. whether it is a Mastodon, Pixelfed, PeerTube, etc. account.

Something similar for the official Mastodon app would be desirable, as it shows newcomers that theFediverse is more than just Mastodon.

Keep device awake during video playback

When watching a video, I have to touch the screen every few seconds to keep it turned on. The app should keep the device awake during playback.

Fairphone 4
Android 11
Mastodon for Android 1.0

Optimizing for Waterfall Displays?

I just opened the app for the first time(in fullscreen) on my Moto Edge Plus and noticed it's not optimized for Waterfall Displays. I can use it normally after disabling the edge screen but it would of course be better if optimized.
See the attached screenshots
Screenshot_20220413-194748
Screenshot_20220413-194733
Screenshot_20220413-194727
Screenshot_20220413-194730
Screenshot_20220413-194704
Screenshot_20220413-194424-599
Screenshot_20220413-194419

FR: Dedicated log-inbscreen ('Get started' & 'Log in' do the same thing)

Hello,

First off: thanks for the work on this dedicated Mastodon app for Android. Great enrichment to the Fediverse market :)

While exploring the app, I noticed that the buttons 'Get started' and 'Log in' basically do the same thing; they open the same screen.

The said screen is great for users that don't have an account yet and/or are unfamiliar with the concept of federation/multiple servers. As I already have a Mastodon account, when tapping on 'Log in' I would expect a simple screen that allows me to enter the URL, username and password directly. The text 'or enter URL' is - I guess, haven't tried at this point - a subtle hint that I can provide my server's URL and after can provide my credentials. That hint is a bit too subtle and the flow doesn't feel efficiënt at the moment.

Therefore I would suggest to have a dedicated screen to log in. I guess the smart search/URL box can stay, but the categories aren't needed, introduction text would be slightly different, and I would hide the full list and only show search results (to not display any instances that the user is not looking for).

Thanks for taking this into consideration and good luck with the further development!

Bug: login screen opens wrong server for authentication

Hello,

Searching for the URL mastodon.social one instance shows up in the search results. When clicking 'Next' I would expect the app to open the authentication page of that specific server/the only search result.

Instead, another server's authentication page opens.
Imagepipe_19.jpg Imagepipe_20.jpg

Missing bookmarks

Cannot bookmark posts and also unable to see bookmarks. Please add this feature to Mastodon android.
Thanks.

Private profiles aren't displayed as such

When viewing a Mastodon profile that has been set to “private” by the user, the Mastodon app doesn't indicate this. When trying to follow such a profile, a follow request is sent in the background, but visually, nothing happens in the UI.

The Mastodon app should display a lock icon next to the profile name and say “follow request sent” after tapping the Follow button.

Talkback and screen reader related labels

  • Android 11
  • Mastodon v1.0

The app so far works well however the following items need to be labeled correctly for those of us using screen readers

In settings screen

  • the back arrow reads as "unlabeled" instead of "back"
  • under the visual appearance headings there are radio buttons for automatic, light, and dark. But talkback does not say which is selected. What it should say for example is automatic selected, light, dark if auto is selected or automatic, light, dark selected if dark mode is selected. Or automatic, light selected, dark if light mode is selected

In the compose window

  • the back button reads as "unlabeled" instead of "back"

In the search screen

  • the magnifying glass icon at top left reads as "unlabeled". If this button actually causes a search it needs to be labeled " search" if its just a visual thing that has no function it either needs to be put into the edit box element or make talkback skip that element completely
  • when you type in the search box the "X" icon to clear the search reads as "unlabeled" instead of "clear search" for example.

In the My profile tab and other users profiles

  • the header image is a button that reads as "unlabeled" but does nothing when clicked. If this is not a button its element type may need changing and the label should be "header image" or similar
  • the profile picture acts just like the header image just mentioned. If it is not a button its element type should be changed and the label should read something like "profile image"

Missing Delete and Redraft feature

I can't see Delete and Redraft feature on Mastodon android. It's very useful feature for editing previously posted toots. It will be good to add this feature to your android app.

Collapse top bar when scrolling

When scrolling, top bar should collapse. This would offer more usable space on the screen.

Also, can you consider making the bottom bar a little compact? It takes up way too much space.

Make view from timeline back

I like this , because it makes me feel I am not alone on then earth. Every time I view the post from different from the timeline, I can feel they are all alive, not only me. Every time, every second, I can meet new friend, maybe he is in Japan, having dinner, or In French.

Now the feature of viewing from timeline is not in mastondon-android. I like the hot trending, then I can know what people are talking now. But I feel lonely when use your app. I find out that it is because I cannot always read a new post, cannot always know who may be will be my friend, what he is doing ,worring. So I need this feature.

I want to help with the translation

The application is currently only in English, I think it would be a good idea to allow translation via a platform such as weblate, crowdin or transifex.

Notifications don't work

Notifications don't seem to work. I haven't received a single one since I installed the app.

Android 11
Fairphone 4

[Bug] "Search" section empty

Device: Amazon Fire 7 with Android 7.1.2

The "Search" section empties after visiting one of the proposed accounts and I have to restart the app.

Feature: UI/UX for direct messages

This feature request would specifically involve the app displaying the direct messages of the logged-in account in an extra area and offering the option of sending a direct message to $user.

Feature: Hashtag timelines

Mastodon doesn't support following hashtags, unfortunately. However, Tusky lets one create tabs with timelines that display toots containing certain hashtags.

For example, if one wants to see toots about FOSS development, one can add a timeline with the hashtags: #foss #oss #opensource #freesoftware

It would be very nice to have this feature in the official Mastodon app too!

Friendica not supported?

I see loma.ml (a Friendica instance I make daily use of) appear in the list of servers but can't connect, just selecting the server and saying "Next" in the login screen will cause a "Missing parameter" message instead of a redirect to the browser for login. Is Friendica supported? Any way to track this down?

context in composer

It would be great to have more context in the composer when answering to a toot as you often have to think about what you're answering to when writing one.
It could look a bit like it does on Twitter(or even better, by showing the whole thread):
Screenshot_20220414-143228

Kotlin

The android ecosystem is moving towards using Kotlin.

Using Java will inhibit the future maintainability of the application.

Consider converting to Kotlin overtime.

Followers and followed cannot be listed

When you are in a profile, and you click on followers and followed numbers, I would expect to have a full list of those, probably with a search bar.
That's just an idea, what do you think?

Add "Unlisted" option for toots.

Web Mastodon supports that feature, but in this app I cannot use it. In this app I can only use public, Followers only, Only people I mention.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.