diff --git a/AgentCheckin/app/www/assets/app.js b/AgentCheckin/app/www/assets/app.js
index cad6e1c..2d41d62 100644
--- a/AgentCheckin/app/www/assets/app.js
+++ b/AgentCheckin/app/www/assets/app.js
@@ -210,7 +210,8 @@
'
' +
'' +
(a.platform === "qoder" ? '' +
- '' : "") +
+ '' +
+ '' : "") +
'" +
'' +
" | ";
@@ -240,6 +241,25 @@
.catch(function (e) { toast(e.message, "err"); })
.finally(function () { btn.disabled = false; btn.textContent = "修复站点"; });
}
+ else if (act === "importdev") {
+ var raw = prompt("把 Qoder 桌面客户端机器上 runtime-info 输出的那一行 JSON 粘进来\n(需含 machineToken / machineCode / machineType):");
+ if (!raw) return;
+ var obj = null;
+ try { obj = JSON.parse(raw.trim()); } catch (e) {
+ var m = raw.match(/\{[\s\S]*\}/);
+ if (m) { try { obj = JSON.parse(m[0]); } catch (e2) { obj = null; } }
+ }
+ if (!obj || !obj.machineToken || !obj.machineCode || !obj.machineType) {
+ toast("解析失败:需要包含 machineToken / machineCode / machineType", "err");
+ return;
+ }
+ btn.disabled = true; btn.textContent = "导入中…";
+ api("POST", "/qoder/import_device", { id: id, machineToken: obj.machineToken,
+ machineCode: obj.machineCode, machineType: obj.machineType })
+ .then(function (d) { toast(d.message || "已导入设备身份", "ok"); })
+ .catch(function (e) { toast(e.message, "err"); })
+ .finally(function () { btn.disabled = false; btn.textContent = "导入设备身份"; });
+ }
else if (act === "toggle") {
var acc = state.accounts.find(function (x) { return x.id === id; });
api("POST", "/accounts/update", { id: id, enabled: !acc.enabled })
diff --git a/AgentCheckin/manifest b/AgentCheckin/manifest
index 198a1d1..8c4e752 100644
--- a/AgentCheckin/manifest
+++ b/AgentCheckin/manifest
@@ -1,5 +1,5 @@
appname = AgentCheckin
-version = 1.4.1
+version = 1.4.2
display_name = Agent 签到助手
desc = AI 编程工具每日积分自动签到:TRAE(字节跳动)、WorkBuddy / CodeBuddy(腾讯)、Qoder(国内版 + 国际版每日 100 Credits)。多账号管理、多时段自动补签、积分看板、签到日志、Webhook 通知,数据全部保存在 NAS 本地。
platform = all
diff --git a/fnos-install.js b/fnos-install.js
index f6f0539..35904a0 100644
--- a/fnos-install.js
+++ b/fnos-install.js
@@ -27,7 +27,7 @@ const BASE = `https://${HOST}:${PORT}`;
const USER = process.env.FNOS_USER;
const PASS = process.env.FNOS_PASS;
const APPNAME = "AgentCheckin";
-const VERSION = "1.4.1";
+const VERSION = "1.4.2";
const FPK = process.argv[2] ||
path.join(__dirname, "AgentCheckin", "AgentCheckin.fpk");