glasspane-install 1.4.0 → 1.5.0
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/cli.js +29 -3
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -69,7 +69,7 @@ export const INSTALL_SH_URL =
|
|
|
69
69
|
/** 发布线锚点(版本真源 = 根 package.json,由 scripts/set-version.mjs 统一改写,
|
|
70
70
|
* 勿手改):npx 形态下本地没有仓库时,引导 clone 的就是这个 tag,与 install.sh
|
|
71
71
|
* 的 `GLASSPANE_RELEASE` 同值——两条一键入口必须拿到同一份源码。 */
|
|
72
|
-
export const RELEASE_VERSION = '1.
|
|
72
|
+
export const RELEASE_VERSION = '1.5.0'
|
|
73
73
|
/** 发布 ref(tag 名)。GLASSPANE_REF 环境变量可覆盖(追主干用 `main`)。 */
|
|
74
74
|
export const REPO_REF = `v${RELEASE_VERSION}`
|
|
75
75
|
|
|
@@ -849,6 +849,9 @@ export async function registerAutoUpdate({
|
|
|
849
849
|
now = new Date(),
|
|
850
850
|
exists = fs.existsSync,
|
|
851
851
|
say = (line) => printStep(line),
|
|
852
|
+
// §9:注册那一趟现在会导出系统根证书束并起子进程探测一次 release 端点。
|
|
853
|
+
// 单测必须能替换掉这两件事——否则 `npm test` 变成一次联网测试,慢且不稳。
|
|
854
|
+
updaterDeps = {},
|
|
852
855
|
} = {}) {
|
|
853
856
|
const tree = updaterTreePaths(rootDir)
|
|
854
857
|
const modules = {}
|
|
@@ -894,7 +897,7 @@ export async function registerAutoUpdate({
|
|
|
894
897
|
}
|
|
895
898
|
|
|
896
899
|
const flags = { json: false, auto: false, help: false, consents: [], overrides: {}, 'state-dir': stateRoot }
|
|
897
|
-
const deps = { cliPath: tree.cli, ...homeArgs }
|
|
900
|
+
const deps = { cliPath: tree.cli, ...homeArgs, ...updaterDeps }
|
|
898
901
|
if (uid !== null && uid !== undefined) deps.uid = String(uid)
|
|
899
902
|
if (runLaunchctl) deps.runLaunchctl = runLaunchctl
|
|
900
903
|
|
|
@@ -930,9 +933,24 @@ export async function registerAutoUpdate({
|
|
|
930
933
|
pointer: written.pointer,
|
|
931
934
|
pointerPath: written.path,
|
|
932
935
|
message: outcome.message,
|
|
936
|
+
// `undefined`(这份 updater 根本不回报)与 `null`(回报了但没有束)对读者是同一句话:
|
|
937
|
+
// 没有证据。合成一个形状,下游就不必为两种"没有"各写一条分支——而两种分支里,
|
|
938
|
+
// 漏掉一种就是崩溃。
|
|
939
|
+
caRoots: outcome.state && outcome.state.caRoots ? outcome.state.caRoots : null,
|
|
933
940
|
}
|
|
934
941
|
if (registered) {
|
|
935
942
|
say(`每日自动更新已注册(${agentLabel},默认 ${schedule},状态根 ${stateRoot};指针 ${written.path})——一键关:node "${tree.cli}" disable`)
|
|
943
|
+
// §9.8:node 不读 macOS 信任库,装了 HTTPS 中间人的机器上这件事只有 updater 自己能发现。
|
|
944
|
+
// 安装日志必须把它说出来——否则每天失败的是一个看起来在正常工作的代理。措辞与 remedy
|
|
945
|
+
// 都来自 outcome.message(唯一作者),这里只转述,不重写。
|
|
946
|
+
const ca = summary.caRoots
|
|
947
|
+
if (ca && ca.status === 'ok') {
|
|
948
|
+
say(`node 的系统根证书束:已导出 ${ca.certs} 张 → ${ca.path},并已写进该作业的 NODE_EXTRA_CA_CERTS`)
|
|
949
|
+
} else if (ca) {
|
|
950
|
+
say(paint(`注意(自动更新的网络这一跳):${outcome.message}`, 'yellow'))
|
|
951
|
+
} else {
|
|
952
|
+
say(paint(`注意:这份 updater 没有回报根证书束的导出结果(旧版本);若本机 HTTPS 被中间人替换,每日检查会在第一道校验上失败,跑 node "${tree.cli}" enable 可重新导出。`, 'yellow'))
|
|
953
|
+
}
|
|
936
954
|
} else {
|
|
937
955
|
say(
|
|
938
956
|
`自动更新已关闭(${switchedOffByEnv ? 'updater 报环境变量已关,见下面它自己的原话' : '--no-auto-update'}):`
|
|
@@ -960,10 +978,18 @@ export function updateGuidanceText(update) {
|
|
|
960
978
|
]
|
|
961
979
|
}
|
|
962
980
|
if (update.state === 'registered') {
|
|
981
|
+
const ca = update.caRoots
|
|
982
|
+
const caLine = !ca
|
|
983
|
+
? ` ⚠ 这份 updater 没有回报 node 要用的系统根证书束(旧版本);本机 HTTPS 若被中间人替换,每日检查会在第一道校验上失败。补上:node "${update.updaterCli}" enable。`
|
|
984
|
+
: ca.status === 'ok'
|
|
985
|
+
? ` node 用本机导出的系统根证书束 ${ca.certs} 张(${ca.path},已写进作业的 NODE_EXTRA_CA_CERTS)。`
|
|
986
|
+
: ` ⚠ 本机没能导出 node 要用的系统根证书束(${ca.status});HTTPS 被中间人替换的机器上,每日检查会在第一道校验上失败,`
|
|
987
|
+
+ '面板与 gp_diagnose 会一直显示这句话,修复办法是它给的那条。'
|
|
963
988
|
return [
|
|
964
989
|
`6. 自动更新:默认开。launchd 每日 ${update.schedule} 跑 "${update.updaterCli}" check && apply`,
|
|
965
990
|
` (作业 ${update.agentLabel},RunAtLoad=false,日志 ${update.stateRoot}/update.log);`,
|
|
966
|
-
' 只在 daemon 空闲应答探针、且规格 §1
|
|
991
|
+
' 只在 daemon 空闲应答探针、且规格 §1 八道校验全过时才换版,major 永远等人点按钮。',
|
|
992
|
+
...(caLine ? [caLine] : []),
|
|
967
993
|
` 一键关:node "${update.updaterCli}" disable(卸该作业 + 状态记 disabled=true);重开:enable。`,
|
|
968
994
|
` 卸载本机安装时:bootout daemon 作业的同时**也必须** bootout ${update.agentLabel} 并删它的 plist。`,
|
|
969
995
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glasspane-install",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "GlassPane one-command installer: terminal onboarding → install deps → build TS + Swift engine → start daemon → open settings GUI for permission guide",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|