Coder Social home page Coder Social logo

tigase / beagle-im Goto Github PK

View Code? Open in Web Editor NEW
177.0 177.0 21.0 32.91 MB

(M) XMPP client for macOS based on TigaseSwift XMPP library

License: GNU General Public License v3.0

Swift 99.62% C 0.05% Rich Text Format 0.24% Shell 0.09%
app apple application client homebrew jabber macos omemo osx swift voip xmpp xmpp-client

beagle-im's People

Contributors

arturhefczyc avatar hantu85 avatar mimi89999 avatar neustradamus avatar sevan avatar woj-tek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beagle-im's Issues

OMEMO keys for other devices

Describe the bug
There is a field in the account settings that's supposed to get fingerprints of keys from other devices, but it doesn't seem to populate.

To Reproduce
Steps to reproduce the behavior:

  1. Connect using another device
  2. Go to your account parameters
  3. Check the OMEMO tab
  4. See the empty field with the gear icon not doing anything

Expected behavior
The OMEMO keys get automatically populated or at least there is a way to add them manually.

Screenshots
Screenshot 2019-09-11 at 17 18 45

Desktop (please complete the following information):

  • macOS 10.14.6 (18G95)

Additional context
I don't know what I'm doing still.

CMD-Backspace should delete line, not close chat.

Describe the bug
CMD-Backspace should delete line, not close chat. It is a common idiom on macOS to delete the current line of text. BeagleIM should use CMD-w to close the current chat, not CMD-Backspace.

To Reproduce

  1. Enter a few words in a chat window
  2. press aforementioned key combination.

Expected behavior
I expected that the text in entered disappeared.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: maOS 10.15.3
  • Browser [e.g. chrome, safari]
  • Version 3.6 [77]

Different font formatting in sidebar and chat window

Hi!

There seems to be a formatting issue in the sidebar when there are special chars occurring in chat window.
See screenshots:
Bildschirmfoto 2020-07-19 um 21 57 32
Bildschirmfoto 2020-07-19 um 21 57 44
Bildschirmfoto 2020-07-19 um 21 58 02

Text is:

I do this:
`git pull && ./autogen.sh && make update && ./configure --enable-new-sql-schema --enable-pgsql --enable-sip --enable-stun --enable-user=ejabberd --enable-group=ejabberd --prefix=/usr/local && make -j $(nproc)`
_(adapt the configure part to your setup)_

Sometimes, depending on the special chars, the text in sidebars is not well readable, like very condensed and italic or similar like that.

Can't receive OMEMO file from self.

Describe the bug

I sometimes use XMPP to send a link or text to myself between devices. (This works in Beagle, but has small weird thing, where I am listed as "From unknown" in sidebar.) I tried doing this with sending a file as well, but I always get an error message:

I sent you an OMEMO encrypted message, but your client doesn't seem to support that. Find more information on https://conversations.im/omemo

To Reproduce

Steps to reproduce the behavior:

  1. Sign into Beagle on MacOS (Enable OMEMO)
  2. Sign into Conversations.im on Android as same user (Enable OMEMO)
  3. In Conversations.im, share file to a chat with self
  4. In Beagle, attempt to view file
  5. See message

Expected behavior

  • I can download files in chats with myself just like I can with other people's chats.
  • Ideally, I am not listed as "From unknown" in the sidebar.

Screenshots

Screen Shot 2020-05-02 at 4 21 44 PM

Desktop:

  • OS: 10.15.4 (19E287)
  • Browser: N/A
  • Version: Version 3.7.1 (79)

Smartphone:

  • Device: Google Pixel 2a
  • OS: Android... 10?
  • Browser: N/A
  • Version: Conversations.im (F-Droid edition: v2.7.1+FCR)

Client priorities

Im using beagle.im and siskin.im on my devices. When I receive messages on one device, I can't see them on others. My college who's built our server infrastructure told me, all clients would operate with the same priority. I myself can't find any way, to activate different priorities.. Is there any way to do that within beagle.im?

Remember Contacts window size and position

Currently BeagleIM starts with Chats window as default. By pressing cmd+2 keys you can open the Contacts window. This always opens a new window with default placement.

I'm running Beagle mostly in full screen mode. When opening the contacts window, Beagle opens a new full screen window. I need to reduce the contacts window then, so it moves back to main desktop screen. There it always open in a default position and size and I need to adapt size and position to where I would like it to stay.

Additionally, some people (like parents) might be used to have the contacts window open. Their main focus might be not in having multiple chats open, but see if their contacts are online or not. For those it would be more convenient to also remember which windows were open when quitting Beagle and reopen them again...

This FR might be similar to #15

Nick completion with tab key instead of/additional to @

Please make nick completion also work with tab key instead of selection by starting @.
Many other clients do work that way.

Examples:
typing "woj" results in "Wojtek: " in the input line.
typing "a" cycles through available nicks starting with "a" and might result in second nick with "a" like "Andrzej: "

At least in BeagleIM that would be helpful. I don't know if this is desireable for mobile clients such as SiskinIM, though...

OTR support

Is your feature request related to a problem? Please describe.
Lack of support for OTR makes it impossible for Beagle to establish encrypted chats with clients that don't support OMEMO, e.g. mcabber.

Describe the solution you'd like
I'd like for Beagle to support OTR.

Describe alternatives you've considered
It seems like the only alternative is to ask all the contacts to upgrade to a client that supports OMEMO. That's hardly workable.

OMEMO for group chats

Is your feature request related to a problem? Please describe.
I've been getting into XMPP and I could send encrypted messages to people privately, but I see no option to do that for groups.

Describe the solution you'd like
Same feature for groups and private messages

Describe alternatives you've considered
I could use another app that supports it, but I don't know of any

Additional context
I don't know what I'm doing

BeagleIM just trying lowest DNS SRV entry

Hi!

For me it seems as if BeagleIM just tries to connect to the first DNS SRV entry for _xmpp-client._tcp.domain.tld, that is: the one with the lowest priority, and not trying other entries, although they are listed in the result set of DNS query.

Below you can see the console output after starting BeagleIM 4.0b97. You can see the resolver result includes the entry for port 443 with priority 15 first. While Beagle was running, I changed DNS zone to have port 443 priority of 1. After that change was done Beagle was able to connect successfully.

I believe this is an error and Beagle should try other DNS entry than just the first one with lowest priority. Basically I want to have port 443 as a fallback port in case some restrictive firewalls are blocking standard XMPP ports 5222 and 5223.

 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
starting for service: _xmpps-client._tcp. at: domain.tld
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 6 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue DF8C938A-065F-4924-B411-3667F64D73F1>
srvName: _xmpp-client._tcp.domain.tld sdFd: 7 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue E7318D37-5375-4FDE-9974-8B1ECF96D838>
stopping for: _xmpp-client._tcp.domain.tld
stopping for: _xmpps-client._tcp.domain.tld
finished for: domain.tld
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
 SocketConnector connecting to: jabber.domain2.tld 5222
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 SocketConnector stream event: HasSpaceAvailable
 WriteBuffer sent  138 bytes 138 of 138
loaded 24 during initialization of the view
loaded 1 during initialization of the view
found cache directory: /Users/juergensmann.ingo/Library/Containers/org.tigase.messenger.BeagleIM/Data/Library/Caches/org.tigase.messenger.BeagleIM/avatars
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:31:50 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpps-client._tcp. at: domain.tld
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 5 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 25151115-7367-4A9D-8CB3-DFA783F0A184>
srvName: _xmpp-client._tcp.domain.tld sdFd: 8 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 2E305F95-8F7F-4B07-8567-8D09C29D9086>
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:32:19 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
starting for service: _xmpps-client._tcp. at: domain.tld
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 11 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue A07BF2E9-005F-46AE-B3F3-AED857681A73>
srvName: _xmpp-client._tcp.domain.tld sdFd: 12 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 68711B8F-3221-4B0E-B035-8AB93C3931C3>
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:32:49 +0000
mouse entered
mouse exited
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpps-client._tcp. at: domain.tld
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 15 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 15762817-E760-4F1F-B96F-D8F4E295D0AF>
srvName: _xmpp-client._tcp.domain.tld sdFd: 16 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 58457B84-1F6A-40F9-8A2E-9FB2FF408A32>
stopping for: _xmpp-client._tcp.domain.tld
stopping for: _xmpps-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
mouse entered
mouse exited
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:33:22 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpps-client._tcp. at: domain.tld
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 17 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 0BFD99A0-7F43-428D-AF4D-CDF3AC5FFE81>
srvName: _xmpp-client._tcp.domain.tld sdFd: 18 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue F38ABC37-957A-4AEA-86D5-A4806068D801>
stopping for: _xmpp-client._tcp.domain.tld
stopping for: _xmpps-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:33:59 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
starting for service: _xmpps-client._tcp. at: domain.tld
starting for service: _xmpp-client._tcp. at: domain.tld
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 19 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 5A3EF89A-35A0-4A98-A272-EDBF35000F24>
srvName: _xmpp-client._tcp.domain.tld sdFd: 20 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 8AE4C384-56F8-42E3-88A1-4AB274EB36A9>
stopping for: _xmpp-client._tcp.domain.tld
stopping for: _xmpps-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 SocketConnector stream event: HasSpaceAvailable
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:34:28 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpps-client._tcp. at: domain.tld
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 21 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 59A2C617-B040-4FEB-B30A-5003D265D5F8>
srvName: _xmpp-client._tcp.domain.tld sdFd: 22 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 02AC439F-728D-4B69-8F5C-B7ACB129D560>
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:35:11 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 15, target: turn2.domain.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true]
starting for service: _xmpps-client._tcp. at: domain.tld
 SocketConnector connecting to: jabber.domain2.tld 5222
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 23 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue A91E73F7-747E-488A-BDAE-F7F5E2761AB9>
srvName: _xmpp-client._tcp.domain.tld sdFd: 24 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 6F0BD7F3-A17D-42D7-9DED-19E7E3F7AB2F>
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
connection state changed: connecting
 SocketConnector setsockopt!
 SocketConnector setsockopt done
 SocketConnector inStream.hasBytesAvailable false
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream event: HasBytesAvailable
 SocketConnector stream event: EndEncountered
connection state changed: connected
 SessionObject removing properties for scopes [TigaseSwift.SessionObject.Scope.stream]
 XMPPClient connection stopped......
##### [email protected] - disconnected 2020-07-20 06:35:54 +0000
 XMPPClient starting connection......
connection state changed: disconnected
 SocketConnector connecting to server: domain.tld
 DNSSrvResolverWithCache loaded DNS records for domain: domain.tld from cache [[port: 443, weight: 0, priority: 1, target: turn2.domain.tld, directTls: false, isValid: true], [port: 443, weight: 0, priority: 1, target: turn2.domain.tld, directTls: true, isValid: true], [port: 5222, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: false, isValid: true], [port: 5223, weight: 0, priority: 5, target: jabber.domain2.tld, directTls: true, isValid: true]]
 SocketConnector got dns record to connect to: [port: 443, weight: 0, priority: 1, target: turn2.domain.tld, directTls: false, isValid: true]
starting for service: _xmpps-client._tcp. at: domain.tld
 SocketConnector connecting to: turn2.domain.tld 443
starting for service: _xmpp-client._tcp. at: domain.tld
starting for service: _xmpps-client._tcp.domain.tld at: domain.tld
starting for service: _xmpp-client._tcp.domain.tld at: domain.tld
srvName: _xmpps-client._tcp.domain.tld sdFd: 25 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 643F6EB1-3822-4842-90E8-9D8E2B191D24>
srvName: _xmpp-client._tcp.domain.tld sdFd: 26 resolverQueue: <OS_dispatch_queue_serial: DnsSrvResolverQueue 616142E0-0C31-4CF8-9A95-01A181F9EB37>
stopping for: _xmpp-client._tcp.domain.tld
stopping for: _xmpps-client._tcp.domain.tld
finished for: domain.tld
dns resolution finished: success(TigaseSwift.XMPPSrvResult)
stopping for: _xmpps-client._tcp.domain.tld
stopping for: _xmpp-client._tcp.domain.tld
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
eam event: OpenCompleted
 SocketConnector stream event: OpenCompleted
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector starting new parser TigaseSwift.XMLParser
 SocketConnector sending stanza: <stream:stream to='domain.tld' from='[email protected]' version='1.0' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'>
 WriteBuffer sent  138 bytes 138 of 138
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream started: ["": "jabber:clie SocketConnector stream started: ["": "jabber:client", "from": "domain.tld", "xml:lang": "en", "id": "14422953608380912148", "stream": "http://etherx.jabber.org/streams", "to": "[email protected]", "version": "1.0"]
 SocketSessionLogic processing stream features
 SocketSessionLogic checking TLS
 SocketSessionLogic finished processing stream features
 SocketConnector sending stanza: <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
 WriteBuffer sent  51 bytes 51 of 51
 SocketConnector stream event: HasSpaceAvailable
 SocketConnector stream event: HasBytesAvailable
 SocketConnector configuring TLS

Beagle IM crashes on launch when not in Applications folder (was: Cannot open Xcode project on Mojave)

Describe the bug
I cannot open the Xcode project in the master branch with Xcode 11.3 on macOS Mojave.

To Reproduce
Steps to reproduce the behavior:

  1. Check out master branch.
  2. Double click on BeagleIM.xcodeproj
  3. Get error message:

    The project at '/Users/user/Development/beagle-im/BeagleIM.xcodeproj' cannot be opened because it is in a future Xcode project file format. Adjust the project format using a compatible version of Xcode to allow it to be opened by this version of Xcode.

Expected behavior
Xcode opens the project.

Desktop:

  • OS: macOS 10.14 Mojave

Additional context
Xcode 11.3 is the last version available for Mojave.

PS: I don't think the BeagleIM.xcodeproj/xcuserdata folder should be checked in to Git.

Support for contact groups in BeagleIM

SiskinIM support contact groups so that you can create groups like "Family", "Linux", or "Friends" and group your contacts within those contact groups, but Beagle lacks this feature, although I believe that users of Beagle would benefit also having this feature.

With contact groups additional feature could be implemented like group chats by clicking on contact group title and add/invite all contacts in that contact group into a newly created MUC.
Or group video calls by escalating the voice/video call to Jitsi Meet.

In enterprise environments ldap-based contact groups could be implemented, so you could have automatically add contacts to a group based on ldap group membership, e.g. "IT Business", "Finance", "Administration" or "Workers Council". If a new member is added to that LDAP group all other contacts "subscribed" to that contact group would automatically have that new member in that group contact list. Same when a member is removed from LDAP group.
This requires, of course, to have contact groups in contact list in the first place.

Internationalization of Beagle/Siskin/Stork

Sometimes it is critized from non-English speaking users that Beagle/Siskin is only available in English and not e.g. in German. So I guess support for more languages (internalization) would be highly appreciated by many non-English speaking users.

XEP-0384: OMEMO Encryption 0.4.0+

Can you update the XEP-0384: OMEMO Encryption support to 0.4.0+?

And XEP-0454: OMEMO Media sharing:

Diff Tool:

PS: Not sure that 0.3.0 was complete before:

Quoted text should be inserted below typed reply

Is your feature request related to a problem? Please describe.
Currently, when writing a message and deciding to make it a reply, actual quote is inserted after typed message (which could be middle of the sentence)

Describe the solution you'd like
It would be better to insert said quote before typed text: it maintains normal reading flow and allows for continuation of writing.

Provide ability to paste graphical clipboard contents.

It would be nice if I could capture some graphical object in the clipboard (e.g., by doing a screen capture) and paste it into Beagle (and have it automatically, say, create a temporary file and upload it to the conversation).

This functionality may be a subset of that requested in #41

Notify me if user becomes available

Hi!

Of course there is the small green bubble beside the contact avatar indicating if a user is available or not, but sometimes the user is outside of screen in sidebar or something like that.
For this is might be handy to have a "Notify me if contact is available again" option that displays a short notification on the screen that the contact is now available again and you can try to chat with him.
Of course there is also MAM and you could write the user in absense as well, but sometimes this might be not as reliable as trying to chat with the user when s/he is online again, especially when the user has multiple clients online and you cannot be confident about the implementation of MAM or the quality of push notifications.

Notication should be that way that it is from either yellow/red/grey status to green status, I think. For Beagle this could be added maybe to the (i) button and/or as a popup menu (right-click) in the contact list window or sidebar in main chat window. Makes only sense for non-MUC contacts, of course.

Pop-up nick selector goes offscreen in fullscreen mode

Describe the bug
When starting with @ a popup selector appears. Unfortunately, when in fullscreen mode, the selection list goes offscreen, making it hard to select the correct nick

Example screenshot (typed: "@ W o" for Wojtek):

Bildschirmfoto 2020-03-19 um 19 03 22

Open Contact Window on startup

Hello,

As a replacement for iChat I#m using Beagle (3.6) and I’m very satisfied with it.
A small feature would improve my satisfaction…
When I start my Mac every day I have to click on the Beagle-app and hit Shift-2 to activate the contact-window.
I would please you to implement the feature that Beagle starts with all windows opened as when I shutdown the computer….
Or it would also be a solution if there is a setting in the preferences to define the windows which should be opened at startup

Tank a lot

Best regards
Stefan

Turn off "User Session Not Found" notification

I suspect I'm just missing some UI setting. I'd like to turn off the

------
User session not found

notifications. At least stop showing a new message indicator for them. I'll be chatting with my wife, and then some time after we finish, I get a notification icon (1). I think she has sent me a new message, but instead Beagle is just telling me that she's disconnected.

No chat history if you open Contact

Describe the bug
If I open a new chat window to a college then the chat history is not loaded. It works fine if I added MUC group. I tried it a couple of times now with changing the setting related with this but I get the same result.

To Reproduce
Steps to reproduce the behaviour:

  1. Open a new 1 on 1 chat to a college;
  2. The new window opens you should see now the old chat history (it is now empty);

Expected behaviour
If you open the new chat window you expect to see the old chat history. But that is now empty. It feels that it doesn't catch the old chat history from the server.

Screenshots
Screenshot #8

Desktop (please complete the following information):

  • OS: 10.15.4
  • Version: 87

Own avatar appears for other contacts and MUCs

After uploading my avatar pic it happens from time to time that the same pic does appear as the avatar for other people as well as for MUCs:

Bildschirmfoto 2020-07-05 um 16 38 01

Bildschirmfoto 2020-07-05 um 16 38 32

My impression is that this happens mostly when adding a new contact or MUC that has no own avatar pic uploaded, but not every time. So I guess it's hard to track this issue down...

Constant crashes when joined to 2 group chat rooms with the same room name

Describe the bug
Crashes when two group chats from two different servers have the same room name. I'm not talking about the same JID, but the description ("Room name"). In my case I'm in the Ops room on my company server, as well as the one for an open source project

To Reproduce

  1. Join two servers
  2. Join a room with the same room name on two different servers
  3. Beagle crashes frequently, both on startup and

Expected behavior
It should not crash. As a workaround I renamed one of the rooms to have a different room name

Desktop (please complete the following information):

  • OS: macOS 10.14.6
  • Version 3.5 (also happened with 3.4)

Could not retrive current version from the server.

Describe the bug
When no profile is returned - e.g. on a fresh Prosody account, the "Personal" tab will error with

Could not retrive current version from the server.
Server returned an error: undefined_condition

To Reproduce
Steps to reproduce the behavior:

  1. Spin up Prosody.
  2. Create a new account from CLI.
  3. Login with BeagleIM
  4. Attempt to edit your own profile

Expected behavior
Can submit vCard without one set up prior.

Desktop (please complete the following information):

  • OS: macOS 10.14.6 (18G95)

Tray icon (system menu icon) as "template image" mask

Is your feature request related to a problem? Please describe.
I'm always frustrated when I have 2+ monitors and the tray icons in the inactive monitors are not vector-based image masks. These means both:

  • The inactive monitors' tray icons are dimmed.

  • The tray icons are just an alpha layer (a mask) without any bit-depth.

    Compare Beagle's current state on the left to the other icons: System tray screenshot

Describe the solution you'd like
Can you make a version of the beagle face, ideally without the neck, as a vector mask for the tray?

Apple's design guidelines for custom icons mention "template images:"

Consider creating icons as template images. A template image is a monochromatic image with transparency, anti-aliasing, and no drop shadow that uses a mask to define its shape. Template images automatically receive the appropriate appearance—including coloring, highlighting, and vibrancy—based on the context and user interactions. A variety of interface elements support template images, including buttons, segmented controls, sidebars, and toolbars.

Describe alternatives you've considered
I'm just going to leave the tray icon off until this is changed.

Additional context
This pairs really well with #9 for people who want to suppress the dock icon.

Change section header "Groupchats" to "Group chats"

Describe the bug
The Chats window includes a section header in the left, purple section called "Groupchats".

This is a bit jarring to a native English speaker; it would be more usual to make that "Group chats" with a space (so, two words).

I realise this is a very minor issue and that possibly I may have severe personality problems for this to bother me as much as it does.

To Reproduce

  1. Open Chats window
  2. Align face such that Chats window is in front of face
  3. Open eyes

Expected behavior
Change section heading from "Groupchats" to "Group chats".

Screenshots
Screenshot 2020-04-23 at 12 50 51

Desktop (please complete the following information):

  • OS: Mac OS 10.15.4

Additional context
None.

Command + Backspace removes Chat

Describe the bug
If you press COMMAND + BACKSPACE removes the whole chat from BeagleIM. You expected that it only removes the whole line that you typed.

To Reproduce
Steps to reproduce the behaviour:

  1. Type a random message to somebody in BeagleIM;
  2. Press COMMAND + BACKSPACE and now you expect that it removes the current line you typed;

Expected behaviour
You expected that it removes the typed line instead of the whole chat.

Desktop (please complete the following information):

  • OS: 10.15.4
  • Version: 87

Beagle IM version 3.4

Where can i download older version of Beagle IM (3.4, 3.5) for mac os? Currently on apple store available app is 3.7, which is compatible with OS 10.14 and above. I'm running 10.13, and can't go any higher with this device.

Thanks

Support for XEP-0245: /me command

Is your feature request related to a problem? Please describe.

  • XEP-0245: /me command is in the compliance suite and not implemented
  • Sometimes people using other clients write /me goes to the shops and it looks strange
  • Although archaic, /me is also supported by a number of other messaging platforms

Describe the solution you'd like
Implementation of XEP-0245 in Beagle and Siskin.

Describe alternatives you've considered
I considered the alternative of it not being implemented, this made me feel sad.

Additional context
We're discussing recommending Beagle IM as the macOS client for IETF virtual MUC meetings. It would be good to ensure continuity of features from previously recommended clients for macOS (Adium) and interoperability with other XMPP clients that other meeting attendees may be using on other platforms.

Chat window - support separate scroll areas for group chats and direct chats

Currently BeagleIM has a combined scroll area for group chats and direct chats (plus from unknown).

If you have joined many group chats, the direct chats will be moved out of sight and you will not be aware of new incoming personal chat messages.

When there would be two independent scroll areas on the left for group chats and direct chats this would improve the situation significantly: the most active chats would be moved on top of the respective scroll areas and you would have new messages for both within your sight.

Editing "Personal" profile gives error with ejabberd

Hi!

When editing the profile settings (or at least wanting to do so) gives an error on ejabberd, although mod_version: {} is configured in ejabberd.yml:

Bildschirmfoto 2020-07-09 um 20 45 45

Here's the output from XML console when clicking on "Edit":

<!--   2020-07-09T19:21:49Z   >>>>   -->
<iq type='get' id='FC0EB0F3-2A97-4B62-BA22-BBEFF166B898'>
<vcard xmlns='urn:ietf:params:xml:ns:vcard-4.0'/>
</iq>

<!--   2020-07-09T19:21:49Z   <<<<   -->
<iq from='[email protected]' type='error' id='FC0EB0F3-2A97-4B62-BA22-BBEFF166B898' to='[email protected]/2359849401574136431394243' xml:lang='en'>
<vcard xmlns='urn:ietf:params:xml:ns:vcard-4.0'/>
<error code='503' type='cancel'>
<service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
<text xml:lang='en' xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>No module is handling this query</text>
</error>
</iq>

<!--   2020-07-09T19:21:50Z   <<<<   -->
<r xmlns='urn:xmpp:sm:3'/>

<!--   2020-07-09T19:21:50Z   >>>>   -->
<a h='37' xmlns='urn:xmpp:sm:3'/>

List BeagleIM.app on Homebrew casks

Is your feature request related to a problem? Please describe.
I don't use the Mac App Store for application management.

Describe the solution you'd like
Add your releases to Homebrew's brew cask listing. There is a very straightforward sample in the instructions for how to add a cask.

Describe alternatives you've considered
It sounds a little silly, but I only made an account for the App Store for this app. It took 6 months of dithering to decide it was probably worth it. It's conceivable that others have the same roadblock to use.

BeagleIM 3.4/3.5 crashing in Mojave with 2020-001 macOS secupdate installed?

Hello!

We have some trouble with BeagleIM and the Openfire server we use at least since we updated.

We hade some chat-rooms disappearing in Openfire. They appeared to BeagleIM as "locked".
Don't know if anyone tried removing (the "static" / on the server setup) chat-rooms from BeagleIM (you can remove them using the X and add them again without trouble now) but maybe not with the other built-in "remove" method - I didn't try that.

After setting the missing chat-rooms up again we can see/use the chat-rooms again but BeagleIM quits frequently when sending a message to a chat-room. After starting BeagleIM again the message looks sent (I didn't verify/try this).

We have a very low degree of security in use - we only use it on the LAN.

Any suggestions or "fixed" newer version of BeagleIM "in the works"?

Best regards

Can not send messages to non-OMEMO users

I got "There is no trusted device to send message to" when trying to send a message to contact without OMEMO.

Expected behavior
Message should be sent (maybe with warning or so)

Desktop (please complete the following information):

  • OS: latest macOS, latest Beagle IM from AppStore (Version 3.7.1 (79))

Hard crash when viewing messages (macOS 11.0 b)

Describe the bug
Hard crash when viewing a received message due to unhandled permissions error on macOS 11.0b (20A5354i)

To Reproduce
Steps to reproduce the behavior:

  1. Install Beagle
  2. Create an account and receive a message from someone
  3. Click the message
  4. Immediate hard crash

Expected behavior
See the message

Desktop (please complete the following information):

  • OS: macOS 11.0b (20A5354i)
  • Version 4.0

Additional context
Here's the relevant part from the Problem Report generated by Apple:

Process:               BeagleIM [3387]
Path:                  /Applications/BeagleIM.app/Contents/MacOS/BeagleIM
Identifier:            org.tigase.messenger.BeagleIM
Version:               4.0 (103)
App Item ID:           1445349494
App External ID:       837575887
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           BeagleIM [3387]
User ID:               501

Date/Time:             2020-09-05 15:32:23.025 +0200
OS Version:            Mac OS X 10.16 (20A5354i)
Report Version:        12
Bridge OS Version:     5.0 (18P50358b)
Anonymous UUID:        338EB067-441C-5267-6EF3-151D2A5F0309

Sleep/Wake UUID:       1C278FD8-2249-4C9D-A4FA-A8A8F108E61E

Time Awake Since Boot: 2900 seconds
Time Since Wake:       1000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Illegal instruction: 4
Termination Reason:    Namespace SIGNAL, Code 0x4
Terminating Process:   exc handler [3387]

Application Specific Information:
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “org.tigase.messenger.BeagleIM” in the folder “Application Scripts”." UserInfo={NSFilePath=/Users/shibco/Library/Application Scripts/org.tigase.messenger.BeagleIM, NSUnderlyingError=0x6000035c5980 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}: file /Users/andrzej/Development/xcode/BeagleIM/BeagleIM/utils/ScriptsManager.swift, line 35

Cannot update account password

Is your feature request related to a problem? Please describe.
I've been trying XMPP and beagle looks like the only viable solution. It seems like XMPP applications are supposed to allow their users to update their account's password but I couldn't find how to do it in beagle.

Describe the solution you'd like
A tab in the account setup view for credentials

Describe alternatives you've considered
Not using beagle, not really viable on macos

Additional context
I don't know what I'm doing, I might be missing something.

Beagle crashing after selecting an emoji

Describe the bug

Beagle reproducibly crashes after trying to insert an emoji in MUC. 100% reproducible.

To Reproduce
Steps to reproduce the behavior:

  1. in an xmpp room with cursor in the compose field press ctrl + cmd + space to ope nemoji selection
  2. select any emoji

Expected behavior
Emoji should show in compose field.

Current behavior
Beagle crashes.

  • OS: macOS 10.15.3
  • Version 3.5 (73)

Additional context
Crash log is here (1 month): https://bin.disroot.org/?ede738e396106e33#33xmvAh6dGFJtFWSF4CixzsQVYiWYFq98Cj4oBYpNgZV

Minimize to tray ("system menu icon")

Is your feature request related to a problem? Please describe.
"I'm always frustrated when..." 😉 I have applications that are open all the time and take up a slot in the dock, even if I rarely interact with them or rely on notifications to do so.

Describe the solution you'd like
Add an option to the "Show system menu icon" to only show the system menu icon and hide the dock icon.

Describe alternatives you've considered
Deal with the status quo. It's not terrible, just a nice quality of life improvement.

Additional context
I will shortly be adding a feature request about the tray icon. I'll cross-link them when I get there.

Integration of CardDAV Contacts

Is your feature request related to a problem? Please describe.
Finding XMPP contacts can be problematic. There is no central directory of XMPP users (which is good!), but how to know if someone you know has an XMPP account?

Describe the solution you'd like
On Mac you can add information about social networks to your contacts in Contacts.app. XMPP is one of the options there. Of course this would only help with contacts where you already know the XMPP address. So, make it also an option to lookup mail addresses and check if there is an _xmpp-client._tcp.domain.tld or _xmpp-server._tcp.domain.tld, maybe on startup or in settings page as a button "check addressbook".
If a new XMPP contact has been found, ask the user to add it to roster/addressbook as XMPP address or dismiss it.

Suggestion for improved app icons for BeagleIM and other Tigase clients

Is your feature request related to a problem? Please describe.
Current app icons of BeagleIM, while showing a really nice dog, seem more like a placeholder than a proper icon that visually fits into the macOS ecosystem. The same applies to SiskinIM and more-less Stork. If you consider it, I propose to provide the below icons by the means of a Pull Request in each repo. No strings attached and no pressure. If you don't like it, disregard it.

icons

Unable to build from source in Xcode due to JingleModule errors

Describe the bug
I am trying to build BeagleIM in Xcode using branch mix-new_chatslist but I encounter a flood of errors related to JingleModule and JingleManager.

To Reproduce
Steps to reproduce the behavior:

  1. Open "BeagleIM.xcodeproj" and change "Team" in "Signing & Capabilities" to my own
  2. Add "OpenSSL.xcodeproj" from github.com/krzyzanowskim/openssl and build it for macOS
  3. Build "BeagleIM" and see dozens of errors starting with: "BeagleIM/voip/JingleManager.swift:30:72: Type 'JingleModule' has no member 'JingleMessageInitiationEvent'" etc.

I tested it's possible to build BeagleIM by going a few commits back where JingleModule was not an issue, but I would like to be able to compile the latest state.

Allow dropping a file in the chat view to upload it

Is your feature request related to a problem? Please describe.
The client supports file upload, but it's tedious to have to browse from your home directory to it when you actually already have it at hand in your finder. It would be great if I could just drag and drop it onto the chat to upload it.

Describe the solution you'd like
When dragging a file onto the chat view, provide user feedback that the chat column is a drop target and when dropping the file, upload it. It could probably be refined so that dropping the file on a MUC or Contact in the sidebar uploads there instead of the currently selected chat session.

Describe alternatives you've considered

  • Pasting from clipboard would upload the file instead of pasting the filename
  • Keeping browsing by hand. Really annoying

Additional context
N/A

XEP-0308 - Last Message Correction

Hi!

Does Beagle/Siskin support Last Message Correction as stated in XEP-0308?
In some MUCs it's quite common that I see such things:

Bildschirmfoto 2020-07-10 um 12 55 19

Maybe it's also a different XEP that's relevant here... :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.