codex-weixin 0.2.8 → 0.2.9

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,23 @@
2
2
 
3
3
  All notable changes to `codex-weixin` are documented in this file.
4
4
 
5
+ ## [0.2.9] - 2026-07-15
6
+
7
+ ### Changed
8
+
9
+ - Replaced the update dialog arrow with a quiet vertical divider between the current and latest versions.
10
+ - Changed Web updates to install into the npm prefix that owns the running `codex-weixin` package instead of always installing globally.
11
+
12
+ ### Fixed
13
+
14
+ - Fixed Windows and other isolated local runtimes restarting the old package after npm had successfully updated an unrelated global copy.
15
+ - Verified the installed package version and server entry point before stopping the old service, preventing false successful-update responses.
16
+ - Rejected Web installation from source checkouts with an actionable message instead of mutating or restarting the wrong installation.
17
+
18
+ ### Upgrade Note
19
+
20
+ - 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.
21
+
5
22
  ## [0.2.8] - 2026-07-15
6
23
 
7
24
  ### Added
@@ -110,6 +127,7 @@ All notable changes to `codex-weixin` are documented in this file.
110
127
  - Kept GPT-5.6 options available after selecting a different model.
111
128
  - Removed extra message spacing and hid internal WeChat and Codex routing identifiers from the normal UI.
112
129
 
130
+ [0.2.9]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.9
113
131
  [0.2.8]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.8
114
132
  [0.2.7]: https://github.com/XavierJiezou/codex-weixin/releases/tag/v0.2.7
115
133
  [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.
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,并在重启前验证目标版本和服务入口。
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,14 @@ 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;
51
61
  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,31 @@ 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
+ async function installCurrentRuntimeVersion(version, registry, options) {
194
+ if (!options.installPrefix) {
195
+ throw new Error("源码运行方式不支持网页自动安装,请更新 Git 源码、执行 npm install 和 npm run build 后重启");
196
+ }
197
+ const command = buildNpmInstallCommand(version, registry, {
198
+ installPrefix: options.installPrefix,
199
+ platform: options.platform,
200
+ env: options.env,
201
+ nodePath: options.nodePath
202
+ });
165
203
  await new Promise((resolve, reject) => {
166
204
  const child = spawn(command.command, command.args, {
167
- env: process.env,
205
+ env: options.env,
168
206
  shell: false,
169
207
  stdio: ["ignore", "pipe", "pipe"],
170
208
  windowsHide: true
@@ -194,16 +232,35 @@ async function installGlobalVersion(version, registry) {
194
232
  return;
195
233
  settled = true;
196
234
  if (code === 0) {
197
- resolve();
235
+ try {
236
+ verifyInstalledRuntime(options.installPrefix, version);
237
+ resolve();
238
+ }
239
+ catch (error) {
240
+ reject(error);
241
+ }
198
242
  return;
199
243
  }
200
244
  const permissionHint = /EACCES|EPERM|permission/i.test(output)
201
- ? " npm does not have permission to update the global package."
245
+ ? " npm does not have permission to update the current codex-weixin runtime."
202
246
  : "";
203
247
  reject(new Error(`npm update failed with exit code ${code ?? "unknown"}.${permissionHint}`));
204
248
  }));
205
249
  });
206
250
  }
251
+ function verifyInstalledRuntime(installPrefix, version) {
252
+ const packageRoot = path.join(installPrefix, "node_modules", "codex-weixin");
253
+ const packageJsonPath = path.join(packageRoot, "package.json");
254
+ const entryPath = path.join(packageRoot, "dist", "server", "index.js");
255
+ try {
256
+ const value = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
257
+ if (value.version !== version || !fs.existsSync(entryPath))
258
+ throw new Error("version mismatch");
259
+ }
260
+ catch {
261
+ throw new Error("npm completed, but the active codex-weixin runtime was not updated");
262
+ }
263
+ }
207
264
  function finishInstall(child, timer, finish) {
208
265
  clearTimeout(timer);
209
266
  child.stdout.removeAllListeners("data");
@@ -223,6 +280,13 @@ function requireRegistryId(value) {
223
280
  return value;
224
281
  throw new Error("Invalid npm Registry");
225
282
  }
283
+ function requireInstallPrefix(value, platform) {
284
+ const pathApi = platform === "win32" ? path.win32 : path.posix;
285
+ if (typeof value !== "string" || !pathApi.isAbsolute(value)) {
286
+ throw new Error("Invalid npm install prefix");
287
+ }
288
+ return pathApi.resolve(value);
289
+ }
226
290
  function parseStableVersion(value) {
227
291
  const version = requireStableVersion(value);
228
292
  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.2.9",
4
4
  "description": "Local multi-account WeChat server for OpenAI Codex.",
5
5
  "license": "MIT",
6
6
  "author": "Xuechao Zou",