update-openmls
Update openmls native library version. Use when checking for updates, upgrading openmls, bumping version, or updating native dependencies.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Update openmls native library version. Use when checking for updates, upgrading openmls, bumping version, or updating native dependencies.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
| name | update-openmls |
| description | Update openmls native library version. Use when checking for updates, upgrading openmls, bumping version, or updating native dependencies. |
Guide for updating the openmls native library version in this project.
When the CI creates an automated PR for openmls update, follow these steps:
Release notes are often terse or incomplete. Always examine what actually
changed between the two tags. vOLD is the version being replaced (see the
PR title/diff), vNEW is the new one.
1a. Release notes (starting point, not the whole story):
gh api repos/openmls/openmls/releases/tags/vNEW --jq '.body'
1b. Full commit list between the tags:
gh api "repos/openmls/openmls/compare/vOLD...vNEW" --paginate \
--jq '.commits[].commit.message | split("\n")[0]'
1c. Which files changed, scoped to the crates we bind:
gh api "repos/openmls/openmls/compare/vOLD...vNEW" --paginate --jq '.files[].filename' \
| grep -E 'openmls|openmls_rust_crypto|openmls_basic_credential|openmls_traits|openmls_libcrux_crypto'
For large ranges the compare API truncates files — fall back to a shallow clone:
git clone --filter=blob:none https://github.com/openmls/openmls /tmp/upstream
git -C /tmp/upstream diff vOLD..vNEW --stat -- <crate dirs>
1d. Check the public API surface we actually bind. List the upstream
types/functions referenced in rust/src/api/*.rs, then look for them in the
diff:
git -C /tmp/upstream diff vOLD..vNEW -- <crate>/src | grep -E '^[-+].*(pub fn|pub struct|pub enum|pub trait)'
1e. Upstream Cargo.toml deltas — MSRV bumps, new/removed features,
dependency updates with security advisories.
Summarize findings as:
rust/src/api/# Check if Rust code compiles
make rust-check
Common issues:
Ord for PublicKey)If make rust-check fails, fix the errors in rust/src/api/:
make codegen
make test
make analyze
Verify the AI-generated entry against YOUR findings from Step 1 — the AI only sees the release notes and commit subjects, not the diffs:
openmls_frb version in Highlights matches rust/Cargo.tomlThe automated update bumps the version in rust/Cargo.toml in two stages:
a deterministic bump mirroring the upstream SemVer delta, then an AI severity
check (from the release notes and commit list) that can raise it — e.g. to
major when a 0.x upstream ships breaking changes in a minor release.
bump-unverified label (or the ⚠️ warning in the
PR body), the AI check did not run — classify the update yourself using
your Step 1 findings and fix the version if needed.rust/src/api/:version = "X.Y.Z"
make rust-check
git add rust/Cargo.toml rust/Cargo.lock rust/src/api/ lib/src/rust/ CHANGELOG.md
git commit -m "fix: adapt for openmls vX.Y.Z breaking changes"
rust/src/api/make codegen — regenerate FRB bindingsmake test — all tests passmake analyze — no issuesrust/Cargo.toml — openmls_frb version bumped (automatic; verify)make rust-check — sync Cargo.lock.cargo/audit.toml and re-run
make rust-audit — if advisories still fire, re-verify reachability
before re-adding ignores (justifications are inline in that file)HpkeKemType::XWingKemDraft6 and
MLS_256_XWING_CHACHA20POLY1305_SHA256_Ed25519 (0x004D) still exist
upstream with unchanged wire semantics (a draft bump would be a NEW
identifier per upstream policy — groups on 0x004D must keep working)make build-web passes (libcrux WASM compile; getrandom features)RESULT: PASS# Check for updates
make check-new-openmls-version
# Check and apply updates automatically
make check-new-openmls-version ARGS="--update"
This will:
rust/Cargo.toml with new openmls dependency tagsCheck rust/Cargo.toml:
[dependencies]
openmls = { git = "https://github.com/openmls/openmls", tag = "openmls-v0.8.0" }
Edit rust/Cargo.toml and update the tag for upstream crates.
make rust-update
make codegen
make test
git add rust/Cargo.toml rust/Cargo.lock
git commit -m "chore(deps): update openmls to vX.Y.Z"
git push
# Just check (no changes)
make check-new-openmls-version
# Check and update
make check-new-openmls-version ARGS="--update"
# Update to specific version
make check-new-openmls-version ARGS="--update --version vX.Y.Z"
# Force update even if versions match
make check-new-openmls-version ARGS="--update --force"
# JSON output for CI
make check-new-openmls-version ARGS="--json"
Files automatically updated by make check-new-openmls-version ARGS="--update":
| File | What | Description |
|---|---|---|
rust/Cargo.toml | upstream tags | Native library dependency version |
rust/Cargo.toml | version | openmls_frb bump mirroring upstream SemVer delta (adjust manually if wrapper API changed differently) |
README.md | Badge | Version badge in header |
CLAUDE.md | Example | Code example in documentation |
Files that need manual update:
| File | What | Description |
|---|---|---|
rust/Cargo.lock | Dependencies | Run make rust-update after changing Cargo.toml |
CHANGELOG.md | Entry | AI-generated in CI; verify against the upstream diff |
After updating, if API changed, run:
make codegen
Then check for:
rust/src/api/ filesrust/src/api/Update copier template version. Use when checking for template updates, running copier update, or applying template changes to the project structure.
Release a new openmls_frb native crate version (stage 1 of the two-stage release). Use when the user wants to build/publish new native binaries after openmls dependency updates, bump the openmls_frb crate, or push a openmls_frb-* tag. NOT for the Dart pub.dev release (that is release-package).
Prepare a new version of openmls for publication to pub.dev. Use when user wants to release, publish, or tag a new version of the package.
Build openmls native libraries for different platforms. Use when user asks about building, compiling, or creating native libraries for iOS, Android, macOS, Linux, or Windows.
Review openmls Dart code for security issues. Use when reviewing code changes, checking for proper API usage, verifying secure patterns, or auditing cryptographic code.
Add a new database migration to EncryptedDb. Use when changing storage schema, data format, or serialization in the native library.