Skip to content

chore(release): prepare 0.7.0 - #1219

Merged
jlucaso1 merged 5 commits into
mainfrom
chore/release-0.7.0
Aug 7, 2026
Merged

chore(release): prepare 0.7.0#1219
jlucaso1 merged 5 commits into
mainfrom
chore/release-0.7.0

Conversation

@jlucaso1

@jlucaso1 jlucaso1 commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

What

Version bump for the 0.7.0 release, plus the two things that have to be decided before the release workflow runs.

The bump. The eight published crates go from 0.6.0 to 0.7.0. release.yml does not bump anything: it reads the version already in Cargo.toml to tag, publish and name the Docker image, so this has to land first.

It also clears the advisory Semver Checks job. cargo-semver-checks compares the manifest version against the last published one. With both at 0.6.0 it reports Checking wacore v0.6.0 -> v0.6.0 (no change; assume minor) and every intentional break since then reads as "requires new major version": 30 for wacore, 3 for wacore-binary, 10 for waproto (buffa renaming the generated types, #[non_exhaustive] on the event payloads, removed features). Pre-1.0, 0.6 to 0.7 is that major bump, so the job goes green on its own. It is continue-on-error, so nothing was blocked, but the summary was noise.

whatsapp-rust-chat-store is held back. It sits at 0.1.0 with no publish key, so cargo release publish --workspace would create it on crates.io as part of this release. Its schema and query surface are still moving, and publishing pins both. publish = false for now; the comment says how to undo it.

Release notes. The workflow now prefers .github/release-notes/v<version>.md and falls back to --generate-notes when there is no file. For 0.7.0 the generated form would be 488 unstructured bullets. The notes for this release are added at .github/release-notes/v0.7.0.md, written in the shape of the 0.6.0 release: highlights, VoIP, performance with measured numbers, WA Web parity, breaking changes, contributors, and the full PR list in a <details>. They live under .github/ because docs/ is gitignored.

Notes

  • whatsapp-rust-voip-cli moves to 0.7.0 for consistency; it is publish = false and never leaves the repo.
  • whatsapp-rust-plugin-metrics stays at 0.1.0, already publish = false.
  • No code changed. Cargo.lock is the member-version update from cargo update --workspace.

After merge

gh workflow run release.yml --ref main, which validates, publishes to crates.io, tags v0.7.0, creates the release from the notes file, and builds the image.

Bumps the eight published crates from 0.6.0 to 0.7.0, which is what the
release workflow reads to tag and publish. It also clears the advisory
Semver Checks job: cargo-semver-checks compares the manifest version
against the last published one, and with both at 0.6.0 every intentional
break since then reads as "requires new major version" (43 across wacore,
wacore-binary and waproto). Pre-1.0, 0.6 to 0.7 is that major bump.

whatsapp-rust-chat-store is held at 0.1.0 with publish = false. It would
otherwise be published by --workspace as a brand new crate, and its schema
and query surface are still moving.

The GitHub release now prefers .github/release-notes/v<version>.md over
--generate-notes, and 0.7.0's notes are added there. Generated notes for
this release would be 488 unstructured bullets. docs/ is gitignored, so
the notes live under .github/ next to the workflow that reads them.
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jlucaso1, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 15 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 51536202-0e49-44f5-bc41-ecf5048acc23

📥 Commits

Reviewing files that changed from the base of the PR and between 5dc20af and 9d9aed3.

📒 Files selected for processing (1)
  • README.md
📝 Walkthrough

Summary by CodeRabbit

  • Release

    • Updated the project and its components to version 0.7.0.
    • Improved release publishing with version validation and reliable release-note handling.
    • Existing releases are now skipped instead of duplicated.
    • Docker releases now use the validated project version for consistent tagging.
  • Packaging

    • The chat storage package is temporarily unavailable for publication while its interfaces are stabilized.
    • Other published packages have been aligned with the 0.7.0 release.

Walkthrough

The release updates workspace packages to version 0.7.0. The workflow validates the Cargo version, shares version and tag outputs, coordinates publishing jobs, skips existing releases, and selects release notes.

Changes

v0.7.0 release preparation

Layer / File(s) Summary
Package and dependency version alignment
Cargo.toml, examples/voip-cli/Cargo.toml, http_clients/ureq-client/Cargo.toml, storages/*/Cargo.toml, transports/tokio-transport/Cargo.toml, wacore/*/Cargo.toml, waproto/Cargo.toml
Workspace packages and internal dependencies change from 0.6.0 to 0.7.0. The chat-store crate is marked unpublished.
Release validation and creation
.github/workflows/release.yml
The workflow validates the Cargo version, exposes the version and tag, updates job dependencies, skips existing releases, and selects matching or generated release notes.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseWorkflow
  participant CargoManifest
  participant GitHubReleases
  participant DockerPublishing
  ReleaseWorkflow->>CargoManifest: Extract package version
  CargoManifest-->>ReleaseWorkflow: Return version
  ReleaseWorkflow->>ReleaseWorkflow: Validate version and create tag
  ReleaseWorkflow->>GitHubReleases: Check and create release
  GitHubReleases-->>ReleaseWorkflow: Return release status
  ReleaseWorkflow->>DockerPublishing: Pass validated version
Loading

Possibly related PRs

Suggested labels: breaking-change

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the release preparation and specifies version 0.7.0.
Description check ✅ Passed The description directly explains the version bump, release workflow updates, unpublished crates, and release process.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/release-0.7.0

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Aug 7, 2026

Copy link
Copy Markdown

Greptile Summary

This PR prepares the workspace for the 0.7.0 release and makes release identity validation happen before irreversible publishing.

  • Bumps the published workspace crates and internal dependency constraints from 0.6.0 to 0.7.0.
  • Adds a release preflight that validates and exports the version used by Git tags, GitHub Releases, and Docker publishing.
  • Supports handwritten versioned release notes with generated notes as a fallback.
  • Marks the still-evolving chat-store crate as non-publishable and updates the README dependency example.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
.github/workflows/release.yml Adds an early version preflight, centralizes release identity outputs, supports versioned release-note files, and passes the validated version to Docker publishing.
Cargo.toml Bumps the root package and all internal workspace dependency requirements to 0.7.0.
Cargo.lock Synchronizes workspace package versions with the updated manifests.
storages/chat-store/Cargo.toml Prevents publishing the evolving chat-store crate and updates its sqlite-storage dependency requirement.
README.md Updates the documented whatsapp-rust dependency series to 0.7.

Sequence Diagram

sequenceDiagram
  participant Operator
  participant Preflight
  participant Validate
  participant CratesIO
  participant GitHub
  participant Docker
  Operator->>Preflight: Run release workflow
  Preflight->>Preflight: Extract and validate Cargo.toml version
  par Validation jobs
    Preflight-->>Validate: Valid release identity
  end
  Validate->>CratesIO: Publish workspace crates
  CratesIO-->>GitHub: Allow tag and release creation
  GitHub->>GitHub: Use handwritten or generated notes
  GitHub->>Docker: Invoke image workflow with validated version
  Docker->>Docker: Publish versioned image
Loading

Reviews (5): Last reviewed commit: "docs(readme): point the quick start at 0..." | Re-trigger Greptile

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/release-notes/v0.7.0.md:
- Line 1: Add the top-level Markdown heading “WhatsApp Rust v0.7.0” before the
existing release summary in the release notes, leaving the summary text
unchanged.

In @.github/workflows/release.yml:
- Around line 94-99: Update the publish-docker invocation and the Docker
workflow’s checkout configuration so the Docker build is pinned to the release
tag/commit rather than resolving the default branch; pass the release tag
through the existing version input and use it in actions/checkout, preserving
the current behavior for newly created releases.
- Line 88: Harden the release workflow’s tag handling in the current release
step and the existing tag-creation step: pass the version output through the
step’s env as RELEASE_TAG, assign TAG only from "$RELEASE_TAG" rather than
interpolating it into shell source, and validate the tag before any release
commands use it.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 42979a42-a2fd-467d-965e-b8a97253e309

📥 Commits

Reviewing files that changed from the base of the PR and between 20076ce and 93d1ce7.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • .github/release-notes/v0.7.0.md
  • .github/workflows/release.yml
  • Cargo.toml
  • examples/voip-cli/Cargo.toml
  • http_clients/ureq-client/Cargo.toml
  • storages/chat-store/Cargo.toml
  • storages/sqlite-storage/Cargo.toml
  • transports/tokio-transport/Cargo.toml
  • wacore/Cargo.toml
  • wacore/appstate/Cargo.toml
  • wacore/binary/Cargo.toml
  • wacore/derive/Cargo.toml
  • wacore/libsignal/Cargo.toml
  • wacore/noise/Cargo.toml
  • waproto/Cargo.toml

Comment thread .github/release-notes/v0.7.0.md Outdated
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 16 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .github/release-notes/v0.7.0.md Outdated
@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown

📦 Binary size report

Metric main PR Δ
bin size (stripped) 9.99 MiB 9.98 MiB -2.00 KiB (-0.02%) 🔽
bin .text 8.00 MiB 8.00 MiB -1.75 KiB (-0.02%) 🔽
bin allocated (text+data+bss) 9.99 MiB 9.98 MiB -4.00 KiB (-0.04%) 🔽
llvm-lines wacore 513,103 513,103 0
llvm-lines wacore copies 16,751 16,751 0
llvm-lines whatsapp-rust lib 736,307 736,307 0
llvm-lines whatsapp-rust lib copies 23,173 23,173 0
deps crates (Cargo.lock) 462 462 0
.text per crate
Crate main PR Δ
.text whatsapp_rust 1.83 MiB 1.83 MiB +185 B (+0.01%) 🔺
.text wacore 685.66 KiB 686.39 KiB +742 B (+0.11%) 🔺
.text wacore_binary 91.67 KiB 88.60 KiB -3.06 KiB (-3.34%) 🎉
.text wacore_libsignal 173.44 KiB 173.44 KiB 0
.text wacore_appstate 22.35 KiB 22.35 KiB 0
.text wacore_noise 20.94 KiB 20.94 KiB 0
.text waproto 1.74 MiB 1.74 MiB 0
.text whatsapp_rust_sqlite_storage 515.62 KiB 515.62 KiB -3 B (-0.00%) 🔽
.text whatsapp_rust_tokio_transport 40.49 KiB 40.49 KiB 0
.text whatsapp_rust_ureq_http_client 11.83 KiB 11.83 KiB 0
.text std 988.84 KiB 988.88 KiB +48 B (+0.00%) 🔺
.text other deps 1.90 MiB 1.90 MiB +341 B (+0.02%) 🔺
Top movers (cargo-bloat attribution)
Crate main PR Δ
wacore_binary 91.67 KiB 88.60 KiB -3.06 KiB (-3.34%)

Baseline: 20076ce77 (latest main run) · Head: cec06099f · Graphs

The 0.7.0 notes stay out of the repo; the workflow keeps preferring
.github/release-notes/v<version>.md and falls back to --generate-notes,
so adding one later needs no workflow change.

Review follow-up: the version string becomes a git tag, a crates.io
release and an image tag, and it came from a grep with no validation.
It is now checked against semver at the point it is read, and reaches
both steps through env instead of being expanded into the shell source.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Around line 74-77: Update the VERSION validation in the release workflow to
use Cargo’s SemVer parser or an equivalent strict pattern. Reject leading-zero
numeric components, leading-zero numeric prerelease identifiers, and empty or
repeated prerelease identifiers while preserving valid SemVer versions before
publishing.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: cf6f6b96-1d49-45c7-88bb-1ae0ef6d5a1f

📥 Commits

Reviewing files that changed from the base of the PR and between 93d1ce7 and c764acb.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment thread .github/workflows/release.yml Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c764acbabd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/release.yml

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 2 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .github/workflows/release.yml Outdated
The version guard sat in github-release, which runs after publish. A
version this workflow rejects but Cargo accepts would have published the
crates first and then failed, leaving crates.io ahead of the repo with no
tag, no release and no image, and crates.io publishes cannot be undone.

It now runs in a preflight job that publish depends on, and github-release
and publish-docker read the version from there instead of re-deriving it,
so one job owns the string every later step keys on.

The pattern also accepts build metadata. Being stricter than Cargo is the
failure mode that matters here; being looser is not, since a version Cargo
rejects never gets past publish.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Around line 40-46: Update the release version handling after validation to
derive and export a Docker-safe tag for publish-docker: reject build metadata
containing “+”, or normalize it into the Docker tag format and enforce Docker’s
128-character limit. Ensure the value passed to docker/metadata-action matches
the emitted image tag while preserving the existing version and release tag
outputs.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f2d74dd4-d4cc-41a1-b6d5-2825d4339bd5

📥 Commits

Reviewing files that changed from the base of the PR and between c764acb and 0063dbb.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment thread .github/workflows/release.yml Outdated

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 1 file (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread .github/workflows/release.yml Outdated
`+` is not a legal Docker tag character, so docker/metadata-action rewrites
it to `-`. A 0.7.0+build.5 release would publish under that version, tag
v0.7.0+build.5, and then ship an image tagged 0.7.0-build.5, which is the
tag a genuine 0.7.0-build.5 prerelease would claim.

Metadata was allowed in the previous commit to keep the check from being
stricter than Cargo, since a stricter check that ran after publish would
strand the release. That check now runs in preflight, ahead of publish, so
rejecting the form costs a failed job and nothing else.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5dc20af8a0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Cargo.toml
`whatsapp-rust = "0.6"` resolves to `<0.7.0`, so anyone following the
quick start after this release lands would keep getting 0.6.0.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0 issues found across 1 file (changes from recent commits).

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

Requires human review: Prepares an irreversible 0.7.0 crates.io release via version bumps and release-workflow changes; the diff is only metadata/tooling, so the release decision and operational release config still need human sign-off.

Re-trigger cubic

@jlucaso1
jlucaso1 merged commit f8165f2 into main Aug 7, 2026
27 checks passed
@jlucaso1
jlucaso1 deleted the chore/release-0.7.0 branch August 7, 2026 02:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant