at.happyproto.plugin.release

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.

Repository @happyproto.at did:plc:mo7vq4jbioxwafy5zkcc3eux namespace authority
Details · record, key any
Kindrecord
Record keyany
Authorityplugin.happyproto.at
Indexed

Record

record · key any

Properties

artifacts

requiredref
Reference

extensions

requiredunknown

Keyed by NSID. MUST carry 'at.happyproto.plugin.releaseExtension', which is the manifest.

notes

string

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
  • maxGraphemes: 3000

package

requiredstring

The profile's slug. MUST equal the pre-':' portion of the record key.

  • maxLength: 512

repo

string · uri

Source repository for this release.

requires

unknown

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

requiredstring

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

#artifact

object

The installable WASM module. It must carry 'blob', 'url', or both; lexicons cannot express that, so publishing and indexing enforce it.

Properties

blob

blob

The module, stored as a blob in the publisher's PDS.

  • maxSize: 16777216
  • accept: application/wasm

checksum

requiredstring

Lowercase base32 multibase-encoded multihash of the artifact bytes; sha2-256 (code 0x12) must be supported. For a blob it MUST equal the multihash inside blob.ref's CID. Where both sources are present, both must serve bytes matching it. A client rejects an unsupported hash function rather than skipping verification.

  • maxLength: 256
  • maxLength: 128

url

string · uri

#artifacts

object

Map of artifact type to artifact. 'package' is the installable module and is required; 'manifest' is its manifest.json, which is what says how to load a module published as a blob, since such a module has no directory beside it to hold a sibling file; the rest are presentation assets a browser renders from the index without fetching anything. A custom type takes an 'x-' prefix, so a type added here later cannot collide with someone's extension; such keys travel as extra properties and are validated out of band, as 'requires' is.

Properties

Reference

icon

ref
Reference

package

requiredref
Reference
  • maxLength: 8
itemsref
Reference

#imageArtifact

object

A presentation asset. SVG is deliberately absent: it carries script and renders in an operator's dashboard.

Properties

alt

string
  • maxLength: 3000
  • maxGraphemes: 300

blob

blob
  • maxSize: 1048576
  • accept: image/png, image/jpeg, image/webp, image/gif, image/avif

checksum

requiredstring
  • maxLength: 256
  • maxLength: 128

height

integer
  • minimum: 1

url

string · uri

width

integer
  • minimum: 1

#manifestArtifact

object

The module's manifest.json. A module published as a blob has no directory beside it to hold a sibling file, so this is the only thing that says how to load it. It must carry 'blob', 'url', or both; lexicons cannot express that, so publishing and indexing enforce it.

Properties

blob

blob

The manifest, stored as a blob in the publisher's PDS.

  • maxSize: 1048576
  • accept: application/json

checksum

requiredstring

As '#artifact.checksum': the multihash of the bytes, which whichever source serves them is verified against.

  • maxLength: 256
  • maxLength: 128

url

string · uri

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • com.emdashcms.experimental.package.release

    record not from the namespace authority

    Plugin package release record. EXPERIMENTAL: this NSID is part of the experimental phase of the EmDash plugin registry. The stable namespace target is com.emdashcms.package.release.

  • A HappyView plugin, as one entry in a software.release.manifest's `artifacts`. It carries the module and its manifest.json as blobs, so they are verified by their CIDs, and the manifest's facts in the signed record, so a consent screen renders without downloading the module. Those facts are not trusted: the loader checks them against the module itself and refuses a plugin that misstates what it does. The registry refuses a manifest whose artifact breaks a rule stated here, including the ones a l

  • One version of a package a repository publishes: its files, and the commit they were built from.

  • A release of a tcm package, announced on the AT Protocol by its author.

  • A record representing a software release.