codex-weixin 0.2.8 → 0.3.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  All notable changes to `codex-weixin` are documented in this file.
4
4
 
5
+ ## [0.3.0] - 2026-07-16
6
+
7
+ ### Fixed
8
+
9
+ - Fixed Windows npm self-updates failing with `EBUSY` when the service process used the active `node_modules/codex-weixin` directory as its working directory.
10
+ - Moved the parent service cwd out of the package tree before installation and started npm from the owning runtime prefix, allowing Windows to rename and replace the package.
11
+ - Converted unsigned Windows process exit codes such as `4294963214` back to signed libuv values and reported this case as `-4082 / EBUSY`.
12
+
13
+ ## [0.2.9] - 2026-07-15
14
+
15
+ ### Changed
16
+
17
+ - Replaced the update dialog arrow with a quiet vertical divider between the current and latest versions.
18
+ - Changed Web updates to install into the npm prefix that owns the running `codex-weixin` package instead of always installing globally.
19
+
20
+ ### Fixed
21
+
22
+ - Fixed Windows and other isolated local runtimes restarting the old package after npm had successfully updated an unrelated global copy.
23
+ - Verified the installed package version and server entry point before stopping the old service, preventing false successful-update responses.
24
+ - Rejected Web installation from source checkouts with an actionable message instead of mutating or restarting the wrong installation.
25
+
26
+ ### Upgrade Note
27
+
28
+ - Users already running 0.2.8 or earlier from an isolated local runtime must update that runtime to 0.2.9 once manually; subsequent Web updates will target the correct runtime automatically.
29
+
5
30
  ## [0.2.8] - 2026-07-15
6
31
 
7
32
  ### Added
@@ -110,6 +135,8 @@ All notable changes to `codex-weixin` are documented in this file.
110
135
  - Kept GPT-5.6 options available after selecting a different model.
111
136
  - Removed extra message spacing and hid internal WeChat and Codex routing identifiers from the normal UI.
112
137
 
138
+ [0.3.0]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.3.0
139
+ [0.2.9]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.9
113
140
  [0.2.8]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.8
114
141
  [0.2.7]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.7
115
142
  [0.2.6]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.6
package/README.en.md CHANGED
@@ -38,7 +38,7 @@ Screenshots live under `docs/images/screenshots/`. The Web management screenshot
38
38
  | ✅ | Process progress | Enabled by default; Codex progress reaches WeChat immediately and appears in a collapsible Web timeline with elapsed time, while final answers stay intact. | Pending: `docs/images/screenshots/web-process-progress.png` |
39
39
  | ✅ | Typing state and deduplication | Web typing state plus persistent sync cursors and message IDs prevent duplicate replies. | Pending: `docs/images/screenshots/wechat-typing.png` |
40
40
  | ✅ | App-server first | New and resumed sessions prefer Codex app-server V2 and fall back to `codex exec` when unavailable. | Pending: `docs/images/screenshots/wechat-status.png` |
41
- | ✅ | Web auto-update | Automatically selects npm or npmmirror, supports automatic and manual checks in Settings, then installs, restarts, and reconnects. | Pending: `docs/images/screenshots/web-auto-update.png` |
41
+ | ✅ | Web auto-update | Selects npm or npmmirror, updates the active npm runtime, verifies it, then restarts and reconnects. | Pending: `docs/images/screenshots/web-auto-update.png` |
42
42
 
43
43
  ## Web management preview
44
44
 
@@ -207,4 +207,6 @@ npm run build
207
207
 
208
208
  The project is a clean-room independent implementation under the MIT License. Its iLink integration shape references `Tencent/openclaw-weixin`, along with public Codex/WeChat projects for app-server, media-transfer, and security-boundary practices. No AGPL source code was copied.
209
209
 
210
+ When started from a source checkout with `npm run dev` or `npm start`, the Web page checks for updates but does not install them; update the Git checkout and rebuild instead. Global installations and isolated `node_modules/codex-weixin` runtimes update the npm prefix that owns the active package and verify the target version and service entry before restarting. On Windows, the updater first releases any process working-directory lock inside the package tree so npm can replace it without `EBUSY`.
211
+
210
212
  See [CHANGELOG.md](./CHANGELOG.md) for release history.
package/README.md CHANGED
@@ -40,7 +40,7 @@
40
40
  | ✅ | 过程进度 | 默认开启;Codex 处理过程实时发送到微信,并在 Web 中折叠显示处理用时,最终答案保持完整。 | 待补:`docs/images/screenshots/web-process-progress.png` |
41
41
  | ✅ | 输入状态与去重 | Web 显示“对方正在输入…”,并持久记录同步游标和消息 ID,防止重复回复。 | 待补:`docs/images/screenshots/wechat-typing.png` |
42
42
  | ✅ | App-server 优先 | 新旧会话优先使用 Codex app-server V2;不可用时自动回退到 `codex exec`。 | 待补:`docs/images/screenshots/wechat-status.png` |
43
- | ✅ | Web 自动更新 | 后台自动选择 npm 官方源或 npmmirror;支持自动检查和设置页手动检查,并可安装、重启和恢复连接。 | 待补:`docs/images/screenshots/web-auto-update.png` |
43
+ | ✅ | Web 自动更新 | 自动选择 npm 官方源或 npmmirror,更新当前实际运行的 npm runtime,校验后重启并恢复连接。 | 待补:`docs/images/screenshots/web-auto-update.png` |
44
44
 
45
45
  ## Web 管理页预览
46
46
 
@@ -215,6 +215,8 @@ npm run build
215
215
 
216
216
  开发入口同样只启动本机 Web 服务。浏览器页面、JSON API、多账号运行时、扫码状态机和受管会话都有自动化测试。
217
217
 
218
+ 源码目录通过 `npm run dev` 或 `npm start` 启动时,Web 只检查新版本,不会自动安装;请通过 Git 更新源码后重新构建。全局安装和独立 `node_modules/codex-weixin` runtime 会更新当前实际运行的 npm prefix,并在重启前验证目标版本和服务入口。Windows 更新前会自动释放服务进程对包目录的工作目录占用,避免 npm 因 `EBUSY` 无法替换文件。
219
+
218
220
  ## 参考与许可
219
221
 
220
222
  项目是独立实现,微信 iLink 接入形态参考 `Tencent/openclaw-weixin`,并参考了公开的 Codex/微信桥接项目在 Codex app-server、媒体传输和安全边界方面的实践。项目未复制 AGPL 项目源码,使用 MIT License。
@@ -26,6 +26,10 @@ export type UpdateManagerOptions = {
26
26
  now?: () => number;
27
27
  cacheTtlMs?: number;
28
28
  checkTimeoutMs?: number;
29
+ packageRoot?: string;
30
+ platform?: NodeJS.Platform;
31
+ env?: NodeJS.ProcessEnv;
32
+ nodePath?: string;
29
33
  };
30
34
  export declare class UpdateManager implements UpdateService {
31
35
  private readonly options;
@@ -44,8 +48,21 @@ export declare class UpdateManager implements UpdateService {
44
48
  private fetchLatestFromRegistry;
45
49
  }
46
50
  export declare function isNewerVersion(currentVersion: string, candidateVersion: string): boolean;
47
- export declare function buildNpmInstallCommand(version: string, registry: UpdateRegistryId, platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv, nodePath?: string): {
51
+ export declare function buildNpmInstallCommand(version: string, registry: UpdateRegistryId, options: {
52
+ installPrefix: string;
53
+ platform?: NodeJS.Platform;
54
+ env?: NodeJS.ProcessEnv;
55
+ nodePath?: string;
56
+ }): {
48
57
  command: string;
49
58
  args: string[];
50
59
  };
60
+ export declare function resolveNpmInstallPrefix(packageRoot: string, platform?: NodeJS.Platform): string | undefined;
61
+ export declare function releaseRuntimeDirectoryLock(installPrefix: string, options?: {
62
+ currentWorkingDirectory?: string;
63
+ platform?: NodeJS.Platform;
64
+ chdir?: (directory: string) => void;
65
+ }): boolean;
66
+ export declare function normalizeProcessExitCode(code: number | null, platform?: NodeJS.Platform): number | null;
67
+ export declare function describeInstallFailure(code: number | null, output: string, platform: NodeJS.Platform): string;
51
68
  export {};
@@ -1,4 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
2
5
  const UPDATE_REGISTRY_URLS = {
3
6
  official: "https://registry.npmjs.org",
4
7
  npmmirror: "https://registry.npmmirror.com"
@@ -7,6 +10,7 @@ const UPDATE_REGISTRY_IDS = Object.keys(UPDATE_REGISTRY_URLS);
7
10
  const MAX_REGISTRY_RESPONSE_BYTES = 64 * 1024;
8
11
  const MAX_INSTALL_OUTPUT_BYTES = 20 * 1024;
9
12
  const STABLE_VERSION_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
13
+ const CURRENT_PACKAGE_ROOT = fileURLToPath(new URL("../../", import.meta.url));
10
14
  export class UpdateManager {
11
15
  options;
12
16
  fetchImpl;
@@ -20,7 +24,14 @@ export class UpdateManager {
20
24
  constructor(options) {
21
25
  this.options = options;
22
26
  this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
23
- this.installImpl = options.install ?? installGlobalVersion;
27
+ const platform = options.platform ?? process.platform;
28
+ const installPrefix = resolveNpmInstallPrefix(options.packageRoot ?? CURRENT_PACKAGE_ROOT, platform);
29
+ this.installImpl = options.install ?? ((version, registry) => installCurrentRuntimeVersion(version, registry, {
30
+ installPrefix,
31
+ platform,
32
+ env: options.env ?? process.env,
33
+ nodePath: options.nodePath ?? process.execPath
34
+ }));
24
35
  this.now = options.now ?? (() => Date.now());
25
36
  this.cacheTtlMs = options.cacheTtlMs ?? 30 * 60 * 1000;
26
37
  this.checkTimeoutMs = options.checkTimeoutMs ?? 5_000;
@@ -137,12 +148,19 @@ export function isNewerVersion(currentVersion, candidateVersion) {
137
148
  }
138
149
  return false;
139
150
  }
140
- export function buildNpmInstallCommand(version, registry, platform = process.platform, env = process.env, nodePath = process.execPath) {
151
+ export function buildNpmInstallCommand(version, registry, options) {
141
152
  const safeVersion = requireStableVersion(version);
142
153
  const safeRegistry = requireRegistryId(registry);
154
+ const platform = options.platform ?? process.platform;
155
+ const env = options.env ?? process.env;
156
+ const nodePath = options.nodePath ?? process.execPath;
157
+ const installPrefix = requireInstallPrefix(options.installPrefix, platform);
143
158
  const installArgs = [
144
159
  "install",
145
- "--global",
160
+ "--prefix",
161
+ installPrefix,
162
+ "--no-save",
163
+ "--package-lock=false",
146
164
  `codex-weixin@${safeVersion}`,
147
165
  `--registry=${UPDATE_REGISTRY_URLS[safeRegistry]}`,
148
166
  "--no-audit",
@@ -160,11 +178,55 @@ export function buildNpmInstallCommand(version, registry, platform = process.pla
160
178
  }
161
179
  return { command: "npm", args: installArgs };
162
180
  }
163
- async function installGlobalVersion(version, registry) {
164
- const command = buildNpmInstallCommand(version, registry);
181
+ export function resolveNpmInstallPrefix(packageRoot, platform = process.platform) {
182
+ const pathApi = platform === "win32" ? path.win32 : path.posix;
183
+ if (!pathApi.isAbsolute(packageRoot))
184
+ return undefined;
185
+ const normalizedRoot = pathApi.resolve(packageRoot);
186
+ if (pathApi.basename(normalizedRoot).toLowerCase() !== "codex-weixin")
187
+ return undefined;
188
+ const nodeModulesDir = pathApi.dirname(normalizedRoot);
189
+ if (pathApi.basename(nodeModulesDir).toLowerCase() !== "node_modules")
190
+ return undefined;
191
+ return pathApi.dirname(nodeModulesDir);
192
+ }
193
+ export function releaseRuntimeDirectoryLock(installPrefix, options = {}) {
194
+ const platform = options.platform ?? process.platform;
195
+ const pathApi = platform === "win32" ? path.win32 : path.posix;
196
+ const safePrefix = requireInstallPrefix(installPrefix, platform);
197
+ const comparablePrefix = resolveComparablePath(safePrefix, platform, pathApi);
198
+ const currentWorkingDirectory = resolveComparablePath(options.currentWorkingDirectory ?? process.cwd(), platform, pathApi);
199
+ const packageRoot = pathApi.join(comparablePrefix, "node_modules", "codex-weixin");
200
+ const relative = pathApi.relative(packageRoot, currentWorkingDirectory);
201
+ const insidePackage = relative === ""
202
+ || (relative !== ".." && !relative.startsWith(`..${pathApi.sep}`) && !pathApi.isAbsolute(relative));
203
+ if (!insidePackage)
204
+ return false;
205
+ (options.chdir ?? process.chdir)(safePrefix);
206
+ return true;
207
+ }
208
+ export function normalizeProcessExitCode(code, platform = process.platform) {
209
+ if (code === null)
210
+ return null;
211
+ return platform === "win32" && code > 0x7fff_ffff
212
+ ? code - 0x1_0000_0000
213
+ : code;
214
+ }
215
+ async function installCurrentRuntimeVersion(version, registry, options) {
216
+ if (!options.installPrefix) {
217
+ throw new Error("源码运行方式不支持网页自动安装,请更新 Git 源码、执行 npm install 和 npm run build 后重启");
218
+ }
219
+ releaseRuntimeDirectoryLock(options.installPrefix, { platform: options.platform });
220
+ const command = buildNpmInstallCommand(version, registry, {
221
+ installPrefix: options.installPrefix,
222
+ platform: options.platform,
223
+ env: options.env,
224
+ nodePath: options.nodePath
225
+ });
165
226
  await new Promise((resolve, reject) => {
166
227
  const child = spawn(command.command, command.args, {
167
- env: process.env,
228
+ cwd: options.installPrefix,
229
+ env: options.env,
168
230
  shell: false,
169
231
  stdio: ["ignore", "pipe", "pipe"],
170
232
  windowsHide: true
@@ -194,16 +256,42 @@ async function installGlobalVersion(version, registry) {
194
256
  return;
195
257
  settled = true;
196
258
  if (code === 0) {
197
- resolve();
259
+ try {
260
+ verifyInstalledRuntime(options.installPrefix, version);
261
+ resolve();
262
+ }
263
+ catch (error) {
264
+ reject(error);
265
+ }
198
266
  return;
199
267
  }
200
- const permissionHint = /EACCES|EPERM|permission/i.test(output)
201
- ? " npm does not have permission to update the global package."
202
- : "";
203
- reject(new Error(`npm update failed with exit code ${code ?? "unknown"}.${permissionHint}`));
268
+ reject(new Error(describeInstallFailure(code, output, options.platform)));
204
269
  }));
205
270
  });
206
271
  }
272
+ export function describeInstallFailure(code, output, platform) {
273
+ const normalizedCode = normalizeProcessExitCode(code, platform);
274
+ if (/EBUSY|resource busy/i.test(output) || (platform === "win32" && normalizedCode === -4082)) {
275
+ return `npm 更新失败:运行目录正被占用(EBUSY,退出码 ${normalizedCode ?? "unknown"})`;
276
+ }
277
+ const permissionHint = /EACCES|EPERM|permission/i.test(output)
278
+ ? " npm does not have permission to update the current codex-weixin runtime."
279
+ : "";
280
+ return `npm update failed with exit code ${normalizedCode ?? "unknown"}.${permissionHint}`;
281
+ }
282
+ function verifyInstalledRuntime(installPrefix, version) {
283
+ const packageRoot = path.join(installPrefix, "node_modules", "codex-weixin");
284
+ const packageJsonPath = path.join(packageRoot, "package.json");
285
+ const entryPath = path.join(packageRoot, "dist", "server", "index.js");
286
+ try {
287
+ const value = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
288
+ if (value.version !== version || !fs.existsSync(entryPath))
289
+ throw new Error("version mismatch");
290
+ }
291
+ catch {
292
+ throw new Error("npm completed, but the active codex-weixin runtime was not updated");
293
+ }
294
+ }
207
295
  function finishInstall(child, timer, finish) {
208
296
  clearTimeout(timer);
209
297
  child.stdout.removeAllListeners("data");
@@ -223,6 +311,24 @@ function requireRegistryId(value) {
223
311
  return value;
224
312
  throw new Error("Invalid npm Registry");
225
313
  }
314
+ function requireInstallPrefix(value, platform) {
315
+ const pathApi = platform === "win32" ? path.win32 : path.posix;
316
+ if (typeof value !== "string" || !pathApi.isAbsolute(value)) {
317
+ throw new Error("Invalid npm install prefix");
318
+ }
319
+ return pathApi.resolve(value);
320
+ }
321
+ function resolveComparablePath(value, platform, pathApi) {
322
+ const resolved = pathApi.resolve(value);
323
+ if (platform !== process.platform)
324
+ return resolved;
325
+ try {
326
+ return fs.realpathSync.native(resolved);
327
+ }
328
+ catch {
329
+ return resolved;
330
+ }
331
+ }
226
332
  function parseStableVersion(value) {
227
333
  const version = requireStableVersion(value);
228
334
  return version.split(".").map(Number);
@@ -1 +1 @@
1
- {"version":3,"file":"update-manager.js","sourceRoot":"","sources":["../../src/server/update-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-manager.js","sourceRoot":"","sources":["../../src/server/update-manager.ts"],"names":[],"mappings":"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"}
@@ -235,7 +235,7 @@
235
235
  <div class="modal-body update-modal-body">
236
236
  <div class="update-version-flow" aria-label="版本升级">
237
237
  <span class="update-version-item"><small>当前版本</small><strong id="updateCurrentVersion">--</strong></span>
238
- <span class="update-version-arrow" aria-hidden="true"><i data-lucide="arrow-right"></i></span>
238
+ <span class="update-version-divider" aria-hidden="true"></span>
239
239
  <span class="update-version-item is-latest"><small>最新版本</small><strong id="updateLatestVersion">--</strong></span>
240
240
  </div>
241
241
  <p class="update-description">更新期间微信连接会短暂中断,完成后服务将自动重启并恢复连接。</p>
@@ -296,13 +296,11 @@ input:focus, select:focus, textarea:focus { border-color: var(--focus); outline:
296
296
  .update-modal-icon { width: 42px; height: 42px; flex: 0 0 42px; border-radius: var(--radius); color: var(--green-dark); background: var(--green-soft); display: grid; place-items: center; }
297
297
  .update-modal-icon svg { width: 21px; height: 21px; }
298
298
  .update-modal-body { display: grid; gap: 17px; }
299
- .update-version-flow { min-height: 86px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--canvas); display: grid; grid-template-columns: minmax(0, 1fr) 54px minmax(0, 1fr); align-items: center; gap: 12px; }
299
+ .update-version-flow { min-height: 86px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--canvas); display: grid; grid-template-columns: minmax(0, 1fr) 1px minmax(0, 1fr); align-items: center; gap: 22px; }
300
300
  .update-version-item { min-width: 0; }
301
301
  .update-version-flow small { margin-bottom: 5px; color: var(--ink-soft); font-size: 9px; font-weight: 750; display: block; }
302
302
  .update-version-flow strong { overflow: hidden; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; display: block; }
303
- .update-version-arrow { width: 100%; color: #7e8b84; display: flex; align-items: center; gap: 5px; }
304
- .update-version-arrow::before { content: ""; height: 1px; flex: 1; background: #c5cec9; }
305
- .update-version-arrow svg { width: 15px; height: 15px; flex: 0 0 15px; stroke-width: 1.8; }
303
+ .update-version-divider { width: 1px; height: 38px; background: #c8d0cb; }
306
304
  .update-version-flow .is-latest { text-align: right; }
307
305
  .update-version-flow .is-latest strong { color: var(--green-dark); }
308
306
  .update-description { margin: 0; color: var(--ink-soft); font-size: 11px; line-height: 1.65; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-weixin",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "description": "Local multi-account WeChat server for OpenAI Codex.",
5
5
  "license": "MIT",
6
6
  "author": "Xuechao Zou",