- Kotlin 100%
| app | Fixed wrong default entry on newly created databases keeping messages from being loaded | |
| gradle/wrapper | initial commit | |
| metadata/en-US | changed readme, screenshots for fdroid | |
| screenshots | GIFs, Replies, only load part of the messages, other cool stuff | |
| .gitignore | added screenshots | |
| build.gradle | Viele Updates | |
| gradle.properties | initial commit | |
| gradlew | initial commit | |
| gradlew.bat | initial commit | |
| README.md | changed readme, screenshots for fdroid | |
| settings.gradle | initial commit | |
Mycelium Messenger
Very anonymous, end to end encrypted chat(sh)rooms
E2EE chatrooms? Are you retarded?
In Mycelium there is no user information of any kind.
It may be a bit silly to call something a chatroom, a public space, and then End-to-End encrypt it but it was my best guess on how to connect users without knowing the users exist. Technically, anyone can join any room if they guess the UUID but without the keys they are just seeing emacs keybindings
If you want to chat with someone you create a room and share the link including the secret keys needed for AES encryption, all packaged as a secret code. Neither the Server nor the other users know who wrote a message but if you wish you may set a username which will be shown above your messages. This, however, is completely optional as the main goal of the app is to keep everything as anonymous as possible. All the server knows is what room-UUID a message belongs to, what number of message it is and the heavily encrypted content it doesn't know how to decode.
Your groups messages are saved locally for quick loading in an AES encrypted database made with SQLCipher and the key to that database is encrypted with a generated key from the Android Keystore system. Dare I say, it's pretty safe?
Current State
What is happening
- Any form of error handling
- Show messages in RecyclerView instead of TextView
- Right-align your own messages
- Remember nickname per group
- Save messages locally ( AES encrypted database, don't worry )
- Notifications while in-app
- Make message-text copy-able
- avoid double-messages
- QR Code for sharing your secret code ( to avoid third party )
- Image support
- Set room pictures
- Change server
- Notification Service
- Press images for full-screen view
- Download images
- Start on boot
- Less aggressive compression
- Only save the last 40 messages on the server, you can still have older ones locally
- Vastly improve serverside code ( maybe not "vastly" but it is a little better now )
- Message dots for room-list
- Share images and text into app
- Animated splash-screen
- Make separate english and german options, not some weird mix
- Only load the last X messages when opening a room, scroll up for more
- GIF support
- Replies
- Delete messages locally
- Share secret code over NFC ( pretty cool, huh? )
- Info-View to explain the basics
- Arbitrary Room Order ( it is last-changed right now or something like that )
- Scaling for screens other than mine
- Show something other than the UUID in the room list, maybe the last message
- Markdown support ( at least the basics )
- Light theme
- Document the code
- More mushroom puns
- Sell out to some shady ad company
What is not happening ( for now )
- Support for bigger filetypes ( I only have a 64GB SD Card in my raspberry pi )
- More complex profiles/ unique usernames ( That would kinda defeat the purpose )
How to get it
I host my own F-Droid repo for it, you can add it to your sources in the settings:
https://krixec.hopto.org/fdroid/repo/
As there is no data collection whatsoever, please let me know if you encounter bugs, horrible design, have questions or suggestions.
You can either use this pages Issues or write me directly in the (sh)room in the QR-code at the bottom ;)
How to build
I've made it with Android Studio so you'll probably want to use that for compiling as well. The steps here would be Build -> Build Bundle(s)/ APK(s) -> Build APK(s)
It uses gradle for the builds so look into that direction if you want to stay in the terminal.
How to host your own server
I'll add better support for self-hosted servers soon, at the moment you probably only want rooms from one host.
You can grab the serverside files here
How to motivate me
You can tell me that I am a lazy schmuck and have to work on your suggestions here