Releases and upgrading

Packages and versions

The packages a site restores, and what a version change is allowed to mean.

What a site actually references

A site restores the libraries, not the template. Cendia.Templates is a dotnet new shim and is in no site's dependency graph — it delivers the starting files and then plays no further part.

The packages a site depends on:

Package What it is
Cendia.Core The model: content types, fields, scheduling, audiences, security
Cendia.Data Persistence and the CmsDbContext
Cendia.AspNetCore Hosting: AddCendia / MapCendia, delivery, preview, rendering
Cendia.UI The authoring surface
Cendia.SchemaGenerator A build-time source generator; referenced as an analyzer
Cendia.Storage.AzureBlob Optional media storage

There is no metapackage, deliberately. Explicit references mean a site says what it uses, and a dependency that appears has to be asked for.

The upgrade promise, and its limit

Package updates flow into an existing project. The scaffold does not.

That is the whole shape of an upgrade: you take new packages, and the files dotnet new gave you stay yours. It is also why the Starter is kept deliberately minimal — the promise holds only while the scaffold is small enough to have nothing that needs to flow.

If a release changes something in the scaffolded files, that is an upgrade note, and it will say so in words rather than expecting you to diff a template.

SchemaGenerator is a build-time dependency

Cendia.SchemaGenerator is referenced with PrivateAssets="all" and as an analyzer. It emits descriptors for your content types at build time; it is not part of what your site ships, and it never appears in the dependency graph of anything that references your site.

Where announcements live

Release announcements and upgrade notes are CMS content on this site, not files in this section — see Releases. This section covers the mechanics that do not change between releases; what changed in a given version is published as an announcement, with a date on it.

The split is deliberate, and it is the same one the whole site runs on: a guide describes code, so it lives in the repo and changes in the same commit as the code it documents. An announcement is editorial and dated — written once, never revised — so it is authored in the CMS, where scheduling and a publishing workflow are worth having.