Skip to main content

CHANGELOG.md

# Changelog

## v0.3.1 - 2026-06-26

### Changed

- Artifact builds now reuse an existing clean-checkout artifact by default before running compile, assets, or `mix release`.
- Added `--force` to rebuild an artifact even when the existing manifest and tarball match the current checkout.

## v0.3.0 - 2026-06-25

### Added

- Added configurable compile policy for artifact builds, including stable-CWD incremental defaults and optional compile profiling.
- Added `:telemetry` spans and optional timing summaries for build phases.
- Added package cache reuse for unchanged release directories.
- Added package byte reuse across artifact version/name changes.
- Added BEAM-native uncompressed `.tar` package output with `package: [compression: :none]`.
- Added Volt incremental asset policy to skip npm install and output cleaning unless explicitly requested.

### Changed

- Release assembly now runs with `--no-compile` because ReleaseKit owns the compile phase.
- Package cache fingerprinting now reuses file digests by size and mtime, mirroring Mix compiler stale checks.
- Manifest reads use safe ETF decoding after loading ReleaseKit manifest modules.

## v0.2.1 - 2026-06-23

### Changed

- Changed ETF manifests to store the typed `%ReleaseKit.Manifest{}` contract directly.
- Added `ReleaseKit.Manifest.read!/1` and validation for typed manifest consumers.

## v0.2.0 - 2026-06-23

### Added

- Added manifest format v2 with artifact, target, build, and asset metadata.
- Added SHA-256 checksum sidecars for release tarballs.
- Added target-aware artifact and manifest naming.
- Added lifecycle steps for `:before_compile`, `:before_release`, `:after_release`, `:before_package`, and `:after_package`.
- Added first-class Volt asset presets with flat config, named profiles, multiple profiles, Tailwind, source maps, public directory, asset URL prefix, and production build toggles.
- Added validation for ReleaseKit artifact config, lifecycle steps, asset presets, Volt profile config, and target config.

### Changed

- ReleaseKit now records Volt asset metadata in the ETF manifest when Volt assets are built.
- `examples/vanilla` now uses the first-class Volt asset preset.

### Removed

- Removed the legacy `:prebuild` artifact option.
- Removed `--skip-prebuild` from `mix release_kit.artifact`.

## v0.1.1 - 2026-06-20

### Added

- Added configurable artifact prebuild steps through the `ReleaseKit.Step` behaviour.
- Added optional `ReleaseKit.Step.Volt`, compiled only when `:volt` and `:npm` are available.
- Added `--skip-prebuild` to `mix release_kit.artifact`.
- Added a real `examples/vanilla` Phoenix/Volt application that builds with `mix release_kit.artifact`.

### Changed

- Artifact defaults can now be configured with `config :release_kit, :artifact` and overridden by CLI flags.
- Documentation now focuses on end-user install, configuration, prebuild steps, and deployment boundaries.

## v0.1.0 - 2026-06-20

### Added

- Initial ReleaseKit package.
- Added OTP release tarball creation.
- Added ETF manifest generation with runtime command, environment hints, and optional HTTP health-check metadata.
- Added `mix release_kit.artifact`.