molt status

Show what the next release would contain -- the pending changesets and the versions they project -- without changing anything.

Synopsis

molt status [OPTIONS]

Description

molt status reads the pending changesets, assembles the release plan, and reports it. It writes nothing, so it is safe to run any time. It has two jobs:

  • A preview of the next molt version for a human, grouped by bump type. --verbose adds the projected new version and the source changeset for each package.
  • A CI gate. When at least one versionable package has changed but no changeset covers it, molt status exits 1 with guidance to run molt add (or molt add --empty if the change needs no release). This is the check you run on every pull request.

--output json emits the plan as a machine-readable document to stdout, for tooling that decides what to do next. See Status checks.

Options

OptionTypeDefaultDescription
--since <ref>stringbase branchCompare against <ref> to decide which packages and changesets are "new".
-v, --verboseflagoffAlso print each projected new version and the changeset files behind it.
--output jsonstringhuman-readableEmit the release plan as JSON on stdout instead of the rendered view. Back-filled by MOLT_OUTPUT.
--cwd <path>pathcurrent directoryDirectory to run in; root discovery starts here.
-h, --helpflag--Show help and exit.

On molt status, -v means --verbose, not --version -- a deliberate carry-over from changesets. Use the long --version on molt itself for the version string.

Exit codes

SituationExit code
Reported the status0
Changed packages exist but no changesets cover them (CI gate)1
Nothing relevant changed, or only ignored / private / unmatched files changed0

Examples

Rendered preview:

molt status
Packages to be bumped:
- minor
  - acme-core
- patch
  - acme-cli

Verbose, with projected versions and sources:

molt status --verbose
Packages to be bumped:
- minor
  - acme-core -> 1.1.0
    - .changeset/tidy-eels-return.md
- patch
  - acme-cli -> 0.4.2
    - .changeset/brave-mugs-sing.md

Machine-readable, for CI:

molt status --output json
{
  "changesets": [
    {
      "id": "tidy-eels-return",
      "summary": "Add streaming export.",
      "releases": [ { "name": "acme-core", "type": "minor" } ]
    }
  ],
  "releases": [
    {
      "name": "acme-core",
      "type": "minor",
      "oldVersion": "1.0.0",
      "newVersion": "1.1.0",
      "changesets": [ "tidy-eels-return" ]
    }
  ]
}

As a pull-request gate:

molt status --since origin/main

See also