@todesktop/cli 1.18.0 → 1.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +313 -145
  2. package/dist/cli.js +112 -155
  3. package/dist/cli.js.map +3 -3
  4. package/package.json +9 -35
package/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # ToDesktop CLI
2
2
 
3
- The ToDesktop CLI allows you to build and deploy your electron app with native installers, auto-updates and code signing included.
3
+ The ToDesktop CLI allows you to build and deploy your electron app with native
4
+ installers, auto-updates and code signing included.
4
5
 
5
- For more information, visit the project [landing page](https://www.todesktop.com/cli).
6
+ For more information, visit the project
7
+ [landing page](https://www.todesktop.com/cli).
6
8
 
7
9
  ## Table of contents
8
10
 
@@ -32,7 +34,9 @@ You can use the ToDesktop CLI to work with an Electron application in 4 steps:
32
34
 
33
35
  ### Step 1: Create a ToDesktop application
34
36
 
35
- Create a ToDesktop application to link to your Electron application. This is currently done via the [web interface](http://app.todesktop.com/). Copy the ToDesktop application ID to your clipboard:
37
+ Create a ToDesktop application to link to your Electron application. This is
38
+ currently done via the [web interface](http://app.todesktop.com/). Copy the
39
+ ToDesktop application ID to your clipboard:
36
40
 
37
41
  ![ToDesktop ID](https://firebasestorage.googleapis.com/v0/b/todesktop-prod1.appspot.com/o/assets%2Ftodesktop-id.png?alt=media&token=5985e731-76c4-43e8-bbfb-bd708b7cfffd)
38
42
 
@@ -50,42 +54,48 @@ Create a `todesktop.json` file in the root of your Electron project.
50
54
  }
51
55
  ```
52
56
 
53
- Alternatively, you can create a `todesktop.js` file. This allows you to use JavaScript to dynamically generate your configuration. For example:
57
+ Alternatively, you can create a `todesktop.js` file. This allows you to use
58
+ JavaScript to dynamically generate your configuration. For example:
54
59
 
55
60
  ```javascript
56
- const path = require("path");
61
+ const path = require('path');
57
62
 
58
63
  module.exports = {
59
- id: process.env.TODESKTOP_APP_ID || "your-default-todesktop-id",
60
- icon: path.join(__dirname, "assets", "desktop-icon.png"),
64
+ id: process.env.TODESKTOP_APP_ID || 'your-default-todesktop-id',
65
+ icon: path.join(__dirname, 'assets', 'desktop-icon.png'),
61
66
  schemaVersion: 1,
62
67
  };
63
68
  ```
64
69
 
65
- You can also create a `todesktop.ts` file for TypeScript projects with full type checking and IntelliSense:
70
+ You can also create a `todesktop.ts` file for TypeScript projects with full type
71
+ checking and IntelliSense:
66
72
 
67
73
  ```typescript
68
- import type { Schema } from "@todesktop/cli";
69
- import path from "path";
74
+ import type { Schema } from '@todesktop/cli';
75
+ import path from 'path';
70
76
 
71
77
  const config: Schema = {
72
- id: process.env.TODESKTOP_APP_ID || "your-default-todesktop-id",
73
- icon: path.join(__dirname, "assets", "desktop-icon.png"),
78
+ id: process.env.TODESKTOP_APP_ID || 'your-default-todesktop-id',
79
+ icon: path.join(__dirname, 'assets', 'desktop-icon.png'),
74
80
  schemaVersion: 1,
75
- nodeVersion: "18.12.1",
81
+ nodeVersion: '18.12.1',
76
82
  mac: {
77
- category: "public.app-category.productivity",
83
+ category: 'public.app-category.productivity',
78
84
  },
79
85
  };
80
86
 
81
87
  export default config;
82
88
  ```
83
89
 
84
- See [Project configuration](#project-configuration-todesktopjson-todesktopjs-or-todesktops) for the full list of configuration options.
90
+ See
91
+ [Project configuration](#project-configuration-todesktopjson-todesktopjs-or-todesktops)
92
+ for the full list of configuration options.
85
93
 
86
94
  ### Step 3: Add @todesktop/runtime as a dependency
87
95
 
88
- The ToDesktop [runtime package](https://www.npmjs.com/package/@todesktop/runtime) takes care of auto-updating, crash reporting, and more.
96
+ The ToDesktop
97
+ [runtime package](https://www.npmjs.com/package/@todesktop/runtime) takes care
98
+ of auto-updating, crash reporting, and more.
89
99
 
90
100
  ```sh
91
101
  npm install @todesktop/runtime
@@ -93,11 +103,12 @@ npm install @todesktop/runtime
93
103
  yarn add @todesktop/runtime
94
104
  ```
95
105
 
96
- In your main (background process) script, require the package and call the `init` function. The key is to call it right at the beginning.
106
+ In your main (background process) script, require the package and call the
107
+ `init` function. The key is to call it right at the beginning.
97
108
 
98
109
  ```javascript
99
- const { app, BrowserWindow } = require("electron");
100
- const todesktop = require("@todesktop/runtime");
110
+ const { app, BrowserWindow } = require('electron');
111
+ const todesktop = require('@todesktop/runtime');
101
112
 
102
113
  todesktop.init();
103
114
 
@@ -109,7 +120,7 @@ function createWindow() {
109
120
  });
110
121
 
111
122
  // and load the index.html of the app.
112
- win.loadFile("index.html");
123
+ win.loadFile('index.html');
113
124
  }
114
125
 
115
126
  app.whenReady().then(createWindow);
@@ -117,13 +128,16 @@ app.whenReady().then(createWindow);
117
128
 
118
129
  ### Step 4: Build your app
119
130
 
120
- To build your app, run the following command inside the root of your Electron project:
131
+ To build your app, run the following command inside the root of your Electron
132
+ project:
121
133
 
122
134
  ```sh
123
135
  todesktop build
124
136
  ```
125
137
 
126
- When prompted to login, use your email address and the accessToken from our dashboard. You can retrieve your access token by clicking on your name in the top right corner of the dashboard and selecting "Manage Access Token".
138
+ When prompted to login, use your email address and the accessToken from our
139
+ dashboard. You can retrieve your access token by clicking on your name in the
140
+ top right corner of the dashboard and selecting "Manage Access Token".
127
141
 
128
142
  Once built, your app can then be downloaded and tested.
129
143
 
@@ -153,7 +167,9 @@ The main command:
153
167
  todesktop build
154
168
  ```
155
169
 
156
- This builds your Electron app with native installers, code signing, and so on baked-in. Once the build has succeeded, you should see the following output in your terminal. These are links to the download binaries for each platform:
170
+ This builds your Electron app with native installers, code signing, and so on
171
+ baked-in. Once the build has succeeded, you should see the following output in
172
+ your terminal. These are links to the download binaries for each platform:
157
173
 
158
174
  ```sh
159
175
  > ✅ ToDesktop Quick Start v1.0.0
@@ -166,35 +182,50 @@ This builds your Electron app with native installers, code signing, and so on ba
166
182
 
167
183
  We also support:
168
184
 
169
- - `todesktop build --code-sign=false`. Run a build with code-signing and notarization disabled. This is handy for testing builds quickly.
170
- - `todesktop build --config=<path.to.config.file>`. Run a build with a different configuration file (e.g., `todesktop.staging.json` or `todesktop.prod.js`).
171
- - `todesktop build --async`. Run a build in the background. This is handy for CI environments.
172
- - `todesktop build --webhook URL`. Send a POST request to the webhook URL when the build is finished. It's especially useful together with the `--async` flag.
173
- - `todesktop build --ignore-extends-errors`. Ignore `id` and `appId` validation errors when extending another configuration file (`.json` or `.js`).
174
- - `todesktop release`. Release a build. This will publish a new download and an auto-update for existing users. By default it shows a list of builds for you to choose from.
185
+ - `todesktop build --code-sign=false`. Run a build with code-signing and
186
+ notarization disabled. This is handy for testing builds quickly.
187
+ - `todesktop build --config=<path.to.config.file>`. Run a build with a different
188
+ configuration file (e.g., `todesktop.staging.json` or `todesktop.prod.js`).
189
+ - `todesktop build --async`. Run a build in the background. This is handy for CI
190
+ environments.
191
+ - `todesktop build --webhook URL`. Send a POST request to the webhook URL when
192
+ the build is finished. It's especially useful together with the `--async`
193
+ flag.
194
+ - `todesktop build --ignore-extends-errors`. Ignore `id` and `appId` validation
195
+ errors when extending another configuration file (`.json` or `.js`).
196
+ - `todesktop release`. Release a build. This will publish a new download and an
197
+ auto-update for existing users. By default it shows a list of builds for you
198
+ to choose from.
175
199
  - Use `todesktop release <id>` to release a specific build by ID.
176
200
  - `todesktop release --latest` will release the latest build.
177
201
  - Append `--force` to skip the interactive confirmation step.
178
- - Append `--config=<path.to.config.file>` to use a different configuration file.
202
+ - Append `--config=<path.to.config.file>` to use a different configuration
203
+ file.
179
204
  - `todesktop builds`. View your recent builds.
180
205
  - Use `todesktop builds <id>` to view a specific build and its progress.
181
206
  - `todesktop builds --latest` will show the latest build and it's progress.
182
207
  - `todesktop builds --count=<number>` will show the last `<number>` builds.
183
208
  - `todesktop builds --format=json` will output build data in JSON format.
184
- - Append `--config=<path.to.config.file>` to use a different configuration file.
185
- - Append `--exit` to disable dynamic pagination and exit the process once the build data has been displayed.
209
+ - Append `--config=<path.to.config.file>` to use a different configuration
210
+ file.
211
+ - Append `--exit` to disable dynamic pagination and exit the process once the
212
+ build data has been displayed.
186
213
  - `todesktop logout`. Logs you out.
187
- - `todesktop smoke-test` Check whether the build works and can be successfully updated.
214
+ - `todesktop smoke-test` Check whether the build works and can be successfully
215
+ updated.
188
216
  - Use `todesktop smoke-test <id>` to test a specific build by ID.
189
217
  - `todesktop smoke-test --latest` will test the latest build.
190
- - Append `--config=<path.to.config.file>` to use a different configuration file.
218
+ - Append `--config=<path.to.config.file>` to use a different configuration
219
+ file.
191
220
  - `todesktop whoami`. Prints the email of the account you're signed into.
192
221
  - `todesktop --help`. Shows the help documentation.
193
222
  - `todesktop --version`. Shows the current version of the CLI.
194
223
 
195
224
  ## Automating your builds (CI)
196
225
 
197
- You may want to automate builds with your Continuous Integration (CI) provider. To achieve this, simply set up environment variables for `TODESKTOP_ACCESS_TOKEN` and `TODESKTOP_EMAIL` within your CI project.
226
+ You may want to automate builds with your Continuous Integration (CI) provider.
227
+ To achieve this, simply set up environment variables for
228
+ `TODESKTOP_ACCESS_TOKEN` and `TODESKTOP_EMAIL` within your CI project.
198
229
 
199
230
  ```
200
231
  TODESKTOP_ACCESS_TOKEN=accessToken
@@ -241,25 +272,33 @@ The webhook receives a POST request with the following JSON body:
241
272
 
242
273
  ## Project configuration (todesktop.json, todesktop.js, or todesktop.ts)
243
274
 
244
- This describes all of the possible configuration options in your `todesktop.json`, `todesktop.js`, or `todesktop.ts` file.
275
+ This describes all of the possible configuration options in your
276
+ `todesktop.json`, `todesktop.js`, or `todesktop.ts` file.
245
277
 
246
278
  You can use:
247
279
 
248
280
  - A standard JSON file (`todesktop.json`) for static configuration
249
- - A JavaScript file (`todesktop.js`) that exports a configuration object for dynamic configuration
250
- - A TypeScript file (`todesktop.ts`) that exports a configuration object with full type checking and IntelliSense
281
+ - A JavaScript file (`todesktop.js`) that exports a configuration object for
282
+ dynamic configuration
283
+ - A TypeScript file (`todesktop.ts`) that exports a configuration object with
284
+ full type checking and IntelliSense
251
285
 
252
- Using `.js` or `.ts` files allows for dynamic configuration, such as setting values based on environment variables or computing paths.
286
+ Using `.js` or `.ts` files allows for dynamic configuration, such as setting
287
+ values based on environment variables or computing paths.
253
288
 
254
289
  **Note:**
255
290
 
256
- - Schema validation and IntelliSense for `.json` files are available through the JSON schema (described under [Installation](#installation))
257
- - TypeScript files (`.ts`) provide full type checking and IntelliSense when using the exported `Schema` type from `@todesktop/cli`
258
- - TypeScript compilation requires a local installation of TypeScript in your project
291
+ - Schema validation and IntelliSense for `.json` files are available through the
292
+ JSON schema (described under [Installation](#installation))
293
+ - TypeScript files (`.ts`) provide full type checking and IntelliSense when
294
+ using the exported `Schema` type from `@todesktop/cli`
295
+ - TypeScript compilation requires a local installation of TypeScript in your
296
+ project
259
297
 
260
298
  To avoid confusion, the following terms will be used throughout this file:
261
299
 
262
- - "Project root": this is the parent directory of your `todesktop.json`, `todesktop.js`, or `todesktop.ts`.
300
+ - "Project root": this is the parent directory of your `todesktop.json`,
301
+ `todesktop.js`, or `todesktop.ts`.
263
302
 
264
303
  ### `$schema` - (optional) string
265
304
 
@@ -292,7 +331,10 @@ Example: `["dist/**", "!static/**"]`
292
331
 
293
332
  This option allows you to decide which files get uploaded to be built on the ToDesktop servers. By default, all files in your app path are included in your app, except for `node_modules` and `.git`. Dependencies are installed on our build servers as there could be platform-specific postinstall steps.
294
333
 
295
- If you wish to include files for the build process but exclude them in the distribution version of your app then you should use the [`filesForDistribution`](#filesForDistribution---optional-array-of-glob-patterns) property
334
+ If you wish to include files for the build process but exclude them in the
335
+ distribution version of your app then you should use the
336
+ [`filesForDistribution`](#filesForDistribution---optional-array-of-glob-patterns)
337
+ property
296
338
 
297
339
  The files must be within your [`appPath`](#apppath---optional-string).
298
340
 
@@ -308,15 +350,20 @@ The following are always included if they exist:
308
350
 
309
351
  - Asterisk (`*`) — matches everything except slashes (path separators).
310
352
  - A double star or globstar (`**`) — matches zero or more directories.
311
- - Question mark (`?`) – matches any single character except slashes (path separators).
312
- - Exclamation mark (`!`) — a glob that starts with an exclamation mark will result in any matched files being excluded.
353
+ - Question mark (`?`) – matches any single character except slashes (path
354
+ separators).
355
+ - Exclamation mark (`!`) — a glob that starts with an exclamation mark will
356
+ result in any matched files being excluded.
313
357
 
314
358
  Examples:
315
359
 
316
- - `src/**/*.js` — matches all files in the src directory (any level of nesting) that have the `.js` extension.
317
- - `src/*.??` — matches all files in the src directory (only first level of nesting) that have a two-character extension.
360
+ - `src/**/*.js` — matches all files in the src directory (any level of nesting)
361
+ that have the `.js` extension.
362
+ - `src/*.??` — matches all files in the src directory (only first level of
363
+ nesting) that have a two-character extension.
318
364
 
319
- We use the [fast-glob](https://www.npmjs.com/package/fast-glob) library under the hood.
365
+ We use the [fast-glob](https://www.npmjs.com/package/fast-glob) library under
366
+ the hood.
320
367
 
321
368
  ### `appId` - (optional) string
322
369
 
@@ -326,7 +373,8 @@ Example: `com.microsoft.word`
326
373
 
327
374
  Your application ID. Omit this unless you know what you're doing. It's used as the [CFBundleIdentifier](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102070) for MacOS and as the [Application User Model ID](<https://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx>) for Windows.
328
375
 
329
- WARNING: if you have deployed an application with ToDesktop and would like to change this ID, talk to us first.
376
+ WARNING: if you have deployed an application with ToDesktop and would like to
377
+ change this ID, talk to us first.
330
378
 
331
379
  ### `appPath` - (optional) string
332
380
 
@@ -336,13 +384,17 @@ Example: `./dist`
336
384
 
337
385
  This is the path to your Electron application directory. Omit this unless your project setup is complicated. This is the directory that the CLI uploads.
338
386
 
339
- The path can be absolute or a relative path from the project root. The directory it points to must be a valid Electron application directory; i.e.:
387
+ The path can be absolute or a relative path from the project root. The directory
388
+ it points to must be a valid Electron application directory; i.e.:
340
389
 
341
390
  - It could be ran with the `electron` command; i.e. `npx electron {{appPath}}`.
342
391
  - It needs to contain a valid `package.json`.
343
- - The `package.json` must either have a `main` property pointing to a file in the directory or there must be an `index.js` at the root of the directory.
392
+ - The `package.json` must either have a `main` property pointing to a file in
393
+ the directory or there must be an `index.js` at the root of the directory.
344
394
 
345
- Side note: if your `package.json` contains a `postinstall` script which references scripts, these must be accessible within the `appPath` directory as only the `appPath` is uploaded to our servers.
395
+ Side note: if your `package.json` contains a `postinstall` script which
396
+ references scripts, these must be accessible within the `appPath` directory as
397
+ only the `appPath` is uploaded to our servers.
346
398
 
347
399
  ### `bundleWorkspacePackages` - (optional) object
348
400
 
@@ -401,7 +453,8 @@ Default: `["**/*.node"]`
401
453
 
402
454
  This option allows you to decide which files get unpacked from the asar archive. By default we unpack all native `*.node` files.
403
455
 
404
- If you want to unpack only files that are required to be unpacked, you can set this property to `false`.
456
+ If you want to unpack only files that are required to be unpacked, you can set
457
+ this property to `false`.
405
458
 
406
459
  You can also specify a list of glob patterns to unpack.
407
460
 
@@ -425,13 +478,15 @@ Options for customizing the macOS DMG (disk image) installer.
425
478
 
426
479
  #### `dmg.background` - (optional) string
427
480
 
428
- Default: `undefined` (if `undefined` then we use [this template](https://i.imgur.com/PUQIhvv.png)).
481
+ Default: `undefined` (if `undefined` then we
482
+ use [this template](https://i.imgur.com/PUQIhvv.png)).
429
483
 
430
484
  Example: `./mac-dmg-background.tiff`
431
485
 
432
486
  The path to the DMG installer's background image. It must be a `.tiff` file. The resolution of this file determines the resolution of the installer window. Typically, backgrounds are 540x380.
433
487
 
434
- You can generate a retina tiff background from png files using the following command:
488
+ You can generate a retina tiff background from png files using the following
489
+ command:
435
490
 
436
491
  ```sh
437
492
  tiffutil -cathidpicheck background.png background@2x.png -out background.tiff
@@ -465,8 +520,10 @@ The title of the produced DMG, which will be shown when mounted (volume name). M
465
520
 
466
521
  Customize icon locations. The x and y coordinates refer to the position of the center of the icon (at 1x scale), and do not take the label into account.
467
522
 
468
- - `x` number - The device-independent pixel offset from the left of the window to the center of the icon.
469
- - `y` number - The device-independent pixel offset from the top of the window to the center of the icon.
523
+ - `x` number -
524
+ The device-independent pixel offset from the left of the window to the center of the icon.
525
+ - `y` number -
526
+ The device-independent pixel offset from the top of the window to the center of the icon.
470
527
 
471
528
  ```
472
529
  [
@@ -489,8 +546,10 @@ The DMG windows position and size. In most cases, you will only want to specify
489
546
 
490
547
  - `x` number - The X position relative to left of the screen.
491
548
  - `y` number - The Y position relative to top of the screen.
492
- - `width` number - The width. Defaults to background image width or 540.
493
- - `height` number - The height. Defaults to background image height or 380.
549
+ - `width` number -
550
+ The width. Defaults to background image width or 540.
551
+ - `height` number -
552
+ The height. Defaults to background image height or 380.
494
553
 
495
554
  ```
496
555
  {
@@ -505,9 +564,13 @@ Default: `null`.
505
564
 
506
565
  Example: `./todesktop.base.json` or `./todesktop.base.js`.
507
566
 
508
- This is the path to a base configuration file (`.json` or `.js`). This is especially useful for configuration sharing between different environments (e.g., staging and production). The base configuration file can be a relative path from the project root or an absolute path.
567
+ This is the path to a base configuration file (`.json` or `.js`). This is
568
+ especially useful for configuration sharing between different environments
569
+ (e.g., staging and production). The base configuration file can be a relative
570
+ path from the project root or an absolute path.
509
571
 
510
- For more information about how to create a staging version of your app see: [How do I create a staging version of my app?](#how-do-i-create-a-staging-version-of-my-app).
572
+ For more information about how to create a staging version of your app see:
573
+ [How do I create a staging version of my app?](#how-do-i-create-a-staging-version-of-my-app).
511
574
 
512
575
  ### `extraContentFiles` - (optional) array of objects
513
576
 
@@ -515,9 +578,13 @@ Default: `[]`
515
578
 
516
579
  This option allows you specify files to be copied into the application's content directory (`Contents` for MacOS, root directory for Linux and Windows).
517
580
 
518
- Each item in the array must be an object, containing a `from` property which is a path to a file or directory. The path can be absolute or a relative path from the project root. The files specified must be inside your project root. A directory's contents are copied, not the directory itself (see example below).
581
+ Each item in the array must be an object, containing a `from` property which is
582
+ a path to a file or directory. The path can be absolute or a relative path from
583
+ the project root. The files specified must be inside your project root. A
584
+ directory's contents are copied, not the directory itself (see example below).
519
585
 
520
- The `to` property is optional. Use it to specify a directory inside the content directory to copy the file to.
586
+ The `to` property is optional. Use it to specify a directory inside the content
587
+ directory to copy the file to.
521
588
 
522
589
  Example:
523
590
 
@@ -529,7 +596,11 @@ Example:
529
596
  ]
530
597
  ```
531
598
 
532
- In the example above, `image.png` would be copied to the root of the content directory, whereas `anotherImage.png` would be copied to an `images` directory at the root of the content directory. The contents of the `./static` directory would be copied to `assets` in the content directory (i.e. `./static/example.txt` would be copied to `assets/example.txt`).
599
+ In the example above, `image.png` would be copied to the root of the content
600
+ directory, whereas `anotherImage.png` would be copied to an `images` directory
601
+ at the root of the content directory. The contents of the `./static` directory
602
+ would be copied to `assets` in the content directory (i.e.
603
+ `./static/example.txt` would be copied to `assets/example.txt`).
533
604
 
534
605
  ### `electronMirror` - (optional) string
535
606
 
@@ -578,14 +649,21 @@ Example:
578
649
  ]
579
650
  ```
580
651
 
581
- - `ext` String | String[] - The extension (minus the leading period). e.g. png.
582
- - `name` String - The name. e.g. PNG. Defaults to value of `ext`.
583
- - `description` String - windows-only. The description.
652
+ - `ext` String | String[] -
653
+ The extension (minus the leading period). e.g. png.
654
+ - `name` String -
655
+ The name. e.g. PNG. Defaults to value of `ext`.
656
+ - `description` String -
657
+ windows-only. The description.
584
658
  - `icon` String - macOS and windows. Icon file name without extension. It points to ico file for Windows and icns for macOS. For example, if the `icon` value is `"icons/py"` then it will look for both `"icons/py.ico"` and `"icons/py.icns"` in your project directory.
585
- - `mimeType` String - linux-only. The mime-type.
586
- - `role` = `Default: `Editor`` String - macOS-only. The app's role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.
587
- - `isPackage` Boolean - macOS-only. Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`.
588
- - `rank` = `Default: `Default`` String - macOS-only. Determines how Launch Services ranks this app among the apps that declare themselves editors or viewers of files of this type. The possible values are: `Owner` (this app is the primary creator of files of this type), `Default` (this app is an opener of files of this type; this value is also used if no rank is specified), `Alternate` (this app is a secondary viewer of files of this type), and `None` (this app is never selected to open files of this type, but it accepts drops of files of this type).
659
+ - `mimeType` String -
660
+ linux-only. The mime-type.
661
+ - `role` = `Default: `Editor`` String -
662
+ macOS-only. The app's role with respect to the type. The value can be `Editor`, `Viewer`, `Shell`, or `None`. Corresponds to `CFBundleTypeRole`.
663
+ - `isPackage` Boolean -
664
+ macOS-only. Whether the document is distributed as a bundle. If set to true, the bundle directory is treated as a file. Corresponds to `LSTypeIsPackage`.
665
+ - `rank` = `Default: `Default`` String -
666
+ macOS-only. Determines how Launch Services ranks this app among the apps that declare themselves editors or viewers of files of this type. The possible values are: `Owner` (this app is the primary creator of files of this type), `Default` (this app is an opener of files of this type; this value is also used if no rank is specified), `Alternate` (this app is a secondary viewer of files of this type), and `None` (this app is never selected to open files of this type, but it accepts drops of files of this type).
589
667
 
590
668
  ### `filesForDistribution` - (optional) array of glob patterns
591
669
 
@@ -593,7 +671,8 @@ Example: `["!**/node_modules/realm/android/**", "!**/design/**"]`
593
671
 
594
672
  This option allows you to explicitly exclude or include certain files in the packaged version of your app. These files are filtered _after_ the build step which happens on the ToDesktop servers.
595
673
 
596
- This is often useful for excluding large files which are installed during the build step but are not needed at runtime by your applcation.
674
+ This is often useful for excluding large files which are installed during the
675
+ build step but are not needed at runtime by your applcation.
597
676
 
598
677
  The following are always excluded if they exist:
599
678
 
@@ -615,7 +694,10 @@ Example: `./appIcon.png`
615
694
 
616
695
  The path to your application's desktop icon. It must be an ICNS or PNG.
617
696
 
618
- Note: to ensure the icon is never missing (e.g. this happens sometimes in Ubuntu), set the [`icon` option](https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions) when creating your `BrowserWindow`s.
697
+ Note: to ensure the icon is never missing (e.g. this happens sometimes in
698
+ Ubuntu), set the
699
+ [`icon` option](https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions)
700
+ when creating your `BrowserWindow`s.
619
701
 
620
702
  ### `id` - string
621
703
 
@@ -649,7 +731,10 @@ The path to your application's Linux desktop icon. It must be an ICNS or PNG.
649
731
 
650
732
  Default: The root [`icon`](#icon---string) is used.
651
733
 
652
- Note: to ensure the icon is never missing (e.g. this happens sometimes in Ubuntu), set the [`icon` option](https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions) when creating your `BrowserWindow`s.
734
+ Note: to ensure the icon is never missing (e.g. this happens sometimes in
735
+ Ubuntu), set the
736
+ [`icon` option](https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions)
737
+ when creating your `BrowserWindow`s.
653
738
 
654
739
  #### `linux.imageVersion` - (optional) string
655
740
 
@@ -661,7 +746,10 @@ The version of the Linux image that ToDesktop should use to build your app.
661
746
 
662
747
  Linux Changelog:
663
748
 
664
- - `0.1.0`: Updated g++ → g++10, gcc → gcc10. WARNING: This compiler has been updated to a newer version that is not compatible with older versions of Linux like Ubuntu 20.04. You should probably only use this version if you know what you're doing.
749
+ - `0.1.0`: Updated g++ → g++10, gcc → gcc10. WARNING: This compiler has been
750
+ updated to a newer version that is not compatible with older versions of Linux
751
+ like Ubuntu 20.04. You should probably only use this version if you know what
752
+ you're doing.
665
753
  - `0.0.11`: Updated git 2.25.1 → 2.47.1 node 18.18.2 → 18.20.5
666
754
 
667
755
  ### `linux.noSandbox` - (optional) boolean
@@ -670,7 +758,8 @@ Default: `true`
670
758
 
671
759
  This option allows you to configure whether your app should run in a sandboxed environment.
672
760
 
673
- We default this to `true` for compatibility reasons because some Linux distributions do not support unprivileged user namespaces.
761
+ We default this to `true` for compatibility reasons because some Linux
762
+ distributions do not support unprivileged user namespaces.
674
763
 
675
764
  ### `includeSubNodeModules` - (optional) boolean
676
765
 
@@ -702,9 +791,11 @@ Example: `public.app-category.productivity`
702
791
 
703
792
  The application category type, as shown in the Finder via _View -> Arrange by Application Category_ when viewing the Applications directory.
704
793
 
705
- For example, `public.app-category.developer-tools` will set the application category to "Developer Tools".
794
+ For example, `public.app-category.developer-tools` will set the application
795
+ category to "Developer Tools".
706
796
 
707
- Valid values are listed in [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).
797
+ Valid values are listed in
798
+ [Apple's documentation](https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/TP40009250-SW8).
708
799
 
709
800
  #### `mac.entitlements` - (optional) string
710
801
 
@@ -825,7 +916,9 @@ Example:
825
916
  }
826
917
  ```
827
918
 
828
- You can also set the version of a `dependency` (or `devDependency`), such as Electron Builder, to `null`. This will remove Electron Builder from the effective `package.json` that ToDesktop will use.
919
+ You can also set the version of a `dependency` (or `devDependency`), such as
920
+ Electron Builder, to `null`. This will remove Electron Builder from the
921
+ effective `package.json` that ToDesktop will use.
829
922
 
830
923
  ```js
831
924
  "packageJson": {
@@ -956,7 +1049,8 @@ Example: `[ "default", { "browser-sandbox": { "interface": "browser-support", "a
956
1049
 
957
1050
  The list of [plugs](https://snapcraft.io/docs/reference/interfaces). If list contains `default`, it will be replaced with the default list, so, `["default", "foo"]` can be used to add a custom plug `foo` in addition to the default list.
958
1051
 
959
- Additional attributes can be specified using object instead of just name of plug:
1052
+ Additional attributes can be specified using object instead of just name of
1053
+ plug:
960
1054
 
961
1055
  ```json
962
1056
  [
@@ -1102,7 +1196,10 @@ Example:
1102
1196
  }
1103
1197
  ```
1104
1198
 
1105
- When a build is performed for a specific platform (e.g., Windows), the ToDesktop CLI will first take the global configuration value for a field. If that same field is defined within `platformOverrides.windows`, the platform-specific value will be used instead.
1199
+ When a build is performed for a specific platform (e.g., Windows), the ToDesktop
1200
+ CLI will first take the global configuration value for a field. If that same
1201
+ field is defined within `platformOverrides.windows`, the platform-specific value
1202
+ will be used instead.
1106
1203
 
1107
1204
  In the example above:
1108
1205
 
@@ -1115,23 +1212,32 @@ In the example above:
1115
1212
  - For Linux builds:
1116
1213
  - `appId` will remain `myapp.global.id` (as it's not overridden for Linux).
1117
1214
  - `copyright` will be `Copyright © My Company (Linux)`.
1118
- - For any other properties not specified in the platform override, the global value will be used.
1215
+ - For any other properties not specified in the platform override, the global
1216
+ value will be used.
1119
1217
 
1120
- This is particularly useful for settings like `appId`, `copyright`, or platform-specific configurations within the `windows`, `mac`, or `linux` blocks (e.g., `mac.category`, `windows.icon`).
1218
+ This is particularly useful for settings like `appId`, `copyright`, or
1219
+ platform-specific configurations within the `windows`, `mac`, or `linux` blocks
1220
+ (e.g., `mac.category`, `windows.icon`).
1121
1221
 
1122
1222
  The fields that **cannot** be overridden using `platformOverrides` are:
1123
1223
 
1124
1224
  - `id` (the ToDesktop application ID)
1125
- - `icon` (the main application icon, though platform-specific icons like `windows.icon` or `mac.icon` _can_ be overridden)
1225
+ - `icon` (the main application icon, though platform-specific icons like
1226
+ `windows.icon` or `mac.icon` _can_ be overridden)
1126
1227
  - `schemaVersion`
1127
1228
  - `extends`
1128
1229
  - `platformOverrides` itself
1129
1230
 
1130
1231
  ## Build lifecycle hooks (package.json scripts)
1131
1232
 
1132
- Sometimes you want to do something before or during the build process. For example, you might want to run a script before the build starts, or you might want to run a script after the files have been packaged. Our lifecycle hooks provide a way to do this.
1233
+ Sometimes you want to do something before or during the build process. For
1234
+ example, you might want to run a script before the build starts, or you might
1235
+ want to run a script after the files have been packaged. Our lifecycle hooks
1236
+ provide a way to do this.
1133
1237
 
1134
- To specify a script, add a `scripts` property to your `package.json` file. The key is the name of the script (prefixed by `todesktop:`), and the value is the path to the script.
1238
+ To specify a script, add a `scripts` property to your `package.json` file. The
1239
+ key is the name of the script (prefixed by `todesktop:`), and the value is the
1240
+ path to the script.
1135
1241
 
1136
1242
  ```json
1137
1243
  {
@@ -1160,7 +1266,8 @@ module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
1160
1266
 
1161
1267
  Example: `./scripts/beforeBuild.js`.
1162
1268
 
1163
- The path to a script that will run before dependencies are rebuilt for target architectures.
1269
+ The path to a script that will run before dependencies are rebuilt for target
1270
+ architectures.
1164
1271
 
1165
1272
  Example script:
1166
1273
 
@@ -1175,10 +1282,10 @@ module.exports = async ({
1175
1282
  arch,
1176
1283
  hookName,
1177
1284
  }) => {
1178
- if (arch === "arm64") {
1179
- process.env.VARIABLE = "value";
1285
+ if (arch === 'arm64') {
1286
+ process.env.VARIABLE = 'value';
1180
1287
  } else {
1181
- process.env.VARIABLE = "alternative-value";
1288
+ process.env.VARIABLE = 'alternative-value';
1182
1289
  }
1183
1290
  };
1184
1291
  ```
@@ -1192,11 +1299,11 @@ The path to a script that will be run before the build starts.
1192
1299
  Example script:
1193
1300
 
1194
1301
  ```js
1195
- const { writeFile } = require("fs/promises");
1302
+ const { writeFile } = require('fs/promises');
1196
1303
 
1197
1304
  // Delete `internal` dependency from package.json
1198
1305
  module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
1199
- delete pkgJson.dependencies["internal"];
1306
+ delete pkgJson.dependencies['internal'];
1200
1307
  await writeFile(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
1201
1308
  };
1202
1309
  ```
@@ -1205,9 +1312,12 @@ module.exports = async ({ pkgJsonPath, pkgJson, appDir, hookName }) => {
1205
1312
 
1206
1313
  Example: `./scripts/afterPack.js`.
1207
1314
 
1208
- The path to a script that will be run after the app has been packed (but _before_ it has been transformed into a distributable installer format and signed).
1315
+ The path to a script that will be run after the app has been packed (but
1316
+ _before_ it has been transformed into a distributable installer format and
1317
+ signed).
1209
1318
 
1210
- The `afterPack` function also has the following arguments added to it's signature:
1319
+ The `afterPack` function also has the following arguments added to it's
1320
+ signature:
1211
1321
 
1212
1322
  - appPkgName - string - the name of the app package
1213
1323
  - appId - string - the app id
@@ -1215,21 +1325,22 @@ The `afterPack` function also has the following arguments added to it's signatur
1215
1325
  - outDir - string - the path to the output directory
1216
1326
  - appOutDir - string - the path to the app output directory
1217
1327
  - packager - object - the packager object
1218
- - arch - number - the architecture of the app. `ia32 = 0`, `x64 = 1`, `armv7l = 2`, `arm64 = 3`, `universal = 4`.
1328
+ - arch - number - the architecture of the app. `ia32 = 0`, `x64 = 1`,
1329
+ `armv7l = 2`, `arm64 = 3`, `universal = 4`.
1219
1330
 
1220
1331
  Example script:
1221
1332
 
1222
1333
  ```js
1223
- const { writeFile } = require("fs/promises");
1334
+ const { writeFile } = require('fs/promises');
1224
1335
 
1225
1336
  // Add a copyright file inside of the app directory on Mac only
1226
1337
  module.exports = async ({ appOutDir, packager }) => {
1227
- if (os.platform() === "darwin") {
1338
+ if (os.platform() === 'darwin') {
1228
1339
  const appName = packager.appInfo.productFilename;
1229
1340
  const appPath = path.join(`${appOutDir}`, `${appName}.app`);
1230
1341
  await writeFile(
1231
- path.join(appPath, "copyright.txt"),
1232
- `Copyright © ${new Date().getFullYear()} ${appName}`
1342
+ path.join(appPath, 'copyright.txt'),
1343
+ `Copyright © ${new Date().getFullYear()} ${appName}`,
1233
1344
  );
1234
1345
  }
1235
1346
  };
@@ -1237,59 +1348,86 @@ module.exports = async ({ appOutDir, packager }) => {
1237
1348
 
1238
1349
  ## App package.json requirements
1239
1350
 
1240
- - Electron must be in your `devDependencies` and it must be a fixed version. I.e. it doesn't start with `^` or `~`.
1241
- - You must set the [`author` property](https://docs.npmjs.com/files/package.json#people-fields-author-contributors).
1351
+ - Electron must be in your `devDependencies` and it must be a fixed version.
1352
+ I.e. it doesn't start with `^` or `~`.
1353
+ - You must set the
1354
+ [`author` property](https://docs.npmjs.com/files/package.json#people-fields-author-contributors).
1242
1355
 
1243
1356
  ### Recommendations for app package.json
1244
1357
 
1245
- - You should set the `productName` property. Otherwise, your app name will default to the value of the `name` property.
1358
+ - You should set the `productName` property. Otherwise, your app name will
1359
+ default to the value of the `name` property.
1246
1360
 
1247
1361
  ## FAQs
1248
1362
 
1249
1363
  ### One of my dependencies is a private package. How do I safely use it with ToDesktop CLI
1250
1364
 
1251
- ToDesktop CLI is similar to Continuous Integration service so you can use the guide from here: https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow/
1365
+ ToDesktop CLI is similar to Continuous Integration service so you can use the
1366
+ guide from here:
1367
+ https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow/
1252
1368
 
1253
1369
  To summarize:
1254
1370
 
1255
1371
  1. Create a token using npm: `npm token create --read-only`.
1256
1372
  2. In ToDesktop's web UI go to Settings -> Build and Deploy.
1257
- 3. Enter an environment variable key of `NPM_TOKEN` and value should be the token entered above.
1258
- 4. Create an `.npmrc` file in the root of your project with the following contents:
1373
+ 3. Enter an environment variable key of `NPM_TOKEN` and value should be the
1374
+ token entered above.
1375
+ 4. Create an `.npmrc` file in the root of your project with the following
1376
+ contents:
1259
1377
 
1260
1378
  ```
1261
1379
  //registry.npmjs.org/:_authToken=${NPM_TOKEN}
1262
1380
  ```
1263
1381
 
1264
- Note: **Do not put a token in this file**. You are specifying a literal value of `${NPM_TOKEN}`. NPM will replace the value for you. 5. Add `.npmrc` to your `appFiles` array `[".npmrc"]` in `todesktop.json`.
1382
+ Note: **Do not put a token in this file**. You are specifying a literal value of
1383
+ `${NPM_TOKEN}`. NPM will replace the value for you. 5. Add `.npmrc` to your
1384
+ `appFiles` array `[".npmrc"]` in `todesktop.json`.
1265
1385
 
1266
1386
  ### How can I specify a specific yarnVersion for use with my app?
1267
1387
 
1268
- By default, ToDesktop uses version `1.x.x` of `Yarn` if a `yarn.lock` file is present in your project. You can override this by creating a `.yarnrc.yml` file in your project directory and specifying the `yarnPath` property to point to your specified version of yarn:
1388
+ By default, ToDesktop uses version `1.x.x` of `Yarn` if a `yarn.lock` file is
1389
+ present in your project. You can override this by creating a `.yarnrc.yml` file
1390
+ in your project directory and specifying the `yarnPath` property to point to
1391
+ your specified version of yarn:
1269
1392
 
1270
1393
  ```yml
1271
1394
  yarnPath: .yarn/releases/yarn-3.1.1.cjs
1272
1395
  ```
1273
1396
 
1274
- This can be done automatically by running `yarn set version x.x.x` from within your project directory. This will create a `.yarnrc.yml` file and a corresponding `.yarn/releases/yarn-x.x.x.cjs` that the `yarnPath` property points to. This will also add a `packageManager` field in your `package.json` with a value of `yarn@x.x.x`
1397
+ This can be done automatically by running `yarn set version x.x.x` from within
1398
+ your project directory. This will create a `.yarnrc.yml` file and a
1399
+ corresponding `.yarn/releases/yarn-x.x.x.cjs` that the `yarnPath` property
1400
+ points to. This will also add a `packageManager` field in your `package.json`
1401
+ with a value of `yarn@x.x.x`
1275
1402
 
1276
- It's important to ensure that the `.yarn` folder is included in your build. If you had previously changed your `todesktop.json`'s [`appFiles`](#appfiles---optional-array-of-glob-patterns) property from its default glob implementation of `**`, then please ensure that it includes the `.yarn` directory:
1403
+ It's important to ensure that the `.yarn` folder is included in your build. If
1404
+ you had previously changed your `todesktop.json`'s
1405
+ [`appFiles`](#appfiles---optional-array-of-glob-patterns) property from its
1406
+ default glob implementation of `**`, then please ensure that it includes the
1407
+ `.yarn` directory:
1277
1408
 
1278
1409
  Example: `[".yarn/**", ".yarnrc.yml", "...include your other changes here..."]`
1279
1410
 
1280
- You will want to exclude the `.yarn` directory in the distribution version of your app. You can use the [`filesForDistribution`](#filesForDistribution---optional-array-of-glob-patterns) property to achieve this:
1411
+ You will want to exclude the `.yarn` directory in the distribution version of
1412
+ your app. You can use the
1413
+ [`filesForDistribution`](#filesForDistribution---optional-array-of-glob-patterns)
1414
+ property to achieve this:
1281
1415
 
1282
1416
  Example: `["!.yarn/**", "!.yarnrc.yml"]`
1283
1417
 
1284
1418
  ### How do I create a staging version of my app?
1285
1419
 
1286
- ToDesktop CLI supports the concept of a staging version of your app. This is useful if you want to test your app before releasing it to the public. To create a staging version of your app, you need to do the following:
1420
+ ToDesktop CLI supports the concept of a staging version of your app. This is
1421
+ useful if you want to test your app before releasing it to the public. To create
1422
+ a staging version of your app, you need to do the following:
1287
1423
 
1288
1424
  1. Create a new app in ToDesktop's web UI.
1289
1425
 
1290
- 2. Create a new configuration file, for example `todesktop.staging.json` or `todesktop.staging.js`.
1426
+ 2. Create a new configuration file, for example `todesktop.staging.json` or
1427
+ `todesktop.staging.js`.
1291
1428
 
1292
- 3. Add the following to your staging configuration file (e.g., `todesktop.staging.json`):
1429
+ 3. Add the following to your staging configuration file (e.g.,
1430
+ `todesktop.staging.json`):
1293
1431
 
1294
1432
  ```json
1295
1433
  {
@@ -1317,22 +1455,29 @@ ToDesktop CLI supports the concept of a staging version of your app. This is use
1317
1455
  }
1318
1456
  ```
1319
1457
 
1320
- Now you can run `npm run todesktop-build` to build the production app. Or you can run `npm run todesktop-staging-build` to build the staging app.
1458
+ Now you can run `npm run todesktop-build` to build the production app. Or you
1459
+ can run `npm run todesktop-staging-build` to build the staging app.
1321
1460
 
1322
1461
  ### I want ToDesktop to compile my typescript/react/whatever on ToDesktop Servers
1323
1462
 
1324
- No problem, this can be achieved with a [`postInstall`](https://docs.npmjs.com/cli/v9/using-npm/scripts) script in combination with ToDesktop's `TODESKTOP_CI` and `TODESKTOP_INITIAL_INSTALL_PHASE` environment variables.
1463
+ No problem, this can be achieved with a
1464
+ [`postInstall`](https://docs.npmjs.com/cli/v9/using-npm/scripts) script in
1465
+ combination with ToDesktop's `TODESKTOP_CI` and
1466
+ `TODESKTOP_INITIAL_INSTALL_PHASE` environment variables.
1325
1467
 
1326
1468
  | Name | Description |
1327
1469
  | --------------------------------- | ------------------------------------------------------------------------------------- |
1328
1470
  | `TODESKTOP_CI` | Set to `true` when running on ToDesktop build servers |
1329
1471
  | `TODESKTOP_INITIAL_INSTALL_PHASE` | Set to `true` when running the first npm/yarn/pnpm install on ToDesktop build servers |
1330
1472
 
1331
- First, let's create a file called `todesktop-postinstall.js` or something similar in the root of your app (alongside `pkckage.json`). This file is going to run a script to compile typescript after your dependencies have been installed. It could look something like this
1473
+ First, let's create a file called `todesktop-postinstall.js` or something
1474
+ similar in the root of your app (alongside `pkckage.json`). This file is going
1475
+ to run a script to compile typescript after your dependencies have been
1476
+ installed. It could look something like this
1332
1477
 
1333
1478
  ```js
1334
- const { exec } = require("child_process");
1335
- const { promisify } = require("util");
1479
+ const { exec } = require('child_process');
1480
+ const { promisify } = require('util');
1336
1481
  const execAsync = promisify(exec);
1337
1482
 
1338
1483
  async function postInstall() {
@@ -1340,12 +1485,12 @@ async function postInstall() {
1340
1485
  process.env.TODESKTOP_CI && process.env.TODESKTOP_INITIAL_INSTALL_PHASE;
1341
1486
 
1342
1487
  if (firstInstallOnToDesktopServers) {
1343
- console.log("➔ Building typescript on ToDesktop servers");
1344
- await execAsync("npm run build", {
1345
- stdio: "inherit",
1488
+ console.log('➔ Building typescript on ToDesktop servers');
1489
+ await execAsync('npm run build', {
1490
+ stdio: 'inherit',
1346
1491
  });
1347
1492
  } else {
1348
- console.log("➔ Not on ToDesktop servers... Do nothing.");
1493
+ console.log('➔ Not on ToDesktop servers... Do nothing.');
1349
1494
  }
1350
1495
  }
1351
1496
 
@@ -1367,7 +1512,8 @@ Next, add the following to your `package.json`:
1367
1512
  }
1368
1513
  ```
1369
1514
 
1370
- Now, when we build your app on ToDesktop servers, it will also run your custom `build` script after all dependencies have been installed.
1515
+ Now, when we build your app on ToDesktop servers, it will also run your custom
1516
+ `build` script after all dependencies have been installed.
1371
1517
 
1372
1518
  ## Changelog
1373
1519
 
@@ -1380,11 +1526,13 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1380
1526
 
1381
1527
  ### v1.17.1
1382
1528
 
1383
- - Fix: `windows.icon` now accepts `.ico` files without triggering schema validation errors.
1529
+ - Fix: `windows.icon` now accepts `.ico` files without triggering schema
1530
+ validation errors.
1384
1531
 
1385
1532
  ### v1.17.0
1386
1533
 
1387
- - Add support for `bundleWorkspacePackages` in config to specify whether the CLI bundles workspace packages alongside the app upload.
1534
+ - Add support for `bundleWorkspacePackages` in config to specify whether the CLI
1535
+ bundles workspace packages alongside the app upload.
1388
1536
 
1389
1537
  ### v1.15.2
1390
1538
 
@@ -1396,9 +1544,11 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1396
1544
 
1397
1545
  ### v1.15.0
1398
1546
 
1399
- - Add support for `todesktop.ts` configuration file with full TypeScript type checking and IntelliSense.
1547
+ - Add support for `todesktop.ts` configuration file with full TypeScript type
1548
+ checking and IntelliSense.
1400
1549
  - Export `Schema` type from `@todesktop/cli` for TypeScript configuration files.
1401
- - TypeScript compilation uses user's local TypeScript installation (no production dependencies added).
1550
+ - TypeScript compilation uses user's local TypeScript installation (no
1551
+ production dependencies added).
1402
1552
 
1403
1553
  ### v1.14.0
1404
1554
 
@@ -1408,8 +1558,10 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1408
1558
 
1409
1559
  ### v1.13.0
1410
1560
 
1411
- - Add support for `platformOverrides` in config to specify platform-specific overrides for app configuration
1412
- - Add support for `$schema` in config to enable JSON schema validation and IDE intellisense
1561
+ - Add support for `platformOverrides` in config to specify platform-specific
1562
+ overrides for app configuration
1563
+ - Add support for `$schema` in config to enable JSON schema validation and IDE
1564
+ intellisense
1413
1565
 
1414
1566
  ### v1.12.5
1415
1567
 
@@ -1417,11 +1569,13 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1417
1569
 
1418
1570
  ### v1.12.3
1419
1571
 
1420
- - Allow `catalog:` protocol (used by PNPM) for electron dependency version in `package.json`.
1572
+ - Allow `catalog:` protocol (used by PNPM) for electron dependency version in
1573
+ `package.json`.
1421
1574
 
1422
1575
  ### v1.12.2
1423
1576
 
1424
- - Fix: Update `appFiles` to not error when no `*.js` files are found (but `*.ts` files are present)
1577
+ - Fix: Update `appFiles` to not error when no `*.js` files are found (but `*.ts`
1578
+ files are present)
1425
1579
 
1426
1580
  ### v1.12.1
1427
1581
 
@@ -1429,7 +1583,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1429
1583
 
1430
1584
  ### v1.12.0
1431
1585
 
1432
- - Add support for custom `updateUrlBase` in config to specify a custom auto-update URL
1586
+ - Add support for custom `updateUrlBase` in config to specify a custom
1587
+ auto-update URL
1433
1588
 
1434
1589
  ### v1.11.5
1435
1590
 
@@ -1445,15 +1600,19 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1445
1600
 
1446
1601
  ### v1.11.2
1447
1602
 
1448
- - Stop erroring in cases where `appId` is not defined in an extended `todesktop.json`.
1603
+ - Stop erroring in cases where `appId` is not defined in an extended
1604
+ `todesktop.json`.
1449
1605
 
1450
1606
  ### v1.11.1
1451
1607
 
1452
- - You can now specify `linux.imageVersion` to explicitly set the version of the Linux image that ToDesktop should use to build your app.
1608
+ - You can now specify `linux.imageVersion` to explicitly set the version of the
1609
+ Linux image that ToDesktop should use to build your app.
1453
1610
 
1454
1611
  ### v1.11.0
1455
1612
 
1456
- - Add additional `id` and `appId` validation when extending another `todesktop.json` file. Can be disabled with the `--ignore-extends-errors` flag.
1613
+ - Add additional `id` and `appId` validation when extending another
1614
+ `todesktop.json` file. Can be disabled with the `--ignore-extends-errors`
1615
+ flag.
1457
1616
 
1458
1617
  ### v1.10.5
1459
1618
 
@@ -1466,7 +1625,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1466
1625
 
1467
1626
  ### v1.10.3
1468
1627
 
1469
- - Update Readme to include instructions on `todesktop.json` VSCode/Cursor validation
1628
+ - Update Readme to include instructions on `todesktop.json` VSCode/Cursor
1629
+ validation
1470
1630
 
1471
1631
  ### v1.10.2
1472
1632
 
@@ -1493,7 +1653,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1493
1653
  ### v1.9.6
1494
1654
 
1495
1655
  - Add support for `mas.x64ArchFiles` in config.
1496
- - Fix: Build is only recognised as ongoing if it was created in the last 24 hours.
1656
+ - Fix: Build is only recognised as ongoing if it was created in the last 24
1657
+ hours.
1497
1658
  - Add support for `mac.entitlementsInherit` in config.
1498
1659
 
1499
1660
  ### v1.9.4
@@ -1504,7 +1665,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1504
1665
 
1505
1666
  - Add support for `mas.entitlements` in config.
1506
1667
  - Add support for `mas.entitlementsInherit` in config.
1507
- - Add support for `mas.provisioningProfile` in config. Removed `mac.provisioningProfile` as a result.
1668
+ - Add support for `mas.provisioningProfile` in config. Removed
1669
+ `mac.provisioningProfile` as a result.
1508
1670
 
1509
1671
  ### v1.9.2
1510
1672
 
@@ -1518,11 +1680,13 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1518
1680
 
1519
1681
  ### v1.9.0
1520
1682
 
1521
- - You can now specify `@electron/rebuild` as a custom `rebuildLibrary` in your configuration file.
1683
+ - You can now specify `@electron/rebuild` as a custom `rebuildLibrary` in your
1684
+ configuration file.
1522
1685
 
1523
1686
  ### v1.8.1
1524
1687
 
1525
- - Revert support for `yarnVersion` in config. Instead use `.yarnrc.yml` file to specify yarn version.
1688
+ - Revert support for `yarnVersion` in config. Instead use `.yarnrc.yml` file to
1689
+ specify yarn version.
1526
1690
 
1527
1691
  ### v1.8.0
1528
1692
 
@@ -1546,7 +1710,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1546
1710
 
1547
1711
  ### v1.7.4
1548
1712
 
1549
- - Fix: Linux/Windows platform links no longer have mac/zip/[arch] added to the end of the download URL
1713
+ - Fix: Linux/Windows platform links no longer have mac/zip/[arch] added to the
1714
+ end of the download URL
1550
1715
 
1551
1716
  ### v1.7.3
1552
1717
 
@@ -1554,7 +1719,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1554
1719
 
1555
1720
  ### v1.7.1
1556
1721
 
1557
- - Add support for specifying custom `appBuilderLibVersion` in the configuration file
1722
+ - Add support for specifying custom `appBuilderLibVersion` in the configuration
1723
+ file
1558
1724
  - Show suggestion to run a Smoke Test when releasing an untested build
1559
1725
 
1560
1726
  ### v1.7.0
@@ -1563,7 +1729,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1563
1729
 
1564
1730
  ### v1.6.3
1565
1731
 
1566
- - Add support for specifying custom `windows.nsisCustomBinary` in the configuration file
1732
+ - Add support for specifying custom `windows.nsisCustomBinary` in the
1733
+ configuration file
1567
1734
 
1568
1735
  ### v1.6.2
1569
1736
 
@@ -1609,7 +1776,8 @@ Now, when we build your app on ToDesktop servers, it will also run your custom `
1609
1776
 
1610
1777
  ### v1.2.1
1611
1778
 
1612
- - Fix: When the build is finished the download link is now an Apple Silicon link if you are on an Apple Silicon Mac.
1779
+ - Fix: When the build is finished the download link is now an Apple Silicon link
1780
+ if you are on an Apple Silicon Mac.
1613
1781
 
1614
1782
  ### v1.2.0
1615
1783