Release Notes
Happy New Year 2025!
It's taken us some time, but we're finally here. We hope you enjoy our new and updated qTox v1.18.0. Many bugs, especially around video calls, have been fixed. We also bring some performance improvements, but most importantly, the RCE fear is over.
There have been many rumours about remote code execution attacks on qTox for the past 2 years. Although nobody has ever actually been able to demonstrate any of them working, we've done a deep dive audit on the relevant security aspects of the areas of potential vulnerability and have made a number of changes:
- We've completely rewritten the notification system from scratch. We now use the built-in Qt system tray notifications on all systems. Additionally, on Linux, we use the Freedesktop notification system directly (you can turn this off if it doesn't work or you're afraid we've made a mistake) instead of going through an unaudited third party library.
- We've put additional filtering in place for any incoming text messages from the Tox network, including friend request messages. We now filter out any non-printable characters. This may break certain newer emojis such as a skin-toned handshake emoji (🤝🏾) on older systems (from 2022 or earlier). If you use our provided binaries, it should just work, as we build our binaries with the latest Qt version and dependencies.
- We've hardened some of the low level load/store functions used for settings. There almost certainly wasn't a vulnerability here, but they can no longer be abused directly if there ever will be.
We have, as a side effect, also upgraded the toxcore used in the (windows) release. There are a great number of outdated toxcore nodes still present in the network, holding back new feature adoption such as the new group chats with moderation capabilities.
Check out the release candidates' release notes as well for a full list of changes since the 1.17.6.
As always, report any bugs or issues you find or features you'd like to see to our issue tracker. We've got a long way to go, but we're come a long way as well. Enjoy the release!
Important
Please back up your database and tox save files before upgrading. The upgrade should be smooth, but just to be safe, make sure there are backups.
Important
UPDATE: The current release binaries unfortunately claim to be unstable non-release binaries (reported in #355). This problem is now fixed (#356) but won't be available until the v1.18.1 release. Don't worry about it claiming being unstable. The binaries are good if they match the signature and checksum from the download page.
Features
- add appimage back to ci @Green-Sky (#306)
- Add many missing emojis from the smiley packs. @iphydf (#232)
- Add DBus desktop notification support. @iphydf (#209)
- Add caps-lock indicator in password edit on macOS. @iphydf (#213)
- Add a Qt object tree view in the debug widget. @iphydf (#158)
- Add system tray notification support. @iphydf (#153)
- Add desktop notifications support on Linux. @iphydf (#98)
- Add debug log view. @iphydf (#119)
- Add new translations: Bengali, Latvian, Flemish, Vietnamese. @iphydf (#114)
Performance improvements
- Improve performance of video frame buffering. @iphydf (#276)
- Don't log verbose toxav messages. @iphydf (#273)
- Delay debug log loading to show time. @iphydf (#238)
Bug Fixes
- Avoid occasional crash when changing video devices or closing qTox. @iphydf (#312)
- Harden the persistence/serialization functions. @iphydf (#335)
- Fix uninitialised read in contact circle widget. @iphydf (#314)
- Don't crash when closing the app after logout. @iphydf (#308)
- Don't crash on logout. @iphydf (#305)
- Avoid hanging when capture device permissions denied on macOS. @iphydf (#300)
- Fix occasional deadlock in ending a video call. @iphydf (#278)
- Disable video device selection box during call. @iphydf (#284)
- Make sure camera access is gained on macOS before calling. @iphydf (#283)
- Make camera input work again on macOS. @iphydf (#267)
- Don't crash on quit during AV call. @iphydf (#274)
- Use the last
/src/
to find the source root. @iphydf (#237) - Show actual smileys in the smileypack selector. @iphydf (#231)
- cmake file dependencies @Monsterovich (#206)
- Fix two memory leaks. @iphydf (#205)
- Fix use-after-free when closing qTox during a call. @iphydf (#192)
- Typo fix unavaliable -> unavailable. @iphydf (#176)
- Allow building qtox without update check. @iphydf (#161)
- memory error on exit @Green-Sky (#159)
- Correct the tab completion regex so it works with Qt6. @iphydf (#150)
- Only allow printable characters in incoming messages. @iphydf (#148)
- Fix use-after-free bug in desktop notifications. @iphydf (#135)
- Add Caucasian Albanian Script writing system mapping. @iphydf (#130)
- remove extra newline in log @Green-Sky (#121)
- Do a better job of anonymising the log output. @iphydf (#94)
- Make checkboxes more visible on wayland. @iphydf (#105)
- Don't create huge font weights in themes. @iphydf (#95)
- Fixed the style selector in UI settings. @iphydf (#96)
- Don't show unicode replacement boxes on unsupported languages. @iphydf (#97)
Documentation
- Translations update from Hosted Weblate @weblate (#303)
- Update dependency documentation. @iphydf (#279)
- Translations update from Hosted Weblate @weblate (#291)
- Translations update from Hosted Weblate @weblate (#270)
- Update all links to Weblate @7K3LNAKA93W9AWRR7VZXR37N5 (#268)
- Add more tooltips to UI settings. @iphydf (#230)
- Translations update from Hosted Weblate @weblate (#251)
- Translations update from Hosted Weblate @weblate (#247)
- Translations update from Hosted Weblate @weblate (#244)
- Add some more context to the "filing an issue" section. @iphydf (#242)
- Translations update from Hosted Weblate @weblate (#216)
- Translations update from Hosted Weblate @weblate (#203)
- Add TokTok/qTox adoption to the about form. @iphydf (#190)
- Translations update from Hosted Weblate @weblate (#168)
- Translations update from Hosted Weblate @iphydf (#177)
- Translations update from Hosted Weblate @weblate (#163)
- Translations update from Hosted Weblate @weblate (#155)
- Translations update from Hosted Weblate @weblate (#128)
- Update readme to say we're active on qTox again. @iphydf (#123)
- Translations update from Hosted Weblate @weblate (#112)
- Set translations for conference strings to unfinished. @iphydf (#113)
Maintenance (Grunt tasks)
- Release v1.18.0 @iphydf (#338)
- Allow workflow dispatch to trigger all jobs. @iphydf (#342)
- Extend the release script to the post-merge steps. @iphydf (#334)
- Happy new year! @iphydf (#341)
- Add test workflows for appimage/flatpak binaries. @iphydf (#340)
- Release v1.18.0-rc.4 @iphydf (#331)
- Fix appimage release build (
-
instead of.
). @iphydf (#333) - Add script to automate most of the release process. @iphydf (#332)
- Rewrite clog (more correctly) in Python. @iphydf (#328)
- Add scripts for uploading and verifying release assets. @iphydf (#329)
- Only run the PR validator on pull requests. @iphydf (#327)
- Update versions for the 1.18.0-rc.3 release. @iphydf (#324)
- Install homebrew bash v5. @iphydf (#321)
- Install Apple dev certificate for signing macOS distributables. @iphydf (#319)
- Enable ccache in flatpak builds. @iphydf (#294)
- Add a scheduled workflow to run CI every day. @iphydf (#292)
- Use ccache in flatpak build. @iphydf (#290)
- Use the same flathub manifest as flathub. @iphydf (#287)
- Use flatpak dependencies from releases instead of local paths. @iphydf (#289)
- Add coverity scan static analysis. @iphydf (#271)
- Support toxcore 0.2.19 and below. @iphydf (#280)
- Reduce flakiness of macOS builds. @iphydf (#269)
- Fix background and icon of macOS dmg. @iphydf (#259)
- Build all deps including Qt statically on macOS. @iphydf (#254)
- Add a CI check to run the macOS distributable binary. @iphydf (#250)
- Raise the minor version number on feature releases. @iphydf (#246)
- Don't build Debug builds on release tag pushes. @iphydf (#245)
- Fix ccache cache sharing. @iphydf (#243)
- Don't imgbot-optimise SVGs. @iphydf (#241)
- Build windows outputs into arch-specific build dirs. @iphydf (#228)
- Add fully static qtox build. @iphydf (#227)
- Add ccache to most builds. @iphydf (#225)
- Use qt_binary instead of cc_binary for qtox. @iphydf (#201)
- Add armeabi-v7a build. @iphydf (#219)
- Fix nightly apk upload. @iphydf (#224)
- Don't run non-deploy jobs on push (only PR). @iphydf (#223)
- Reduce default number of PR CI builds. @iphydf (#221)
- Add UBSAN option for cmake. @iphydf (#193)
- Add arm64 macOS user build. @iphydf (#211)
- Enable rtti in all builds. @iphydf (#204)
- Use
mkstamp
macro to get git version from bazel build. @iphydf (#202) - Point weblate config at the new hosted weblate project. @iphydf (#183)
- Don't build Qt stuff in bazel cross-compile builds. @iphydf (#184)
- Set min sdk version to 24 (Android 7). @iphydf (#173)
- Add a debug build for Android APK. @iphydf (#182)
- Make About -> File bug link use the new form-based bug report. @iphydf (#181)
- Add modern interactive issue template. @iphydf (#169)
- Run deploy workflows on tags. @iphydf (#165)
- update update url to toktok @Green-Sky (#157)
- Add CMake presets for IDEs (now) and CI (later). @iphydf (#152)
- Add version check for toxcore. @Chiitoo (#147)
- Undo the release deploy stuff. @iphydf (#144)
- Third attempt at fixing prerelease building. @iphydf (#143)
- Also build/test/deploy on pre-releases. @iphydf (#142)
- Trigger deploy workflows on release. @iphydf (#141)
- Add macos-14 build for Apple Silicon. @iphydf (#139)
- Build windows debug builds with a console. @iphydf (#138)
- Update nodes.json. @iphydf (#134)
- Fix android nightly/release upload. @iphydf (#137)
- Add arch and build type to Android matrix. @iphydf (#127)
- Use separate cache keys for the jobs using ccache. @iphydf (#107)
- Use ccache on the macos user build. @iphydf (#104)
- Cache built macos dependencies in CI. @iphydf (#103)
- Use tag docker images instead of repos. @iphydf (#102)
- Use built docker image from docker hub. @iphydf (#101)
- Give Cirrus more CPUs to build qtox. @iphydf (#100)
- Revive spell check feature. @iphydf (#71)
- Fix apk path so release uploads actually work. @iphydf (#68)
- Upload apks to the release and nightly tags. @iphydf (#65)
- Add Android apk build. @iphydf (#63)
- Fix macos deploy build rpath corrector. @iphydf (#64)
- Update dependency versions. @iphydf (#61)
- Add back the 32 bit windows build. @iphydf (#59)
- Reduce the amount of CI builds we do. @iphydf (#57)
- Reinstate deploy scripts. @iphydf (#50)
- Enable restyled code formatter. @iphydf (#54)
- Cancel old release-check runs when pushing new commits. @iphydf (#47)
- add developer to appstream metainfo @Green-Sky (#48)
- Add new error enumerator for conference join. @iphydf (#41)
- Add alpine docker build to CI. @iphydf (#46)
- Lower cirrus ci timeout @Green-Sky (#44)
- Disable restyled for now @Green-Sky (#43)
- Add release-drafter github action. @iphydf (#40)
- Update github actions. @iphydf (#39)
- Remove settings.yml in favour of hs-github-tools. @iphydf (#38)
- Use GPL license with https. @iphydf (#37)
- Add some more things to no-cross. @iphydf (#36)
- Disable targets for cross-compilation. @iphydf (#35)
- layering check on qtox. @iphydf (#34)
- Merge upstream @iphydf (#32)
Maintenance (Code cleanup)
- Use version.h in cmake build as well. @iphydf (#339)
- Ensure VideoFrame memory is never leaked. @iphydf (#322)
- Don't use deprecated spelling of tox enums. @iphydf (#323)
- Add ffmpeg logging. @iphydf (#318)
- Add openal logging and audio log category. @iphydf (#317)
- Normalise audio to -1.0 dB. @iphydf (#316)
- Don't connect to NULL window handle's signals. @iphydf (#315)
- Add dep name in the log message file path on macOS. @iphydf (#311)
- Fix compilation for Android 7. @iphydf (#309)
- Clarify what the "blacklist" does in privacy. @iphydf (#285)
- Fix spelling mistakes in the code. @iphydf (#282)
- Remove unused C code. @iphydf (#286)
- Ensure message structs don't have uninitialised members. @iphydf (#272)
- Use mutex lockers where possible in video frame handling. @iphydf (#275)
- Remove most uses of
goto
. @iphydf (#262) - Remove unnecessary path cleaner in tox logger. @iphydf (#266)
- Ensure that all emoticons at least map to themselves. @iphydf (#260)
- Make the tongue emoji
:P
output 😛 instead of 😋. @iphydf (#264) - Avoid string concatenation in log output. @iphydf (#258)
- Remove duplication of widget IDs. @iphydf (#252)
- Remove unnecessary inheritance of Chatroom. @iphydf (#253)
- Avoid contextless
connect
. @iphydf (#248) - Reduce amount of implicit casting in signals/slots. @iphydf (#249)
- Remove ASCII versions of smiley packs. @iphydf (#233)
- Remove duplicate definition of DECLARE_SIGNAL. @iphydf (#235)
- Avoid double spaces in logging. @iphydf (#226)
- Use consistent nomenclature for "full screen". @iphydf (#210)
- Reduce repetition in Android build workflow. @iphydf (#222)
- Sort Qt resource files by filename. @iphydf (#214)
- Stop loading smileypack in a separate thread. @iphydf (#215)
- Use consistent nomenclature for "macOS". @iphydf (#212)
- Some random warning cleanups and some typo fixes. @iphydf (#198)
- Prefix multi-line log messages with the same timestamp. @iphydf (#199)
- Avoid logging QString as format. @iphydf (#122)
- Remove now unused DESKTOP_NOTIFICATIONS from cmake preset. @iphydf (#189)
- Remove most of the leftovers from toxext. @iphydf (#186)
- Use tox core "length" functions instead of constants. @iphydf (#174)
- Another typo fix, avaliable -> available. @iphydf (#178)
- Add system tray notification support. @iphydf (#153)
- Use function pointer slots instead of old style strings. @iphydf (#151)
- Fix typo in spellcheck CMake option. @Chiitoo (#146)
- Reformat all the cmake files with cmake-format. @iphydf (#132)
- Add spdx license header to our only ObjC++ file. @iphydf (#124)
- Remove tox extension message support. @iphydf (#116)
- Don't use
<header.h>
for local includes. @iphydf (#72) - Unify source to have prefix-
const
everywhere. @iphydf (#73) - Make tox error code logging originate from calling code. @iphydf (#117)
- Delete docker image actions. @iphydf (#115)
- Make filesform.h and toxuri.cpp parseable by Linguist. @iphydf (#111)
- Delete buildscripts now they have moved to the dockerfiles repo @iphydf (#106)
- Fix typo "groupOnlyNotfiyWhenMentioned" @Pigpog (#93)
- Minimise direct dependencies on core.h. @iphydf (#70)
- Delete all qt5 version checks. @iphydf (#62)
- Delete compatibility recursive mutex. @iphydf (#60)
- Move all license headers in .h files to SPDX; run clang-format. @iphydf (#58)
- Move all license headers in C++ source files to SPDX; run clang-format. @iphydf (#55)
- More deprecation fixes. @iphydf (#53)
- Fix a few more deprecation warnings. @iphydf (#52)
- Update more deprecated stuff @Green-Sky (#51)
- remove usage of a private field @Green-Sky (#42)
Maintenance (Refactoring)
- Move common python code into a library; add RCs to changelog. @iphydf (#330)
- Add logging category to debug log. @iphydf (#256)
- Add logging category for tox logger output. @iphydf (#265)
- Remove the need for
<filesystem>
in logging. @iphydf (#229) - Make code less dependent on the Settings object. @iphydf (#110)
- Rename Group Chat to Conference @Pigpog (#92)
- Migrate to Qt6. @iphydf (#49)
Maintenance (Tests)
- Add a fuzz test for the remaining 2 serialize functions. @iphydf (#336)
- Update loginscreen UI test golden image. @iphydf (#302)
- Re-enable tests on windows. @iphydf (#154)
- Make the invalid proxy test less flaky. @iphydf (#197)