34 lines
1.6 KiB
Markdown
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.
|