You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Grow the Vortex CLI from a single-purpose installer into a multi-verb tool. The relocation in #2841 carries the installer's own command surface across unchanged; this adds the commands and behaviours that only make sense once it is a CLI.
Sequenced after #2841 and before #2842, so the engine swap lands against a settled command surface rather than being followed by another round of feature work.
Commands to add or reshape
A default command that routes a bare invocation by the state of the target directory: an existing Vortex project is reconfigured, anything else is a fresh install
update as a first-class verb rather than re-running install over an existing project, including a way to name the target template version directly
configure for reconfiguring an existing project in place, without downloading a template — collecting answers by default, and writing them to the project on --apply
doctor replacing check-requirements as the user-facing diagnostics verb
Decide whether build stays a standalone command, folds into an option on install, or both
Behaviour requirements
doctor loses nothing that check-requirements reported: every tool it checked, whether each is installed and running, the per-tool install instructions, the version summary, and the ability to check a named subset
update keeps refusing a destination whose major differs from the build's own, and keeps naming the matching release
configure operates on the project directory as both source and destination, and resolves a relative path before anything derives a value from it
configure --apply writes the collected answers to the project on both paths, interactive and scripted. The branch honours it only on the scripted path: an interactive run collects answers, prints them as JSON and changes nothing, and the code is excluded from coverage so no test catches it. A bare invocation that routes to configure must actually change the project
Both configure paths have test coverage; neither is excluded from it
The agent surface is reachable from every entry point an agent would actually use, including a bare invocation in an empty directory — a downloaded binary run with no arguments must be able to describe its own questions
Guidance printed after a run is suppressed whenever the run is not interactive, so a caller's stdout is never polluted
Consumers
.vortex/tooling/src/vortex-update calls the update verb rather than re-running an install, and its unit tests follow
The template functional test harness exercises whichever verbs it depends on
Documentation covers the full command surface, not just installation
No change to the questions, the handlers, or the way answers are processed
Acceptance
The handler snapshot fixtures are byte-identical — this change adds verbs, it does not change what a given answer set produces
Every new command has functional test coverage
composer lint and composer normalize --dry-run pass
The PHAR builds; each verb runs from it
The template's functional test suite passes
Reference
All of these exist on the branch feature/customizer-tui (PR #2828) and are described in .artifacts/installer-to-cli-handover.md under "Command surface".
Two branch behaviours that should not be repeated: its doctor is thinner than check-requirements, and its configure ignores --apply when run interactively.
Grow the Vortex CLI from a single-purpose installer into a multi-verb tool. The relocation in #2841 carries the installer's own command surface across unchanged; this adds the commands and behaviours that only make sense once it is a CLI.
Sequenced after #2841 and before #2842, so the engine swap lands against a settled command surface rather than being followed by another round of feature work.
Commands to add or reshape
updateas a first-class verb rather than re-runninginstallover an existing project, including a way to name the target template version directlyconfigurefor reconfiguring an existing project in place, without downloading a template — collecting answers by default, and writing them to the project on--applydoctorreplacingcheck-requirementsas the user-facing diagnostics verbbuildstays a standalone command, folds into an option oninstall, or bothBehaviour requirements
doctorloses nothing thatcheck-requirementsreported: every tool it checked, whether each is installed and running, the per-tool install instructions, the version summary, and the ability to check a named subsetupdatekeeps refusing a destination whose major differs from the build's own, and keeps naming the matching releaseconfigureoperates on the project directory as both source and destination, and resolves a relative path before anything derives a value from itconfigure --applywrites the collected answers to the project on both paths, interactive and scripted. The branch honours it only on the scripted path: an interactive run collects answers, prints them as JSON and changes nothing, and the code is excluded from coverage so no test catches it. A bare invocation that routes toconfiguremust actually change the projectconfigurepaths have test coverage; neither is excluded from itConsumers
.vortex/tooling/src/vortex-updatecalls the update verb rather than re-running an install, and its unit tests followOut of scope
Acceptance
composer lintandcomposer normalize --dry-runpassReference
All of these exist on the branch
feature/customizer-tui(PR #2828) and are described in.artifacts/installer-to-cli-handover.mdunder "Command surface".Two branch behaviours that should not be repeated: its
doctoris thinner thancheck-requirements, and itsconfigureignores--applywhen run interactively.