# Release process * [x] copy this checklist to a new egui issue, called "Release 0.xx.y" * [x] close all issues in the milestone for this release ## Special steps for patch release * [ ] make a branch off of the _latest_ release * [ ] cherry-pick what you want to release * [ ] run `cargo semver-checks` ## Optional polish before a major release * [ ] improve the demo a bit * [ ] see if you can make web demo WASM smaller * [ ] `./scripts/docs.sh`: read and improve documentation of new stuff * [ ] `cargo update` * [ ] `cargo outdated` (or manually look for outdated crates in each `Cargo.toml`) ## Release testing * [x] `cargo r -p egui_demo_app` and click around for while * [x] update `eframe_template` and test * [x] update `egui_plot` and test * [x] update `egui_table` and test * [x] update `egui_tiles` and test * [x] test with Rerun * [x] `./scripts/check.sh` * [x] check that CI is green ## Preparation * [x] make sure there are no important unmerged PRs * [x] Ensure we don't have any patch/git dependencies (e.g. kittest) * [x] Create a branch called `release-0.xx.0` and open a PR for it * [ ] run `scripts/generate_example_screenshots.sh` if needed * [ ] write a short release note that fits in a bluesky post * [x] record gif for `CHANGELOG.md` release note (and later bluesky post) * [x] update changelogs * [x] run `scripts/generate_changelog.py --version 0.x.0 --write` * [x] read changelogs and clean them up if needed * [x] write a good intro with highlight for the main changelog * [x] run `typos` ## Actual release * [x] bump version numbers in workspace `Cargo.toml` * [x] check that CI for the PR is green * [x] publish the crates by running `scripts/publish_crates.sh` * [x] `git tag -a 0.x.0 -m 'Release 0.x.0 - <release title>'` * [x] `git pull --tags ; git tag -d latest && git tag -a latest -m 'Latest release' && git push --tags origin latest --force ; git push --tags` * [x] merge release PR as `Release 0.x.0 - <release title>` * [x] check that CI for `main` is green * [x] do a GitHub release: https://github.com/emilk/egui/releases/new * follow the format of the last release * [x] wait for the documentation build to finish: https://docs.rs/releases/queue * [x] https://docs.rs/egui/ works * [x] https://docs.rs/eframe/ works ## Announcements * [ ] [Bluesky](https://bsky.app/profile/ernerfeldt.bsky.social) * [x] egui discord * [ ] [r/rust](https://www.reddit.com/r/rust/comments/1bocr5s/announcing_egui_027_with_improved_menus_and/) * [ ] [r/programming](https://www.reddit.com/r/programming/comments/1bocsf6/announcing_egui_027_an_easytouse_crossplatform/) * [ ] [This Week in Rust](https://github.com/rust-lang/this-week-in-rust/pull/5167) ## After release * [ ] update `eframe_template` * [x] publish new `egui_plot` * [x] publish new `egui_table` * [x] publish new `egui_tiles` * [x] make a PR to `egui_commonmark` * [ ] make a PR to `rerun` ## Finally * [ ] close the milestone * [ ] close this issue * [ ] improve `RELEASES.md` with what you learned this time around
Release process
Special steps for patch release
cargo semver-checksOptional polish before a major release
./scripts/docs.sh: read and improve documentation of new stuffcargo updatecargo outdated(or manually look for outdated crates in eachCargo.toml)Release testing
cargo r -p egui_demo_appand click around for whileeframe_templateand testegui_plotand testegui_tableand testegui_tilesand test./scripts/check.shPreparation
release-0.xx.0and open a PR for itscripts/generate_example_screenshots.shif neededCHANGELOG.mdrelease note (and later bluesky post)scripts/generate_changelog.py --version 0.x.0 --writetyposActual release
Cargo.tomlscripts/publish_crates.shgit tag -a 0.x.0 -m 'Release 0.x.0 - <release title>'git pull --tags ; git tag -d latest && git tag -a latest -m 'Latest release' && git push --tags origin latest --force ; git push --tagsRelease 0.x.0 - <release title>mainis greenAnnouncements
After release
eframe_templateegui_plotegui_tableegui_tilesegui_commonmarkrerunFinally
RELEASES.mdwith what you learned this time around