Skip to content

Releases: SolveaCX/flatkey-node-release

Flatkey Node 0.5.10

Choose a tag to compare

@wyang-afk wyang-afk released this 30 Jun 00:22

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

Choose a tag to compare

@wyang-afk wyang-afk released this 26 Jun 20:17

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

Choose a tag to compare

@wyang-afk wyang-afk released this 18 Jun 23:59

改进 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

Choose a tag to compare

@wyang-afk wyang-afk released this 18 Jun 23:34

修复

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_exchangesaved.get("state", "") 永远返空。

修复

generate_auth_urljson.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

Choose a tag to compare

@wyang-afk wyang-afk released this 11 Jun 23:07

修复

  • 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

Choose a tag to compare

@jjcc123312 jjcc123312 released this 29 May 11:48

修复版:

  • 更换 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

Choose a tag to compare

@mguozhen mguozhen released this 26 May 13:27

Fix dashboard account rebind against dynamic node ports

Flatkey Node v0.5.3 — 删 preview-mode 假授权,改为 'bridge 未就绪' 真错误

Choose a tag to compare

@mguozhen mguozhen released this 23 May 03:01

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)

Choose a tag to compare

@mguozhen mguozhen released this 23 May 00:27

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

Choose a tag to compare

@mguozhen mguozhen released this 22 May 07:09

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.