Hauler - Mastodon client

When I started using SailfishOS few weeks ago, I noticed there was not a single Mastodon client available (on Jolla store, per my lame search attempt back then). I was expecting this ecosystem having at least 7 of them. So here’s my piece.

I have to be frank with you all, I make it mainly for myself, to have one client that’s just perfect for me. So while I might be keen to work on features you need, I might also skip them with not much explanation.

Warning: this project is in usable state, but it’s fresh and unpolished. Many features are missing, I can expect a lot of bugs appearing. If you find some bugs please report them on Codefloe or here in this thread.

I have multiple Mastodon accounts, so as you probably guessed, this is optimized for this use case. I might do some improvements in the future for a single-account users, but this is low in my backlog of stuff I want to implement.

Stores

At the moment it’s only on Storeman. I’ll add it to official Jolla store once this project reaches v1.0.0.

Commitment

I intend to develop it until v1.0.0 which will be a version when I consider if feature complete. Then I will maintain it as long as I use SFOS personally.

Build

I build it on Codefloe.com CI/CD, those rpms are then uploaded to the repository releases and manually to OpenRepos.net. I do not build it on my own machine.

What it can

  • Log in, log out. Multi accounts.
  • See the feed, open threads.
  • Reply, quote boosts, boosts.
  • Composer with @mention picker, polls, images with alt tags.
  • See your profile, edit your own posts.
  • Like

Backlog

  • Bookmark.
  • Profile gets a menu tab with: my likes, my bookmarks.
  • Search with your own instance and masto.kukei.eu API.
  • Notifications (with Foghorn?) - currently slowly cooking this one.

Known missing features, low in priorities

  • Keeping auth tokens in SFOS secrets keychain, I tried it it exploded the whole project and usability was also questionable (like e.g. SFOS asks for permissions on each boot which is insane).
  • UX focused on lists.
  • Pushing boost, like and other buttons into post list (feed) - I want myself (and my users) to think twice before reacting on posts, so this extra tap to open a post in an original thread is a way for a timeout, this habit saved me few times of liking or boosting something I took out of context, like some answer that looked worth boosting but meant something completely different when seeing the whole discussion.

Credits

I tested following apps while working on it, I did not check any source code of any of those apps, nor my LLM reached it (actively, I suspect they might be in models training sets).

Tooter

Much respect, it is really cool, but no multi-accounts.

Meridon

Cool.

AI Disclaimer

AI Disclaimer follows the /c/selfhosted guidelines. All communication I do, including this forum post, I write by myself, with no LLM involvement whatsoever.

Design - architecture, system design

App icon generated, UI/UX design made by human. No AI involved.

Implementation - production code

~90% code generation by LLM model (OpenCode + Ollama Cloud, Claude Code). All code reviewed by human. Some code edited by human.

Testing - writing tests, test plans, and QA.

This project follows YOLO test pattern as unit testing setup on SFOS SDK is not there yet.

Documentation - Docs, comments, README, change logs

This README is fully written by human. Commit messages made by human, changelog is generated during CI/CD based on commit messages.

Comments in code mostly made by LLM.

Review - Code review and pull request feedback

Code review always by human. In some cases an LLM model might do a review too to find the gaps I didn’t find.

From time to time LLM is asked to check the overall code to find some bugs or potential problems.

Deployment - CI/CD configuration.

Made by LLM with human editing. No human should write yaml files.

Screenshots




4 Likes

Congrats on your app!

On funnier note, I guess like they say “this meeting could have been an email”, we can say “this app could have been an PR” :smiley:

1 Like

I know I know. One day I will stop my urge of “just do it” and actually contribute to something that exists.

However, I still think SFOS should have 7 different Mastodon clients, so there’s still room for some!

No, I think everyone who can should at least try to develop an app and have fun while learning.
The PR point was because we have developers supporting and most importantly maintaining apps for years, so it takes off any burden about implementing others suggestions as you said, and you get it done for yourself and everyone else as well.

Anyway, I really appreciate all the info and disclaimers so good job there as well!

5 Likes

I totally agree with all. Before Jolla shipped i knew i will try to make some app, just didn’t know what exactly.

My college from work will also join here with some 5 apps he has in his backlog, he just waits for his own device.

For learning part i can say it’s awesome now with LLMs. It takes out the most annoying part of learning new ecosystem: not knowing what I need exactly, patterns and all the assumptions.

With my second app here I can say the SDK is actually better than Android Studio but SFOS needs a better sandboxing and maybe more APIs here and there.

Cheers!

3 Likes

I suppose I’m nitpicking, and I’m not sure if it’s intentional or if some template is doing it automatically (quite a few new apps on OpenRepos seem to use the same icon template), but please consider having the app icon follow one of the basic Sailfish icon shapes (four corners that are either round or square). I think the shape with only the top left corner rounded would be a good fit with the shape of the boat, and of all shapes it’s probably the one that gets used the least. (Of the 200-ish apps I’ve installed, not one has that shape.)

It’s something minor and in the end you decide how you want it to look, but squircles and other non-Sailfishy icons really stand out among all the others, and unfortunately not in a good way. Sailfish-style icons have predictable shapes and create harmony, but other shapes look tacked-on, as if they don’t belong there.

2 Likes

Good point, I’ll adapt that SVG to align more with the design language. Indeed it looks like one of the AAS apps. Thanks!

2 Likes

Today’s update:

  • Proper changelog format
  • Push notifications spec
  • Link to SFOS forum
  • Add app icon source
  • New icon, compliant to SFOS design language #14 (@nthn thx again!)
  • Profile headers clickable, profile pages with follow/unfollow
  • Update AI statement for app icon
  • Bookmarks, profile page gets menu tab with bookmarked, favs
2 Likes