ToDesktop Changelog

A running list of our product updates.

October 5, 2020

Cancel a Build

We have now enabled support for cancelling an ongoing build. This can be done either by pressing the escape key via the CLI or clicking the Cancel Build button on the Web UI

Disable an OS/Platform

You can now completely disable building for platforms such as Mac, Windows or Linux. This is great if you only wish to provide support for Mac desktop users, for example.

This can be done by disabling all the build artifacts associated with a specific platform via the Build and Deploy settings.

Environment Variables Support

We’ve enabled support for build-time environment variables. Environment variables can be set in the following steps:

  1. Click in to your desired application from the applications overview.

  2. Navigate to the Settings menu.

  3. Navigate to the Build and Deploy submenu.

  4. Scroll down and add your environment variable KEY and VALUE.

Refreshed Build UI

We’re rolling out a cleaner build UI for the web app.

Now there’s an overview card which lists important summary information, and individual Mac, Windows and Linux tabs which lets you explore the build information as it relates to each platform.

This paves the way for upcoming features such as Build Logging and Sanity Testing.

Fixes and improvements...

September 2, 2020

CLI Bumper Edition

todesktop release is completely changed. It now releases an existing build.

  • By default, it shows a list of builds for you to choose from.

  • Use todesktop release <id> to release a specific build by ID.

  • todesktop release --latest will release the latest build.

  • Append --force to skip the interactive confirmation step.

  • We believe the ideal process is to build, then download and test, then release that build. However, if you want to build-and-release in one step, you can run:\ todesktop build && todesktop release --latest --force

New todesktop builds command for viewing builds

  • By default, it shows a list of recent builds.

  • Use todesktop builds <id> to view a specific build and its progress.

  • todesktop builds --latest will show the latest build and its progress.

Other CLI updates

  • Removed <project-path> parameter from todesktop build command. No one used it and it can be confusing.

  • Fix: removed warnings on Node 14.

  • Fix: it no longer clears the terminal history that came before it.

  • Fix: output logs when used in CI/CD (e.g. CircleCI, Travis).

  • Fix: delay on exiting CLI.

  • Improved pre-build validation.

  • .git directories are now excluded by default. I.e. they won't be uploaded to our servers or included in your packed application.

  • Fix: validation failed incorrectly when the main field contained a directory.

  • Now logs to a file on disk for troubleshooting.

  • We fixed a lot of little bugs, improved stability, and tweaked the look a small bit.

Windows App Store Support

We’ve enabled support for generating the Windows App Store artifact. This can be enabled via a toggle in the Build and Deploy settings via the Web Interface

Fixes and improvements...

  • Improvement: No-code users can now set up a custom domain and configure their build platforms when creating an app for the first time.

  • Fix: Linux builds would fail if you used a scoped package name (e.g. @organization/package ). Now, this is converted to organization-package (in executable filenames only).

  • Fix for 32-bit Windows artifact downloads (when using the old todesktop release command).

  • Fix: UI is more accurate when it comes to whether or not a build was code-signed and notarized.

  • Fix: Runtime is now fully compatible with Webpack.

  • Fix: Removing an existing custom domain will no longer cause builds to fail

August 7, 2020

Self-Service HSM EV Code Signing

We now have streamlined onboarding steps for getting your application code-signed with a Windows EV Certificate from our preferred provider GlobalSign.

Display of Git Hash Information

When using the CLI, we’ll grab the Git commit when you trigger a build so it can be displayed on the build page. If you use GitHub, it will link to the relevant commit page.

Fixes and improvements...

  • Web app validates that a PNG is used when uploading an icon via the UI. The UI also shows a helpful error when this is not the case

  • *.node files are no longer packed into your application’s ASAR archive to prevent anti-virus false positives. They used to get unpacked when used at runtime.

  • You can now add entries to your Mac app’s Info.plist via the `mac.extendInfo` todesktop.json option.

  • Notarization is now time-limited to 45 minutes. Sometimes Apple’s servers can be randomly slow for one notarization request, but not the next. We’ve seen it take over 3 hours.

  • A Mac auto-update edge case bug was fixed. This is what used to happen:\ 1. The Mac app performs an update check.\ 2. An update is found and downloaded.\ 3. The user ignores the app’s UI prompt and keeps the app open.\ 4. Another update check is performed.\ 5. Another (even newer) update is found but the download fails (eg. due to poor network).\ 6. The user uses the UI to install the update / restart the app (which is still shown since step #3).\ 7. @todesktop/runtime throws an error that there is no update downloaded.

July 18, 2020

Improved Build Infrastructure

Improved build infrastructure

Our build infrastructure has now moved to a completely sandboxed environment. We spin up a new Windows, Mac and Linux instance each time you do a build. You can expect:

  • Better uptime — We’re confident that uptime issues related to managing our own build hardware will be a thing of the past.

  • Increased concurrency — Builds won’t be stuck in the queue for 10+ minutes anymore.

  • Stability — Sandboxing ensures that builds are isolated from each other which reduces the potential for unforeseen side-effects.

  • Security — Your code is no longer run in the same instance as other ToDesktop customers.

  • Performance — Right now builds take roughly the same amount of time as before. We will optimise this in the future so you can expect to see reduced build times.

  • Future goodies — We won’t spoil the surprise but this unlocks a whole host of features that we will be announcing over the next few months.

All Windows Code Signing Certificates are now stored on a Hardware Security Module

As part of our ongoing commitment to security we are now storing all Windows Certs on a HSM (Hardware Security Module) using Azure KeyVault. In practical terms, this means that:

  • Your key is protected by a physical hardware device that performs the key decryption.

  • We have a full audit log of each time your code signing key was accessed and used.

  • We no longer store your private key decryption password.

Improved Electron App Onboarding

There’s now automated migration support for onboarding apps using Squirrel.Mac and Squirrel.Windows.

We added and clarified steps related to the Electron app onboarding process. We’ve also created docs for the different migration paths available to you if you’re using Electron Builder, Electron Forge or Electron Webpack.

Finally, new users interested in CLI apps can now pay directly via the web app.

July 7, 2020

Release an unreleased build

Release an unreleased build

Customers can now release a previously unreleased build. Releasing builds in this way allow for an ideal deployment workflow with the following stages:

  1. Build your app using the `todesktop build` command.

  2. Test this new build of your app.

  3. Once happy, promote that built version to a release, meaning users will now auto-update to it.

Full snap store support

We now have full Snap store support. We even support snaps with custom stage packages.

Settings panel for web-to-desktop app users

Customers who use our web-to-desktop builder can now set up custom domains and configure what platforms their app will be built for.

Improved build infrastructure for web-to-desktop app users

Our build infrastructure now supports concurrent builds so builds should no longer get stuck behind other builds in the queue. Builds are now also fully sandboxed and more reliable.

Fixes and improvements

  • @todesktop/runtime’s types are correctly exported now.

  • Removed support for “productName” in todesktop.json. We made this change because Electron also uses the "productName" if it exists in your app's package.json.

  • CLI: improved UI when one OS fails.

  • CLI: no longer automatically copies to clipboard when a build completes.

  • CLI: tightened up (package.json) author property validation.

  • Web: dropdown menus now work on mobile.

  • Web: Fixed an issue where `window.todesktop.electronVersion` was incorrect.

  • Web: Fixed crash on quit that was occurring for a small number of customers.

  • Fixed error related to sending build completion email

  • Added a lot more tests.

June 18, 2020

Improved Self-Service

We’re spending a considerable amount of time on making ToDesktop self-service. We now have a customer-facing interface for configuring the following:

  • Custom domains: Serve your desktop application from a domain of your choice.

  • Build platforms: Can now distribute your app through ZIP, RPM, Debian packages and more

  • Certificate management: Upload your mac and windows certificates securely from the UI

Improved Onboarding

To improve the onboarding experience, new Beta customers can now create a CLI app from the web interface. To fit into this new onboarding flow, we’ve published a create-todesktop-app package that allows customers to generate a new Electron app with ToDesktop baked in.

Snap Store Support

As part of a wider push towards app store distribution, we’ve enabled support for Snap Store. This does not include multipass support which is to come.

Custom Electron Support

We now support an electronMirror option in todesktop.json. This is the base URL of the mirror to download Electron from. This may be a mirror geographically closer to you or even your own mirror which contains custom Electron builds. The version downloaded is the Electron version specified in devDependencies in your app's package.json.

Quicker Desktop Builds

To enable faster development builds, the CLI build command now supports disabling code-signing and notarization. E.g. todesktop build . --code-sign=false.

Included in this are safety measures to ensure that unsigned releases never get into production.

Other improvements and fixes:

  • Added appFiles to todesktop.json option to specify which files get included in your app. By default, all files in your app path are included in your app, except for node_modules. Dependencies are installed on our build servers as there could be platform-specific postinstall steps. The following are always uploaded if they exist: package.json, package-lock.json, and yarn.lock.

  • Added ID todesktop.json option for specifying which ToDesktop ID to tie to your Electron app.

  • We now support OS-specific icons, meaning you can have a different icon for Windows, Mac and Linux.

  • Added a todesktop whoami command which prints the email of the currently logged-in user.

  • Added a customLogger option to the @todesktop/runtime package. To debug, you can pass a custom logger object. You can pass electron-log (recommended), winston, or another logger with the following interface: { error(), info(), warn() }. Include a debug() method to get even more information.

  • Fix: preserves file permissions. E.g. if you want to include an extra executable in your app.

  • Fix: Some project configuration was accidentally cached between builds.

March 13, 2020

Web App 2.0

To support the CLI, Menubar and Desktop products, we focused on completely re-designing the web interface. This makes it a lot easier to manage all of your apps that are built with ToDesktop.

March 6, 2020

Introducing ToDesktop CLI

Launching the ToDesktop CLI is a massive milestone for us. With one simple command your app is published and ready for distribution on Windows, Mac and Linux. Your app is built with native installers, auto-updates, code signing and crash reports baked-in.

There's no infrastructure to set-up, no servers to manage and no configuration needed.

Learn more here: Sign up to be a beta user here:

February 16, 2020

Menubar Product

New Menubar Product

The Menubar product allows you to deploy your web app in the menubar or tray. This provides a quick way for customers to keep up to date with activity feeds, reports or new content. Your app can even be set to always stay open on top of other windows.

Learn more here:

Browser Navigation

We have added extra APIs and additional documentation around adding browser controls (back, forward, refresh buttons) to to your desktop app.

Learn more here:

Other improvements and fixes:

  • Add ability to open new windows/tabs via keyboard shortcuts: cmd/ctrl + n/ t

  • Added badge icon in builder view to differentiate menubar apps

  • Use additional windows (not tabs) if transparent titlebar enabled

  • Context menu now works for all additional windows

  • Fixed bug related to notifications

  • Fixes around code signing

  • Fixes around internal URLs

February 9, 2020

Launching an App on Startup

Launch App on Startup

This option lets you specify whether your desktop app should launch when a user starts their computer. By default, this is disabled for Desktop apps and enabled for Menubar apps.

Learn more here:

MSI Installer

The MSI installer provides an alternative way to deploy your desktop app to customers. E.g. if you have desktop intranet software, then the preferred way for customers to deploy the desktop app internally may be through MSI group policy instead of Mac, Windows (.exe), or Linux executables.


CNAME auto-updates are now available. If you want to serve auto-updates and download links from your domain instead of the todesktop domain, just let us know what subdomain you want us to use and we can get you set up.

Other improvements and fixes:

  • Added new logo throughout website and web app

  • Add TypeScript UI theming to web app

  • Setup updating of payment methods

  • Code refactored for faster future development

  • Allow user to build app even on timeout

  • Fixed Google OAuth login issue

  • Fixed bug related to setting app badges

Powered by