One version of a package. The record key is '<slug>:<version>'. A release at a given version is never modified: a registry that later sees a different CID at this key keeps the first and flags the conflict.
any
Any valid record key
Properties
artifacts
ref
#artifacts
Required
No description available.
extensions
unknown
Required
Keyed by NSID. MUST carry 'at.happyproto.plugin.releaseExtension', which is the manifest.
notes
string
Optional
What changed in this release, as Markdown. A client renders this to tell an operator what an upgrade brings, so it is publisher-supplied text shown to someone else: a renderer MUST NOT render embedded HTML, and MUST refuse a link scheme it does not recognise. Long enough for a changelog and no longer; `repo` is where the full history lives.
maxLength: 30000 bytesmaxGraphemes: 3000 graphemespackage
string
Required
The profile's slug. MUST equal the pre-':' portion of the record key.
maxLength: 512 bytesrepo
string
uri
Optional
Source repository for this release.
requires
unknown
Optional
Dependencies, as a map lexicons cannot type. Every key is 'env:happyview' or an 'at://<did>/at.happyproto.plugin.profile/<slug>' URI; every value is a semver range. Keyed by AT URI rather than by DID because identity here is (publisher, slug) and one publisher may hold many packages. Validated by the registry and the installer. An unrecognised 'env:' key counts as unfulfilled, which warns rather than refuses.
version
string
Required
Semver 2.0 without build metadata, since '+' is not a legal record-key character. MUST equal the post-':' portion of the record key. Dropping build metadata also means it can never affect version precedence, which semver says it should not.
maxLength: 256 bytesView raw schema
{
"description": "One version of a package. The record key is '<slug>:<version>'. A release at a given version is never modified: a registry that later sees a different CID at this key keeps the first and flags the conflict.",
"key": "any",
"record": {
"properties": {
"artifacts": {
"ref": "#artifacts",
"type": "ref"
},
"extensions": {
"description": "Keyed by NSID. MUST carry 'at.happyproto.plugin.releaseExtension', which is the manifest.",
"type": "unknown"
},
"notes": {
"description": "What changed in this release, as Markdown. A client renders this to tell an operator what an upgrade brings, so it is publisher-supplied text shown to someone else: a renderer MUST NOT render embedded HTML, and MUST refuse a link scheme it does not recognise. Long enough for a changelog and no longer; `repo` is where the full history lives.",
"maxGraphemes": 3000,
"maxLength": 30000,
"type": "string"
},
"package": {
"description": "The profile's slug. MUST equal the pre-':' portion of the record key.",
"maxLength": 512,
"type": "string"
},
"repo": {
"description": "Source repository for this release.",
"format": "uri",
"type": "string"
},
"requires": {
"description": "Dependencies, as a map lexicons cannot type. Every key is 'env:happyview' or an 'at://<did>/at.happyproto.plugin.profile/<slug>' URI; every value is a semver range. Keyed by AT URI rather than by DID because identity here is (publisher, slug) and one publisher may hold many packages. Validated by the registry and the installer. An unrecognised 'env:' key counts as unfulfilled, which warns rather than refuses.",
"type": "unknown"
},
"version": {
"description": "Semver 2.0 without build metadata, since '+' is not a legal record-key character. MUST equal the post-':' portion of the record key. Dropping build metadata also means it can never affect version precedence, which semver says it should not.",
"maxLength": 256,
"type": "string"
}
},
"required": [
"package",
"version",
"artifacts",
"extensions"
],
"type": "object"
},
"type": "record"
}