@codexapi/codexclaude 2.0.32 → 2.0.34

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 CHANGED
@@ -5,10 +5,10 @@
5
5
  ## Runtime
6
6
 
7
7
  - Customer-facing app name: `MagnetAPI.org Codex CLI`
8
- - Local launcher version: `2.0.32`
9
- - Bundled official runtime dependency: `@openai/codex@0.148.0-alpha.6`
8
+ - Local launcher version: `2.0.34`
9
+ - Bundled official runtime dependency: `@openai/codex@0.149.0`
10
10
  - Required install command: `npm install -g @codexapi/codexclaude@latest`
11
- - Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.32.tgz`
11
+ - Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.34.tgz`
12
12
  - Bundled runtime version is managed internally and must not be used for customer update prompts.
13
13
  - Launcher update checks may call the CodexAPI.pro version endpoint and `@codexapi/codexclaude` npm metadata only.
14
14
  - The launcher must never check `@openai/codex` npm metadata or OpenAI GitHub releases for update notices.
@@ -25,8 +25,8 @@
25
25
  - Passes unknown commands directly to the bundled runtime after config is applied.
26
26
  - Provides `codexclaude changelog` using the managed version endpoint.
27
27
  - Does not expose separate `codexclaude status` or `codexclaude usage` commands; wallet information remains a compact pre-launch line.
28
- - Version `2.0.32` is forced by the backend minimum version and older clients must show an update-required message.
29
- - Mandatory updates present a press-Enter `Upgrade Now` action in an interactive terminal, invoke npm with an argument array and no shell interpolation, try the hosted release if the registry install fails, then relaunch the requested action automatically.
28
+ - Version `2.0.34` is forced by the backend minimum version and older clients must show an update-required message.
29
+ - Mandatory updates present a press-Enter `Upgrade Now` action in an interactive terminal, invoke npm with an argument array and no shell interpolation, verify the installed launcher version, use the hosted release if the registry fails or returns a stale version, then relaunch the requested action automatically.
30
30
  - The npm package manifest exposes only `codexclaude`, preventing npm from colliding with a native `codex` or `claude` command before postinstall runs.
31
31
  - Global installation creates optional `codex` and `claude` aliases only when no existing command is present in the npm prefix or anywhere on `PATH`; native clients must never be overwritten.
32
32
 
@@ -46,13 +46,13 @@ The launcher writes a model provider named `codexapi`:
46
46
  ## Runtime Defaults
47
47
 
48
48
  - Default model: `gpt-5.6-sol` displayed as `GPT-5.6 SOL`
49
- - Supported launcher choices: `gpt-5.6`, `gpt-5.6-sol-max`, `gpt-5.6-sol-ultra`, `gpt-5.6-sol`, `gpt-5.5`, `claude-opus-5`, `claude-opus-4-8`, `claude-sonnet-5`, `claude-fable-5`, and `gpt-5.6-terra`
49
+ - Supported launcher choices: `gpt-daybreak-blue-latest`, `gpt-5.6`, `gpt-5.6-sol-max`, `gpt-5.6-sol-ultra`, `gpt-5.6-sol`, `gpt-5.5`, `claude-opus-5`, `claude-opus-4-8`, `claude-sonnet-5`, `claude-fable-5`, and `gpt-5.6-terra`
50
50
  - Default reasoning effort displayed locally: `Extra High`, stored as `xhigh`; SOL Max and SOL Ultra retain their explicit premium labels.
51
51
  - Reasoning hint written to managed runtime config: model-specific
52
52
  - Approval policy: `never`
53
53
  - Sandbox mode: `danger-full-access`
54
54
  - Display wording for permissions: `Full Access` in launcher-owned copy
55
- - Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps the native `/model` picker limited to the supported choices and prevents fallback metadata warnings for GPT-5.6 Terra, SOL, SOL Max, SOL Ultra, Opus 5, Opus 4.8, Sonnet 5, and Fable 5.
55
+ - Local model catalog: `~/.codexclaude/model_catalog.json`; this keeps the native `/model` picker limited to the supported choices and prevents fallback metadata warnings for ChatGPT Daybreak Blue, GPT-5.6 Terra, SOL, SOL Max, SOL Ultra, Opus 5, Opus 4.8, Sonnet 5, and Fable 5.
56
56
  - Service tier: omitted by default; `/fast` remains user-controlled and billed server-side when active.
57
57
  - TUI status line: `model-with-reasoning`, `fast-mode`, `current-dir`
58
58
  - Fable 5 stays visible to the user while the backend applies its server-managed route and billing policy.
@@ -65,7 +65,8 @@ Before launching the runtime, the launcher calls `/api/v1/wallet/status`, then `
65
65
  Expected status line:
66
66
 
67
67
  ```text
68
- MagnetAPI.org Codex CLI v2.0.32 · GPT-5.6 SOL Extra High · ~/project · Wallet $20.00
68
+ MagnetAPI.org Codex CLI v2.0.34 · GPT-5.6 SOL Extra High · ~/project · Wallet balance $20.00
69
+ Fable 5 is now available in codexclaude, exclusively.
69
70
  ```
70
71
 
71
72
  ## Upgrade Checklist
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # codexclaude
2
2
 
3
- `codexclaude` installs the MagnetAPI.org Codex CLI for customers who want one coding CLI that can use GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, ChatGPT-5.5, Opus 5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
3
+ `codexclaude` installs the MagnetAPI.org Codex CLI for customers who want one coding CLI that can use ChatGPT Daybreak Blue, GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, ChatGPT-5.5, Opus 5, Opus 4.8, Sonnet 5, or Fable 5 against the same Token Wallet.
4
4
 
5
- Version `2.0.32` bundles the official Codex runtime dependency `@openai/codex@0.148.0-alpha.6` and makes GPT-5.6 SOL with visible Extra High reasoning the default for new or invalid configurations. Existing valid model selections remain unchanged. It preserves the collision-safe updater, platform-native runtime launch, managed account and wallet integration, Full Access defaults, upstream update suppression, and complete model metadata.
5
+ Version `2.0.34` bundles the official Codex runtime dependency `@openai/codex@0.149.0` and makes GPT-5.6 SOL with visible Extra High reasoning the default for new or invalid configurations. Existing valid model selections remain unchanged. It preserves the collision-safe updater, platform-native runtime launch, managed account and wallet integration, Full Access defaults, upstream update suppression, and complete model metadata.
6
6
 
7
7
  ## Install Or Update
8
8
 
@@ -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.32` is enforced as the minimum supported version. A compatible older launcher presents `Upgrade Now`; pressing Enter installs `@codexapi/codexclaude@latest` and relaunches the requested action automatically. If the npm registry install fails, the updater tries the hosted release before asking the user to intervene. Non-interactive terminals print the same npm command instead of hanging for input.
19
+ Version `2.0.34` is enforced as the minimum supported version. A compatible older launcher presents `✨ Update now available`; pressing Enter installs `@codexapi/codexclaude@latest` and relaunches the requested action automatically. If the npm registry install fails, the updater tries the hosted release before asking the user to intervene. Non-interactive terminals print the same npm command instead of hanging for input.
20
20
 
21
21
  ## First Login
22
22
 
@@ -44,7 +44,7 @@ Switch model:
44
44
  codexclaude model
45
45
  ```
46
46
 
47
- Available model labels are `GPT-5.6`, `GPT-5.6 SOL Max`, `GPT-5.6 SOL Ultra`, `GPT-5.6 SOL`, `ChatGPT-5.5`, `Opus 5`, `Opus 4.8`, `Sonnet 5`, `Fable 5`, and `GPT-5.6 Terra`. All models use a Responses-compatible endpoint and the same customer Token Wallet.
47
+ Available model labels are `ChatGPT Daybreak Blue`, `GPT-5.6`, `GPT-5.6 SOL Max`, `GPT-5.6 SOL Ultra`, `GPT-5.6 SOL`, `ChatGPT-5.5`, `Opus 5`, `Opus 4.8`, `Sonnet 5`, `Fable 5`, and `GPT-5.6 Terra`. All models use a Responses-compatible endpoint and the same customer Token Wallet.
48
48
 
49
49
  ## Launch Commands
50
50
 
@@ -67,13 +67,14 @@ codexclaude changelog
67
67
  Before launching the coding runtime, the app prints a compact status line like:
68
68
 
69
69
  ```text
70
- MagnetAPI.org Codex CLI v2.0.32 · GPT-5.6 SOL Extra High · ~/project · Wallet $20.00
70
+ MagnetAPI.org Codex CLI v2.0.34 · GPT-5.6 SOL Extra High · ~/project · Wallet balance $20.00
71
+ Fable 5 is now available in codexclaude, exclusively.
71
72
  ```
72
73
 
73
74
  ## Preserved Customizations
74
75
 
75
76
  - Dashboard Username or Email Address plus password login for CodexAPI.pro, ChatPlus.chat, MyAPI.world, and MagnetAPI.org.
76
- - Opus 5, GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 model selection, with GPT-5.6 SOL/Extra High as the default.
77
+ - ChatGPT Daybreak Blue, Opus 5, GPT-5.6, GPT-5.6 Terra, GPT-5.6 SOL Max, GPT-5.6 SOL Ultra, GPT-5.6 SOL, ChatGPT-5.5, Opus 4.8, Sonnet 5, or Fable 5 model selection, with GPT-5.6 SOL/Extra High as the default.
77
78
  - Service-specific Responses-compatible provider for the dashboard account that logged in.
78
79
  - Full Access defaults: approval policy `never` and sandbox mode `danger-full-access`.
79
80
  - Model-specific visible reasoning in the local UI while the API server keeps upstream runtime effort server-managed.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { spawn } from "node:child_process";
3
+ import { spawn, spawnSync } from "node:child_process";
4
4
  import { createRequire } from "node:module";
5
5
  import { existsSync, mkdirSync, readFileSync, writeFileSync, copyFileSync, chmodSync, unlinkSync } from "node:fs";
6
6
  import { homedir } from "node:os";
@@ -12,8 +12,8 @@ import { installSafeCommandAliases } from "../scripts/install-safe-aliases.js";
12
12
 
13
13
  const require = createRequire(import.meta.url);
14
14
 
15
- const APP_VERSION = "2.0.32";
16
- const CODEX_VERSION = "0.148.0-alpha.6";
15
+ const APP_VERSION = "2.0.34";
16
+ const CODEX_VERSION = "0.149.0";
17
17
  const APP_DISPLAY_NAME = "MagnetAPI.org Codex CLI";
18
18
  const DEFAULT_MODEL_ID = "gpt-5.6-sol";
19
19
  const DEFAULT_DISPLAY_REASONING_EFFORT = "xhigh";
@@ -36,6 +36,9 @@ const CODEX_CONFIG_FILE = path.join(CODEX_DIR, "config.toml");
36
36
  const CODEX_UPDATE_CACHE_FILE = path.join(CODEX_DIR, "version.json");
37
37
  const PROVIDER_ID = "codexapi";
38
38
  const MODEL_CATALOG_CONTEXT_WINDOW = 272000;
39
+ const FABLE_ANNOUNCEMENT = "Fable 5 is now available in codexclaude, exclusively.";
40
+ const ANSI_GREEN = "\x1b[32m";
41
+ const ANSI_RESET = "\x1b[0m";
39
42
  const SERVICE_CATALOG = [
40
43
  {
41
44
  id: "codexapi",
@@ -88,49 +91,55 @@ const MODELS = {
88
91
  aliases: ["2", "gpt", "gpt-5.6", "chatgpt", "chatgpt-5.6", "gpt56"],
89
92
  reasoningEffort: "xhigh",
90
93
  },
94
+ "gpt-daybreak-blue-latest": {
95
+ id: "gpt-daybreak-blue-latest",
96
+ label: "ChatGPT Daybreak Blue",
97
+ aliases: ["3", "daybreak", "daybreak-blue", "chatgpt-daybreak-blue", "gpt-daybreak-blue-latest"],
98
+ reasoningEffort: "xhigh",
99
+ },
91
100
  "gpt-5.6-sol-max": {
92
101
  id: "gpt-5.6-sol-max",
93
102
  label: "GPT-5.6 SOL Max",
94
- aliases: ["3", "gpt-5.6-sol-max", "gpt-5.6-max", "gpt56-max", "sol-max", "max"],
103
+ aliases: ["4", "gpt-5.6-sol-max", "gpt-5.6-max", "gpt56-max", "sol-max", "max"],
95
104
  reasoningEffort: "max",
96
105
  },
97
106
  "gpt-5.6-sol-ultra": {
98
107
  id: "gpt-5.6-sol-ultra",
99
108
  label: "GPT-5.6 SOL Ultra",
100
- aliases: ["4", "gpt-5.6-sol-ultra", "gpt-5.6-ultra", "gpt56-ultra", "sol-ultra", "ultra"],
109
+ aliases: ["5", "gpt-5.6-sol-ultra", "gpt-5.6-ultra", "gpt56-ultra", "sol-ultra", "ultra"],
101
110
  reasoningEffort: "ultra",
102
111
  },
103
112
  "gpt-5.6-sol": {
104
113
  id: "gpt-5.6-sol",
105
114
  label: "GPT-5.6 SOL",
106
- aliases: ["5", "gpt-5.6-sol", "sol"],
115
+ aliases: ["6", "gpt-5.6-sol", "sol"],
107
116
  reasoningEffort: "xhigh",
108
117
  },
109
118
  "gpt-5.5": {
110
119
  id: "gpt-5.5",
111
120
  label: "ChatGPT-5.5",
112
- aliases: ["6", "gpt-5.5", "chatgpt-5.5"],
121
+ aliases: ["7", "gpt-5.5", "chatgpt-5.5"],
113
122
  },
114
123
  "claude-opus-4-8": {
115
124
  id: "claude-opus-4-8",
116
125
  label: "Opus 4.8",
117
- aliases: ["7", "opus-4.8", "opus-4.7", "claude-opus-4-8", "claude-opus-4-7"],
126
+ aliases: ["8", "opus-4.8", "opus-4.7", "claude-opus-4-8", "claude-opus-4-7"],
118
127
  },
119
128
  "claude-sonnet-5": {
120
129
  id: "claude-sonnet-5",
121
130
  label: "Sonnet 5",
122
- aliases: ["8", "sonnet", "sonnet-5", "sonnet-4.6", "sonnet-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4.6"],
131
+ aliases: ["9", "sonnet", "sonnet-5", "sonnet-4.6", "sonnet-4-6", "claude-sonnet-5", "claude-sonnet-4-6", "claude-sonnet-4.6"],
123
132
  },
124
133
  "claude-fable-5": {
125
134
  id: "claude-fable-5",
126
135
  label: "Fable 5",
127
- aliases: ["9", "fable", "fable-5", "fabel", "fabel-5", "claude-fable-5", "claude-fabel-5"],
136
+ aliases: ["10", "fable", "fable-5", "fabel", "fabel-5", "claude-fable-5", "claude-fabel-5"],
128
137
  premium: true,
129
138
  },
130
139
  "gpt-5.6-terra": {
131
140
  id: "gpt-5.6-terra",
132
141
  label: "GPT-5.6 Terra",
133
- aliases: ["10", "terra", "gpt-5.6-terra", "gpt56-terra"],
142
+ aliases: ["11", "terra", "gpt-5.6-terra", "gpt56-terra"],
134
143
  reasoningEffort: "xhigh",
135
144
  },
136
145
  };
@@ -191,7 +200,7 @@ ${APP_DISPLAY_NAME} v${APP_VERSION}
191
200
 
192
201
  Commands:
193
202
  codexclaude login Login with dashboard username/email and password
194
- codexclaude model Select GPT-5.6 SOL, Opus 5, GPT-5.6, Terra, SOL modes, Opus 4.8, Sonnet 5, or Fable 5
203
+ codexclaude model Select Daybreak Blue, GPT-5.6, Opus 5, Terra, SOL modes, Opus 4.8, Sonnet 5, or Fable 5
195
204
  codexclaude changelog Show the latest CodexAPI.pro launcher changes
196
205
  codexclaude setup Rewrite ~/.codex/config.toml with Full Access defaults
197
206
  codexclaude start Start ${APP_DISPLAY_NAME} with --search
@@ -456,7 +465,8 @@ async function runMandatoryUpgrade(metadata) {
456
465
  const latest = metadata?.latestVersion || "latest";
457
466
  const minimum = metadata?.minimumVersion || latest;
458
467
  const changes = Array.isArray(metadata?.changes) ? metadata.changes.slice(0, 4) : [];
459
- console.error(`\n${APP_DISPLAY_NAME} v${latest} is required before your next coding session.`);
468
+ console.error(`\n✨ Update now available · ${APP_DISPLAY_NAME} v${latest}`);
469
+ console.error(`${APP_DISPLAY_NAME} v${latest} is required before your next coding session.`);
460
470
  console.error(`Installed: v${APP_VERSION} · Required: v${minimum}`);
461
471
  for (const change of changes) {
462
472
  console.error(`- ${change}`);
@@ -485,13 +495,18 @@ async function runMandatoryUpgrade(metadata) {
485
495
  console.log(`\nDownloading and installing ${NPM_PACKAGE_NAME}@latest...`);
486
496
  const npmCommand = process.platform === "win32" ? "npm.cmd" : "npm";
487
497
  let exitCode = await spawnAndWait(npmCommand, ["install", "-g", `${NPM_PACKAGE_NAME}@latest`]);
488
- if (exitCode !== 0) {
498
+ const installedAfterRegistry = exitCode === 0 ? installedLauncherVersion() : null;
499
+ if (exitCode !== 0 || isOlderVersion(installedAfterRegistry, minimum)) {
500
+ if (exitCode === 0) {
501
+ console.log(`\nThe npm registry returned v${installedAfterRegistry || "unknown"}, below required v${minimum}.`);
502
+ }
489
503
  console.log("\nThe npm registry install did not complete. Trying the hosted release automatically...");
490
504
  exitCode = await spawnAndWait(npmCommand, ["install", "-g", HOSTED_TARBALL_URL]);
491
505
  }
492
- if (exitCode !== 0) {
506
+ const installedVersion = exitCode === 0 ? installedLauncherVersion() : null;
507
+ if (exitCode !== 0 || isOlderVersion(installedVersion, minimum)) {
493
508
  throw new Error(
494
- `Automatic upgrade failed with exit code ${exitCode}. Run ${UPDATE_COMMAND}. ` +
509
+ `Automatic upgrade failed with exit code ${exitCode} and installed version ${installedVersion || "unknown"}. Run ${UPDATE_COMMAND}. ` +
495
510
  `If npm is unavailable, use: ${HOSTED_UPDATE_COMMAND}`,
496
511
  );
497
512
  }
@@ -511,6 +526,24 @@ async function runMandatoryUpgrade(metadata) {
511
526
  }
512
527
  }
513
528
 
529
+ function installedLauncherVersion() {
530
+ const command = process.platform === "win32" ? "codexclaude.cmd" : "codexclaude";
531
+ const result = spawnSync(command, ["--version"], {
532
+ encoding: "utf8",
533
+ env: {
534
+ ...process.env,
535
+ CODEXCLAUDE_DISABLE_UPDATE_CHECK: "1",
536
+ CODEXCLAUDE_SKIP_COMMAND_ALIASES: "1",
537
+ },
538
+ shell: false,
539
+ });
540
+ if (result.error || result.status !== 0) {
541
+ return null;
542
+ }
543
+ const match = String(result.stdout || "").match(/\bv(\d+(?:\.\d+){2})\b/i);
544
+ return match?.[1] || null;
545
+ }
546
+
514
547
  async function spawnAndWait(command, args) {
515
548
  return await new Promise((resolve, reject) => {
516
549
  const child = spawn(command, args, { stdio: "inherit", env: process.env, shell: false });
@@ -655,7 +688,8 @@ function printOptionalUpdateNotice(metadata) {
655
688
  const border = "─".repeat(64);
656
689
  const line = (text) => `│ ${String(text)}`.slice(0, 65).padEnd(65) + "│";
657
690
  console.error(`\n┌${border}┐`);
658
- console.error(line(`${APP_DISPLAY_NAME} v${latest} is available. You can keep coding on v${APP_VERSION}.`));
691
+ console.error(line(`✨ Update now available · ${APP_DISPLAY_NAME} v${latest}`));
692
+ console.error(line(`You can keep coding on v${APP_VERSION}.`));
659
693
  console.error(line(`Update when ready: ${installCommand}`));
660
694
  for (const change of changes) {
661
695
  console.error(line(`• ${change}`));
@@ -797,6 +831,9 @@ function modelCatalogDescription(modelId) {
797
831
  if (modelId === "gpt-5.6") {
798
832
  return "GPT-5.6 coding route with local coding tools and wallet billing.";
799
833
  }
834
+ if (modelId === "gpt-daybreak-blue-latest") {
835
+ return "ChatGPT Daybreak Blue coding route for broad defensive cybersecurity work with local coding tools and wallet billing.";
836
+ }
800
837
  if (modelId === "gpt-5.6-sol-max") {
801
838
  return "GPT-5.6 SOL Max premium coding route with local coding tools and wallet billing.";
802
839
  }
@@ -860,6 +897,7 @@ async function runCodex(args) {
860
897
  }
861
898
  if (!isTruthy(process.env.CODEXCLAUDE_QUIET_STATUS)) {
862
899
  console.log(formatStatusLine(config, wallet, process.cwd()));
900
+ console.log(`${ANSI_GREEN}${FABLE_ANNOUNCEMENT}${ANSI_RESET}`);
863
901
  }
864
902
  process.stdout.write(`\x1b]0;${APP_DISPLAY_NAME} v${APP_VERSION}\x07`);
865
903
  const launch = resolveCodexLaunch();
@@ -1021,7 +1059,7 @@ function numericWalletValue(value) {
1021
1059
 
1022
1060
  function formatStatusLine(config, wallet, cwd) {
1023
1061
  const model = modelStatusName(config.model);
1024
- const walletText = wallet ? `Wallet ${formatUsd(wallet.balance)}` : "Wallet unavailable";
1062
+ const walletText = wallet ? `Wallet balance ${formatUsd(wallet.balance)}` : "Wallet balance unavailable";
1025
1063
  return `${APP_DISPLAY_NAME} v${APP_VERSION} · ${model} ${displayReasoningEffortForModel(config.model)} · ${formatCwd(cwd)} · ${walletText}`;
1026
1064
  }
1027
1065
 
@@ -1029,6 +1067,9 @@ function modelStatusName(model) {
1029
1067
  if (model === "gpt-5.6") {
1030
1068
  return "GPT-5.6";
1031
1069
  }
1070
+ if (model === "gpt-daybreak-blue-latest") {
1071
+ return "ChatGPT Daybreak Blue";
1072
+ }
1032
1073
  if (model === "gpt-5.6-sol-max") {
1033
1074
  return "gpt-5.6-sol max";
1034
1075
  }
@@ -1103,6 +1144,9 @@ function normalizeConfig(config) {
1103
1144
  if (["gpt-5-6-terra", "gpt56-terra", "terra"].includes(normalized.model)) {
1104
1145
  normalized.model = "gpt-5.6-terra";
1105
1146
  }
1147
+ if (["daybreak", "daybreak-blue", "chatgpt-daybreak-blue"].includes(normalized.model)) {
1148
+ normalized.model = "gpt-daybreak-blue-latest";
1149
+ }
1106
1150
  if (["gpt-5-6", "gpt56", "chatgpt-5.6", "chatgpt-5-6"].includes(normalized.model)) {
1107
1151
  normalized.model = "gpt-5.6";
1108
1152
  }
package/codexclaude.md CHANGED
@@ -5,12 +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.32`
8
+ - Launcher version: `2.0.34`
9
9
  - Customer-facing app name: `MagnetAPI.org Codex CLI`
10
- - Bundled runtime dependency: `@openai/codex@0.148.0-alpha.6`
10
+ - Bundled runtime dependency: `@openai/codex@0.149.0`
11
11
  - Required install command: `npm install -g @codexapi/codexclaude@latest`
12
- - Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.32.tgz`
13
- - Backend minimum version: `2.0.32`
12
+ - Hosted fallback: `npm install -g https://codexapi.pro/downloads/codexapi-codexclaude-2.0.34.tgz`
13
+ - Backend minimum version: `2.0.34`
14
14
  - Default visible model: `GPT-5.6 SOL`
15
15
  - Default model slug: `gpt-5.6-sol`
16
16
  - Default visible reasoning effort: `Extra High`, stored as `xhigh`; premium SOL Max and SOL Ultra retain their explicit `max` and `ultra` labels.
@@ -25,13 +25,14 @@ This file is the durable handoff for the `@codexapi/codexclaude` package in `/ro
25
25
  The launcher must present itself as:
26
26
 
27
27
  ```text
28
- MagnetAPI.org Codex CLI v2.0.32
28
+ MagnetAPI.org Codex CLI v2.0.34
29
29
  ```
30
30
 
31
31
  Normal pre-launch status should look like:
32
32
 
33
33
  ```text
34
- MagnetAPI.org Codex CLI v2.0.32 · GPT-5.6 SOL Extra High · ~/project · Wallet $20.00
34
+ MagnetAPI.org Codex CLI v2.0.34 · GPT-5.6 SOL Extra High · ~/project · Wallet balance $20.00
35
+ Fable 5 is now available in codexclaude, exclusively.
35
36
  ```
36
37
 
37
38
  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.
@@ -40,6 +41,7 @@ The launcher command `codexclaude model` must list these customer-visible models
40
41
 
41
42
  - `claude-opus-5` displayed as `Opus 5`
42
43
  - `gpt-5.6` displayed as `GPT-5.6`
44
+ - `gpt-daybreak-blue-latest` displayed as `ChatGPT Daybreak Blue`
43
45
  - `gpt-5.6-sol-max` displayed as `GPT-5.6 SOL Max`
44
46
  - `gpt-5.6-sol-ultra` displayed as `GPT-5.6 SOL Ultra`
45
47
  - `gpt-5.6-sol` displayed as `GPT-5.6 SOL`, selected by default for new and invalid configurations
@@ -58,7 +60,7 @@ GPT-5.6 SOL must be the default when a new config is created or a legacy config
58
60
  - `https://codexapi.pro/api/v1/codexclaude/version`
59
61
  - `https://registry.npmjs.org/@codexapi%2Fcodexclaude/latest`
60
62
 
61
- It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.32` is both the enforced minimum and current latest release. Compatible older launchers offer an interactive `Upgrade Now` action; pressing Enter invokes `npm install -g @codexapi/codexclaude@latest` without shell interpolation. If that registry install fails, the launcher automatically tries the hosted tarball. Non-interactive terminals print the exact update command and exit instead of waiting for input. After a successful interactive update, the launcher starts the requested action again automatically.
63
+ It must not check `@openai/codex` npm metadata, OpenAI GitHub releases, or any upstream OpenAI update endpoint. Version `2.0.34` is both the enforced minimum and current latest release. Compatible older launchers offer an interactive `Upgrade Now` action; pressing Enter invokes `npm install -g @codexapi/codexclaude@latest` without shell interpolation. If that registry install fails, the launcher automatically tries the hosted tarball. Non-interactive terminals print the exact update command and exit instead of waiting for input. After a successful interactive update, the launcher starts the requested action again automatically.
62
64
 
63
65
  The npm package manifest owns only `codexclaude`. This is deliberate: npm creates manifest binaries before postinstall, so claiming `codex` there causes an `EEXIST` upgrade failure on machines with native Codex CLI. During a global installation, postinstall may create optional `codex` and `claude` aliases only when neither the target npm prefix nor any directory on `PATH` already contains the command. Existing native clients are preserved and no install path requires `--force`.
64
66
 
@@ -94,7 +96,7 @@ base_url = "<service Responses URL>"
94
96
  experimental_bearer_token = "<customer System Token/API username>"
95
97
  wire_api = "responses"
96
98
  supports_websockets = false
97
- http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.32", "X-CodexAPI-Selected-Model" = "<selected model>" }
99
+ http_headers = { "X-CodexAPI-Client" = "codexclaude", "X-CodexAPI-Client-Version" = "2.0.34", "X-CodexAPI-Selected-Model" = "<selected model>" }
98
100
 
99
101
  [tui]
100
102
  status_line = ["model-with-reasoning", "fast-mode", "current-dir"]
@@ -102,7 +104,7 @@ status_line_use_colors = true
102
104
  terminal_title = ["project-name", "model-with-reasoning", "run-state"]
103
105
  ```
104
106
 
105
- The generated model catalog must contain full metadata for every supported slug, including `gpt-5.6`, `gpt-5.6-terra`, `gpt-5.6-sol-max`, and `gpt-5.6-sol-ultra`. This prevents fallback metadata warnings such as:
107
+ The generated model catalog must contain full metadata for every supported slug, including `gpt-daybreak-blue-latest`, `gpt-5.6`, `gpt-5.6-terra`, `gpt-5.6-sol-max`, and `gpt-5.6-sol-ultra`. This prevents fallback metadata warnings such as:
106
108
 
107
109
  ```text
108
110
  Model metadata for `claude-opus-4-8` not found. Defaulting to fallback metadata; this can degrade performance and cause issues.
@@ -166,7 +168,7 @@ tmp_home="$(mktemp -d)"
166
168
  mkdir -p "$tmp_home/.codexclaude"
167
169
  cat > "$tmp_home/.codexclaude/config.json" <<'JSON'
168
170
  {
169
- "version": "2.0.32",
171
+ "version": "2.0.34",
170
172
  "serviceId": "codexapi",
171
173
  "serviceLabel": "CodexAPI.pro",
172
174
  "apiOrigin": "https://codexapi.pro",
@@ -205,10 +207,25 @@ After packaging, copy the tarball to the public downloads directories, restart t
205
207
 
206
208
  ```bash
207
209
  curl -fsS "https://codexapi.pro/api/v1/codexclaude/version?current=2.0.17"
208
- curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.32.tgz"
210
+ curl -fsSI "https://codexapi.pro/downloads/codexapi-codexclaude-2.0.34.tgz"
209
211
  ```
210
212
 
211
- The version endpoint must report `latestVersion = 2.0.32`, `minimumVersion = 2.0.32`, and `updateRequired = true` for every older client.
213
+ The version endpoint must report `latestVersion = 2.0.34`, `minimumVersion = 2.0.34`, and `updateRequired = true` for every older client.
214
+
215
+ ## Version 2.0.34 Changes
216
+
217
+ - Updated the bundled coding runtime to `@openai/codex@0.149.0`.
218
+ - Kept Fable 5 in the managed catalog and preserved its independent live server route.
219
+ - Added a green Fable 5 availability line and a clearer emoji update surface.
220
+ - Made `2.0.34` mandatory while preserving customer projects, history, login state, valid model selections, Full Access, and safe aliases.
221
+
222
+ ## Version 2.0.33 Changes
223
+
224
+ - Updated the bundled coding runtime to `@openai/codex@0.148.0-alpha.20`.
225
+ - Added `gpt-daybreak-blue-latest` as `ChatGPT Daybreak Blue` exclusively to the managed codexclaude catalog.
226
+ - Added the Daybreak Blue availability line and a clearly labelled live wallet balance before the first prompt.
227
+ - Made `2.0.33` mandatory while preserving customer projects, session history, login state, valid model selections, Full Access, and safe aliases.
228
+ - Added post-install version verification so a stale npm dist-tag cannot trap users in a repeated upgrade loop; the exact hosted release is used automatically when required.
212
229
 
213
230
  ## Version 2.0.32 Changes
214
231
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@codexapi/codexclaude",
3
- "version": "2.0.32",
4
- "description": "MagnetAPI.org Codex CLI for GPT-5.6, Opus 5, Opus 4.8, Sonnet 5, and Fable 5.",
3
+ "version": "2.0.34",
4
+ "description": "MagnetAPI.org Codex CLI for ChatGPT Daybreak Blue, GPT-5.6, Opus 5, Sonnet 5, and Fable 5.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "bin": {
@@ -22,7 +22,7 @@
22
22
  "node": ">=20"
23
23
  },
24
24
  "dependencies": {
25
- "@openai/codex": "0.148.0-alpha.6"
25
+ "@openai/codex": "0.149.0"
26
26
  },
27
27
  "publishConfig": {
28
28
  "access": "public"