@codexapi/codexclaude 2.0.23 → 2.0.24
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/CUSTOMIZATIONS.md +17 -14
- package/README.md +6 -6
- package/bin/codexclaude.js +76 -15
- package/codexclaude.md +28 -19
- package/package.json +3 -3
package/CUSTOMIZATIONS.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# MagnetAPI.org Codex CLI Customizations
|
|
2
2
|
|
|
3
|
-
`codexclaude` tracks the managed coding runtime while keeping a thin
|
|
3
|
+
`codexclaude` tracks the managed coding runtime while keeping a thin MagnetAPI.org Codex CLI launcher layer. Future upgrades must preserve this file's behavior before a package is published.
|
|
4
4
|
|
|
5
5
|
## Runtime
|
|
6
6
|
|
|
7
|
-
- Customer-facing app name: `
|
|
8
|
-
- Local launcher version: `2.0.
|
|
9
|
-
- Bundled official runtime dependency: `@openai/codex@0.144.
|
|
10
|
-
- Required install command: `npm install -g
|
|
7
|
+
- Customer-facing app name: `MagnetAPI.org Codex CLI`
|
|
8
|
+
- Local launcher version: `2.0.24`
|
|
9
|
+
- Bundled official runtime dependency: `@openai/codex@0.144.4`
|
|
10
|
+
- Required install command: `npm install -g @codexapi/codexclaude@latest`
|
|
11
|
+
- Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.24.tgz`
|
|
11
12
|
- Bundled runtime version is managed internally and must not be used for customer update prompts.
|
|
12
13
|
- Launcher update checks may call the CodexAPI.pro version endpoint and `@codexapi/codexclaude` npm metadata only.
|
|
13
14
|
- The launcher must never check `@openai/codex` npm metadata or OpenAI GitHub releases for update notices.
|
|
@@ -19,12 +20,13 @@
|
|
|
19
20
|
- Rewrites `~/.codex/config.toml` before every launch.
|
|
20
21
|
- Deletes stale `~/.codex/version.json` before writing managed config.
|
|
21
22
|
- Launches the bundled platform-native runtime binary directly rather than the upstream npm wrapper.
|
|
22
|
-
- Keeps launcher-owned output branded as `
|
|
23
|
+
- Keeps launcher-owned output branded as `MagnetAPI.org Codex CLI`; hardcoded native binary strings require a forked native runtime build if operations wants them removed across all platforms.
|
|
23
24
|
- Starts with `--search` by default.
|
|
24
25
|
- Passes unknown commands directly to the bundled runtime after config is applied.
|
|
25
26
|
- Provides `codexclaude changelog` using the managed version endpoint.
|
|
26
27
|
- Does not expose separate `codexclaude status` or `codexclaude usage` commands; wallet information remains a compact pre-launch line.
|
|
27
|
-
- Version `2.0.
|
|
28
|
+
- Version `2.0.24` is forced by the backend minimum version and older clients must show an update-required message.
|
|
29
|
+
- Mandatory updates present `Upgrade Now` in an interactive terminal, invoke npm with an argument array and no shell interpolation, then stop cleanly so the customer can start `codexclaude` again.
|
|
28
30
|
|
|
29
31
|
## Provider Config
|
|
30
32
|
|
|
@@ -61,7 +63,7 @@ Before launching the runtime, the launcher calls `/api/v1/wallet/status`, then `
|
|
|
61
63
|
Expected status line:
|
|
62
64
|
|
|
63
65
|
```text
|
|
64
|
-
|
|
66
|
+
MagnetAPI.org Codex CLI v2.0.24 · gpt-5.6 xhigh · ~/project · Wallet $20.00
|
|
65
67
|
```
|
|
66
68
|
|
|
67
69
|
## Upgrade Checklist
|
|
@@ -71,7 +73,7 @@ When updating the bundled runtime:
|
|
|
71
73
|
1. Update `CODEX_VERSION` in `bin/codexclaude.js`.
|
|
72
74
|
2. Update `@openai/codex` in `package.json` and `package-lock.json`.
|
|
73
75
|
3. Bump the launcher package version.
|
|
74
|
-
4. Keep `APP_DISPLAY_NAME = "
|
|
76
|
+
4. Keep `APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI"`.
|
|
75
77
|
5. Keep `DEFAULT_MODEL_ID = "gpt-5.6"`.
|
|
76
78
|
6. Keep `reasoningEffortForModel()` and model-specific visible reasoning.
|
|
77
79
|
7. Keep Full Access defaults: `approval_policy = "never"` and `sandbox_mode = "danger-full-access"`.
|
|
@@ -79,7 +81,8 @@ When updating the bundled runtime:
|
|
|
79
81
|
9. Keep `clearUpstreamUpdateCache()` deleting `~/.codex/version.json`.
|
|
80
82
|
10. Keep direct platform binary launch and do not fall back to the upstream npm wrapper.
|
|
81
83
|
11. Keep update checks limited to `/api/v1/codexclaude/version` and `@codexapi/codexclaude` npm metadata.
|
|
82
|
-
12. Keep the
|
|
83
|
-
13. Keep
|
|
84
|
-
14.
|
|
85
|
-
15.
|
|
84
|
+
12. Keep the interactive `Upgrade Now` flow installing `@codexapi/codexclaude@latest` without a shell.
|
|
85
|
+
13. Keep the managed `MODELS` map and local model catalog, including SOL Max and SOL Ultra.
|
|
86
|
+
14. Keep bearer username auth and the `X-CodexAPI-*` headers.
|
|
87
|
+
15. Update `README.md`, `CUSTOMIZATIONS.md`, and `codexclaude.md`.
|
|
88
|
+
16. Run `node --check bin/codexclaude.js`, a temporary-home setup test, `npm pack --dry-run`, and endpoint validation before publishing.
|
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# codexclaude
|
|
2
2
|
|
|
3
|
-
`codexclaude` installs the
|
|
3
|
+
`codexclaude` installs the MagnetAPI.org Codex CLI for customers who want one coding CLI that can use GPT-5.6, GPT-5.6 SOL, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
|
|
4
4
|
|
|
5
|
-
Version `2.0.
|
|
5
|
+
Version `2.0.24` is a required client sync release. It bundles official Codex runtime dependency `@openai/codex@0.144.4`, launches the platform-native runtime binary directly, disables upstream OpenAI update prompts, and applies account, wallet, model, Full Access, GPT-5.6/xhigh defaults, and managed model metadata before each coding session starts. Model menus no longer display wallet multiplier notices; billing remains managed by the server.
|
|
6
6
|
|
|
7
7
|
## Install Or Update
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npm install -g
|
|
10
|
+
npm install -g @codexapi/codexclaude@latest
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
This does not delete local session history. The update replaces the `codexclaude` launcher package, refreshes the bundled runtime dependency, and rewrites the managed provider config the next time `codexclaude setup`, `codexclaude login`, or `codexclaude start` runs.
|
|
@@ -16,7 +16,7 @@ This does not delete local session history. The update replaces the `codexclaude
|
|
|
16
16
|
|
|
17
17
|
The launcher checks CodexAPI.pro's managed version endpoint and the `@codexapi/codexclaude` npm package metadata only. It must never check `@openai/codex` npm metadata or OpenAI GitHub releases for customer update prompts.
|
|
18
18
|
|
|
19
|
-
Version `2.0.
|
|
19
|
+
Version `2.0.24` is currently enforced as the minimum supported version. A compatible older launcher presents `Upgrade Now`; selecting it installs `@codexapi/codexclaude@latest`, confirms completion, and asks the customer to start `codexclaude` again. Non-interactive terminals print the same npm command instead of hanging for input.
|
|
20
20
|
|
|
21
21
|
## First Login
|
|
22
22
|
|
|
@@ -57,7 +57,7 @@ codexclaude changelog
|
|
|
57
57
|
Before launching the coding runtime, the app prints a compact status line like:
|
|
58
58
|
|
|
59
59
|
```text
|
|
60
|
-
|
|
60
|
+
MagnetAPI.org Codex CLI v2.0.24 · gpt-5.6 xhigh · ~/project · Wallet $20.00
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
## Preserved Customizations
|
|
@@ -67,7 +67,7 @@ Magnetapi Client v2.0.23 · gpt-5.6 xhigh · ~/project · Wallet $20.00
|
|
|
67
67
|
- Service-specific Responses-compatible provider for the dashboard account that logged in.
|
|
68
68
|
- Full Access defaults: approval policy `never` and sandbox mode `danger-full-access`.
|
|
69
69
|
- Model-specific visible reasoning in the local UI while the API server keeps upstream runtime effort server-managed.
|
|
70
|
-
- A local `~/.codexclaude/model_catalog.json` file so the native `/model` picker lists only the supported
|
|
70
|
+
- A local `~/.codexclaude/model_catalog.json` file so the native `/model` picker lists only the supported MagnetAPI.org Codex CLI choices, including SOL Max and SOL Ultra.
|
|
71
71
|
- No default fast service tier. Fast mode is billed only when the user enables it inside the client.
|
|
72
72
|
- Token Wallet balance lookup before launch without exposing separate `status` or `usage` launcher commands.
|
|
73
73
|
- Backend-identifying request headers so the API can enforce account and plan rules server-side.
|
package/bin/codexclaude.js
CHANGED
|
@@ -10,9 +10,9 @@ import { stdin as input, stdout as output } from "node:process";
|
|
|
10
10
|
|
|
11
11
|
const require = createRequire(import.meta.url);
|
|
12
12
|
|
|
13
|
-
const APP_VERSION = "2.0.
|
|
14
|
-
const CODEX_VERSION = "0.144.
|
|
15
|
-
const APP_DISPLAY_NAME = "
|
|
13
|
+
const APP_VERSION = "2.0.24";
|
|
14
|
+
const CODEX_VERSION = "0.144.4";
|
|
15
|
+
const APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI";
|
|
16
16
|
const DEFAULT_MODEL_ID = "gpt-5.6";
|
|
17
17
|
const DEFAULT_DISPLAY_REASONING_EFFORT = "xhigh";
|
|
18
18
|
const DEFAULT_SERVER_REASONING_EFFORT = "xhigh";
|
|
@@ -24,7 +24,8 @@ const VERSION_CHECK_PATH = "/api/v1/codexclaude/version";
|
|
|
24
24
|
const NPM_PACKAGE_NAME = "@codexapi/codexclaude";
|
|
25
25
|
const NPM_LATEST_URL = "https://registry.npmjs.org/@codexapi%2Fcodexclaude/latest";
|
|
26
26
|
const HOSTED_TARBALL_URL = `https://codexapi.pro/downloads/codexapi-codexclaude-${APP_VERSION}.tgz`;
|
|
27
|
-
const UPDATE_COMMAND = `npm install -g ${
|
|
27
|
+
const UPDATE_COMMAND = `npm install -g ${NPM_PACKAGE_NAME}@latest`;
|
|
28
|
+
const HOSTED_UPDATE_COMMAND = `npm install -g ${HOSTED_TARBALL_URL}`;
|
|
28
29
|
const CONFIG_DIR = path.join(homedir(), ".codexclaude");
|
|
29
30
|
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
30
31
|
const MODEL_CATALOG_FILE = path.join(CONFIG_DIR, "model_catalog.json");
|
|
@@ -125,7 +126,7 @@ async function main() {
|
|
|
125
126
|
ensureExecutable();
|
|
126
127
|
const [command = "start", ...args] = process.argv.slice(2);
|
|
127
128
|
if (["-v", "--version", "version"].includes(command)) {
|
|
128
|
-
console.log(`${APP_DISPLAY_NAME} ${APP_VERSION}`);
|
|
129
|
+
console.log(`${APP_DISPLAY_NAME} v${APP_VERSION}`);
|
|
129
130
|
return;
|
|
130
131
|
}
|
|
131
132
|
if (["-h", "--help", "help"].includes(command)) {
|
|
@@ -136,7 +137,9 @@ async function main() {
|
|
|
136
137
|
await printChangelog();
|
|
137
138
|
return;
|
|
138
139
|
}
|
|
139
|
-
await enforceLauncherVersion()
|
|
140
|
+
if (await enforceLauncherVersion()) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
140
143
|
if (command === "login") {
|
|
141
144
|
await loginFlow();
|
|
142
145
|
return;
|
|
@@ -170,14 +173,14 @@ async function main() {
|
|
|
170
173
|
|
|
171
174
|
function printHelp() {
|
|
172
175
|
console.log(`
|
|
173
|
-
${APP_DISPLAY_NAME} ${APP_VERSION}
|
|
176
|
+
${APP_DISPLAY_NAME} v${APP_VERSION}
|
|
174
177
|
|
|
175
178
|
Commands:
|
|
176
179
|
codexclaude login Login with dashboard username/email and password
|
|
177
180
|
codexclaude model Select GPT-5.6, SOL modes, Opus 4.8, Sonnet 5, or Fable 5
|
|
178
181
|
codexclaude changelog Show the latest CodexAPI.pro launcher changes
|
|
179
182
|
codexclaude setup Rewrite ~/.codex/config.toml with Full Access defaults
|
|
180
|
-
codexclaude start Start
|
|
183
|
+
codexclaude start Start ${APP_DISPLAY_NAME} with --search
|
|
181
184
|
codexclaude resume Resume the latest coding session with --search
|
|
182
185
|
codexclaude logout Remove saved codexclaude account state
|
|
183
186
|
|
|
@@ -187,7 +190,7 @@ Any other command is passed through to the bundled coding runtime after Magnetap
|
|
|
187
190
|
|
|
188
191
|
async function printChangelog() {
|
|
189
192
|
const metadata = await getJson(`${VERSION_CHECK_PATH}?current=${encodeURIComponent(APP_VERSION)}`);
|
|
190
|
-
console.log(
|
|
193
|
+
console.log(`${APP_DISPLAY_NAME} v${metadata?.latestVersion || APP_VERSION}`);
|
|
191
194
|
console.log(`Required minimum: ${metadata?.minimumVersion || APP_VERSION}`);
|
|
192
195
|
const changes = Array.isArray(metadata?.changes) ? metadata.changes : [];
|
|
193
196
|
if (changes.length) {
|
|
@@ -268,7 +271,7 @@ async function loginWithServiceSelection({ username, password, selectedService,
|
|
|
268
271
|
const loginBody = {
|
|
269
272
|
username,
|
|
270
273
|
password,
|
|
271
|
-
deviceName:
|
|
274
|
+
deviceName: `${APP_DISPLAY_NAME} v${APP_VERSION}`,
|
|
272
275
|
};
|
|
273
276
|
if (selectedService) {
|
|
274
277
|
return {
|
|
@@ -414,7 +417,7 @@ async function postJson(pathname, body, origin = API_ORIGIN) {
|
|
|
414
417
|
|
|
415
418
|
async function enforceLauncherVersion() {
|
|
416
419
|
if (isTruthy(process.env.CODEXCLAUDE_DISABLE_UPDATE_CHECK)) {
|
|
417
|
-
return;
|
|
420
|
+
return false;
|
|
418
421
|
}
|
|
419
422
|
const params = new URLSearchParams({ current: APP_VERSION });
|
|
420
423
|
let metadata = null;
|
|
@@ -424,12 +427,70 @@ async function enforceLauncherVersion() {
|
|
|
424
427
|
metadata = null;
|
|
425
428
|
}
|
|
426
429
|
if (metadata?.updateRequired || isOlderVersion(APP_VERSION, metadata?.minimumVersion)) {
|
|
427
|
-
|
|
430
|
+
await runMandatoryUpgrade(metadata);
|
|
431
|
+
return true;
|
|
428
432
|
}
|
|
429
433
|
const updateMetadata = optionalUpdateMetadata(metadata, await npmLatestMetadata());
|
|
430
434
|
if (updateMetadata) {
|
|
431
435
|
printOptionalUpdateNotice(updateMetadata);
|
|
432
436
|
}
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
async function runMandatoryUpgrade(metadata) {
|
|
441
|
+
const latest = metadata?.latestVersion || "latest";
|
|
442
|
+
const minimum = metadata?.minimumVersion || latest;
|
|
443
|
+
const changes = Array.isArray(metadata?.changes) ? metadata.changes.slice(0, 4) : [];
|
|
444
|
+
console.error(`\n${APP_DISPLAY_NAME} v${latest} is required before your next coding session.`);
|
|
445
|
+
console.error(`Installed: v${APP_VERSION} · Required: v${minimum}`);
|
|
446
|
+
for (const change of changes) {
|
|
447
|
+
console.error(`- ${change}`);
|
|
448
|
+
}
|
|
449
|
+
console.error("Your local project files and coding-session history will not be removed.\n");
|
|
450
|
+
|
|
451
|
+
let shouldUpgrade = isTruthy(process.env.CODEXCLAUDE_AUTO_UPDATE);
|
|
452
|
+
if (!shouldUpgrade) {
|
|
453
|
+
if (!input.isTTY || !output.isTTY) {
|
|
454
|
+
throw new Error(updateRequiredMessage(metadata));
|
|
455
|
+
}
|
|
456
|
+
const rl = readline.createInterface({ input, output });
|
|
457
|
+
try {
|
|
458
|
+
console.log(" 1. Upgrade Now");
|
|
459
|
+
console.log(" 2. Exit");
|
|
460
|
+
const answer = (await rl.question("Select [Upgrade Now]: ")).trim().toLowerCase();
|
|
461
|
+
shouldUpgrade = ["", "1", "upgrade", "upgrade now", "yes", "y"].includes(answer);
|
|
462
|
+
} finally {
|
|
463
|
+
rl.close();
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
if (!shouldUpgrade) {
|
|
467
|
+
throw new Error(`Upgrade cancelled. Run ${UPDATE_COMMAND} before starting codexclaude again.`);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
console.log(`\nDownloading and installing ${NPM_PACKAGE_NAME}@latest...`);
|
|
471
|
+
const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
|
|
472
|
+
const exitCode = await spawnAndWait(npmCommand, ["install", "-g", `${NPM_PACKAGE_NAME}@latest`]);
|
|
473
|
+
if (exitCode !== 0) {
|
|
474
|
+
throw new Error(
|
|
475
|
+
`Automatic upgrade failed with exit code ${exitCode}. Run ${UPDATE_COMMAND}. ` +
|
|
476
|
+
`Hosted fallback: ${HOSTED_UPDATE_COMMAND}`,
|
|
477
|
+
);
|
|
478
|
+
}
|
|
479
|
+
console.log(`\nUpgrade complete. Start ${APP_DISPLAY_NAME} again by running: codexclaude`);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
async function spawnAndWait(command, args) {
|
|
483
|
+
return await new Promise((resolve, reject) => {
|
|
484
|
+
const child = spawn(command, args, { stdio: "inherit", env: process.env, shell: false });
|
|
485
|
+
child.once("error", reject);
|
|
486
|
+
child.once("exit", (code, signal) => {
|
|
487
|
+
if (signal) {
|
|
488
|
+
reject(new Error(`Upgrade process stopped by ${signal}.`));
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
resolve(code ?? 1);
|
|
492
|
+
});
|
|
493
|
+
});
|
|
433
494
|
}
|
|
434
495
|
|
|
435
496
|
async function getJson(pathname) {
|
|
@@ -527,8 +588,8 @@ function updateRequiredMessage(metadata) {
|
|
|
527
588
|
const latest = metadata?.latestVersion || "latest";
|
|
528
589
|
const minimum = metadata?.minimumVersion || latest;
|
|
529
590
|
return [
|
|
530
|
-
`Update required: ${APP_DISPLAY_NAME}
|
|
531
|
-
`Installed
|
|
591
|
+
`Update required: ${APP_DISPLAY_NAME} v${latest} is required so your local client stays synced with the managed model catalog, Full Access defaults, and provider config.`,
|
|
592
|
+
`Installed: v${APP_VERSION}. Required: v${minimum}. Latest: v${latest}.`,
|
|
532
593
|
`Run: ${installCommand}`,
|
|
533
594
|
"Your local session history will not be deleted. The update only replaces the codexclaude launcher and rewrites provider config backups.",
|
|
534
595
|
].join("\n");
|
|
@@ -562,7 +623,7 @@ function printOptionalUpdateNotice(metadata) {
|
|
|
562
623
|
const border = "─".repeat(64);
|
|
563
624
|
const line = (text) => `│ ${String(text)}`.slice(0, 65).padEnd(65) + "│";
|
|
564
625
|
console.error(`\n┌${border}┐`);
|
|
565
|
-
console.error(line(
|
|
626
|
+
console.error(line(`${APP_DISPLAY_NAME} v${latest} is available. You can keep coding on v${APP_VERSION}.`));
|
|
566
627
|
console.error(line(`Update when ready: ${installCommand}`));
|
|
567
628
|
for (const change of changes) {
|
|
568
629
|
console.error(line(`• ${change}`));
|
package/codexclaude.md
CHANGED
|
@@ -5,11 +5,12 @@ This file is the durable handoff for the `@codexapi/codexclaude` package in `/ro
|
|
|
5
5
|
## Current Release
|
|
6
6
|
|
|
7
7
|
- Package name: `@codexapi/codexclaude`
|
|
8
|
-
- Launcher version: `2.0.
|
|
9
|
-
- Customer-facing app name: `
|
|
10
|
-
- Bundled runtime dependency: `@openai/codex@0.144.
|
|
11
|
-
- Required install command: `npm install -g
|
|
12
|
-
-
|
|
8
|
+
- Launcher version: `2.0.24`
|
|
9
|
+
- Customer-facing app name: `MagnetAPI.org Codex CLI`
|
|
10
|
+
- Bundled runtime dependency: `@openai/codex@0.144.4`
|
|
11
|
+
- Required install command: `npm install -g @codexapi/codexclaude@latest`
|
|
12
|
+
- Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.24.tgz`
|
|
13
|
+
- Backend minimum version: `2.0.24`
|
|
13
14
|
- Default visible model: `GPT-5.6`
|
|
14
15
|
- Default model slug: `gpt-5.6`
|
|
15
16
|
- Default visible reasoning effort: `xhigh`; premium SOL Max and SOL Ultra retain their explicit `max` and `ultra` labels.
|
|
@@ -24,13 +25,13 @@ This file is the durable handoff for the `@codexapi/codexclaude` package in `/ro
|
|
|
24
25
|
The launcher must present itself as:
|
|
25
26
|
|
|
26
27
|
```text
|
|
27
|
-
|
|
28
|
+
MagnetAPI.org Codex CLI v2.0.24
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
Normal pre-launch status should look like:
|
|
31
32
|
|
|
32
33
|
```text
|
|
33
|
-
|
|
34
|
+
MagnetAPI.org Codex CLI v2.0.24 · gpt-5.6 xhigh · ~/project · Wallet $20.00
|
|
34
35
|
```
|
|
35
36
|
|
|
36
37
|
Do not show OpenAI update notices, OpenAI npm install commands, OpenAI release links, or the upstream runtime version in launcher-owned output. The package still depends on the official runtime internally, but the customer update surface is ours.
|
|
@@ -55,11 +56,11 @@ GPT-5.6 must be the default when a new config is created or a legacy config cont
|
|
|
55
56
|
- `https://codexapi.pro/api/v1/codexclaude/version`
|
|
56
57
|
- `https://registry.npmjs.org/@codexapi%2Fcodexclaude/latest`
|
|
57
58
|
|
|
58
|
-
It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.
|
|
59
|
+
It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.24` is a forced release: the backend `minimumVersion` equals `2.0.24`. Compatible older launchers offer an interactive `Upgrade Now` action that invokes `npm install -g @codexapi/codexclaude@latest` without shell interpolation. Non-interactive terminals print the exact update command and exit instead of waiting for input. After a successful update, the old process exits and tells the customer to start `codexclaude` again.
|
|
59
60
|
|
|
60
61
|
The launcher writes `check_for_update_on_startup = false` and removes `~/.codex/version.json` so the bundled runtime does not display stale upstream update prompts. The launcher also resolves the platform-native runtime binary directly from the optional package (`@openai/codex-linux-x64`, `@openai/codex-darwin-arm64`, and so on). Do not fall back to the upstream npm wrapper, because that wrapper can re-enable upstream managed update behavior.
|
|
61
62
|
|
|
62
|
-
The optional platform-native runtime packages can still contain upstream README files and hardcoded native strings inside the binary. Launcher-owned output must say `
|
|
63
|
+
The optional platform-native runtime packages can still contain upstream README files and hardcoded native strings inside the binary. Launcher-owned output must say `MagnetAPI.org Codex CLI`; replacing native binary text itself requires a maintained forked native runtime build for every supported platform. Until such a fork exists, do not re-enable the upstream npm wrapper and do not present upstream update notices to customers.
|
|
63
64
|
|
|
64
65
|
## Generated Config Contract
|
|
65
66
|
|
|
@@ -83,7 +84,7 @@ base_url = "<service Responses URL>"
|
|
|
83
84
|
experimental_bearer_token = "<customer System Token/API username>"
|
|
84
85
|
wire_api = "responses"
|
|
85
86
|
supports_websockets = false
|
|
86
|
-
http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.
|
|
87
|
+
http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.24", "X-CodexAPI-Selected-Model" = "<selected model>" }
|
|
87
88
|
|
|
88
89
|
[tui]
|
|
89
90
|
status_line = ["model-with-reasoning", "fast-mode", "current-dir"]
|
|
@@ -125,17 +126,18 @@ When updating the bundled runtime dependency:
|
|
|
125
126
|
2. Run `npm install @openai/codex@<version> --save-exact`.
|
|
126
127
|
3. Bump `package.json` and `package-lock.json` to a new `@codexapi/codexclaude` version.
|
|
127
128
|
4. Update `APP_VERSION` and `CODEX_VERSION` in `bin/codexclaude.js`.
|
|
128
|
-
5. Preserve `APP_DISPLAY_NAME = "
|
|
129
|
+
5. Preserve `APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI"`.
|
|
129
130
|
6. Preserve `DEFAULT_MODEL_ID = "gpt-5.6"`.
|
|
130
131
|
7. Preserve `DISPLAY_REASONING_EFFORT = "xhigh"` and `SERVER_REASONING_EFFORT = "xhigh"` unless operations explicitly changes the launcher-visible contract.
|
|
131
132
|
8. Preserve Full Access defaults and the local model catalog.
|
|
132
133
|
9. Preserve direct platform-native binary launch.
|
|
133
134
|
10. Preserve update checks through our version endpoint and `@codexapi/codexclaude` npm metadata only.
|
|
134
|
-
11. Preserve
|
|
135
|
-
12.
|
|
136
|
-
13. Update
|
|
137
|
-
14. Update
|
|
138
|
-
15.
|
|
135
|
+
11. Preserve the interactive `Upgrade Now` flow and shell-free npm invocation.
|
|
136
|
+
12. Preserve deletion of `~/.codex/version.json` and `check_for_update_on_startup = false`.
|
|
137
|
+
13. Update customer setup scripts on CodexAPI.pro, ChatPlus.chat, MyAPI.world, MagnetAPI.org, and VIP pages to use the current release.
|
|
138
|
+
14. Update backend `CODEXCLAUDE_LATEST_VERSION`, `CODEXCLAUDE_MIN_VERSION`, and hosted tarball URL.
|
|
139
|
+
15. Update this file, `README.md`, and `CUSTOMIZATIONS.md`.
|
|
140
|
+
16. Run validation and publish.
|
|
139
141
|
|
|
140
142
|
## Validation Commands
|
|
141
143
|
|
|
@@ -153,7 +155,7 @@ tmp_home="$(mktemp -d)"
|
|
|
153
155
|
mkdir -p "$tmp_home/.codexclaude"
|
|
154
156
|
cat > "$tmp_home/.codexclaude/config.json" <<'JSON'
|
|
155
157
|
{
|
|
156
|
-
"version": "2.0.
|
|
158
|
+
"version": "2.0.24",
|
|
157
159
|
"serviceId": "codexapi",
|
|
158
160
|
"serviceLabel": "CodexAPI.pro",
|
|
159
161
|
"apiOrigin": "https://codexapi.pro",
|
|
@@ -190,10 +192,17 @@ After packaging, copy the tarball to the public downloads directories, restart t
|
|
|
190
192
|
|
|
191
193
|
```bash
|
|
192
194
|
curl -fsS "https://codexapi.pro/api/v1/codexclaude/version?current=2.0.17"
|
|
193
|
-
curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.
|
|
195
|
+
curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.24.tgz"
|
|
194
196
|
```
|
|
195
197
|
|
|
196
|
-
The version endpoint must report `latestVersion = 2.0.
|
|
198
|
+
The version endpoint must report `latestVersion = 2.0.24`, `minimumVersion = 2.0.24`, and `updateRequired = true` for old clients.
|
|
199
|
+
|
|
200
|
+
## Version 2.0.24 Changes
|
|
201
|
+
|
|
202
|
+
- Updated the bundled runtime dependency to `@openai/codex@0.144.4`.
|
|
203
|
+
- Changed launcher-owned titles, help, status, terminal title, and version output to `MagnetAPI.org Codex CLI v2.0.24`.
|
|
204
|
+
- Added the interactive mandatory `Upgrade Now` action backed by `@codexapi/codexclaude@latest`.
|
|
205
|
+
- Preserved dashboard login, wallet status, Full Access, managed models, web search, local tools, and upstream update suppression.
|
|
197
206
|
|
|
198
207
|
## Version 2.0.23 Changes
|
|
199
208
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codexapi/codexclaude",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.24",
|
|
4
|
+
"description": "MagnetAPI.org Codex CLI for GPT-5.6, Opus 4.8, Sonnet 5, and Fable 5.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"node": ">=20"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@openai/codex": "0.144.
|
|
20
|
+
"@openai/codex": "0.144.4"
|
|
21
21
|
},
|
|
22
22
|
"publishConfig": {
|
|
23
23
|
"access": "public"
|