Planet Jabber

Monal IM: Mac Catalyst delayed in the Appstore.. it’s blocking the keychain

3 hours 2 minutes ago

It seems that the mac app store is currently blocking the use of the keychain as a non public api. It’s clearly a bug because this has worked fine for a decade and until yesterday there were no issues. Until they resolve this, i can’t upload new catalyst builds — including the one intended for the appstore

ITMS-90338: Non-public API usage – The app references non-public symbols in Contents/Frameworks/SAMKeychain.framework/Versions/A/SAMKeychain: _SecItemAdd, _SecItemCopyMatching, _SecItemDelete, _SecItemUpdate, _kSecAttrAccessible, _kSecAttrAccount, _kSecAttrLabel, _kSecAttrService, _kSecAttrSynchronizableAny, _kSecClass, _kSecMatchLimit, _kSecMatchLimitAll, _kSecMatchLimitOne, _kSecReturnAttributes, _kSecReturnData, _kSecValueData,


Monal IM: Removing Google talk

10 hours 3 minutes ago

I am planning to remove Google talk support from 4.4 onwards for Mac and iOS. Its an sad milestone because Google talk was why I made Monal in 2008. However, given google themselves have deprecated it twice and even its replacement google chat has been deprecated, it seems increasingly less important. Additionally, the fact that it does not support any modern xmpp specs and doesn’t work with push means it is barely usable in current versions of Monal. I don’t track user stats but I suspect everyone who used to use this for google has moved on to other clients or slack.

If you *REALLY* need Google talk the legacy mac client will still be around for a little bit.


Monal IM: New Mac and iOS beta bre updated

16 hours 25 minutes ago

There was a bug in last nights iOS and Mac builds that caused it to crash on group chats. I have updated both clients now. I have also linked the old file to the catalyst version. Catalyst is the mac client now. This should allow brew users to get it as well. Unlike the old Monal for mac, the new one is sandboxed, hardened runtime and notarized.


Monal IM: XMPP is weird

1 day 2 hours ago

There are many weird things about xmpp. The contact approval system and the need to approve a contact to send encrypted messages is probably one of the best examples. A lot of OMEMO issues can probably be traced to your contacts subscription either being to, from or none. Those words alone don’t make much sense so I have added some “debugging” text for users in contact details.


Monal IM: Monal iOS is available in France

1 day 12 hours ago

Monal 4.3 if out for iOS. Mac os will come soon. It’s taking longer because it is treated as a new app. I am leaving the other mac app in the app store for older macs. This change in 4.3 also means it is now available in france.

On a related note the first build of 4.4 for Mac is in beta. This has some fixes for message duplication as well as OMEMO device and key discovery. iOS will come soon.


ProcessOne: ejabberd on macOS with Homebrew package manager

1 day 17 hours ago

Homebrew is now the de facto package manager for open source software on macOS. Thus, we have discontinued our macOS binary installer to focus on improving further ejabberd experience on macOS by polishing Homebrew ejabberd package.

We recently updated ejabberd on Homebrew and we will keep it in sync with ejabberd official releases. As of today, if you install ejabberd with Homebrew, you will always get the latest release.

If you have any suggestion on how to make ejabberd with Homebrew experience better, please open a Github issues, with the tag Packaging:Homebrew.

We have not yet tested it with Homebrew on Linux or on WSL, but still, pleae submit issues if you find some.

Here is the cheat sheet regarding ejabberd management with Homebrew.

Installing ejabberd

The following command will install ejabberd and its dependencies:

$ brew install ejabberd Starting ejabberd and launching it on macOS start brew services start ejabberd Starting ejabberd

Alternatively, the following command start ejabberd in background, with trying to restart it automatically after reboot:

$ /usr/local/sbin/ejabberdctl start

You can check the status with the command:

$ /usr/local/sbin/ejabberdctl status The node ejabberd@localhost is started with status: started ejabberd 20.01 is running in that node

If ejabberd is not running the status command will display a nodedown error:

$ /usr/local/sbin/ejabberdctl status Failed RPC connection to the node ejabberd@localhost: nodedown Commands to start an ejabberd node: start Start an ejabberd node in server mode debug Attach an interactive Erlang shell to a running ejabberd node iexdebug Attach an interactive Elixir shell to a running ejabberd node live Start an ejabberd node in live (interactive) mode iexlive Start an ejabberd node in live (interactive) mode, within an Elixir shell foreground Start an ejabberd node in server mode (attached) Optional parameters when starting an ejabberd node: --config-dir dir Config ejabberd: /usr/local/etc/ejabberd --config file Config ejabberd: /usr/local/etc/ejabberd/ejabberd.yml --ctl-config file Config ejabberdctl: /usr/local/etc/ejabberd/ejabberdctl.cfg --logs dir Directory for logs: /usr/local/var/log/ejabberd --spool dir Database spool dir: /usr/local/var/lib/ejabberd --node nodename ejabberd node name: ejabberd@localhost Stopping ejabberd /usr/local/sbin/ejabberdctl stop Configuration file

To change the configuration file, you can edit /usr/local/etc/ejabberd/ejabberd.yml

If you have upgraded ejabberd and want to apply possible change to config file, you can check the new ejabberd.yml default file ejabberd.yml-new in the same directory.

Checking the logs

To troubleshoot ejabberd, you can check the logs in the directory /usr/local/var/log/ejabberd/

Mickaël Rémond

Tigase Blog: BeagleIM 3.6 and SiskinIM 5.6 released

2 days 17 hours ago

New versions of XMPP clients for Apple’s mobile and desktop platforms have been released.

Common changes
  • Improve DNS SRV resolver reliability
  • Added support for preauthenticated subscriptions and registration
  • Improve bookmarks support (Workaround for buggy PEP implementation in some servers)
  • Added conditional support for sending files for which HTTP File Upload server returned code 200
BeagleIM 3.6

The stable release of BeagleIM 3.6 contains the following changes

  • Fixed an issue with VCard editing
  • Fixed count of unread messages after restart of the app
  • Prepend groupchat items in chats list with sender nickname of last message
  • Minor changes to displaying subject of MUC room
  • Fixed crash on emoji in input field in MUC rooms
  • Fixed a crash while searching the messages
SiskinIM 5.6

The stable release of SiskinIM 5.6 contains the following changes:

  • Add QR code for accounts
  • Fixed an issue with files not being encrypted when only global encryption is enabled
  • Improved support for handling XMPP URI and account handling
  • Enable file transfer button and ask user for consent if he was not asked yet
  • Fixed crash related to keyboard animation
  • Fixed crash when rows are disappearing from the screen
  • Fixed crashes on iOS 11
  • Fixed a crash within roster view

You can download both application from their respective app-stores: Beagle IM from macOS appstore and Siskin IM from iOS appstore and star them on GitHub: Siskin IM on GitHub and Beagle IM on GitHub

Jérôme Poisson: SàT progress note 2020-W08

2 days 19 hours ago

Hello everybody,

it's been a while since the last progress note, that's because I have very little free time at the moment, and I use it to code instead of writing blog posts.

So I'll try to summarize the last weeks progress without going too much into details.

Continuing my work on improving Cagou usability, I've added a panel which shows open chat rooms, all your contacts, and bookmarks. It was necessary to have a way to select easily a contact or room, as so far you had to enter part of the name and count on autocompletion. So now, by default you land into a screen showing you icons of contacts/rooms, and you just have to click on them.

In chat mode with Cagou, you can slide between open discussions without having to go back and forth in the menu. The order in which you do the slide correspond to the order in which icons appears in the "chat selection" panel. They are sorted by alphabetical order for the moment, but it will be easy to add other way to sort, for instance by time of last received message.

I've added a notification counter, so you know immediately where somebody has talked to you.

For now the icons are arranged in a grid, but it may be possible to add other layouts in the future, like showing the chats entities in a list (which would give more room to display extra data like the last message).

On Android, opening a system notification for a chat message now opens the right chat widget in Cagou.

I've also improved session reopening: when the frontend is closed on Android, the last connected profile will be reconnected automatically, as well as the last selected mode. This was also the occasion to implement profile auto connection on backend startup, which is particularly useful for components.

I had to fix SRV records handling on Android: this platform doesn't use /etc/resolv.conf which Twisted expects, and finding the DNS servers used is not trivial. Thanks to some hints I've found (notably here), I could implement a decent solution to work around that and make SRV records looking work.

On desktop, I've removed the main top menu, as it is redundant with features available elsewhere. Instead there is a new "extra" button in mode selector, which open a side menu (this is how you open the "about" screen for instance).

There have been also a bunch of improvements like logging the path of parsed config file(s), the implementation of a stable resource instead of the one given by server (something like sat.[ID]), the handling of runtime permissions on Android, a better management of header's input in Cagou, many bug fixes, etc. I won't enumerate everything, this note is to have a global overview of the work done or in progress, the direction taken, and the reasons behind some decisions.

I'm currently finishing the handling of file attachments in chats, I will then move on Libervia.

That's all for today.


Monal IM: Expect to see 4.3 this week

3 days 1 hour ago

Monal 4.3 will be in the app store this week. In conjunction with that I have updated the home page to reflect the app as it is going to be. Needless to say the front page is very non technical. On a related note, I now remember how making accurate screenshots for every iOS supported device, iPad and Mac is incredibly tedious. There is a reason I don’t do dramatic UI updates like this every day.


Monal IM: Mac and iOS: improving error handling

4 days 2 hours ago

As we march along to a release, I have added better error handling in the mac and iOS client. A lot of this is focused on OMEMO. The most recent update today includes these changes in addition to fixes to sending/receiving aesgcm images. In the new error messages I have tried my best to provide some debugging info or some action that could be taken to potentially resolve this issue. It also lets me know in user feedback where an error in Monal my be.

If someone sends a 16 byte iv message this is what you will see:

Encrypted message was sent in an older format Monal can’t decrypt. Please ask them to update their client. (GCM error)

If the key was decrypted but an error was returned by lib signal:

There was an error decrypting this encrypted message (Signal error). To resolve this, try sending an encrypted message to this person.

If the message was not encrypted for this device it would be nice ot know what this device meant for the other party to verify:

Message was not encrypted for this device. Please make sure the sender trusts deviceid 123456 and that they have you as a contact.


Paul Schaub: Smack: Some more busy nights and 12 bytes of IV

4 days 5 hours ago

In the last months I stayed up late some nights, so I decided to add some additional features to Smack.

Among the additions is support for some new XEPs, namely:

I also started working on an implementation of XEP-0245: Message Moderation, but that one is not yet finished and needs more work.

Direct MUC invitations are a method to invite users to a group chat. Smack already had support for another similar mechanism, but this one is recommended by the XMPP Compliance Suites 2020.

Message Fastening is a generalized mechanism to add information to messages. That might be a reaction, eg. a thumbs up which is added to a previous message.

Message Retraction is used to retract previously sent messages. Internally it is based on Message Fastening.

The Stanza Content Encryption pull request only teaches Smack what SCE elements are, but it doesn’t yet teach it how to use them. That is partly due to no E2EE specification actually using them yet. That will hopefully change soon

Anu brought up the fact that the OMEMO XEP is not totally clear on the length of initialization vectors used for message encryption. Historically most clients use 16 bytes length, while normally you would want to use 12. Apparently some AES-GCM libraries on iOS only support 12 bytes length, so using 12 bytes is definitely desirable. Most OMEMO implementations already support receiving 12 bytes as well as 16 bytes IV.

That’s why Smack will soon also start sending OMEMO messages with 12 bytes IV.


Profanity: Last Message Correction

6 days 19 hours ago

From 10th to 14th February 2020 we had Hackweek 19 at SUSE. Part of that time I used to finally implement the long (since 2016!) sought after Last Message Correction feature, aka XEP-0308.

See my Hackweek project and the corresponding pull request.


To enable incoming and outgoing corrections users need to enable it with /correction on, see /help correction for more details.

Now we write a message to a friend /msg Martin Hey therr!.

Ouch! Already a typo.

Let’s make this right: /corr<TAB> <TAB> will autocomplete to /correct Hey therr! which then can easily be fixed and re-send.


The feature is only available in the development version of Profanity. In the master branch on git. So it’s not yet ready for release.

Master branch corresponds always to our development and doesn’t guarantee anything. It’s where we develop test and experiment. We write these blogposts from time to time to inform our users and sponsors about what we are currently working on.

The LMC feature is in there. But for the correct behaviour we need to rewrite the UI code. We could hack a ‘from’ field in but we want to think more carefully how to implement it nicely. For this reason in the current state we don’t check the ‘from’ attribute of the sender. Because at the time of drawing so far we don’t have this information.

Since LMC is off by default noone is at harm. But people who choose to enable it need to be aware that in theory it would be possible for other users to send special messages where they could “correct” a message of someone else. We think the damage and likeliness from this is quite low. And once again, this is only in our development version of Profanity.