CalVer Versioning

CalVer Versioning

Starting from version 2026.3.0, iSPA CMS uses Calendar Versioning (CalVer) instead of Semantic Versioning (SemVer).

Format

YYYY.MM.PATCH
SegmentMeaningExample
YYYYRelease year2026
MMRelease month (zero-padded)03
PATCHPatch number within the month0, 1, 2...

Single Source of Truth

The VERSION file at the project root is the single source of truth.

2026.03.0

Read by:

  • config('ispa-cms.app_version') — Laravel config
  • module.json in each module — metadata
  • composer.json in each module — package version

Bumping Versions

TypeBehaviorExample
patchIncrement PATCH2026.03.02026.03.1
minorNew month release2026.03.02026.04.0
majorSame as minor (date-driven)2026.03.02026.04.0
php artisan cms:bump patch
php artisan cms:bump minor
php artisan cms:bump patch --dry-run

Manual Steps

The base-admin/package.json requires manual sync. After bumping, create a git tag: git tag v2026.03.1.

Why CalVer?

  • Intuitive: Version tells you when it was released.
  • CMS-friendly: Continuous delivery, no traditional major/minor cycles.
  • Easy sync: All 18 modules share one version.
  • Widely adopted: Used by Ubuntu, pip, and many large projects.

Comparison with SemVer

ComparisonSemVerCalVer (iSPA CMS)
FormatMAJOR.MINOR.PATCHYYYY.MM.PATCH
MAJOR meaningBreaking changesYear
MINOR meaningNew featuresMonth
PATCH meaningBug fixesPatch within month
StrengthClear compatibilityClear timeline