1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

Merge branch 'v1.17-dev'

This commit is contained in:
Anthony Bilinski 2020-04-24 18:37:27 -07:00
commit 00d08d9887
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
12 changed files with 548 additions and 66 deletions

View File

@ -261,14 +261,6 @@ deploy:
tags: true
skip_cleanup: true
# branch for windows jenkins build
- provider: script
script: .travis/deploy-jenkins-branch.sh
on:
tags: true
skip_cleanup: true
after_success:
- >
test "$TRAVIS_PULL_REQUEST" == "false"

View File

@ -1,3 +1,395 @@
<a name=""></a>
## v1.17.1 (2020-04-22)
#### Bug Fixes
* **ci:** remove jenkins deploy step ([48c688bf](https://github.com/qTox/qTox/commit/48c688bf1b1939f1afb239e19764791e4fc98b7a))
<a name=""></a>
## v1.17.0 (2020-04-19)
Since this is the first release in more than a year the changelog is quite huge.
The most notable user facing changes are group chats that stay intact after
disconnects or client shutdown as well as the very often requested dark theme.
Advanced history search was added, as well as file transfers staying in chat
history after client restart. There are of course also tons of fixes, namely
much increased stability of audio and video calls as well as audio group calls.
For v1.17.0 binaries, see v1.17.1.
#### Performance
* **history:** enable sql index on chat_id in history table ([edd72906](https://github.com/qTox/qTox/commit/edd72906fbd4ff7e8e48ebcd7fed764baf8cd85b))
* **smileys:**
* create global regex object ([0f90abeb](https://github.com/qTox/qTox/commit/0f90abebddeb99b133e415e9a1e015eb08197690))
* use one big regex instead of constructing many small ones ([58f8a14a](https://github.com/qTox/qTox/commit/58f8a14a48b7a023def122aff2e72b08b38c10de))
#### Features
* add Fcitx and Uim support to AppImage ([710c32de](https://github.com/qTox/qTox/commit/710c32ded0aad89d2dd14718d068f0146755296d))
* save selected search text after scrolling up ([dbf88007](https://github.com/qTox/qTox/commit/dbf880078e8b3207bf5c4f057bc6071b4c74b9ce))
* check chat status before start a search ([ce570927](https://github.com/qTox/qTox/commit/ce570927b145676ff3a63f36a3fe082fa52b228a))
* prohibition to remove messages in group chat ([5aeac56b](https://github.com/qTox/qTox/commit/5aeac56b761ad24b6a2829fca499b8eff480a306))
* remove part messages from chat ([4c7ecb60](https://github.com/qTox/qTox/commit/4c7ecb60247a0e0d84442e506ae5122204ffb328))
* edit position chat after load history ([c2d5b422](https://github.com/qTox/qTox/commit/c2d5b422b3ff09af329840dd829d9d2163b79e52))
* add action "Go to current date" ([2a9648d1](https://github.com/qTox/qTox/commit/2a9648d12c2f71efa8f9722f1c0fa6e39e701c47))
* edit load history in search ([8c4b1e00](https://github.com/qTox/qTox/commit/8c4b1e00a128b739904ed60543132b34817f0ba5))
* edit function "Load chat history" ([6de1173c](https://github.com/qTox/qTox/commit/6de1173c172a14aec3dba289dd63d5857fe69d19))
* load messages from the database after date ([b705ac80](https://github.com/qTox/qTox/commit/b705ac806059717d98cfd60b1b2f1abdaa84e6a9))
* load messages from the database before date ([fb2957c5](https://github.com/qTox/qTox/commit/fb2957c5ee9b0abffdc8c462e96be71c38d44949))
* add border for qrcode ([191f89ff](https://github.com/qTox/qTox/commit/191f89ffa4b01896a7ce94291f52fb482264eaa6))
* remove old boostrap nodes code ([acef759a](https://github.com/qTox/qTox/commit/acef759a586c38a314943555ee9e2949bbba90c5))
* load bootstrap nodes directly from JSON ([1f2bdf3a](https://github.com/qTox/qTox/commit/1f2bdf3a1b2e723989ae83b525b62b7a13dd610f))
* add color for links in palette ([d35dbcc8](https://github.com/qTox/qTox/commit/d35dbcc870d3f35c9ba075736f85ec27d7c84b42))
* edit reload themes ([e146c11f](https://github.com/qTox/qTox/commit/e146c11f0fbe52e91dda2267a54f83943768d410))
* show date in chat log ([d0e8ba8b](https://github.com/qTox/qTox/commit/d0e8ba8b9ca0de2ca9f5a847ea0c86cacd13833a))
* add class to retrieve bootstrap nodes from nodes.tox.chat ([c3363a1f](https://github.com/qTox/qTox/commit/c3363a1feab643eba488668e30d5afc8fedc5990))
* add message if text not found ([4253301c](https://github.com/qTox/qTox/commit/4253301c5606637c8b1beae082f922af10eb365a))
* Add spell checking ([671b9456](https://github.com/qTox/qTox/commit/671b9456a88c5ef12c6e29114eed4c708f845e69))
* add function for generating a filter for search word only ([17a97f1f](https://github.com/qTox/qTox/commit/17a97f1ff68af50588012bf3b9b31a61cdf2b194))
* add startButton in SearchForm ([8dd83477](https://github.com/qTox/qTox/commit/8dd83477591f9c357abba1892e1a7a6b9ca11af9))
* add functions for change title and info in LoadHistoryDialog ([3b7ba023](https://github.com/qTox/qTox/commit/3b7ba023242ba9e2a5340eb9c1b8ed69db710aef))
* use search settings ([610e04aa](https://github.com/qTox/qTox/commit/610e04aa2698deb24af2f04db5cf3e049101a54d))
* create widget for search settings ([87b340f4](https://github.com/qTox/qTox/commit/87b340f4a14b3544cdc2ea50c1256bca974ac967))
* **apparmor:**
* Add AppArmor profile install scripts ([2e682c6e](https://github.com/qTox/qTox/commit/2e682c6e6a11d500854b09b61e271683c70c1b12))
* Add AppArmor v2.12.1 profile ([d6ef3d2e](https://github.com/qTox/qTox/commit/d6ef3d2eae072bea57d7e9fe913426b78f99b811))
* Add AppArmor profile ([89514eee](https://github.com/qTox/qTox/commit/89514eee6d9ba2495fe1d4fe845f0253601242c5))
* **build:**
* use Debian Buster for Windows cross-compilation ([6bb2c7c6](https://github.com/qTox/qTox/commit/6bb2c7c62933b6f64351c932cfe869e30f858615))
* add the delta updater ([5eea8ba2](https://github.com/qTox/qTox/commit/5eea8ba27f6bbc89f534d1432e06c90a2b64e1b7))
* remove timestamps from build to allow reproducible builds ([013771c1](https://github.com/qTox/qTox/commit/013771c13a9e68a97d113cf268e52a4751cb4505))
* add option to enable AddressSanitizer ([fd99dfd0](https://github.com/qTox/qTox/commit/fd99dfd0a5989a5e5a92588c4b229951b9c6270d))
* update docs and tools to provide signed tar.gz ([7ff1d605](https://github.com/qTox/qTox/commit/7ff1d6053a57a29ee6fcc062feb32894c848f415))
* **chatfom:** make magnet links clickable ([5b1bc7e5](https://github.com/qTox/qTox/commit/5b1bc7e52323f6832e00a50c34f8143f4d7cbf33))
* **core:**
* add send message error handling ([5289c999](https://github.com/qTox/qTox/commit/5289c99962b6be374e92163313bc620eef2cbd58))
* print a chat log entry when a user joins/leaves the group chat ([cabed6de](https://github.com/qTox/qTox/commit/cabed6def3d4b83b3c10de098bb0defa684583de))
* set group title for loaded groups ([8db744a5](https://github.com/qTox/qTox/commit/8db744a505fa3ebdb3afcc78661aa15b8586ad81))
* prepare qTox for groupchat saving ([a82eb6f3](https://github.com/qTox/qTox/commit/a82eb6f36e9e443a361de4e7efa04b92cc60be82))
* **coreav:** add assertions to check for threading errors ([8e54805e](https://github.com/qTox/qTox/commit/8e54805e7d13fe6b28c21b4ed48bc5addeae84d0))
* **db:**
* File transfer history review comments ([25005c5c](https://github.com/qTox/qTox/commit/25005c5c19c80a3cbd2d966a2bb6bfeaa20eab36))
* add file hash to file history ([8427be66](https://github.com/qTox/qTox/commit/8427be6678eae2ef151b704feb6bf408038ccdd3))
* Hookup file history to the rest of the system ([d9b39b31](https://github.com/qTox/qTox/commit/d9b39b3102eff686a072630610c199639f0d8219))
* Database support for file history ([567ddfb2](https://github.com/qTox/qTox/commit/567ddfb2035dad1f3aad94789e76f8a4e4f77d07))
* Support schema version upgrades ([fb805b9c](https://github.com/qTox/qTox/commit/fb805b9cdb5f108b15da33aa0bd6c250aac7a8b1))
* **files:** Add maximum size to autoaccept downloads ([c8716e9c](https://github.com/qTox/qTox/commit/c8716e9c4541d696ae6aa04dd6eb48bfaf76f360))
* **groups:**
* Allow being in group call if only member ([caf4f59f](https://github.com/qTox/qTox/commit/caf4f59fb2a771cce848b316673787940eadd76c))
* show who is in a group call before joining ([ec07fd72](https://github.com/qTox/qTox/commit/ec07fd7291f660f2dcc8cbb50972809eccb04b48))
* **login:** generate a GUI error when auto login fails ([74377430](https://github.com/qTox/qTox/commit/74377430ce83b4d1e10d52125fc5fb28d328c1c0))
* **notify:**
* integrate desktop notifications into settings ([4cb00957](https://github.com/qTox/qTox/commit/4cb00957f39faa375e6ad6a454c6c3dd2a97b24b))
* add desktop notifications using snorenotify ([66e2c010](https://github.com/qTox/qTox/commit/66e2c01029efad7f6195cebcf96175152ce2ce22))
* **offlinemsg:**
* Enable offline messages with no history ([2283d0c1](https://github.com/qTox/qTox/commit/2283d0c1b0221303197714cc2b6d90b3f0bb8144))
* Force offline messages to always be enabled ([d934cf37](https://github.com/qTox/qTox/commit/d934cf372b8c030de783cb57a1269224a5a88c4b))
* **paths:** create class to combine all qTox managed paths ([3ee8c665](https://github.com/qTox/qTox/commit/3ee8c665df68a22d3068804961ac46e2b793903b))
* **proxy:** provide commandline tools for proxy settings ([31fec748](https://github.com/qTox/qTox/commit/31fec7488f74dc2fe38f0a8515b415c21f3e2109))
* **settings:** save friend list sorting mode ([c8b156b3](https://github.com/qTox/qTox/commit/c8b156b3a1f756f34a0ef9229fd82033e2a5cee9))
* **themes:** make themes follow standard paths ([133ac8de](https://github.com/qTox/qTox/commit/133ac8def80a79b44899a0d781352ecfeef047c9))
* **travis:** publish nightly builds off Travis-CI ([516c52ad](https://github.com/qTox/qTox/commit/516c52ad207e84fa88606170fdf8d8e94872314c))
* **ui:**
* add event icons for all statuses ([17048c9c](https://github.com/qTox/qTox/commit/17048c9cc4b3f9ee58924637e57573e285ffa8ee))
* add update notification enabled with -DUPDATE_CHECK ([6c9d7b59](https://github.com/qTox/qTox/commit/6c9d7b59c12a6fc79fc457f22e84060a9bcde940))
* Added feature to generate colors for user names in tox groups ([aaf5229e](https://github.com/qTox/qTox/commit/aaf5229ece69fb694381164f10bb85eb6fd53ee3))
* Add ui to setup spell checking ([8d10fe47](https://github.com/qTox/qTox/commit/8d10fe47ecf806ad2a8d238d97edd14142a10b42))
#### Breaking Changes
* **groups:** Fix invalid group list on group member join ([836718aa](https://github.com/qTox/qTox/commit/836718aa263039c0e1daef0ba75593a3d35b5cdc), closes [#5838](https://github.com/qTox/qTox/issues/5838), breaks [#](https://github.com/qTox/qTox/issues/))
* **status:** use enum as UI property instead of untranslated string ([881aa308](https://github.com/qTox/qTox/commit/881aa3083aac75153f8fcc9548d48951a01f8fd2), breaks [#](https://github.com/qTox/qTox/issues/))
#### Bug Fixes
* add missing type for Qt slot ([b5785a1b](https://github.com/qTox/qTox/commit/b5785a1b0c03688f534b810482d08debbc66002c))
* remove unused variables ([7e4f7f04](https://github.com/qTox/qTox/commit/7e4f7f0489084cfbdf9a959d0d78566949cbf269))
* hide current date at the top of the chat ([bbbbc6aa](https://github.com/qTox/qTox/commit/bbbbc6aade1b32485888b1842db15f65167fbf81))
* scroll bar stuck to bottom (fix #5755) ([38df897e](https://github.com/qTox/qTox/commit/38df897e024393ba15c80017930dac19a92e13b7))
* remove reconnect button ([909deb0f](https://github.com/qTox/qTox/commit/909deb0febba2d122c7c6f2455c7cb85e83ee389))
* update workerStb ([177bf12f](https://github.com/qTox/qTox/commit/177bf12f1150a842e5263eb573fe110fb717ea5a))
* data validation during the search (fix: #5791, #5723) ([acb91ed7](https://github.com/qTox/qTox/commit/acb91ed731bece1fbdac90064446c61ab68b721f))
* empty username causes mention on ever message ([db802822](https://github.com/qTox/qTox/commit/db802822f3b2625ffa19d491d786bdb72666da49))
* check time for get num messages for friend (fix #5714) ([b0f32379](https://github.com/qTox/qTox/commit/b0f32379d098cf525bcbe003d7add071c708bd69))
* Call 'tr' in place, where text is accessible ([15d72a96](https://github.com/qTox/qTox/commit/15d72a9610bc6e4e2e93a9c36ee6536b0aa13429))
* register RowId meta type for use in fileInserted signal ([18b52ce5](https://github.com/qTox/qTox/commit/18b52ce56841f682bf193ad5820c55a62990aa2b))
* initialization theme ([d517c3a6](https://github.com/qTox/qTox/commit/d517c3a638a9355ba8a799fd00119a56a3e9c88d))
* fix uninitialized variable ([ea18b613](https://github.com/qTox/qTox/commit/ea18b613ba4157529af2e1e888bd93d73d7ec7be))
* fix uninitialized variable ([52f0e2db](https://github.com/qTox/qTox/commit/52f0e2db9417af76eedf133f4435bc926bf659b1))
* Store groupId in D&D mime data ([8499a710](https://github.com/qTox/qTox/commit/8499a710929e045be8f031b25f44e19fed5d35f8))
* check valid date in getDateWhereFindPhrase ([c3095ab1](https://github.com/qTox/qTox/commit/c3095ab150a360cfc1787d84ab3c6a503cc31c9e))
* (chatform): Issue 5115, use QSharedPointer for groupChatForms ([37e5b6ce](https://github.com/qTox/qTox/commit/37e5b6ce8ba572b0f6e3dc067b7f7c99963515b7))
* fix memory leak in CoreAV and missuse of std::uniqe_ptr ([d776e6c3](https://github.com/qTox/qTox/commit/d776e6c34f495dfec445a55dd16ff71b2f0b7af5))
* add remove history prompt, clear log area after remove ([e6d40be7](https://github.com/qTox/qTox/commit/e6d40be72eff546f07b30a2ad33dc95fc8a29362))
* show the date every new day (fixes #5280) ([8808c630](https://github.com/qTox/qTox/commit/8808c630f25f72ebb9974fa2786d83a9e11e49b8))
* correct format log files ([ee0d4bb8](https://github.com/qTox/qTox/commit/ee0d4bb880a986416ed9d0ca4c147adb0bfbc37a))
* **AVForm:** don't load gain when device not ready ([cef773c4](https://github.com/qTox/qTox/commit/cef773c4f69d079340f1379d4a7d787cea03acce))
* **CircleCI:** make cache depend on script files ([7bbbb737](https://github.com/qTox/qTox/commit/7bbbb7377a180fc3e277ecb0a02606beb072b76b))
* **TravisCI:** build windows for release tags too ([c53a58e6](https://github.com/qTox/qTox/commit/c53a58e64e737a206378d3a92a5282df0758d4e7))
* **UI:** update peer label's style after setting audio playing property ([47795073](https://github.com/qTox/qTox/commit/477950737ffe2e6350862f00aa644da4235c99fc))
* **activity:** change last activity time from QDate to QDateTime ([d55332ee](https://github.com/qTox/qTox/commit/d55332ee0a0fdda8f63c6ac49f4feb8762bbcc9d))
* **alias:** allow clearing alias from chatformheader ([dfec934f](https://github.com/qTox/qTox/commit/dfec934ff043d631b3a445f557454f0afecb981c))
* **apparmor:**
* Make network rules more strict ([11a32e33](https://github.com/qTox/qTox/commit/11a32e337182df5161299e648dc9fdc2b41e47cc))
* Fix typo in file path ([4d9cc721](https://github.com/qTox/qTox/commit/4d9cc7216af59ebf9300d433ba3bfc4e2709977a))
* Fix screenshot capture under AppArmor ([5304ba4c](https://github.com/qTox/qTox/commit/5304ba4cb0de52008cc9f9b6ae3c6838fa54b717))
* Backport fix from dri-common abstraction ([f6c11c9b](https://github.com/qTox/qTox/commit/f6c11c9b6d2f6412ca5204a491e22cc12decab5b))
* Fix openSUSE-related AppArmor denies ([7a1fb927](https://github.com/qTox/qTox/commit/7a1fb927ec4e4d74e5381aab40d57228c072fade))
* Fix font-related denies on openSUSE ([488b8a86](https://github.com/qTox/qTox/commit/488b8a869628d142e87663e36dc9e86981016d96))
* fix file dialog denies ([4565ac1b](https://github.com/qTox/qTox/commit/4565ac1b19903023d6d71043b37f120977e9b451))
* fix file dialog on KDE desktop ([dffe00b4](https://github.com/qTox/qTox/commit/dffe00b4e3ddcef5a56ec37fd3d4fcfd847c2704))
* backport kde abstraction ([e1ba972d](https://github.com/qTox/qTox/commit/e1ba972d8bfa2e1c1b98bd73417d783b4abd2077))
* Fix spam of DENIED messages on openSUSE ([c8eb34f0](https://github.com/qTox/qTox/commit/c8eb34f028e2051cc83b877c65799c289c6dc21e))
* Fix DBUS denies on Kubuntu 18.04 ([1d120b15](https://github.com/qTox/qTox/commit/1d120b15c27706bfe3b4b4d8ad911db37b33ef41))
* Backport dri-enumerate abstraction ([79f800b3](https://github.com/qTox/qTox/commit/79f800b39a3b0b12faf4959429104e14ecf881e5))
* Fix .local/share/qTox/ access ([e13b8a97](https://github.com/qTox/qTox/commit/e13b8a973eb8be8252a21feb066bd1853e9002a0))
* Fix access to openssl configuration ([514cd368](https://github.com/qTox/qTox/commit/514cd368264fdacdf36013ffb496910475506422))
* Fix dbus access ([a6c01eb0](https://github.com/qTox/qTox/commit/a6c01eb00713c21d8bc64cba47e511b0b5737908))
* Fix hunspell access ([577aeb8f](https://github.com/qTox/qTox/commit/577aeb8fa36b54d95f5b68b6c1533b170105e6ed))
* Fix accessibility DBus access ([a67faf29](https://github.com/qTox/qTox/commit/a67faf2976d2b8bcb67ae2feceb3772e3d3266fd))
* Fix qTox cache access ([aef47056](https://github.com/qTox/qTox/commit/aef47056367642d842e090d2362698dfcf9cc06a))
* Add ibus abstraction ([9fc89338](https://github.com/qTox/qTox/commit/9fc89338830a1c208b79991b9b2451f059827265))
* Backport qt5 abstraction for v2.12.1 profile ([6aa4435d](https://github.com/qTox/qTox/commit/6aa4435d174e71d4a788bbb27514387a34d1c6b9))
* Fix loading libraries from custom install prefix ([5fad77b9](https://github.com/qTox/qTox/commit/5fad77b9f8813d87b97d4b1e8a7d862e2deb13cf))
* Fix AppArmor profile for version 2.12.1 ([f8f7a2d1](https://github.com/qTox/qTox/commit/f8f7a2d14554919b424929403fb74f665c50a6fd))
* **audio:**
* correctly loop incoming call sound ([85f90ab2](https://github.com/qTox/qTox/commit/85f90ab2219b3c6bd5e9eaf3b948ad56016e6aaa), closes [#5680](https://github.com/qTox/qTox/issues/5680))
* input device not closed under certain circumstances ([80f5cb5f](https://github.com/qTox/qTox/commit/80f5cb5f7a275f2dc498e8f3fe3a84d702133789))
* specify format for sounds and make sounds follow it ([5d65ab38](https://github.com/qTox/qTox/commit/5d65ab387631cf76adfc36f3f0bf356ec7fd6f7b))
* **autocomplete:** don't auto-complete own nick ([f188409b](https://github.com/qTox/qTox/commit/f188409b8ce85515fc3b45a2aedb3af79af2b009))
* **avatar:**
* reject avatars that are larger than 64KB ([6e2ac12d](https://github.com/qTox/qTox/commit/6e2ac12d84df141b85b427765a74a704146d5b70))
* set friend to identicon on empty avatar receipt ([0c757356](https://github.com/qTox/qTox/commit/0c757356d3efe79438fdbe232e5c4b0354b7a740), closes [#4724](https://github.com/qTox/qTox/issues/4724))
* **blocked:** change blocked icon to match other used icons ([ff5c9052](https://github.com/qTox/qTox/commit/ff5c90525de6ee7e0b1c6ea6d27cc203f81c5aea))
* **build:**
* disable Werror by default, keep enabled on CI ([9888bc2d](https://github.com/qTox/qTox/commit/9888bc2d8072f0360a10ba32b6a5834668f0349f))
* appease appstream-glib validate ([98a364ea](https://github.com/qTox/qTox/commit/98a364ea2e13041f9c94dc9b70ed626226383683))
* fix OpenAL Soft failing to build with newer CMake ([2419b627](https://github.com/qTox/qTox/commit/2419b6276282d4ccc8f9dd26592872318684cced))
* fix SQLCipher build issue with OpenSSL 1.1.1 on Windows ([8be99c08](https://github.com/qTox/qTox/commit/8be99c0861a1e9864a27d01b6d2b5ab8a38c578f))
* fix cmake command in appimage/build.sh ([e9665d51](https://github.com/qTox/qTox/commit/e9665d517aada920d81e57b9a5370bfb22773fbd))
* install and use AppImageUpdaterBridge ([837416b9](https://github.com/qTox/qTox/commit/837416b9039252720295a58568e36be50e36c3f5))
* bundle missing libjack.so* to work with Fedora Workstation ([e50b3bbd](https://github.com/qTox/qTox/commit/e50b3bbd5c2e25a7d0dad8e7a374f785b57a172f))
* copy OpenSSL libs to AppDir ([7153c1f2](https://github.com/qTox/qTox/commit/7153c1f2bf27c999be125fb136ab6383305eb875))
* add required private slots ([a9a953cf](https://github.com/qTox/qTox/commit/a9a953cf1cdd8a6142081b4ecf54060ce6ca993b))
* fix ifdefs ([d23e4fd7](https://github.com/qTox/qTox/commit/d23e4fd7095ed07d7d0173bab0edb90bdb799f7d))
* fixup CircleCI 2.0 config ([9caeb943](https://github.com/qTox/qTox/commit/9caeb943616c3092f26b9b1fc2f42a971f8a85c3))
* show brew compilation progress to avoid being killed by Travis ([fd709722](https://github.com/qTox/qTox/commit/fd7097222d48304e3e509d20488eb158eef9c493))
* manually update brew to workaround autoupdate bug ([c9cb5fef](https://github.com/qTox/qTox/commit/c9cb5fefdd34a431d8f65caf477117f043365d2a))
* add cmake_policy for CMP0071 to suppress warinings in cmake ([6a240141](https://github.com/qTox/qTox/commit/6a240141eafbc5304bc0fcc572d3b7f8e2eb6f5b))
* fix default cmake build not actually being debug ([edb306c7](https://github.com/qTox/qTox/commit/edb306c723cbbf4e7aa18fd4f08446ecf6053718))
* **calls:** Fix SIGSEGV on quit while in call ([87eed97a](https://github.com/qTox/qTox/commit/87eed97ab3daf432a7ed215f8dbeca95ce265dff))
* **chatform:**
* Prevent date line oscillations maxing CPU ([64bae38b](https://github.com/qTox/qTox/commit/64bae38b999ee4ddd955695300beb1e5bb20446f), closes [#5620](https://github.com/qTox/qTox/issues/5620))
* don't try to send empty action messages ([89e94b6f](https://github.com/qTox/qTox/commit/89e94b6f895c8c57f4541147b6e56ec4d30adaac))
* fix stuck spinner on messages not at end of chatform ([9819aefc](https://github.com/qTox/qTox/commit/9819aefc44767220e696b9c0de0594a5992ee706))
* fix a crash when there are no messages to load ([040c6b95](https://github.com/qTox/qTox/commit/040c6b95aed26dfc7950770ed4dca379e8be2bc5))
* crash after opening chat in new window ([59a59fdc](https://github.com/qTox/qTox/commit/59a59fdc09ee5cbf32c915b94cb8ba8e8f0a29b1))
* add hack to avoid Qt bug on chat show ([e8d48e87](https://github.com/qTox/qTox/commit/e8d48e87888548c92daa88880ee7689d58b0c490))
* don't attempt to send messages to offline friends ([d9e587e4](https://github.com/qTox/qTox/commit/d9e587e4f5f85df979ed11fabfed443280716045))
* mark message with triple click ([2cdff7e9](https://github.com/qTox/qTox/commit/2cdff7e9ed5efd5402a7cb053bbf24cd29034927), closes [#5211](https://github.com/qTox/qTox/issues/5211))
* **chatlog:**
* enable dynamic view range in chatlog with history disabled ([a7f34959](https://github.com/qTox/qTox/commit/a7f349595696b3292897ac72b5cffb05b7300eda))
* fix stick to bottom behavior ([f2fa6010](https://github.com/qTox/qTox/commit/f2fa601073373ae2ef9fba7952aed415af3ccee0))
* update precise selection when chatlog content changes ([b95bac23](https://github.com/qTox/qTox/commit/b95bac238d1caa40086f19b83dc20e0e9243719d))
* Prepare geometry changes on chatline proxy ([74d0b47c](https://github.com/qTox/qTox/commit/74d0b47ceb39c3c8962f77f8f6b3060476f64e67), closes [#5818](https://github.com/qTox/qTox/issues/5818))
* update multi line selection on chatlog change ([2bba1217](https://github.com/qTox/qTox/commit/2bba12175ee34b835c3888c391b3169f56d36bf7))
* update timestamp when db is slower than ack ([ca397aeb](https://github.com/qTox/qTox/commit/ca397aebbfb388df3754d36331d669c74d87a15c))
* **ci:**
* quote shell comparison to avoid errors when unset ([475128d1](https://github.com/qTox/qTox/commit/475128d171984de5f9ff34f98020a119dce65b42))
* fix travis' window build in debian docker by upgrading libseccomp2 ([93c9eef5](https://github.com/qTox/qTox/commit/93c9eef51f8143c3e3e5c1e63e0cc64d1d533f6e))
* upgrade travis to xcode9.3 to get macos 10.13 with brew support ([6fb5b205](https://github.com/qTox/qTox/commit/6fb5b205f41d4e37d2d4964af2a99fc5abc937f6))
* increase bsu_test timeout ([81901696](https://github.com/qTox/qTox/commit/819016960d33664eb3b0af11c85dbe24c4277777))
* **core:**
* message when peer changes group name ([0b5f7511](https://github.com/qTox/qTox/commit/0b5f751104664fb1d624910ed930ab1b05a7cc4f))
* avoid using stack allocated memory past end of scope ([9b23abc6](https://github.com/qTox/qTox/commit/9b23abc6dedf2ecba84920ef878335c9a76c592f))
* avoid logging which bootstrap node is being connected to ([731a4985](https://github.com/qTox/qTox/commit/731a49854a6b94b2b237048765e76f2695125181))
* don't log critical on every group join ([e4f73011](https://github.com/qTox/qTox/commit/e4f73011f9346332d27a8d59a1fbb07834c32edb))
* save tox profile when updating group or friend states ([3d7a872f](https://github.com/qTox/qTox/commit/3d7a872f1aeb2388e3a8f583fd7d494ee7f66185))
* don't set core status on connect, just update UI ([602671c9](https://github.com/qTox/qTox/commit/602671c9dcb1c9f42dd2d7fb9dfbadd729fb8efd))
* correctly relink ui/core when core is changed ([17d5d552](https://github.com/qTox/qTox/commit/17d5d55259ab9864c430df8bdc9b440a0315a59c), closes [#5710](https://github.com/qTox/qTox/issues/5710))
* if your username is empty, use toxPK instead in groups ([72bcc6ac](https://github.com/qTox/qTox/commit/72bcc6acaf22ef78c2db852a5cabf45f42e5af90))
* also print PKs in group userlist ([066bdc5c](https://github.com/qTox/qTox/commit/066bdc5cc1b0bbe05c35bb184f8b6981fd95e0ce))
* this should resolve message handling in persistent groups ([ee500703](https://github.com/qTox/qTox/commit/ee500703aab6418fde60ddd7237e6461fb5c7f55))
* fixed syntax ([7a437c74](https://github.com/qTox/qTox/commit/7a437c74493333bb77f18418059ff329dde55340))
* ignore mentioning users with empty nicknames ([96ad27f6](https://github.com/qTox/qTox/commit/96ad27f644fd151a608abdffe045ad215db28564))
* fix for users without nicknames ([2000bf55](https://github.com/qTox/qTox/commit/2000bf55f2f7e3c3573df8130e74850b1202b044))
* update group peerLists on local changes ([01f79b0d](https://github.com/qTox/qTox/commit/01f79b0d084176c4b6deaa289060f60652bf7428))
* support user aliases ([feee0e76](https://github.com/qTox/qTox/commit/feee0e767ffa15b2145f82d16da9c47c2d2f580e))
* this fixes displaying nickname refreshes in groups ([9b261fd8](https://github.com/qTox/qTox/commit/9b261fd870f8a240cdf93c5acc2235efaa7a8116))
* fix formatting ([c136a17f](https://github.com/qTox/qTox/commit/c136a17ff0f1eb29b7e9e3b56b0fb8f036ab0fbb))
* simplify the code ([8c239c8e](https://github.com/qTox/qTox/commit/8c239c8ef6d47177cabfcfca79783d188ac9c76b))
* fixed Timestamps ([6872ead8](https://github.com/qTox/qTox/commit/6872ead850eeab5cea2e036cb1701da8e116d51e))
* remove pgc code ([10a4b249](https://github.com/qTox/qTox/commit/10a4b249bbbc7e08923f543a96916911a3a799c4))
* set username and status on new profile ([109a4ffd](https://github.com/qTox/qTox/commit/109a4ffd43af5018d5848bfe8debfeddff3c4b9b))
* ensure QTimers are moved with the objects they belong to ([26206a35](https://github.com/qTox/qTox/commit/26206a35ebb7072b55877c91aa509eac4b96a17a))
* Fix misuse of toxcore tox_file_send API ([f988177a](https://github.com/qTox/qTox/commit/f988177a9b6af866ef2cf3aed9e5237ef76d5771))
* **coreav:**
* prevent racy access to call variable ([dfeca3e9](https://github.com/qTox/qTox/commit/dfeca3e90637a55ce97013ffcf0cfece0e1699a4))
* change some lock to write locks ([26fcea06](https://github.com/qTox/qTox/commit/26fcea0639ba3af839b0e2017342f92cfdb83df7))
* fix assert because c-toxcore calls from unexpected thread ([e340688b](https://github.com/qTox/qTox/commit/e340688b94845cf9a37848b757c7b97aec549d94))
* avoid deadlock between CoreAV, main and Audio thread ([723a8e5d](https://github.com/qTox/qTox/commit/723a8e5dc75d5aaf0c0fb40ce041771c7bdc1abd))
* cleanup assertions ([a4ac6d67](https://github.com/qTox/qTox/commit/a4ac6d67c7a8459627ca4e5451af1064a670dd67))
* **corefile:**
* cancel file transfer when peer goes offline ([6522988e](https://github.com/qTox/qTox/commit/6522988e8c2ef408278c0602ac9fd756b235b77b))
* handle empty avatar transfer in core ([1628d495](https://github.com/qTox/qTox/commit/1628d495d1c27a4864474d5e4a725e690b0dfba7))
* include file id in map when sending empty avatar ([b1eefc3f](https://github.com/qTox/qTox/commit/b1eefc3f230de36c76a3b158bc55f412f0a65a2a))
* **db:**
* Support opening and upgrading to any of three SQLCipher params ([2c59c920](https://github.com/qTox/qTox/commit/2c59c9203035e35d81adc982ffe7e661d37e9b1f))
* Add half-upgraded cipher params ([deb7fbb6](https://github.com/qTox/qTox/commit/deb7fbb67cb5e7f799b01a37791e613471fff95a))
* fix schema log to display correct version ([92e51b05](https://github.com/qTox/qTox/commit/92e51b05acc550a71e58fe8ecc37181b72602a12))
* show full sqlite error message ([86b55a0f](https://github.com/qTox/qTox/commit/86b55a0fb0bf1bf5e2fc5ff64918e36c36f88f8f))
* prepare and execute queued statements one at a time ([d98fe85a](https://github.com/qTox/qTox/commit/d98fe85a582777b454724f0d3ea0642bd3a4b032))
* preserve user_version when adding or removing database password ([7e07025d](https://github.com/qTox/qTox/commit/7e07025d3c74c9bff32d840f5b1165fa2768a0ec))
* support databases with either SQLCipher 3.x or 4.x defaults ([dafb17b5](https://github.com/qTox/qTox/commit/dafb17b5fa81259a7a70804b56c233b05e76c3b9))
* use SQLCipher 3.x crypto even with SQLCipher 4.x ([e80dbe2d](https://github.com/qTox/qTox/commit/e80dbe2d83fdb133cedaddefad5fc2dff5a6ec91))
* **docs:** remove extra comma in README.md ([fee147d7](https://github.com/qTox/qTox/commit/fee147d788706d0b43c6d17a7d57514683c6f207))
* **flatpak:**
* workaround unstable flathub downloads ([55b1f6af](https://github.com/qTox/qTox/commit/55b1f6af255c3322b9b4a2b89e7d8d7a6cf27fed))
* use SVG for icon ([489027ea](https://github.com/qTox/qTox/commit/489027ea1ef958543a5f90bca9288076497f4204))
* **friendlist:**
* don't update friend's last activity on every start ([5f40ed8d](https://github.com/qTox/qTox/commit/5f40ed8d8c08cc7305506d796543c295d767515c))
* don't skip half of friends when sorting by activity ([3f922100](https://github.com/qTox/qTox/commit/3f922100af599e0c19925895f7d43b5a1b6932e5))
* **group:**
* don't display netcam view for group voice calls ([5b31effd](https://github.com/qTox/qTox/commit/5b31effdb4f4b22c4d2ad64193ce799bef0db2b6))
* use valid pointer, allowing source invalidation ([765fce94](https://github.com/qTox/qTox/commit/765fce94b73b7e7f31680f352126575cbf129a19))
* Condense invalid title handling logic, clang-format ([aeddf482](https://github.com/qTox/qTox/commit/aeddf4822ad9930321a04a5a3cff4c7f3a5f1025))
* fix logic oversight and code style ([a1a37497](https://github.com/qTox/qTox/commit/a1a37497006a5440ea5ab529c2fe413e133d4c4e))
* set default group chat title when provided title is invalid ([f77a0621](https://github.com/qTox/qTox/commit/f77a062120f64bde9460e6caf4e71d0d802d4c21))
* always retain own name when updating group peer list ([c772db3b](https://github.com/qTox/qTox/commit/c772db3baa3f9e4694fa7f956ffdfb9ffab36cef), closes [#5686](https://github.com/qTox/qTox/issues/5686))
* treat empty peer names like empty friend names, by showing pk ([04f1ccda](https://github.com/qTox/qTox/commit/04f1ccda35595832dc2c7465bfada029b07bde80))
* **groups:**
* Correct color of labels in group call ([3205c2c4](https://github.com/qTox/qTox/commit/3205c2c4079c3ad20766314e642e4ba583cf1e8f))
* Avoid segfault when resizing group audio window ([ce9e820b](https://github.com/qTox/qTox/commit/ce9e820b377f1f899846ca05a3d548a4100fd333))
* Correct color of labels in group call ([f27eb5b7](https://github.com/qTox/qTox/commit/f27eb5b76c62c724096658df134de3d4f28289e0))
* Avoid segfault when resizing group audio window ([d4d4308e](https://github.com/qTox/qTox/commit/d4d4308e286ffcf9fc23aafb95eb4c9786d85cca))
* Fix invalid group list on group member join ([836718aa](https://github.com/qTox/qTox/commit/836718aa263039c0e1daef0ba75593a3d35b5cdc), closes [#5838](https://github.com/qTox/qTox/issues/5838), breaks [#](https://github.com/qTox/qTox/issues/))
* reduce group message size limit by 50 ([6c77d57d](https://github.com/qTox/qTox/commit/6c77d57da8cd35e46251e9835d2edc9c9737197f), closes [#5760](https://github.com/qTox/qTox/issues/5760))
* remove logic that blocks parseConferenceSendMessageError ([9099eea0](https://github.com/qTox/qTox/commit/9099eea04ffdf9dc624a30ff8efa55b006a306d7))
* enable AV groups after load ([33d42c97](https://github.com/qTox/qTox/commit/33d42c9766e20fb62bb6a679b5a3f087904fa478))
* don't add friend alias to groups they aren't in ([6801298e](https://github.com/qTox/qTox/commit/6801298e964f73b8dc8d69a026ea3b1951e00322))
* fix assert on group invite accept ([0f5ad725](https://github.com/qTox/qTox/commit/0f5ad725d7173ec1a63892d0e6e1ffea768c42b8))
* add peers if already playing audio when netcam created ([e4891687](https://github.com/qTox/qTox/commit/e48916877536b34bf704414a77b65c2533078abc))
* don't add peers to netcam view until they play audio ([7c13b8b7](https://github.com/qTox/qTox/commit/7c13b8b7db0b948fc7cf76b4d640efb2aec9c980))
* check for label in timer audio playing timer callback ([d2508e7e](https://github.com/qTox/qTox/commit/d2508e7eac26d731c746333b5d74e9a051d3f5b7))
* avoid having to lookup peer pk ([13afbf7e](https://github.com/qTox/qTox/commit/13afbf7ec6e80a50fe9f6b04f31962de1d0bd0c7))
* don't invalidate all audio sources when peer list changes ([8422c09f](https://github.com/qTox/qTox/commit/8422c09f6a8a8043ce4c46ba4021680562aeb666))
* don't freeze when opening AV settings during group call ([093962e3](https://github.com/qTox/qTox/commit/093962e3ec05aa21a27083e9d7e096c00194568d))
* correctly show peers in the call after joining call ([d6abf76a](https://github.com/qTox/qTox/commit/d6abf76a279e45c21c4644b1bf571b1a95948b55))
* only leave audio call if in a call ([92d3c959](https://github.com/qTox/qTox/commit/92d3c959a1bc80688957c4775eb781e8804b76df))
* **history:**
* check history settings when getting initial chatlog idx ([c906cdf5](https://github.com/qTox/qTox/commit/c906cdf57b3c4230cdb013d2f9cb4a5bdfc9aea4))
* Prevent invalid history access ([e3e6e1d9](https://github.com/qTox/qTox/commit/e3e6e1d9c4e22d6f090f153628677ad427cf4900))
* move stuck action messages to broken_messages table ([746314ba](https://github.com/qTox/qTox/commit/746314baf23118be28c5e38ee305448e5ad68ef3))
* display broken messages UI with error icon ([1a726b54](https://github.com/qTox/qTox/commit/1a726b54cd2e1d72c6cb6f0f9a733e904f5e5371))
* select broken messages from History, track in ChatLogMessage ([f6a15366](https://github.com/qTox/qTox/commit/f6a15366eff7254fc095f6a323272b602ebc9c30))
* move stuck pending message into broken_messages table ([b28dc300](https://github.com/qTox/qTox/commit/b28dc300610d096966bf18864bda0616efdc93ba))
* handle errors during db upgrade ([f72f3f71](https://github.com/qTox/qTox/commit/f72f3f714daabd955b256ec696c8917d0820c8b7))
* select only pending history for the requested friend ([64aa3eae](https://github.com/qTox/qTox/commit/64aa3eae4d687d899a56705c8105a10a8eac4db5))
* create file_transfers table in upgrade ([c12605db](https://github.com/qTox/qTox/commit/c12605db6d645ca313997543c8057a3dfd87bb48))
* save name to history for friend invite message ([2ccb1ec1](https://github.com/qTox/qTox/commit/2ccb1ec150ed721123b2d1d27b1f726390556522))
* **icon:**
* use Qt tray icon in all cases, remove platform specific backends ([e85d3f52](https://github.com/qTox/qTox/commit/e85d3f522a4f38a5fb189dafa0b47b38f365dbf0))
* make busy notification icon translucent in middle ([da4928b7](https://github.com/qTox/qTox/commit/da4928b70481fda5f60707ae000e3442c77eaf5b))
* centre taskbars ([84836cf6](https://github.com/qTox/qTox/commit/84836cf6a0a549909b5be51c0016ee7c11a88a05))
* **interface:** use virtual destructors for all interfaces ([2b981d88](https://github.com/qTox/qTox/commit/2b981d88a2ddf9cca480ce1045ec558b63284a1f))
* **ipc:** handle ipc failure gracefully ([9dd08397](https://github.com/qTox/qTox/commit/9dd083978ece575820469c38a3b78418e8a5dfaf))
* **log:** don't attempt to close log file if it failed to open on exit ([fae9066b](https://github.com/qTox/qTox/commit/fae9066be6d982854d716ac5a077e4193047a85d))
* **logging:** only log toxcore messages above TRACE level ([7a98ea2d](https://github.com/qTox/qTox/commit/7a98ea2def1d97b759b6a017fe46f8c03aa4f0eb))
* **login:** show login screen when autologin fails ([e55e50d5](https://github.com/qTox/qTox/commit/e55e50d5105bc58cfb39b6ea64c8d2c6cc09ad76))
* **loginScreen:** make loginScreen return values comply with Qt standards ([b4bc0934](https://github.com/qTox/qTox/commit/b4bc09345c682ef0c84521ff60cc8f58fb80b87a), closes [#5781](https://github.com/qTox/qTox/issues/5781))
* **main:** register IPC handlers only after starting up ([bc3d3b3b](https://github.com/qTox/qTox/commit/bc3d3b3b13ad64ebae3a235557a761f3eca35bfd))
* **messages:** Fix broken sanitized name for notifications/alert messages ([fef89d70](https://github.com/qTox/qTox/commit/fef89d70f97edbf2218009e9842f32ad70aa84e5))
* **model:**
* take QObject receiver argument to interface signal connection macro ([3a5e28ff](https://github.com/qTox/qTox/commit/3a5e28fffb56c1907950b12635c363c3d20216b4))
* stop interfaces from inheriting from QObject ([b7062b25](https://github.com/qTox/qTox/commit/b7062b251852347dff19595b5bf5eea43d53fcce))
* return connection from interface macro ([40e43586](https://github.com/qTox/qTox/commit/40e43586f10bbda9ce8e6647c41b9613c775439a))
* **net:** check if the node has all needed fields ([bdb3b61e](https://github.com/qTox/qTox/commit/bdb3b61ee0420fb43a5097dc950f302370716558))
* **notification:** implement review comments ([cd50376c](https://github.com/qTox/qTox/commit/cd50376c2f71561dc8abf0d9318dd954a82fed78))
* **offlinemsg:**
* don't invalidate iterator before use ([1f80173b](https://github.com/qTox/qTox/commit/1f80173b2d8337fb40068f57e14e1a08a70165ec))
* fix offline message dispatching on history load ([dbef0b75](https://github.com/qTox/qTox/commit/dbef0b750865473c167683de2a630b4707aa755e))
* **offlingmsg:** only dipatch offline messages on friend online change ([479b39f5](https://github.com/qTox/qTox/commit/479b39f5364dc85817ea1cd31a8046c9bd48d989))
* **osx:**
* Add camera and microphone usage description. ([28341d84](https://github.com/qTox/qTox/commit/28341d8457127f696b5c2c157d51ebd5d5700086))
* create /usr/local/sbin directory for brew package installation ([e97b2705](https://github.com/qTox/qTox/commit/e97b27058463df88a28a366f8573cd2238c8bb9e))
* **paths:** fix bugs uncovered while developing test cases ([0ea40905](https://github.com/qTox/qTox/commit/0ea409054ab1a0b950bdcd36a448dc795cd571d9))
* **profile:**
* load settings before starting Core ([0a30c1b1](https://github.com/qTox/qTox/commit/0a30c1b1c0d6587581dea4d00f3ae1651640575b))
* avoid deadlock with between main and core thread ([aed820ba](https://github.com/qTox/qTox/commit/aed820ba60fad35b744cc3671ff7b90373c663bc))
* **search:** application crash when starting a search ([77d55d5d](https://github.com/qTox/qTox/commit/77d55d5d7d70a168b9b3a24d865eb1b03eee918a))
* **settings:**
* apply toxcore settings for encrypted profiles ([74828c92](https://github.com/qTox/qTox/commit/74828c92e55f40ef22bf02e7440f31896fcea375))
* load personal settings before constructing core ([bef9d4b7](https://github.com/qTox/qTox/commit/bef9d4b77348d78f0c6536827a0fed511dcd9b95))
* repair saved invalid proxy type due to #5311 ([c8ffa1f9](https://github.com/qTox/qTox/commit/c8ffa1f921cbe36391f5d90ba888451a9310b5d8))
* Add mutex locks for consistency ([24f8bbf3](https://github.com/qTox/qTox/commit/24f8bbf35a06f2338f84eb8c1b3894cbf48d4d54))
* save settings early on Windows shutdown ([7839a260](https://github.com/qTox/qTox/commit/7839a2608396c77b60d67ab7aeeecc9c086bb71a))
* set default proxy type to None, enabling UDP by default ([a2c44cbe](https://github.com/qTox/qTox/commit/a2c44cbeda247bf06953a641d8d745fd0d3df62c))
* **status:** use enum as UI property instead of untranslated string ([881aa308](https://github.com/qTox/qTox/commit/881aa3083aac75153f8fcc9548d48951a01f8fd2), breaks [#](https://github.com/qTox/qTox/issues/))
* **test:**
* create db tables in defined order, verify indexes ([05064771](https://github.com/qTox/qTox/commit/05064771abe045c59d747c8f778bb9eb829b37b9))
* include <set> in groupmessagedispatcher_test.cpp ([34e1e25b](https://github.com/qTox/qTox/commit/34e1e25b7fb12dc662ed197e615c422ea56c867a))
* **toxcall:**
* move ToxCall ownership to correct Thread ([df7fe223](https://github.com/qTox/qTox/commit/df7fe2239831484c1301350b5f940f59937744c5))
* handle Null sink correctly ([f02943c1](https://github.com/qTox/qTox/commit/f02943c191ea961d97c343c0360fe550ebe7c75d))
* **toxoptions:** handle nullptr in parameters ([6cce0dae](https://github.com/qTox/qTox/commit/6cce0dae838a08464661f56177c3474d4477e236))
* **transfer:** Accurately represent pause state in UI ([293a1d61](https://github.com/qTox/qTox/commit/293a1d615c0187e906453e7df904ffb320acc554))
* **travis:**
* update pyenv to python 3.7 after updating ubuntu to 16.04 ([a44cce65](https://github.com/qTox/qTox/commit/a44cce65beb60c5f280b651e0c084fa9c2bdb0dc))
* fix latest nightly release not updating sometimes ([9b67d261](https://github.com/qTox/qTox/commit/9b67d2619c575cb24a30507d231ac7ca95181221))
* **ui:**
* add vertical spacer to profileform ([c13ede85](https://github.com/qTox/qTox/commit/c13ede85df80faa67aee12b0c096dee52d94c464))
* fix auto-accept directory setup display ([8c5cab93](https://github.com/qTox/qTox/commit/8c5cab935ccf3d902d0a9c10509798bbe236a86c), closes [#5917](https://github.com/qTox/qTox/issues/5917))
* fix reversed mute/unmute hover text ([0055c776](https://github.com/qTox/qTox/commit/0055c7760cd10caa7814acc36d41a12e2bca8af3))
* fix away icon shape ([b4450319](https://github.com/qTox/qTox/commit/b445031912ae943d7580ea21f6813e9f71bc03ee))
* fix 2 ([1c02dc2d](https://github.com/qTox/qTox/commit/1c02dc2d6ba4f6d217c2fc55fa513d252aa4dbde))
* minor fix ([161a773d](https://github.com/qTox/qTox/commit/161a773dbbc4546442ad67dc96400fcd583fdccf))
* revert CMakeLists.txt ([821ed526](https://github.com/qTox/qTox/commit/821ed5261641043121d0b716d381346ac7502a15))
* apply requested changes ([f8b54b39](https://github.com/qTox/qTox/commit/f8b54b39f311b6d05b29e517c88c7fcf5fa4f5de))
* don't forget to update UI ([84e41303](https://github.com/qTox/qTox/commit/84e41303ce6297df68886d4a1615a07286aed794))
* minor fix ([4a6ebff6](https://github.com/qTox/qTox/commit/4a6ebff63a78650279856fcf3e1737d54e2523a0))
* Added option to hide message sender and contents ([3b305dd0](https://github.com/qTox/qTox/commit/3b305dd05a8210928a2bed7026b7f4fa7d9003bf))
* Improved notifications ([1bbe210c](https://github.com/qTox/qTox/commit/1bbe210c254a8ebbc6f529def5632ac47a941077))
* don't duplicate group peer name in tooltip ([87a53fad](https://github.com/qTox/qTox/commit/87a53fad96eb372630914748a864a45f55f13d29))
* show empty status as placeholder instead of as status ([e9f87951](https://github.com/qTox/qTox/commit/e9f8795197613326ba7e3d6d79a88c5ecd2cce30))
* fix typo, add plural to translation ([0dc46cdc](https://github.com/qTox/qTox/commit/0dc46cdc81bd49f892b75fc49f2944ed826d296b))
* update UI when leaving group call due to being last member ([7f802f59](https://github.com/qTox/qTox/commit/7f802f593eed3f49f9f209aa45f64851e3c32b23))
* add tooltip to about friend window ([4e76084c](https://github.com/qTox/qTox/commit/4e76084c6f634c2dde87c5797c1a18f6592fbda8))
* provide context when emitting friendWidgetRenamed() ([0b6d6d77](https://github.com/qTox/qTox/commit/0b6d6d771539ee7c67d4850dbd7586807cdaa92d), closes [#5495](https://github.com/qTox/qTox/issues/5495))
* tighten idealSize() for chatlog Timestamps ([c9f3830b](https://github.com/qTox/qTox/commit/c9f3830bc28dc0b0c7e6597f86a27fff0657cbd1), closes [#3957](https://github.com/qTox/qTox/issues/3957))
* remove useless variable ([2557f5e0](https://github.com/qTox/qTox/commit/2557f5e04521a7e19708e6254936e9d0eb625beb))
* oops ([d54e2106](https://github.com/qTox/qTox/commit/d54e21064c596dceef87b43b41d5b2723f244131))
* fix anything ([89cb2425](https://github.com/qTox/qTox/commit/89cb24254dc21077e2d0b8d014932e87940586ba))
* groupcolors fix2 ([a4a8e361](https://github.com/qTox/qTox/commit/a4a8e361d0e5aed1b3461dacd63b6a3600339a6f))
* groupcolors fix1 ([ab89ca2d](https://github.com/qTox/qTox/commit/ab89ca2d8ebb641d7af2d5b1100eafe8bde759d4))
* allow adding friends with Tox URI ([dec90ad8](https://github.com/qTox/qTox/commit/dec90ad84da5edd2c530196af8024a1259c58068))
* require . in www.url regex matching ([13b15a87](https://github.com/qTox/qTox/commit/13b15a87d71a91cbe49d7f868e914caf8d0aadc5))
* re-sort friends list on friend rename ([aa7542f7](https://github.com/qTox/qTox/commit/aa7542f729346fc87b113259c361d781bbac5da8))
* only add chat message for call once ([5f48fd4e](https://github.com/qTox/qTox/commit/5f48fd4e100fc41874aabc57a84884260a248894))
* amend QCheckBox background chromatic aberration ([b7019a4f](https://github.com/qTox/qTox/commit/b7019a4f667f4247f8eac7e52f36ebf6e6349b93))
* avatar highlight on hover in profile ([064dccf8](https://github.com/qTox/qTox/commit/064dccf8b49212b65c2c114fc87a9226b5ecf518))
* remove focus window option, fixing alert() on Windows ([91bdd40f](https://github.com/qTox/qTox/commit/91bdd40f10aa8731e5a3a1ee7d14682e142cc8f5))
* by default, don't grab focus on new message ([dac1582b](https://github.com/qTox/qTox/commit/dac1582b72290df846fd29da5a9922a83d709056))
* don't scale avatar to point of cropping in chat form header ([dc7ddbeb](https://github.com/qTox/qTox/commit/dc7ddbebad370bb7c7bc851a738037fc3c18d3fa))
* Display most recent group member's name instead of <Empty> ([11131fa0](https://github.com/qTox/qTox/commit/11131fa083d2c6373358ade5e1d3bb0f08c43a72))
* fix the context menu enabled/disabled behaviors ([bc69c8c9](https://github.com/qTox/qTox/commit/bc69c8c9196f3ec3682c415145e5b7003c3a3006))
* don't emit filename change windows for every chat ([291e86d9](https://github.com/qTox/qTox/commit/291e86d9f9ea877fd92daa3b83ac283d56b305d5))
* **video:**
* support UYVY camera pixel format ([4c42e0ea](https://github.com/qTox/qTox/commit/4c42e0ea5b5dbb904bf28aaa5790d3f5acbdb75c), closes [#5479](https://github.com/qTox/qTox/issues/5479))
* correctly align data passed to toxcore ([5c1fe520](https://github.com/qTox/qTox/commit/5c1fe520102cdfb5e47f6be87d314585e9e2a3c6))
* don't pass invalid pixel format strings to ffmpeg ([9de40e5a](https://github.com/qTox/qTox/commit/9de40e5a97930de5d002ae3460db25bb2cb6c54c))
* workaround for webcams that provide no fps value ([3746bd13](https://github.com/qTox/qTox/commit/3746bd13bc345c7785ed3e06ac8f02e364a57ce3))
* **widget:**
* only change group title once ([f7a2a7d6](https://github.com/qTox/qTox/commit/f7a2a7d64840d9aaa276cc6a51a3d9c8611f76a7))
* don't try to play audio if it's disable ([2ea50309](https://github.com/qTox/qTox/commit/2ea5030958d2bf47fbedc2294c46677881b62a6a))
* fix freeze on showMainGui ([df62463e](https://github.com/qTox/qTox/commit/df62463e27f3ccf6cf9b1bf75008af27e41833ef))
* always force show window on activate event ([08f368da](https://github.com/qTox/qTox/commit/08f368da43a85e79377540a228b607ace844e7ae))
<a name=""></a>
## v1.16.3 (2018-07-18)

View File

@ -158,20 +158,20 @@ AED3 1134 9C23 A123 E5C4 AA4B 139C A045 3DA2 D773
```
[#qtox@freenode]: https://webchat.freenode.net/?channels=qtox
[64 bit release]: https://github.com/qTox/qTox/releases/download/v1.16.3/setup-qtox-x86_64-release.exe
[32 bit release]: https://github.com/qTox/qTox/releases/download/v1.16.3/setup-qtox-i686-release.exe
[64 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.0/setup-qtox-x86_64-release.exe
[32 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.0/setup-qtox-i686-release.exe
[32nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/setup-qtox-i686-release.exe
[64nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/setup-qtox-x86_64-release.exe
[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.16.3/qTox-v1.16.3.x86_64.flatpak
[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.0/qTox-v1.17.0.x86_64.flatpak
[Flatpak nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/qtox.flatpak
[AppImage]: https://github.com/qTox/qTox/releases/download/v1.16.3/qTox-v1.16.3.x86_64.AppImage
[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.0/qTox-v1.17.0.x86_64.AppImage
[AppImage nightly]: https://github.com/qTox/qTox-nightly-releases/releases/tag/ci-master-latest
[Arch]: /INSTALL.md#arch
[Building instructions]: /INSTALL.md#os-x
[Contributing]: /CONTRIBUTING.md#how-to-start-contributing
[Debian]: https://packages.debian.org/search?keywords=qtox
[easy issues]: https://github.com/qTox/qTox/labels/E-easy
[Latest release]: https://github.com/qTox/qTox/releases/download/v1.16.3/qTox.dmg
[Latest release]: https://github.com/qTox/qTox/releases/download/v1.17.0/qTox.dmg
[Latest nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/qTox.dmg
[Fedora]: /INSTALL.md#fedora
[Gentoo]: /INSTALL.md#gentoo

View File

@ -65,7 +65,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.16.3</string>
<string>1.17.0</string>
<key>CFBundleSignature</key>
<string>toxq</string>
<key>CFBundleURLTypes</key>
@ -84,7 +84,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.16.3</string>
<string>1.17.0</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSCameraUsageDescription</key>

View File

@ -68,7 +68,7 @@
<content_attribute id="social-audio">intense</content_attribute>
</content_rating>
<releases>
<release version="1.16.3" date="2018-07-21"/>
<release version="1.17.0" date="2020-04-19"/>
</releases>
</component>

View File

@ -175,7 +175,7 @@ bool RawDatabase::open(const QString& path, const QString& hexKey)
}
if (!hexKey.isEmpty()) {
if (!openEncryptedDatabaseAtLatestVersion(hexKey)) {
if (!openEncryptedDatabaseAtLatestSupportedVersion(hexKey)) {
close();
return false;
}
@ -183,32 +183,28 @@ bool RawDatabase::open(const QString& path, const QString& hexKey)
return true;
}
bool RawDatabase::openEncryptedDatabaseAtLatestVersion(const QString& hexKey)
bool RawDatabase::openEncryptedDatabaseAtLatestSupportedVersion(const QString& hexKey)
{
// old qTox database are saved with SQLCipher 3.x defaults. New qTox (and for a period during 1.16.3 master) are stored
// with 4.x defaults. We need to support opening both databases saved with 3.x defaults and 4.x defaults
// so upgrade from 3.x default to 4.x defaults while we're at it
// old qTox database are saved with SQLCipher 3.x defaults. For a period after 1.16.3 but before 1.17.0, databases
// could be partially upgraded to SQLCipher 4.0 defaults, since SQLCipher 3.x isn't capable of setitng all the same
// params. If SQLCipher 4.x happened to be used, they would have been fully upgraded to 4.0 default params.
// We need to support all three of these cases, so also upgrade to the latest possible params while we're here
if (!setKey(hexKey)) {
return false;
}
if (setCipherParameters(4)) {
auto highestSupportedVersion = highestSupportedParams();
if (setCipherParameters(highestSupportedVersion)) {
if (testUsable()) {
qInfo() << "Opened database with SQLCipher 4.x parameters";
qInfo() << "Opened database with SQLCipher" << toString(highestSupportedVersion) << "parameters";
return true;
} else {
return updateSavedCipherParameters(hexKey);
return updateSavedCipherParameters(hexKey, highestSupportedVersion);
}
} else {
// setKey again to clear old bad cipher settings
if (setKey(hexKey) && setCipherParameters(3) && testUsable()) {
qInfo() << "Opened database with SQLCipher 3.x parameters";
return true;
} else {
qCritical() << "Failed to open database with SQLCipher 3.x parameters";
qCritical() << "Failed to set latest supported SQLCipher params!";
return false;
}
}
}
bool RawDatabase::testUsable()
@ -220,10 +216,11 @@ bool RawDatabase::testUsable()
/**
* @brief Changes stored db encryption from SQLCipher 3.x defaults to 4.x defaults
*/
bool RawDatabase::updateSavedCipherParameters(const QString& hexKey)
bool RawDatabase::updateSavedCipherParameters(const QString& hexKey, SqlCipherParams newParams)
{
auto currentParams = readSavedCipherParams(hexKey, newParams);
setKey(hexKey); // setKey again because a SELECT has already been run, causing crypto settings to take effect
if (!setCipherParameters(3)) {
if (!setCipherParameters(currentParams)) {
return false;
}
@ -231,61 +228,120 @@ bool RawDatabase::updateSavedCipherParameters(const QString& hexKey)
if (user_version < 0) {
return false;
}
if (!execNow("ATTACH DATABASE '" + path + ".tmp' AS sqlcipher4 KEY \"x'" + hexKey + "'\";")) {
if (!execNow("ATTACH DATABASE '" + path + ".tmp' AS newParams KEY \"x'" + hexKey + "'\";")) {
return false;
}
if (!setCipherParameters(4, "sqlcipher4")) {
if (!setCipherParameters(newParams, "newParams")) {
return false;
}
if (!execNow("SELECT sqlcipher_export('sqlcipher4');")) {
if (!execNow("SELECT sqlcipher_export('newParams');")) {
return false;
}
if (!execNow(QString("PRAGMA sqlcipher4.user_version = %1;").arg(user_version))) {
if (!execNow(QString("PRAGMA newParams.user_version = %1;").arg(user_version))) {
return false;
}
if (!execNow("DETACH DATABASE sqlcipher4;")) {
if (!execNow("DETACH DATABASE newParams;")) {
return false;
}
if (!commitDbSwap(hexKey)) {
return false;
}
qInfo() << "Upgraded database from SQLCipher 3.x defaults to SQLCipher 4.x defaults";
qInfo() << "Upgraded database from SQLCipher" << toString(currentParams) << "params to" <<
toString(newParams) << "params complete";
return true;
}
bool RawDatabase::setCipherParameters(int majorVersion, const QString& database)
bool RawDatabase::setCipherParameters(SqlCipherParams params, const QString& database)
{
QString prefix;
if (!database.isNull()) {
prefix = database + ".";
}
// from https://www.zetetic.net/blog/2018/11/30/sqlcipher-400-release/
const QString default3_xParams{"PRAGMA database.cipher_page_size = 1024; PRAGMA database.kdf_iter = 64000;"
const QString default3_xParams{"PRAGMA database.cipher_page_size = 1024;"
"PRAGMA database.kdf_iter = 64000;"
"PRAGMA database.cipher_hmac_algorithm = HMAC_SHA1;"
"PRAGMA database.cipher_kdf_algorithm = PBKDF2_HMAC_SHA1;"};
const QString default4_xParams{"PRAGMA database.cipher_page_size = 4096; PRAGMA database.kdf_iter = 256000;"
// cipher_hmac_algorithm and cipher_kdf_algorithm weren't supported in sqlcipher 3.x, so our upgrade to 4 only
// applied some of the new params if sqlcipher 3.x was used at the time
const QString halfUpgradedTo4Params{"PRAGMA database.cipher_page_size = 4096;"
"PRAGMA database.kdf_iter = 256000;"
"PRAGMA database.cipher_hmac_algorithm = HMAC_SHA1;"
"PRAGMA database.cipher_kdf_algorithm = PBKDF2_HMAC_SHA1;"};
const QString default4_xParams{"PRAGMA database.cipher_page_size = 4096;"
"PRAGMA database.kdf_iter = 256000;"
"PRAGMA database.cipher_hmac_algorithm = HMAC_SHA512;"
"PRAGMA database.cipher_kdf_algorithm = PBKDF2_HMAC_SHA512;"};
QString defaultParams;
switch(majorVersion) {
case 3: {
switch(params) {
case SqlCipherParams::p3_0: {
defaultParams = default3_xParams;
break;
}
case 4: {
case SqlCipherParams::halfUpgradedTo4: {
defaultParams = halfUpgradedTo4Params;
break;
}
case SqlCipherParams::p4_0: {
defaultParams = default4_xParams;
break;
}
default: {
qCritical() << __FUNCTION__ << "called with unsupported SQLCipher major version" << majorVersion;
return false;
}
}
qDebug().nospace() << "Setting SQLCipher " << majorVersion << ".x parameters";
qDebug() << "Setting SQLCipher" << toString(params) << "parameters";
return execNow(defaultParams.replace("database.", prefix));
}
RawDatabase::SqlCipherParams RawDatabase::highestSupportedParams()
{
// Note: This is just calling into the sqlcipher library, not touching the database.
QString cipherVersion;
if (!execNow(RawDatabase::Query("PRAGMA cipher_version", [&](const QVector<QVariant>& row) {
cipherVersion = row[0].toString();
}))) {
qCritical() << "Failed to read cipher_version";
return SqlCipherParams::p3_0;
}
auto majorVersion = cipherVersion.split('.')[0].toInt();
SqlCipherParams highestSupportedParams;
switch (majorVersion) {
case 3:
highestSupportedParams = SqlCipherParams::halfUpgradedTo4;
break;
case 4:
highestSupportedParams = SqlCipherParams::p4_0;
break;
default:
qCritical() << "Unsupported SQLCipher version detected!";
return SqlCipherParams::p3_0;
}
qDebug() << "Highest supported SQLCipher params on this system are" << toString(highestSupportedParams);
return highestSupportedParams;
}
RawDatabase::SqlCipherParams RawDatabase::readSavedCipherParams(const QString& hexKey, SqlCipherParams newParams)
{
for (int i = static_cast<int>(SqlCipherParams::p3_0); i < static_cast<int>(newParams); ++i)
{
if (!setKey(hexKey)) {
break;
}
if (!setCipherParameters(static_cast<SqlCipherParams>(i))) {
break;
}
if (testUsable()) {
return static_cast<SqlCipherParams>(i);
}
}
qCritical() << "Failed to check saved SQLCipher params";
return SqlCipherParams::p3_0;
}
bool RawDatabase::setKey(const QString& hexKey)
{
// setKey again to clear old bad cipher settings
@ -494,7 +550,7 @@ bool RawDatabase::encryptDatabase(const QString& newHexKey)
qWarning() << "Failed to export encrypted database";
return false;
}
if (!setCipherParameters(4, "encrypted")) {
if (!setCipherParameters(SqlCipherParams::p4_0, "encrypted")) {
return false;
}
if (!execNow("SELECT sqlcipher_export('encrypted');")) {

View File

@ -20,6 +20,8 @@
#ifndef RAWDATABASE_H
#define RAWDATABASE_H
#include "src/util/strongtype.h"
#include <QByteArray>
#include <QMutex>
#include <QPair>
@ -29,10 +31,11 @@
#include <QVariant>
#include <QVector>
#include <QRegularExpression>
#include <atomic>
#include <cassert>
#include <functional>
#include <memory>
#include "src/util/strongtype.h"
/// The two following defines are required to use SQLCipher
/// They are used by the sqlite3.h header
@ -85,6 +88,16 @@ public:
};
public:
enum class SqlCipherParams {
// keep these sorted in upgrade order
p3_0, // SQLCipher 3.0 default encryption params
// SQLCipher 4.0 default params where SQLCipher 3.0 supports them, but 3.0 params where not possible.
// We accidentally got to this state when attemption to update all databases to 4.0 defaults even when using
// SQLCipher 3.x, but might as well keep using these for people with SQLCipher 3.x.
halfUpgradedTo4,
p4_0 // SQLCipher 4.0 default encryption params
};
RawDatabase(const QString& path, const QString& password, const QByteArray& salt);
~RawDatabase();
bool isOpen();
@ -99,6 +112,21 @@ public:
void sync();
static QString toString(SqlCipherParams params)
{
switch (params)
{
case SqlCipherParams::p3_0:
return "3.0 default";
case SqlCipherParams::halfUpgradedTo4:
return "3.x max compatible";
case SqlCipherParams::p4_0:
return "4.0 default";
}
assert(false);
return {};
}
public slots:
bool setPassword(const QString& password);
bool rename(const QString& newPath);
@ -111,9 +139,11 @@ protected slots:
private:
QString anonymizeQuery(const QByteArray& query);
bool openEncryptedDatabaseAtLatestVersion(const QString& hexKey);
bool updateSavedCipherParameters(const QString& hexKey);
bool setCipherParameters(int majorVersion, const QString& database = {});
bool openEncryptedDatabaseAtLatestSupportedVersion(const QString& hexKey);
bool updateSavedCipherParameters(const QString& hexKey, SqlCipherParams newParams);
bool setCipherParameters(SqlCipherParams params, const QString& database = {});
SqlCipherParams highestSupportedParams();
SqlCipherParams readSavedCipherParams(const QString& hexKey, SqlCipherParams newParams);
bool setKey(const QString& hexKey);
int getUserVersion();
bool encryptDatabase(const QString& newHexKey);

View File

@ -441,6 +441,19 @@ Profile does not contain your history.</string>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>

View File

@ -36,11 +36,10 @@ ARG="$1"
echo "" # ← formatting
grep_for_invalid() {
# differentiate what is allowed for commit messages and merge messages
git log --no-merges --format=format:'%s' "$ARG" \
| grep -v -E '^(feat|fix|docs|style|refactor|perf|revert|test|chore)(\(.{,12}\))?:.{1,68}$' \
|| git log --merges --format=format:'%s' "$ARG" \
| grep -v -E '^Merge .{1,70}$'
# we can't rely on differentiating merge and normal commits since short clones that travis does may not be able
# to tell if the oldest commit is a merge commit or not
git log --format=format:'%s' "$ARG" \
| grep -v -E '^((feat|fix|docs|style|refactor|perf|revert|test|chore)(\(.{,12}\))?:.{1,68})|(Merge .{1,70})$'
}
# Conform, /OR ELSE/.

View File

@ -272,10 +272,10 @@ fi
QT_PREFIX_DIR="$DEP_DIR/libqt5"
QT_MAJOR=5
QT_MINOR=12
QT_PATCH=7
QT_PATCH=8
QT_VERSION=$QT_MAJOR.$QT_MINOR.$QT_PATCH
# hash from https://download.qt.io/archive/qt/5.12/5.12.7/single/qt-everywhere-src-5.12.7.tar.xz.mirrorlist
QT_HASH="873783a0302129d98a8f63de9afe4520fb5f8d5316be8ad7b760c59875cd8a8d"
# hash from https://download.qt.io/archive/qt/5.12/5.12.8/single/qt-everywhere-src-5.12.8.tar.xz.mirrorlist
QT_HASH="9142300dfbd641ebdea853546511a352e4bd547c4c7f25d61a40cd997af1f0cf"
QT_FILENAME="qt-everywhere-src-$QT_VERSION.tar.xz"
if [ ! -f "$QT_PREFIX_DIR/done" ]
then

View File

@ -276,7 +276,7 @@ Section "Install"
${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}"
${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "Path" "$INSTDIR\bin\"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "qTox"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.16.3"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.0"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "The qTox Project"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "URLInfoAbout" "https://qtox.github.io"

View File

@ -277,7 +277,7 @@ Section "Install"
${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}"
${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "Path" "$INSTDIR\bin\"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "qTox"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.16.3"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.0"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "The qTox Project"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe"
${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "URLInfoAbout" "https://qtox.github.io"