@jiawang1209/codex-hud 0.1.6 → 0.1.7
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 +2 -0
- package/README.md +31 -1
- package/dist/installer.d.ts +1 -0
- package/dist/installer.js +7 -2
- package/dist/installer.js.map +1 -1
- package/dist/native-runner.d.ts +2 -1
- package/dist/native-runner.js +21 -5
- package/dist/native-runner.js.map +1 -1
- package/docs/installation.md +5 -3
- package/docs/native-codex-cli-patch.md +1 -1
- package/package.json +1 -1
- package/patches/codex-cli-command-statusline.patch +10 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
5
|
- Add Windows native shim support with `codex.cmd` and `codex-hud.cmd status` for command-backed HUD injection.
|
|
6
|
+
- Use npm's global shim directory as the default Windows shim target, with backup/restore for existing official `codex.cmd` shims.
|
|
7
|
+
- Run command-backed status lines through `cmd.exe /C` on native Windows while keeping `sh -lc` for macOS, Linux, and WSL.
|
|
6
8
|
- Document the difference between Codex CLI built-in status-line items and the exact `codex-hud status` renderer.
|
|
7
9
|
|
|
8
10
|
## 0.1.1
|
package/README.md
CHANGED
|
@@ -126,7 +126,37 @@ codex
|
|
|
126
126
|
|
|
127
127
|
If `codex` still resolves to the official binary after install, put the shim directory before the existing Codex binary in `PATH`.
|
|
128
128
|
|
|
129
|
-
On Windows, `codex-hud install` writes `codex.cmd` and injects `codex-hud.cmd status` so PowerShell execution policy does not block npm's `.ps1` shim.
|
|
129
|
+
On Windows, `codex-hud install` writes `codex.cmd` and injects `codex-hud.cmd status` so PowerShell execution policy does not block npm's `.ps1` shim. The default Windows shim directory is npm's global shim directory under `%APPDATA%\npm`. If an official `codex.cmd` already exists there, Codex HUD backs it up before installing its own shim and restores it during `codex-hud uninstall-shim`.
|
|
130
|
+
|
|
131
|
+
### Windows: PowerShell/CMD and WSL
|
|
132
|
+
|
|
133
|
+
Windows has two supported install styles. Keep them separate so the correct shim is first in `PATH`.
|
|
134
|
+
|
|
135
|
+
PowerShell or CMD uses the native Windows `.cmd` shim:
|
|
136
|
+
|
|
137
|
+
```powershell
|
|
138
|
+
npm install -g @openai/codex
|
|
139
|
+
npm install -g @jiawang1209/codex-hud
|
|
140
|
+
codex-hud install
|
|
141
|
+
where codex
|
|
142
|
+
codex-hud doctor
|
|
143
|
+
codex
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
`where codex` should list the Codex HUD shim first, usually under `C:\Users\<you>\AppData\Roaming\npm\codex.cmd`. This path launches `codex-hud.cmd status` in the footer. Use `codex-hud install --bin-dir <path>` only if you want a different shim directory.
|
|
147
|
+
|
|
148
|
+
WSL uses the Linux shim inside WSL:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
npm install -g @openai/codex
|
|
152
|
+
npm install -g @jiawang1209/codex-hud
|
|
153
|
+
codex-hud install
|
|
154
|
+
which codex
|
|
155
|
+
codex-hud doctor
|
|
156
|
+
codex
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
`which codex` should point to the WSL/Linux shim, usually under `~/.local/bin/codex`. Do not mix the Windows `codex.cmd` path into WSL, and do not use the WSL shim from PowerShell.
|
|
130
160
|
|
|
131
161
|
## Built-In Status Line Fallback
|
|
132
162
|
|
package/dist/installer.d.ts
CHANGED
package/dist/installer.js
CHANGED
|
@@ -37,7 +37,7 @@ export function buildInstallPlan(options) {
|
|
|
37
37
|
const codexSource = options.codexSource ?? defaultCodexSource();
|
|
38
38
|
const codexBinaryName = platform === "win32" ? "codex.exe" : "codex";
|
|
39
39
|
const codexBinary = path.join(codexSource, "codex-rs", "target", "debug", codexBinaryName);
|
|
40
|
-
const binDir = options.binDir ?? defaultShimBinDir();
|
|
40
|
+
const binDir = options.binDir ?? defaultShimBinDir({ env: options.env, platform });
|
|
41
41
|
const shimName = platform === "win32" ? "codex.cmd" : "codex";
|
|
42
42
|
return {
|
|
43
43
|
codexSource,
|
|
@@ -75,7 +75,12 @@ export async function installProduct(options) {
|
|
|
75
75
|
const buildCode = await spawnInherited("cargo", ["build", "-p", "codex-cli"], path.join(plan.codexSource, "codex-rs"));
|
|
76
76
|
if (buildCode !== 0)
|
|
77
77
|
return buildCode;
|
|
78
|
-
const shim = await installCodexShim({
|
|
78
|
+
const shim = await installCodexShim({
|
|
79
|
+
binDir: options.binDir,
|
|
80
|
+
codexPath: plan.codexBinary,
|
|
81
|
+
env: options.env,
|
|
82
|
+
platform: options.platform,
|
|
83
|
+
});
|
|
79
84
|
const action = shim.changed ? "installed" : "already installed";
|
|
80
85
|
process.stdout.write(`codex-hud: native Codex adapter ready at ${plan.codexBinary}\n`);
|
|
81
86
|
process.stdout.write(`codex-hud: codex shim ${action} at ${shim.path}\n`);
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiB9C,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,WAA+B,CAAC;IACpC,IAAI,MAA0B,CAAC;IAE/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,gBAAgB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAChD,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAA8B;IAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9D,OAAO;QACL,WAAW;QACX,WAAW;QACX,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;QACrC,QAAQ,EAAE;YACR,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,eAAe,EAAE,qCAAqC,EAAE,WAAW,CAAC;YACjH,CAAC,KAAK,EAAE,OAAO,EAAE,4CAA4C,CAAC;YAC9D,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC;SACtC;KACF,CAAC;AACJ,CAAC;AAID,MAAM,UAAU,qBAAqB,CAAC,QAAiB,EAAE,eAAwB;IAC/E,IAAI,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,eAAe;QAAE,OAAO,iBAAiB,CAAC;IAC9C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA8B;IACjE,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACjG,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9B,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IACvH,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,IAAI,CAAC,WAAW;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;IACvF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACtF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,oCAAoC,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/F,MAAM,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;IACnH,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAEhE,IAAI,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACxE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,WAAW,IAAI,CAAC,CAAC;QACvF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC7G,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,eAAe,CAAC,IAAwB;IAC/C,OAAO;QACL,yBAAyB;QACzB,mBAAmB,IAAI,CAAC,WAAW,EAAE;QACrC,mBAAmB,IAAI,CAAC,WAAW,EAAE;QACrC,gBAAgB,IAAI,CAAC,QAAQ,EAAE;QAC/B,aAAa;QACb,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;KAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW;IAClE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,GAAW;IAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/native-runner.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export interface NativeOptions {
|
|
|
6
6
|
export interface ShimOptions {
|
|
7
7
|
binDir?: string;
|
|
8
8
|
codexPath?: string;
|
|
9
|
+
env?: NodeJS.ProcessEnv;
|
|
9
10
|
platform?: NodeJS.Platform;
|
|
10
11
|
}
|
|
11
12
|
export interface ShimResult {
|
|
@@ -21,7 +22,7 @@ export declare function parseShimArgs(args: string[]): ShimOptions;
|
|
|
21
22
|
export declare function buildNativeCodexArgs(codexArgs: string[], options?: Pick<ShimOptions, "platform">): string[];
|
|
22
23
|
export declare function resolveNativeCodexPath(explicitPath?: string): string;
|
|
23
24
|
export declare function runNativeCodex(options: NativeOptions): Promise<number>;
|
|
24
|
-
export declare function defaultShimBinDir(): string;
|
|
25
|
+
export declare function defaultShimBinDir(options?: Pick<ShimOptions, "env" | "platform">): string;
|
|
25
26
|
export declare function buildShimScript(options: {
|
|
26
27
|
codexPath: string;
|
|
27
28
|
platform?: NodeJS.Platform;
|
package/dist/native-runner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import { chmod, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { chmod, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import process from "node:process";
|
|
@@ -66,7 +66,12 @@ export async function runNativeCodex(options) {
|
|
|
66
66
|
CODEX_HUD_FORCE_COLOR: "1",
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
|
-
export function defaultShimBinDir() {
|
|
69
|
+
export function defaultShimBinDir(options = {}) {
|
|
70
|
+
const platform = options.platform ?? process.platform;
|
|
71
|
+
const env = options.env ?? process.env;
|
|
72
|
+
if (platform === "win32" && env.APPDATA) {
|
|
73
|
+
return path.join(env.APPDATA, "npm");
|
|
74
|
+
}
|
|
70
75
|
return path.join(os.homedir(), ".local", "bin");
|
|
71
76
|
}
|
|
72
77
|
export function buildShimScript(options) {
|
|
@@ -86,15 +91,19 @@ export function buildShimScript(options) {
|
|
|
86
91
|
].join("\n");
|
|
87
92
|
}
|
|
88
93
|
export async function installCodexShim(options = {}) {
|
|
89
|
-
const binDir = options.binDir ?? defaultShimBinDir();
|
|
94
|
+
const binDir = options.binDir ?? defaultShimBinDir({ env: options.env, platform: options.platform });
|
|
90
95
|
const shimPath = path.join(binDir, isWindows(options.platform) ? "codex.cmd" : "codex");
|
|
96
|
+
const backupPath = backupShimPath(shimPath);
|
|
91
97
|
const codexPath = resolveNativeCodexPath(options.codexPath);
|
|
92
98
|
const script = buildShimScript({ codexPath, platform: options.platform });
|
|
93
99
|
await mkdir(binDir, { recursive: true });
|
|
94
100
|
const existing = await readOptionalFile(shimPath);
|
|
95
101
|
if (existing !== undefined) {
|
|
96
102
|
if (!existing.includes(SHIM_MARKER)) {
|
|
97
|
-
|
|
103
|
+
if (await readOptionalFile(backupPath) !== undefined) {
|
|
104
|
+
throw new Error(`codex already exists at ${shimPath} and backup already exists at ${backupPath}`);
|
|
105
|
+
}
|
|
106
|
+
await rename(shimPath, backupPath);
|
|
98
107
|
}
|
|
99
108
|
if (existing === script) {
|
|
100
109
|
return { changed: false, path: shimPath };
|
|
@@ -105,13 +114,17 @@ export async function installCodexShim(options = {}) {
|
|
|
105
114
|
return { changed: true, path: shimPath };
|
|
106
115
|
}
|
|
107
116
|
export async function removeCodexShim(options = {}) {
|
|
108
|
-
const binDir = options.binDir ?? defaultShimBinDir();
|
|
117
|
+
const binDir = options.binDir ?? defaultShimBinDir({ platform: options.platform });
|
|
109
118
|
const shimPath = path.join(binDir, isWindows(options.platform) ? "codex.cmd" : "codex");
|
|
119
|
+
const backupPath = backupShimPath(shimPath);
|
|
110
120
|
const existing = await readOptionalFile(shimPath);
|
|
111
121
|
if (existing === undefined || !existing.includes(SHIM_MARKER)) {
|
|
112
122
|
return { path: shimPath, removed: false };
|
|
113
123
|
}
|
|
114
124
|
await rm(shimPath, { force: true });
|
|
125
|
+
if (await readOptionalFile(backupPath) !== undefined) {
|
|
126
|
+
await rename(backupPath, shimPath);
|
|
127
|
+
}
|
|
115
128
|
return { path: shimPath, removed: true };
|
|
116
129
|
}
|
|
117
130
|
function isWindows(platform) {
|
|
@@ -120,6 +133,9 @@ function isWindows(platform) {
|
|
|
120
133
|
function quoteCmdArg(value) {
|
|
121
134
|
return `"${value.replace(/"/g, '""')}"`;
|
|
122
135
|
}
|
|
136
|
+
function backupShimPath(shimPath) {
|
|
137
|
+
return `${shimPath}.codex-hud-backup`;
|
|
138
|
+
}
|
|
123
139
|
async function readOptionalFile(filePath) {
|
|
124
140
|
try {
|
|
125
141
|
return await readFile(filePath, "utf8");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-runner.js","sourceRoot":"","sources":["../src/native-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"native-runner.js","sourceRoot":"","sources":["../src/native-runner.ts"],"names":[],"mappings":"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"}
|
package/docs/installation.md
CHANGED
|
@@ -14,7 +14,8 @@ codex
|
|
|
14
14
|
- applies the bundled command-backed status-line patch
|
|
15
15
|
- builds the patched Codex binary
|
|
16
16
|
- installs a reversible `codex` shim in `~/.local/bin`
|
|
17
|
-
- on Windows, writes `codex.cmd` and uses `codex-hud.cmd status` to avoid PowerShell `.ps1` execution-policy blocks
|
|
17
|
+
- on Windows, writes `codex.cmd` in npm's global shim directory and uses `codex-hud.cmd status` to avoid PowerShell `.ps1` execution-policy blocks
|
|
18
|
+
- backs up an existing official `codex.cmd` shim before replacing it, then restores that backup during `codex-hud uninstall-shim`
|
|
18
19
|
|
|
19
20
|
After that, users run `codex` normally and Codex HUD is injected into the native Codex footer.
|
|
20
21
|
|
|
@@ -37,10 +38,11 @@ Use this when you already keep a Codex source checkout somewhere else or need a
|
|
|
37
38
|
Windows PowerShell example:
|
|
38
39
|
|
|
39
40
|
```powershell
|
|
40
|
-
codex-hud install
|
|
41
|
+
codex-hud install
|
|
42
|
+
where codex
|
|
41
43
|
```
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
`where codex` should list the Codex HUD shim first. Use `--bin-dir <path>` only when you want to install the shim into another directory that already appears early in `PATH`.
|
|
44
46
|
|
|
45
47
|
## Fallback Without Native Adapter
|
|
46
48
|
|
|
@@ -8,7 +8,7 @@ This repository currently tracks a local proof-of-concept patch against OpenAI C
|
|
|
8
8
|
/Users/liuyue/Desktop/Github_repos/openai-codex
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
The patch adds support for a `command:` item in `tui.status_line`. When present, Codex runs the command from the current session directory and renders stdout in the native bottom footer. Multi-line stdout is preserved, so `codex-hud status` can appear as a lower native HUD:
|
|
11
|
+
The patch adds support for a `command:` item in `tui.status_line`. When present, Codex runs the command from the current session directory and renders stdout in the native bottom footer. It uses `sh -lc` on macOS/Linux/WSL and `cmd.exe /C` on native Windows. Multi-line stdout is preserved, so `codex-hud status` can appear as a lower native HUD:
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
14
|
[gpt-5.5 medium] │ codex-hud git:(feat/codex-hud-mvp*)
|
package/package.json
CHANGED
|
@@ -391,12 +391,16 @@ index e34fe46..a369367 100644
|
|
|
391
391
|
+}
|
|
392
392
|
+
|
|
393
393
|
+fn status_line_command_output(command: &str, cwd: &Path) -> Option<Vec<Line<'static>>> {
|
|
394
|
-
+ let
|
|
395
|
-
+
|
|
396
|
-
+ .arg(command)
|
|
397
|
-
+
|
|
398
|
-
+
|
|
399
|
-
+
|
|
394
|
+
+ let mut process = if cfg!(windows) {
|
|
395
|
+
+ let mut process = Command::new("cmd");
|
|
396
|
+
+ process.arg("/C").arg(command);
|
|
397
|
+
+ process
|
|
398
|
+
+ } else {
|
|
399
|
+
+ let mut process = Command::new("sh");
|
|
400
|
+
+ process.arg("-lc").arg(command);
|
|
401
|
+
+ process
|
|
402
|
+
+ };
|
|
403
|
+
+ let output = process.current_dir(cwd).output().ok()?;
|
|
400
404
|
+
|
|
401
405
|
+ if !output.status.success() {
|
|
402
406
|
+ return None;
|