@rightkit/release 0.2.150 → 0.2.153

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 (67) hide show
  1. package/LICENSE-APACHE +201 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +119 -8
  4. package/build-release.mjs +16 -2
  5. package/cli/right-release.mjs +18 -5
  6. package/committed-source.mjs +19 -1
  7. package/crate-graph.mjs +121 -0
  8. package/development-signing.mjs +8 -0
  9. package/development.mjs +46 -13
  10. package/devtools-policy.json +5 -0
  11. package/devtools-policy.mjs +119 -0
  12. package/direct-bootstrap.mjs +9 -3
  13. package/dmg-build.mjs +19 -5
  14. package/dmg-layout.mjs +2 -2
  15. package/dmg-spec.mjs +97 -0
  16. package/execution-policy.mjs +17 -1
  17. package/github-release.mjs +25 -7
  18. package/github-upload-gate.mjs +84 -0
  19. package/hardeningscan.mjs +3 -0
  20. package/inventory-check.mjs +4 -4
  21. package/mac-bundle-signing.mjs +1 -1
  22. package/mac-sign-core.mjs +97 -0
  23. package/mac-signing-matrix.mjs +186 -0
  24. package/macos-notarization.mjs +18 -2
  25. package/msix-appinstaller.mjs +4 -1
  26. package/msix-config.mjs +5 -1
  27. package/msix-repair-guard.mjs +24 -0
  28. package/msix-repair-guard.ps1 +356 -0
  29. package/notarize-macos.mjs +4 -3
  30. package/ownership-catalog-config.json +6 -7
  31. package/ownership-command.mjs +69 -8
  32. package/ownership-evidence.mjs +1 -1
  33. package/ownership-key-authority.mjs +1 -1
  34. package/ownership-key-command.mjs +15 -3
  35. package/ownership-key-elevation.mjs +11 -2
  36. package/ownership-mandatory-set.json +420 -0
  37. package/ownership-mandatory-set.mjs +273 -0
  38. package/ownership.mjs +2 -2
  39. package/package.json +15 -3
  40. package/packaged-app-identity.mjs +88 -0
  41. package/preflight.mjs +25 -3
  42. package/prune-r2.mjs +28 -3
  43. package/publication-gate.mjs +49 -10
  44. package/publish-cargo.mjs +21 -1
  45. package/publish-swift.mjs +78 -141
  46. package/publish-update.mjs +24 -2
  47. package/qa-build-features.mjs +216 -0
  48. package/qa-control-scan.mjs +435 -0
  49. package/registry-parity.mjs +18 -1
  50. package/release-invocation.mjs +2 -1
  51. package/release-state.mjs +9 -0
  52. package/release-switch-registry.json +33 -0
  53. package/release-switch-scan.mjs +452 -0
  54. package/release.mjs +324 -26
  55. package/renamed-away.mjs +29 -0
  56. package/rightkit-ownership.json +682 -709
  57. package/rightkit-sync.mjs +8 -4
  58. package/rightkit-version-policy.mjs +18 -0
  59. package/rightkit-versions.json +212 -127
  60. package/runtime-budget-classes.json +4 -0
  61. package/runtime-budgets.mjs +870 -0
  62. package/runtime-bundle-scan.mjs +61 -0
  63. package/sign-macos.mjs +28 -30
  64. package/sign-updater.mjs +5 -2
  65. package/swift-mac-dmg.mjs +7 -2
  66. package/swift-package-command.mjs +1 -1
  67. package/upload-release.mjs +10 -37
@@ -169,7 +169,7 @@ export function capSummary(lines, { maxLines = 16, maxChars = 1600 } = {}) {
169
169
 
170
170
  export function buildMacConfirmScript(text) {
171
171
  // The text field takes keyboard focus, so stray typing never presses a button; approval needs "yes" typed.
172
- return `display dialog ${appleScriptText(`${text}\n\nType yes below, then click Approve.`)} default answer "" with title ${appleScriptText(CONFIRM_TITLE)} buttons {"Cancel","Approve\u2026"} default button "Approve\u2026" cancel button "Cancel" with icon caution`;
172
+ return `display dialog ${appleScriptText(`${text}\n\nType the word yes below (not your password), then click Approve.`)} default answer "" with title ${appleScriptText(CONFIRM_TITLE)} buttons {"Cancel","Approve\u2026"} default button "Approve\u2026" cancel button "Cancel" with icon caution`;
173
173
  }
174
174
 
175
175
  export const WINDOWS_APPROVE_PREFIX = "RK_CONFIRM_APPROVED:";
@@ -189,7 +189,16 @@ export function buildWindowsConfirmScript(text, nonce = "") {
189
189
 
190
190
  function readLineSync() {
191
191
  const buf = Buffer.alloc(1); let line = "";
192
- for (;;) { let n = 0; try { n = readSync(0, buf, 0, 1, null); } catch { return line; } if (n === 0 || buf[0] === 10) return line; line += String.fromCharCode(buf[0]); }
192
+ for (;;) {
193
+ let n = 0;
194
+ try { n = readSync(0, buf, 0, 1, null); } catch (error) {
195
+ // A terminal whose stdin is non-blocking reports "no input yet" as EAGAIN: wait for the human, do not treat it as an answer.
196
+ if (error?.code === "EAGAIN") { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 50); continue; }
197
+ return line;
198
+ }
199
+ if (n === 0 || buf[0] === 10) return line;
200
+ line += String.fromCharCode(buf[0]);
201
+ }
193
202
  }
194
203
 
195
204
  /**
@@ -0,0 +1,420 @@
1
+ {
2
+ "schema": 1,
3
+ "source": {
4
+ "table": "private-audits/TABLE1-MANDATORY.md:56-78 (M1-M23 requirement catalog)",
5
+ "versions": "private-audits/inventory/REQUIRED-VERSIONS.md (source versions at rightkit HEAD a15e62fd, registry readback 2026-10-13)",
6
+ "note": "min = required version (source version at P1.7 HEAD). registryMax = highest registry version at readback; where registryMax < min the required version is not yet published, so every consumer fails until it ships."
7
+ },
8
+ "defaultProfile": "desktop",
9
+ "defaultApps": [
10
+ "heardright",
11
+ "scraperight",
12
+ "coderight",
13
+ "cutright",
14
+ "genright",
15
+ "postright",
16
+ "viewright",
17
+ "mailright",
18
+ "pulse",
19
+ "ember"
20
+ ],
21
+ "appDeclarationFile": "rightkit-mandatory.json",
22
+ "profiles": {
23
+ "desktop": {
24
+ "description": "Default: every desktop app owes every row unless the app declares N/A with a reason."
25
+ },
26
+ "apple": {
27
+ "description": "Table 1-Apple is an unratified draft. Profile is supported by the data model; no Apple rows are shipped.",
28
+ "ratified": false
29
+ }
30
+ },
31
+ "rows": [
32
+ {
33
+ "id": "M1",
34
+ "name": "Window host",
35
+ "profile": "desktop",
36
+ "owners": [
37
+ {
38
+ "name": "rightkit-tauri-shell",
39
+ "ecosystem": "cargo",
40
+ "min": "0.3.0"
41
+ },
42
+ {
43
+ "name": "rightkit-device",
44
+ "ecosystem": "cargo",
45
+ "min": "0.1.3"
46
+ },
47
+ {
48
+ "name": "@rightkit/tauri",
49
+ "ecosystem": "npm",
50
+ "min": "0.2.0",
51
+ "registryMax": "0.2.0"
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "id": "M2",
57
+ "name": "App frame",
58
+ "profile": "desktop",
59
+ "owners": [
60
+ {
61
+ "name": "@rightkit/react-shell",
62
+ "ecosystem": "npm",
63
+ "min": "0.6.4"
64
+ },
65
+ {
66
+ "name": "@rightkit/platform-ui",
67
+ "ecosystem": "npm",
68
+ "min": "0.2.8",
69
+ "registryMax": "0.2.7"
70
+ },
71
+ {
72
+ "name": "@rightkit/theme",
73
+ "ecosystem": "npm",
74
+ "min": "0.2.3",
75
+ "registryMax": "0.2.3"
76
+ }
77
+ ]
78
+ },
79
+ {
80
+ "id": "M3",
81
+ "name": "Engine supervision",
82
+ "profile": "desktop",
83
+ "owners": [
84
+ {
85
+ "name": "rightkit-job-queue",
86
+ "ecosystem": "cargo",
87
+ "min": "0.3.0"
88
+ },
89
+ {
90
+ "name": "rightkit-child-process",
91
+ "ecosystem": "cargo",
92
+ "min": "0.4.0"
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ "id": "M4",
98
+ "name": "Window/CLI protocol",
99
+ "profile": "desktop",
100
+ "owners": [
101
+ {
102
+ "name": "rightkit-job-queue",
103
+ "ecosystem": "cargo",
104
+ "min": "0.3.0"
105
+ },
106
+ {
107
+ "name": "rightkit-sidecar",
108
+ "ecosystem": "cargo",
109
+ "min": "0.2.0"
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "id": "M5",
115
+ "name": "Other child processes",
116
+ "profile": "desktop",
117
+ "owners": [
118
+ {
119
+ "name": "rightkit-child-process",
120
+ "ecosystem": "cargo",
121
+ "min": "0.4.0"
122
+ }
123
+ ]
124
+ },
125
+ {
126
+ "id": "M6",
127
+ "name": "Data location",
128
+ "profile": "desktop",
129
+ "owners": [
130
+ {
131
+ "name": "rightkit-daemon",
132
+ "ecosystem": "cargo",
133
+ "min": "0.2.0"
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "id": "M7",
139
+ "name": "Local services",
140
+ "profile": "desktop",
141
+ "owners": [
142
+ {
143
+ "name": "rightkit-daemon",
144
+ "ecosystem": "cargo",
145
+ "min": "0.2.0"
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "id": "M8",
151
+ "name": "Safe file writes",
152
+ "profile": "desktop",
153
+ "owners": [
154
+ {
155
+ "name": "rightkit-fs",
156
+ "ecosystem": "cargo",
157
+ "min": "0.4.0",
158
+ "registryMax": "0.3.3"
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ "id": "M9",
164
+ "name": "Database",
165
+ "profile": "desktop",
166
+ "owners": [
167
+ {
168
+ "name": "rightkit-db",
169
+ "ecosystem": "cargo",
170
+ "min": "0.4.0",
171
+ "registryMax": "0.3.2"
172
+ }
173
+ ]
174
+ },
175
+ {
176
+ "id": "M10",
177
+ "name": "Settings",
178
+ "profile": "desktop",
179
+ "owners": [
180
+ {
181
+ "name": "rightkit-app-settings",
182
+ "ecosystem": "cargo",
183
+ "min": "0.2.0"
184
+ },
185
+ {
186
+ "name": "@rightkit/settings-ui",
187
+ "ecosystem": "npm",
188
+ "min": "0.4.4",
189
+ "registryMax": "0.4.3"
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "id": "M11",
195
+ "name": "Secrets",
196
+ "profile": "desktop",
197
+ "owners": [
198
+ {
199
+ "name": "rightkit-credentials",
200
+ "ecosystem": "cargo",
201
+ "min": "0.2.0"
202
+ }
203
+ ]
204
+ },
205
+ {
206
+ "id": "M12",
207
+ "name": "Licence/device",
208
+ "profile": "desktop",
209
+ "owners": [
210
+ {
211
+ "name": "rightkit-license",
212
+ "ecosystem": "cargo",
213
+ "min": "0.2.0",
214
+ "registryMax": "0.1.3"
215
+ },
216
+ {
217
+ "name": "rightkit-device",
218
+ "ecosystem": "cargo",
219
+ "min": "0.1.3"
220
+ },
221
+ {
222
+ "name": "@rightkit/license",
223
+ "ecosystem": "npm",
224
+ "min": "0.2.0",
225
+ "registryMax": "0.1.8"
226
+ }
227
+ ]
228
+ },
229
+ {
230
+ "id": "M13",
231
+ "name": "Pro entitlement",
232
+ "profile": "desktop",
233
+ "owners": [
234
+ {
235
+ "name": "rightkit-license",
236
+ "ecosystem": "cargo",
237
+ "min": "0.2.0",
238
+ "registryMax": "0.1.3"
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "id": "M14",
244
+ "name": "Legal/onboarding",
245
+ "profile": "desktop",
246
+ "owners": [
247
+ {
248
+ "name": "@rightkit/legal",
249
+ "ecosystem": "npm",
250
+ "min": "0.3.1",
251
+ "registryMax": "0.3.1"
252
+ },
253
+ {
254
+ "name": "@rightkit/legal-ui",
255
+ "ecosystem": "npm",
256
+ "min": "0.2.2",
257
+ "registryMax": "0.2.2"
258
+ },
259
+ {
260
+ "name": "@rightkit/onboarding",
261
+ "ecosystem": "npm",
262
+ "min": "0.3.3",
263
+ "registryMax": "0.3.2"
264
+ }
265
+ ]
266
+ },
267
+ {
268
+ "id": "M15",
269
+ "name": "Logging",
270
+ "profile": "desktop",
271
+ "owners": [
272
+ {
273
+ "name": "rightkit-logs",
274
+ "ecosystem": "cargo",
275
+ "min": "0.2.2",
276
+ "registryMax": "0.2.1"
277
+ },
278
+ {
279
+ "name": "@rightkit/logs",
280
+ "ecosystem": "npm",
281
+ "min": "0.1.4",
282
+ "registryMax": "0.1.4"
283
+ }
284
+ ]
285
+ },
286
+ {
287
+ "id": "M16",
288
+ "name": "Crash reporting",
289
+ "profile": "desktop",
290
+ "owners": [
291
+ {
292
+ "name": "rightkit-crash",
293
+ "ecosystem": "cargo",
294
+ "min": "0.2.2",
295
+ "registryMax": "0.2.1"
296
+ }
297
+ ]
298
+ },
299
+ {
300
+ "id": "M17",
301
+ "name": "HTTP",
302
+ "profile": "desktop",
303
+ "owners": [
304
+ {
305
+ "name": "rightkit-http",
306
+ "ecosystem": "cargo",
307
+ "min": "0.3.0",
308
+ "registryMax": "0.2.5"
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "id": "M18",
314
+ "name": "Updates",
315
+ "profile": "desktop",
316
+ "owners": [
317
+ {
318
+ "name": "@rightkit/app-update",
319
+ "ecosystem": "npm",
320
+ "min": "0.2.5"
321
+ }
322
+ ]
323
+ },
324
+ {
325
+ "id": "M19",
326
+ "name": "Release tooling",
327
+ "profile": "desktop",
328
+ "owners": [
329
+ {
330
+ "name": "@rightkit/release",
331
+ "ecosystem": "npm",
332
+ "min": "0.2.153",
333
+ "registryMax": "0.2.151",
334
+ "allowDev": true
335
+ }
336
+ ]
337
+ },
338
+ {
339
+ "id": "M20",
340
+ "name": "QA",
341
+ "profile": "desktop",
342
+ "owners": [
343
+ {
344
+ "name": "rightkit-qa",
345
+ "ecosystem": "cargo",
346
+ "min": "0.2.16",
347
+ "registryMax": "0.2.14",
348
+ "allowDev": true
349
+ },
350
+ {
351
+ "name": "rightkit-qa-driver",
352
+ "ecosystem": "cargo",
353
+ "min": "0.3.0",
354
+ "allowDev": true
355
+ },
356
+ {
357
+ "name": "@rightkit/qa",
358
+ "ecosystem": "npm",
359
+ "min": "0.4.8",
360
+ "registryMax": "0.4.7",
361
+ "allowDev": true
362
+ },
363
+ {
364
+ "name": "@rightkit/qa-chrome",
365
+ "ecosystem": "npm",
366
+ "min": "0.1.6",
367
+ "registryMax": "0.1.6",
368
+ "allowDev": true
369
+ }
370
+ ]
371
+ },
372
+ {
373
+ "id": "M22",
374
+ "name": "Agent surface",
375
+ "profile": "desktop",
376
+ "owners": [
377
+ {
378
+ "name": "rightkit-mcp",
379
+ "ecosystem": "cargo",
380
+ "min": "0.6.0",
381
+ "registryMax": "0.5.3"
382
+ }
383
+ ]
384
+ }
385
+ ],
386
+ "pendingRows": [
387
+ {
388
+ "id": "M21",
389
+ "name": "Test mode",
390
+ "profile": "desktop",
391
+ "owners": [],
392
+ "ownerPending": "No selected owner (D4 unratified); never fails."
393
+ },
394
+ {
395
+ "id": "M23",
396
+ "name": "Release-time switches",
397
+ "profile": "desktop",
398
+ "owners": [],
399
+ "ownerPending": "No selected owner (D4 unratified); never fails."
400
+ }
401
+ ],
402
+ "amendments": {
403
+ "v2.1": {
404
+ "description": "TABLE1-AMENDMENT-v2.1 (draft): @rightkit/tauri-shell joins M1. Opt-in via --amendment v2.1.",
405
+ "rows": [
406
+ {
407
+ "id": "M1",
408
+ "profile": "desktop",
409
+ "owners": [
410
+ {
411
+ "name": "@rightkit/tauri-shell",
412
+ "ecosystem": "npm",
413
+ "min": "0.1.1"
414
+ }
415
+ ]
416
+ }
417
+ ]
418
+ }
419
+ }
420
+ }