Files
RustBox/docs/RELEASING.md
T
Mateusz Gruszczyński 99ee3385ac
RustBox CI / rustbox (push) Canceled after 0s
v0.2.25
2026-11-05 08:33:13 +01:00

34 lines
1.6 KiB
Markdown

# Releasing RustBox
1. Update the version in `Cargo.toml` and the RustBox package entry in `Cargo.lock`.
2. Update `CHANGELOG.md` and the release notes.
3. Ensure no TypeScript sources or separate frontend build dependencies are present.
4. Run the release gate and package only after it passes:
```bash
./scripts/package-release.sh
```
`package-release.sh` runs `scripts/build-release.sh` first. That gate regenerates the lockfile, runs the static validator, `cargo fmt --check`, the full `cargo test --locked` suite, Clippy with `-D warnings`, and the locked release build. The ZIP and SHA256 are created only after all of those steps succeed.
5. Verify:
```bash
./target/release/rustbox --version
RUSTBOX_CONFIG=./config.dev.toml ./target/release/rustbox --check-config
```
6. Package the repository without `target/`, `.dev/` or `.git/`.
7. Generate SHA-256 sums for release archives.
## Browser asset build
Browser JavaScript source lives in functional modules under `src/web/js/`, ordered by `src/web/js/manifest.txt`. `build.rs` concatenates those modules into the embedded `rustbox-ui.js` asset during every Cargo build. The repository has no duplicate `ui/` snapshot; `src/web/` is the only browser UI source.
## Updating an existing checkout to 0.2.16
Do not overlay the release with `cp *` or another command that skips dotfiles. That can retain stale `.github`, `.env.example`, or `Cargo.lock` files.
Use a clean checkout/extraction, or a dotfile-aware copy such as `rsync -a` / `cp -a source/. destination/`. The source release intentionally does not ship `Cargo.lock`; CI and `scripts/build-release.sh` generate it before running `--locked` Cargo commands.