Whisperfish - The unofficial SailfishOS Signal client

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:

3 Likes

Hmmm.

Main menu > Settings -> Show my profile

… shows someone else’s profile for me.

Can anyone confirm?

2 Likes

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

For me it’s picture, name and number for a friend, but the UID is not the same as that friend’s. (is it mine? I don’t know!) :slight_smile:

This falls into the category of “interesting”… I’ll have a look at the code today.

FWIW, it always showed my info back to me…

Thanks for the update! The change log shows major advancement and it is nice to see an app being developed with such intensity.

Since we’re talking about the details, I thought I’d bring up a couple of things.

1.) Main menu → About Whisperfish → “Do not ever contact the Signal developers about a Whisperfish issue, contact us instead!.” There is either an extra dot or exclamation mark.

2.) When user installs Whisperfish for the first time, the main view shows the text “Pull down to start a new conversation”. Since it’s not possible to start a new conversation this way, would it make sense to replace that text with something more useful?

2 Likes

@nephros @rubdos: When you go to “Note to self” and to profile from there, do you see your own profile information, or someone elses?

Edit: tuplasuhveli, I thought you also reported this bug, sorry about the ping!

Edit 2: There’s an issue about this now.

I can’t find ‘note to self’, where is that?

It’s the conversation with yourself. You’d need a linked Signal Desktop and having sent a message to yourself using that to get it going.

1 Like

Another one:

If I scroll the conversartion list to the bottom, there is a (second) section called ‘Today’, and it contains three people I have never talked to, but who are in my contacts, and are members if a group I am in.!

That’s a side effect of unindentified sending; the sessions “magically” appear in the list because sessions with them are created in the process of sending such message. The ordering is wrong - that’s a known issue. You can fix the ordering by restarting Whisperfish.

Edit: It also lets you start 1-on-1 conversations with “new” group members with using Whisperfish only, which is quite nice :^)

1 Like

@nephros The issue now has a fix, which it required changes in both Rust and QML code. This means that the “proper” fix won’t be available until the next release, unless you compile it yourself or are willing to dig out the fixed build from CI.

But – As I’m writing this post, there is a hack-fix you can do to fix it temporarily! In Settings.qml line 47 you can increase the number by one in recipientId: 1 and try again, until you find the number that is your own ID. This number should be 1 for everybody, but apparently it is not, and as such we simply can’t rely on it :woozy_face:… If you choose to do that, please report back what the number was – I’m curious to see if anyone has higher than 2 :slight_smile:

Actually, it’s a side effect of the reTOFU implementation. Sessions need to be created to correctly execute some actions against those recipients, and empty sessions get incorrectly listed like that indeed… ENEEDSISSUE.

Yourself has only become a real recipient later on, so that’s why it’s not one. The friend that I see in “my profile” is 1 iirc.

Thanks all for the feedback! :slight_smile:

1 Like

@rubdos verified that the own profile shows up correctly from Note to self conversation, so that’s the easiest workaround is to not use the Settings menu item :slight_smile: I also dropped a note to the opening post Known issues section.

1 Like

After iterating the Id to 10 I see my phone number, but no avatar or name :slight_smile:

Will try the note to self later.

2 Likes

PSA: Signal deprecated another group-related API, which means that group updates and joins will not work. Receiving messages will still work correctly. Gabriel is patching this up, I’ll try to integrate this ASAP in Whisperfish!

Concretely, if you are added to a group, you will see incoming messages, but you will not be able to send any. If a new member joins, they will not receive your messages. You can still use Signal Desktop in the mean time.

2 Likes

Hi everybody!

So, I am writing this here for the record, curious about what might have happened, but let me say first that the issue seems to have solved itself already.

Since yesterday morning, I wasn’t able to send messages to one and just one of my contacts (I have very few, though, and I only messaged with two of them). I tried a few things, like Reset Secure Session, Reset identity key, and nothing seemed to change the situation. Now the issue has disappeared without me actually doing anything in particular, it seems.

As per screenshot, two things are clear:
1- the issue was on my side (when I reverted to Signal Desktop, messages went through);
2- the issue was only with this contact (text #1246 and #1247 were for the other person, and they were flagged as received, as usual).

I have two logs. The first one is from today in the afternoon, when I tried to use the phone again, unsuccessfully. The second one is from a few minutes ago, when suddenly things started working normally.

First:

2023-05-07 16:59:23.126 [WARN] src/sailfishapp.rs:199:int __cpp_closure_14317703314545309294_impl(QmlApplicationHolder* const&)(): Failed to load translator for ("en-GB") Searched "/usr/share/harbour-whisperfish/translations" for "harbour-whisperfish"
2023-05-07 16:59:23.462 [WARN] "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('en_GB', 'localeCollation')"
2023-05-07 16:59:23.463 [WARN] "Failed to configure collation for locale en_GB:  "
2023-05-07 16:59:23.483 [WARN] "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('en_GB', 'localeCollation')"
2023-05-07 16:59:23.483 [WARN] "Failed to configure collation for locale en_GB:  "
2023-05-07 16:59:29.101 [WARN] qml/delegates/SessionDelegate.qml:123:5: QML Connections: Cannot assign to non-existent property "onTypingChanged"
2023-05-07 16:59:29.107 [WARN] qml/delegates/SessionDelegate.qml:123:5: QML Connections: Cannot assign to non-existent property "onTypingChanged"
2023-05-07 16:59:29.709 [WARN] Could not find message with timestamp 2023-05-07 16:11:45.820
2023-05-07 16:59:29.710 [WARN] This probably indicates out-of-order receipt delivery. Please upvote issue #260
2023-05-07 16:59:29.710 [WARN] Could not mark as received!
2023-05-07 16:59:29.710 [WARN] Could not find message with timestamp 2023-05-07 16:10:43.033
2023-05-07 16:59:29.711 [WARN] This probably indicates out-of-order receipt delivery. Please upvote issue #260
2023-05-07 16:59:29.711 [WARN] Could not mark as received!
2023-05-07 16:59:29.766 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:29.786 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:29.803 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:29.814 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:29.819 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:29.823 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:29.829 [ERROR] Error opening envelope: SignalProtocolError(InvalidMessage(Whisper, "decryption failed"))
2023-05-07 16:59:32.176 [WARN] qml/pages/ProfilePage.qml:155:30: Unable to assign [undefined] to QString
2023-05-07 16:59:32.176 [WARN] qml/pages/ProfilePage.qml:169:32: Unable to assign [undefined] to QString
2023-05-07 16:59:32.176 [WARN] qml/pages/ProfilePage.qml:235:23: Unable to assign [undefined] to QString
2023-05-07 16:59:32.176 [WARN] qml/pages/ProfilePage.qml:273:23: Unable to assign [undefined] to QString
2023-05-07 16:59:32.176 [WARN] qml/pages/ProfilePage.qml:319:23: Unable to assign [undefined] to QString
2023-05-07 17:00:53.399 [WARN] qml/pages/ProfilePage.qml:155:30: Unable to assign [undefined] to QString
2023-05-07 17:00:53.399 [WARN] qml/pages/ProfilePage.qml:169:32: Unable to assign [undefined] to QString
2023-05-07 17:00:53.399 [WARN] qml/pages/ProfilePage.qml:235:23: Unable to assign [undefined] to QString
2023-05-07 17:00:53.399 [WARN] qml/pages/ProfilePage.qml:273:23: Unable to assign [undefined] to QString
2023-05-07 17:00:53.399 [WARN] qml/pages/ProfilePage.qml:319:23: Unable to assign [undefined] to QString
2023-05-07 17:02:07.301 [WARN] qml/components/attachment/AttachmentThumbnail.qml:52:onStatusChanged(): thumbnail failed for /home/defaultuser/Pictures/Chum.3.2.256.png

Second (with things working from the first moment):

2023-05-07 18:37:14.861 [WARN] src/sailfishapp.rs:199:int __cpp_closure_14317703314545309294_impl(QmlApplicationHolder* const&)(): Failed to load translator for ("en-GB") Searched "/usr/share/harbour-whisperfish/translations" for "harbour-whisperfish"
2023-05-07 18:37:15.214 [WARN] "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('en_GB', 'localeCollation')"
2023-05-07 18:37:15.214 [WARN] "Failed to configure collation for locale en_GB:  "
2023-05-07 18:37:15.249 [WARN] "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('en_GB', 'localeCollation')"
2023-05-07 18:37:15.249 [WARN] "Failed to configure collation for locale en_GB:  "
2023-05-07 18:37:20.452 [WARN] qml/delegates/SessionDelegate.qml:123:5: QML Connections: Cannot assign to non-existent property "onTypingChanged"
2023-05-07 18:37:20.459 [WARN] qml/delegates/SessionDelegate.qml:123:5: QML Connections: Cannot assign to non-existent property "onTypingChanged"
2023-05-07 18:37:21.153 [WARN] Could not find message with timestamp 2023-05-07 16:44:22.289
2023-05-07 18:37:21.154 [WARN] This probably indicates out-of-order receipt delivery. Please upvote issue #260
2023-05-07 18:37:21.154 [WARN] Could not mark as received!
2023-05-07 18:37:23.111 [WARN] qml/pages/ProfilePage.qml:155:30: Unable to assign [undefined] to QString
2023-05-07 18:37:23.111 [WARN] qml/pages/ProfilePage.qml:169:32: Unable to assign [undefined] to QString
2023-05-07 18:37:23.111 [WARN] qml/pages/ProfilePage.qml:235:23: Unable to assign [undefined] to QString
2023-05-07 18:37:23.111 [WARN] qml/pages/ProfilePage.qml:273:23: Unable to assign [undefined] to QString
2023-05-07 18:37:23.111 [WARN] qml/pages/ProfilePage.qml:319:23: Unable to assign [undefined] to QString
2023-05-07 18:37:25.466 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:37:29.162 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:37:29.173 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:37:30.002 [WARN] Empty envelope
2023-05-07 18:37:45.610 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:37:45.711 [WARN] Could not find message with timestamp 2023-05-07 18:37:44.669
2023-05-07 18:37:45.711 [WARN] This probably indicates out-of-order receipt delivery. Please upvote issue #260
2023-05-07 18:37:45.712 [WARN] Empty envelope
2023-05-07 18:38:59.415 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:38:59.532 [WARN] Empty envelope
2023-05-07 18:39:04.505 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:04.583 [WARN] Empty envelope
2023-05-07 18:39:05.635 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:05.783 [WARN] Empty envelope
2023-05-07 18:39:11.359 [WARN] Empty envelope
2023-05-07 18:39:11.389 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:11.400 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:14.476 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:14.621 [WARN] Empty envelope
2023-05-07 18:39:19.062 [WARN] Empty envelope
2023-05-07 18:39:19.093 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:19.103 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:22.254 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:22.403 [WARN] Empty envelope
2023-05-07 18:39:27.218 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:27.296 [WARN] Empty envelope
2023-05-07 18:39:29.061 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:29.139 [WARN] Empty envelope
2023-05-07 18:39:33.837 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:33.916 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:33.918 [WARN] Empty envelope
2023-05-07 18:39:34.061 [WARN] Empty envelope
2023-05-07 18:39:39.089 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:39.231 [WARN] Empty envelope
2023-05-07 18:39:39.307 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:39.386 [WARN] Empty envelope
2023-05-07 18:39:44.379 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:44.457 [WARN] Empty envelope
2023-05-07 18:39:48.561 [WARN] Empty envelope
2023-05-07 18:39:48.604 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:48.616 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:50.109 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:50.227 [WARN] Empty envelope
2023-05-07 18:39:55.161 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:55.227 [WARN] Empty envelope
2023-05-07 18:39:55.391 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:39:55.497 [WARN] Empty envelope
2023-05-07 18:40:00.211 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:40:00.358 [WARN] Empty envelope
2023-05-07 18:40:02.385 [WARN] Empty envelope
2023-05-07 18:40:02.492 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:40:02.505 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:40:08.931 [ERROR] SignalWebSocket: Websocket error: SignalWebSocket: end of application request stream; socket closing
2023-05-07 18:40:09.078 [WARN] Could not find message with timestamp 2023-05-07 18:40:07.999
2023-05-07 18:40:09.078 [WARN] This probably indicates out-of-order receipt delivery. Please upvote issue #260
2023-05-07 18:40:09.079 [WARN] Empty envelope

If anyone has an explanation, thanks! If not, thanks anyway!

2 Likes

Okay, so I might have found out something: update Signal Desktop!

I have not an actual answer, but it might be that my issues were related to this (specifically: “Signal enforces this mode of delivery since a few months, and they’ve put a rate limiter on the old method”), and to a connected issue with Signal Desktop not having been updated (hence not enforcing sealed sending, I gather).

Unfortunately, my sealed sending mode in my profile is still “Unknown”; but it was “Disabled” previously, and all of my debug-mode text-bubble tiny locks are green, now. So, that is progress, I would say.

IIRC, sealed sending is not needed and actually not used for sync and for sending messages to yourself. I always have to double check this, however. But indeed: keep SD up-to-date!

Today in an Open Repos near you:

Whisperfish 0.6.0-beta.18

Fixes group updating, since Signal changed their API calls, first steps toward PNI support

Changes

  • Database refactoring, phone numbers and UUID are now strong types
  • Fixes a hang on unregistered startup
  • Fix group update API calls
  • Show roles of group members
  • Graceful handling of ^C
  • Show translation contributors in About.qml, automatically update the About.qml page
  • Fix self-recipient bugs
  • Reset page stack when closing in daemon mode
  • Add PNI column to recipient (currently unused)
  • Fetch self-PNI
  • Fix archive/pinned UI bugs
  • Fix profile image display when clicking notifications for groups
  • Fixes related to message notification counter
  • Split storage module into separate crate, preparation for more refactoring
  • Show the profile picture in the sharing dialog
  • Fix RTL support in cover
  • Fix detail attachment display for non-image/video attachments
  • Fix the “show more” tag placement for long text messages
  • Many small fixes
10 Likes