# Releasing kView UI Packages

The three packages follow Semantic Versioning and are released independently.
The authoritative versions and tag names live in `release-manifest.json`.

## Version Rules

- Patch: compatible bug fixes, accessibility corrections, documentation, and
  CSS fixes that preserve public component props, classes, data hooks, and PHP
  contracts.
- Minor: additive components, props, translations, tokens, cell types, and
  configuration keys with backward-compatible defaults.
- Major: removed or renamed Blade tags, props, PHP classes, configuration
  keys, CSS selectors, JavaScript globals, events, or `data-*` hooks.

Changing a dependency constraint may require a coordinated release. A breaking
core change requires compatible visualization and data releases before the data
package can move to the new core major. A breaking visualization contract
requires a compatible data release.

## Release Checklist

1. Update the package `version` in `composer.json`.
2. Update `release-manifest.json` and the package `CHANGELOG.md`.
3. Run `node scripts/verify-ui-release-manifest.mjs`.
4. Run the full Laravel suite and `npm run build`.
5. Run `npm run test:ui-consumer`; it installs package ZIPs through a Composer
   artifact repository and rejects symlinked installs.
6. Create the manifest tag, for example `kview-ui-core-v0.1.0`.
7. Build the archive with `composer archive --format=zip --working-dir=...`.
8. Upload the archive to the configured private Composer registry.

The registry endpoint and credentials are deployment secrets. They must not be
stored in this repository. Consumers configure the endpoint through
`KVIEW_COMPOSER_REPOSITORY_URL` or their organization-level Composer
configuration.
