Currently, the application checks for updates in the background, and if an update is available, a dialog is shown to the user, asking if he/she wants to install the update now or later. (Last week this was done by showing a notification).
Plans
I know that in the project's description, the emphasis was on "silent updates". I was wondering if you would like me to show maybe a progression bar for downloading the updates, or a message that informs the user if the application checks for updates, if the application has/hasn't available any updates (+ version), etc. If so, where would you like me to add these? (I was thinking inside the sidebar, under the "Synchronize" button). Depending on your answers, I will plan it to be implemented either in Week 5 or Week 6.
My focus in Week 5 will be on solving some issues that are slowing the development a lot (check 'Problems' section) and adding tests if I fix them faster.
Problems
There are some problems that I would like to fix by next week:
The fact that I can't test my service in the dev environment is a very big issue. This is the same problem as last week, when the autoUpdater won't work in dev mode (even though, with some configurations, it should). Since I had to write additional code and restructure it a little, it took a lot of time to test my changes by running the command "yarn dist" and installing the app each time. This is the most important that should be fixed, it has the higher priority. I tried fixingit this Monday, but no progress.
Right now, even if I close the application (or even uninstall it), the server still checks for updates, which I think is weird. I want to investigate this. It is not hard to solve it.
The dialog that informs the user there is an update available will open regardless if another dialog is already opened or not. So if the user doesn't close the first dialog, a second one will appear on the screen. I can fix this in two ways:
Only show the dialog when the application starts.
Only show once the dialog. That means that if there is a possibility that, if the user closes the dialog, another one will open if enough time passes.
Yes that seems extremely time consuming. Could you maybe create a pull request with your current code and maybe we can suggest something to help with testing?
Does it mean we need a server to use this solution? I thought it would be possible to host the release files on GitHub, like we do now?
In terms of UI, I think it should show some non-intrusive notification (like on VSCode for example) to show that the update is ready to install. But it shouldn't show any notification when a new update is available or when it's being downloaded. For now at least, but indeed maybe later we can consider providing more information.
Yes, I wanted to wait a week to see if I can solve it on my own, but right now there is no progress, so I will create a PR. I will add the soltutions that I have tried before to my code and I will open the PR tomorrow, I will post the link here or on Discord.
When I say "server" I am referring to the local server I have created for testing, to see that the update is done correctly by replacing "Notebooks" with "Notebooks update!"
Regarding the non-intrusive part, I think you are right. While I was developing and testing, it was getting annoying to see the dialog. VSCode shows a little notification in the right down corner, with the text "Restart Visual Studio Code to apply the latest update." and the options "Update Now", "Later", "Release Notes". VSCode is also open source, so it would be a good ideea for me to check their code to see how they implemented updates. Regarding the notification, I saw a function in Joplin's code, "renderNotificationMessage", so I will assume that the logic for notifications exists. I think I will have to implement this flow: the main process checks the updates, and if the update is available, communicates with the renderer process that notifies the user.
Indeed we have this renderNotificationMessage function which display the large orange banner at the top of the screen.
But for update I wonder if something like the trash notification when we delete a note would be better. It's more discreet and looks nicer. The code is in TrashNotification