Skip to content

docs: encrypted CAG reactions and channel comments (whatsapp-rust#830) - #305

Merged
jlucaso1 merged 3 commits into
mainfrom
claude/eager-cerf-2lawda
Jun 10, 2026
Merged

docs: encrypted CAG reactions and channel comments (whatsapp-rust#830)#305
jlucaso1 merged 3 commits into
mainfrom
claude/eager-cerf-2lawda

Conversation

@jlucaso1

@jlucaso1 jlucaso1 commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

Documents the changes from whatsapp-rust#830 — encrypted reactions for Community Announcement Groups and the new channel comments API.

Files changed

  • changelog/2026-06-10-cag-enc-reactions-comments.mdx — new changelog entry covering both features and the breaking changes (MessageInfo.comment_target, GroupInfo.is_community_announce, SecretEncKind new variants)
  • guides/communities.mdx — two new sections: Community Announcement Group (CAG) reactions and Channel comments (sending and receiving)
  • guides/sending-messages.mdx — new Reactions in Community Announcement Groups subsection explaining the transparent encryption gate; new Channel Comments section covering client.comments().send_text() / send_message(); updated Best Practices list
  • guides/receiving-messages.mdx — updated Reactions section noting CAG encrypted reactions are transparent; new Channel Comments subsection documenting MessageInfo::comment_target; updated MessageInfo field list and Next Steps
  • docs.json — new changelog entry added at the top of the changelog nav list

Test plan

  • Verify all internal cross-links resolve (e.g. /guides/communities#channel-comments, /guides/communities#community-announcement-group-cag-reactions)
  • Confirm changelog entry renders correctly in Mintlify
  • Check that code samples compile against the updated API surface (comment_target: None in MessageInfo struct literals)

Generated by Claude Code

Summary by CodeRabbit

  • New Features

    • Automatic encryption for reactions sent to Community Announcement Group posts.
    • New comments API for posting encrypted threaded replies on community posts.
    • Transparent decryption and delivery of encrypted reactions and comments.
  • Documentation

    • Updated guides covering community features, encrypted reactions, and channel comments.
    • Enhanced message receiving documentation with comment metadata handling.

@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

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

More reviews will be available in 53 minutes and 39 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

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.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: b5098e40-2ddd-48dd-aabf-cc67a9b27257

📥 Commits

Reviewing files that changed from the base of the PR and between 1e64c4a and 4944e4f.

📒 Files selected for processing (2)
  • changelog/2026-06-10-cag-enc-reactions-comments.mdx
  • guides/communities.mdx
📝 Walkthrough

Walkthrough

This PR updates documentation to announce and explain two new WhatsApp Community Announcement Group (CAG) features: automatic encryption of reactions to CAG posts and a new client.comments() API for encrypted threaded replies. The changelog entry documents the features, API surface changes, and encryption/decryption behavior, while guides are updated to show sending and receiving patterns with examples.

Changes

CAG Encrypted Reactions and Channel Comments

Layer / File(s) Summary
Changelog announcement and API surface changes
changelog/2026-06-10-cag-enc-reactions-comments.mdx, docs.json
New changelog entry documenting automatic CAG reaction encryption via send_reaction and the new client.comments() threading API, with additive breaking changes: MessageInfo::comment_target, GroupInfo::is_community_announce, and SecretEncKind enum variants EncReaction and EncComment.
Sending encrypted reactions and comments guidance
guides/sending-messages.mdx
Sending guide updated with examples of encrypting reactions to CAG posts and sending threaded comments via client.comments(), including required secrets and error handling; best practices and next steps extended with CAG guidance.
Receiving encrypted reactions and comments guidance
guides/receiving-messages.mdx
Receiving guide documents how encrypted CAG reactions are transparently decrypted on receive and dispatched with the reaction key, and how encrypted comments arrive as Event::Message with parent post key surfaced via MessageInfo::comment_target; includes Rust examples.
Community guide integration and cross-references
guides/communities.mdx
Communities guide expanded to cover encrypted CAG reactions and channel comments as core topics, with new documentation sections and extended navigation links connecting to the sending and receiving guides.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 Whispers encrypt through the community thread,
Comments and reactions, securely spread,
CAG posts now bundled in cryptographic care,
The guides light the way—no secrets laid bare!
Documentation blooms, the feature takes flight. 🌸

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main changes: documentation for encrypted CAG reactions and channel comments, with reference to the upstream issue.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/eager-cerf-2lawda

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 and usage tips.

@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: 1e64c4a892

ℹ️ 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 guides/communities.mdx Outdated
Comment on lines +242 to +245
client.send_reaction(&cag_jid, target_key, "🔥").await?;

// Remove a reaction with an empty emoji:
client.send_reaction(&cag_jid, target_key, "").await?;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Clone target_key before reusing it

In this single Rust example, the first send_reaction call takes ownership of target_key, so the removal call immediately below cannot reuse it. wa::MessageKey is a protobuf struct and is not Copy, so readers who paste this CAG reaction example will hit a move error; clone the key for the first call or recreate it before the revoke example.

Useful? React with 👍 / 👎.

@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.

🧹 Nitpick comments (1)
changelog/2026-06-10-cag-enc-reactions-comments.mdx (1)

88-88: ⚡ Quick win

Clarify verb tense for better readability.

The sentence "Blobs persisted before this field deserialize with None" is grammatically awkward. Consider rephrasing for clarity.

✏️ Suggested rephasing
-**`GroupInfo`** gains `is_community_announce: Option<bool>`. Blobs persisted before this field deserialize with `None` ("unknown") and trigger one metadata re-query when the value is first needed. No migration is required — existing serialized blobs remain valid.
+**`GroupInfo`** gains `is_community_announce: Option<bool>`. Blobs persisted before this field was added will deserialize with `None` ("unknown") and trigger one metadata re-query when the value is first needed. No migration is required — existing serialized blobs remain valid.
🤖 Prompt for 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.

In `@changelog/2026-06-10-cag-enc-reactions-comments.mdx` at line 88, Update the
awkward sentence about GroupInfo's new field by fixing the verb tense and making
the behavior clear: change "Blobs persisted before this field deserialize with
`None`" to something like "Blobs persisted before this field are deserialized
with `None`" or "Blobs persisted before this field deserialize as `None`", so
the line describing GroupInfo and is_community_announce reads clearly that older
blobs deserialize to `None` ("unknown") and trigger a single metadata re-query
when first needed.
🤖 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.

Nitpick comments:
In `@changelog/2026-06-10-cag-enc-reactions-comments.mdx`:
- Line 88: Update the awkward sentence about GroupInfo's new field by fixing the
verb tense and making the behavior clear: change "Blobs persisted before this
field deserialize with `None`" to something like "Blobs persisted before this
field are deserialized with `None`" or "Blobs persisted before this field
deserialize as `None`", so the line describing GroupInfo and
is_community_announce reads clearly that older blobs deserialize to `None`
("unknown") and trigger a single metadata re-query when first needed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ddc8c8e8-b27a-440a-bcc9-162f1aeb076b

📥 Commits

Reviewing files that changed from the base of the PR and between 5f43487 and 1e64c4a.

📒 Files selected for processing (5)
  • changelog/2026-06-10-cag-enc-reactions-comments.mdx
  • docs.json
  • guides/communities.mdx
  • guides/receiving-messages.mdx
  • guides/sending-messages.mdx

@jlucaso1
jlucaso1 merged commit a898637 into main Jun 10, 2026
2 checks passed
@mintlify

mintlify Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
whatsapp-rust 🟢 Ready View Preview Jun 10, 2026, 3:02 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant