CommandCodeAI / CommandCodeAI/command-code

`cmd update` reports success but does not update the installed binary (when installed via bun)

オープン
#666 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
言語のデータがありません
スター
4k
フォーク
350
PR マージ指標
30日以内にマージされた PR はありません

説明

Summary

cmd update prints "✔ Updated to v1.17.0" but cmd --version stays on the old version. No error is shown. The self-updater assumes npm
global install and never touches bun-installed binaries, so the update silently no-ops for bun users.

Expected Behavior
  • cmd update upgrades the binary that is actually on PATH.
  • After update, cmd --version shows the new version.
  • If the binary did not change, the command reports failure (non-zero exit) with manual instructions — never a false success.
  • --check-only behavior is preserved.
Actual Behavior
  • cmd update always runs npm i -g command-code (hardcoded updateCommand in updateAction2runCliUpdateCommand).
  • On a bun install (~/.bun/bin/cmd → bun global node_modules), the new version lands in npm's global dir as an orphan copy (no cmd bin link), while the PATH binary is untouched.
  • Success is reported from the install command's exit code, not from the on-disk version changing.
Steps to reproduce the issue
  1. Install via bun: bun i -g command-code
  2. Run cmd update → prints "✔ Updated to v1.17.0. Run cmd to start using the new version."
  3. Run cmd --version → still old version (e.g. 1.14.0)
  4. Confirm orphan copy: ls /opt/homebrew/lib/node_modules/command-code (npm prefix) vs ls ~/.bun/install/global/node_modules/command-code (bun) — versions differ.
Command Code Version

1.14.0

Operating System

macOS

Terminal/IDE

ghostty

Shell

zsh

Session file (optional)

No response

Fix prompt (optional)

Fix the self-update logic so it updates the binary that is really on PATH:

  1. Detect install method before updating. Inspect the resolved binary path (process.argv[1]; e.g. .bun/install/global/...,
    /opt/homebrew/bin, npx shim) and/or probe package-manager globals for command-code (bun: ~/.bun/install/global, npm: npm root -g,
    brew: brew list).
  2. Update via the matching manager:
    • bun → bun i -g command-code@latest
    • npm → npm i -g command-code@latest
    • brew → brew upgrade command-code (if available)
    • unknown → current behavior + warning.
  3. Verify after update. Compare the version of the resolved install before/after (package.json or --version). Report success only
    if the PATH binary version actually changed.
  4. On stale binary → print failure with manual instructions, exit non-zero.
  5. Keep --check-only semantics; keep telemetry, add install_method field if cheap.

Acceptance criteria:

  • bun install: cmd update upgrades the bun copy; cmd --version shows new version; no orphan npm copy created.
  • npm install: behavior unchanged.
  • Update command succeeds but version unchanged → failure, non-zero exit, manual instructions.
  • Unit tests cover: method detection (bun/npm/brew/path shims), command selection per method, post-update verification (success + stale
    cases).
Additional context

OS: macOS Tahoe 26.5.2

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

ハードコードされた updateCommand と process.argv[1] から解決されるパスを起点に、updateAction2 と runCliUpdateCommand を追跡します。指定された単体テストケースを使って bun、npm、brew、パス shim をカバーし、その後、更新後に解決されたバイナリが変わること、および古い更新が --check-only の動作を変更せずに失敗することを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
bun
領域
cli
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
52/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。