You are browsing as a guest. Sign up (or log in) to start making projects!

12h 39m 11s logged

I speedran shipping a buncha features…in the span of a few days. I logged a copious amount of hours on Hackatime building random stuff. I tried some things with recording system audio and building a driver…those didn’t go the best, but I’ll cover that in the next devlog. Here are the main changes this week:


24. Even more quality of life changes

Compared to last time, I wanted the user experience to improve even more. Specifically, for the Windows client, a custom display driver is required. On Macs, the functionality I need is built in, so none is required. However, uninstalling this display driver used to be a pain for users. Now, I bundled it as part of the uninstall script. I wasn’t sure how to do this, but Tauri has many useful guides and issues opened regarding custom WiX/NSIS code.

When the window isn’t focused, join and leave notifications are toasted. This allows the user to stay informed even when the app isn’t open. Basic feature but very useful.

I’d often get annoyed that I needed to keep re-entering the password to log in to a previously connected device. Hence, I added auto-join for devices based on their IP. This ensures that commonly connected devices can save time when reconnecting.


25. Onboarding screens

The app is intuitive to use…or so I thought? Some of my beta testers were confused as to the various features and how to use the interface. Hence, I used NextStepjs to add onboarding components. This would dim the UI and only highlight the component being displayed, along with a message next to it. I liked the styles of NextStepjs a lot, so I chose it. There were some issues regarding window resize, so I made the onboarding exit and reopen to the last step when the window is resized. This way, the positioning of elements was forcefully recalculated.


26. Random security fixes

My app had various vulnerabilities scattered throughout, so I ran a vulnerability Claude skill and patched some holes. The main issues fixed were:

  • Checksums of bundled DLLs and resources are checked before being pushed to GitHub Actions
  • Tauri CSP and allow list are actually enforced instead of being set to allow all
  • TLS cert used for hosting the HTTPS domain has more secure file system permissions to reduce unwanted tampering of files
  • Devices are trusted by a uniquely generated token, not by IP, to decrease the chance of impersonators

27. Command-line interface

A majority of the time on this devlog was spent on the CLI. It wasn’t that hard (from a technical perspective), mainly just translating a lot of the UI code into Tauri CLI commands and mapping them correctly in the generated JSON file. One of the harder things to figure out was setting up cross-thread AppState, when the app wasn’t exactly running…turned out I just had to move the initialization command to before the window is created, so it would run inside both CLI and GUI modes. To present the QR codes better. I used qr2term to display the QR codes. By default, all logging is hidden. This turns ScreenExtend into a clean CLI mimicking the GUI. Hoorah!


That’s it for this devlog. Not much to conclude, but plenty more features coming. Stay tuned!

0
10

Comments 0

No comments yet. Be the first!