The app has one version, the root package.json's, now 0.1.1 to match the latest release, and CHANGELOG.md records what each release changed, with what has landed since 0.1.1 under Unreleased. The workspace packages under apps/ and packages/ drop the 0.1.0 they never kept up, while plugins keep their own versions, which the admin's plugin list shows. pnpm release <version> cuts a release: it dates Unreleased, bumps the version, commits, makes an annotated tag, pushes, and publishes the GitHub Release with that version's section as its notes, refusing unless main is clean and current and Unreleased holds something. docs/releasing.md has the versioning rules and the steps, and CLAUDE.md says to add a changelog line with each change someone would notice.