Skip to content

README Versioning Section (Template)

This page provides a copy-paste Versioning section that every helper module's README.md should include. The module-local paths inside the snippet (./ROBOTS.md, ./CHANGELOG.md) resolve from the module's own README.md, not from this docs page - which is why this page renders the snippet verbatim rather than hyperlinking each reference. Cross-repo documentation links use absolute https://superloom.dev URLs so they resolve from any module in any repository.

How to use

  1. Open your module's README.md.
  2. Append the section below (everything inside the code fence).
  3. Adjust the dependency block to list the module's actual dependencies.

The snippet

markdown
## Versioning

This module follows [Semantic Versioning 2.0.0](https://semver.org/).

### Current Version

See `package.json` for the current version number.

### Public API

The public API is documented in [ROBOTS.md](./ROBOTS.md). All functions and configuration options listed there are subject to semantic versioning.

### Changelog

If present, [CHANGELOG.md](./CHANGELOG.md) records the module's meaningful, consumer-visible changes.

### Version Bump Procedure

When releasing a new version:

#### 1. Classify Your Changes

Review all changes since the last release:

| Change Type | Version Impact | Example |
|-------------|----------------|---------|
| New function added | **MINOR** | `feat(module): add newFunction()` |
| Bug fix | **PATCH** | `fix(module): resolve edge case` |
| Documentation update | **PATCH** | `docs(module): improve examples` |
| Breaking API change | **MAJOR** | `BREAKING CHANGE: modify signature` |

#### 2. Update Version

Edit `package.json`:

```json
{
  "version": "1.0.1"
}
```

#### 3. Update Changelog (only if the change is meaningful)

`CHANGELOG.md` is optional. Add an entry only for breaking changes, new features, behavior-changing bug fixes, or security fixes. Skip it for cosmetic or internal-only changes (renames, spacing, reordering, comments, documentation). A same-version republish writes nothing.

```markdown
## [1.0.1] - YYYY-MM-DD

### Fixed
- Description of bug fix
```

#### 4. Commit with Conventional Commits

```bash
git add package.json    # add CHANGELOG.md too when it was updated
git commit -m "fix(module): resolve edge case in functionName()"
git push origin main
```

#### 5. Monitor CI

CI automatically publishes to GitHub Packages. Monitor at:
<https://github.com/superloomdev/superloom/actions>

### Dependency Notes

This module's test dependencies use caret (`^`) ranges:

```json
{
  "dependencies": {
    "@superloomdev/js-helper-utils": "^1.0.0"
  }
}
```

This means patch and minor updates are automatically picked up.

### Detailed Documentation

For full versioning rules:

- [Versioning Guide](https://superloom.dev/docs/languages/js/versioning/)
- [Semantic Versioning](https://superloom.dev/docs/languages/js/versioning/semantic-versioning)
- [Version Bump Checklist](https://superloom.dev/docs/languages/js/versioning/bump-checklist)
- [API Stability (JavaScript)](https://superloom.dev/docs/languages/js/versioning/api-stability-js)

Why this is wrapped in a code fence

When VitePress renders this page, every relative link inside the snippet would resolve relative to docs/versioning/, not the destination module. By keeping the snippet inside a fenced code block the links display verbatim, the build passes strict link-checking, and the only thing a module author needs to do is copy everything between the outer code fences into their own README.

Released under the MIT License.