The Past, Present, and Future of FalixNodes Desktop
In case you haven’t been paying attention to what Korbs, our frontend developer, has been up to this week, here’s what you should know: Several of you may be aware that our widely used software, FalixNodes Desktop, will be getting a significant upgrade later this year. The huge overhaul will include new features, a redesigned user experience, updated content, and other refinements. But first, before we get into the specifics of this significant upgrade, which will be released later this year, we’d want to take a look back at the software’s history and how it came to be so increasingly active. As a starting point for our discussion, we’ll look at the software’s history as well as its appearance and functionalities, and then we’ll ask ourselves, WHAT THE HELL is the point of having FalixNodes Desktop in the first place. We’ll be referring to all software versions, starting with v1 and ending with v3.
Back in late 2018, a community member known as Korbs(formly Corbs at the time) designed a personal software to help himself navigate the panels of FalixNodes. The reason for this is that he was dissatisfied with his web browser’s performance/style and began relying on other applications to surf the network. The personal software was the initial version of what would become FalixNodes Software, a simple Electron-based application with tab-like navigation to transition between FalixNodes panels. Korbs eventually introduced it to other FalixNodes members, and they were fascinated, thus additional members began using the software, making it “Community Software.” Korbs was not a staff member of FalixNodes at the time and was a normal member like everyone else, hence it was not official software of FalixNodes, yet.
The most recent version of FalixNodes Desktop is v3.7.0, which was released just a week ago. The most recent version added an additional function, auto-login. Allowing users to automatically log in to their client area as the software starts up.While the new major version is under developed, v3 will get patch updates as needed.
The Past - Design and Features
Because it was initially designed to be used privately, the first iteration did not need much attention in the design process. So it was designed to be basic, and making it presentable was not a concern at the time. As a result, a simple tab system was situated at the top, with an embedded browser taking up the remainder of the window. Colors were a simple gray theme with some variations. This color scheme was gradually phased over into v2, with little improvements.
As for it’s features provided, well not much was brought to the table. Again, it was initially designed to be used privately, so focusing on major stuff like security, performance, and smoothness wasn’t a conern either. So v1 ended up using a basic structure in the main process, by simpling enabling the webview tag to enable the embedded browser, and setting it’s window size. Nothing else, really.
FalixNodes Software became official software of FalixNodes in mid-2020, implying that Korbs devoted closer attention to design and functionalities. For design adjustments, each tab in the upper portion now had rounded edges and space was added utilizing the top margin. A dashboard with a side panel displaying the software name, version, and two tabs for news and releases was also included.
The upper half had a custom titlebar that mimicked Windows 10’s native titlebar. This custom titlebar was unintentionally applied to other operating systems such as macOS and Linux. In addition to the custom titlebar, an extra button adjacent to the right-side buttons was added to access a menu with more options and functions. Settings, help center pop-ups, FalixCoins when they’ve been launched, and more. Technically, this release also contained notifications, but just one was added, noting that the FalixCoins window was immediately minimized when the end-user opened it.
With a new major release, came new features. As previously mentioned in the design aspect, a new tab called “Dashboard” was included. Primarily, the Dashboard would provide up-to-date information on what’s new in FalixNodes, as well as release notes for the FalixNodes Software itself. Later in v2, new buttons, an add and reload button, were added to both the “Client” and “Panel tabs. When the user clicks the add button, a new window for that tab opens. The reload button is self-explanatory.
Auto update was badly implemented in the software by just incorporating a large amount of code that was hosted elsewhere and could be quickly updated. With these weak implementations, nothing in the software could load if the end-user was not online, including the interface itself. This would sometimes, temporary on load, show broken CSS until the rest of it loaded. This is all deemed “Bad Practice” in the Electron community, and Korbs accepts responsibility for the bad development of v2. Everything has been overhauled with proper auto-update in v3. This version of FalixNodes Software is regarded as “Cringe” and “Poor Development” by its own creator due to the unethical practice. I’m not joking when I say those are quotations.
The Present - v3
As a reminder, FalixNodes Desktop v3 is the most recent stable version at the time of writing this blog article. From its initial release until its final version, it made substantial progression.
The idea for the new design of the software’s interface came from Glasstron. While experimenting with Electron packages, Korbs stumbled upon Glasstron, an Electron blur-composition tool. Glasstron is responsible for enabling the blur effect behind the software’s window by utilizing the operating system’s native blur effect, such as the acrylic effect on Windows, as well as vibrancy on macOS and Linux if the end-user was on a supported desktop environment or or using Blur Provider for GNOME.
Knowing that we could simply add a native blur effect behind the window reminded Korbs of other applications that uses an interface where this effect is typically shown mostly behind the left sidebar, such as the Windows Settings App, Finder, and others. As a result, the concept of a potential major re-design of FalixNodes Software was formed. It was written straight on top of the demo Korbs created to test Glasstron.
Creating the interface was a simple task by adding in the left sidebar displaying the main tabs at the top and the other tabs at the bottom.
Eventfully, the loading time started to increase, meaning you can really see each part of the HTML content load one by one. To prevent users from seeing this, a new splash window was added. A simple cube sized window without our logo in the middle, and a loading indicator. The splash window was only re-designed/revamped once, which was back in v3.5.0. The revamp also added new functions in v3.5.0, doing a checklist as the software started. This checklist would mainly check the internet to see if the user was even online, has connection to the update server, and smaller things like OS detection. The new design of v3.5.0, had a longer width in the window, with our logo on the left end. The right side would show text display software and name messages from checklist, commmonly “Waiting on main window…” since the checklist goes by very quickly. There are currently no plains to re-design this in v4 and may remain as is.
As we mentioned before about the Windows 10 custom titlebar, it was not meant to be shown show on other operating systems because it wouldn’t match up, obviouly. So in v3.2.0, changes were made to fix this by detecting the operating system and set global variables for the window frame. Also, traffic light buttons now sit in the app on macOS natively. Linux users won’t get any special treatment, as they’ll be using the native titlebar of their desktop enviroments. We wanted something custom for Linux, but things can get complicated since Linux can be multiple layouts.
Korbs began researching the features and API on Electrons’ Webview throughout the development of v3. While investigating, you can quickly add controls to each webview by first identifying each one with a ‘id’ and then using ‘var’ to assign each one a custom variable. You may use the custom variable to control a webview function, such as ‘webviewTest.goBack()’. As a result, controls for both the Client Panel and the Game Panel were introduced. These controls would only appear if the tab was selected, presenting the controls at the right-side of the tab while taking up no space on the design interface.
There was now a technique to increase the software’s performance by learning how to take better control of each webview. At the time, the adverts displayed on the game panel would consume a significant amount of RAM in the software alone. So, by default, the software was configured to prevent the game panel from loading when the software was launched. It will actually display a blank webpage in the background, rendering nothing. When necessary, the end-user may simply click a button to load the game panel. This year, in v3.6.0, you can now have the game panel loaded by default if you want.
As previously stated in v2, auto update was badly implemented, which was corrected in v3.1.0. During the development of v3.1.0, the Electron package used to package and distribute FalixNodes Desktop was first Electron Packager, however this was later changed to Electron Builder. Electron Builder was more configurable and offered an easy-to-use auto-update system. FalixNodes Desktop’s proper update auto was finally developed using Electron Builder.
This was done simply on a custom update server, that being
And although, before to using Electron Builder, there were various approaches of attempting to add auto-update for Windows and Linux. This was accomplished by depending only on an app store for each operating system, namely the Microsoft Store for Windows 10 and the Snap store for Linux. Regrettably, this solution did not support Windows 7 and Windows 8, as well as macOS.
While keeping performance in mind, we should highlight that security was not a priority when working on v1. As a result, security was a top priority in v3.4.0.
For starters, the developer discovered that the end-user occasionally misclicked advertisements and couldn’t back out, which is why controls were implemented. However, the developer was concerned that the user would accidentally click something that, well, should never be clicked. Or end up on an insecure or NSFW website. As a result, a limitation on where the end-user might roam was added, forcing the end-user to be pushed out of any domain that wasn’t part of FalixNodes itself.
Next, the developer was fully aware that if exploited, a webpage in the webview would indeed be able to activate dangerous commands on the end-machine. This was possible because
nodeIntegration was set to
contextIsolation was set to
false, a less-secure configuration for any Electron-based application’s main process. As a result, the settings were changed to deactivate
nodeIntegration and re-enable
contextIsolation. However, without
nodeIntegration, some commands for the software were broken, therefore several of the main process functions had to be either redesigned or minimally tweaked to accommodate to this more secure arrangement.
To adapt to utilizing
contextIsolation all commands that could be used in FalixNodes Desktop had to be whitelisted via the main window’s preload script using
contextBridge. In addition to using
ipcMain to add a command to a specified window, most often the main window.
You can read the security update here: https://falixnodes.net//blog/falix-software-3.4.0-released/
Small things that also happened:
- The onboarding screen went through too many changes and was just removed. May come back in v4.
- Until v3.4.0, it was always built on Electron 9.0.5, but v3.4.0 was a secuirty update so at this point on it always used the latest version of Electron.
- There were original plans to allow users to access the support channel on Discord directly from the software, the idea involved CSS modificationed around Discord. The idea was scrapped, since modifiying the CSS code is against Discord’s Terms of Service.
- One more thing, FalixNodes Desktop v3 was re-built 4 times during all of it’s developmemt. Actually 5 times, but the 5th time was rebuilding it on top of ReactJS, which was scrapped due to webview issues.
Why should I use it?
There are many instances when individuals believe that FalixNodes Desktop is nothing more than an embedded browser and that therefore using a standard web browser makes more sense. While they are technically correct in FalixNodes Desktop versions 1 and 2, this is not the case with FalixNodes Desktop version 3. As a conclusion, utilizing FalixNodes Desktop may provide additional advantages. For instance, with the most recent version, auto-login was made available in the client panel. Due to the fact that we have not yet implemented a “Stay logged in” feature in our client area, this will not be possible using a standard web browser.
The Future - v4
Ignoring the fact that development on FalixNodes Desktop v4 was meant to begin in November of last year, the only thing that came out of it was a concept for a revamped sidebar layout. In November, the idea for version 4 was discarded, and it will be reconsidered later this year, as seen by the aforementioned. Nevertheless, development has returned with many more good suggestions for what we should add and improve in FalixNodes Desktop, as well as improvements that we’ve wanted since v3.2.0. but haven’t had the chance to implement. More exciting things are coming down in the near future, and we’ve already begun experimenting some of the new features that will be included in FalixNodes Desktop v4. We’re really looking forward to seeing what happens!
First, we’ll talk about the features we want to add to FalixNodes Desktop that will make the software more compelling to our customers and make them more likely to use it. The next thing will be to make changes to the software’s design, with certain portions of the old concept being implemented in a different manner than was originally intended.
Major Feature - Command Menu
Concept by Korbs Studio made in Figma
Update: This section of the article “Command Menu” was updated on June 3rd 2022, due to issues with Algolia. Old stuff is crossed out.
One of the key new features we’re working on for FalixNodes Desktop is a new command menu to help you navigate the software more conveniently and quickly. The idea to add a command menu was inspired by other services that also use some-type of command menu themselfs like Discord with their ‘Quick Switcher’, GitHub with their feature preview Command Palette, Opera with their tab search, Pop OS with their Pop Launcher, and the most commonly known one being the Spotlight search on Apple’s operating system macOS. Just like these other services, our command menu will show and has already been tested, tab navigation. We plan to add more to it.
In the upcoming weeks, tab navigation, settings toggle, help articles, and other features will most likely be included in the command menu. FalixNodes Desktop is designed to perform all tasks directly from the software, minimizing the need for a web browser or any other third-party software. As such, everything will be done within the software. As previously said, we do have a fully functional command menu with only a minimal amount of tab navigation at this early pre-alpha stage of development.
Update (June 3rd 2022): We’ll be using Ninja Keys library over Algolia
While we endeavoured to build and maintain a dashboard for users to use in the long term, it was reduced to simply a portion where you can read the newest FalixNodes announcements. This time, we’re going for it again, but with a bigger objective in mind than merely a news section. The first thing you’ll see on the new dashboard, apart from the splash window, is a welcome message that says “Welcome back, ‘username’”, “Good afternoon, ‘username’”, or something like “Hey, ‘username’, here’s a tip:” while presenting a tip. Of course, we’ll present the most recent FalixNodes news, just as we did before. However, a new area will be introduced to provide you with a quick glance at your current servers as well as live information on your server resources. The above picture is not a concept; it is genuine code.
In addition to that, we’ll present swift and brief information in the top right corner of the Dashboard about what’s going on in FalixNodes, such as an outage, a software error, scheduled maintenance, and so on. For example, if the node “Ult 4” was down, the message would read “Node ‘Ult 4’ is temporarily unavailable.” or “Scheduled Maintenance on ‘November 12th, 2022’.”
Cascading Style Sheet Webview Injection
I’m sorry, what? What really is that? Cascading Style Sheets, or CSS, is a technology used in HTML to provide webpages more appearance and prevent them from appearing if they’re from the nineties. Webview is the embedded browser that you see in the software; it behaves similarly to an iFrame but has more functionality. You may have noticed that certain aspects of FalixNodes Desktop have changed in v3.6.0, notably the embedded browser. The backdrop is now fully transparent, a goal we’ve had for a long time. Since the release of Electron 16.0.0, it is now possible to completely fill the backdrop of webviews with full transparency; before, this would have resulted in a white background.
Thanks to release of Electron 16.0.0, we can now make the FalixNodes Desktop look more native.
There are plans to make improvements to the FalixNodes Desktop in order to make it more lightweight and user-friendly for devices such as laptops. The first thing we’d want to do is implement a basic battery saver, which will turn off unnecessary features that might deplete a laptop’s battery, such as turning off blur visual effects, unloading most webviews, animations, and elements of the dashboard, among other things. You may configure your battery saver to activate when your laptop is disconnected from its power source. Additionally, when you lock your operating system, we’ll switch off some features to ensure that there isn’t too much activity in the background.
FalixNodes Desktop will try to respect your system’s preferences such as theme, color, motion, and others to make it more user-friendly. Here are a few examples: If you enable Reduce Motion on macOS, animations will be disabled; if the color red was selected as your accent color on Windows or macOS, the accent color in FalixNodes Desktop will be red automatically; if the blur effect is enabled or disabled on Windows, FalixNodes Desktop will also enable or disable its blur effect; and if your system’s theme is light or dark, well, that one is obvious.
Most of this is only supported on Windows and macOS, some of this won’t work automatically on Linux.
Most of this should be possible with the
systemPreferences module in ElectronJS.
VPN capability is being introduced to the app as of early June 2022, following recent developments. FalixNodes Desktop was supposed to use free OpenVPN, however it had problems communicating with it effectively with NodeJS and would never start operating. So, I’ll take a different approach on this, requiring customers to have a VPN service, namely “Mullvad,” already installed on their system.
With Mullvad, FalixNodes Desktop can trigger commands with
exec functions in NodeJS, trigger Mullvad commands like `mullvad connect. It’s also why I chose Mullvad; their client provides CLI commands that can be used in the terminal of the operating system and are available on all platforms. Furthermore, it is incredibly inexpensive at only $5 USD per month; yep, this is a paid VPN service; no free choices are offered.
Update: This section of the article “VPN” was added on June 3rd 2022
Dates and Final Thoughts from our Developer
It is anticipated that the first alpha version of FalixNodes Desktop v4 will be made available on May 24th of this year.
Finally, FalixNodes Desktop v4 should be seen as a big step forward in the development of FalixNodes goods and services. Our desktop software, as well as our website and brand identity, will undergo a significant update this summer that will change both the desktop software and the website. I, Korbs, gained a great deal of knowledge while working on FalixNodes Desktop and FalixNodes itself, and I am proud of the work I have done for the company.
For those who use FalixNodes Desktop, thank you!