Glossary
Semantic Versioning (SemVer)
MAJOR.MINOR.PATCH, with rules about which number moves when. SemVer is how a package tells its users whether an update will break them, add something or just fix something.
General definition
Semantic Versioning (SemVer) is defined by the SemVer 2.0.0 specification. A version is three non-negative integers separated by dots. Increment MAJOR when you make incompatible API changes, MINOR when you add functionality in a backwards-compatible way, and PATCH for backwards-compatible bug fixes. Optional pre-release labels (1.0.0-beta.2) and build metadata (1.0.0+20260901) can follow. Numeric identifiers must not have leading zeros, and versions below 1.0.0 are treated as unstable.
^1.4.2(caret, the npm default): allows any 1.x.y at or above 1.4.2, but not 2.0.0~1.4.2(tilde): allows 1.4.x at or above 1.4.2, but not 1.5.0- Exact pin
1.4.2: nothing else; in practice a lockfile does this for you - For 0.x versions the caret is stricter, because a MINOR bump may break things before 1.0
The contract only works if maintainers honour it: a breaking change shipped as a MINOR release defeats the point. Well-run projects pair SemVer with a changelog that explains each bump, deprecation warnings before removals, and release tooling that derives the next version from commit messages. Consumers should read the changelog before crossing a MAJOR boundary and keep a lockfile so builds are reproducible.
Calendar versioning (CalVer) is the main alternative: the version encodes a date, such as 2026.09 or 26.9.1, which tells you when something was released rather than whether it is compatible. Many projects blend the two, using year and month in the first two positions and a patch counter in the third, which keeps the SemVer grammar and npm range syntax working while communicating release cadence.
In the Ethora ecosystem
Ethora packages on npm use calendar-style versions that fit the SemVer grammar: the first number is the two-digit year, the second is the month and the third is a patch counter, so @ethora/chat-component versions look like 26.7.x for July 2026 builds. Monthly platform releases are named the same way (the September 2026 release is 26.09), with release notes on the blog listing what changed in the Chat SDK, the AI SDK and the server. The leading zero appears in the release name only; package versions drop it so they remain valid SemVer.
Because the versions are valid SemVer, caret and tilde ranges behave as usual: a ^26.7.0 range picks up patch releases within that month, and the year rolling over reads as a MAJOR change to package managers, so a lockfile plus the changelog is the safe way to move between releases. The same scheme applies to the React Native SDK, the npm components, the MCP server and the @ethora/setup CLI.