Skip to content

wheels packages install still no-ops in CLI 4.0.1 — fix from #2610/#2706/#2713 didn't land or regressed #2785

@bpamiri

Description

@bpamiri

Summary

The trio of closed issues #2610 / #2706 / #2713 all describe the same problem: `wheels packages install ` is a silent no-op (intercepted by LuCLI's extension installer), the working verb is `add`, and `wheels packages --help` advertises `install` despite it not working.

All three are marked CLOSED with state "COMPLETED." But the behavior is still present in CLI 4.0.1 as of 2026-05-21.

Repro on 4.0.1

```bash
$ wheels --version
Wheels CLI 4.0.1

$ wheels packages --help | grep -E '^\s+(install|add)'
install [@] Install (latest compat or pinned)

Note: 'add' is NOT shown in --help (matching #2713 description)

$ wheels packages install wheels-basecoat
Reading lucee.json...
Resolving dependencies...
ℹ️ No git or extension dependencies to install
$ echo $?
0
$ ls vendor/wheels-basecoat 2>&1
ls: vendor/wheels-basecoat: No such file or directory

install reported success, installed nothing

$ wheels packages add wheels-basecoat

… this works — installs wheels-basecoat@3.0.0 to vendor/

$ ls vendor/wheels-basecoat
Basecoat.cfc README.md box.json …
```

Source code in 4.0.1 still documents the trap

`/opt/homebrew/Cellar/wheels/4.0.1/share/wheels/module/services/packages/PackagesMainCli.cfc` lines 13-19:

"`add` (not `install`!) is the install verb because LuCLI's built-in extension installer intercepts the literal subcommand `install` across all modules — same trap that bit `wheels browser install` (renamed to `wheels browser setup` in #2345). User input `wheels packages install ` never reaches Module.cfc; LuCLI runs its own dependency installer against `lucee.json` instead and prints "No git or extension dependencies to install"."

So the comment in the source explains why `install` doesn't work, but the actual user-facing `--help` text still advertises `install` as the install verb. The fix that closed #2610/#2706/#2713 either:

  1. Didn't actually ship in 4.0.1 (maybe it's in a later snapshot that isn't tagged?), or
  2. Was a docs-only fix elsewhere (https://guides.wheels.dev / https://packages.wheels.dev) that didn't update the CLI's built-in help text, or
  3. Regressed between closure and 4.0.1 release.

In all three cases the result is the same: the user-facing problem documented in those three issues is still present for anyone on the current Homebrew-released CLI.

Impact

Surfaced AGAIN during dogfooding (DataPAI portal Phase 0 on Titan, 2026-05-21). The implementer subagent followed `wheels packages --help`, hit the no-op, then dug into the CLI source to find `add`. Lost ~10 minutes of execution time and required filing the workaround in project memory.

This is the second time the same problem has been surfaced from real usage AFTER three closed issues. The closed issues did not actually resolve the user-facing behavior.

Suggested fix

The simplest path is to alias `install` to `add` in the CLI's command dispatch — let LuCLI's intercept happen, then either re-dispatch or wrap. The trap that the source code comment describes is a known LuCLI behavior; the Wheels CLI just needs to either rename its own subcommand or work around the intercept.

Failing that, remove `install` from `wheels packages --help` and replace with `add`. The CLI help is the authoritative quick-reference; if it says `install` works and it doesn't, the broken behavior is shipping daily to every new user.

Related closed issues (re-surfacing)

cc @bpamiri

🤖 Found while dogfooding the DataPAI portal Phase 0 plan via Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions