Releases: SolveaCX/flatkey-node-release
Release list
Flatkey Node 0.5.10
What's new in 0.5.10
新装节点 .pkg 修两个 bug. 已装节点 不 通过 Sparkle 自动升级(appcast.xml 仍指 0.5.5)。
Bug 1: Claude OAuth 绑定提示文案误导(v0.5.8 引入的回归)
v0.5.8 给 GPT 加"粘整段 URL"智能解析时,共用文案被 Claude 流程意外继承:
- 老 placeholder 提示用户"粘整个地址栏 URL (http://localhost:1455/...)" — 对 Claude 错的, Claude callback 是
https://console.anthropic.com/oauth/code/callback,有正常页面渲染显示code#state - 新用户照提示粘 URL → Claude exchange-code 端点拒绝 → 报"exchange-code 失败"
修法:
- 前端
renderStep1按 prov 分两套文案 (GPT 保留原文,Claude 改成"复制页面显示的 code#state") - 后端
_parse_oauth_input共用函数,Claude 分支也容忍 URL/query/code#state/纯 code 四种格式
Bug 2: WKWebView 内 Cmd+V / Cmd+C / Cmd+X / Cmd+A 不工作
main.swift 从来没设过 NSApp.mainMenu,用户只能右键 → Paste。macOS 剪贴板快捷键不是 WKWebView 自己接管,而是 Main Menu → Edit 菜单的 NSMenuItem 通过 keyEquivalent + selector 派发。
修法:新增 installMainMenu(),装 Application + Edit 全套标准 NSText.* selectors。Cmd+V/C/X/A/Z/Shift+Z/Cmd+Q/H 全恢复。
签名 / 完整性
- Developer ID Installer: Solvea AI Inc. (MFTP4RAUHM)
- Apple Trusted Timestamp: 2026-06-30 00:21:57 UTC
pkgutil --check-signature应返 trusted by Apple
引用
flatkey monorepo:
- PR #88 — release(node-app): v0.5.10 — fix Claude binding URL paste + WKWebView Cmd+V
- 上游 v0.5.8 (40c29b8) 回归 — GPT 绑定智能 URL 解析的文案误伤了 Claude 流程
Flatkey Node 0.5.9
What's new in 0.5.9
仅给新装节点 .pkg 更新。已装的 fleet 节点 不会 通过 Sparkle 自动升级(appcast.xml 故意不动)。
改动
node-dashboard.py的 vendored 副本同步 PR #86: OAuth 账号创建时concurrency: 1 → 10,允许节点单 OAuth 跑更多并发(配合 NAS 集中限速)- 对应 install.sh / build.sh / Info.plist 版本号
0.5.8 → 0.5.9
不在本版
- PR #81 的 operator 自助入驻 / USDC 钱包绑定 UI(独立决定,留下一版)
- PR #86 的 NAS 端 admin tenant UI /
tenant_pool_handler.go改动(走 NAS sub2api deploy 不在 .pkg 里)
签名 / 完整性
- Developer ID Installer: Solvea AI Inc. (MFTP4RAUHM)
- Apple Trusted Timestamp: 2026-06-26 20:16:23 UTC
pkgutil --check-signature应返回 trusted by Apple
引用
flatkey monorepo:
- PR #87 — release(node-app): v0.5.9 — sync PR #86 concurrency=10 into vendored dashboard
- PR #86 — [codex] Expose fleet new-account controls
Flatkey Node 0.5.8
改进 UX
GPT 绑定流程: 用户从浏览器地址栏复制 callback URL 后,不必精确截取 substring。
支持 4 种粘贴格式(从最方便到 fallback):
- 整个浏览器地址栏 URL:
http://localhost:1455/auth/callback?code=...&state=...✓ - 仅 query string:
?code=...&state=...✓ - 纯 code:
ac_xxx✓ - 老 code#state 格式:
ac_xxx#yyy✓(兼容旧脚本)
UI 同时更新引导文字:
- placeholder: 提示直接粘整个 URL
- 标注
ERR_CONNECTION_REFUSED是正常的(防止用户误以为出错) - 加 ⌘L 全选 / ⌘C 复制具体步骤
升级说明
- 新装:
curl -fsSL https://fleet.flatkey.ai/install.sh | INVITE=<your-invite> bash - 现有节点(无 Sparkle EdDSA 自动升级): 重新跑上面 install 命令即可
合并 PR: SolveaCX/flatkey#70
Flatkey Node 0.5.7
修复
PR #68 — node-dashboard GPT OAuth state 字段缺失 → 用户被迫走 code#state fallback。
现象
走 GPT (Codex) 绑定流程时,提交 OAuth code 报:
HTTP 400: Field validation for 'State' failed on 'required' tag
根因
generate_auth_url 拿到 backend response 后直接 json.dump 整个 data 字典到 ~/flatkey-node/.oauth-state-gpt.json。但 backend generate-auth-url 返回的是 {auth_url, session_id} —— 没有独立 state 字段;state 嵌在 auth_url 的 query string 里。之后 account_exchange 里 saved.get("state", "") 永远返空。
修复
generate_auth_url 在 json.dump 之前用 urllib.parse 把 auth_url 解出 state 也存进 saved。之后用户走标准 GPT 绑定流程不再需要在输入框拼 code#state。
code#state fallback 路径保留(应对极端情况)。
升级说明
- 新装走 install.sh:
curl -fsSL https://fleet.flatkey.ai/install.sh | INVITE=<invite> bash - 现有节点: 本版本未签 Sparkle EdDSA,不会自动升级;手工重装即可
合并 PR: SolveaCX/flatkey#69
Flatkey Node 0.5.6
修复
- PR #52 set-e + var=$(grep|pipe) 静默退出 bug 进 .pkg (deploy-node.sh + authorize.sh 双修)
- 清掉 build.sh 里的 authorize.sh 兼容旧版 hack 和 clients/flatkey-node-app/resources/scripts/ stale 副本
升级说明
- 新装走 install.sh:
curl -fsSL https://fleet.flatkey.ai/install.sh | INVITE=<your-invite> bash - 现有节点:本版本未签 Sparkle EdDSA,不会自动升级;如需升级请手工跑 install.sh 重装(
/Applications/Flatkey Node.app会被替换,~/flatkey-node/.env 等本地状态保留)
合并 PR: SolveaCX/flatkey#59
Flatkey Node 0.5.5
修复版:
- 更换 Developer ID 签名为 Solvea AI Inc. (Team MFTP4RAUHM) — 旧 ZHEN GUO 证书被 Apple 吊销,导致新用户安装被 Gatekeeper 拦截。新证书有效,pkg/app 签名链完整(Developer ID → G2 → Apple Root CA,带可信时间戳)。
- 节点 dashboard / 安装向导文案中和。
- 含 0.5.4 fleet 更新(productsign、balance_usd 数据模型、node-dashboard/tracker 等)。
未公证(沿用现状):首次打开走右键打开 / 系统设置「仍要打开」。
Flatkey Node 0.5.4
Fix dashboard account rebind against dynamic node ports
Flatkey Node v0.5.3 — 删 preview-mode 假授权,改为 'bridge 未就绪' 真错误
v0.5.3 · 关键 UX 修复
Root cause
在 macOS Tahoe 26.4.1(可能其他 macOS 也有)上,.app 内 WKWebView 加载 file://app-ui.html 时,window.webkit.messageHandlers.flatkey 桥没注入到 JS 上下文(Swift 端 binary 已注册,只是 JS 拿不到引用)。
旧逻辑(v0.5.0 - v0.5.2):桥找不到就走"预览模式假装授权完成",导致用户以为绑成功了,实际没绑 → 节点本机 sub2api accounts=0 → NAS 调度到该节点 503。
Fix
- 删
connectAi()/submitOauthCode()的 preview-mode fallback - 桥不存在 → 直接报错 "桥未就绪 · 重启 .app",引导用户退出菜单栏 ⬡ → 重启 .app(重启后 announce.env 存在 → 走 activated=true → 直接加载 dashboard 而非 file:// onboarding,绕过 Tahoe bridge 问题)
v0.5.2 vs v0.5.3
v0.5.2 是内测 unsigned 版,仅自动更新通道用。v0.5.3 是正式版本,推荐 install.sh 默认指向。
Flatkey Node v0.5.2 — MacBook 节点支持 (bootstrap 自动登录从 die 改 warn)
v0.5.2 · 内测版
修复:bootstrap.sh 把"自动登录未开"从 hard die 改成 warn,允许 MacBook 当节点(笔记本场景合理,断电后需手动登录一次,但脚本可继续装 brew/colima/docker)。
同样规则也适用 FileVault 检查 → 现在是 warn 而非 die。
触发场景:shilong (slzhongdemacbook-pro) v0.5.0 装机失败,bootstrap.sh:120 hard fail 终止 → brew/colima/docker 全没装 → 节点永远 OFFLINE。本版本修复后 MacBook 笔记本可正常 onboard。
自动更新:已有 v0.5.0+ 客户端会通过 Sparkle 自动拉这个版本(SUAutomaticallyUpdate=true)。
Flatkey Node v0.5.1
Fix new-node onboarding when installer precreates ~/flatkey-node/.env with tenant/deploy token. Includes NAS fleet register script in bundle and health checks the selected NODE_PORT.