Re: Captures
Elisa Nectoux <[email protected]> Mon, 27 Oct 2025 14:23:53 +0100
| Newsgroups | gmane.comp.voip.linphone.user |
|---|---|
| Message-ID | <704DA927-8362-4558-A22F-8F22C457AB78@belledonne-communications.com> |
--===============1901615870801741816== Content-Type: multipart/alternative; boundary="Apple-Mail=_32DE9A61-5A69-47F5-93D7-6B20F3FE1C3D" --Apple-Mail=_32DE9A61-5A69-47F5-93D7-6B20F3FE1C3D Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi Greg, I=E2=80=99m sorry that this caused any confusion. There was nothing = malicious behind it. .smff is just a private internal format we created = for internal purposes. It should not have been visible in the Linphone = app, as it cannot be read by third party software =E2=80=94this was a = mistake, and we=E2=80=99ll restore the previous behaviour soon. Thanks for your understanding! > You say you don't have "open core" but you do offer proprietary > licenses. I would assume that you mean you sell the right for > customers to create proprietary derived works, but do not provide = them > with extra proprietary code. (Perhaps you help them make their > modifications e.g. white labeling, if that's distinct from having > withheld changes made available to multiple proprietary customers). > Is that correct? I can confirm again that we do not have an open-core model: all of our = source code is 100% open source. We do not keep any part of our = telephony and unified communications solutions closed. Your right: for customers who wish to integrate our source code into a = closed-source application (which is not allowed under GPL licenses), we = offer proprietary licenses. However, the source code itself is exactly = the same=E2=80=94there is only one Linphone version, the open-source = version. This is the same dual-license model used by frameworks such as Qt. It is = very different from an open-core model, where some parts are open-source = and others remain closed-source. Even for customers who purchase a proprietary license to integrate our = technology into a closed-source app, any development funded by those = customers that is made by our team is contributed under the open-source = license. This dual-license model is very effective: it helps finance new = features and improvements that benefit the open-source and free end-user = community. Currently, most of our revenue (about 75%) comes from support contracts, = though. A couple of years ago, we gave a talk at the OW2 Conference in English, = presenting our different revenue streams with an idea on transparency = and sharing. If you=E2=80=99re interested, the talk is available here: = https://www.youtube.com/watch?v=3DRiF4kKb1tJo Please feel free to reach out if you have any other questions about our = business model :-) Have a nice day, Elisa NECTOUX Sales & Marketing Manager Belledonne Communications, the company behind the Linphone project www.linphone.org <http://www.linphone.org/> > Le 27 oct. 2025 =C3=A0 14:03, Greg Troxel <[email protected]> a =C3=A9crit = : >=20 > Elisa Nectoux <[email protected]> writes: >=20 >> What do you mean by =C2=AB this is not open source =C2=BB? The source = code of >> Linphone and of all the software we=E2=80=99re developing at = Belledonne >> Communications is 100% open source (we do not have an open core >> model). >=20 > Some clarification would be helpful here. The basic issue is that the > Free Software community is uncomfortable, or rather that the situation > makes reasonable people uncomfortable. >=20 > I think people are concerned because .smff is a file extension (and = thus > presumed format), and when searching about it, people in general (and = me > in particular) don't seem to find anything about it on the web. No > documentation, no libraries, no mention in wikpedia: > https://en.wikipedia.org/wiki/List_of_file_formats >=20 > Reading git history at > https://gitlab.linphone.org/BC/public/linphone-desktop > I get the impression that the files are really Matroska, normally = .mkv, > but were relabeled as .smff for no apparent reason, or at least no > reason that was present in the commit message or added as a comment. > And then just last week there was a commit that had at least 9 = unrelated > changes. >=20 >=20 > My questions are thus: >=20 > Is smff purely an additional nonstandard/unusual label for mkv, so > that people with a recording foo.smff can just rename to foo.mkv, and > then they are usable with standard tools? >=20 > What is the larger situation with smff? Is the assertion that it is = a > Belledonne-only thing valid? Why was it created? What Free software > deals with it? >=20 > What was the rationale for changing mkv to smff in the source code in > February of 2025? >=20 > You say you don't have "open core" but you do offer proprietary > licenses. I would assume that you mean you sell the right for > customers to create proprietary derived works, but do not provide = them > with extra proprietary code. (Perhaps you help them make their > modifications e.g. white labeling, if that's distinct from having > withheld changes made available to multiple proprietary customers). > Is that correct? >=20 >=20 > What is really going on with the sources? It is irregular and very > unusual to have commits with many unrelated changes from a software > engineering viewpoint, and that suggests that the public-facing > repository isn't the real repository, that there is an authoritative > repository someplace else, and that this is some kind of squash > commit. But if linphone is "100% open source" then this sort of > scheme doesn't make any sense. It is a barrier to contributor, > discouraging people from participating. >=20 >=20 >=20 >=20 > commit afbf8c1fa4f09affe770475d735555e47c68b237 > Author: Julien Wadel <[email protected]> > Date: Tue Feb 4 11:50:37 2025 +0100 >=20 > Change mkv into smff ("Simple Media File Format" which is the = Standard Matroska file format that supports video, .mkv or .mka file = extension) >=20 > diff --git a/Linphone/model/call/CallModel.cpp = b/Linphone/model/call/CallModel.cpp > index 973e01f13..5d46105a7 100644 > --- a/Linphone/model/call/CallModel.cpp > +++ b/Linphone/model/call/CallModel.cpp > @@ -55,7 +55,7 @@ void CallModel::accept(bool withVideo) { > params->setRecordFile( > Paths::getCapturesDirPath() > = .append(Utils::generateSavedFilename(QString::fromStdString(mMonitor->getT= oAddress()->getUsername()), "")) > - .append(".mkv") > + .append(".smff") > .toStdString()); > // Answer with local call address. > auto localAddress =3D mMonitor->getCallLog()->getLocalAddress(); > diff --git a/Linphone/model/tool/ToolModel.cpp = b/Linphone/model/tool/ToolModel.cpp > index 60666afa3..d4215676f 100644 > --- a/Linphone/model/tool/ToolModel.cpp > +++ b/Linphone/model/tool/ToolModel.cpp > @@ -177,7 +177,7 @@ bool ToolModel::createCall(const QString = &sipAddress, > params->setRecordFile( > Paths::getCapturesDirPath() > = .append(Utils::generateSavedFilename(QString::fromStdString(address->getUs= ername()), "")) > - .append(".mkv") > + .append(".smff") > .toStdString()); > } >=20 >=20 >=20 >=20 >=20 > commit 97b1d11adb8449e6061c52144d59739b7f2c7de2 > Author: Gaelle Braud <[email protected]> > Date: Tue Oct 14 12:42:53 2025 +0200 >=20 > Fixes: >=20 > improve unencrypted conversations warning indicator #LINQT-2061 >=20 > allow user to choose an address for sending message when multiple = addresses in contact #LINQT-2054 >=20 > verify friend has a core to avoid crash in liblinphone #LINQT-1933 >=20 > wait for window to be active before calling markAsRead (fix = #LINQT-2048) >=20 > fix button text color (fix #LINQT-1832) >=20 > change format for mkv #LINQT-2056 >=20 > Registration : check phone number format #LINQT-2044 >=20 > fix window closing even if a new call is started #LINQT-2055 >=20 > display popup to delete meetings on right click in meeting list = item (allow to delete canceled meetings which cannot be displayed in the = right panel) --Apple-Mail=_32DE9A61-5A69-47F5-93D7-6B20F3FE1C3D Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 <html><head><meta http-equiv=3D"content-type" content=3D"text/html; = charset=3Dutf-8"></head><body style=3D"overflow-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;"><p = data-start=3D"147" data-end=3D"157">Hi Greg,</p><p data-start=3D"159" = data-end=3D"435">I=E2=80=99m sorry that this caused any confusion. There = was nothing malicious behind it. <code data-start=3D"240" = data-end=3D"247">.smff</code> is just a private internal format we = created for internal purposes. It should not have been visible in the = Linphone app, as it cannot be read by third party software =E2=80=94this = was a mistake, and we=E2=80=99ll restore the previous behaviour = soon.</p><p data-start=3D"437" data-end=3D"469">Thanks for your = understanding!</p><div><blockquote type=3D"cite"> You say you don't = have "open core" but you do offer proprietary<br> licenses. I = would assume that you mean you sell the right for<br> customers to = create proprietary derived works, but do not provide them<br> with = extra proprietary code. (Perhaps you help them make = their<br> modifications e.g. white labeling, if that's distinct = from having<br> withheld changes made available to multiple = proprietary customers).<br> Is that correct?<p data-start=3D"76" = data-end=3D"239"></p></blockquote><p data-start=3D"76" data-end=3D"239">I = can confirm again that we do not<u> </u>have an open-core model: all of = our source code is 100% open source. We do not keep any part of our = telephony and unified communications solutions closed.</p><p = data-start=3D"241" data-end=3D"514">Your right: for customers who wish = to integrate our source code into a closed-source application (which is = not allowed under GPL licenses), we offer proprietary licenses. However, = the source code itself is exactly the same=E2=80=94there is only one = Linphone version, the open-source version.</p><p data-start=3D"516" = data-end=3D"696">This is the same dual-license model used by frameworks = such as Qt. It is very different from an open-core model, where some = parts are open-source and others remain closed-source.</p><p = data-start=3D"698" data-end=3D"1043">Even for customers who purchase a = proprietary license to integrate our technology into a closed-source = app, any development funded by those customers that is made by our team = is contributed under the open-source license. This dual-license model is = very effective: it helps finance new features and improvements that = benefit the open-source and free end-user community.</p><p = data-start=3D"1045" data-end=3D"1119">Currently, most of our revenue = (about 75%) comes from support contracts, though.</p><p = data-start=3D"1121" data-end=3D"1334">A couple of years ago, we gave a = talk at the OW2 Conference in English, presenting our different revenue = streams with an idea on transparency and sharing. If you=E2=80=99re = interested, the talk is available here: <a = href=3D"https://www.youtube.com/watch?v=3DRiF4kKb1tJo">https://www.youtube= .com/watch?v=3DRiF4kKb1tJo</a></p><p data-start=3D"1336" = data-end=3D"1425">Please feel free to reach out if you have any other = questions about our business model :-)</p><p data-start=3D"1336" = data-end=3D"1425">Have a nice day,</p></div><div><div> <meta charset=3D"UTF-8"><div dir=3D"auto" style=3D"caret-color: rgb(0, = 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"font-family: Helvetica; = font-size: 12px; font-style: normal; font-variant-caps: normal; = font-weight: normal; letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; = text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; = font-style: normal; font-variant-caps: normal; font-weight: normal; = letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); font-variant-caps: normal; letter-spacing: normal; text-align: = start; text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"font-variant-caps: = normal; letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; caret-color: = rgb(0, 0, 0); overflow-wrap: break-word; -webkit-nbsp-mode: space; = line-break: after-white-space;"><div dir=3D"auto" style=3D"caret-color: = rgb(0, 0, 0); font-variant-caps: normal; letter-spacing: normal; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: = space; line-break: after-white-space;"><div dir=3D"auto" = style=3D"caret-color: rgb(0, 0, 0); letter-spacing: normal; text-align: = start; text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: = none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div dir=3D"auto" style=3D"caret-color: rgb(0, 0, = 0); letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div style=3D"letter-spacing: normal; text-align: = start; text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div style=3D"letter-spacing: normal; text-align: = start; text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div style=3D"letter-spacing: normal; text-align: = start; text-indent: 0px; text-transform: none; white-space: normal; = word-spacing: 0px; -webkit-text-stroke-width: 0px; overflow-wrap: = break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><div style=3D"color: rgb(0, 0, 0); letter-spacing: = normal; text-align: start; text-indent: 0px; text-transform: none; = white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><font color=3D"#ff5e04" style=3D"font-style: normal; = font-size: 14px;"><b>Elisa NECTOUX</b></font><br><span = style=3D"font-family: Helvetica; font-style: normal; font-weight: = normal; font-size: 12px; color: rgb(0, 0, 0);"><i>Sales & Marketing = Manager</i></span><br></div><div style=3D"color: rgb(0, 0, 0); = font-family: Helvetica; font-style: normal; font-weight: normal; = font-size: 12px; letter-spacing: normal; text-align: start; text-indent: = 0px; text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; overflow-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;"><br></div><div = style=3D"letter-spacing: normal; text-align: start; text-indent: 0px; = text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; overflow-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;"><span = style=3D"color: rgb(0, 0, 0); font-style: normal;"><b>Belledonne = Communications</b></span><span style=3D"color: rgb(0, 0, 0); = font-family: Helvetica; font-style: normal; font-weight: normal; = font-size: = 12px;">, the company behind the </span><span = style=3D"font-style: normal;"><b><font = color=3D"#ff5e04">Linphone</font></b></span><span style=3D"color: rgb(0, = 0, 0); font-family: Helvetica; font-style: normal; font-weight: normal; = font-size: 12px;"> project</span></div><div style=3D"color: rgb(0, = 0, 0); font-family: Helvetica; font-style: normal; font-weight: normal; = font-size: 12px; letter-spacing: normal; text-align: start; text-indent: = 0px; text-transform: none; white-space: normal; word-spacing: 0px; = -webkit-text-stroke-width: 0px; overflow-wrap: break-word; = -webkit-nbsp-mode: space; line-break: after-white-space;"><i><a = href=3D"http://www.linphone.org">www.linphone.org</a></i></div><div = style=3D"color: rgb(0, 0, 0); font-family: Helvetica; font-style: = normal; font-weight: normal; font-size: 12px; letter-spacing: normal; = text-align: start; text-indent: 0px; text-transform: none; white-space: = normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; = overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: = after-white-space;"><br></div></div></div></div></div></div></div></div></= div></div></div></div></div></div></div></div><br = class=3D"Apple-interchange-newline"><br = class=3D"Apple-interchange-newline"> </div> <div><br><blockquote type=3D"cite"><div>Le 27 oct. 2025 =C3=A0 14:03, = Greg Troxel <[email protected]> a =C3=A9crit :</div><br = class=3D"Apple-interchange-newline"><div><div>Elisa Nectoux = <[email protected]> = writes:<br><br><blockquote type=3D"cite">What do you mean by =C2=AB this = is not open source =C2=BB? The source code of<br>Linphone and of all the = software we=E2=80=99re developing at Belledonne<br>Communications is = 100% open source (we do not have an open = core<br>model).<br></blockquote><br>Some clarification would be helpful = here. The basic issue is that the<br>Free Software community is = uncomfortable, or rather that the situation<br>makes reasonable people = uncomfortable.<br><br>I think people are concerned because .smff is a = file extension (and thus<br>presumed format), and when searching about = it, people in general (and me<br>in particular) don't seem to find = anything about it on the web. No<br>documentation, no libraries, = no mention in wikpedia:<br> = https://en.wikipedia.org/wiki/List_of_file_formats<br><br>Reading = git history at<br> = https://gitlab.linphone.org/BC/public/linphone-desktop<br>I get = the impression that the files are really Matroska, normally .mkv,<br>but = were relabeled as .smff for no apparent reason, or at least no<br>reason = that was present in the commit message or added as a comment.<br>And = then just last week there was a commit that had at least 9 = unrelated<br>changes.<br><br><br>My questions are thus:<br><br> Is = smff purely an additional nonstandard/unusual label for mkv, so<br> = that people with a recording foo.smff can just rename to foo.mkv, = and<br> then they are usable with standard tools?<br><br> = What is the larger situation with smff? Is the assertion = that it is a<br> Belledonne-only thing valid? Why was it = created? What Free software<br> deals with it?<br><br> = What was the rationale for changing mkv to smff in the source code = in<br> February of 2025?<br><br> You say you don't have = "open core" but you do offer proprietary<br> licenses. I = would assume that you mean you sell the right for<br> customers to = create proprietary derived works, but do not provide them<br> with = extra proprietary code. (Perhaps you help them make their<br> = modifications e.g. white labeling, if that's distinct from = having<br> withheld changes made available to multiple proprietary = customers).<br> Is that correct?<br><br><br> What is really = going on with the sources? It is irregular and very<br> = unusual to have commits with many unrelated changes from a = software<br> engineering viewpoint, and that suggests that the = public-facing<br> repository isn't the real repository, that there = is an authoritative<br> repository someplace else, and that this = is some kind of squash<br> commit. But if linphone is "100% = open source" then this sort of<br> scheme doesn't make any sense. = It is a barrier to contributor,<br> discouraging people from = participating.<br><br><br><br><br>commit = afbf8c1fa4f09affe770475d735555e47c68b237<br>Author: Julien Wadel = <[email protected]><br>Date: = Tue Feb 4 11:50:37 2025 +0100<br><br> = Change mkv into smff ("Simple Media File Format" which = is the Standard Matroska file format that supports video, .mkv or .mka = file extension)<br><br>diff --git a/Linphone/model/call/CallModel.cpp = b/Linphone/model/call/CallModel.cpp<br>index 973e01f13..5d46105a7 = 100644<br>--- a/Linphone/model/call/CallModel.cpp<br>+++ = b/Linphone/model/call/CallModel.cpp<br>@@ -55,7 +55,7 @@ void = CallModel::accept(bool withVideo) {<br> <span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>params->setRecordFile(<br> = <span class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = Paths::getCapturesDirPath()<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .append(Utils::generateSavedFile= name(QString::fromStdString(mMonitor->getToAddress()->getUsername())= , ""))<br>-<span class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span> = .append(".mkv")<br>+<span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .append(".smff")<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .toStdString());<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span>// Answer = with local call address.<br> <span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span>auto localAddress =3D = mMonitor->getCallLog()->getLocalAddress();<br>diff --git = a/Linphone/model/tool/ToolModel.cpp = b/Linphone/model/tool/ToolModel.cpp<br>index 60666afa3..d4215676f = 100644<br>--- a/Linphone/model/tool/ToolModel.cpp<br>+++ = b/Linphone/model/tool/ToolModel.cpp<br>@@ -177,7 +177,7 @@ bool = ToolModel::createCall(const QString &sipAddress,<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span><span = class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>params->setRecordFile(<br> <span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span><span class=3D"Apple-tab-span" = style=3D"white-space:pre"> </span> = Paths::getCapturesDirPath()<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span><span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .append(Utils::generateSavedFile= name(QString::fromStdString(address->getUsername()), ""))<br>-<span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span><span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .append(".mkv")<br>+<span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span><span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .append(".smff")<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span><span = class=3D"Apple-tab-span" style=3D"white-space:pre"> </span> = .toStdString());<br> <span = class=3D"Apple-tab-span" style=3D"white-space:pre"> = </span>}<br><br><br><br><br><br>commit = 97b1d11adb8449e6061c52144d59739b7f2c7de2<br>Author: Gaelle Braud = <[email protected]><br>Date: = Tue Oct 14 12:42:53 2025 +0200<br><br> = Fixes:<br><br> improve unencrypted = conversations warning indicator #LINQT-2061<br><br> = allow user to choose an address for sending message = when multiple addresses in contact #LINQT-2054<br><br> = verify friend has a core to avoid crash in liblinphone = #LINQT-1933<br><br> wait for window to be active = before calling markAsRead (fix #LINQT-2048)<br><br> = fix button text color (fix #LINQT-1832)<br><br> = change format for mkv #LINQT-2056<br><br> = Registration : check phone number format = #LINQT-2044<br><br> fix window closing even if a new = call is started #LINQT-2055<br><br> display popup to = delete meetings on right click in meeting list item (allow to delete = canceled meetings which cannot be displayed in the right = panel)<br></div></div></blockquote></div><br></div></body></html>= --Apple-Mail=_32DE9A61-5A69-47F5-93D7-6B20F3FE1C3D-- --===============1901615870801741816== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGlucGhvbmUt dXNlcnMgbWFpbGluZyBsaXN0CkxpbnBob25lLXVzZXJzQG5vbmdudS5vcmcKaHR0cHM6Ly9saXN0 cy5ub25nbnUub3JnL21haWxtYW4vbGlzdGluZm8vbGlucGhvbmUtdXNlcnMK --===============1901615870801741816==--