savoirfairelinux issueshttps://git.jami.net/groups/savoirfairelinux/-/issues2020-09-17T15:49:58Zhttps://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1198conference - can not maximize participant if invitation is still pending2020-09-17T15:49:58ZGuillaume Hellerconference - can not maximize participant if invitation is still pendingSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-packaging/-/issues/80Camera support problem in Flatpak should be solved now, is it time to providi...2020-09-25T20:56:00ZNokia808Camera support problem in Flatpak should be solved now, is it time to providing official Flatpak package on FlatHub from you ?Hi dear developers of Jami.
You know that there was a big problem in flatpak packaging of Jami which make the camera can not supported ... This should now be fixed - see the following links:
https://gitlab.com/freedesktop-sdk/freedeskt...Hi dear developers of Jami.
You know that there was a big problem in flatpak packaging of Jami which make the camera can not supported ... This should now be fixed - see the following links:
https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/2979
https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/releases
https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/issues/941
The problem is that the packager of flatpak is too busy to maintain flatpak ....
Is it the suitable time to you now to ship official flatpak package & push it to FlatHub instead of the current broken & non-maintained flatpak package ?https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/308conference - can not maximize participant if invitation is still pending2020-09-15T17:44:36ZGuillaume Hellerconference - can not maximize participant if invitation is still pendingSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/77Double-click to call on a new contact doesn't navigate to the outgoing call s...2020-09-17T22:01:49ZAndreas TraczykDouble-click to call on a new contact doesn't navigate to the outgoing call screenSwapping back and forth between smart-list items is required to show the call screen.
![image](/uploads/f736eed388b575f1b41e2adedc024857/image.png)Swapping back and forth between smart-list items is required to show the call screen.
![image](/uploads/f736eed388b575f1b41e2adedc024857/image.png)Albert Babí OllerAlbert Babí Ollerhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/76Elide multiline texts2020-09-22T12:58:08ZSébastien BlinElide multiline texts![smartlistelide](/uploads/9a7d707624b89c40a1391bf378490c9e/smartlistelide.png)
The message was with multiple lines![smartlistelide](/uploads/9a7d707624b89c40a1391bf378490c9e/smartlistelide.png)
The message was with multiple linesItération 21Albert Babí OllerMing Rui ZhangAlbert Babí Ollerhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/75translation: qt client strings to update - 2nd wave2020-09-18T16:05:58ZGuillaume Hellertranslation: qt client strings to update - 2nd wave <source>Export Account Here</source>
<source>Backup account here</source>
<source>CHOOSE USERNAME</source>
<source>Choose username</source>
<source>BACK</source>
<source>Back</so... <source>Export Account Here</source>
<source>Backup account here</source>
<source>CHOOSE USERNAME</source>
<source>Choose username</source>
<source>BACK</source>
<source>Back</source>
<source>SKIP</source>
<source>Skip</source>
<source>CREATE ACCOUNT</source>
<source>Create account</source>
<source>CREATE SIP ACCOUNT</source>
<source>Create SIP account</source>
<source>BACK</source>
<source>Back</source>
<source>Export Successful</source>
<source>Backup successful</source>
<source>Export Failed</source>
<source>Backup failed</source>
<source>Password Changed Successfully</source>
<source>Password changed successfully</source>
<source>Password Change Failed</source>
<source>Password change failed</source>
<source>Password Set Successfully</source>
<source>Password set successfully</source>
<source>Password Set Failed</source>
<source>Password set failed</source>
<source>Change Password</source>
<source>Change password</source>
<source>Set Password</source>
<source>Set password</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>Change the current password</source>
<source>Change current password</source>
<source>Currently no password, press this button to set a password</source>
<source>Set a password</source>
<source>Press this button to export account to a .gz file</source>
<source>Backup account to a .gz file</source>
<source>Press to display or hide advance settings</source>
<source>Display or hide advanced settings</source>
<source>Enable</source>
<source>Enable account</source>
<source>Id</source>
<source>Identifier</source>
<source>Registered name</source>
<source>Username</source>
<source>Type here to register a username</source>
<source>Register a username</source>
<source>Export Account</source>
<source>Backup account</source>
<source>Press this button to delete this account</source>
<source>Delete account</source>
<source>Delete Account</source>
<source>Delete account</source>
<source>Press to link one more device with this account</source>
<source>Link a new device to this account</source>
<source>Link Another Device</source>
<source>Link another device</source>
<source>press to open or hide display of banned contact</source>
<source>Display or hide banned contacts</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>Press this button to delete this account</source>
<source>Delete account</source>
<source>Delete Account</source>
<source>Delete account</source>
<source>Do you really want to delete the following account?</source>
<source>Do you really want to delete this account?</source>
<source>If this account hasn't been exported, or added to another device, it will be irrevocably lost.</source>
<source>If your account has not been backuped, or added to another device, your account and registered name will be irrevocably lost.</source>
<source>Edit Device Name</source>
<source>Edit device name</source>
<source>Unlink Device From Account</source>
<source>Unlink device from account</source>
<source>Select A Folder For Your Downloads</source>
<source>Select a folder</source>
<source>Select A Folder For Your Recordings</source>
<source>Select a folder</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>toggle enable notifications</source>
<source>Enable notifications</source>
<source>toggle keep minimized on close</source>
<source>Keep minimized on close</source>
<source>Keep minimize on close</source>
<source>Keep minimized on close</source>
<source>toggle run application on system startup</source>
<source>Run application on system startup</source>
<source>Run On Startup</source>
<source>Run on startup</source>
<source>Downloads folder</source>
<source>Downloads directory</source>
<source>Press to choose download folder path</source>
<source>Choose download directory</source>
<source>Record preview video for a call</source>
<source>Record call</source>
<source>Beta Install</source>
<source>Install beta version</source>
<source>VALUE </source>
<source>Value</source>
<source>Press to choose record folder path</source>
<source>Select a record directory</source>
<source>Archive(none)</source>
<source>Archive</source>
<source>Open File</source>
<source>Open file</source>
<source>Import your account's archive</source>
<source>Create your account from a backup</source>
<source>You can obtain an archive by clicking on "Export account" in the account settings. This will create a .gz file on your device.</source>
<source>You can obtain an archive by clicking on "Backup account" in the account settings. This will create a .gz file on your device.</source>
<source>CONNECT FROM BACKUP</source>
<source>Restore an account from backup</source>
<source>BACK</source>
<source>Back</source>
<source>Enter your main Jami account password</source>
<source>Enter Jami account password</source>
<source>Enter the PIN from another configured Jami account. Use the "export Jami account" feature to obtain a PIN</source>
<source>Enter the PIN from another configured Jami account. Use the "Link another device" feature to obtain a PIN</source>
<source>CONNECT FROM ANOTHER DEVICE</source>
<source>Create account from an another device</source>
<source>BACK</source>
<source>Back</source>
<source>Find or start a conversation</source>
<source>Find a user or search for a conversation</source>
<source>Focus requests list</source>
<source>Requests list</source>
<source>Focus the previous conversation</source>
<source>Previous conversation</source>
<source>Focus the next conversation</source>
<source>Next conversation</source>
<source>Focus search bar</source>
<source>Search bar</source>
<source>Toggle fullscreen</source>
<source>Fullscreen</source>
<source>Start an video call</source>
<source>Start a video call</source>
<source>Media settings</source>
<source>Media Settings</source>
<source>Toggle general settings</source>
<source>General Settings</source>
<source>Toggle account settings</source>
<source>Account Settings</source>
<source>Open account creation's wizard</source>
<source>Open account creation wizard</source>
<source>Open this window</source>
<source>Open window</source>
<source>This pin and the account password should be entered in your device within 10 minutes.</source>
<source>The PIN and the account password should be entered in your device within 10 minutes.</source>
<source>CLOSE</source>
<source>Close</source>
<source>Set Registered Name</source>
<source>Register a Jami username</source>
<source>Registering Name</source>
<source>Registering name</source>
<source>Hang up</source>
<source>Hang-up</source>
<source>Enter the password of this account</source>
<source>Enter the password</source>
<source>Enter Current Password</source>
<source>Enter current password</source>
<source>Enter New Password</source>
<source>Enter new password</source>
<source>Confirm New Password</source>
<source>Confirm new password</source>
<source>CONFIRM</source>
<source>Confirm</source>
<source>Choose an image to be the avatar</source>
<source>Choose a picture as avatar</source>
<source>Image files</source>
<source>Import avatar from image file</source>
<source> Reset </source>
<source>Reset</source>
<source>Select A Plugin to Install</source>
<source>Select a plugin to install</source>
<source>Install Plugin</source>
<source>Install plugin</source>
<source>Toggle to display side panel</source>
<source>Display side panel</source>
<source>Please choose a file</source>
<source>Please select a file</source>
<source>PreferenceValue</source>
<source>Preference value</source>
<source>Save Profile</source>
<source>Save profile</source>
<source>SKIP</source>
<source>Skip</source>
<source>No Device</source>
<source>No device</source>
<source>Enter this account's password to confirm the removal of this device</source>
<source>Enter the account password to confirm the removal of this device</source>
<source>Okay</source>
<source>OK</source>
<source>Choose A Screen to Share</source>
<source>Select a screen to share</source>
<source>Share Screen</source>
<source>Share screen</source>
<source>CONVERSATIONS</source>
<source>Conversations</source>
<source>INVITATIONS</source>
<source>Invitations</source>
<source>QR Code</source>
<source>QR code</source>
<source>Jami is a free software for universal communication which repects the freedoms and privacy of its user.</source>
<source>Jami is free software for universal communication which respects the freedoms and the privacy of its users.</source>
<source>This is your ID. Copy and share it with your friends</source>
<source>This is your Jami username. Copy and share it with your friends!</source>
<source>CREATE A JAMI ACCOUNT</source>
<source>Create a Jami account</source>
<source>IMPORT FROM ANOTHER DEVICE</source>
<source>Link this device to an existing account</source>
<source>CONNECT FROM BACKUP</source>
<source>Load account from backup</source>
<source>SHOW ADVANCED</source>
<source>Advanced features</source>
<source>Show advanced options</source>
<source>Show advanced features</source>
<source>CONNECT TO MANAGEMENT SERVER</source>
<source>Connect to a JAMS server</source>
<source>Login to account manager</source>
<source>Create account from Jami Account Manager Server (JAMS)</source>
<source>CREATE A SIP ACCOUNT</source>
<source>Add a SIP account</source>
<source>Error when creating your account. Check your credentials</source>
<source>Error while creating your account. Check your credentials.</source>
<source>Export Successful</source>
<source>Export successful</source>
<source>Export Failed</source>
<source>Export failed</source>Aline Gondim SantosAline Gondim Santoshttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/74Contact request UI issues2020-10-08T14:24:08ZAlbert Babí OllerContact request UI issues1. From a "normal" contact conversation it is not possible to switch to a conversation/call from the "Invitations" menu.
2. Incoming call from a non-contact does not switch to menu "Invitations" and corresponding conversation.
3. Accep...1. From a "normal" contact conversation it is not possible to switch to a conversation/call from the "Invitations" menu.
2. Incoming call from a non-contact does not switch to menu "Invitations" and corresponding conversation.
3. Accepting an invitation from the conversation menu does not update the conversation header (remove button +Accept Contact).
![Screenshot_at_2020-09-14_14-48-18](/uploads/4f395eed8fce7a92f971741832695c33/Screenshot_at_2020-09-14_14-48-18.png)
4. Invitation text does not elide properly
![Screenshot_at_2020-09-14_11-40-42](/uploads/73b5d57f4f9c1573f0836844335d70f6/Screenshot_at_2020-09-14_11-40-42.png)Albert Babí OllerAlbert Babí Ollerhttps://git.jami.net/savoirfairelinux/jami-project/-/issues/1056Call still going on after finishing it ?2020-10-08T20:30:37ZSusanne MuellerCall still going on after finishing it ?Hello again,<br />
I noticed a strange behavior of Jami making sip-calls!<br />
<br />
Server: Asterisk SIP-Server<br />
Clients: Android Phone and Tablet (latest APK-version), Ubuntu Desktop<br />
<br />
Making a video call works perfec...Hello again,<br />
I noticed a strange behavior of Jami making sip-calls!<br />
<br />
Server: Asterisk SIP-Server<br />
Clients: Android Phone and Tablet (latest APK-version), Ubuntu Desktop<br />
<br />
Making a video call works perfectly!<br />
Making a phone call (no video) works also BUT<br />
if the caller finishes the call (red button) then the App on the called device indicates a continuing conversation and the call in the called app must be finished manually.<br />
If the called finishes the call then the App of the caller finishes the conversation as well.<br />
The same behavior with all clients. The call remains active even if I stop the sip-server.<br />
<br />
This happens only with phone calls without video.<br />
I don't know if this is a bug or something wrong with my devices / settings.<br />
<br />
Thanks for any advice<br />
Susihttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/73Keyboard shortcuts table are broken2020-09-18T14:44:18ZMing Rui ZhangKeyboard shortcuts table are brokenhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/307heap use-after-free2020-09-16T17:51:39ZSébastien Blinheap use-after-free```
=================================================================
==2366477==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000b40c8 at pc 0x7f38b551857b bp 0x7f389e31eba0 sp 0x7f389e31eb90
READ of size 8 at 0x6130000b...```
=================================================================
==2366477==ERROR: AddressSanitizer: heap-use-after-free on address 0x6130000b40c8 at pc 0x7f38b551857b bp 0x7f389e31eba0 sp 0x7f389e31eb90
READ of size 8 at 0x6130000b40c8 thread T176
#0 0x7f38b551857a in jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}::operator()(unsigned long const, DRing::DataTransferEventCode const) const /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:475
#1 0x7f38b5523a9a in std::_Function_handler<void (unsigned long const&, DRing::DataTransferEventCode const&), jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}>::_M_invoke(std::_Any_data const&, unsigned long const&, DRing::DataTransferEventCode const&) /usr/include/c++/9/bits/std_function.h:300
#2 0x7f38b4f8ab32 in std::function<void (unsigned long const&, DRing::DataTransferEventCode const&)>::operator()(unsigned long const&, DRing::DataTransferEventCode const&) const /usr/include/c++/9/bits/std_function.h:688
#3 0x7f38b4f7dcbe in jami::SubOutgoingFileTransfer::emit(DRing::DataTransferEventCode) const /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:468
#4 0x7f38b4f7c993 in jami::SubOutgoingFileTransfer::closeAndEmit(DRing::DataTransferEventCode) const /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:400
#5 0x7f38b4f7c908 in jami::SubOutgoingFileTransfer::close() /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:390
#6 0x7f38b4f7e562 in jami::OutgoingFileTransfer::close() /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:573
#7 0x7f38b4f82b62 in jami::DataTransferFacade::close(unsigned long const&) /home/amarok/Projects/jami/daemon/src/data_transfer.cpp:916
#8 0x7f38b54fce1c in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:820
#9 0x7f38b55075af in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#10 0x7f38b57c4335 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x10a3335)
#11 0x7f38b3ae93d3 (/lib64/libstdc++.so.6+0xd73d3)
#12 0x7f38b41424e1 in start_thread (/lib64/libpthread.so.0+0x94e1)
#13 0x7f38b37ea6c2 in __GI___clone (/lib64/libc.so.6+0x1016c2)
0x6130000b40c8 is located 8 bytes inside of 344-byte region [0x6130000b40c0,0x6130000b4218)
freed by thread T176 here:
#0 0x7f38b6ebf175 in operator delete(void*, unsigned long) (/lib64/libasan.so.5+0x111175)
#1 0x7f38b55262ce in std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector>::operator()(jami::DhtPeerConnector::Impl::ClientConnector*) const /usr/include/c++/9/bits/unique_ptr.h:81
#2 0x7f38b551f6de in std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> >::~unique_ptr() /usr/include/c++/9/bits/unique_ptr.h:292
#3 0x7f38b553c193 in std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >::~pair() /usr/include/c++/9/bits/stl_pair.h:208
#4 0x7f38b553c1b3 in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::destroy<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >(std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >*) /usr/include/c++/9/ext/new_allocator.h:153
#5 0x7f38b5539de4 in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > > >::destroy<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >(std::allocator<std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >&, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >*) /usr/include/c++/9/bits/alloc_traits.h:497
#6 0x7f38b553450a in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >*) /usr/include/c++/9/bits/stl_tree.h:642
#7 0x7f38b5529d0c in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >*) /usr/include/c++/9/bits/stl_tree.h:650
#8 0x7f38b55369d3 in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >) /usr/include/c++/9/bits/stl_tree.h:2511
#9 0x7f38b552fcf5 in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::_M_erase_aux(std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::_Rb_tree_const_iterator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >) /usr/include/c++/9/bits/stl_tree.h:2525
#10 0x7f38b552686c in std::_Rb_tree<std::pair<dht::Hash<20ul>, unsigned long>, std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > >, std::_Select1st<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::erase(std::pair<dht::Hash<20ul>, unsigned long> const&) /usr/include/c++/9/bits/stl_tree.h:2536
#11 0x7f38b551f842 in std::map<std::pair<dht::Hash<20ul>, unsigned long>, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> >, std::less<std::pair<dht::Hash<20ul>, unsigned long> >, std::allocator<std::pair<std::pair<dht::Hash<20ul>, unsigned long> const, std::unique_ptr<jami::DhtPeerConnector::Impl::ClientConnector, std::default_delete<jami::DhtPeerConnector::Impl::ClientConnector> > > > >::erase(std::pair<dht::Hash<20ul>, unsigned long> const&) /usr/include/c++/9/bits/stl_map.h:1068
#12 0x7f38b54fcc3b in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:809
#13 0x7f38b55075af in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#14 0x7f38b57c4335 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<dht::ThreadPool::run(std::function<void ()>&&)::{lambda()#1}> > >::_M_run() (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x10a3335)
#15 0x7f38b52c0877 in dht::Hash<20ul>::to_c_str() const /home/amarok/Projects/jami/daemon/contrib/x86_64-redhat-linux/include/opendht/infohash.h:367
previously allocated by thread T183 here:
#0 0x7f38b6ebda97 in operator new(unsigned long) (/lib64/libasan.so.5+0x10fa97)
#1 0x7f38b551f5e3 in std::_MakeUniq<jami::DhtPeerConnector::Impl::ClientConnector>::__single_object std::make_unique<jami::DhtPeerConnector::Impl::ClientConnector, jami::DhtPeerConnector::Impl&, unsigned long const&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&>(jami::DhtPeerConnector::Impl&, unsigned long const&, dht::Hash<20ul> const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&) /usr/include/c++/9/bits/unique_ptr.h:857
#2 0x7f38b54fc8c1 in jami::DhtPeerConnector::Impl::onAddDevice(dht::Hash<20ul> const&, unsigned long const&, std::shared_ptr<dht::crypto::Certificate> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (jami::PeerConnection*)> const&) /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:788
#3 0x7f38b54ffd9c in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:1016
#4 0x7f38b5508d45 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#5 0x7f38b559288c in std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>::operator()(std::shared_ptr<dht::crypto::Certificate> const&) const /usr/include/c++/9/bits/std_function.h:688
#6 0x7f38b558250e in jami::AccountManager::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) /home/amarok/Projects/jami/daemon/src/jamidht/account_manager.cpp:430
#7 0x7f38b537dd77 in jami::JamiAccount::findCertificate(dht::Hash<20ul> const&, std::function<void (std::shared_ptr<dht::crypto::Certificate> const&)>&&) /home/amarok/Projects/jami/daemon/src/jamidht/jamiaccount.cpp:2586
#8 0x7f38b55007e2 in operator() /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:1013
#9 0x7f38b5508ff5 in _M_invoke /usr/include/c++/9/bits/std_function.h:300
#10 0x7f38b55934ea in std::function<void (dht::Hash<20ul> const&)>::operator()(dht::Hash<20ul> const&) const /usr/include/c++/9/bits/std_function.h:688
#11 0x7f38b5585118 in operator() /home/amarok/Projects/jami/daemon/src/jamidht/account_manager.cpp:559
#12 0x7f38b5588d4c in _M_invoke /usr/include/c++/9/bits/std_function.h:285
#13 0x7f38b5595cc6 in std::function<bool (jami::DeviceAnnouncement&&)>::operator()(jami::DeviceAnnouncement&&) const /usr/include/c++/9/bits/std_function.h:688
#14 0x7f38b559378e in dht::DhtRunner::get<jami::DeviceAnnouncement>(dht::Hash<20ul>, std::function<bool (jami::DeviceAnnouncement&&)>, std::function<void (bool)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}::operator()(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) const /home/amarok/Projects/jami/daemon/contrib/x86_64-redhat-linux/include/opendht/dhtrunner.h:112
#15 0x7f38b559a684 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), dht::DhtRunner::get<jami::DeviceAnnouncement>(dht::Hash<20ul>, std::function<bool (jami::DeviceAnnouncement&&)>, std::function<void (bool)>)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) /usr/include/c++/9/bits/std_function.h:285
#16 0x7f38b58788e6 in std::_Function_handler<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&), dht::SecureDht::getCallbackFilter(std::function<bool (std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)> const&, dht::Value::Filter&&)::{lambda(std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&)#1}>::_M_invoke(std::_Any_data const&, std::vector<std::shared_ptr<dht::Value>, std::allocator<std::shared_ptr<dht::Value> > > const&) (/home/amarok/Projects/jami/daemon/src/.libs/libring.so.0+0x11578e6)
Thread T176 created by T0 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
Thread T183 created by T1 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
Thread T1 created by T0 here:
#0 0x7f38b6de8955 in pthread_create (/lib64/libasan.so.5+0x3a955)
#1 0x7f38b3ae9698 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/lib64/libstdc++.so.6+0xd7698)
#2 0x7f38b4fa185c in jami::ScheduledExecutor::ScheduledExecutor() /home/amarok/Projects/jami/daemon/src/scheduled_executor.cpp:29
#3 0x7f38b4e2225e in jami::Manager::ManagerPimpl::ManagerPimpl(jami::Manager&) /home/amarok/Projects/jami/daemon/src/manager.cpp:443
#4 0x7f38b4e253d7 in jami::Manager::Manager() /home/amarok/Projects/jami/daemon/src/manager.cpp:720
#5 0x7f38b4e251a3 in jami::Manager::instance() /home/amarok/Projects/jami/daemon/src/manager.cpp:695
#6 0x7f38b4f399c0 in DRing::init(DRing::InitFlag) /home/amarok/Projects/jami/daemon/src/ring_api.cpp:57
#7 0x44c5e3 in DBusClient::initLibrary(int) /home/amarok/Projects/jami/daemon/bin/dbus/dbusclient.cpp:245
#8 0x441104 in DBusClient::DBusClient(int, bool) /home/amarok/Projects/jami/daemon/bin/dbus/dbusclient.cpp:108
#9 0x440895 in void __gnu_cxx::new_allocator<DBusClient>::construct<DBusClient, int&, bool&>(DBusClient*, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x440895)
#10 0x440675 in void std::allocator_traits<std::allocator<DBusClient> >::construct<DBusClient, int&, bool&>(std::allocator<DBusClient>&, DBusClient*, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x440675)
#11 0x44030c in std::_Sp_counted_ptr_inplace<DBusClient, std::allocator<DBusClient>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<int&, bool&>(std::allocator<DBusClient>, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x44030c)
#12 0x43fda3 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<DBusClient, std::allocator<DBusClient>, int&, bool&>(DBusClient*&, std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43fda3)
#13 0x43f989 in std::__shared_ptr<DBusClient, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43f989)
#14 0x43efd5 in std::shared_ptr<DBusClient>::shared_ptr<std::allocator<DBusClient>, int&, bool&>(std::_Sp_alloc_shared_tag<std::allocator<DBusClient> >, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43efd5)
#15 0x43e6c6 in std::shared_ptr<DBusClient> std::allocate_shared<DBusClient, std::allocator<DBusClient>, int&, bool&>(std::allocator<DBusClient> const&, int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43e6c6)
#16 0x43de28 in std::shared_ptr<DBusClient> std::make_shared<DBusClient, int&, bool&>(int&, bool&) (/home/amarok/Projects/jami/daemon/bin/.libs/lt-dring+0x43de28)
#17 0x43cda1 in main /home/amarok/Projects/jami/daemon/bin/main.cpp:218
#18 0x7f38b37101a2 in __libc_start_main (/lib64/libc.so.6+0x271a2)
SUMMARY: AddressSanitizer: heap-use-after-free /home/amarok/Projects/jami/daemon/src/jamidht/p2p.cpp:475 in jami::DhtPeerConnector::Impl::ClientConnector::process()::{lambda(jami::tls::TlsSessionState)#2}::operator()(jami::tls::TlsSessionState) const::{lambda(unsigned long const&, DRing::DataTransferEventCode const&)#2}::operator()(unsigned long const, DRing::DataTransferEventCode const) const
Shadow bytes around the buggy address:
0x0c268000e7c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e7d0: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e7e0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e7f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c268000e810: fa fa fa fa fa fa fa fa fd[fd]fd fd fd fd fd fd
0x0c268000e820: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e830: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c268000e840: fd fd fd fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e850: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c268000e860: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
Shadow gap: cc
==2366477==ABORTING
```Itération 21Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/306jams contact synchro - retrieve and display avatar + contact first name/last ...2020-12-24T21:26:58ZGuillaume Hellerjams contact synchro - retrieve and display avatar + contact first name/last nameWhen the contact list is retrieved, only the username is displayed. vcard is exchanged after first interaction with the contact
![image](/uploads/0db02a44e73c4c580256fa1e624f63c0/image.png)
Aim is to retrieve the avatar and contact fir...When the contact list is retrieved, only the username is displayed. vcard is exchanged after first interaction with the contact
![image](/uploads/0db02a44e73c4c580256fa1e624f63c0/image.png)
Aim is to retrieve the avatar and contact first/name so info can be displayed directly when the user connects or the contact list is synchronized, without having to wait for an interaction between each contact to retrieve the vcard
even more important when we are in LDAP/AD config as we have no username
![image](/uploads/44c0ea92833eb9ac4da4008a2452eb6e/image.png)Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-client-android/-/issues/802jams - request re-authentifaction when certificate expires2023-06-16T17:59:52ZGuillaume Hellerjams - request re-authentifaction when certificate expiresWhen certificate expires, user should be invited to enter the password to re-authenticate to jami.
1. When certificate expires, display a system notification: "Your Jami account has been disconnected. Click to re-authenticate."
2. Rem...When certificate expires, user should be invited to enter the password to re-authenticate to jami.
1. When certificate expires, display a system notification: "Your Jami account has been disconnected. Click to re-authenticate."
2. Remove notif in app (migration required) and display the authentication screen when user selects the expired account or click on the system notification:
--> Authentication required. Please enter your password to reactivate your account.Adrien BéraudAdrien Béraudhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/72translation: qt client strings to update - 1st wave2020-09-18T16:06:05ZGuillaume Hellertranslation: qt client strings to update - 1st wave <source>version</source>
<source>Version</source>
<source>The Qt client for Jami. Jami is a secured and distributed communication software.</source>
<source>Jami is a free software for universal communica... <source>version</source>
<source>Version</source>
<source>The Qt client for Jami. Jami is a secured and distributed communication software.</source>
<source>Jami is a free software for universal communication which respects the freedom and privacy of its users.</source>
<source>Credit</source>
<source>Credits</source>
<source>Press to display QR code</source>
<source>Display QR code</source>
<source>Press to toggle to settings page</source>
<source>Open settings</source>
<source>Press to toggle to call page</source>
<source>Close settings</source>
<source>Account Migration Required</source>
<source>Authentication required</source>
<source>This account is malformed. Please enter your password</source>
<source>Your session has expired or been revoked on this device. Please enter your password.</source>
<source>Manager Uri</source>
<source>JAMS server</source>
<source>Migrate</source>
<source>Authenticate</source>
<source>Delete</source>
<source>Delete account</source>
<source>Migrating your Jami account...</source>
<source>In progress...</source>
<source>Migration Failed</source>
<source>Authentication failed</source>
<source>Auto Answer Calls</source>
<source>Automatically answer calls</source>
<source>Enable Custom Ringtone</source>
<source>Enable custom ringtone</source>
<source>Select Custom Ringtone</source>
<source>Select custom ringtone</source>
<source>Voicemail Dial Code</source>
<source>Voicemail dial code</source>
<source>Encrypt Media Streams (SRTP)</source>
<source>Encrypt media streams (SRTP)</source>
<source>Enable SDES(Key Exchange)</source>
<source>Enable SDES key exchange</source>
<source>Can Fallback on RTP</source>
<source>Allow fallback on RTP</source>
<source>Encrypt Negotiation (TLS)</source>
<source>Encrypt negotiation (TLS)</source>
<source>CA Certificate</source>
<source>CA certificate</source>
<source>User Certificate</source>
<source>User certificate</source>
<source>Private Key</source>
<source>Private key</source>
<source>Private Key Password</source>
<source>Private key password</source>
<source>Verify Certificates (Server Side)</source>
<source>Verify certificates for incoming TLS connections</source>
<source>Verify Certificates (Client Side)</source>
<source>Verify server TLS certificates</source>
<source>TLS Connections Require Certificate</source>
<source>Require certificate for incoming TLS connections</source>
<source>TLS Protocol Method</source>
<source>TLS protocol method</source>
<source>Outgoing TLS Server Name</source>
<source>TLS server name</source>
<source>Negotiation Timeout (seconds)</source>
<source>Negotiation timeout (seconds)</source>
<source>Registration Expire Timeout (seconds)</source>
<source>Registration expire timeout (seconds)</source>
<source>Newtwork interface</source>
<source>Network interface</source>
<source>TURN Address</source>
<source>TURN address</source>
<source>TURN Username</source>
<source>TURN username</source>
<source>TURN Password</source>
<source>TURN password</source>
<source>STUN Address</source>
<source>STUN address</source>
<source>Use Custom Address/Port</source>
<source>Use custom address/port</source>
<source>Enable Video</source>
<source>Enable video</source>
<source>Audio RTP Min Port</source>
<source>Audio RTP minimum port</source>
<source>Audio RTP Max Port</source>
<source>Audio RTP maximum port</source>
<source>Video RTP Min Port</source>
<source>Video RTP minimum port</source>
<source>Video RTP Max Port</source>
<source>Video RTP maximum port</source>
<source>Auto Answer Calls</source>
<source>Automatically answer calls</source>
<source>Enable Custom Ringtone</source>
<source>Enable custom ringtone</source>
<source>Select Custom Ringtone</source>
<source>Select custom ringtone</source>
<source>(Experimental) Rendez-vous: turn your account into a conference room</source>
<source>Rendezvous point: turn your account into a meeting point</source>
<source>Proxy Address</source>
<source>Proxy address</source>
<source>CA Certificate</source>
<source>CA certificate</source>
<source>User Certificate</source>
<source>User certificate</source>
<source>Private Key</source>
<source>Private key</source>
<source>Private Key Password</source>
<source>Private key password</source>
<source>Auto Connect On Local Network</source>
----- move to OpenDHT Configuration section----------
<source>Enable local peer discovery. Tooltip: Connect to other DHT nodes advertising on your local network.</source>
<source>TURN Address</source>
<source>TURN address</source>
<source>TURN Username</source>
<source>TURN username</source>
<source>TURN Password</source>
<source>TURN password</source>
<source>STUN Address</source>
<source>STUN address</source>
<source>Enable Video</source>
<source>Enable video</source>
<source>Toggle to display side panel</source>
<source>Back</source>
<source>Audio / Video</source>
<source>Audio & Video Settings</source>
<source>Audio input device selector</source>
<source>Select audio input device</source>
<source>Output Device</source>
<source>Output device</source>
<source>Choose the audio output device</source>
<source>Select audio output device</source>
<source>Ringtone Device</source>
<source>Ringtone device</source>
<source>Choose the ringtone output device</source>
<source>Select ringtone output device</source>
<source>Audio Manager</source>
<source>Audio manager</source>
<source>Video device selector</source>
<source>Select video device</source>
<source>Video device resolution selector</source>
<source>Select video resolution</source>
<source>Fps</source>
<source>Frame per second</source>
<source>Video device fps selector</source>
<source>Select video frame per second (fps)</source>
<source>Export Account Here</source>
<source>Backup account here</source>
<source>This account only exists on this device. If you lost your device or uninstall the application, your account will be deleted. You can backup your account now or later.</source>
<source>Your account only exists on this device. If you lost your device or uninstall the application, your account will be deleted and can not be recovered. You can backup your account now or later.</source>
<source>BACKUP ACCOUNT</source>
<source>Backup account</source>
<source>SKIP</source>
<source>Skip</source>
<source>Add as contact</source>
<source>Reinstate as contact</source>
<source>Press to mute the call</source>
<source>Mute</source>
<source>Press to unmute the call</source>
<source>Unmute</source>
<source>Press to hang up the call</source>
<source>Hang-up</source>
<source>Press to pause the call</source>
<source>Pause</source>
<source>Press to resume the call</source>
<source>Resume</source>
<source>Press to add more contact into conference call</source>
<source>Add participants</source>
<source>Press to toggle open the chatview</source>
<source>Chat</source>
<source>Press to open chat options</source>
<source>More options</source>
<source>Resume call</source>
<source>Resume</source>
<source>Hold call</source>
<source>Hold</source>
<source>Sip Input Panel</source>
<source>Sip input panel</source>
<source>Full screen mode</source>
<source>Full screen</source>
<source>Share entire screen</source>
<source>Share screen</source>
<source>Toggle plugin</source>
<source>View plugin</source>
<source>Enter URL of management server</source>
<source>Enter Jami Account Management Server (JAMS) URL</source>
<source>Jami management server URL</source>
<source>Jami Account Management Server URL</source>
<source>Enter your organization credentials</source>
<source>Enter your JAMS credentials</source>
<source>CONNECT</source>
<source>Connect</source>
<source>BACK</source>
<source>Back</source>
<source>Find or start a conversation</source>
<source>Search a contact or a conversation</source>Ming Rui ZhangAline Gondim SantosMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/71The system tray icon disappears when a system notification pops when closed t...2020-09-17T22:07:05ZAndreas TraczykThe system tray icon disappears when a system notification pops when closed to trayhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/70Account switching does not handle call management properly2020-09-18T15:50:43ZAlbert Babí OllerAccount switching does not handle call management properly- Scenario: Start two calls from different accounts.
- Problem: Account switching does not handle the call transition, so one is always kept in progress and the other paused.
- Idea: `setCurrentCall` required when switching to an account...- Scenario: Start two calls from different accounts.
- Problem: Account switching does not handle the call transition, so one is always kept in progress and the other paused.
- Idea: `setCurrentCall` required when switching to an account with a current call.Albert Babí OllerAlbert Babí Ollerhttps://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/69Conference: video stops after participant leaves conference (only for 3 parti...2020-10-09T11:59:52ZAlbert Babí OllerConference: video stops after participant leaves conference (only for 3 participants)1. Create conference with TWO other participants.
2. When a participant leaves the conference the layout does not change but the three renderers stop working.
```
Video stopped for call "2742050728027825"
Video stopped for call "36395158...1. Create conference with TWO other participants.
2. When a participant leaves the conference the layout does not change but the three renderers stop working.
```
Video stopped for call "2742050728027825"
Video stopped for call "363951587605277"
```
![Screenshot_at_2020-09-10_16-28-14](/uploads/642fdd4e65d48f41e8f6cd4b1aaf397d/Screenshot_at_2020-09-10_16-28-14.png)
Note: This is not the case for conferences with more than 3 people.https://git.jami.net/savoirfairelinux/jami-project/-/issues/1055Register SIP account with an other port than 50602021-07-09T18:42:44ZMicka41Register SIP account with an other port than 5060Hi,
How can i register a SIP account with an another port than 5060 ?
ThanksHi,
How can i register a SIP account with an another port than 5060 ?
Thankshttps://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1197Homogeneize wizard with other clients2020-10-13T18:15:56ZSébastien BlinHomogeneize wizard with other clientsSome changes are needed to follow what we have in all clients:
1. Update strings for welcome page
![welcome](/uploads/005f490050030885552fce0b269662dd/welcome.png)
2. Add SIP account
Create only when validated: cf
![sip](/uploads/d860...Some changes are needed to follow what we have in all clients:
1. Update strings for welcome page
![welcome](/uploads/005f490050030885552fce0b269662dd/welcome.png)
2. Add SIP account
Create only when validated: cf
![sip](/uploads/d86086f6c07f086d5484fce84e5f1d50/sip.png)
3. Update strings
![Capture_d_écran_du_2020-09-22_14-42-03](/uploads/5e05454b9dd5b490a019bf6321bf5b9e/Capture_d_écran_du_2020-09-22_14-42-03.png)
![Capture_d_écran_du_2020-09-22_14-41-58](/uploads/08b52c4246489dc098564f6919151793/Capture_d_écran_du_2020-09-22_14-41-58.png)
![Capture_d_écran_du_2020-09-22_14-41-50](/uploads/64f8117d4543e4bebc8149e30cdc6c3f/Capture_d_écran_du_2020-09-22_14-41-50.png)
4. Create a jami account should be divided in 4 steps:
a. Choose username ![username](/uploads/4f84fbac0370aad2e9591f4a20b0b8a3/username.png)
b. Encrypt with password ![passowrd](/uploads/86f4cd4ca796ece567ab843b516c3482/passowrd.png)
c. Profile page (in background: generate the keys, it can be async) ![profile](/uploads/c123b07245ce396ad5cbd86f49c47cf4/profile.png)
d. Backup page => nothing to do, just keep the one we have todayItération 21Amin BandaliAmin Bandalihttps://git.jami.net/savoirfairelinux/jami-client-gnome/-/issues/1196Copy rdv interface from client-qt2020-10-27T23:01:09ZSébastien BlinCopy rdv interface from client-qtItération 21Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-daemon/-/issues/305Swarm: remove conversation2021-06-12T11:37:12ZSébastien BlinSwarm: remove conversationImplement https://git.jami.net/savoirfairelinux/ring-project/wikis/Group-chat-feature-(design-draft)#remove-a-conversationImplement https://git.jami.net/savoirfairelinux/ring-project/wikis/Group-chat-feature-(design-draft)#remove-a-conversationSwarm-chatSébastien BlinSébastien Blin