Skip to content

Legacy CommandBox wheels upgrade command (cli/src/) maxes out at v3.1.0 and silently misses 4.0 #2634

Description

@bpamiri

Describe the bug

The legacy CommandBox-based box wheels upgrade command at cli/src/commands/wheels/upgrade.cfc:

  • getAvailableVersions() (line 173) returns a hardcoded static list maxing at "3.1.0". A user on 3.0.0 running box wheels upgrade will not be offered 4.0 — the command will report "You are already on the latest version" instead.
  • getPostUpgradeRecommendations() (line 320) recommends https://wheels.dev/guides/introduction/upgrading — wrong URL for 4.0. Canonical is https://guides.wheels.dev/v4-0-0/upgrading/3x-to-4x/.
  • checkBreakingChanges() has no entries for 3.x → 4.x — only handles 1.x → 2.x and 2.x → 3.x.
  • The whole flow uses box install wheels-core@^X machinery, which is no longer the distribution channel for 4.0 (the new path is brew install wheels-dev/wheels/wheels + Homebrew/Scoop/.deb/.rpm).

Why this matters

A 3.x user trying box wheels upgrade to get to 4.0 will see "You are already on the latest version" and be told their app is up to date — when in fact 4.0 has been out for some time and they're missing it. This is the opposite of helpful at exactly the moment the user is reaching for the tool.

The legacy CommandBox wheels-cli module is already deprecated per the 4.0 CHANGELOG (scheduled for removal in v5.0), but it still ships and still runs, so it should fail gracefully rather than silently report success.

Suggested fixes (one of)

  1. Add a deprecation banner at the top of the command. Print, immediately on invocation:

    ⚠️  The CommandBox `box wheels upgrade` command is deprecated and does not know about Wheels 4.0+.
        Install the new CLI: brew install wheels-dev/wheels/wheels
        Then run: wheels upgrade check
        Then: brew upgrade wheels
    

    …and short-circuit before the static ForgeBox list lookup.

  2. Update getAvailableVersions() to actually query ForgeBox or GitHub Releases (the existing function comment says "in a real implementation" — it's a stub). Add 3.x → 4.x entries to checkBreakingChanges() matching the canonical 11-breaker list.

  3. Delete the command entirely. The CommandBox wheels-cli module is already deprecated for v5.0 removal per the CHANGELOG — removing the stale upgrade command early would be consistent with that direction.

If the command is kept around, fix the recommendation URL to https://guides.wheels.dev/v4-0-0/upgrading/3x-to-4x/.

Source

cli/src/commands/wheels/upgrade.cfc

🤖 Filed by Claude Code while assisting with a 4.0 upgrade testbed

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions