Whisperfish - The unofficial SailfishOS Signal client

Whisperfish Whisperfish icon

Whisperfish is an advanced but unofficial Signal client. Whisperfish should be in a usable state for many users, but is still considered beta quality software ; make sure to always have the latest version! Also, check our Wiki and feel free to contribute to it! Currently, mimimum supported SailfishOS version is 3.4. We intend to keep compatibility with 3.3 for as long as humanly possible. The build for SailfishOS 3.x is located in a separate OpenRepos application.

Do not ever contact the Signal developers about a Whisperfish issue. You will annoy them and make them dislike us. Contact us instead (see below).

Known issues :broken_heart:

Whisperfish is a project by volunteers. Lots of stuff works, lots of other stuff does not work. If you find something that does not work, file an issue or reply to this thread.

  • Migration fails if the previous version was started but not registered (beta.11)
    • Workaround: Migrate (move) the storage folder by hand, or rename the old folder
  • Whisperfish beta.11 white screen on Sailfish 3.4
    • Workaround: Use beta.10 for now
  • Previously installed emojis are not shown anymore
    • This occurs when updating from beta.9 (or older) to beta.10 (or newer)
    • Caused by version bump to Emoji 14
    • Fix: Remove the old emojis and re-install the new set(s)
  • Sending the first message to a contact gives a 404 Not Found error:
    Workaround:
    • Use Signal Desktop to send the first message.
    • Ask your contact via another way to send you the first message.
  • Creating groups, inviting new members, deleting members (planned for later)
    Workaround: use Signal Desktop.
  • Getting invited to a group. Ask to be added to the group instead.
    Workaround: use Signal Desktop.
  • Message quotes (the UI element is there, but the implementation currently lacks)
  • Many other UI features are just stubs at this point.
  • Registration if registration lock is enabled.
    Workaround:
    • Wait 7 days, or;
    • Disable the registration lock on the old device in the Settings menu of the Signal app:
      • For Android, this seems to be: Settings → Privacy → Registration lock,
      • and for iOS this is seemingly: Account → Signal PIN → Registration lock.

SailfishOS platform version notes and known issues

The intention is to keep as many versions of SailfishOS supported for as long as possible. Some versions show bugs specific to that SailfishOS version. If it is not possible to upgrade to the version mentioned below, you can use the workarounds mentioned here.

Current highest tested SailfishOS version: SailfishOS 4.4

SailfishOS 3.x series

Bugs present in the Sailfish 3.x series

In principle, Whisperfish works on SailfishOS 3.3, except for registration.

Installation on SailfishOS 3.x

Since the release of SailfishOS 4.3, there has been an ABI-incompatible change between 3.x and 4.x. Whisperfish is now built separately for 3.x and 4.x, and both packages are available on OpenRepos. If Storeman cannot figure out the correct version for your 3.x installation, you can install Whisperfish via the commandline (after adding the repository):

zypper install harbour-whisperfish-0.6.0.beta.10-0.sf3.armv7hl

SailfishOS 4.x series

The Sailfish 4.x series introduced a few issues, and possibly new features; notably.

Contribute: get in touch, report issues and translate! :handshake:

If the app behaves strangely or slow (I have a strong dislike for slow software) to you, please get in touch on Matrix #whisperfish:rubdos.be or on Libera.Chat #whisperfish, file an issue, or email whisperfish [at] rubdos [dot] be, or post on this forum thread. If it works well already, also let me know! That’s good for morale.

Development and progress :nerd_face:

Follow the progress of the rework in the 0.6 milestone on Gitlab. If you are interested in contributing, contact me on Gitlab. If you want to discuss development, join the discussion on Matrix #whisperfish:rubdos.be.

There are nightly builds (in form of RPM) available on Gitlab. Nighlies eat batteries for breakfast, break up with your girlfriend, and use magic to turn phones into bricks. If you want to use them, please come and chat on Matrix or IRC. Whenever there is a version that makes sense, and has a low probability of tearing apart the very fabric of the universe, it’ll be here on Open Repos!

Donations :moneybag:

Thanks for the support, feel free to buy me a coffee! Liberapay allows for donations via PayPal or credit card. While I do appreciate the donations, please consider matching your donation towards Signal themselves. They need it more than I do, now more than ever! Also consider donating to Weblate, because they provide their translation hosting service to us and many other SailfishOS applications at no cost!

Licence note :open_book:

The original Whisperfish 0.5.0, by Andrew, was released under GPLv3+. Since we are using the upstream code of Signal themselves, partly licensed under AGPLv3+, the whole of Whisperfish 0.6.0 falls under AGPLv3+.

Release notes :chart_with_upwards_trend:

Whisperfish 0.6.0-beta.11

Mostly bugfixes for bugs that we introduced in beta.10, but also implements Whisperfish as secondary device. This release is basically completely due to direc85 and Gabriel Margiani; thank you both!

Changes

Whisperfish beta.10 :tada:

This is a huge release, thanks to the hackathon we did a month ago with @direc85 (see picture at Whisperfish - The unofficial SailfishOS Signal client - #595 by rubdos).

There’s a ton of useful changes for the users, and there’s also a lot of technical debt fixed that will make the next releases even more awesome. Diffstat since beta.9: 127 files changed, 11795 insertions(+), 5464 deletions(-) (and that’s huge)

Changes

Highlights:

  • Registration should work again! Thanks @direc85 and Gabriel Margiani !
  • Cover page is awesome!
  • Typing notifications are cute!
  • Display multiple attachments!
  • Resending failed messages!

This is quite a milestone. The next big milestone will be porting Rust 1.61 to SailfishOS, because that will allow us to further push the dependencies and implement all the new GroupV2 and sealed sending features more easily.

Whisperfish 0.6-alpha.3

Hello, world!

Today I’m feeling healthy and confident enough to start a thread about Whisperfish, the Signal client originally built by Andrew E. Bruno in 2016 (thank you so much, Andrew). In February 2019, aebruno announced the EOL of his Whisperfish. I have then, four months later, volunteered to take the lead and rewrite the whole thing against libsignal-protocol-c, the official and upstream ratchet/axolotl/e2ee library.

It’s taken me a long time, and during the time I switched to Rust, which turned out to be a radical choice back then, but has since paid of: Signal themselves started switching the protocol library to Rust, and SailfishOS introduced preliminary Rust support in 3.4. I had to DIY my Rust SDK (and haven’t migrated yet).

What followed was a painful rewrite of many things, but it is now starting to pay off. I’d like to thank Markus Törnqvist and Gabriel Féron for their efforts in respectively the Sailfish part and the back end part. I have (re)written the bulk of the application, including a very experimental (but very much working) async/await-enabled Qt interface, which I want to get cleaned up by Whisperfish 1.0.0.

The result of our efforts is, currently, Whisperfish 0.6-alpha.3. While I am confident many more people can use the “new” Whisperfish, be aware that this is an alpha release. This means that things will fail and you might lose data. That being said: I have many reports of people losing data with Whisperfish 0.5, data that is not lost on my rewrite. This is due to the new cryptographic library, and many updated API calls. If you install this software (thanks!) please leave feedback, both positive and negative in this thread.

Implemented features:

  • Sending and receiving messages
  • Receiving attachments

Notably not implemented:

  • Registration
  • Sending attachments
  • Starting conversations with new people
  • Altering groups

The above means, that if you can wait with sending pictures (my priority number one) and if you have a working Whisperfish 0.5 installation, you can probably start using the Whisperfish 0.6-alpha’s. Be prepared to send me feedback, either through the forum, Matrix or IRC (freenode#whisperfish). Bug reports and feature requests are more than welcome on the Gitlab issue tracker

Downloads

Before downloading any of this, please read the above paragraph.

Master branch builds (“nightlies”)

All RPMs are published on the Gitlab package archive.

Version history

Published versions can be found on my OpenRepos account.

52 Likes

Do I understand correctly, that if I don’t have Whisperfish 0.5 I can’t install 0.6?

That is correct for now, indeed. I want the adoption to go slowly, to catch some bugs early on, and not to overwhelm the Signal servers just yet. alpha.4 will have registration, as well as sending attachments.

Thanks for all of your efforts with this @rubdos. It’s great to see Whisperfish being kept alive… and driven forwards. I’m looking forward to trying it out.

4 Likes

I thank you, and will happily donate $ to this cause! The old Whisperfish stopped accepting attachments, so I had to go back to the Android app. Which I hate, and which loses the data connection every time I get an MMS. So I’d love to go back to Whisperfish when it is ready.

1 Like

Thanks, @flypig and @sethdove for the kind words!

If you’re really keen on donating, I have a Liberapay account at https://liberapay.com/rubdos/. I’ve stopped to refuse donations, although I have to tell you: I am full time employed (at the Vrije Universiteit Brussel as researcher in applied cryptography), and money sadly doesn’t buy me time. It does buy me coffee and beer though, which is of course appreciated :slight_smile:

10 Likes

Update! I’ve pushed Whisperfish 0.6.0-alpha.4. I do not have the rights (yet?) to edit my topic start, to update the overview, or is that not-done here?

Either way: I am quite confident that at this point, Whisperfish is usable for a lot of users! :partying_face:

Implemented features:

  • Registration
  • Sending attachments

Notably not implemented:

  • GroupV2
  • UUID-only devices
  • Creating new conversations (contact selection)
  • Group management (creating and modifying groups)
  • Linking devices (i.e., Signal Desktop)

Known issues

  • New 3.4 installs (the ones with defaultuser) will panic on displaying messages. (fixed on master)
  • Entering a phone number for new messages doesn’t accept leading +, but you can just leave it out! (fixed on master)
12 Likes

Woohoo, wonderful thanks to you and your team! :champagne: :love_you_gesture: :notes:

Sooo that would mean Whisperfish is ready for new users, who didn’t have 0.5 installed?

It absolutely is. Please do check whether you created any Signal groups after the October update (or Signal Beta, if that’s your thing). If you have, please wait until we implement groupsv2!

If you have an old (defunct) 0.5 installation, or if you tried to register with 0.5 before, you may want to remove .local/share/harbour-whisperfish (recursively) and .config/harbour-whisperfish/*. I have not implemented anything as a “re-register” functionality yet!

4 Likes

Hej Rubdos

first, thanks a lot for your work… this kind of things are neccesary for sailfish.

when trying to do a new message the app doesnt recognize any contact and if I try to write them manually the + bottom doesnt work , so I cant introduce any number. I am using it in a sony xa2

2 Likes

Same for me on XA2 Ultra.

Also thanks for amazing work!

1 Like

Contact selection is indeed unimplemented, but manually entering a phone number should work. The regex is a bit flakey there (I’ll note that for beta.1, thanks for the report!), but it should work if you just leave the + out! +32474123456 becomes 32474123456.

EDIT: the patch that accepts the + is on the master branch. Should be fixed in next release (and contact selection is on the road map)

2 Likes

it doesnt work yet. if no symbol, no recognice number

Just had a look at it: try using the 00 prefix instead of +, that seems to work here. +32474123456 -> 0032474123456. I’ll take note to make that clearer in the UI!

EDIT; doesn’t look like I can actually send a message to a new number though. That’s planned for the next release! :slight_smile:
Receiving messages from a new number does work, so you can always ask to have them send you something on Signal, via another medium.

2 Likes

Doing some testing. Aside from the observations already noted (no contact selection, sending messages to new numbers doesn’t work), it seems I can’t get Whisperfish to work over my LTE data connection. The card icon stays orange after entering my password, and messages don’t go through. When I close Whisperfish, enable WiFi and reenter my password, the icon goes green and messages are sent normally (verified with double check mark and another device). I have verified internet connectivity, and have rebooted/toggled airplane mode on and off.

I’m not sure what’s going on here. Device is an Xperia XA2 Ultra, on T-Mobile LTE (US). Data works, confirmed with speedtest and other apps. Let me know if I can be of further assistance.

That’s peculiar indeed! I don’t immediately see what could cause that. Could you provide me with a (partial) trace log? Switch to LTE, then open Whisperfish on the terminal: RUST_LOG=trace harbour-whisperfish, and enter password as per usual. The terminal will be extremely chatty.

Important: currently the logs are not sanitized: they print phone numbers and secrets. You might want to cherry-pick some lines that you judge may be interesting. I expect to see ERROR and WARN lines that should jump out, those will quickly give me or Gabriel a clue.

Let me know if I can help obtaining the log (and feel free to come have a chat on Matrix/IRC).

After some debugging (thank you for the tip on the trace log), I discovered that T-Mobile (US) suddenly changed behavior on the fast.t-mobile.com APN. I reverted to the old epc.t-mobile.com APN and everything works as expected. Changing the APN back makes the “couldn’t create websocket” error return, so I’m now certain it is the culprit… nothing to do with Whisperfish. Apologies!

4 Likes

Slightly off-topic:
Isn’t Signal very much against third-party/unofficial clients? Do Whisperfish developers have any official agreement with them?

1 Like

They seemed very much against it a few years ago, but our feeling is that they don’t mind it much any more. We haven’t heard from they yet, and they never really seemed terribly unhappy with Whisperfish 0.5 either as far as I know.

I’m quite sure they changed their minds, or at least tolerate us now!

If I remember correctly, Signal faced severe backlash over their stance on third-party clients. They reversed position pretty rapidly.

2 Likes