jami-libclient issueshttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues2021-06-12T11:39:24Zhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/451swarm chat2021-06-12T11:39:24ZKateryna Kostiukswarm chatDONE:
- load conversations
- add conversation
- send messages
- load messages
- receive message
- accept conversation
- start conversation with first interaction (send message/file/place call)
- sort interactions by time
- confi...DONE:
- load conversations
- add conversation
- send messages
- load messages
- receive message
- accept conversation
- start conversation with first interaction (send message/file/place call)
- sort interactions by time
- configure call interactions
- configure data transfer interactions
- configure contact interactions
- remove interaction
- remove conversation
TODO:
- save last read interaction
CHANGES ON CLIENT SIDE:
- use string for interaction id instead of int
- connect and handle signal newInteractionsAvailable(accountId, conversationId)
- implement lazy loading (may be not for first version)Swarm-chatKateryna KostiukKateryna Kostiukhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/439Account summary should display the username if no displayname is available2020-10-27T23:00:55ZSébastien BlinAccount summary should display the username if no displayname is available********Itération 21Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/436Create an account should set username as alias by default (shouldn't be empty)2020-10-01T20:04:47ZSébastien BlinCreate an account should set username as alias by default (shouldn't be empty)Itération 21Ming Rui ZhangMing Rui Zhanghttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/432Video not freezing if call is on hold2020-08-22T11:16:44ZAline Gondim SantosVideo not freezing if call is on holdIf there's a call between A and B and A receives/does another call to C, B continues to see A's image. The video is not freezing.If there's a call between A and B and A receives/does another call to C, B continues to see A's image. The video is not freezing.Itération 21https://git.jami.net/savoirfairelinux/jami-libclient/-/issues/429refine setMessageDisplayed2021-02-26T16:37:39ZSébastien Blinrefine setMessageDisplayedActually, setMessageDisplayed should be only called if the interaction is a file transfer or a incoming text message (even if it's a sip account). Correct behavior is not perfect.
Also something is not clear is why if we do this on a ou...Actually, setMessageDisplayed should be only called if the interaction is a file transfer or a incoming text message (even if it's a sip account). Correct behavior is not perfect.
Also something is not clear is why if we do this on a outgoing call, the call is broken (daemon side)Swarm-chathttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/413Hold calls if multi calls and if the user wants this behavior2019-09-24T19:00:00ZSébastien BlinHold calls if multi calls and if the user wants this behaviorIteration 17 (Video conferences stabilization)Sébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/412joinConferences() doesn't work2019-09-25T20:07:21ZSébastien BlinjoinConferences() doesn't workIteration 17 (Video conferences stabilization)Pierre LespagnolPierre Lespagnolhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/399Document how LRC is structured.2019-11-21T04:53:12ZSébastien BlinDocument how LRC is structured.In https://git.ring.cx/savoirfairelinux/ring-project/wikis/homeIn https://git.ring.cx/savoirfairelinux/ring-project/wikis/homeNew media APISébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/398Video API2018-12-11T22:42:00ZSébastien BlinVideo APIWe should be able to:
+ List devices
+ Get current device
+ Configure devices
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
We should be able to:
+ List devices
+ Get current device
+ Configure devices
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
New media APISébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/397Audio API2018-12-11T22:42:03ZSébastien BlinAudio APIWe should be able to:
+ List devices
+ Get current device
+ Configure devices
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
We should be able to:
+ List devices
+ Get current device
+ Configure devices
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
New media APISébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/396new Renderer implementation2018-12-11T22:42:01ZSébastien Blinnew Renderer implementationThe new API should provide the necessary functions to render a call and preview. Moreover, this should also fix the issue when a crash occurs when the preview is open.
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
The new API should provide the necessary functions to render a call and preview. Moreover, this should also fix the issue when a crash occurs when the preview is open.
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
New media APISébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/395Define new media API for clients2018-12-11T22:41:55ZSébastien BlinDefine new media API for clientsThe AVModel class should be completed to provide an API to manage Renderers, Video and Audio devices.
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
The AVModel class should be completed to provide an API to manage Renderers, Video and Audio devices.
# Patch
https://gerrit-ring.savoirfairelinux.com/c/ring-lrc/+/10319
New media APISébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/394Migrate Medias to new LRC2018-12-11T22:42:14ZSébastien BlinMigrate Medias to new LRCSprint meta.
# TODO
## Call view
+ [x] Get Video's input (name/resolutions/etc)
+ [x] Get Audio's input (name/resolutions/etc)
+ [x] Add the ability to change the input
+ [x] Video
+ [x] Monitor (full/area)
+ [x] Stream fi...Sprint meta.
# TODO
## Call view
+ [x] Get Video's input (name/resolutions/etc)
+ [x] Get Audio's input (name/resolutions/etc)
+ [x] Add the ability to change the input
+ [x] Video
+ [x] Monitor (full/area)
+ [x] Stream file
+ [x] Get advanced informations (call id/resolutions/codecs) from current side and peer
+ [x] Classes not based on Call and Profiles from old LRC
+ [x] Verify old options (pause/mute/recording/quality)
+ [x] Crash client without daemon resilient?
## Avatar view & Let a message view
+ [x] Preview rendered
## Media settings
+ [x] Enable hardware decoding
+ [x] Set managers / devices for audio and video
# Issues + estimates:
+ #395 = 1d
+ #396 = 2d
+ #397 = 2d
+ #398 = 1d
+ #399 = 1dNew media APISébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/389Several issues in the new call model's state machine2018-09-20T14:07:01ZHugo LefeuvreSeveral issues in the new call model's state machineThe new call model's state machine suffers from multiple design issues:
* [x] State transitions are realized at multiple places. This makes handling of specific transitions in the state machine more complicated and leads to [terrific c...The new call model's state machine suffers from multiple design issues:
* [x] State transitions are realized at multiple places. This makes handling of specific transitions in the state machine more complicated and leads to [terrific code](https://git.ring.cx/savoirfairelinux/ring-lrc/blob/master/src/newcallmodel.cpp#L504).
* [x] `callStatusChanged` should never be emitted by `togglePause()`. Instead it should wait for feedback from the daemon.
* [x] `slotCallStateChanged` is handling conference state changes very badly. From the three possible conference states, only `HOLD` is handled properly. The rest is just considered to be an internal error....Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/384Bad handling of URIs in smartlist2018-09-11T21:31:36ZHugo LefeuvreBad handling of URIs in smartlist**Affects**: latest LRC master
Any URI beginning with `ring:` is recognized as a valid RingID by the LRC. Some URIs beginning with `sip:` and followed by letters like `sip:pol` are recognized as valid RingID. This is a big bug.**Affects**: latest LRC master
Any URI beginning with `ring:` is recognized as a valid RingID by the LRC. Some URIs beginning with `sip:` and followed by letters like `sip:pol` are recognized as valid RingID. This is a big bug.Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/377segfault during trust request during interactionStatusUpdated signal2020-06-09T18:27:46ZHugo Lefeuvresegfault during trust request during interactionStatusUpdated signalThe GNOME client crashes during `interactionStatusUpdated` signal (right after opening the trust requests tab).
ASan stacktrace:
```
registered name found for unknown account ""
ASAN:SIGSEGV
============================================...The GNOME client crashes during `interactionStatusUpdated` signal (right after opening the trust requests tab).
ASan stacktrace:
```
registered name found for unknown account ""
ASAN:SIGSEGV
=================================================================
==7770==ERROR: AddressSanitizer: SEGV on unknown address 0x61104d0000be (pc 0x7fc4a74991ee bp 0x7ffe14708940 sp 0x7ffe147080c8 T0)
#0 0x7fc4a74991ed (/lib/x86_64-linux-gnu/libc.so.6+0x16f1ed)
#1 0x7fc4aead774e in memcmp (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x7774e)
#2 0x4bb737 in std::char_traits<char>::compare(char const*, char const*, unsigned long) /usr/include/c++/5/bits/char_traits.h:262
#3 0x4d951a in __gnu_cxx::__enable_if<std::__is_char<char>::__value, bool>::__type std::operator==<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/5/bits/basic_string.h:4914
#4 0x5ba700 in webkit_chat_container_ready(_ChatView*)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info)#2}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info) const (/usr/bin/gnome-ring+0x5ba700)
#5 0x5bd8b8 in call /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:495
#6 0x5bd48d in call<QtPrivate::List<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, long unsigned int, const lrc::api::interaction::Info&>, void> /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:552
#7 0x5bd318 in impl /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:192
#8 0x7fc4ac5b7bae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#9 0x7fc4ae6c593b in lrc::api::ConversationModel::interactionStatusUpdated(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, lrc::api::interaction::Info const&) const (/usr/lib/libringclient.so.1.0.0+0x27493b)
#10 0x7fc4ae6c9469 in lrc::api::ConversationModel::setInteractionRead(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long const&) (/usr/lib/libringclient.so.1.0.0+0x278469)
#11 0x5ba3a9 in print_text_recording /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:487
#12 0x5ba9a0 in webkit_chat_container_ready /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:512
#13 0x5bc6f8 in build_chat_view /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:682
#14 0x5bc8c9 in chat_view_new /home/hlefeuvre/Development/ring-client-gnome/src/chatview.cpp:697
#15 0x516060 in displayChatView /home/hlefeuvre/Development/ring-client-gnome/src/ringmainwindow.cpp:1233
#16 0x5157a0 in changeView /home/hlefeuvre/Development/ring-client-gnome/src/ringmainwindow.cpp:1177
#17 0x52001e in slotShowChatView /home/hlefeuvre/Development/ring-client-gnome/src/ringmainwindow.cpp:1931
#18 0x519835 in (anonymous namespace)::details::CppImpl::updateLrc(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, lrc::api::conversation::Info)#8}::operator()(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, lrc::api::conversation::Info) const (/usr/bin/gnome-ring+0x519835)
#19 0x528004 in call /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:495
#20 0x5276dc in call<QtPrivate::List<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, const lrc::api::conversation::Info&>, void> /usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:552
#21 0x526f9a in impl /usr/include/x86_64-linux-gnu/qt5/QtCore/qobject_impl.h:192
#22 0x7fc4ac5b7bae in QMetaObject::activate(QObject*, int, int, void**) (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4bae)
#23 0x7fc4ae721df6 in lrc::api::BehaviorController::showChatView(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, lrc::api::conversation::Info const&) const (/usr/lib/libringclient.so.1.0.0+0x2d0df6)
#24 0x7fc4ae6c6d2c in lrc::api::ConversationModel::selectConversation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const (/usr/lib/libringclient.so.1.0.0+0x275d2c)
#25 0x5cfaf1 in select_conversation /home/hlefeuvre/Development/ring-client-gnome/src/conversationsview.cpp:396
#26 0x7fc4acafa1d3 (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x101d3)
#27 0x7fc4acb149a5 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a9a5)
#28 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#29 0x7fc4ade59fe3 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x337fe3)
#30 0x7fc4ade5cab3 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x33aab3)
#31 0x7fc4acafa1d3 (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x101d3)
#32 0x7fc4acb149a5 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a9a5)
#33 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#34 0x7fc4ade76579 in gtk_widget_grab_focus (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x354579)
#35 0x7fc4ade5225c (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x33025c)
#36 0x7fc4add3552b (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x21352b)
#37 0x7fc4acaf9efe in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0xfefe)
#38 0x7fc4acb0c56d (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2256d)
#39 0x7fc4acb147f8 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a7f8)
#40 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#41 0x7fc4ade772c9 in gtk_widget_child_focus (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x3552c9)
#42 0x7fc4addb8bc7 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x296bc7)
#43 0x7fc4add3552b (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x21352b)
#44 0x7fc4acaf9fa4 in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0xffa4)
#45 0x7fc4acb0c56d (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2256d)
#46 0x7fc4acb147f8 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a7f8)
#47 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#48 0x7fc4ade772c9 in gtk_widget_child_focus (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x3552c9)
#49 0x7fc4add67755 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x245755)
#50 0x7fc4acaf9fa4 in g_closure_invoke (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0xffa4)
#51 0x7fc4acb0c56d (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2256d)
#52 0x7fc4acb14d5b in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2ad5b)
#53 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#54 0x7fc4add624aa (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x2404aa)
#55 0x7fc4add35099 (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x213099)
#56 0x7fc4acafa1d3 (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x101d3)
#57 0x7fc4acb144b7 in g_signal_emit_valist (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2a4b7)
#58 0x7fc4acb1508e in g_signal_emit (/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0+0x2b08e)
#59 0x7fc4ade72c3b (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x350c3b)
#60 0x7fc4add323bd (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x2103bd)
#61 0x7fc4add341bb in gtk_main_do_event (/usr/lib/x86_64-linux-gnu/libgtk-3.so.0+0x2121bb)
#62 0x7fc4ad8a1d91 (/usr/lib/x86_64-linux-gnu/libgdk-3.so.0+0x5ad91)
#63 0x7fc4ac823196 in g_main_context_dispatch (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a196)
#64 0x7fc4ac8233ef (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a3ef)
#65 0x7fc4ac82349b in g_main_context_iteration (/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x4a49b)
#66 0x7fc4acdead7c in g_application_run (/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0+0xadd7c)
#67 0x4b6df4 in main /home/hlefeuvre/Development/ring-client-gnome/src/main.cpp:37
#68 0x7fc4a734a82f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
#69 0x4b6a48 in _start (/usr/bin/gnome-ring+0x4b6a48)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ??:0 ??
==7770==ABORTING
```Next major releasehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/375SIP register fails: No username on digest authentication2018-07-31T14:34:17ZAlba MendezSIP register fails: No username on digest authenticationThis bug has been driving me mad for quite some time. I just installed Ring for Ubuntu 16.04 following official instructions, opened, set up a SIP account with hostname=10.139.205.101, username=10, password=test and it fails to register....This bug has been driving me mad for quite some time. I just installed Ring for Ubuntu 16.04 following official instructions, opened, set up a SIP account with hostname=10.139.205.101, username=10, password=test and it fails to register.
My Asterisk server sends:
From: "main" <sip:10@10.139.205.101>;tag=8005b703-201b-47e8-be88-03d7564a5ba8
To: "main" <sip:10@10.139.205.101>;tag=as3f952c47
...
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="0074f5d0"
And Ring then sends:
From: "main" <sip:10@10.139.205.101>;tag=8005b703-201b-47e8-be88-03d7564a5ba8
To: "main" <sip:10@10.139.205.101>
...
Authorization: Digest , realm="asterisk", nonce="0074f5d0", uri="sip:10.139.205.101", response="631415fcf3715907a48f11fec1e6a880", algorithm=MD5
i.e. notice the space and comma after `Digest`
ring-daemon version 2018-07-07. Bug could be on upstream, for some reason username is not set on `pjsip/src/pjsip/sip_auth_client.c` when adding the Authorization header, [header printed here](https://github.com/asterisk/pjproject/blob/106ec876a371b57bb3db8231a55cb5f368e6266b/pjsip/src/pjsip/sip_auth_msg.c#L73).Next major releaseSébastien BlinSébastien Blinhttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/374newaccountmodel: still using old LRC for removing accounts2018-10-02T20:09:48ZHugo Lefeuvrenewaccountmodel: still using old LRC for removing accountsWe are still using the old lrc's `accountRemoved` signal to remove accounts. This is obviously not something we want to do and that should be handled 100% in the new LRC.We are still using the old lrc's `accountRemoved` signal to remove accounts. This is obviously not something we want to do and that should be handled 100% in the new LRC.Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/373newaccountmodel: race conditions and bad signal used for creating accounts2018-10-02T20:10:50ZHugo Lefeuvrenewaccountmodel: race conditions and bad signal used for creating accountsThe new account model is currently affected by two major issues:
1. The `accounts_` map is not protected again race conditions, in any kind of way. This should *really* be fixed.
2. The `accountsChanged` daemon signal is not used to det...The new account model is currently affected by two major issues:
1. The `accounts_` map is not protected again race conditions, in any kind of way. This should *really* be fixed.
2. The `accountsChanged` daemon signal is not used to detect changes in the accounts list. Instead we use `registrationStatusChanged` which works but is kind of inappropriate and may create various kind of weird issues when creating accounts offline.Next major releaseHugo LefeuvreHugo Lefeuvrehttps://git.jami.net/savoirfairelinux/jami-libclient/-/issues/372smartlist: contact list reordered when sending messages2018-08-06T18:35:06ZHugo Lefeuvresmartlist: contact list reordered when sending messages**Affects**: Latest LRC + GNU/Linux GNOME client
**How to reproduce**:
1. Set up a Ring account with several contacts where the conversation is empty (completely empty, clear history was called)
2. Open the topmost conversation and sen...**Affects**: Latest LRC + GNU/Linux GNOME client
**How to reproduce**:
1. Set up a Ring account with several contacts where the conversation is empty (completely empty, clear history was called)
2. Open the topmost conversation and send messages while looking at the conversations list: the order of empty conversations changes
This makes the smartlist blinky, we should really avoid that.Next major releaseSébastien BlinSébastien Blin