@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.
- package/.env.example +2 -2
- package/README.md +6 -0
- package/build/desktop/bootstrapPage.d.ts.map +1 -1
- package/build/desktop/bootstrapPage.js +81 -4
- package/build/desktop/bootstrapPage.js.map +1 -1
- package/build/desktop/config.d.ts +11 -1
- package/build/desktop/config.d.ts.map +1 -1
- package/build/desktop/config.js +5 -2
- package/build/desktop/config.js.map +1 -1
- package/build/desktop/contracts.d.ts +66 -11
- package/build/desktop/contracts.d.ts.map +1 -1
- package/build/desktop/contracts.js +50 -1
- package/build/desktop/contracts.js.map +1 -1
- package/build/desktop/hostState.d.ts +4 -3
- package/build/desktop/hostState.d.ts.map +1 -1
- package/build/desktop/hostState.js +22 -30
- package/build/desktop/hostState.js.map +1 -1
- package/build/desktop/hostVersion.d.ts +1 -0
- package/build/desktop/hostVersion.d.ts.map +1 -1
- package/build/desktop/hostVersion.js +29 -5
- package/build/desktop/hostVersion.js.map +1 -1
- package/build/desktop/main.js +234 -37
- package/build/desktop/main.js.map +1 -1
- package/build/desktop/packaging.d.ts.map +1 -1
- package/build/desktop/packaging.js +10 -4
- package/build/desktop/packaging.js.map +1 -1
- package/build/desktop/preload.cjs +29 -0
- package/build/desktop/preload.cjs.map +1 -1
- package/build/desktop/processSupervisor.d.ts +2 -0
- package/build/desktop/processSupervisor.d.ts.map +1 -1
- package/build/desktop/processSupervisor.js +28 -13
- package/build/desktop/processSupervisor.js.map +1 -1
- package/build/desktop/readiness.d.ts +2 -2
- package/build/desktop/readiness.d.ts.map +1 -1
- package/build/desktop/readiness.js +2 -2
- package/build/desktop/readiness.js.map +1 -1
- package/build/desktop/releaseDescriptor.d.ts +85 -0
- package/build/desktop/releaseDescriptor.d.ts.map +1 -0
- package/build/desktop/releaseDescriptor.js +246 -0
- package/build/desktop/releaseDescriptor.js.map +1 -0
- package/build/desktop/tray.d.ts +1 -0
- package/build/desktop/tray.d.ts.map +1 -1
- package/build/desktop/tray.js +26 -0
- package/build/desktop/tray.js.map +1 -1
- package/build/desktop/trayMenu.d.ts +22 -1
- package/build/desktop/trayMenu.d.ts.map +1 -1
- package/build/desktop/trayMenu.js +61 -0
- package/build/desktop/trayMenu.js.map +1 -1
- package/build/desktop/updateInstallHandoff.d.ts +30 -0
- package/build/desktop/updateInstallHandoff.d.ts.map +1 -0
- package/build/desktop/updateInstallHandoff.js +39 -0
- package/build/desktop/updateInstallHandoff.js.map +1 -0
- package/build/desktop/updateIpc.d.ts +42 -0
- package/build/desktop/updateIpc.d.ts.map +1 -0
- package/build/desktop/updateIpc.js +71 -0
- package/build/desktop/updateIpc.js.map +1 -0
- package/build/desktop/updateManager.d.ts +76 -0
- package/build/desktop/updateManager.d.ts.map +1 -0
- package/build/desktop/updateManager.js +342 -0
- package/build/desktop/updateManager.js.map +1 -0
- package/build/desktop/updateNotifications.d.ts +64 -0
- package/build/desktop/updateNotifications.d.ts.map +1 -0
- package/build/desktop/updateNotifications.js +143 -0
- package/build/desktop/updateNotifications.js.map +1 -0
- package/build/desktop/updaterAdapter.d.ts +72 -0
- package/build/desktop/updaterAdapter.d.ts.map +1 -0
- package/build/desktop/updaterAdapter.js +198 -0
- package/build/desktop/updaterAdapter.js.map +1 -0
- package/build/renderer/assets/{ActiveSessionPermissionChip-BYr8cDpb.js → ActiveSessionPermissionChip-BoDkKkmi.js} +1 -1
- package/build/renderer/assets/{App-BbuTWT6Y.js → App-Bs1eRarv.js} +1 -1
- package/build/renderer/assets/{App-B13AzNko.js → App-C4S1Wa9f.js} +1 -1
- package/build/renderer/assets/{App-n-RtGh42.js → App-CNJj5gi9.js} +1 -1
- package/build/renderer/assets/{WorkspaceAppRoutes-BktWrQK-.js → WorkspaceAppRoutes-CFAuhWGF.js} +1 -1
- package/build/renderer/assets/app-uJJx-k1S.js +43 -0
- package/build/renderer/assets/{conversationSidebarRecentEntries-BNPz3X1V.js → conversationSidebarRecentEntries-CPGopayy.js} +1 -1
- package/build/renderer/assets/{useDraftSessionChips-3z_Je4ju.js → useDraftSessionChips-BsOdYfWw.js} +1 -1
- package/build/renderer/index.html +1 -1
- package/build/server/app/renderer/settings/settingsDesktopErrorLabels.d.ts +5 -0
- package/build/server/app/renderer/settings/settingsDesktopErrorLabels.d.ts.map +1 -0
- package/build/server/app/renderer/settings/settingsDesktopErrorLabels.js +16 -0
- package/build/server/app/renderer/settings/settingsDesktopErrorLabels.js.map +1 -0
- package/build/server/app/renderer/settings/settingsDesktopPreferences.d.ts +11 -0
- package/build/server/app/renderer/settings/settingsDesktopPreferences.d.ts.map +1 -0
- package/build/server/app/renderer/settings/settingsDesktopPreferences.js +30 -0
- package/build/server/app/renderer/settings/settingsDesktopPreferences.js.map +1 -0
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts +31 -0
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.d.ts.map +1 -0
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js +101 -0
- package/build/server/app/renderer/settings/settingsDesktopUpdateLabels.js.map +1 -0
- package/build/server/app/server/index.js +1 -1
- package/build/server/app/server/index.js.map +1 -1
- package/build/server/app/server/platformSetupRoutes.d.ts.map +1 -1
- package/build/server/app/server/platformSetupRoutes.js +42 -5
- package/build/server/app/server/platformSetupRoutes.js.map +1 -1
- package/build/server/app/server/requestRouter.d.ts.map +1 -1
- package/build/server/app/server/requestRouter.js +2 -0
- package/build/server/app/server/requestRouter.js.map +1 -1
- package/build/server/design/components/runtimeChips.d.ts +1 -1
- package/build/server/design/components/runtimeChips.d.ts.map +1 -1
- package/build/server/design/components/runtimeChips.js +4 -1
- package/build/server/design/components/runtimeChips.js.map +1 -1
- package/build/server/index.js +12 -1
- package/build/server/index.js.map +1 -1
- package/build/server/platform/auth/sessionSecretProvisioning.d.ts +23 -0
- package/build/server/platform/auth/sessionSecretProvisioning.d.ts.map +1 -0
- package/build/server/platform/auth/sessionSecretProvisioning.js +291 -0
- package/build/server/platform/auth/sessionSecretProvisioning.js.map +1 -0
- package/build/server/products/code/livePreview/realProcessAdapter.d.ts.map +1 -1
- package/build/server/products/code/livePreview/realProcessAdapter.js +7 -1
- package/build/server/products/code/livePreview/realProcessAdapter.js.map +1 -1
- package/build/server/products/code/state/appExport.d.ts.map +1 -1
- package/build/server/products/code/state/appExport.js +2 -0
- package/build/server/products/code/state/appExport.js.map +1 -1
- package/build/server/shared/desktopRecoveryBridge.d.ts +46 -0
- package/build/server/shared/desktopRecoveryBridge.d.ts.map +1 -1
- package/build/server/shared/desktopRecoveryBridge.js +20 -0
- package/build/server/shared/desktopRecoveryBridge.js.map +1 -1
- package/build/server/shared/i18n/catalogs/en.d.ts.map +1 -1
- package/build/server/shared/i18n/catalogs/en.js +37 -0
- package/build/server/shared/i18n/catalogs/en.js.map +1 -1
- package/build/server/shared/i18n/catalogs/zh-TW.d.ts.map +1 -1
- package/build/server/shared/i18n/catalogs/zh-TW.js +35 -0
- package/build/server/shared/i18n/catalogs/zh-TW.js.map +1 -1
- package/build/server/shared/i18n/index.d.ts +35 -0
- package/build/server/shared/i18n/index.d.ts.map +1 -1
- package/build/server/shared/i18n/messageKeys.d.ts +35 -0
- package/build/server/shared/i18n/messageKeys.d.ts.map +1 -1
- package/build/server/shared/i18n/messageKeys.js +35 -0
- package/build/server/shared/i18n/messageKeys.js.map +1 -1
- package/build/server/shared/loadProjectEnvFile.d.ts.map +1 -1
- package/build/server/shared/loadProjectEnvFile.js +18 -19
- package/build/server/shared/loadProjectEnvFile.js.map +1 -1
- package/build/server/shared/platformChildProcessEnv.d.ts +2 -0
- package/build/server/shared/platformChildProcessEnv.d.ts.map +1 -0
- package/build/server/shared/platformChildProcessEnv.js +22 -0
- package/build/server/shared/platformChildProcessEnv.js.map +1 -0
- package/package.json +19 -27
- package/scripts/build-desktop-installer.mjs +438 -37
- package/scripts/build-test-ui.mjs +13 -2
- package/scripts/generate-desktop-release-descriptor.mjs +258 -0
- package/scripts/validate-release-assets.mjs +422 -0
- package/scripts/validate-release-version.mjs +217 -0
- package/scripts/windows/Test-WindowsInstallerSmoke.ps1 +55 -1
- package/build/desktop/update.d.ts +0 -24
- package/build/desktop/update.d.ts.map +0 -1
- package/build/desktop/update.js +0 -173
- package/build/desktop/update.js.map +0 -1
- package/build/renderer/assets/app-DnVQMpW_.js +0 -43
- package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.d.ts +0 -5
- package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.d.ts.map +0 -1
- package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.js +0 -11
- package/build/server/app/renderer/settings/settingsDesktopStartupErrorLabels.js.map +0 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
/**
|
|
5
|
+
* Provenance emitted by the tag-gated release workflow
|
|
6
|
+
* (`scripts/generate-desktop-release-descriptor.mjs`). SPEC-111 requires
|
|
7
|
+
* official update capability to depend on this file rather than on
|
|
8
|
+
* `app.isPackaged`, which is also true for locally packaged and unofficial
|
|
9
|
+
* builds.
|
|
10
|
+
*
|
|
11
|
+
* Nothing in this module reads the environment. Requirement 1.9 states that no
|
|
12
|
+
* environment variable may promote a development or unofficial package into an
|
|
13
|
+
* official update client, and the cheapest way to guarantee that is to give the
|
|
14
|
+
* resolver no access to one.
|
|
15
|
+
*/
|
|
16
|
+
export const DESKTOP_RELEASE_DESCRIPTOR_SCHEMA_VERSION = 1;
|
|
17
|
+
export const DESKTOP_RELEASE_DESCRIPTOR_FILENAME = 'release-descriptor.json';
|
|
18
|
+
export const DESKTOP_RELEASE_PLATFORMS = ['windows', 'macos', 'linux'];
|
|
19
|
+
/**
|
|
20
|
+
* What kind of build the workflow produced.
|
|
21
|
+
*
|
|
22
|
+
* `official` is a signed stable release. `preview` is an unsigned prerelease
|
|
23
|
+
* from the same guarded workflow: it may self-update so the upgrade path is
|
|
24
|
+
* testable before signing exists, but it resolves to its own distribution mode
|
|
25
|
+
* and is never presented as official.
|
|
26
|
+
*/
|
|
27
|
+
export const DESKTOP_RELEASE_KINDS = ['official', 'preview'];
|
|
28
|
+
const SEMVER_CORE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/u;
|
|
29
|
+
const COMMIT_SHA = /^[0-9a-f]{40}$/iu;
|
|
30
|
+
const GITHUB_REPOSITORY = /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/u;
|
|
31
|
+
function isObjectRecord(value) {
|
|
32
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
33
|
+
}
|
|
34
|
+
function readString(record, key) {
|
|
35
|
+
const value = record[key];
|
|
36
|
+
return typeof value === 'string' && value.trim() !== '' ? value.trim() : null;
|
|
37
|
+
}
|
|
38
|
+
export function resolveDesktopReleasePlatform(nodePlatform) {
|
|
39
|
+
if (nodePlatform === 'win32') {
|
|
40
|
+
return 'windows';
|
|
41
|
+
}
|
|
42
|
+
if (nodePlatform === 'darwin') {
|
|
43
|
+
return 'macos';
|
|
44
|
+
}
|
|
45
|
+
if (nodePlatform === 'linux') {
|
|
46
|
+
return 'linux';
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
export function resolveDesktopReleaseDescriptorPath(moduleDir = dirname(fileURLToPath(import.meta.url))) {
|
|
51
|
+
// The descriptor is generated into build/desktop next to the compiled host,
|
|
52
|
+
// so the same relative lookup works for a dev run and inside the asar.
|
|
53
|
+
return join(moduleDir, DESKTOP_RELEASE_DESCRIPTOR_FILENAME);
|
|
54
|
+
}
|
|
55
|
+
export function parseDesktopReleaseDescriptor(raw) {
|
|
56
|
+
if (!isObjectRecord(raw)) {
|
|
57
|
+
return { ok: false, reason: 'descriptor_malformed', detail: 'Descriptor is not an object.' };
|
|
58
|
+
}
|
|
59
|
+
if (raw.schemaVersion !== DESKTOP_RELEASE_DESCRIPTOR_SCHEMA_VERSION) {
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
reason: 'descriptor_schema_unsupported',
|
|
63
|
+
detail: `Unsupported descriptor schemaVersion: ${String(raw.schemaVersion)}`,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Required. A descriptor without a kind is not something this workflow
|
|
67
|
+
// produced, so it fails closed rather than defaulting to official.
|
|
68
|
+
const kind = readString(raw, 'kind');
|
|
69
|
+
if (kind === null || !DESKTOP_RELEASE_KINDS.includes(kind)) {
|
|
70
|
+
return {
|
|
71
|
+
ok: false,
|
|
72
|
+
reason: 'descriptor_malformed',
|
|
73
|
+
detail: `Descriptor kind is not official or preview: ${String(raw.kind)}`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const version = readString(raw, 'version');
|
|
77
|
+
if (version === null || !SEMVER_CORE.test(version)) {
|
|
78
|
+
return {
|
|
79
|
+
ok: false,
|
|
80
|
+
reason: 'descriptor_malformed',
|
|
81
|
+
detail: 'Descriptor version is not a MAJOR.MINOR.PATCH string.',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const tag = readString(raw, 'tag');
|
|
85
|
+
if (tag === null || tag !== `v${version}`) {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
reason: 'descriptor_malformed',
|
|
89
|
+
detail: 'Descriptor tag does not match its version.',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const commit = readString(raw, 'commit');
|
|
93
|
+
if (commit === null || !COMMIT_SHA.test(commit)) {
|
|
94
|
+
return {
|
|
95
|
+
ok: false,
|
|
96
|
+
reason: 'descriptor_malformed',
|
|
97
|
+
detail: 'Descriptor commit is not a full 40-character sha.',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const platform = readString(raw, 'platform');
|
|
101
|
+
if (platform === null
|
|
102
|
+
|| !DESKTOP_RELEASE_PLATFORMS.includes(platform)) {
|
|
103
|
+
return {
|
|
104
|
+
ok: false,
|
|
105
|
+
reason: 'descriptor_malformed',
|
|
106
|
+
detail: 'Descriptor platform is not windows, macos, or linux.',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Phase 1 publishes stable only, and Requirement 1.7 pins the production
|
|
110
|
+
// channel to the descriptor. Any other channel means the file was not
|
|
111
|
+
// produced by the current release workflow.
|
|
112
|
+
if (raw.channel !== 'stable') {
|
|
113
|
+
return {
|
|
114
|
+
ok: false,
|
|
115
|
+
reason: 'descriptor_malformed',
|
|
116
|
+
detail: `Descriptor channel is not stable: ${String(raw.channel)}`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
if (raw.provider !== 'github_release') {
|
|
120
|
+
return {
|
|
121
|
+
ok: false,
|
|
122
|
+
reason: 'descriptor_malformed',
|
|
123
|
+
detail: `Descriptor provider is not github_release: ${String(raw.provider)}`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
const repository = readString(raw, 'repository');
|
|
127
|
+
if (repository === null || !GITHUB_REPOSITORY.test(repository)) {
|
|
128
|
+
return {
|
|
129
|
+
ok: false,
|
|
130
|
+
reason: 'descriptor_malformed',
|
|
131
|
+
detail: 'Descriptor repository is not in owner/name form.',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
const runtimeCommit = readString(raw, 'runtimeCommit');
|
|
135
|
+
if (runtimeCommit === null || !COMMIT_SHA.test(runtimeCommit)) {
|
|
136
|
+
return {
|
|
137
|
+
ok: false,
|
|
138
|
+
reason: 'descriptor_malformed',
|
|
139
|
+
detail: 'Descriptor runtimeCommit is not a full 40-character sha.',
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
ok: true,
|
|
144
|
+
descriptor: {
|
|
145
|
+
schemaVersion: DESKTOP_RELEASE_DESCRIPTOR_SCHEMA_VERSION,
|
|
146
|
+
kind: kind,
|
|
147
|
+
tag,
|
|
148
|
+
version,
|
|
149
|
+
commit: commit.toLowerCase(),
|
|
150
|
+
platform: platform,
|
|
151
|
+
channel: 'stable',
|
|
152
|
+
provider: 'github_release',
|
|
153
|
+
repository,
|
|
154
|
+
runtimeCommit: runtimeCommit.toLowerCase(),
|
|
155
|
+
generatedAt: readString(raw, 'generatedAt'),
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function unofficial(currentVersion, reason) {
|
|
160
|
+
return {
|
|
161
|
+
distribution: 'unofficial_packaged',
|
|
162
|
+
provider: 'none',
|
|
163
|
+
channel: 'stable',
|
|
164
|
+
currentVersion,
|
|
165
|
+
repository: null,
|
|
166
|
+
commit: null,
|
|
167
|
+
unavailableReason: reason,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
export function resolveDesktopDistributionIdentity(input) {
|
|
171
|
+
const { isPackaged, currentVersion, nodePlatform, descriptor } = input;
|
|
172
|
+
if (!isPackaged) {
|
|
173
|
+
return {
|
|
174
|
+
distribution: 'development',
|
|
175
|
+
provider: 'none',
|
|
176
|
+
channel: 'stable',
|
|
177
|
+
currentVersion,
|
|
178
|
+
repository: null,
|
|
179
|
+
commit: null,
|
|
180
|
+
unavailableReason: 'development_build',
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
if (descriptor === null) {
|
|
184
|
+
return unofficial(currentVersion, 'descriptor_missing');
|
|
185
|
+
}
|
|
186
|
+
if (!descriptor.ok) {
|
|
187
|
+
return unofficial(currentVersion, descriptor.reason);
|
|
188
|
+
}
|
|
189
|
+
if (descriptor.descriptor.version !== currentVersion) {
|
|
190
|
+
return unofficial(currentVersion, 'descriptor_version_mismatch');
|
|
191
|
+
}
|
|
192
|
+
if (descriptor.descriptor.platform !== resolveDesktopReleasePlatform(nodePlatform)) {
|
|
193
|
+
return unofficial(currentVersion, 'descriptor_platform_mismatch');
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
distribution: descriptor.descriptor.kind === 'preview'
|
|
197
|
+
? 'preview_packaged'
|
|
198
|
+
: 'official_packaged',
|
|
199
|
+
provider: 'github_release',
|
|
200
|
+
channel: descriptor.descriptor.channel,
|
|
201
|
+
currentVersion,
|
|
202
|
+
repository: descriptor.descriptor.repository,
|
|
203
|
+
commit: descriptor.descriptor.commit,
|
|
204
|
+
unavailableReason: null,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Returns null when the descriptor is absent, which is the expected state for a
|
|
209
|
+
* development run and for a locally packaged build. A present but unreadable or
|
|
210
|
+
* invalid file is reported as a parse failure so the reason reaches diagnostics
|
|
211
|
+
* instead of silently degrading to "missing".
|
|
212
|
+
*/
|
|
213
|
+
export async function loadDesktopReleaseDescriptor(descriptorPath = resolveDesktopReleaseDescriptorPath(), dependencies = {}) {
|
|
214
|
+
const readFileImpl = dependencies.readFileImpl
|
|
215
|
+
?? ((path) => readFile(path, 'utf8'));
|
|
216
|
+
let contents;
|
|
217
|
+
try {
|
|
218
|
+
contents = await readFileImpl(descriptorPath);
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
if (isMissingFileError(error)) {
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
ok: false,
|
|
226
|
+
reason: 'descriptor_unreadable',
|
|
227
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
let parsed;
|
|
231
|
+
try {
|
|
232
|
+
parsed = JSON.parse(contents);
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
return {
|
|
236
|
+
ok: false,
|
|
237
|
+
reason: 'descriptor_malformed',
|
|
238
|
+
detail: error instanceof Error ? error.message : String(error),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return parseDesktopReleaseDescriptor(parsed);
|
|
242
|
+
}
|
|
243
|
+
function isMissingFileError(error) {
|
|
244
|
+
return isObjectRecord(error) && error.code === 'ENOENT';
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=releaseDescriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"releaseDescriptor.js","sourceRoot":"","sources":["../../desktop/host/releaseDescriptor.ts"],"names":[],"mappings":"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"}
|
package/build/desktop/tray.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ interface CreateDesktopTrayControllerOptions {
|
|
|
14
14
|
onRunAction: (actionId: DesktopHostActionId) => Promise<void>;
|
|
15
15
|
onQuit: () => void;
|
|
16
16
|
canInteract?: () => boolean;
|
|
17
|
+
onCheckForUpdates?: () => Promise<void>;
|
|
17
18
|
}
|
|
18
19
|
export declare function runDesktopTrayShowWindow(onShowWindow: () => Promise<void>): void;
|
|
19
20
|
export declare function createDesktopTrayController(options: CreateDesktopTrayControllerOptions): Promise<DesktopTrayController>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../../desktop/host/tray.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAyB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,UAAU,IAAI,IAAI,CAAC;IACnB,gBAAgB,IAAI,IAAI,CAAC;IACzB,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,UAAU,kCAAkC;IAC1C,SAAS,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tray.d.ts","sourceRoot":"","sources":["../../desktop/host/tray.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAyB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,UAAU,IAAI,IAAI,CAAC;IACnB,gBAAgB,IAAI,IAAI,CAAC;IACzB,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,UAAU,kCAAkC;IAC1C,SAAS,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IAG5B,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAuFD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEhF;AA0HD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kCAAkC,GAC1C,OAAO,CAAC,qBAAqB,CAAC,CA0EhC"}
|
package/build/desktop/tray.js
CHANGED
|
@@ -122,6 +122,32 @@ function buildDesktopTrayMenuTemplate(state, options, showWindow) {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
+
// SPEC-111 section 5: the update entry sits before Settings and Quit, and is
|
|
126
|
+
// absent entirely when the build has no update capability.
|
|
127
|
+
if (state.updateItem) {
|
|
128
|
+
pushSeparator();
|
|
129
|
+
template.push({
|
|
130
|
+
label: state.updateItem.label,
|
|
131
|
+
enabled: state.updateItem.enabled,
|
|
132
|
+
click: () => {
|
|
133
|
+
const item = state.updateItem;
|
|
134
|
+
if (!item?.enabled) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
runTrayAction(async () => {
|
|
138
|
+
if (options.canInteract?.() === false) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (item.intent === 'check') {
|
|
142
|
+
await options.onCheckForUpdates?.();
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
await options.onNavigate('/settings/desktop');
|
|
146
|
+
showWindow();
|
|
147
|
+
});
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
}
|
|
125
151
|
if (state.setupCompleteAt) {
|
|
126
152
|
pushSeparator();
|
|
127
153
|
template.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../../desktop/host/tray.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQxD,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,0BAA0B,GAG3B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tray.js","sourceRoot":"","sources":["../../desktop/host/tray.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DesktopBootstrapPhase, DesktopHostAction } from './contracts.js';
|
|
1
|
+
import type { DesktopBootstrapPhase, DesktopHostAction, DesktopUpdateSnapshot } from './contracts.js';
|
|
2
2
|
export interface DesktopTrayProductDescriptor {
|
|
3
3
|
id?: string;
|
|
4
4
|
productName?: string;
|
|
@@ -9,6 +9,17 @@ export interface DesktopTrayProductDescriptor {
|
|
|
9
9
|
disabledReason?: string;
|
|
10
10
|
} | null;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Tray update entry. Absent entirely when the build has no update capability,
|
|
14
|
+
* so an unofficial or development package never shows a command it cannot
|
|
15
|
+
* honour.
|
|
16
|
+
*/
|
|
17
|
+
export interface DesktopTrayUpdateItem {
|
|
18
|
+
label: string;
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
/** What activating the item should do. */
|
|
21
|
+
intent: 'check' | 'open_settings';
|
|
22
|
+
}
|
|
12
23
|
export interface DesktopTrayMenuState {
|
|
13
24
|
phase?: DesktopBootstrapPhase;
|
|
14
25
|
summary: string;
|
|
@@ -21,6 +32,7 @@ export interface DesktopTrayMenuState {
|
|
|
21
32
|
}>;
|
|
22
33
|
lockedLabel?: string;
|
|
23
34
|
lockedTooltip?: string;
|
|
35
|
+
updateItem?: DesktopTrayUpdateItem | null;
|
|
24
36
|
}
|
|
25
37
|
export type DesktopTrayLocale = 'en' | 'zh-TW';
|
|
26
38
|
interface BuildDesktopTrayMenuStateOptions {
|
|
@@ -31,8 +43,17 @@ interface BuildDesktopTrayMenuStateOptions {
|
|
|
31
43
|
actions: ReadonlyArray<Pick<DesktopHostAction, 'id' | 'label' | 'primary'>>;
|
|
32
44
|
products: ReadonlyArray<DesktopTrayProductDescriptor> | null | undefined;
|
|
33
45
|
locale?: string | null;
|
|
46
|
+
updates?: DesktopUpdateSnapshot | null;
|
|
34
47
|
}
|
|
35
48
|
export declare function normalizeDesktopTrayLocale(locale: string | null | undefined): DesktopTrayLocale;
|
|
49
|
+
/**
|
|
50
|
+
* Derives the tray update entry from the host-owned snapshot.
|
|
51
|
+
*
|
|
52
|
+
* Labels stay truthful about what the host is doing, and every state that has
|
|
53
|
+
* an operation in flight is disabled so a second request cannot be started
|
|
54
|
+
* from the tray.
|
|
55
|
+
*/
|
|
56
|
+
export declare function buildDesktopTrayUpdateItem(snapshot: DesktopUpdateSnapshot | null | undefined, localeInput?: string | null): DesktopTrayUpdateItem | null;
|
|
36
57
|
export declare function buildDesktopTrayMenuState(options: BuildDesktopTrayMenuStateOptions): DesktopTrayMenuState;
|
|
37
58
|
export declare function buildDesktopTrayQuittingMenuState(localeInput?: string | null): DesktopTrayMenuState;
|
|
38
59
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trayMenu.d.ts","sourceRoot":"","sources":["../../desktop/host/trayMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"trayMenu.d.ts","sourceRoot":"","sources":["../../desktop/host/trayMenu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAEjB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,4BAA4B;IAC3C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,IAAI,CAAC;CACV;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,MAAM,EAAE,OAAO,GAAG,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IAKnC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IACpE,QAAQ,EAAE,KAAK,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IAKH,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC;AAE/C,UAAU,gCAAgC;IACxC,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC;IAC5E,QAAQ,EAAE,aAAa,CAAC,4BAA4B,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACzE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACxC;AAuDD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,iBAAiB,CAQnB;AAwED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,EAClD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,qBAAqB,GAAG,IAAI,CAmB9B;AAwBD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,oBAAoB,CA0BtB;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,oBAAoB,CAWtB"}
|
|
@@ -89,6 +89,66 @@ function toTrayProductLabel(productName, locale) {
|
|
|
89
89
|
? `Open ${trimmed.slice('Cats '.length)}`
|
|
90
90
|
: `Open ${trimmed}`;
|
|
91
91
|
}
|
|
92
|
+
const TRAY_UPDATE_LABELS = {
|
|
93
|
+
en: {
|
|
94
|
+
check: 'Check for Updates…',
|
|
95
|
+
checking: 'Checking for Updates…',
|
|
96
|
+
available: 'Update Available…',
|
|
97
|
+
downloading: 'Downloading Update…',
|
|
98
|
+
downloaded: 'Restart to Update…',
|
|
99
|
+
installing: 'Installing Update…',
|
|
100
|
+
},
|
|
101
|
+
'zh-TW': {
|
|
102
|
+
check: '檢查更新…',
|
|
103
|
+
checking: '正在檢查更新…',
|
|
104
|
+
available: '有可用更新…',
|
|
105
|
+
downloading: '正在下載更新…',
|
|
106
|
+
downloaded: '重新啟動以更新…',
|
|
107
|
+
installing: '正在安裝更新…',
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Derives the tray update entry from the host-owned snapshot.
|
|
112
|
+
*
|
|
113
|
+
* Labels stay truthful about what the host is doing, and every state that has
|
|
114
|
+
* an operation in flight is disabled so a second request cannot be started
|
|
115
|
+
* from the tray.
|
|
116
|
+
*/
|
|
117
|
+
export function buildDesktopTrayUpdateItem(snapshot, localeInput) {
|
|
118
|
+
if (!snapshot?.capability.canCheck) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const locale = normalizeDesktopTrayLocale(localeInput);
|
|
122
|
+
const labels = TRAY_UPDATE_LABELS[locale];
|
|
123
|
+
// A preview build self-updates, so the tray has to say what it is or a
|
|
124
|
+
// tester cannot tell it apart from a supported release.
|
|
125
|
+
const suffix = snapshot.capability.distribution === 'preview_packaged'
|
|
126
|
+
? (locale === 'zh-TW' ? '(預覽)' : ' (preview)')
|
|
127
|
+
: '';
|
|
128
|
+
const withSuffix = (item) => ({
|
|
129
|
+
...item,
|
|
130
|
+
label: `${item.label}${suffix}`,
|
|
131
|
+
});
|
|
132
|
+
return withSuffix(resolveTrayUpdateItem(snapshot, labels));
|
|
133
|
+
}
|
|
134
|
+
function resolveTrayUpdateItem(snapshot, labels) {
|
|
135
|
+
switch (snapshot.status) {
|
|
136
|
+
case 'checking':
|
|
137
|
+
return { label: labels.checking, enabled: false, intent: 'check' };
|
|
138
|
+
case 'update_available':
|
|
139
|
+
return { label: labels.available, enabled: true, intent: 'open_settings' };
|
|
140
|
+
case 'downloading': {
|
|
141
|
+
const percent = Math.round(snapshot.progress?.percent ?? 0);
|
|
142
|
+
return { label: `${labels.downloading} ${percent}%`, enabled: false, intent: 'check' };
|
|
143
|
+
}
|
|
144
|
+
case 'downloaded':
|
|
145
|
+
return { label: labels.downloaded, enabled: true, intent: 'open_settings' };
|
|
146
|
+
case 'installing':
|
|
147
|
+
return { label: labels.installing, enabled: false, intent: 'check' };
|
|
148
|
+
default:
|
|
149
|
+
return { label: labels.check, enabled: true, intent: 'check' };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
92
152
|
export function buildDesktopTrayMenuState(options) {
|
|
93
153
|
const effectiveSetupCompleteAt = options.setupCompleteAt ?? options.fallbackSetupCompleteAt ?? null;
|
|
94
154
|
const locale = normalizeDesktopTrayLocale(options.locale);
|
|
@@ -112,6 +172,7 @@ export function buildDesktopTrayMenuState(options) {
|
|
|
112
172
|
label: localizeTrayActionLabel(action, locale),
|
|
113
173
|
})),
|
|
114
174
|
products,
|
|
175
|
+
updateItem: buildDesktopTrayUpdateItem(options.updates, options.locale),
|
|
115
176
|
};
|
|
116
177
|
}
|
|
117
178
|
export function buildDesktopTrayQuittingMenuState(localeInput) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trayMenu.js","sourceRoot":"","sources":["../../desktop/host/trayMenu.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trayMenu.js","sourceRoot":"","sources":["../../desktop/host/trayMenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DesktopUpdaterAdapter } from './updateManager.js';
|
|
2
|
+
/**
|
|
3
|
+
* Managed-service drain around the installer handoff.
|
|
4
|
+
*
|
|
5
|
+
* `quitAndInstall` ends the process, so without this the Cats runtime and
|
|
6
|
+
* platform sidecars are killed mid-flight rather than drained. On Windows that
|
|
7
|
+
* is not merely untidy: the upgrade runs the previous uninstaller before
|
|
8
|
+
* installing, and a sidecar still holding files in the install directory can
|
|
9
|
+
* make that uninstall or the install that follows fail, which is how an update
|
|
10
|
+
* leaves a broken installation behind.
|
|
11
|
+
*
|
|
12
|
+
* This is a decorator rather than a manager feature so the update state machine
|
|
13
|
+
* stays a state machine, and so the ordering is testable without Electron.
|
|
14
|
+
*/
|
|
15
|
+
export interface DesktopInstallHandoffHooks {
|
|
16
|
+
/**
|
|
17
|
+
* Brings managed services down. Resolves once they are stopped, including the
|
|
18
|
+
* forced path when a graceful stop times out.
|
|
19
|
+
*/
|
|
20
|
+
drainManagedServices: () => Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Brings managed services back after a handoff that failed while the process
|
|
23
|
+
* was still alive. Without it the app would still be running but with dead
|
|
24
|
+
* sidecars, which is a worse state than the one the user started in.
|
|
25
|
+
*/
|
|
26
|
+
restartManagedServices: () => Promise<void>;
|
|
27
|
+
logger?: (message: string) => void;
|
|
28
|
+
}
|
|
29
|
+
export declare function withDesktopInstallHandoff(adapter: DesktopUpdaterAdapter, hooks: DesktopInstallHandoffHooks): DesktopUpdaterAdapter;
|
|
30
|
+
//# sourceMappingURL=updateInstallHandoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateInstallHandoff.d.ts","sourceRoot":"","sources":["../../desktop/host/updateInstallHandoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,oBAAoB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;;;;OAIG;IACH,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,0BAA0B,GAChC,qBAAqB,CA0CvB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function withDesktopInstallHandoff(adapter, hooks) {
|
|
2
|
+
const log = hooks.logger ?? (() => { });
|
|
3
|
+
async function restoreAfterFailedHandoff(stage) {
|
|
4
|
+
try {
|
|
5
|
+
await hooks.restartManagedServices();
|
|
6
|
+
}
|
|
7
|
+
catch (restartError) {
|
|
8
|
+
// Nothing further can be done from here. The manager still reports a
|
|
9
|
+
// recoverable state, and the log says why the app may be degraded.
|
|
10
|
+
log(`[desktop-update] managed services did not restart after a failed ${stage}: `
|
|
11
|
+
+ `${restartError instanceof Error ? restartError.message : String(restartError)}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
checkForUpdates: adapter.checkForUpdates.bind(adapter),
|
|
16
|
+
downloadUpdate: adapter.downloadUpdate.bind(adapter),
|
|
17
|
+
async quitAndInstall() {
|
|
18
|
+
try {
|
|
19
|
+
await hooks.drainManagedServices();
|
|
20
|
+
}
|
|
21
|
+
catch (drainError) {
|
|
22
|
+
// Handing off now would point the installer at files a surviving
|
|
23
|
+
// sidecar may still hold, so the install is abandoned instead.
|
|
24
|
+
log('[desktop-update] managed services failed to drain; abandoning the installer handoff: '
|
|
25
|
+
+ `${drainError instanceof Error ? drainError.message : String(drainError)}`);
|
|
26
|
+
await restoreAfterFailedHandoff('drain');
|
|
27
|
+
throw drainError;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
await adapter.quitAndInstall();
|
|
31
|
+
}
|
|
32
|
+
catch (handoffError) {
|
|
33
|
+
await restoreAfterFailedHandoff('handoff');
|
|
34
|
+
throw handoffError;
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=updateInstallHandoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateInstallHandoff.js","sourceRoot":"","sources":["../../desktop/host/updateInstallHandoff.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,yBAAyB,CACvC,OAA8B,EAC9B,KAAiC;IAEjC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEvC,KAAK,UAAU,yBAAyB,CAAC,KAAa;QACpD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,qEAAqE;YACrE,mEAAmE;YACnE,GAAG,CACD,oEAAoE,KAAK,IAAI;kBACzE,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QACtD,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;QAEpD,KAAK,CAAC,cAAc;YAClB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACrC,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,iEAAiE;gBACjE,+DAA+D;gBAC/D,GAAG,CACD,uFAAuF;sBACnF,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAC/E,CAAC;gBACF,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,UAAU,CAAC;YACnB,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YACjC,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,MAAM,yBAAyB,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,YAAY,CAAC;YACrB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { DesktopUpdateSnapshot } from './contracts.js';
|
|
2
|
+
import type { DesktopUpdateManager } from './updateManager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Bounded IPC surface for the host-owned update manager.
|
|
5
|
+
*
|
|
6
|
+
* SPEC-111 section 3: every command takes no arguments, so a renderer cannot
|
|
7
|
+
* supply a feed URL, filesystem destination, shell command, executable path, or
|
|
8
|
+
* installer flag. Every handler also verifies the sender is the current Cats
|
|
9
|
+
* main window before touching the manager.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DESKTOP_UPDATE_IPC_CHANNELS: {
|
|
12
|
+
readonly snapshot: "cats-host:update-get-snapshot";
|
|
13
|
+
readonly check: "cats-host:update-check";
|
|
14
|
+
readonly download: "cats-host:update-download";
|
|
15
|
+
readonly install: "cats-host:update-install";
|
|
16
|
+
readonly event: "cats-host:update-event";
|
|
17
|
+
};
|
|
18
|
+
export interface DesktopUpdateIpcEvent {
|
|
19
|
+
sender: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface DesktopUpdateWebContentsLike {
|
|
22
|
+
isDestroyed?: () => boolean;
|
|
23
|
+
send: (channel: string, payload: unknown) => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function isDesktopUpdateIpcSenderTrusted(event: DesktopUpdateIpcEvent, mainWindowWebContents: unknown): boolean;
|
|
26
|
+
export interface CreateDesktopUpdateIpcHandlersInput {
|
|
27
|
+
manager: DesktopUpdateManager;
|
|
28
|
+
resolveMainWindowWebContents: () => unknown;
|
|
29
|
+
logger?: (message: string) => void;
|
|
30
|
+
}
|
|
31
|
+
export type DesktopUpdateIpcHandlers = Record<string, (event: DesktopUpdateIpcEvent) => Promise<DesktopUpdateSnapshot | void>>;
|
|
32
|
+
export declare function createDesktopUpdateIpcHandlers(input: CreateDesktopUpdateIpcHandlersInput): DesktopUpdateIpcHandlers;
|
|
33
|
+
export interface CreateDesktopUpdateSnapshotBroadcastInput {
|
|
34
|
+
manager: DesktopUpdateManager;
|
|
35
|
+
resolveMainWindowWebContents: () => DesktopUpdateWebContentsLike | null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Streams manager snapshots to the main window. Returns the unsubscribe
|
|
39
|
+
* function so the caller can detach deterministically during shutdown.
|
|
40
|
+
*/
|
|
41
|
+
export declare function createDesktopUpdateSnapshotBroadcast(input: CreateDesktopUpdateSnapshotBroadcastInput): () => void;
|
|
42
|
+
//# sourceMappingURL=updateIpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateIpc.d.ts","sourceRoot":"","sources":["../../desktop/host/updateIpc.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D;;;;;;;GAOG;AAEH,eAAO,MAAM,2BAA2B;;;;;;CAM9B,CAAC;AAEX,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,qBAAqB,EAC5B,qBAAqB,EAAE,OAAO,GAC7B,OAAO,CAKT;AAED,MAAM,WAAW,mCAAmC;IAClD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,4BAA4B,EAAE,MAAM,OAAO,CAAC;IAC5C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAC3C,MAAM,EACN,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CACxE,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,mCAAmC,GACzC,wBAAwB,CAgC1B;AAED,MAAM,WAAW,yCAAyC;IACxD,OAAO,EAAE,oBAAoB,CAAC;IAC9B,4BAA4B,EAAE,MAAM,4BAA4B,GAAG,IAAI,CAAC;CACzE;AAED;;;GAGG;AACH,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,yCAAyC,GAC/C,MAAM,IAAI,CAaZ"}
|