diff --git a/.gitignore b/.gitignore index 25a5e13f..3e287daf 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ build/ out/ storybook-static/ +# ignore README for publishing +codex-cli/README.md + # editor .vscode/ .idea/ diff --git a/README.md b/README.md index a5927eda..e5099692 100644 --- a/README.md +++ b/README.md @@ -371,6 +371,21 @@ git push --force-with-lease # updates the PR The **DCO check** blocks merges until every commit in the PR carries the footer (with squash this is just the one). +### Releasing `codex` + +To publish a new version of the CLI, run the release scripts defined in `codex-cli/package.json`: + +1. Open the `codex-cli` directory +2. Make sure you're on a branch like `git checkout -b bump-version` +3. Bump the version and `CLI_VERSION` to current datetime: `npm run release:version` +4. Commit the version bump (with DCO sign-off): + ```bash + git add codex-cli/src/utils/session.ts codex-cli/package.json + git commit -s -m "chore(release): codex-cli v$(node -p \"require('./codex-cli/package.json').version\")" + ``` +5. Copy README, build, and publish to npm: `npm run release` +6. Push to branch: `git push origin HEAD` + --- ## Security & Responsible AI diff --git a/codex-cli/package.json b/codex-cli/package.json index b85a0cc9..2aa366d4 100644 --- a/codex-cli/package.json +++ b/codex-cli/package.json @@ -1,7 +1,6 @@ { - "private": true, "name": "@openai/codex", - "version": "0.1.04160940", + "version": "0.1.04161241", "license": "Apache-2.0", "bin": { "codex": "dist/cli.js" @@ -20,10 +19,15 @@ "test:watch": "vitest --watch", "typecheck": "tsc --noEmit", "build": "node build.mjs", - "build:dev": "NODE_ENV=development node build.mjs --dev && NODE_OPTIONS=--enable-source-maps node dist/cli-dev.js" + "build:dev": "NODE_ENV=development node build.mjs --dev && NODE_OPTIONS=--enable-source-maps node dist/cli-dev.js", + "release:readme": "cp ../README.md ./README.md", + "release:version": "codex -a full-auto 'update the CLI_VERSION in codex-cli/src/utils/session.ts and the version in package.json to use the current timestamp (MMDDHHmm format)'", + "release": "npm run release:readme && npm run build && npm publish" }, "files": [ - "dist" + "README.md", + "dist", + "src" ], "dependencies": { "@inkjs/ui": "^2.0.0", diff --git a/codex-cli/src/cli.tsx b/codex-cli/src/cli.tsx index b86926ab..3cf158a6 100644 --- a/codex-cli/src/cli.tsx +++ b/codex-cli/src/cli.tsx @@ -1,4 +1,4 @@ -#!/usr/bin/env -S NODE_OPTIONS=--no-deprecation node +#!/usr/bin/env node import type { AppRollout } from "./app"; import type { CommandConfirmation } from "./utils/agent/agent-loop"; diff --git a/codex-cli/src/utils/session.ts b/codex-cli/src/utils/session.ts index b53c12a4..287d0d7e 100644 --- a/codex-cli/src/utils/session.ts +++ b/codex-cli/src/utils/session.ts @@ -1,4 +1,4 @@ -export const CLI_VERSION = "0.1.04160940"; // Must be in sync with package.json. +export const CLI_VERSION = "0.1.04161241"; // Must be in sync with package.json. export const ORIGIN = "codex_cli_ts"; export type TerminalChatSession = {