CommandCodeAI / CommandCodeAI/command-code

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

Ouverte
#666 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Aucune donnée de langage
Étoiles
4k
Forks
350
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Suivez updateAction2 et runCliUpdateCommand, en commençant par le updateCommand codé en dur et le chemin résolu à partir de process.argv[1]. Utilisez les cas de tests unitaires indiqués pour couvrir bun, npm, brew et les shims de chemin, puis vérifiez que le binaire résolu change après une mise à jour et que les mises à jour obsolètes échouent sans modifier le comportement de --check-only.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
bun
Domaine
cli
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
52/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.