Whisperfish - The unofficial SailfishOS Signal client

That’s a broken feature at the moment. It’s one of the things that got broken in the refactoring mentioned above, we’ll need to unbreak reimplement them one by one. I hope we’ll get most of them fixed in the next release. Stay tuned!


To elaborate: I preferred to get a version out that is way more stable, than to wait for my head to be clear enough to get the cover unread count and safety numbers reimplemented correctly. I’m sorry if you rely on verifying the safety numbers, that’s indeed quite an important feature.


Reinstallation does never help with Sailfish applications, except in case of your root partition being corrupt (but then you have bigger issues). If a reboot does not help, then there’s an actual bug and we will require logs to get to the bottom of it! You can check your version on the command line, when you start Whisperfish with --verbose, the first thing it prints should be a (correct, I hope) version number.

1 Like

Thank you for the new version and all the effort! I am using WF on two XA2-devices. The one with the previous version is ok and I am very happy with that. On the other device registration with hCAPTCHA was only possible since the latest version, I received an authorisation code from Signal and registration looked ok. But no telefon number or UUID was shown in the settings and I could not reach the number (“is not a member”). (May be, my number was still blocked on the server due to previous trials?) I removed installation of WF and tried to start from scratch with a new installation: This is no more possible: A newly installed WF does not show the registration process anymore but starts with the conversations screen. Restarts did not help. Is there something to be removed to make WF “forget” the previous registration?

To reset the previous registration, you’ll need to do some manual work indeed. We have not yet implemented that from the UI.

I’m not sure what’s going wrong with your previous attempt. What do you mean by “is not a member”?

Ahh, thanks for the pointer to the FAQ! (sorry for not having found it… ) “Is not a member” is the message when I am looking for the newly registered number in my PC client (which is linked to the working WF on the other XA2 device.) So registration was not successful, obviously.Because the previous WF version did not work I tried the original Android client - without success either. The authorisation code did not work and after several repetitions I got a message, that I too often tried to register and now the number is blocked until a date. (The message disappeared - and I dont remember the date… https://support.signal.org/hc/en-us/articles/360007318751-Registration-troubleshooting : too many attemps). So may be, the number is still blocked? And WF could not get it? So I will try next week again after running the rm command…

Good preferation :+1:

Tried a new registration, received and entered an auth code from signal and reached the conversations screen. But registration failed without noise. A second time I started WF with --verbose and got some interesting logging. 2023-03-21 13:28:45.365 [DEBUG] libsignal_service_actix::push_service: HTTP request PUT https://chat.signal.org/v1/accounts/code/94916
2023-03-21 13:28:46.235 [DEBUG] libsignal_service_actix::push_service: AwcPushService::put response:
ClientResponse HTTP/1.1 403 Forbidden
And an explicite error scrren. But may be, this time the reason was the missing leading zero of the code in the PUT request? Hm. Will try again.

Registration was not successful again. Although the logging looked ok: PUT request had a nice response with uuid, number and pni filled. Only the last three lines of the registration logging looked strange:
2023-03-22 11:37:52.972 [ERROR] Error handling StorageReady: Mailbox has closed
2023-03-22 11:37:53.238 [DEBUG] whisperfish::qtlog: qml/pages/MainPage.qml:41:onCompleted(): Age 10
2023-03-22 11:37:53.239 [WARN] qml/pages/MainPage.qml:95:26: Unable to assign [undefined] to bool
When I restart WF these lines are always shown at the end of starting. Switching to the settings dialog always crashes with Bus error (core dumped). Any idea?

HI all! Registration is indeed broken in beta.15. @direc85 is cleaning up one last merge request, and I’ll push beta.16 right after that, in which registration works again.


Is there a special procedure for relinking Whisperfish? I used it as secondary client but have moved to a new phone with the Signal App.
I cannot find any option to relink WP, only to reconnect the websocket (which doesnt work, of course since the link is missing)

Relinking is currently not possible, we only have a full reset for now.

Oh, okay. so the equivalent to a fresh install on the new device :wink:
Thanks for the info

Whisperfish 0.6.0-beta.16

Fix an issue during registration, and some QoL improvements. If you want to register after a failed attempt, don’t forget to reset your installation



We slipped a broken profile page to the release, that would be on me, sorry about that!

Luckily, this is something that can be fixed on-device. In order to do it, however, you have to be familiar with Terminal, devel-su and text editing:

devel-su nano /usr/share/harbour-whisperfish/qml/pages/ProfilePage.qml

Go to line 281 and edit it like so:

From: visible: numericFingerprint.text.length > 0
  To: visible: numericFingerprint.text.length > 0 && !isOwnProfile

Then comment out (or remove altogether) line 278:

From: visible: !isOwnProfile
  To: // visible: !isOwnProfile

Save the file and restart Whisperfish. Now you should be able to access the profile page again - this time with the new feature of being able to edit your own name in your profile.


Thanks for the update and the instructions!

…and a couple of useful tips for newbies like me, who prefer to do this from their linux PC via SSH using nano:

  • After establishing ssh connection, run command echo $TERM to check your TERM is either xterm or linux.
  • If echo returns something else, run either export TERM=xterm or export TERM=linux to be able to use nano.
  • Use -l flag to show line numbers in nano:
    devel-su nano -l /usr/share/harbour-whisperfish/qml/pages/ProfilePage.qml
  • After editing, use ctrl + O to save the changes and press Enter.

Please let me know, if I wrote something which is not correct!

1 Like

Whisperfish 0.6.0-beta.17

Sealed sending release, soon near an OpenRepos near you! Sealed sending is a feature in Signal (since 2018 already…) which allows a client to not identify with the Signal servers when delivering a message. This means that Signal LLC does not know who you are when sending a message. Signal enforces this mode of delivery since a few months, and they’ve put a rate limiter on the old method of delivery. This meant that sometimes Whisperfish failed to deliver messages for 24 hours, and this release fixes that issue. I talked about this feature in Lausanne, if you’re interested to see how this works.

In practice, this means two things: one, a huge win for your privacy. Second, fewer (no) failed message sending any more.

There are a lot of other useful changes in this release too!


  • Fixes the profile page not loading
  • Fix multiple settings page and profile page issues
  • Implement automatic identity key reset
  • Implement draft messages
  • Fix captcha display and submission
  • Ignore NullMessages and implement PlaintexContent
  • Implement sealed sending
  • Cleaner logging thanks to minimized Display implementations for database types
  • Log Qt and QML via simplelog
  • Keep identity key in memory, instead of reading from storage
  • Stop trying to send messages to unregistered users, store registration state in db
  • Consider empty sessions as read, fixes incorrect unread message count
  • Expose logging settings in Settings page
  • Bump emoji.js


:warning: Log files accumulate, mind their size!

Call for translations

We have been calling Whisperfish “beta” software ever since I started working on it in November 2022. With sealed sending and automatic identity key reset out of the way, we’re trying to move towards a real release. There is still quite some work to be done, but we’re inching closer every day now. We’re planning such a release in the 0.6.0-rc.1 release candidate milestone.

The 0.6.0 release will also hit the Jolla store, and we would love to have the translations up-to-speed when that happens.

Translation status

As you can see, many translations have been started, but not all of them are maintained perfectly. @direc85 keeps the Finnish up-to-date, I take Dutch, and many other people took the 1300+ words upon them to translate.

What I want to convey here: if you have a few minutes of time, it would be really cool if you could help a bit on Weblate with a language that you know well. If you have questions about a translation string, feel free to ask me!


If I were to pick the feature in beta.17, it would definitely be sealed sending – Whisperfish is a lot more reliable now! (But it’s still in beta!) That was the most critical piece of technical dept (in my opinion) that’s now pretty much paid, so in the future we should be able to focus more on new features and polishing the existing ones instead.

For the bug-hunters out there, the logging can now be enabled and disabled from the settings page (restarting Whisperfish is required) and there’s now log rotation: it keeps the five last logs, so that should protect from “whoops, I lost the log because I restarted Whisperfish” situations.

Beta.17 is definitely something you should upgrade to :slight_smile:



Main menu > Settings -> Show my profile

… shows someone else’s profile for me.

Can anyone confirm?


… it shows my picture, and then the name and number of a friend. Thanks for noticing :rofl: