glasspane-install 1.16.4 → 1.18.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 +17 -15
- package/package.json +1 -1
package/cli.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* 流程:terminal onboarding 横幅 → 环境预检(node/swift/git/open)→ 定位项目
|
|
6
6
|
* 根目录 → npm 依赖(有 package-lock.json 走 npm ci,见 npmDepsCommand)→ 编译 TS
|
|
7
|
-
* (kernel
|
|
7
|
+
* (mcp-shell;内核是已发布的 `iterate-kernel` 依赖,捆进它的 bundle,不再是仓内 workspace)→ swift
|
|
8
8
|
* build -c release(engine)→ make-app.sh 打包**并签名**两个 .app → 安置到
|
|
9
9
|
* ~/Applications → 以 bundle 内可执行注册 launchd 自启并启动 daemon → 打开
|
|
10
10
|
* GlassPane.app 设置面板进入权限引导(授权对象是 daemon,见 P1 v1.2 §11)→
|
|
@@ -70,7 +70,7 @@ export const INSTALL_SH_URL =
|
|
|
70
70
|
/** 发布线锚点(版本真源 = 根 package.json,由 scripts/set-version.mjs 统一改写,
|
|
71
71
|
* 勿手改):npx 形态下本地没有仓库时,引导 clone 的就是这个 tag,与 install.sh
|
|
72
72
|
* 的 `GLASSPANE_RELEASE` 同值——两条一键入口必须拿到同一份源码。 */
|
|
73
|
-
export const RELEASE_VERSION = '1.
|
|
73
|
+
export const RELEASE_VERSION = '1.18.0'
|
|
74
74
|
/** 发布 ref(tag 名)。GLASSPANE_REF 环境变量可覆盖(追主干用 `main`)。 */
|
|
75
75
|
export const REPO_REF = `v${RELEASE_VERSION}`
|
|
76
76
|
|
|
@@ -324,22 +324,24 @@ export function checkEnvironment({ nodePath = process.execPath } = {}) {
|
|
|
324
324
|
/** 汇总预检结果:缺项按严重程度排序返回可读描述(空数组 = 全部通过)。 */
|
|
325
325
|
export function preflightIssues(env) {
|
|
326
326
|
const issues = []
|
|
327
|
+
// 每一行都要带上"下一步能跑的动作":`未找到 npm` 单独一句是把诊断交给读者,而预检失败
|
|
328
|
+
// 时汇总只补一句通用的"修复后重新运行即可"——四行里只有 swift 那条说得出该装什么。
|
|
327
329
|
if (env.nodeMajor === 0) {
|
|
328
|
-
issues.push(
|
|
330
|
+
issues.push('无法解析 Node.js 版本(`node --version` 跑不起来):装一个 >= 18 的 Node(brew install node,或 nvm install --lts 后 nvm use)再重跑')
|
|
329
331
|
} else if (!env.nodeOk) {
|
|
330
|
-
issues.push(`Node.js 需要 >= ${MIN_NODE_MAJOR},当前为 ${env.nodeMajor}
|
|
332
|
+
issues.push(`Node.js 需要 >= ${MIN_NODE_MAJOR},当前为 ${env.nodeMajor}:换够格的 Node 版本再重跑(brew upgrade node 或 nvm use 22)`)
|
|
331
333
|
}
|
|
332
334
|
if (!env.npm) {
|
|
333
|
-
issues.push('未找到 npm')
|
|
335
|
+
issues.push('未找到 npm(它随 Node 一起装:brew install node)')
|
|
334
336
|
}
|
|
335
337
|
if (!env.swift) {
|
|
336
338
|
issues.push('未找到 swift(需安装 Xcode Command Line Tools:xcode-select --install)')
|
|
337
339
|
}
|
|
338
340
|
if (!env.git) {
|
|
339
|
-
issues.push('未找到 git')
|
|
341
|
+
issues.push('未找到 git(xcode-select --install 会带上它,或 brew install git)')
|
|
340
342
|
}
|
|
341
343
|
if (!env.open) {
|
|
342
|
-
issues.push('未找到 open(本安装器面向 macOS
|
|
344
|
+
issues.push('未找到 open(本安装器面向 macOS:Linux/Windows 上没有可装的东西,请在 macOS 14+ 上重跑)')
|
|
343
345
|
}
|
|
344
346
|
return issues
|
|
345
347
|
}
|
|
@@ -1776,8 +1778,11 @@ export function usageText() {
|
|
|
1776
1778
|
' (--no-daemon 且 --no-launchd)',
|
|
1777
1779
|
' 1 收尾未通过 hello 校验(daemon 没起来/不应答),或构建/产物/launchd 出错',
|
|
1778
1780
|
' 2 命令行参数错误',
|
|
1779
|
-
' 注:install.sh 用 exec
|
|
1780
|
-
' $?
|
|
1781
|
+
' 注:install.sh 用 exec 委托本文件,所以**脚本自己跑完了**之后,退出码原样透传。',
|
|
1782
|
+
' 但 `curl … | sh` 的 $? 只在 curl 成功时才是这里的结论:curl 取不到脚本时 sh 读到的',
|
|
1783
|
+
' 是空输入,直接 EOF 退 0(本机实测 curl 退 7、管道退 0);中途断流时 sh 只执行了',
|
|
1784
|
+
' 收到的前半截,回的是最后一条命令的状态。要拿退出码当结论就分两步跑:',
|
|
1785
|
+
' curl -fsSL <install.sh> -o /tmp/gp-install.sh && sh /tmp/gp-install.sh',
|
|
1781
1786
|
'',
|
|
1782
1787
|
].join('\n')
|
|
1783
1788
|
}
|
|
@@ -1862,7 +1867,7 @@ export function nextStepsText({
|
|
|
1862
1867
|
` 作业被 bootout(等授权期间常发生)后的恢复**不需要手敲 launchctl**:`,
|
|
1863
1868
|
` node "${path.join(rootDir, 'installer', 'cli.js')}" --restore-launchd`,
|
|
1864
1869
|
` (检测→bootstrap→hello 校验自报席位;勾完 TCC 框重跑即自动换进程复验)`,
|
|
1865
|
-
`4.
|
|
1870
|
+
`4. 主体名核对:设置面板「Daemon 状态 → 主体」应与上面「${entryName}」一致;不一致说明连到了别的构建实例。`,
|
|
1866
1871
|
'5. registry 发布形态:MCP 服务器已可独立安装(`npm i -g glasspane-mcp`,命令名',
|
|
1867
1872
|
' glasspane-mcp);但它只是转发层,daemon 与权限仍由本次安装产出,缺 daemon 时',
|
|
1868
1873
|
' 工具调用会返回带补救步骤的结构化错误。',
|
|
@@ -2372,13 +2377,10 @@ export async function install({
|
|
|
2372
2377
|
const hasLockfile = fs.existsSync(path.join(rootDir, 'package-lock.json'))
|
|
2373
2378
|
const depsCmd = npmDepsCommand({ hasLockfile })
|
|
2374
2379
|
printStep(hasLockfile
|
|
2375
|
-
? '安装 npm 依赖(workspaces:
|
|
2376
|
-
: '安装 npm 依赖(workspaces:
|
|
2380
|
+
? '安装 npm 依赖(workspaces: mcp-shell / installer / updater)——按提交过的 package-lock.json 走 npm ci……'
|
|
2381
|
+
: '安装 npm 依赖(workspaces: mcp-shell / installer / updater)——该树没有 package-lock.json,退回 npm install(依赖树未经 CI 那一份 lock 的 attest)……')
|
|
2377
2382
|
await run('npm', depsCmd, { cwd: rootDir })
|
|
2378
2383
|
|
|
2379
|
-
printStep('编译 kernel……')
|
|
2380
|
-
await run('npm', ['run', 'build', '--workspace', '@iterate/kernel'], { cwd: rootDir })
|
|
2381
|
-
|
|
2382
2384
|
printStep('编译 mcp-shell……')
|
|
2383
2385
|
await run('npm', ['run', 'build', '--workspace', 'glasspane-mcp'], { cwd: rootDir })
|
|
2384
2386
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glasspane-install",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.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",
|