@cats-inc/cats-platform 0.1.1 → 0.1.5

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 (152) hide show
  1. package/.env.example +2 -2
  2. package/README.md +6 -0
  3. package/build/desktop/bootstrapPage.d.ts.map +1 -1
  4. package/build/desktop/bootstrapPage.js +81 -4
  5. package/build/desktop/bootstrapPage.js.map +1 -1
  6. package/build/desktop/config.d.ts +11 -1
  7. package/build/desktop/config.d.ts.map +1 -1
  8. package/build/desktop/config.js +5 -2
  9. package/build/desktop/config.js.map +1 -1
  10. package/build/desktop/contracts.d.ts +66 -11
  11. package/build/desktop/contracts.d.ts.map +1 -1
  12. package/build/desktop/contracts.js +50 -1
  13. package/build/desktop/contracts.js.map +1 -1
  14. package/build/desktop/hostState.d.ts +4 -3
  15. package/build/desktop/hostState.d.ts.map +1 -1
  16. package/build/desktop/hostState.js +22 -30
  17. package/build/desktop/hostState.js.map +1 -1
  18. package/build/desktop/hostVersion.d.ts +1 -0
  19. package/build/desktop/hostVersion.d.ts.map +1 -1
  20. package/build/desktop/hostVersion.js +29 -5
  21. package/build/desktop/hostVersion.js.map +1 -1
  22. package/build/desktop/main.js +234 -37
  23. package/build/desktop/main.js.map +1 -1
  24. package/build/desktop/packaging.d.ts.map +1 -1
  25. package/build/desktop/packaging.js +10 -4
  26. package/build/desktop/packaging.js.map +1 -1
  27. package/build/desktop/preload.cjs +29 -0
  28. package/build/desktop/preload.cjs.map +1 -1
  29. package/build/desktop/processSupervisor.d.ts +2 -0
  30. package/build/desktop/processSupervisor.d.ts.map +1 -1
  31. package/build/desktop/processSupervisor.js +28 -13
  32. package/build/desktop/processSupervisor.js.map +1 -1
  33. package/build/desktop/readiness.d.ts +2 -2
  34. package/build/desktop/readiness.d.ts.map +1 -1
  35. package/build/desktop/readiness.js +2 -2
  36. package/build/desktop/readiness.js.map +1 -1
  37. package/build/desktop/releaseDescriptor.d.ts +85 -0
  38. package/build/desktop/releaseDescriptor.d.ts.map +1 -0
  39. package/build/desktop/releaseDescriptor.js +246 -0
  40. package/build/desktop/releaseDescriptor.js.map +1 -0
  41. package/build/desktop/tray.d.ts +1 -0
  42. package/build/desktop/tray.d.ts.map +1 -1
  43. package/build/desktop/tray.js +26 -0
  44. package/build/desktop/tray.js.map +1 -1
  45. package/build/desktop/trayMenu.d.ts +22 -1
  46. package/build/desktop/trayMenu.d.ts.map +1 -1
  47. package/build/desktop/trayMenu.js +61 -0
  48. package/build/desktop/trayMenu.js.map +1 -1
  49. package/build/desktop/updateInstallHandoff.d.ts +30 -0
  50. package/build/desktop/updateInstallHandoff.d.ts.map +1 -0
  51. package/build/desktop/updateInstallHandoff.js +39 -0
  52. package/build/desktop/updateInstallHandoff.js.map +1 -0
  53. package/build/desktop/updateIpc.d.ts +42 -0
  54. package/build/desktop/updateIpc.d.ts.map +1 -0
  55. package/build/desktop/updateIpc.js +71 -0
  56. package/build/desktop/updateIpc.js.map +1 -0
  57. package/build/desktop/updateManager.d.ts +76 -0
  58. package/build/desktop/updateManager.d.ts.map +1 -0
  59. package/build/desktop/updateManager.js +342 -0
  60. package/build/desktop/updateManager.js.map +1 -0
  61. package/build/desktop/updateNotifications.d.ts +64 -0
  62. package/build/desktop/updateNotifications.d.ts.map +1 -0
  63. package/build/desktop/updateNotifications.js +143 -0
  64. package/build/desktop/updateNotifications.js.map +1 -0
  65. package/build/desktop/updaterAdapter.d.ts +72 -0
  66. package/build/desktop/updaterAdapter.d.ts.map +1 -0
  67. package/build/desktop/updaterAdapter.js +198 -0
  68. package/build/desktop/updaterAdapter.js.map +1 -0
  69. package/build/renderer/assets/{ActiveSessionPermissionChip-BYr8cDpb.js → ActiveSessionPermissionChip-BoDkKkmi.js} +1 -1
  70. package/build/renderer/assets/{App-BbuTWT6Y.js → App-Bs1eRarv.js} +1 -1
  71. package/build/renderer/assets/{App-B13AzNko.js → App-C4S1Wa9f.js} +1 -1
  72. package/build/renderer/assets/{App-n-RtGh42.js → App-CNJj5gi9.js} +1 -1
  73. package/build/renderer/assets/{WorkspaceAppRoutes-BktWrQK-.js → WorkspaceAppRoutes-CFAuhWGF.js} +1 -1
  74. package/build/renderer/assets/app-uJJx-k1S.js +43 -0
  75. package/build/renderer/assets/{conversationSidebarRecentEntries-BNPz3X1V.js → conversationSidebarRecentEntries-CPGopayy.js} +1 -1
  76. package/build/renderer/assets/{useDraftSessionChips-3z_Je4ju.js → useDraftSessionChips-BsOdYfWw.js} +1 -1
  77. package/build/renderer/index.html +1 -1
  78. package/build/server/app/renderer/settings/settingsDesktopErrorLabels.d.ts +5 -0
  79. package/build/server/app/renderer/settings/settingsDesktopErrorLabels.d.ts.map +1 -0
  80. package/build/server/app/renderer/settings/settingsDesktopErrorLabels.js +16 -0
  81. package/build/server/app/renderer/settings/settingsDesktopErrorLabels.js.map +1 -0
  82. package/build/server/app/renderer/settings/settingsDesktopPreferences.d.ts +11 -0
  83. package/build/server/app/renderer/settings/settingsDesktopPreferences.d.ts.map +1 -0
  84. package/build/server/app/renderer/settings/settingsDesktopPreferences.js +30 -0
  85. package/build/server/app/renderer/settings/settingsDesktopPreferences.js.map +1 -0
  86. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts +31 -0
  87. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts.map +1 -0
  88. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js +101 -0
  89. package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js.map +1 -0
  90. package/build/server/app/server/index.js +1 -1
  91. package/build/server/app/server/index.js.map +1 -1
  92. package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
  93. package/build/server/app/server/platformSetupRoutes.js +42 -5
  94. package/build/server/app/server/platformSetupRoutes.js.map +1 -1
  95. package/build/server/app/server/requestRouter.d.ts.map +1 -1
  96. package/build/server/app/server/requestRouter.js +2 -0
  97. package/build/server/app/server/requestRouter.js.map +1 -1
  98. package/build/server/design/components/runtimeChips.d.ts +1 -1
  99. package/build/server/design/components/runtimeChips.d.ts.map +1 -1
  100. package/build/server/design/components/runtimeChips.js +4 -1
  101. package/build/server/design/components/runtimeChips.js.map +1 -1
  102. package/build/server/index.js +12 -1
  103. package/build/server/index.js.map +1 -1
  104. package/build/server/platform/auth/sessionSecretProvisioning.d.ts +23 -0
  105. package/build/server/platform/auth/sessionSecretProvisioning.d.ts.map +1 -0
  106. package/build/server/platform/auth/sessionSecretProvisioning.js +291 -0
  107. package/build/server/platform/auth/sessionSecretProvisioning.js.map +1 -0
  108. package/build/server/products/code/livePreview/realProcessAdapter.d.ts.map +1 -1
  109. package/build/server/products/code/livePreview/realProcessAdapter.js +7 -1
  110. package/build/server/products/code/livePreview/realProcessAdapter.js.map +1 -1
  111. package/build/server/products/code/state/appExport.d.ts.map +1 -1
  112. package/build/server/products/code/state/appExport.js +2 -0
  113. package/build/server/products/code/state/appExport.js.map +1 -1
  114. package/build/server/shared/desktopRecoveryBridge.d.ts +46 -0
  115. package/build/server/shared/desktopRecoveryBridge.d.ts.map +1 -1
  116. package/build/server/shared/desktopRecoveryBridge.js +20 -0
  117. package/build/server/shared/desktopRecoveryBridge.js.map +1 -1
  118. package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
  119. package/build/server/shared/i18n/catalogs/en.js +37 -0
  120. package/build/server/shared/i18n/catalogs/en.js.map +1 -1
  121. package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
  122. package/build/server/shared/i18n/catalogs/zh-TW.js +35 -0
  123. package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
  124. package/build/server/shared/i18n/index.d.ts +35 -0
  125. package/build/server/shared/i18n/index.d.ts.map +1 -1
  126. package/build/server/shared/i18n/messageKeys.d.ts +35 -0
  127. package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
  128. package/build/server/shared/i18n/messageKeys.js +35 -0
  129. package/build/server/shared/i18n/messageKeys.js.map +1 -1
  130. package/build/server/shared/loadProjectEnvFile.d.ts.map +1 -1
  131. package/build/server/shared/loadProjectEnvFile.js +18 -19
  132. package/build/server/shared/loadProjectEnvFile.js.map +1 -1
  133. package/build/server/shared/platformChildProcessEnv.d.ts +2 -0
  134. package/build/server/shared/platformChildProcessEnv.d.ts.map +1 -0
  135. package/build/server/shared/platformChildProcessEnv.js +22 -0
  136. package/build/server/shared/platformChildProcessEnv.js.map +1 -0
  137. package/package.json +19 -27
  138. package/scripts/build-desktop-installer.mjs +438 -37
  139. package/scripts/build-test-ui.mjs +13 -2
  140. package/scripts/generate-desktop-release-descriptor.mjs +258 -0
  141. package/scripts/validate-release-assets.mjs +422 -0
  142. package/scripts/validate-release-version.mjs +217 -0
  143. package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +55 -1
  144. package/build/desktop/update.d.ts +0 -24
  145. package/build/desktop/update.d.ts.map +0 -1
  146. package/build/desktop/update.js +0 -173
  147. package/build/desktop/update.js.map +0 -1
  148. package/build/renderer/assets/app-DnVQMpW_.js +0 -43
  149. package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.d.ts +0 -5
  150. package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.d.ts.map +0 -1
  151. package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.js +0 -11
  152. package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.js.map +0 -1
@@ -1,9 +1,10 @@
1
- import type { DesktopBackgroundState, DesktopBootstrapSnapshot, DesktopHostDiagnosticsState, DesktopHostPersistedState, DesktopPackagingPlan, DesktopSetupState, DesktopUpdateState } from './contracts.js';
1
+ import type { DesktopBackgroundState, DesktopBootstrapSnapshot, DesktopHostDiagnosticsState, DesktopHostPersistedState, DesktopPackagingPlan, DesktopSetupState, DesktopUpdateSnapshot } from './contracts.js';
2
2
  import type { DesktopHostConfig } from './config.js';
3
3
  interface DesktopHostStateStoreDependencies {
4
4
  now?: () => Date;
5
5
  }
6
6
  export declare function createDesktopBackgroundState(config: DesktopHostConfig, overrides?: Partial<DesktopBackgroundState>): DesktopBackgroundState;
7
+ export declare function readPersistedUpdateLastCheckedAt(value: unknown): string | null;
7
8
  export declare class DesktopHostStateStore {
8
9
  private readonly statePath;
9
10
  private writeQueue;
@@ -11,14 +12,14 @@ export declare class DesktopHostStateStore {
11
12
  constructor(statePath: string, dependencies?: DesktopHostStateStoreDependencies);
12
13
  load(config: DesktopHostConfig, defaults: {
13
14
  background: DesktopBackgroundState;
14
- updates: DesktopUpdateState;
15
+ updates: DesktopUpdateSnapshot;
15
16
  packaging: DesktopPackagingPlan;
16
17
  setup: DesktopSetupState;
17
18
  }): Promise<DesktopHostPersistedState | null>;
18
19
  save(input: {
19
20
  snapshot: DesktopBootstrapSnapshot;
20
21
  background: DesktopBackgroundState;
21
- updates: DesktopUpdateState;
22
+ updates: DesktopUpdateSnapshot;
22
23
  packaging: DesktopPackagingPlan;
23
24
  setup: DesktopSetupState;
24
25
  diagnostics: DesktopHostDiagnosticsState | null;
@@ -1 +1 @@
1
- {"version":3,"file":"hostState.d.ts","sourceRoot":"","sources":["../../desktop/host/hostState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EAMtB,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EAIzB,oBAAoB,EAGpB,iBAAiB,EAGjB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,UAAU,iCAAiC;IACzC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,sBAAsB,CAUxB;AA6bD,qBAAa,qBAAqB;IAM9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAGd,SAAS,EAAE,MAAM,EAClC,YAAY,GAAE,iCAAsC;IAKhD,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE;QACR,UAAU,EAAE,sBAAsB,CAAC;QACnC,OAAO,EAAE,kBAAkB,CAAC;QAC5B,SAAS,EAAE,oBAAoB,CAAC;QAChC,KAAK,EAAE,iBAAiB,CAAC;KAC1B,GACA,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAwCtC,IAAI,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,wBAAwB,CAAC;QACnC,UAAU,EAAE,sBAAsB,CAAC;QACnC,OAAO,EAAE,kBAAkB,CAAC;QAC5B,SAAS,EAAE,oBAAoB,CAAC;QAChC,KAAK,EAAE,iBAAiB,CAAC;QACzB,WAAW,EAAE,2BAA2B,GAAG,IAAI,CAAC;KACjD,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBlB"}
1
+ {"version":3,"file":"hostState.d.ts","sourceRoot":"","sources":["../../desktop/host/hostState.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EAMtB,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EAIzB,oBAAoB,EAGpB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,UAAU,iCAAiC;IACzC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,sBAAsB,CAUxB;AA+ED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE9E;AA4VD,qBAAa,qBAAqB;IAM9B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAL5B,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAGd,SAAS,EAAE,MAAM,EAClC,YAAY,GAAE,iCAAsC;IAKhD,IAAI,CACR,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE;QACR,UAAU,EAAE,sBAAsB,CAAC;QACnC,OAAO,EAAE,qBAAqB,CAAC;QAC/B,SAAS,EAAE,oBAAoB,CAAC;QAChC,KAAK,EAAE,iBAAiB,CAAC;KAC1B,GACA,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAwCtC,IAAI,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,wBAAwB,CAAC;QACnC,UAAU,EAAE,sBAAsB,CAAC;QACnC,OAAO,EAAE,qBAAqB,CAAC;QAC/B,SAAS,EAAE,oBAAoB,CAAC;QAChC,KAAK,EAAE,iBAAiB,CAAC;QACzB,WAAW,EAAE,2BAA2B,GAAG,IAAI,CAAC;KACjD,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBlB"}
@@ -1,6 +1,6 @@
1
1
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
2
  import { dirname } from 'node:path';
3
- import { DESKTOP_BOOTSTRAP_PHASES, DESKTOP_HOST_NAME, DESKTOP_UPDATE_CHANNELS, DESKTOP_UPDATE_STATUSES, } from './contracts.js';
3
+ import { DESKTOP_BOOTSTRAP_PHASES, DESKTOP_HOST_NAME, } from './contracts.js';
4
4
  import { DESKTOP_HOST_VERSION } from './hostVersion.js';
5
5
  import { createEmptyDesktopDiagnosticsState } from './bootstrapDiagnostics.js';
6
6
  export function createDesktopBackgroundState(config, overrides = {}) {
@@ -39,22 +39,6 @@ function normalizeHealthStatus(value) {
39
39
  ? value
40
40
  : 'degraded';
41
41
  }
42
- function normalizeUpdateChannel(value, fallback) {
43
- return typeof value === 'string'
44
- && DESKTOP_UPDATE_CHANNELS.includes(value)
45
- ? value
46
- : fallback;
47
- }
48
- function normalizeUpdateStatus(value, fallback) {
49
- return typeof value === 'string'
50
- && DESKTOP_UPDATE_STATUSES.includes(value)
51
- ? value
52
- : fallback;
53
- }
54
- function normalizeSha256(value) {
55
- const digest = readString(value);
56
- return digest && /^[a-f0-9]{64}$/iu.test(digest) ? digest.toLowerCase() : null;
57
- }
58
42
  function normalizeBackgroundState(value, fallback) {
59
43
  if (!isObjectRecord(value)) {
60
44
  return fallback;
@@ -69,23 +53,31 @@ function normalizeBackgroundState(value, fallback) {
69
53
  lastHiddenAt: readString(value.lastHiddenAt),
70
54
  };
71
55
  }
72
- function normalizeUpdateState(value, fallback) {
56
+ /**
57
+ * The last check time is the only update fact that survives a restart.
58
+ *
59
+ * Capability is recomputed from the running package on every launch, and every
60
+ * status is provider-dependent: a restored `update_available` cannot be acted
61
+ * on without checking again, and a restored `downloading` or `installing`
62
+ * describes work no operation in the new process is driving. Restoring any of
63
+ * them would put the host snapshot and the update manager into different
64
+ * states, which is exactly the divergence this avoids.
65
+ *
66
+ * The restored timestamp is fed to the manager at construction, so the manager
67
+ * stays the single owner of update state.
68
+ */
69
+ function normalizeUpdateSnapshot(value, fallback) {
73
70
  if (!isObjectRecord(value)) {
74
71
  return fallback;
75
72
  }
76
73
  return {
77
- channel: normalizeUpdateChannel(value.channel, fallback.channel),
78
- status: normalizeUpdateStatus(value.status, fallback.status),
79
- currentVersion: readString(value.currentVersion) ?? fallback.currentVersion,
80
- latestVersion: readString(value.latestVersion),
81
- summary: readString(value.summary) ?? fallback.summary,
82
- lastCheckedAt: readTimestamp(value.lastCheckedAt),
83
- manifestUrl: readString(value.manifestUrl),
84
- downloadUrl: readString(value.downloadUrl),
85
- sha256: normalizeSha256(value.sha256),
86
- error: readString(value.error),
74
+ ...fallback,
75
+ lastCheckedAt: readTimestamp(value.lastCheckedAt) ?? fallback.lastCheckedAt,
87
76
  };
88
77
  }
78
+ export function readPersistedUpdateLastCheckedAt(value) {
79
+ return isObjectRecord(value) ? readTimestamp(value.lastCheckedAt) : null;
80
+ }
89
81
  function readStringArray(value) {
90
82
  if (!Array.isArray(value)) {
91
83
  return [];
@@ -402,7 +394,7 @@ export class DesktopHostStateStore {
402
394
  snapshot: {
403
395
  ...snapshot,
404
396
  background: normalizeBackgroundState(snapshot.background, defaults.background),
405
- updates: normalizeUpdateState(snapshot.updates, defaults.updates),
397
+ updates: normalizeUpdateSnapshot(snapshot.updates, defaults.updates),
406
398
  packaging: isObjectRecord(snapshot.packaging)
407
399
  ? snapshot.packaging
408
400
  : defaults.packaging,
@@ -411,7 +403,7 @@ export class DesktopHostStateStore {
411
403
  hostStatePath: this.statePath,
412
404
  },
413
405
  background: normalizeBackgroundState(parsed.background, defaults.background),
414
- updates: normalizeUpdateState(parsed.updates, defaults.updates),
406
+ updates: normalizeUpdateSnapshot(parsed.updates, defaults.updates),
415
407
  packaging: isObjectRecord(parsed.packaging)
416
408
  ? parsed.packaging
417
409
  : defaults.packaging,
@@ -1 +1 @@
1
- {"version":3,"file":"hostState.js","sourceRoot":"","sources":["../../desktop/host/hostState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hostState.js","sourceRoot":"","sources":["../../desktop/host/hostState.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export declare const DESKTOP_HOST_VERSION: string;
2
+ export declare const DESKTOP_APP_USER_MODEL_ID: string | null;
2
3
  //# sourceMappingURL=hostVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostVersion.d.ts","sourceRoot":"","sources":["../../desktop/host/hostVersion.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,oBAAoB,QAAuB,CAAC"}
1
+ {"version":3,"file":"hostVersion.d.ts","sourceRoot":"","sources":["../../desktop/host/hostVersion.ts"],"names":[],"mappings":"AAiDA,eAAO,MAAM,oBAAoB,QAAuB,CAAC;AACzD,eAAO,MAAM,yBAAyB,eAAuB,CAAC"}
@@ -1,13 +1,37 @@
1
1
  import { readFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
- function readPackageVersion() {
4
+ function readAppPackageJson() {
5
5
  const packageJsonPath = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'package.json');
6
- const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
7
- if (!packageJson.version) {
8
- throw new Error(`Could not resolve version from ${packageJsonPath}`);
6
+ return {
7
+ path: packageJsonPath,
8
+ contents: JSON.parse(readFileSync(packageJsonPath, 'utf8')),
9
+ };
10
+ }
11
+ function readPackageVersion() {
12
+ const { path, contents } = readAppPackageJson();
13
+ if (!contents.version) {
14
+ throw new Error(`Could not resolve version from ${path}`);
15
+ }
16
+ return contents.version;
17
+ }
18
+ /**
19
+ * The electron-builder `appId`, or null when it cannot be read.
20
+ *
21
+ * Windows only shows a native notification when the running process claims the
22
+ * same Application User Model ID as the Start Menu shortcut the installer
23
+ * wrote, and that shortcut carries `appId`. Reading it here keeps the value
24
+ * from becoming a second source of truth; a missing field disables the claim
25
+ * rather than guessing an ID that would silently swallow every notification.
26
+ */
27
+ function readAppUserModelId() {
28
+ try {
29
+ return readAppPackageJson().contents.build?.appId?.trim() || null;
30
+ }
31
+ catch {
32
+ return null;
9
33
  }
10
- return packageJson.version;
11
34
  }
12
35
  export const DESKTOP_HOST_VERSION = readPackageVersion();
36
+ export const DESKTOP_APP_USER_MODEL_ID = readAppUserModelId();
13
37
  //# sourceMappingURL=hostVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hostVersion.js","sourceRoot":"","sources":["../../desktop/host/hostVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMzC,SAAS,kBAAkB;IACzB,MAAM,eAAe,GAAG,IAAI,CAC1B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,IAAI,EACJ,cAAc,CACf,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAmB,CAAC;IACxF,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,eAAe,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"hostVersion.js","sourceRoot":"","sources":["../../desktop/host/hostVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASzC,SAAS,kBAAkB;IACzB,MAAM,eAAe,GAAG,IAAI,CAC1B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,IAAI,EACJ,cAAc,CACf,CAAC;IACF,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAmB;KAC9E,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,OAAO,kBAAkB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,CAAC;AACzD,MAAM,CAAC,MAAM,yBAAyB,GAAG,kBAAkB,EAAE,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { dirname, join } from 'node:path';
2
- import { app, BrowserWindow, ipcMain, session, shell, systemPreferences } from 'electron';
2
+ import { app, BrowserWindow, ipcMain, Notification, session, shell, systemPreferences, } from 'electron';
3
3
  import { buildDesktopBootstrapPage } from './bootstrapPage.js';
4
4
  import { resolveDesktopBootstrapNavigation, shouldRevealDesktopBootstrapRecovery, shouldNavigateDesktopBootstrap, resolveDesktopWindowRevealNavigation, shouldAllowDesktopBootstrapWindowNavigation, } from './bootstrapNavigation.js';
5
5
  import { resolveCatsHomeDir, resolveDesktopHostConfig, resolveDesktopUserDataDir, } from './config.js';
6
6
  import { appendHostEvent, appendRuntimeEvent, buildDesktopAggregationBundle, createBootstrapAttemptId, createDesktopBootstrapEvent, createEmptyDesktopDiagnosticsState, toDesktopBootstrapError, toDesktopBootstrapStatus, updateServiceLogs, } from './bootstrapDiagnostics.js';
7
- import { createDesktopBackgroundState, DesktopHostStateStore } from './hostState.js';
7
+ import { createDesktopBackgroundState, DesktopHostStateStore, readPersistedUpdateLastCheckedAt, } from './hostState.js';
8
8
  import { createDesktopPackagingPlan } from './packaging.js';
9
9
  import { ManagedServiceSupervisor } from './processSupervisor.js';
10
10
  import { buildDesktopBootstrapSnapshot, fetchJson, } from './readiness.js';
@@ -18,7 +18,13 @@ import { createDesktopTrayController, } from './tray.js';
18
18
  import { buildDesktopTrayMenuState as buildElectronTrayMenuState, buildDesktopTrayQuittingMenuState, } from './trayMenu.js';
19
19
  import { applyDesktopHostPlatformShellUpdate, normalizePlatformShellSetupState, parseDesktopHostPlatformShellUpdate, } from './platformShellUpdate.js';
20
20
  import { enableDesktopMobilePairingEnv } from './mobilePairingEnv.js';
21
- import { checkForDesktopUpdates, createDefaultDesktopUpdateState } from './update.js';
21
+ import { DESKTOP_APP_USER_MODEL_ID, DESKTOP_HOST_VERSION } from './hostVersion.js';
22
+ import { loadDesktopReleaseDescriptor, resolveDesktopDistributionIdentity, } from './releaseDescriptor.js';
23
+ import { createDesktopUpdateCapability, createDesktopUpdateManager, createUnavailableDesktopUpdateSnapshot, } from './updateManager.js';
24
+ import { configureElectronUpdater, createElectronUpdaterAdapter, resolveAutoUpdaterExport, } from './updaterAdapter.js';
25
+ import { createDesktopUpdateIpcHandlers, createDesktopUpdateSnapshotBroadcast, } from './updateIpc.js';
26
+ import { withDesktopInstallHandoff } from './updateInstallHandoff.js';
27
+ import { DESKTOP_UPDATE_SETTINGS_PATH, resolveDesktopUpdateAnnouncement, } from './updateNotifications.js';
22
28
  import { applyDesktopWindowChrome, resolveDesktopWindowChromeOptions, } from './windowChrome.js';
23
29
  import { resolveDesktopWindowIconPath } from './windowIcon.js';
24
30
  import { readDesktopStartupPreferences, resolveDesktopStartupLaunchContext, syncDesktopStartupPreferences, updateDesktopStartupPreferences, DESKTOP_LAUNCH_AT_LOGIN_ARG, } from './desktopStartup.js';
@@ -64,6 +70,8 @@ let trayController = null;
64
70
  let stateStore = null;
65
71
  let backgroundState = null;
66
72
  let updateState = null;
73
+ let updateManager = null;
74
+ let detachUpdateBroadcast = null;
67
75
  let packagingState = null;
68
76
  let setupState = null;
69
77
  let diagnosticsState = null;
@@ -582,6 +590,7 @@ function resolveDesktopTrayMenuState(snapshot) {
582
590
  actions: snapshot.actions,
583
591
  products: latestAppShellPayload?.products,
584
592
  locale: app.getLocale(),
593
+ updates: updateState,
585
594
  });
586
595
  }
587
596
  function isSystemTrayEnabled() {
@@ -707,6 +716,14 @@ function buildTrayControllerOptions() {
707
716
  void shutdownHost();
708
717
  },
709
718
  canInteract: () => !shuttingDown,
719
+ onCheckForUpdates: async () => {
720
+ if (shuttingDown) {
721
+ return;
722
+ }
723
+ // The menu closes on click, so this result has to reach the user through
724
+ // a notification or by opening Settings.
725
+ await refreshUpdateState('tray');
726
+ },
710
727
  };
711
728
  }
712
729
  async function syncTrayController() {
@@ -1197,24 +1214,151 @@ async function maybeRecoverFromLateReadyStateChange() {
1197
1214
  })();
1198
1215
  await lateReadyRecoveryPromise;
1199
1216
  }
1200
- async function refreshUpdateState() {
1201
- if (!hostConfig) {
1202
- throw new Error('Desktop host is not initialized.');
1217
+ /**
1218
+ * Builds the update manager for this launch.
1219
+ *
1220
+ * Capability is derived from the embedded release descriptor plus the running
1221
+ * package, never from the environment. When the build is not an official
1222
+ * release the adapter is omitted entirely, so no provider is ever configured.
1223
+ */
1224
+ async function createUpdateManagerForLaunch(config, initialLastCheckedAt = null) {
1225
+ const descriptor = await loadDesktopReleaseDescriptor();
1226
+ const identity = resolveDesktopDistributionIdentity({
1227
+ isPackaged: config.packaged,
1228
+ currentVersion: DESKTOP_HOST_VERSION,
1229
+ nodePlatform: process.platform,
1230
+ descriptor,
1231
+ });
1232
+ const capability = createDesktopUpdateCapability({
1233
+ identity,
1234
+ nodePlatform: process.platform,
1235
+ });
1236
+ let adapter = null;
1237
+ if (capability.canCheck && identity.repository !== null) {
1238
+ // Self-update is a feature, not a startup requirement. If the provider
1239
+ // cannot be constructed the app must still open with update capability
1240
+ // switched off, rather than failing to launch at all.
1241
+ try {
1242
+ const autoUpdater = resolveAutoUpdaterExport(await import('electron-updater'));
1243
+ configureElectronUpdater(autoUpdater, {
1244
+ repository: identity.repository,
1245
+ channel: capability.channel,
1246
+ distribution: capability.distribution,
1247
+ });
1248
+ adapter = withDesktopInstallHandoff(createElectronUpdaterAdapter(autoUpdater), {
1249
+ drainManagedServices: async () => {
1250
+ // The tray says "Quitting" for the same reason shutdown does: from
1251
+ // here the app is on its way out, and a menu offering to open Cats
1252
+ // would be a lie while the sidecars are stopping. This also locks the
1253
+ // menu against repeated interaction without touching `shuttingDown`,
1254
+ // which gates far more behaviour and is never designed to be reset.
1255
+ trayController?.updateMenu(buildDesktopTrayQuittingMenuState(app.getLocale()));
1256
+ await drainManagedServices();
1257
+ // electron-updater quits the app itself. Without this the before-quit
1258
+ // handler would cancel that quit and run a second drain, delaying the
1259
+ // exit the installer is waiting on. The drain above already satisfied
1260
+ // the contract that flag stands for.
1261
+ exitingAfterShutdown = true;
1262
+ },
1263
+ restartManagedServices: async () => {
1264
+ // The handoff failed but the process survived, so the exit is no
1265
+ // longer prepared, the sidecars have to come back, and the tray has to
1266
+ // stop claiming we are quitting. startAll() intentionally reuses the
1267
+ // supervisor-lifetime environment snapshot populated during the first
1268
+ // bootstrap, including the Desktop-provisioned platform auth secret.
1269
+ exitingAfterShutdown = false;
1270
+ await supervisor?.startAll();
1271
+ await syncTrayController();
1272
+ },
1273
+ logger: (message) => {
1274
+ process.stdout.write(`${message}\n`);
1275
+ },
1276
+ });
1277
+ }
1278
+ catch (error) {
1279
+ process.stderr.write('[desktop-update] updater unavailable, continuing without self-update: '
1280
+ + `${error instanceof Error ? error.message : String(error)}\n`);
1281
+ adapter = null;
1282
+ }
1203
1283
  }
1204
- updateState = {
1205
- ...(updateState ?? createDefaultDesktopUpdateState(hostConfig.update)),
1206
- status: hostConfig.update.manifestUrl ? 'checking' : 'disabled',
1207
- summary: hostConfig.update.manifestUrl
1208
- ? 'Checking for desktop updates.'
1209
- : 'Update checks are disabled until a manifest URL is configured.',
1210
- };
1211
- if (latestSnapshot) {
1212
- publishSnapshot(latestSnapshot);
1284
+ return createDesktopUpdateManager({
1285
+ capability,
1286
+ adapter,
1287
+ initialLastCheckedAt,
1288
+ logger: (message) => {
1289
+ process.stdout.write(`${message}\n`);
1290
+ },
1291
+ });
1292
+ }
1293
+ async function openDesktopUpdateSettings() {
1294
+ if (shuttingDown || !hostConfig) {
1295
+ return;
1213
1296
  }
1214
- updateState = await checkForDesktopUpdates(hostConfig.update);
1215
- if (latestSnapshot) {
1216
- publishSnapshot(latestSnapshot);
1297
+ await showMainWindow(`${hostConfig.appBaseUrl}${DESKTOP_UPDATE_SETTINGS_PATH}`);
1298
+ }
1299
+ /**
1300
+ * Shows a native notification, reporting whether the user will actually see it.
1301
+ *
1302
+ * A false return sends the caller to the navigation fallback. Notifying is not
1303
+ * worth failing a check over, so a throwing platform is treated the same as one
1304
+ * without notification support.
1305
+ */
1306
+ function showDesktopUpdateNotification(notification) {
1307
+ try {
1308
+ const native = new Notification({
1309
+ title: notification.title,
1310
+ body: notification.body,
1311
+ });
1312
+ native.on('click', () => {
1313
+ void openDesktopUpdateSettings();
1314
+ });
1315
+ native.show();
1316
+ return true;
1217
1317
  }
1318
+ catch (error) {
1319
+ process.stderr.write('[desktop-update] native notification unavailable: '
1320
+ + `${error instanceof Error ? error.message : String(error)}\n`);
1321
+ return false;
1322
+ }
1323
+ }
1324
+ function areNativeNotificationsSupported() {
1325
+ try {
1326
+ return Notification.isSupported();
1327
+ }
1328
+ catch {
1329
+ return false;
1330
+ }
1331
+ }
1332
+ async function announceDesktopUpdateResult(origin, snapshot) {
1333
+ if (!snapshot || shuttingDown) {
1334
+ return;
1335
+ }
1336
+ const announcement = resolveDesktopUpdateAnnouncement({
1337
+ origin,
1338
+ snapshot,
1339
+ locale: app.getLocale(),
1340
+ notificationsSupported: areNativeNotificationsSupported(),
1341
+ });
1342
+ if (announcement.notification && showDesktopUpdateNotification(announcement.notification)) {
1343
+ return;
1344
+ }
1345
+ if (announcement.fallbackNavigatePath) {
1346
+ await openDesktopUpdateSettings();
1347
+ }
1348
+ }
1349
+ /**
1350
+ * Runs a check and reports its result to whoever asked for it.
1351
+ *
1352
+ * The origin is required rather than defaulted: it decides whether the result
1353
+ * is announced at all, and a new caller silently inheriting another surface's
1354
+ * policy is the failure this signature exists to prevent.
1355
+ */
1356
+ async function refreshUpdateState(origin) {
1357
+ if (!updateManager) {
1358
+ return null;
1359
+ }
1360
+ updateState = await updateManager.checkForUpdates();
1361
+ await announceDesktopUpdateResult(origin, updateState);
1218
1362
  return updateState;
1219
1363
  }
1220
1364
  async function bootstrapDesktopHost(restartServices = false) {
@@ -1488,6 +1632,33 @@ function waitForShutdownDeadline(ms) {
1488
1632
  timer.unref?.();
1489
1633
  });
1490
1634
  }
1635
+ /**
1636
+ * Stops managed services, forcing them down if the graceful path overruns.
1637
+ *
1638
+ * Shared by host shutdown and the update installer handoff, because both need
1639
+ * the sidecars actually gone — the installer for the same reason the exit path
1640
+ * does, plus the Windows upgrade running the old uninstaller over files a
1641
+ * surviving sidecar may still hold.
1642
+ */
1643
+ async function drainManagedServices() {
1644
+ const drain = supervisor?.stopAll() ?? Promise.resolve();
1645
+ const shutdownWatchdogMs = hostConfig
1646
+ ? resolveShutdownWatchdogMs(hostConfig, supervisor?.getManagedServiceCount() ?? 0)
1647
+ : SHUTDOWN_WATCHDOG_BUFFER_MS;
1648
+ const result = await Promise.race([
1649
+ drain.then(() => 'drained'),
1650
+ waitForShutdownDeadline(shutdownWatchdogMs),
1651
+ ]);
1652
+ if (result !== 'timed_out') {
1653
+ return { timedOut: false };
1654
+ }
1655
+ process.stderr.write(`Desktop host shutdown watchdog tripped after ${shutdownWatchdogMs}ms; forcing managed services down.\n`);
1656
+ await supervisor?.forceStopAll();
1657
+ void drain.catch((error) => {
1658
+ process.stderr.write(`Desktop host graceful shutdown failed after watchdog: ${error instanceof Error ? error.stack ?? error.message : String(error)}\n`);
1659
+ });
1660
+ return { timedOut: true };
1661
+ }
1491
1662
  async function shutdownHost() {
1492
1663
  if (shutdownPromise) {
1493
1664
  return shutdownPromise;
@@ -1502,22 +1673,10 @@ async function shutdownHost() {
1502
1673
  voiceCaptureController?.dispose();
1503
1674
  voiceCaptureController = null;
1504
1675
  activeTrayController?.updateMenu(buildDesktopTrayQuittingMenuState(app.getLocale()));
1505
- const drain = supervisor?.stopAll() ?? Promise.resolve();
1506
- const shutdownWatchdogMs = hostConfig
1507
- ? resolveShutdownWatchdogMs(hostConfig, supervisor?.getManagedServiceCount() ?? 0)
1508
- : SHUTDOWN_WATCHDOG_BUFFER_MS;
1509
- const result = await Promise.race([
1510
- drain.then(() => 'drained'),
1511
- waitForShutdownDeadline(shutdownWatchdogMs),
1512
- ]);
1513
- if (result === 'timed_out') {
1676
+ const { timedOut } = await drainManagedServices();
1677
+ if (timedOut) {
1514
1678
  shutdownExitCode = 1;
1515
- process.stderr.write(`Desktop host shutdown watchdog tripped after ${shutdownWatchdogMs}ms; forcing managed services down.\n`);
1516
1679
  forcedStopAttempted = true;
1517
- await supervisor?.forceStopAll();
1518
- void drain.catch((error) => {
1519
- process.stderr.write(`Desktop host graceful shutdown failed after watchdog: ${error instanceof Error ? error.stack ?? error.message : String(error)}\n`);
1520
- });
1521
1680
  }
1522
1681
  }
1523
1682
  catch (error) {
@@ -1551,6 +1710,14 @@ async function main() {
1551
1710
  return;
1552
1711
  }
1553
1712
  app.setPath('userData', resolveDesktopUserDataDir(app.getPath('appData')));
1713
+ // Windows routes a notification through the Start Menu shortcut whose
1714
+ // Application User Model ID matches the running process. The installer writes
1715
+ // that shortcut with the electron-builder appId, so claiming it here is what
1716
+ // makes update notifications visible at all. Unpackaged runs have no such
1717
+ // shortcut, so the claim would buy nothing.
1718
+ if (process.platform === 'win32' && app.isPackaged && DESKTOP_APP_USER_MODEL_ID) {
1719
+ app.setAppUserModelId(DESKTOP_APP_USER_MODEL_ID);
1720
+ }
1554
1721
  await app.whenReady();
1555
1722
  const nodeProcess = process;
1556
1723
  hostConfig = resolveDesktopHostConfig({
@@ -1580,12 +1747,14 @@ async function main() {
1580
1747
  stateStore = new DesktopHostStateStore(hostConfig.paths.hostStatePath);
1581
1748
  {
1582
1749
  const defaultBackground = applyEffectiveBackgroundPreferences(createDesktopBackgroundState(hostConfig));
1583
- const defaultUpdates = createDefaultDesktopUpdateState(hostConfig.update);
1750
+ // Built once with no restored history so the state file can be read; the
1751
+ // manager is rebuilt below with the restored last-check time.
1752
+ const provisionalUpdates = createUnavailableDesktopUpdateSnapshot(DESKTOP_HOST_VERSION);
1584
1753
  const defaultPackaging = buildHostPackagingPlan(hostConfig);
1585
1754
  const defaultSetup = createEmptyDesktopSetupState();
1586
1755
  const restoredState = await stateStore.load(hostConfig, {
1587
1756
  background: defaultBackground,
1588
- updates: defaultUpdates,
1757
+ updates: provisionalUpdates,
1589
1758
  packaging: defaultPackaging,
1590
1759
  setup: defaultSetup,
1591
1760
  });
@@ -1598,7 +1767,21 @@ async function main() {
1598
1767
  lastHiddenAt: new Date().toISOString(),
1599
1768
  };
1600
1769
  }
1601
- updateState = restoredState?.updates ?? defaultUpdates;
1770
+ // One owner: the manager holds update state and the host snapshot mirrors
1771
+ // it. Only the last-check time crosses a restart, because every status is
1772
+ // provider-dependent and cannot be acted on without checking again.
1773
+ updateManager = await createUpdateManagerForLaunch(hostConfig, readPersistedUpdateLastCheckedAt(restoredState?.updates));
1774
+ updateState = updateManager.getSnapshot();
1775
+ detachUpdateBroadcast = createDesktopUpdateSnapshotBroadcast({
1776
+ manager: updateManager,
1777
+ resolveMainWindowWebContents: () => mainWindow?.webContents ?? null,
1778
+ });
1779
+ updateManager.subscribe((snapshot) => {
1780
+ updateState = snapshot;
1781
+ if (latestSnapshot) {
1782
+ publishSnapshot(latestSnapshot);
1783
+ }
1784
+ });
1602
1785
  packagingState = defaultPackaging;
1603
1786
  setupState = normalizePlatformShellSetupState(restoredState?.setup ?? defaultSetup, Boolean(latestPersistedSetupState.setupCompleteAt
1604
1787
  || latestPersistedSetupState.productSetupCompleted));
@@ -1626,6 +1809,18 @@ async function main() {
1626
1809
  ipcMain.handle('cats-host:get-snapshot', async () => {
1627
1810
  return latestSnapshot ?? buildSnapshot(null);
1628
1811
  });
1812
+ if (updateManager) {
1813
+ const updateHandlers = createDesktopUpdateIpcHandlers({
1814
+ manager: updateManager,
1815
+ resolveMainWindowWebContents: () => mainWindow?.webContents ?? null,
1816
+ logger: (message) => {
1817
+ process.stdout.write(`${message}\n`);
1818
+ },
1819
+ });
1820
+ for (const [channel, handler] of Object.entries(updateHandlers)) {
1821
+ ipcMain.handle(channel, async (event) => handler(event));
1822
+ }
1823
+ }
1629
1824
  ipcMain.handle('cats-host:get-setup-snapshot', async () => {
1630
1825
  return await getSetupSnapshot();
1631
1826
  });
@@ -1808,8 +2003,10 @@ async function main() {
1808
2003
  void showMainWindow();
1809
2004
  });
1810
2005
  await bootstrapDesktopHost(false);
1811
- if (hostConfig.update.checkOnStartup && hostConfig.update.manifestUrl) {
1812
- void refreshUpdateState();
2006
+ // SPEC-111 section 6: at most one silent check per launch, and only when the
2007
+ // build actually has update capability.
2008
+ if (hostConfig.update.checkOnStartup && updateManager?.getSnapshot().capability.canCheck) {
2009
+ void refreshUpdateState('startup');
1813
2010
  }
1814
2011
  }
1815
2012
  void main().catch((error) => {