Compatibility and versioning
There are four independent version numbers:
| Version | Where | Current | Changes when |
|---|---|---|---|
| Shellaro | the app | 0.7.0 | every release |
| Manifest schema | schemaVersion | 1 | the manifest changes incompatibly |
| Extension API | apiVersion | 1 | the API changes incompatibly |
| Pack / Lab format | pack.json / lab.json schemaVersion | 1 | those formats change incompatibly |
Rules
- Within API version 1, Shellaro may add optional methods, events, item fields and permissions. Nothing is removed or changed incompatibly without a new
apiVersion. - An extension declares the API version it was written for. Shellaro refuses an extension that needs a newer API ("Update Shellaro to use it") instead of running it half-working.
engines.shellarois checked before install and at every load. A package that does not fit is listed as incompatible and cannot be installed; an installed one that stops fitting (after a Shellaro update) shows as Incompatible and does not run.- Unknown manifest fields are warnings, not errors, so a newer CLI can add optional fields. Unknown permissions are errors: a package must not assume a capability this Shellaro does not have.
- Prefer
>=0.7.0for Command and Lab Packs (formats are stable) and>=0.7.0 <0.8.0for extensions until you have tested the next minor version.
Version numbers of packages
Semantic versions. Updates install when the source has a higher version that fits Shellaro. Pre-releases (1.3.0-beta.1) sort before the release and only satisfy ranges that name a pre-release of the same version, as in npm. Installing an older version than the installed one is possible from a file, with a warning in the review.