@simplysm/sd-cli 14.0.54 → 14.0.56

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.
@@ -42,7 +42,7 @@ export async function setupIcon(pkgPath, capPath, iconRelPath) {
42
42
  "capacitor-assets",
43
43
  "generate",
44
44
  "--iconBackgroundColor",
45
- "transparent",
45
+ "#ffffff",
46
46
  "--splashBackgroundColor",
47
47
  "transparent",
48
48
  "--logoSplashScale",
@@ -1 +1 @@
1
- {"version":3,"file":"capacitor-icon.js","sourceRoot":"","sources":["../../src/capacitor/capacitor-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAE9C,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;aACxC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;aACnD,GAAG,EAAE;aACL,QAAQ,EAAE,CAAC;QAEd,uBAAuB;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE3D,MAAM,KAAK,CAAC;YACV,MAAM,EAAE;gBACN,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,CAAU;gBACpB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3C;SACF,CAAC;aACC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;aACxD,GAAG,EAAE;aACL,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpB,uCAAuC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QACjD,MAAM,GAAG,CAAC,KAAK,CACb,MAAM,EACN;YACE,MAAM;YACN,kBAAkB;YAClB,UAAU;YACV,uBAAuB;YACvB,aAAa;YACb,yBAAyB;YACzB,aAAa;YACb,mBAAmB;YACnB,KAAK;SACN,EACD;YACE,GAAG,EAAE,OAAO;YACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"capacitor-icon.js","sourceRoot":"","sources":["../../src/capacitor/capacitor-icon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,OAAe,EACf,WAAmB;IAEnB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE1D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAE9C,sCAAsC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;aACxC,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;aACnD,GAAG,EAAE;aACL,QAAQ,EAAE,CAAC;QAEd,uBAAuB;QACvB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAE3D,MAAM,KAAK,CAAC;YACV,MAAM,EAAE;gBACN,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,CAAU;gBACpB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;aAC3C;SACF,CAAC;aACC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;aACxD,GAAG,EAAE;aACL,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpB,uCAAuC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;QACjD,MAAM,GAAG,CAAC,KAAK,CACb,MAAM,EACN;YACE,MAAM;YACN,kBAAkB;YAClB,UAAU;YACV,uBAAuB;YACvB,SAAS;YACT,yBAAyB;YACzB,aAAa;YACb,mBAAmB;YACnB,KAAK;SACN,EACD;YACE,GAAG,EAAE,OAAO;YACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { consola } from "consola";
2
2
  /**
3
- * 미커밋 변경사항을 감지하고 Claude CLI로 자동 커밋을 시도한다.
3
+ * 미커밋 변경사항을 감지하고 Codex CLI로 자동 커밋을 시도한다.
4
4
  * @throws 자동 커밋 실패 시 Error
5
5
  */
6
6
  export declare function ensureCleanWorkingTree(hasGit: boolean, logger: ReturnType<typeof consola.withTag>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"git-phase.d.ts","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAC1C,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
1
+ {"version":3,"file":"git-phase.d.ts","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,EAC1C,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -1,6 +1,6 @@
1
1
  import { cpx } from "@simplysm/core-node";
2
2
  /**
3
- * 미커밋 변경사항을 감지하고 Claude CLI로 자동 커밋을 시도한다.
3
+ * 미커밋 변경사항을 감지하고 Codex CLI로 자동 커밋을 시도한다.
4
4
  * @throws 자동 커밋 실패 시 Error
5
5
  */
6
6
  export async function ensureCleanWorkingTree(hasGit, logger) {
@@ -11,31 +11,21 @@ export async function ensureCleanWorkingTree(hasGit, logger) {
11
11
  const { stdout: stagedDiff } = await cpx.spawn("git", ["diff", "--cached", "--name-only"]);
12
12
  if (diff.trim() === "" && stagedDiff.trim() === "")
13
13
  return;
14
- logger.info("커밋되지 않은 변경사항 감지. claude로 자동 커밋 시도 중...");
14
+ logger.info("커밋되지 않은 변경사항 감지. codex로 자동 커밋 시도 중...");
15
15
  try {
16
- await cpx.spawn("claude", [
17
- "-p",
18
- "/sd-commit",
19
- "--dangerously-skip-permissions",
16
+ await cpx.spawn("pnpm", [
17
+ "exec",
18
+ "codex",
19
+ "exec",
20
+ "--dangerously-bypass-approvals-and-sandbox",
21
+ "--ephemeral",
20
22
  "--model",
21
- "claude-haiku-4-5",
22
- "--no-session-persistence",
23
- "--strict-mcp-config",
23
+ "gpt-5.3-codex-spark",
24
+ "-c",
25
+ 'model_reasoning_effort="low"',
26
+ "$sd-commit",
24
27
  ], {
25
28
  stdio: "inherit",
26
- env: {
27
- // eslint-disable-next-line no-restricted-properties -- 자식 프로세스에 env 전달
28
- ...process.env,
29
- MCP_CONNECTION_NONBLOCKING: "true",
30
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1",
31
- DISABLE_TELEMETRY: "1",
32
- CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: "1",
33
- CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1",
34
- CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING: "1",
35
- CLAUDE_CODE_DISABLE_SESSION_DATA_UPLOAD: "1",
36
- CLAUDE_CODE_SKIP_PROMPT_HISTORY: "1",
37
- CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1",
38
- },
39
29
  });
40
30
  }
41
31
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"git-phase.js","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-phase.js","sourceRoot":"","sources":["../../../src/commands/publish/git-phase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "14.0.54",
3
+ "version": "14.0.56",
4
4
  "description": "Simplysm package - CLI tool",
5
5
  "author": "simplysm",
6
6
  "license": "Apache-2.0",
@@ -44,9 +44,9 @@
44
44
  "ws": "^8.20.0",
45
45
  "yaml": "^2.8.3",
46
46
  "yargs": "^18.0.0",
47
- "@simplysm/core-node": "14.0.54",
48
- "@simplysm/core-common": "14.0.54",
49
- "@simplysm/storage": "14.0.54"
47
+ "@simplysm/core-common": "14.0.56",
48
+ "@simplysm/core-node": "14.0.56",
49
+ "@simplysm/storage": "14.0.56"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/semver": "^7.7.1",
@@ -57,7 +57,7 @@ export async function setupIcon(
57
57
  "capacitor-assets",
58
58
  "generate",
59
59
  "--iconBackgroundColor",
60
- "transparent",
60
+ "#ffffff",
61
61
  "--splashBackgroundColor",
62
62
  "transparent",
63
63
  "--logoSplashScale",
@@ -2,7 +2,7 @@ import type { consola } from "consola";
2
2
  import { cpx } from "@simplysm/core-node";
3
3
 
4
4
  /**
5
- * 미커밋 변경사항을 감지하고 Claude CLI로 자동 커밋을 시도한다.
5
+ * 미커밋 변경사항을 감지하고 Codex CLI로 자동 커밋을 시도한다.
6
6
  * @throws 자동 커밋 실패 시 Error
7
7
  */
8
8
  export async function ensureCleanWorkingTree(
@@ -18,34 +18,24 @@ export async function ensureCleanWorkingTree(
18
18
 
19
19
  if (diff.trim() === "" && stagedDiff.trim() === "") return;
20
20
 
21
- logger.info("커밋되지 않은 변경사항 감지. claude로 자동 커밋 시도 중...");
21
+ logger.info("커밋되지 않은 변경사항 감지. codex로 자동 커밋 시도 중...");
22
22
  try {
23
23
  await cpx.spawn(
24
- "claude",
24
+ "pnpm",
25
25
  [
26
- "-p",
27
- "/sd-commit",
28
- "--dangerously-skip-permissions",
26
+ "exec",
27
+ "codex",
28
+ "exec",
29
+ "--dangerously-bypass-approvals-and-sandbox",
30
+ "--ephemeral",
29
31
  "--model",
30
- "claude-haiku-4-5",
31
- "--no-session-persistence",
32
- "--strict-mcp-config",
32
+ "gpt-5.3-codex-spark",
33
+ "-c",
34
+ 'model_reasoning_effort="low"',
35
+ "$sd-commit",
33
36
  ],
34
37
  {
35
38
  stdio: "inherit",
36
- env: {
37
- // eslint-disable-next-line no-restricted-properties -- 자식 프로세스에 env 전달
38
- ...process.env,
39
- MCP_CONNECTION_NONBLOCKING: "true",
40
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1",
41
- DISABLE_TELEMETRY: "1",
42
- CLAUDE_CODE_DISABLE_BACKGROUND_TASKS: "1",
43
- CLAUDE_CODE_DISABLE_AUTO_MEMORY: "1",
44
- CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING: "1",
45
- CLAUDE_CODE_DISABLE_SESSION_DATA_UPLOAD: "1",
46
- CLAUDE_CODE_SKIP_PROMPT_HISTORY: "1",
47
- CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1",
48
- },
49
39
  },
50
40
  );
51
41
  } catch (e) {
@@ -171,7 +171,12 @@ describe("Capacitor 아이콘 처리", () => {
171
171
  const assetsCmd = execaCalls.find(
172
172
  (c) => c.command === "pnpm" && c.args.includes("capacitor-assets"),
173
173
  );
174
- expect(assetsCmd).toBeDefined();
174
+ if (assetsCmd == null) {
175
+ throw new Error("capacitor-assets generate 명령이 실행되지 않았습니다.");
176
+ }
177
+ const iconBackgroundColorArgIndex = assetsCmd.args.indexOf("--iconBackgroundColor");
178
+ expect(iconBackgroundColorArgIndex).not.toBe(-1);
179
+ expect(assetsCmd.args[iconBackgroundColorArgIndex + 1]).toBe("#ffffff");
175
180
 
176
181
  // sharp가 소스 이미지를 처리했는지 확인
177
182
  expect(mockSharp).toHaveBeenCalled();
@@ -259,5 +264,22 @@ describe("Capacitor 아이콘 처리", () => {
259
264
  );
260
265
  expect(logoCall).toBeDefined();
261
266
  });
267
+
268
+ it("capacitor-assets generate 명령에 흰색 아이콘 배경색을 전달한다", async () => {
269
+ const { setupIcon } = await import("../../src/capacitor/capacitor-icon.js");
270
+
271
+ await setupIcon(PKG_PATH, _CAP_PATH, "assets/icon.png");
272
+
273
+ const assetsCmd = execaCalls.find(
274
+ (c) => c.command === "pnpm" && c.args.includes("capacitor-assets"),
275
+ );
276
+ if (assetsCmd == null) {
277
+ throw new Error("capacitor-assets generate 명령이 실행되지 않았습니다.");
278
+ }
279
+
280
+ const iconBackgroundColorArgIndex = assetsCmd.args.indexOf("--iconBackgroundColor");
281
+ expect(iconBackgroundColorArgIndex).not.toBe(-1);
282
+ expect(assetsCmd.args[iconBackgroundColorArgIndex + 1]).toBe("#ffffff");
283
+ });
262
284
  });
263
285
  });
@@ -29,7 +29,7 @@ describe("ensureCleanWorkingTree", () => {
29
29
  vi.clearAllMocks();
30
30
  });
31
31
 
32
- it("auto-commits with claude when uncommitted changes detected", async () => {
32
+ it("auto-commits with codex when uncommitted changes detected", async () => {
33
33
  const logger = createLogger();
34
34
  mocks.execa.mockImplementation((cmd: string, args?: string[]) => {
35
35
  if (cmd === "git" && args?.[0] === "diff") {
@@ -40,11 +40,14 @@ describe("ensureCleanWorkingTree", () => {
40
40
 
41
41
  await ensureCleanWorkingTree(true, logger);
42
42
 
43
- const claudeCalls = mocks.execa.mock.calls.filter(
44
- (c: unknown[]) => c[0] === "claude",
43
+ const codexCalls = mocks.execa.mock.calls.filter(
44
+ (c: unknown[]) => c[0] === "codex",
45
45
  );
46
- expect(claudeCalls).toHaveLength(1);
47
- expect((claudeCalls[0][1] as string[])).toContain("/sd-commit");
46
+ expect(codexCalls).toHaveLength(1);
47
+ expect((codexCalls[0][1] as string[])).toContain("exec");
48
+ expect((codexCalls[0][1] as string[])).toContain("gpt-5.3-codex-spark");
49
+ expect((codexCalls[0][1] as string[])).toContain('model_reasoning_effort="low"');
50
+ expect((codexCalls[0][1] as string[])).toContain("$sd-commit");
48
51
  });
49
52
 
50
53
  it("skips auto-commit when no uncommitted changes", async () => {
@@ -55,20 +58,20 @@ describe("ensureCleanWorkingTree", () => {
55
58
 
56
59
  await ensureCleanWorkingTree(true, logger);
57
60
 
58
- const claudeCalls = mocks.execa.mock.calls.filter(
59
- (c: unknown[]) => c[0] === "claude",
61
+ const codexCalls = mocks.execa.mock.calls.filter(
62
+ (c: unknown[]) => c[0] === "codex",
60
63
  );
61
- expect(claudeCalls).toHaveLength(0);
64
+ expect(codexCalls).toHaveLength(0);
62
65
  });
63
66
 
64
- it("throws when claude auto-commit fails", async () => {
67
+ it("throws when codex auto-commit fails", async () => {
65
68
  const logger = createLogger();
66
69
  mocks.execa.mockImplementation((cmd: string, args?: string[]) => {
67
70
  if (cmd === "git" && args?.[0] === "diff") {
68
71
  return { stdout: "file.txt", stderr: "", exitCode: 0 };
69
72
  }
70
- if (cmd === "claude") {
71
- throw new Error("claude commit failed");
73
+ if (cmd === "codex") {
74
+ throw new Error("codex commit failed");
72
75
  }
73
76
  return { stdout: "", stderr: "", exitCode: 0 };
74
77
  });
@@ -385,7 +385,7 @@ describe("runPublish", () => {
385
385
  expect(getExecaCalls("npm", "whoami")).toHaveLength(0);
386
386
  });
387
387
 
388
- it("auto-commits with claude when uncommitted changes detected", async () => {
388
+ it("auto-commits with codex when uncommitted changes detected", async () => {
389
389
  setupHappyPath();
390
390
  mocks.execa.mockImplementation(
391
391
  (cmd: string, args?: string[], _opts?: unknown) => {
@@ -404,23 +404,26 @@ describe("runPublish", () => {
404
404
  options: [],
405
405
  });
406
406
 
407
- // claude CLI should have been called for auto-commit
408
- const claudeCalls = mocks.execa.mock.calls.filter(
409
- (c: unknown[]) => c[0] === "claude",
407
+ // codex CLI should have been called for auto-commit
408
+ const codexCalls = mocks.execa.mock.calls.filter(
409
+ (c: unknown[]) => c[0] === "codex",
410
410
  );
411
- expect(claudeCalls).toHaveLength(1);
412
- expect((claudeCalls[0][1] as string[])).toContain("/sd-commit");
411
+ expect(codexCalls).toHaveLength(1);
412
+ expect((codexCalls[0][1] as string[])).toContain("exec");
413
+ expect((codexCalls[0][1] as string[])).toContain("gpt-5.3-codex-spark");
414
+ expect((codexCalls[0][1] as string[])).toContain('model_reasoning_effort="low"');
415
+ expect((codexCalls[0][1] as string[])).toContain("$sd-commit");
413
416
  });
414
417
 
415
- it("aborts when auto-commit claude command fails", async () => {
418
+ it("aborts when auto-commit codex command fails", async () => {
416
419
  setupHappyPath();
417
420
  mocks.execa.mockImplementation((cmd: string, args?: string[]) => {
418
421
  if (cmd === "npm") return { stdout: "testuser", stderr: "", exitCode: 0 };
419
422
  if (cmd === "git" && args?.[0] === "diff") {
420
423
  return { stdout: "file.txt", stderr: "", exitCode: 0 };
421
424
  }
422
- if (cmd === "claude") {
423
- throw new Error("claude commit failed");
425
+ if (cmd === "codex") {
426
+ throw new Error("codex commit failed");
424
427
  }
425
428
  return { stdout: "", stderr: "", exitCode: 0 };
426
429
  });
@@ -445,11 +448,11 @@ describe("runPublish", () => {
445
448
  options: [],
446
449
  });
447
450
 
448
- // No claude CLI calls
449
- const claudeCalls = mocks.execa.mock.calls.filter(
450
- (c: unknown[]) => c[0] === "claude",
451
+ // No codex CLI calls
452
+ const codexCalls = mocks.execa.mock.calls.filter(
453
+ (c: unknown[]) => c[0] === "codex",
451
454
  );
452
- expect(claudeCalls).toHaveLength(0);
455
+ expect(codexCalls).toHaveLength(0);
453
456
  });
454
457
  });
455
458