semantic versioning · semver
Semantic versioning is a shared convention for writing version numbers as three parts — MAJOR.MINOR.PATCH, like 2.4.1 — where each part promises something specific about what changed. The point is that the number itself tells you whether an update is safe to take or likely to break you.
Read it left to right. A bump in PATCH (2.4.1 → 2.4.2) means a backward-compatible bug fix: safe. A bump in MINOR (2.4.1 → 2.5.0) adds new features but doesn't break the old ones: still safe. A bump in MAJOR (2.4.1 → 3.0.0) is the loud one — it warns 'I removed or changed something; your code might need fixing'.
That's also what those little symbols in your manifest mean. A caret '^1.2.3' says 'newer 1.x is fine, but never jump to 2.0' — it trusts everything except a major bump. A tilde '~1.2.3' is stricter: 'only newer patches of 1.2, please'. They let you collect safe fixes automatically while staying clear of the changes that bite.
2.4.1 │ │ └─ PATCH — backward-compatible bug fix (safe) │ └─── MINOR — new features, nothing broken (safe) └───── MAJOR — breaking change (read the notes!) ^1.2.3 → any 1.x, never 2.0 ~1.2.3 → only newer patches of 1.2
Three numbers, three promises — and the symbols pick how much newer you'll accept.
0.x.y is the wild west: before 1.0 the rules are relaxed, so even a minor bump can break things. Tread carefully there.