This guide explains how to update the s:CMS framework in your site.
TL;DR
npm update @lad-sapienza/scms-coreThat’s it. The framework layer (DataTb, Map, Gallery, ZoteroGeoViewer, Record, the Astro integrations, and the scms-add-collection/scms-add-content scaffolding commands) is an ordinary npm package, @lad-sapienza/scms-core. Updating it is exactly like updating any other dependency — there’s no custom script, no protected folder to worry about, and nothing in src/ is ever touched, because the framework was never part of this repository in the first place.
Checking What’s New
Before updating, see what version you’re on and what’s available:
npm outdated @lad-sapienza/scms-coreTo see the package’s changelog/commit history, check lad-sapienza/scms-core on GitHub.
Picking a Version
By default, npm update respects the version range already in your package.json (e.g. ^0.1.0-alpha.0 allows any compatible 0.1.x release). To move to a specific version or a new range on purpose:
npm install @lad-sapienza/scms-core@<version># or, to track the latest alpha:npm install @lad-sapienza/scms-core@alphaPeer dependencies
@lad-sapienza/scms-core declares astro, react, react-dom and maplibre-gl as peer dependencies: they’re not bundled inside the package, they’re listed directly in your own package.json (the scaffold puts them there, and there’s exactly one copy of each in your tree). npm update @lad-sapienza/scms-core bumps the framework within the range those peers already allow. When a framework release requires a new major of one of them, npm can’t satisfy it against your old range and npm install stops with an ERESOLVE peer-conflict error until you bump that peer in your own package.json too.
MapLibre GL JS 5 → 6 (@lad-sapienza/scms-core@0.1.0-alpha.11)
This release moves the Map component to MapLibre GL JS v6. If your site is still on maplibre-gl v5, update both lines together:
"dependencies": { "@lad-sapienza/scms-core": "^0.1.0-alpha.11", "maplibre-gl": "^6.7.0"}npm installnpm run buildWhat changes for your site: MapLibre v6 renders through WebGL2 (supported by every current browser; the map won’t render where WebGL2 is unavailable or disabled), and it no longer auto-loads its Web Worker — but scms-core wires the worker up for you, so there’s nothing to configure. No Map prop or API changes.
After Updating
# Check the production build still succeedsnpm run build
# Test locallynpm run devSince @lad-sapienza/scms-core exposes its options (contentDir, pagesDir, galleriesDir, etc.) through the scms() integration in astro.config.mjs, a genuinely breaking framework release will show up as a build or type error at this point — the same way any other npm dependency’s breaking change would.
If Something Breaks
Roll back to your previous version:
npm install @lad-sapienza/scms-core@<previous-version>Since the framework lives entirely in node_modules, this is a normal package.json/lockfile change — commit it or revert it with git like any other dependency bump.