CommandCodeAI / CommandCodeAI/command-code

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

未关闭
#666 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

主要语言
没有语言数据
星标
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. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 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 摘要。