workbuddy-switch 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -1,9 +1,9 @@
1
- # wb-switch
1
+ # workbuddy-switch
2
2
 
3
3
  WorkBuddy(腾讯 AI 编程助手)账号切换工具。两种形态:
4
4
 
5
5
  - **桌面 App**:下载 `.app` 双击运行(Tauri,推荐日常使用)
6
- - **npm / webui**:`npm i -g workbuddy-switch` 后运行 `wb-switch`,浏览器打开操作界面
6
+ - **npm / webui**:`npm i -g workbuddy-switch` 后运行 `workbuddy-switch`,浏览器打开操作界面
7
7
 
8
8
  多账号共享登录态(`workbuddy-desktop.info`),一键切换 WorkBuddy 登录账号,并支持将当前账号的会话复制给目标账号(云端归属目标)。
9
9
 
@@ -13,8 +13,8 @@ WorkBuddy(腾讯 AI 编程助手)账号切换工具。两种形态:
13
13
 
14
14
  ```bash
15
15
  npm i -g workbuddy-switch
16
- wb-switch # 启动本地服务 + 自动打开浏览器
17
- wb-switch status # 终端查看当前账号
16
+ workbuddy-switch # 启动本地服务 + 自动打开浏览器
17
+ workbuddy-switch status # 终端查看当前账号
18
18
  ```
19
19
 
20
20
  webui 界面与桌面 App 一致:账号管理、切换、会话复制、自动签到、token 保活、更新检查。
@@ -47,52 +47,11 @@ webui 界面与桌面 App 一致:账号管理、切换、会话复制、自动
47
47
  切换账号需要写入 WorkBuddy 认证文件,macOS 要求授权「App 管理」(或「完全磁盘访问」):
48
48
 
49
49
  1. 首次切换报「无权限」时,点「打开系统设置」
50
- 2. 优先在 **App 管理** 里打开 wb-switch 开关;若没有,则去 **完全磁盘访问** 把 wb-switch 拖进带箭头的框
50
+ 2. 优先在 **App 管理** 里打开 workbuddy-switch 开关;若没有,则去 **完全磁盘访问** 把 workbuddy-switch 拖进带箭头的框
51
51
  3. 授权后重启本应用生效;设置页「权限检测」可随时验证
52
52
 
53
53
  > webui 模式:由启动服务的终端进程权限决定;若终端已授权完全磁盘访问则无需额外操作。
54
54
 
55
- ## 开发
56
-
57
- 环境要求:Node.js ≥ 20、Rust stable、macOS(或 Windows/Linux)。
58
-
59
- ```bash
60
- npm install
61
- npm run tauri dev # 开发模式
62
- npm run build:app # 构建 debug .app(含前端资源补丁)
63
- npm run build:app:release # 构建 release .app + 签名更新包
64
- ```
65
-
66
- 签名密钥(自动更新用)存放于 `~/.wb-switch/wb-switch-updater.key`,构建脚本通过
67
- `TAURI_SIGNING_PRIVATE_KEY` 注入。发布新版本时:
68
-
69
- 1. `npm run build:app:release` 生成 `.app.tar.gz` + `.sig`
70
- 2. `sh scripts/gen-update-json.sh <owner> <repo>` 生成 `latest-macos-aarch64.json`
71
- 3. 将 `.app.tar.gz`、`.sig`、`latest-*.json` 一并上传到 GitHub Release
72
-
73
- ## 目录结构
74
-
75
- ```
76
- src-tauri/
77
- src/
78
- commands.rs # Tauri command 薄包装(对应 Python 版 HTTP API)
79
- modules/
80
- account.rs # 账号库 ~/.wb-switch/accounts.json
81
- auth_file.rs # workbuddy-desktop.info 读写/备份
82
- oauth.rs # OAuth 登录
83
- process.rs # WorkBuddy 进程控制
84
- switch.rs # 切换流程(备份→关→复制会话→写认证→启动)
85
- session.rs # 会话列表 / 复制
86
- checkin.rs # 签到
87
- refresh.rs # token 刷新/保活
88
- update.rs # 更新检查
89
- config.rs # 常量/路径/工具
90
- src/
91
- components/ # React 组件
92
- pages/ # 账号页/设置页
93
- lib/ # API 封装/类型
94
- ```
95
-
96
55
  ## 许可
97
56
 
98
57
  [MIT](./LICENSE)
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "workbuddy-switch",
3
- "version": "0.1.1",
4
- "description": "WorkBuddy 账号切换工具:本地 webui(浏览器操作)+ 桌面 App(安装后运行 wb-switch)",
3
+ "version": "0.1.3",
4
+ "description": "WorkBuddy 账号切换工具:本地 webui(浏览器操作)+ 桌面 App(安装后运行 workbuddy-switch)",
5
5
  "bin": {
6
6
  "workbuddy-switch": "bin/workbuddy-switch.js"
7
7
  },
8
8
  "files": [
9
- "bin",
9
+ "bin/workbuddy-switch.js",
10
10
  "scripts"
11
11
  ],
12
12
  "scripts": {
@@ -1,6 +1,6 @@
1
- // 下载源:GitHub Releases(changexbc/wb-switch-rust),可用环境变量覆盖:
1
+ // 下载源:GitHub Releases(changexbc/workbuddy-switch),可用环境变量覆盖:
2
2
  // WB_SWITCH_BINARY=<本地二进制路径> 本地开发/离线安装(直接复制,不联网)
3
- // WB_SWITCH_DOWNLOAD_BASE=<URL 前缀> 自定义下载源(默认 GitHub latest release
3
+ // WB_SWITCH_DOWNLOAD_BASE=<URL 前缀> 自定义下载源(默认 GitHub 带版本号的 release 资产)
4
4
  const fs = require("fs");
5
5
  const path = require("path");
6
6
  const os = require("os");
@@ -9,6 +9,11 @@ const https = require("https");
9
9
  const OWNER = "changexbc"; // 发布二进制到 Release 的 GitHub 仓库
10
10
  const REPO = "workbuddy-switch";
11
11
 
12
+ // 版本号从 package.json 读,下载地址用「带 tag」而非 latest,
13
+ // 避免 GitHub CDN 对同名资产 latest 重定向的缓存污染(曾出现下载到旧二进制)。
14
+ const PKG = require(path.join(__dirname, "..", "package.json"));
15
+ const VERSION = PKG.version;
16
+
12
17
  const FILE = {
13
18
  "darwin-arm64": "wb-switch-darwin-arm64",
14
19
  "darwin-x64": "wb-switch-darwin-x64",
@@ -60,7 +65,13 @@ function download(url) {
60
65
  file.on("finish", () => {
61
66
  file.close();
62
67
  if (process.platform !== "win32") fs.chmodSync(target, 0o755);
63
- console.log(`wb-switch: 二进制就绪 ${target}`);
68
+ // 校验:可执行文件应至少 1MB(防 CDN 缓存/截断导致下载到损坏或旧文件)
69
+ const size = fs.statSync(target).size;
70
+ if (size < 1 * 1024 * 1024) {
71
+ fs.unlinkSync(target);
72
+ return fail(`下载文件异常(仅 ${size} 字节),请重试或设置 WB_SWITCH_BINARY`);
73
+ }
74
+ console.log(`wb-switch: 二进制就绪 → ${target} (${(size / 1048576).toFixed(1)}MB)`);
64
75
  });
65
76
  })
66
77
  .on("error", (e) => {
@@ -84,10 +95,10 @@ async function main() {
84
95
  return;
85
96
  }
86
97
 
87
- // 3) 从 GitHub Releases 下载
98
+ // 3) 从 GitHub Releases 下载(带版本号,避免 latest CDN 缓存)
88
99
  const base =
89
100
  process.env.WB_SWITCH_DOWNLOAD_BASE ||
90
- `https://github.com/${OWNER}/${REPO}/releases/latest/download`;
101
+ `https://github.com/${OWNER}/${REPO}/releases/download/v${VERSION}`;
91
102
  download(`${base}/${FILE}`);
92
103
  }
93
104
 
Binary file