Toolbox App 1.17 is Out: Quality Improvements Arrive with a New Build Completely Rewritten in Kotlin
TL;DR Focusing on the quality of the Toolbox App, we have completely rewritten it in Kotlin. We’ve introduced a new Settings page, updated system requirements, and fixed dozens of bugs.
In this update, we’ve focused on bug fixes and on the overall quality of the Toolbox App.
The Toolbox App began as a Hackathon project, though it had a different name. The state of the technology was very different at the time, however. Java was still in version 8, and Kotlin had not been released yet. We decided to try something new, so we implemented the core of the application in C++, and for the UI we used React with our own Ring UI library. This latter part has stayed with us through all these years and has proved itself to be successful. The elegant and polished interface is not only pleasing for the eyes, but it is also easy to develop and allows us to effortlessly present rich content in the “What’s new” notes for our products.
On the other hand, the core written in C++ is different. C++ is a powerful language (sometimes too powerful for our use case), and it often requires a “gloves-on” approach. Every time we switched to it from other projects that used Kotlin, we weren’t as productive as we had been before. It was also impossible to share code between the IntelliJ Platform and the Toolbox App, which would have benefitted both parties. The tool landscape has also changed. With the arrival of modular JDK, it is now possible to bundle a very small runtime with the app or even compile it to native code with Kotlin/Native.
With all this in mind, we made a decision last year to rewrite the core of the Toolbox App in Kotlin, and we are now happy to present the result. In this first iteration, we deliberately made as few changes as possible and stayed close to the original codebase, except, of course, for some third-party dependencies that we needed to replace with their JVM counterparts. Luckily there is no lack of high-quality Java libraries out there. You can easily find one for every purpose.
We didn’t want to repeat the same mistakes though, so when we needed to rewrite something from scratch, we fixed some bugs in the relevant components, as well. Below is a brief overview of the changes we’ve made.
Depending on your preferred operating system, we’ve reimplemented the system tray icon (on Windows), menu bar icon (on macOS), and appindicator (on Linux). It now correctly appears in most cases and is no longer blurred on HiDPI screens. Improved screen detection also fixes a number of issues with incorrect application scaling. Many performance issues have been resolved, as well.
On Linux, JetBrains Account credentials are now stored correctly and the app handles SSL certificates better.
You can find the full list of resolved issues here.
Previously, the Toolbox App always used the system proxy if it was set. It wasn’t possible to change the proxy address or to turn it off. There is now a dedicated page in Settings for setting up a custom proxy server and enabling and disabling it when necessary.
Speaking of settings, we’re happy to introduce the revamped Settings page. We’ve regrouped all options and made the most important categories available at a glance.
As we’ve previously announced, we are dropping support for 32-bit Windows. We are also updating the minimum supported OS versions to Windows 8 or newer and macOS 10.13 or newer. This change brings our system requirements into alignment with those of all the JetBrains IDEs which will not run on older OS versions. For Linux, we generally support only the latest regular and LTS releases.
Even though there might be not so many visible changes in the application, this update builds a solid foundation for future improvements. We are already working on some of the suggestions you shared with us on New Year’s Eve.
Thank you for your collaboration and your helpful feedback! We are listening!
Stay home, stay healthy, and stay tuned!
The Toolbox App team
Subscribe to Blog updates
Thanks, we've got you!