Skip to content
DreamWeave Mod Template
reference

Manifest

Every field of a project manifest and the site index.

The JSON Schemas are normative for structure; this page is normative for meaning. Fields marked optional MAY be absent; every other field MUST be present. Absent means unknown, never false.

Project manifest#

{
  "schema_version": "2",
  "document": "project",
  "generator": "DreamWeave Mod Template 5.0.0",
  "project": { ... },
  "channels": { "stable": { "version": "1.1.0" }, "development": { "version": "1.1.1-dev.3" } },
  "releases": [ ... ]
}

generator is informational. Clients MUST NOT change behavior based on it.

project#

FieldMeaning
idUUID, canonical lowercase. The project’s identity.
nameDisplay name. May change at any time.
summaryOptional. One line.
typemod, library, framework, tool, assets, total-conversion or documentation. Presentation only.
statusactive, maintenance, experimental, deprecated or archived.
versioningnumeric or decimal: how this project’s versions compare. See Versions.
gameLowercase token, e.g. morrowind.
licenseOptional. SPDX expression.
tagsFree-form strings.
maintainers[{ name, url? }].
linksObject of URLs. Always page, source, issues; optionally documentation, support, donate, homepage, nexusmods, and crate for a Rust crate: its crates.io page.
integrationsLocations on other services, e.g. { "nexusmods": { "game": "morrowind", "mod_id": 57511 } }. Never identity.
media[{ kind: image|video, url, alt, thumbnail?, caption?, category?, featured? }].
credits[{ name, role?, url? }].

channels#

Each channel’s head, the highest-precedence release in that channel whose status is available. A channel with no available release is absent. Clients MAY recompute heads from releases and MUST get the same answer.

releases#

Every published release, newest first by precedence, including yanked and deprecated ones.

FieldMeaning
versionThe release’s version under the project’s scheme. Unique by precedence within the project.
channelLowercase token. development is the rolling build of the default branch.
dateOptional. ISO date the author gives the release.
statusavailable, yanked or deprecated.
yanked, deprecatedOptional. { reason, replacement? }, present exactly when status says so.
source{ repository, tag?, release?, revision? }. revision is the full commit hash when known.
notesOptional. { summary?, highlights?, added?, changed?, fixed?, breaking?, migration?, known_issues?, notes? }. Strings are CommonMark; a consumer MUST treat embedded HTML as untrusted.
runtimesObject of runtime id to constraint. The release runs on any listed runtime. Empty means runtime-independent.
platforms[{ os, arch }], desktop systems only: windows, macos, linux. Empty means platform-independent. A program’s Android and handheld builds are described on their artifacts.
providesCapability strings.
relationshipsSee below.
components, groupsSee Installation.
extensionsNamespaced extension data. See Evolution.
critical_extensionsExtensions a client MUST implement to install this release.
artifactsSee Artifacts. At least one.

Everything from runtimes down describes the release’s bytes and does not change after publication, except by a deliberate amendment from the publisher. date, channel, status and notes may be corrected.

relationships#

{ "kind": "requires", "project": "9b7e3f21-…", "name": "Tallow", "version": ">=1.0", "url": "https://…" }
FieldMeaning
kindrequires: the release does not work without the target. recommends: works better with it. conflicts: MUST NOT be active together. compatible: tested together. replaces: supersedes the target.
projectOptional. The target’s id.
capabilityOptional. Instead of project: any project whose release provides it satisfies the relationship. Only for requires, recommends, conflicts.
nameOptional. For display. A relationship with neither project nor capability is informational and cannot be resolved.
versionOptional. Constraint, only with project, evaluated with the target project’s versioning scheme. Absent means any version.
urlOptional. Where to discover the target.
reasonOptional. For display.

A requires or conflicts on a project satisfies or violates only when the target is installed at a version the constraint allows. Resolution order, how far to follow chains, and what to do with unresolvable targets are client policy.

Site index#

{
  "schema_version": "2",
  "document": "index",
  "generator": "…",
  "site": { "name": "Cool Mods", "url": "https://you.github.io/cool-mods/" },
  "projects": [
    {
      "id": "…", "name": "…", "summary": "…", "type": "mod", "status": "active",
      "page": "https://…/home/", "manifest": "https://…/dreamweave/projects/….json",
      "manifest_sha256": "…", "updated": "2026-09-27", "channels": { "stable": "1.1.0" }
    }
  ]
}

projects is sorted by id. An index entry is a pointer and a change detector; everything it says is repeated, authoritatively, in the manifest.

Release payload#

dreamweave.release.json at an archive’s root has document: "release-payload", the project’s id, name, slug and versioning, the release version, the package format, and the same runtimes through critical_extensions fields as the manifest’s release. It lets a loose archive identify itself. It cannot contain its archive’s own digest, so it is never proof of anything; when it and the manifest disagree, the manifest wins.