Whisperfish - The unofficial SailfishOS Signal client

It doesn’t install, and it doesn’t have SailJail compatibility. I should be able to get the next version out on Saturday, which will also include a workaround for registration and a whole bunch of other good stuff.

8 Likes

That is great news, thank you!

Thank you. Just wanted to mention that the upgrade to 4.4 on an XA2+ requested the removal of wisperfish. I did not upgrade because of it haha ;-p

ah good, looking forward to it! <3

love to hear that !
thanks !

then the only remaining android app is: deezer :slight_smile:

Here we go; :tada: beta 8! Whisperfish is still :warning: beta software :warning: . It is known to eat messages :incoming_envelope: , batteries :battery: (but that should be fixed now) , and sometimes even your contacts :frowning_woman: (not really) ! Hedge yourself against these: install Signal Desktop and link it with Whisperfish.

In this version, we fix compatibility with the upcoming SailfishOS 4.4:

  • Introduce SailJail compatibility
  • Isolate the share plugin

We also introduce a quite involved workaround for registration of new accounts. There’s a diamond dependency :diamonds: problem revolving around libsqlite3, libsqlcipher and libmozembed which has caused me, @gamag and @direc85 countless headaches :exploding_head: , and because we’re getting quite sick of it, there’s now a workaround. Find it here:

Apart from these two very anticipated features, there’s a whole lot of new goodies. Please find the whole changelog :newspaper: on OpenRepos. Among them are a whole bunch of QoL improvements, and many of those are thanks to @direc85! Thanks, Matti, for helping with this release! If you like my work or Matti’s work, feel free to get me or direc85 a coffee :coffee:.

In very relevant great news, my Cargo :package: SB2 patch was recently merged. This means that the upstream Sailfish application SDK will soon be able to compile Whisperfish and Taak without any patched and manually installed compilers. I expect that this will hit when the SDK targets 4.5, and this will drastically improve the situation for potential new contributors.


Normally, the new version will appear over the next hours on OpenRepos. I have to go play chess now, I’ll check again in the evening.

8 Likes

Very excited that registration is working again! I cannot, however, get Whisperfish to recognise my number as valid. When I type it in using the +xx prefix, the Phone number section turns red and an exclamation mark appears at the end of the line. If I remove the +, the red goes away, but I’m unable to click continue at the bottom under any circumstance.

1 Like

Which means I can take a crack at librespot! yeah! or try to talk @direc85 into it :slight_smile:

2 Likes

I can’t wait to use the new version, but the login did not work on my device. Whisperfish crashes as soon as I enter the phone number and press next. The output on the shell is:

[defaultuser@Xperia10II-DualSIM ~]$ harbour-whisperfish 
[D] unknown:0 - Using Wayland-EGL
library "libGLESv2_adreno.so" not found
library "eglSubDriverAndroid.so" not found
[W] unknown:0 - "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('de_DE', 'localeCollation')"
[W] unknown:0 - "Failed to configure collation for locale de_DE:  "
[W] unknown:0 - "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('de_DE', 'localeCollation')"
[W] unknown:0 - "Failed to configure collation for locale de_DE:  "
[W] unknown:0 - "Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn't exist"
[W] unknown:0 - "Failed to open contacts transient store"
[W] unknown:0 - "Unable to open synchronous engine database connection"
[W] unknown:0 - QSqlQuery::prepare: database not open
[W] unknown:0 - "Failed to prepare distinct display label group selection query:  \n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC"
[D] unknown:0 - Starting favorites query at 344 ms
[D] unknown:0 - Favorites queried in 504 ms
[D] unknown:0 - Starting metadata query at 640 ms
[D] unknown:0 - All queried in 661 ms
greHome from GRE_HOME:/usr/bin
libxul.so is not found, in /usr/bin/libxul.so
Created LOG for EmbedLiteTrace
Created LOG for EmbedLite

I searched for libxul.so found on match in /usr/lib64/xulrunner-qt5-78.15.1/libxul.so and symlinked it to /usr/bin/libxul.so but that did not help either:

[defaultuser@Xperia10II-DualSIM bin]$ harbour-whisperfish 
[D] unknown:0 - Using Wayland-EGL
library "libGLESv2_adreno.so" not found
library "eglSubDriverAndroid.so" not found
[W] unknown:0 - "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('de_DE', 'localeCollation')"
[W] unknown:0 - "Failed to configure collation for locale de_DE:  "
[W] unknown:0 - "Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation('de_DE', 'localeCollation')"
[W] unknown:0 - "Failed to configure collation for locale de_DE:  "
[W] unknown:0 - "Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn't exist"
[W] unknown:0 - "Failed to open contacts transient store"
[W] unknown:0 - "Unable to open synchronous engine database connection"
[W] unknown:0 - QSqlQuery::prepare: database not open
[W] unknown:0 - "Failed to prepare distinct display label group selection query:  \n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC"
[D] unknown:0 - Starting favorites query at 328 ms
[D] unknown:0 - Favorites queried in 456 ms
[D] unknown:0 - Starting metadata query at 631 ms
[D] unknown:0 - All queried in 662 ms
greHome from GRE_HOME:/usr/bin
Couldn't load XPCOM from /usr/bin/libxul.so
[F] unknown:0 - ASSERT failure in QMozContextPrivate::QMozContextPrivate(QObject*): "Failed load XPCOMGlue", file qmozcontext.cpp, line 67
Redirecting call to abort() to mozalloc_abort

Segmentation fault (core dumped)

Any idea what could cause the problem?

Left of the phone number field is a country selector. You have use that to select the prefix. Then enter the phone number in the field without country code or leading zero.

The registration workaround works in a very specific series of steps. See the link in the beta.8 release notes post. I just tried the steps on my XA2 on SFOS 4.4 EA and can confirm it works :slightly_smiling_face:

2 Likes

I can’t figure out clearly one thing:
Does WF have access to the all contacts automaticly (still on 4.3.0.15)?
Thank you

Oh, I completely missed that link to the wiki as I thought I just have to log in, but since it’s a new flashed device it has to be registered first.

First I had the problem, that the signalcaptcha URL did not show up at all, maybe because I’ve installed signal on the computer? It did open signal and nothing was logged in the dev tools. I could force to open the URL with Firefox, so the URL will show up in the address bar.

If I use this URL with the instructions on the wiki, I’m running into the following error:

[2022-03-27T12:37:13Z INFO  harbour_whisperfish::worker::setup] Using override captcha signalcaptcha://signal-recaptcha-v2.6LfBXs0bAAAAAAjkDyyI1Lk5gBAUWfhI_bIyox5W.registration.03AGdBq25x0Le-t9KdcABF91O5Is3Wo7LV54g_tCySJmG-8nUKOK5GAylyIcwySR3INiyD7_Ffz6JsjzjieAWYcPZRyprodDZaIX6S5wSK7I7m4NJpWnpDR_p6eKdtirIf7grc8Iu8KJFNnFqrLMGrcxTcej4J27Bk3FgBtGQrvmeQk8IbW3cP5G8v0AG2-jJJKtgdl32FlTg-b4eTfIVRraix1IkW8Ea6vDQCcGO4jTXzbGdIxivUVtDkRlGy2StTKTxTP97SyZpGgYofhri3XniemYK05gRWn_HIAU9ULX1x8VIPD726raT79sCMOlWJYhmeRSL6YWgU3Pa-E71xlo0VwSCry0v68KKsNIgJS1Sasuhupes8wUXM2gA1gG5IZAYXd6404fGH27yOc48i2GqIRvSPUDmXK4C3MFqG-B8OQ4QvLdYhYcrsBOKoXGgUNuIAGolStkOU4E20P2wR0Z05UxHUMMD-ydxY0QPmCKfmfQKxA8mpb-2pl0gg0Gt4ph5cnWSs077hzh2qGbojrO-OlTCzGzvR3zsV7huLQNuWQQq3__lbpvbksthbPu49W2ZWdUu6E05jdbCjK8K1mQc-zX7UUVdRW0R1wS3usizyDsWYoP_mlIeJcn7412agfCgef9n46BOZsbPCSaP2JeIgeCq7I_UzF0rFCIIJc2G8GVlq0Sgtj34Z54ujNNKBMxc2KYylWuZ9w6VYxj9swVCnTAnAmLWCCa_yM0zjvuoLUCHQtYMj6WVkIqgLt_BkXLGJX4LHta7Ur-0OO2CVNkFy-bMwB-D77GIiHC4DVY5gaaXJoim6ce_TcT5_o39Ko-yJ7JUhhisnLZJ7pQJeccdP2NJv1MVF0elkSqtOstxqbos9UglgxMyx
[2022-03-27T12:37:13Z DEBUG libsignal_service_actix::push_service] HTTP request GET https://chat.signal.org/v1/accounts/sms/code/+491600000000?captcha=signal-recaptcha-v2.6LfBXs0bAAAAAAjkDyyI1Lk5gBAUWfhI_bIyox5W.registration.03AGdBq25x0Le-t9KdcABF91O5Is3Wo7LV54g_tCySJmG-8nUKOK5GAylyIcwySR3INiyD7_Ffz6JsjzjieAWYcPZRyprodDZaIX6S5wSK7I7m4NJpWnpDR_p6eKdtirIf7grc8Iu8KJFNnFqrLMGrcxTcej4J27Bk3FgBtGQrvmeQk8IbW3cP5G8v0AG2-jJJKtgdl32FlTg-b4eTfIVRraix1IkW8Ea6vDQCcGO4jTXzbGdIxivUVtDkRlGy2StTKTxTP97SyZpGgYofhri3XniemYK05gRWn_HIAU9ULX1x8VIPD726raT79sCMOlWJYhmeRSL6YWgU3Pa-E71xlo0VwSCry0v68KKsNIgJS1Sasuhupes8wUXM2gA1gG5IZAYXd6404fGH27yOc48i2GqIRvSPUDmXK4C3MFqG-B8OQ4QvLdYhYcrsBOKoXGgUNuIAGolStkOU4E20P2wR0Z05UxHUMMD-ydxY0QPmCKfmfQKxA8mpb-2pl0gg0Gt4ph5cnWSs077hzh2qGbojrO-OlTCzGzvR3zsV7huLQNuWQQq3__lbpvbksthbPu49W2ZWdUu6E05jdbCjK8K1mQc-zX7UUVdRW0R1wS3usizyDsWYoP_mlIeJcn7412agfCgef9n46BOZsbPCSaP2JeIgeCq7I_UzF0rFCIIJc2G8GVlq0Sgtj34Z54ujNNKBMxc2KYylWuZ9w6VYxj9swVCnTAnAmLWCCa_yM0zjvuoLUCHQtYMj6WVkIqgLt_BkXLGJX4LHta7Ur-0OO2CVNkFy-bMwB-D77GIiHC4DVY5gaaXJoim6ce_TcT5_o39Ko-yJ7JUhhisnLZJ7pQJeccdP2NJv1MVF0elkSqtOstxqbos9UglgxMyx
[2022-03-27T12:37:14Z DEBUG libsignal_service_actix::push_service] AwcPushService::get response: 
    ClientResponse HTTP/1.1 402 Payment Required
      headers:
        "content-type": "text/html;charset=iso-8859-1"
        "x-signal-timestamp": "1648384634135"
        "content-length": "418"
        "date": "Sun, 27 Mar 2022 12:37:14 GMT"
        "connection": "keep-alive"
        "cache-control": "must-revalidate,no-cache,no-store"
    
[2022-03-27T12:37:14Z TRACE libsignal_service_actix::push_service] Unhandled response with body: Ok(b"<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\"/>\n<title>Error 402 Payment Required</title>\n</head>\n<body><h2>HTTP ERROR 402 Payment Required</h2>\n<table>\n<tr><th>URI:</th><td>/v1/accounts/sms/code/+491600000000</td></tr>\n<tr><th>STATUS:</th><td>402</td></tr>\n<tr><th>MESSAGE:</th><td>Payment Required</td></tr>\n<tr><th>SERVLET:</th><td>jersey</td></tr>\n</table>\n\n</body>\n</html>\n")
greHome from GRE_HOME:/usr/bin
libxul.so is not found, in /usr/bin/libxul.so

(I’ve replaced my phone number with zeros)

“402 Payment Required” seems unexpected for me and I have no idea how to deal with that.

“Payment required” is what signal says when the captcha is either empty or wrong. Give it a few retries, and if you don’t seem to get it to work, come and have a chat on the Matrix or IRC channel!

Yes, Whisperfish accesses your contacts automatically for displaying names instead of phone numbers. They are not yet synchronised, nor are they queried against or stored in the Signal bloom filter for searching contacts that are also on Signal.

1 Like

As an example, @sunburnedpenguin, my number is +32474… , so I select Belgium (by tapping on the +xx and searching +32), and then continue with 474…
There’s a known crash when you add another leading zero, so don’t enter in national format.

thank you very much !!
i can confirm that it works, the how-to is however missleading.
you say copy without quotations and in the next line you have ‘’
so it seems you need the quotations, which of course you don’t
i would remove them in step 6:
Via SSH, run harbour-whisperfish --verbose --captcha '<THE URL HERE>'

Currently, that would probably be fine, but if Signal changes the format to contain some weird characters, it could mess that up. The single quotes shouldn’t matter. Nesting quotes, however, would matter, and that’s why I had written “copy without quotes”.

A little side note for anyone trying to catch the captha url on firefox console. I had to enable ‘persist logs’ from the settings cog within the console, otherwise I could not see the url required.
Thanks for all the hardwork on whisperfish!

I’m a bit embarrassed – I didn’t notice that the “+xx” could be interacted with!

The remaining hurdle is that it appears the Sailfish console will only allow me to paste a portion of the URL, not the whole thing. It pastes fine locally, but when I paste it into the SSH session, Sailfish truncates it and won’t allow me to add any additional characters. If I try to use a single quote and paste it in two chunks before closing with a trailing single quote character, it still fails (number masked) even though it does appear to attempt to start Whisperfish using the full URL:

[defaultuser@Xperia10Plus-DualSIM ~]$ harbour-whisperfish --verbose --captcha ’

signalcaptcha://signal-recaptcha-v2.6LfBXs0bAAAAAAjkDyyI1Lk5gBAUWfhI_bIyox5W.r
egistration.03AGdBq24SJUIXoj0DI0zDlOjJ2bI4g8s1lywegvtrxAw1HZQjNMvxxxAZIQ62KLXxBe
uKenalOx2J7_MYCppKNQQ7OPsJEHLmeLqcx4-63U4wj5gmgf9Lt2VR4TMu4JASt7PuTBGl7Aq8DMw0uS
5_8PvOFvtIc0GXup1hk0KTVk3dR3j5B4_sodIqnC5BRUOWlvBUVYCEvSppaD5bVUFmznhEgSusikYYUR
KkmxXZSx36gtecmXSkkl8lFm-b-Cy2tAZ7Qc30heuyL1NdUEdQSuuYI811t7OBS2Vvuo0Ewy-vCrSDoV
0nUfkawyg94jqd1KpxrbttNPGd1sbhYfCmXvO1aLKXf9c1QfPlcSfB_QkJYOtBcbOZs-1VCFoHs1qw5G
ilTkW2oQB9rUQO4wsWTwuD-vv9x_B76WAhpAeIu-o1LlAWwuHhas9ltpFTE-_c67BquagNWhXu-5FLcA
RFyV50DEWdxr8YGz1Wy8Zj3MOebavuTgAnBFt405W54Bh6Zd7hoNS6TaZKUmj7JYlKL1TT-VceuYly_V
SROmSIIvq_U_D_Cot8ZyV4GppNrPboQ4x97QBbZU8mnMtuK4I_MVLm70Ggq7EPCCbWkQEwVtXDXsqBwZ
oAHlLrxT5cSP4bXa-i-CjM90h-mv4mqmJ1kFE6qn1UaAGfPxcoNxElNy-tRtMmaW3A_3NAdgbL-stHS7
MnHcL2pCSpZ3wcJcj4jSAbqqFMSeQ86Dpkia0l8My64Dl4-6C4YnzDkmH
-rYQP0KKYPkoRp-uB4Wt6Tcnf6AIDBUCu2mO2JKDC1QfbdmqhIfCYnlF1EECLEqI_elOJ0QlP6MEGN
sNuR_O-2BmWezzifRab9DQYMlybvwIFtb-22eYLNLxdzHFFe-dtWppOXdnpJsNts9mrg3MTzDLkNJ_4h
rWguxStRsatUCoXHc4GJce0WqrNVj6xBQyIbXTDyXnfmo89AvNyBjxFSqEqnU5zq—FYVaaYfEw_BX7
7N1MF1gFHVJI7ev1pSy0YQVEmju7MueVO0ruqtdmtscVT-GnJ4UZnxrn9r71MEJyhIsKKDzU9zGbhFyr
umuuBeIkTL9Z3IUTbb1ikcfLih36MIv2lf1svLRdJegilp5vOKns2CwSEoFBFIWhaWIN5ZXoRJEbM7sQ
MHDriU-hmlPloGF6gSbxxeTTw
’
[2022-03-28T05:04:20Z INFO harbour_whisperfish] Start main app (with autostart = false)
[D] unknown:0 - Using Wayland-EGL
[2022-03-28T05:04:21Z INFO harbour_whisperfish::gui] QmlApp::application loaded - version v0.6.0-beta.8
[W] __cpp_closure_14317703314545309294_impl:182 - Failed to load translator for (“en-GB”) Searched “/usr/share/harbour-whisperfish/translations” for “harbour-whisperfish”
[W] unknown:0 - “Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation(‘en_GB’, ‘localeCollation’)”
[W] unknown:0 - "Failed to configure collation for locale en_GB: "
[W] unknown:0 - “Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation(‘en_GB’, ‘localeCollation’)”
[W] unknown:0 - "Failed to configure collation for locale en_GB: "
[W] unknown:0 - “Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn’t exist”
[W] unknown:0 - “Failed to open contacts transient store”
[W] unknown:0 - “Unable to open synchronous engine database connection”
[W] unknown:0 - QSqlQuery::prepare: database not open
[W] unknown:0 - “Failed to prepare distinct display label group selection query: \n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC”
[2022-03-28T05:04:22Z INFO harbour_whisperfish::worker::setup] SetupWorker::run
[2022-03-28T05:04:22Z INFO harbour_whisperfish::worker::setup] identity_key not found
[2022-03-28T05:04:22Z INFO harbour_whisperfish::config::settings] Setting default settings.
[D] unknown:0 - Starting favorites query at 519 ms
[D] unknown:0 - Favorites queried in 627 ms
[D] unknown:0 - Starting metadata query at 737 ms
[D] unknown:0 - All queried in 784 ms
[2022-03-28T05:04:47Z INFO harbour_whisperfish::config::settings] Setting string country_code
[2022-03-28T05:04:48Z INFO harbour_whisperfish::worker::setup] Using phone number: +40XXXXXXXXX
[2022-03-28T05:04:48Z INFO harbour_whisperfish::worker::setup] Using override captcha
signalcaptcha://signal-recaptcha-v2.6LfBXs0bAAAAAAjkDyyI1Lk5gBAUWfhI_bIyox5W.registration.03AGdBq24SJUIXoj0DI0zDlOjJ2bI4g8s1lywegvtrxAw1HZQjNMvxxxAZIQ62KLXxBeuKenalOx2J7_MYCppKNQQ7OPsJEHLmeLqcx4-63U4wj5gmgf9Lt2VR4TMu4JASt7PuTBGl7Aq8DMw0uS5_8PvOFvtIc0GXup1hk0KTVk3dR3j5B4_sodIqnC5BRUOWlvBUVYCEvSppaD5bVUFmznhEgSusikYYURKkmxXZSx36gtecmXSkkl8lFm-b-Cy2tAZ7Qc30heuyL1NdUEdQSuuYI811t7OBS2Vvuo0Ewy-vCrSDoV0nUfkawyg94jqd1KpxrbttNPGd1sbhYfCmXvO1aLKXf9c1QfPlcSfB_QkJYOtBcbOZs-1VCFoHs1qw5GilTkW2oQB9rUQO4wsWTwuD-vv9x_B76WAhpAeIu-o1LlAWwuHhas9ltpFTE-_c67BquagNWhXu-5FLcARFyV50DEWdxr8YGz1Wy8Zj3MOebavuTgAnBFt405W54Bh6Zd7hoNS6TaZKUmj7JYlKL1TT-VceuYly_VSROmSIIvq_U_D_Cot8ZyV4GppNrPboQ4x97QBbZU8mnMtuK4I_MVLm70Ggq7EPCCbWkQEwVtXDXsqBwZoAHlLrxT5cSP4bXa-i-CjM90h-mv4mqmJ1kFE6qn1UaAGfPxcoNxElNy-tRtMmaW3A_3NAdgbL-stHS7MnHcL2pCSpZ3wcJcj4jSAbqqFMSeQ86Dpkia0l8My64Dl4-6C4YnzDkmH
-rYQP0KKYPkoRp-uB4Wt6Tcnf6AIDBUCu2mO2JKDC1QfbdmqhIfCYnlF1EECLEqI_elOJ0QlP6MEGNsNuR_O-2BmWezzifRab9DQYMlybvwIFtb-22eYLNLxdzHFFe-dtWppOXdnpJsNts9mrg3MTzDLkNJ_4hrWguxStRsatUCoXHc4GJce0WqrNVj6xBQyIbXTDyXnfmo89AvNyBjxFSqEqnU5zq—FYVaaYfEw_BX77N1MF1gFHVJI7ev1pSy0YQVEmju7MueVO0ruqtdmtscVT-GnJ4UZnxrn9r71MEJyhIsKKDzU9zGbhFyrumuuBeIkTL9Z3IUTbb1ikcfLih36MIv2lf1svLRdJegilp5vOKns2CwSEoFBFIWhaWIN5ZXoRJEbM7sQMHDriU-hmlPloGF6gSbxxeTTw

[2022-03-28T05:04:48Z DEBUG libsignal_service_actix::push_service] HTTP request GET https://chat.signal.org/v1/accounts/sms/code/+40XXXXXXXXX
[2022-03-28T05:04:49Z DEBUG libsignal_service_actix::push_service] AwcPushService::get response:
ClientResponse HTTP/1.1 402 Payment Required
headers:
“cache-control”: “must-revalidate,no-cache,no-store”
“date”: “Mon, 28 Mar 2022 05:04:49 GMT”
“content-length”: “416”
“content-type”: “text/html;charset=iso-8859-1”
“connection”: “keep-alive”
“x-signal-timestamp”: “1648443889688”

[2022-03-28T05:04:49Z TRACE libsignal_service_actix::push_service] Unhandled response with body: Ok(b"\n\n<meta http-equiv=“Content-Type” content=“text/html;charset=ISO-8859-1”/>\nError 402 Payment Required\n\n

HTTP ERROR 402 Payment Required

\n\n\n\n\n\n
URI: /v1/accounts/sms/code/+40XXXXXXXXX
STATUS: 402
MESSAGE: Payment Required
SERVLET: jersey
\n\n\n\n")
greHome from GRE_HOME:/usr/bin
libxul.so is not found, in /usr/bin/libxul.so
Attempting load of libEGL.so
=============== Preparing offscreen rendering context ===============
[D] onUrlChanged:54 - Url changed to: Signal
[D] onRecvAsyncMessage:61 - embed:contentOrientationChanged
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: https://www.gstatic.com/recaptcha/releases/2uoiJ4hP3NUoP9v_eBNfU6CR/recaptcha__en.js, line 341: Error: grecaptcha.execute only works with invisible reCAPTCHA.
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined

Am I doing something else goofy here?