Piirit - A native Sailfish OS client for Delta Chat

Hi there :slightly_smiling_face:

I have just released the first version of Piirit, a native Sailfish OS client for Delta Chat.

Piirit is the Sailfish UI on top of the upstream Delta Chat core, which it bundles. It implements no messaging protocol and no cryptography of its own. Everything to do with mail servers, keys and encryption stays in upstream’s well-tested core.

It is built for the Jolla Phone 2026 and nothing older.

Release: Release Piirit 1.0.0 Ā· muhnschein/piirit Ā· GitHub
Source (GPLv3+): GitHub - muhnschein/piirit: A native Sailfish OS client for Delta Chat šŸ’¬ Ā· GitHub

Screenshots

What’s in 1.0.0

  • Profiles: set one up on a chatmail relay, take one over from another device by scanning its code, or restore from a backup. Several profiles side by side, each with its own name, picture, signature, read-receipt setting, invite code and backup.
  • Chats: search, archive, unread counts, muting, groups, contact requests to accept or block, and a blocked-contacts list under Privacy.
  • Messages: Markdown rendering, pictures at a chosen quality, files, voice messages, in-app photo and video capture, reactions, editing, deleting for yourself or everyone, quotes, disappearing messages, and tracking parameters stripped from links.
  • Media pages per chat for pictures, sounds, files and apps, with saving to the gallery folders or Downloads.
  • webxdc apps (experimental!) running inside the chat (off until you switch them on in Settings).
  • Phone integration: notifications, share target, a live app cover with unread count, network-aware connection handling, and all 39 languages Sailfish OS ships in.

The full list is in the release notes linked above.

To Do’s/Known limitations

This turned into sort of a To Do list. In no particular order:

  • [Out of scope] Chats over plain email or non-chatmail servers
  • [Out of scope] OpenRepos or Chum
  • [Out of scope] Feeding the trolls
  • [Likely out of scope] Video calls
  • [Todo] Voice calls
  • [Todo] Avatars on message bubbles
  • [Todo] Full choice of emojis for reactions
  • [Todo] Improve webxdc support, including newer webxdc calls
  • [Todo] Translating responses from the core, e.g. errors. These are currently English-only.
  • [Todo] Translations - These have not yet been proof-read and might have some rough edges.
  • [Todo] Unread filtering in the main chat view
  • [Todo] Configurable quick actions on the app cover, e.g., tap :heart: to jump to a certain chat, tap :magnifying_glass_tilted_left: to jump to search.
  • [Todo] Improve in-app viewfinder. Enable switching between cameras, zooming, etc.
  • [Todo] Make voice messages more space-efficient. Sent messages are currently FLAC-only.
  • [Todo] Make the location for saving attachments configurable.
  • [Todo] Currently Piirit can be added as a second device, but cannot be the ā€˜first device’ in a multi-device setup.
  • [Todo] Location sharing
  • [Todo] Channels
  • [Todo] Group descriptions
  • [Todo] Background daemon? Harbour issue.
  • Probably more.

Installing

Piirit isn’t in the Jolla Store yet (see below). Until then it installs like any sideloaded package. Download harbour-piirit-1.0.0-1.aarch64.rpm from the release page and, in developer mode, run:

devel-su pkcon install-local harbour-piirit-1.0.0-1.aarch64.rpm

About the Jolla Store

As it stands, Piirit will not pass the Harbour validator. The bundled Delta Chat core is a second executable, and Harbour allows only one. This can’t be fixed inside the app without either adopting an interface upstream is retiring or circumventing the rules, and I’m not willing to do either.

I’ve opened a separate thread in Store QA to discuss this directly with @Jolla here.

Please keep the Harbour discussion in that thread, so it stays focused and readable for @jolla. If you’d like to see Piirit in the store, a thoughtful reply there, or a like on it, helps more than debate here.

How it was made

In the interest of transparency: Piirit was developed with the help of AI, as the README states up front. It is largely a GUI wrapper around upstream’s core, has CI checks and tests, and the code is all public for review. If that’s a deal-breaker for you, that’s completely fair, and there are other Delta Chat options out there. I’d ask that this thread stay about the app itself. :heart:

Feedback welcome

This thread is for anything about the app: impressions, feature requests, UI feedback, translation fixes. I’m not a native speaker of Finnish, so I hope the app name is not too bland or silly. I figured I’d pick up on the loads of avatars all over the place and pay homage to our Finnish friends. :slight_smile: Suggestions still welcome!

Bug reports are best filed as GitHub issues so they don’t get lost. Any bugs reported here may eventually get looked at, but focus will be on Github issues.

Thanks

Thanks to the Delta Chat team for their excellent core, to parla, which parts of Piirit build on, and to Whisperfish for showing what’s possible on Sailfish OS.

:new_moon:

12 Likes

Linking with the desktop app seems to work, the rest I’ll find out later. However, a request: even if the code is LLM-generated, please write the text (the buttons, the descriptions, the changelogs, etc) yourself and let actual people translate it instead. LLM-generated text is the most unnatural sounding rambling garbage (and it sounds unnatural because it is unnatural) and it gets even worse when it’s then also LLM-translated.

2 Likes

Good to hear, happy testing!

I try to hold myself to a high standard, so if you have a concrete defect to report, including odd or out of place wording in any language, I’m genuinely happy to take that on as a bug.

As I have written above, I am not going to discuss AI in this thread. If this puts you off, that’s a shame, but then there are other good options out there.

Let me explain my rationale though: I was able to test this in English and German myself. Beyond that, I would rather have a 90% translation for many locales (and thus, many users), than a 100% for only two.

The problem is not just one string or one translation, it’s all of them. Every single description is nonsensical. Surely the German LLM generated translation doesn’t sound natural to you either? But if you must, some examples. On the Settings page, in Dutch:

  • Enter verstuurt het bericht
  • Anders begint hij een nieuwe regel, en de knop verstuurt.

I can imagine the strings in English are:

  • Enter sends the message
  • Otherwise it starts a newline, and the button sends.

This is actual verbal diarrhea. No human speaks like this and no software speaks that way to the user, either. Strings attached to switches should always use infinitives (e.g. Send message with Enter) and the descriptions should explain the switch in more detail, in human language (e.g. If enabled, you can send messages by pressing Enter. If disabled, pressing Enter creates a newline. or: Turn this on to send messages with Enter, or turn it off to use Enter for newlines.)

Another example, if you must:

  • Een nieuwe melding toont Wie schreef, en wat
  • Op het vergrendelscherm en in het meldingengebied.

Again, I imagine the English strings are:

  • A new notification shows Who wrote, and what
  • On the lock screen and in the notification area.

Again, this is verbal diarrhea. Again, verb tenses are all wrong. And what even is the ā€˜notification area’? Again, it would sound much better if you had written the text yourself, even if you don’t speak perfect English or whatever, because then it sounds human and we don’t feel like we’re communicating with yet another godforsaken chatbot.

But please don’t just change these five strings, I mean it when I say it’s all of them.

LLM generated translations are an insult to the hard work and knowledge of real people. If people want to use software, they will happily create translations for it, they will happily work together and be human. Generating something that merely looks like a translation is doing an incredible disservice to translators in particular and to humanity in general.

2 Likes

Again, if you have concrete, constructive feedback, I’m happy to take that on - ideally in form of a Github issue, but also here.

I’m not going to entertain an AI discussion further, there are already countless threads on these forums for that.

1 Like

By the way, having random strangers tell you that the thing you put your heart into for weeks on end contains diarrhea, garbage, and nonsense is incredibly demoralizing. Consider how you engange people on this forum.

4 Likes

I literally wrote constructive feedback!

4 Likes

Not participating to the LLM conversation, but I think for the translations OP would like to have suggestions for better translations. Or even better, native speaker to check all the strings and updating them

3 Likes

That sounds indeed like a nasty thing to do.
Unless the app is AI generated, of course, because I don’t think agents can get their feelings hurt. :laughing:

3 Likes

But that’s exactly what I did, I gave suggestions to improve the strings based on the way humans speak. I even gave not one but two concrete suggestions for the second string, out of the kindness of my human heart.

Asking humans to turn artificially generated word salad into real human language is an insult. I can understand that people let LLMs generate programming code because programming languages are themselves artificial and if you read my posts closely you won’t even see any criticism about that (I was even the first to ā€˜like’ the announcement post!), but surely just writing a few words yourself instead of also outsourcing that to a chatbot word generator is something any human can do? And why would you not?

Edit: and @unmaintained hit the nail on the head with that tongue-in-cheek comment: my criticism is directed entirely at LLM-generated text. If I have any criticism for the OP, it’s simply that human users shouldn’t have to interact with LLM-generated text, in any language, and this can be quite easily solved by just scrapping the LLM generated translations, describing the different functions of the software yourself (even if it isn’t in the Queen’s English - even if it’s in German!), and asking some community members if they want to translate your app. If people want to use it in their language, they’ll translate it into their language.
Untranslated software (with English strings written by humans) gives off a much more professional impression than poorly translated software. I’m sure almost everyone alive right now has come into contact with both kinds, and knows that the first kind just makes you think ā€œoh, too bad, they didn’t translate this yet, guess I’ll have to use it in English thenā€, whereas the second kind makes you actively frustrated. There’s a reason Jolla doesn’t just Google Translate Sailfish OS and instead relies on community members to provide translations.

5 Likes

I have done only few translations. But personally I think the LLM generated can work as a good base line. Of course I’m not professional translator and have dyslexia so my demand level might be lower, a little bit personal preferences.
But I agree, you gave good examples in constructive way, which was nice. And quite detailed also

The author of the app wrote ā€œwith the help of AI,ā€ but even if the app was fully coded by AI, the author still spent some time and possibly money creating it. So that sounds demotivating.

2 Likes

I think that mentioning LLMs for context was necessary, in order to point out a general problem for translators. This is because you asked people to proof-read LLM output, which for many will be a worse proposition than just translating from a solid English (edit: or other language the app author is fluent in) version. However, I agree that it could be said without calling it diarrhea etc.

Other than that, I support the idea of keeping the AI debate in dedicated threads. No use rehashing the arguments in every app-related thread.

4 Likes

Addin Piirit as secundary device ads an additional relay (nibblehole.com) to your relay list. That’s really not good. (maybe that’s been mentioned before.If that then I’m sorry)

PS: I can’t remember adding that swiss relay on my own.

I made some checks. Maybe I once used nibblehole.com for testing purposes. In arcane chat it shows ā€œphasing outā€.

What I discovered further is:

  1. When pressing ā€œprofileā€ nibblehole.com is shown under profile name, alltough it is not used (see above ā€œphasing outā€

  2. When long pressing this profile and choosing ā€œprofile settingsā€ (ā€œProfileinstellungenā€ on my device) I see the correct primary relay as adress, none of the other 2 backup relays is shown.

  3. The shown memory is only from one of my secondary relays (nine.testrun) and not from my primary relay (has a lot more memory and bigger file size) That’s maybe ā€˜cause it’s the first one in the list.

  • So the name of a phasing out relay is shown under profile name
  • The relay name of my primary relay is shown under ā€œprofile settingsā€
  • and the memory et al is shown of the first relay in the list (the other relays are not shown at all)

I hope that helps. Good luck!

PS: You app comes quite handy for me because on my JP2 there’s a bug of battery drain from AAS. So I can use Delta Chat without AAS running!
..and nice adaptive cover design by the way.

…a background deamon for notifications would be handy to set.

Thank you for that constructive take, honestly. :heart:

I get the idea, in principle. Here’s what I’ll do. I’ll put it on my list to take another look at the English strings - by hand. Then, I’ll translate any changes to the other languages - yes, using an LLM. That will not silence the trolls in this forum, but might indeed remove some rough edges. For the time being, I will also add the fact that translations have not been proof-read to the list of known limitations.

No idea when I will get to that, but it’ll be on my todo list. :crossed_fingers:

I will also just use the ignore function for people who are neither willing nor capable of providing calm, constructive feedback. I’m doing this for free, in my spare time, my main target audience are me and my family. I am genuinely happy for constructive feedback, as I want to make this better for the people who use it. But I surely don’t need to take anyone’s shit.

1 Like

Thank you for taking the time to test this :heart: and for the kind feedback. I went through way too many sketches and iterations for the cover. :slight_smile:

I will take a look at this and might get back to you via PM for additional questions, if that is alright.

Regarding the background deamon: Yeah, that would be something. For Harbour apps that’s currently off the table, I just have the app running in the background constantly - like all apps. First I need this to get into Harbour in the first place :wink: It is on my list for possible future topics, though. One battle at a time :slight_smile:

If anyone wants to learn more about Delta Chat and how it works, here is a talk on it: Delta Chat messenger - media.ccc.de (English)

THAT is a good move! Thank you for that!
What I don’t understand is why you are calling me a troll?
I have been translating more than a 1000 open source software’s during the last 20 years, and I can only agree with @nthn that AI translations don’t seem natural, and are more or less an insult to the hard work and knowledge of real people.
Well, I don’t really care about your opinion on this matter, so you don’t have to bother answering.
I will keep on translating good man made software that deserve good man made translations… also those who use AI for controlled help, rather then a production slave.

3 Likes