First, how others write engines
| Plugin | engines.dsh verbatim |
|---|---|
| dsh-context | >=0.2.0-rc.2 || >=0.2.1-rc.2 || >=0.2.2-rc.1 |
| dsh-cost-meter | >=0.2.0-rc.1 <0.3.0-0 |
| dsh-vision-router | >=0.2.1-rc.5 <0.3.0-0 |
| dsh-ppt | >=0.2.2-rc.3 |
| billion-context | (no engines.dsh; only node >=20) |
Both styles have merit: several parallel lower bounds (dsh-context) says 'I tested each of these entry points'; a range (dsh-cost-meter) says 'I have not seen anything outside this'. The former is more honest and harder to maintain; the latter reads better and expires faster.
A CHANGELOG template
## 0.3.0 Applies to host: >=0.2.2-rc.1 <0.3.0-0 (tested on 0.2.2-rc.1 and 0.2.2-rc.3) Host must provide inject targets: dsh-api-remotes, dsh-client-ui-sidebar-right ### Changes - Added: … - Fixed: … ### Upgrade notes - Below host 0.2.2-rc.3, the xxx feature is unavailable (it depends on yyy added in that release)
The valuable line in that template is 'Host must provide inject targets'. Measured here: when the host lacks an inject package the plugin hangs silently — zero output, no error, leaving the user with nothing to search for. Writing that line saves them hours.
Why the host range cannot be omitted
engines.dshis validated nowhere (measured here), so it does not stop anyone installing the wrong version.- The only moment that works is when someone reads the CHANGELOG.
- Stating the applicable range plus where you tested it beats a string of version numbers.