Add WhatsApp session bind/unbind to Admin Runtime, and fix related Admin JS errors.

Expose sidecar status, start/stop, QR bind, and unbind so 405 session failures are visible instead of a stuck connecting state.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-17 22:23:35 +08:00
parent 1bdbfc3b85
commit 5c6833612f
16 changed files with 1123 additions and 72 deletions

View file

@ -782,6 +782,30 @@ export default {
"wa.specialist": "Specialist",
"wa.testPush": "Test push",
"wa.whitelistMode": "Whitelist mode (allow by default)",
"wa.sessionTitle": "WhatsApp device session",
"wa.sessionHint": "Show online status; scan to bind or clear the local WhatsApp Web session.",
"wa.sessionRefresh": "Refresh",
"wa.sessionStart": "Start sidecar",
"wa.sessionStop": "Stop sidecar",
"wa.sessionBind": "Scan to bind",
"wa.sessionRebind": "Re-scan bind",
"wa.sessionUnbind": "Unbind device",
"wa.sessionUnbindConfirm": "Stop sidecar and delete local WhatsApp auth (state/auth). You must scan again to rebind. Continue?",
"wa.sessionRebindConfirm": "Clear the old session and show a new QR code. Continue?",
"wa.sessionNotInstalled": "Sidecar not installed. Run whatsapp_install.ps1 first.",
"wa.sessionScanHint": "On your phone: WhatsApp → Linked devices → Link a device, then scan the QR below.",
"wa.sessionQrWaiting": "Waiting for QR…",
"wa.sessionQrStale": "QR may be expired. Click Scan to bind again.",
"wa.lifecycle.unbound": "Not bound",
"wa.lifecycle.bound_stopped": "Bound (sidecar stopped)",
"wa.lifecycle.bound_offline": "Bound (offline / reconnecting)",
"wa.lifecycle.online": "Online",
"wa.lifecycle.awaiting_scan": "Awaiting scan",
"wa.lifecycle.logged_out": "Logged out (rebind required)",
"wa.lifecycle.connecting": "Connecting",
"wa.lifecycle.needs_rebind": "Session invalid (re-scan required)",
"wa.sessionPolling": "Refreshing status…",
"wa.sessionNeedsRebind": "WhatsApp rejected the stored session (e.g. disconnect=405). Click Re-scan bind, or remove the old oclaw linked device on your phone first.",
"wecom.autoBind": "Auto bind on first message",
"wecom.autoBindRole": "Auto bind role",
"wecom.autoBindTenant": "Auto bind team",

View file

@ -782,6 +782,30 @@ export default {
"wa.specialist": "专家",
"wa.testPush": "测试推送",
"wa.whitelistMode": "白名单模式(默认放行,黑名单拒绝)",
"wa.sessionTitle": "WhatsApp 设备会话",
"wa.sessionHint": "查看在线状态,扫码绑定或解绑本机 WhatsApp Web 登录态。",
"wa.sessionRefresh": "刷新状态",
"wa.sessionStart": "启动 sidecar",
"wa.sessionStop": "停止 sidecar",
"wa.sessionBind": "扫码绑定",
"wa.sessionRebind": "重新扫码绑定",
"wa.sessionUnbind": "解绑设备",
"wa.sessionUnbindConfirm": "将停止 sidecar 并删除本机 WhatsApp 登录态(state/auth)。之后需重新扫码绑定,确认继续?",
"wa.sessionRebindConfirm": "将清除旧登录态并重新出二维码,确认继续?",
"wa.sessionNotInstalled": "sidecar 未安装,请先运行 whatsapp_install.ps1",
"wa.sessionScanHint": "请用手机 WhatsApp → 已关联的设备 → 关联设备,扫描下方二维码。",
"wa.sessionQrWaiting": "等待二维码…",
"wa.sessionQrStale": "二维码可能已过期,请点「扫码绑定」刷新。",
"wa.lifecycle.unbound": "未绑定",
"wa.lifecycle.bound_stopped": "已绑定(sidecar 已停)",
"wa.lifecycle.bound_offline": "已绑定(离线重连中)",
"wa.lifecycle.online": "在线",
"wa.lifecycle.awaiting_scan": "待扫码",
"wa.lifecycle.logged_out": "已登出(需重新绑定)",
"wa.lifecycle.connecting": "连接中",
"wa.lifecycle.needs_rebind": "登录态失效(需重新扫码)",
"wa.sessionPolling": "正在刷新状态…",
"wa.sessionNeedsRebind": "WhatsApp 拒绝了当前登录态(disconnect=405 等)。请点「重新扫码绑定」,或在手机端删除旧的 oclaw 关联设备后再扫。",
"wecom.autoBind": "首条消息自动绑定",
"wecom.autoBindRole": "自动绑定角色",
"wecom.autoBindTenant": "自动绑定团队",