Skip to content
MyDSHMy DSH Field Notes
中文
Independently maintained; not affiliated with DeepSeek. No association with mydsh.dev or other MyDSH sites.

Home/Developers & plugin dev/Release & versioning

One plugin for two 0.2.x generations: how to ship two releases

The plugin must support both the 0.2.1 and 0.2.2 lines, and it is unclear whether to use dist-tags or two package names.

To be testedVersion and environmentChecked 2026-11-14
Requires
a publishable plugin package
Checked
2026-11-14
Honest note: this was not done here. Two releases need a real two-host test environment (one 0.2.1, one 0.2.2) and this machine only has 0.1.2. What follows is verifiable fact and the available options, not a verified method.

Verifiable fact: the two lines really do run in parallel

Publish times on npm prove 0.2.1 and 0.2.2 are maintained in parallel rather than one simply replacing the other:

VersionPublishedNote
0.2.2-alpha.22026-10-27The 0.2.2 line opens
0.2.1-rc.52026-10-29Two days later than the row above, with a smaller number
0.2.2-rc.12026-11-04Becomes latest
0.2.1-rc.42026-10-26Last rc on the 0.2.1 line

So a 'support only the newest' assumption loses a group of users here.

Three available routes

RouteHowCost
One release covers bothWrite engines.dsh as >=0.2.1-rc.5 || >=0.2.2-rc.1 and branch on host capability in codeEasiest to maintain; must be measured on both
Split by dist-tagOne package name, two tags pointing at different versionsUsers must know which tag to install; a wrong pick is not blocked
Two package namese.g. plugin and plugin-legacyClearest; doubles the issues and docs to maintain

An existing example

dsh-context took the first route: >=0.2.0-rc.2 || >=0.2.1-rc.2 || >=0.2.2-rc.1 — three generation entry points, one release covering them. It is the only multi-generation form seen in this measurement.

Completing this needs two host versions booted, the same plugin code, and confirmation that both load and apply. No 0.2.1 or 0.2.2 host exists here, hence 'to be tested'.

What counts as working

Check every line. All of them pass or the job is not done.

  • You know the two lines run in parallel rather than one superseding the other
  • You can state the cost of each of the three routes
  • An unverified method is not presented as steps

Where it fails

Symptom, cause, what to do — written in the order it actually happens.

SymptomCauseWhat to do
Judging which line is newer by version numberTwo cases invert time and numberRead publish times on npm, not the digits

Sources

Verified means measured here. Compiled means every line carries a source.