Skip to content

chore: update proto to WhatsApp Web 2.3000.1035617621 - #436

Merged
jlucaso1 merged 1 commit into
mainfrom
proto-update-2.3000.1035617621
Mar 25, 2026
Merged

jlucaso1 merged 1 commit into
mainfrom
proto-update-2.3000.1035617621

Conversation

@jlucaso1

@jlucaso1 jlucaso1 commented Mar 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Update protobuf definitions and generated Rust code to WhatsApp Web 2.3000.1035617621
  • Minimal compilation fixes (..Default::default()) for new proto fields in chat_actions, polls, and handshake
  • Bump app_version_tertiary to match the new proto version

Extracted from #433 (proto-only, excludes cstoken/nct_salt implementation).

Test plan

  • cargo clippy --all --tests — clean
  • cargo check --all — compiles

Summary by CodeRabbit

  • New Features

    • AI-powered media collection and thread collaboration capabilities
    • Enhanced bot metadata and infrastructure diagnostics
    • Business broadcast campaigns and insights features
    • Event invitations and poll option creation in messages
    • Improved message history synchronization
    • Bloks widget support for interactive messages
  • Chores

    • Updated protocol version to support latest WhatsApp features

Update protobuf definitions and generated Rust code to match
WhatsApp Web 2.3000.1035617621. Includes minimal compilation fixes
(..Default::default()) for new proto fields.
@coderabbitai

coderabbitai Bot commented Mar 25, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: d0484963-4465-4d42-8442-765947c16afa

📥 Commits

Reviewing files that changed from the base of the PR and between 1a57769 and 6cf0d93.

📒 Files selected for processing (6)
  • src/features/chat_actions.rs
  • src/features/polls.rs
  • wacore/noise/src/handshake.rs
  • wacore/src/store/device.rs
  • waproto/src/whatsapp.proto
  • waproto/src/whatsapp.rs

📝 Walkthrough

Walkthrough

The PR updates the WhatsApp protocol schema to version 1035617621, refactors struct initialization patterns across three source files to use default value inheritance, and extends the protocol with new message types and fields for AI, bot, business, and media capabilities.

Changes

Cohort / File(s) Summary
Struct Initialization Refactoring
src/features/chat_actions.rs, src/features/polls.rs, wacore/noise/src/handshake.rs
Replaced explicit field assignments (e.g., auto_muted: None, extended_ciphertext: None) with ..Default::default() to inherit unspecified field defaults in struct literals.
Device Configuration Update
wacore/src/store/device.rs
Updated default tertiary app version constant from 1031424117 to 1035617621 in Device::new().
Protocol Schema Expansion
waproto/src/whatsapp.proto
Extended WhatsApp protocol version comment to 1035617621; added AI media collection messages, bot agent metadata types, business broadcast/insights actions, new message variants (conditional reveal, poll options, event invite), media domain info structures, and expanded existing schemas with new fields for spoilers, after-read timing, thread types, and capabilities. Removed BotAvatarMetadata and consolidated bot metadata. Replaced mediaKeyDomain field usage in sticker payloads with premium.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 Our burrow grows with new delights,
Defaults cascade through struct heights,
Bot agents dance, AI gleams bright,
Messages flow in perfect sight,
Protocol hops to greater flight! 🌟

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main change: updating the WhatsApp protocol to version 2.3000.1035617621, which is the primary focus of this pull request.

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

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch proto-update-2.3000.1035617621

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.

@jlucaso1

Copy link
Copy Markdown
Collaborator Author

@claude review

@claude

claude Bot commented Mar 25, 2026

Copy link
Copy Markdown

Claude finished @jlucaso1's task in 1m 55s —— View job


Review of PR #436

  • Gather context and read changed files
  • Review proto changes
  • Review compilation fixes
  • Post review feedback

LGTM — this is a clean proto bump with minimal, correct compilation fixes. Here's the breakdown:

Proto Changes (waproto/src/whatsapp.proto)

The proto update from 2.3000.10314241172.3000.1035617621 adds ~375 lines of new definitions. Key additions include:

  • AI media collection messages/metadata, side-chat thread type
  • Bot infrastructure diagnostics, agent metadata, PQ handshake modes
  • Business broadcast campaigns, insights, and customer data sync actions
  • Event invites, poll option creation, subscription sync v2
  • nctSalt field on HistorySync (intentionally not wired up yet per PR description)
  • Removed BotAvatarMetadata message (replaced by BotAgentMetadata)

All additions are additive or replace unused definitions — no breaking changes to existing field numbers.

Compilation Fixes (4 files)

All four Rust changes are the same pattern: replacing explicit field: None with ..Default::default() to accommodate new fields added to proto structs. This is the correct and idiomatic approach:

File Change
src/features/chat_actions.rs:501 MuteAction — new mute_everyone_mention_end_timestamp field
src/features/polls.rs:73 PollCreationMessage — new fields added
wacore/noise/src/handshake.rs:160 ClientFinish — new padded_bytes, simulate_xxkem_fs fields
wacore/src/store/device.rs:206 Version bump 10314241171035617621

Generated Code (waproto/src/whatsapp.rs)

The +1037/-75 diff is machine-generated from the proto file — consistent with the proto changes.

Verification

  • No remaining references to removed BotAvatarMetadata / avatar_metadata in Rust source
  • nct_salt is correctly not referenced in source (excluded from this PR as noted)
  • No new unwrap() calls outside tests

No issues found. Clean proto-only update.


@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

Branchproto-update-2.3000.1035617621
Testbedubuntu-latest

🚨 2 Alerts

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Upper Boundary
(Limit %)
libsignal_benchmark::session_optimization_group::bench_decrypt_with_previous_session previous_session:setup_with_archived_sessions()Instructions
instructions x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
47.13 x 1e3
(+10.57%)Baseline: 42.62 x 1e3
44.76 x 1e3
(105.30%)

reporting_token_benchmark::message_encoding_group::bench_message_encoding simple:setup_simple_message()Instructions
instructions x 1e3
📈 plot
🚷 threshold
🚨 alert (🔔)
2.23 x 1e3
(+5.13%)Baseline: 2.12 x 1e3
2.22 x 1e3
(100.12%)

Click to view all benchmark results
BenchmarkInstructionsBenchmark Result
instructions
(Result Δ%)
Upper Boundary
instructions
(Limit %)
binary_benchmark::attr_parser_group::bench_attr_parser attr_lookup:setup_attr_marshaled()📈 view plot
🚷 view threshold
6,197.00
(-6.19%)Baseline: 6,605.92
6,936.21
(89.34%)
binary_benchmark::child_iteration_group::bench_get_children_by_tag📈 view plot
🚷 view threshold
524,304.00
(-29.75%)Baseline: 746,322.46
783,638.59
(66.91%)
binary_benchmark::jid_optimization_group::bench_jid_to_owned_access jid_access:setup_jid_heavy_marshaled()📈 view plot
🚷 view threshold
20,868.00
(-6.41%)Baseline: 22,298.33
23,413.25
(89.13%)
binary_benchmark::marshal_group::bench_marshal_allocating📈 view plot
🚷 view threshold
98,202.00
(-18.74%)Baseline: 120,844.72
126,886.96
(77.39%)
binary_benchmark::marshal_group::bench_marshal_auto_allocating📈 view plot
🚷 view threshold
98,230.00
(-11.62%)Baseline: 111,142.41
116,699.53
(84.17%)
binary_benchmark::marshal_group::bench_marshal_auto_huge_bytes_allocating📈 view plot
🚷 view threshold
532,948.00
(-0.13%)Baseline: 533,620.69
560,301.72
(95.12%)
binary_benchmark::marshal_group::bench_marshal_auto_long_string📈 view plot
🚷 view threshold
15,870.00
(-5.46%)Baseline: 16,786.34
17,625.65
(90.04%)
binary_benchmark::marshal_group::bench_marshal_auto_many_children_allocating📈 view plot
🚷 view threshold
14,715,201.00
(-9.20%)Baseline: 16,207,035.10
17,017,386.85
(86.47%)
binary_benchmark::marshal_group::bench_marshal_exact_allocating📈 view plot
🚷 view threshold
118,358.00
(-23.24%)Baseline: 154,190.09
161,899.59
(73.11%)
binary_benchmark::marshal_group::bench_marshal_exact_huge_bytes_allocating📈 view plot
🚷 view threshold
534,378.00
(-0.12%)Baseline: 535,040.03
561,792.03
(95.12%)
binary_benchmark::marshal_group::bench_marshal_exact_long_string📈 view plot
🚷 view threshold
17,919.00
(-4.88%)Baseline: 18,838.03
19,779.93
(90.59%)
binary_benchmark::marshal_group::bench_marshal_exact_many_children_allocating📈 view plot
🚷 view threshold
28,066,347.00
(-24.36%)Baseline: 37,103,139.31
38,958,296.28
(72.04%)
binary_benchmark::marshal_group::bench_marshal_huge_bytes_allocating📈 view plot
🚷 view threshold
533,387.00
(-0.13%)Baseline: 534,059.69
560,762.67
(95.12%)
binary_benchmark::marshal_group::bench_marshal_long_string📈 view plot
🚷 view threshold
15,843.00
(-8.30%)Baseline: 17,277.10
18,140.95
(87.33%)
binary_benchmark::marshal_group::bench_marshal_many_children_allocating📈 view plot
🚷 view threshold
14,716,627.00
(-9.20%)Baseline: 16,208,105.21
17,018,510.47
(86.47%)
binary_benchmark::marshal_group::bench_marshal_reusing_buffer📈 view plot
🚷 view threshold
107,945.00
(-14.96%)Baseline: 126,933.25
133,279.92
(80.99%)
binary_benchmark::marshal_group::bench_marshal_reusing_buffer_vec_writer📈 view plot
🚷 view threshold
98,302.00
(-11.61%)Baseline: 111,214.41
116,775.13
(84.18%)
binary_benchmark::roundtrip_group::bench_roundtrip large:setup_large_marshaled()📈 view plot
🚷 view threshold
90,974.00
(-5.96%)Baseline: 96,739.73
101,576.72
(89.56%)
binary_benchmark::roundtrip_group::bench_roundtrip small:setup_small_marshaled()📈 view plot
🚷 view threshold
7,378.00
(-3.85%)Baseline: 7,673.09
8,056.74
(91.58%)
binary_benchmark::roundtrip_group::bench_roundtrip_auto large:setup_large_marshaled()📈 view plot
🚷 view threshold
91,005.00
(-2.09%)Baseline: 92,943.50
97,590.67
(93.25%)
binary_benchmark::roundtrip_group::bench_roundtrip_auto small:setup_small_marshaled()📈 view plot
🚷 view threshold
7,401.00
(+0.42%)Baseline: 7,369.86
7,738.36
(95.64%)
binary_benchmark::roundtrip_group::bench_roundtrip_exact large:setup_large_marshaled()📈 view plot
🚷 view threshold
106,790.00
(-1.78%)Baseline: 108,728.50
114,164.92
(93.54%)
binary_benchmark::roundtrip_group::bench_roundtrip_exact small:setup_small_marshaled()📈 view plot
🚷 view threshold
8,913.00
(+0.35%)Baseline: 8,881.86
9,325.96
(95.57%)
binary_benchmark::unmarshal_group::bench_unmarshal large:setup_large_marshaled()📈 view plot
🚷 view threshold
41,989.00
(-8.86%)Baseline: 46,070.17
48,373.68
(86.80%)
binary_benchmark::unmarshal_group::bench_unmarshal small:setup_small_marshaled()📈 view plot
🚷 view threshold
2,717.00
(-4.97%)Baseline: 2,859.14
3,002.09
(90.50%)
binary_benchmark::unpack_group::bench_unpack_compressed📈 view plot
🚷 view threshold
556,092.00
(+2.81%)Baseline: 540,875.06
567,918.81
(97.92%)
binary_benchmark::unpack_group::bench_unpack_uncompressed📈 view plot
🚷 view threshold
771.00
(-0.34%)Baseline: 773.65
812.33
(94.91%)
libsignal_benchmark::conversation_group::bench_full_dm_conversation full:setup_conversation_data()📈 view plot
🚷 view threshold
27,661,466.00
(-0.16%)Baseline: 27,705,246.39
29,090,508.70
(95.09%)
libsignal_benchmark::dm_group::bench_dm_decrypt_first_message decrypt_prekey:setup_dm_with_first_message()📈 view plot
🚷 view threshold
5,544,446.00
(-0.07%)Baseline: 5,548,285.37
5,825,699.63
(95.17%)
libsignal_benchmark::dm_group::bench_dm_encrypt_first_message first_msg:setup_dm_session()📈 view plot
🚷 view threshold
175,119.00
(-1.48%)Baseline: 177,746.57
186,633.89
(93.83%)
libsignal_benchmark::dm_group::bench_dm_encrypt_subsequent_message subsequent:setup_established_dm_session()📈 view plot
🚷 view threshold
175,768.00
(-1.55%)Baseline: 178,540.10
187,467.11
(93.76%)
libsignal_benchmark::dm_group::bench_dm_session_establishment setup:setup_dm_users()📈 view plot
🚷 view threshold
17,092,444.00
(-1.09%)Baseline: 17,281,352.22
18,145,419.84
(94.20%)
libsignal_benchmark::group_messaging_group::bench_group_create_distribution_message create:setup_group_sender()📈 view plot
🚷 view threshold
298,353.00
(+0.61%)Baseline: 296,547.05
311,374.41
(95.82%)
libsignal_benchmark::group_messaging_group::bench_group_decrypt_message decrypt:setup_group_with_encrypted_message()📈 view plot
🚷 view threshold
12,560,655.00
(-0.28%)Baseline: 12,596,363.40
13,226,181.56
(94.97%)
libsignal_benchmark::group_messaging_group::bench_group_encrypt_message encrypt:setup_group_with_distribution()📈 view plot
🚷 view threshold
719,597.00
(+0.43%)Baseline: 716,493.81
752,318.50
(95.65%)
libsignal_benchmark::session_optimization_group::bench_decrypt_with_previous_session previous_session:setup_with_archived_sessions()📈 view plot
🚷 view threshold
🚨 view alert (🔔)
47,129.00
(+10.57%)Baseline: 42,624.60
44,755.83
(105.30%)

libsignal_benchmark::session_optimization_group::bench_message_key_eviction eviction:setup_message_key_eviction()📈 view plot
🚷 view threshold
15,561,842.00
(+0.00%)Baseline: 15,561,752.06
16,339,839.66
(95.24%)
libsignal_benchmark::session_optimization_group::bench_out_of_order_decryption out_of_order:setup_out_of_order_messages()📈 view plot
🚷 view threshold
5,371,271.00
(-2.25%)Baseline: 5,494,636.21
5,769,368.02
(93.10%)
libsignal_benchmark::session_optimization_group::bench_promote_matching_session promote:setup_promote_matching_session()📈 view plot
🚷 view threshold
311,806.00
(-64.79%)Baseline: 885,664.78
929,948.02
(33.53%)
libsignal_benchmark::signature_group::bench_key_generation keygen📈 view plot
🚷 view threshold
2,830,547.00
(+0.21%)Baseline: 2,824,710.02
2,965,945.52
(95.43%)
libsignal_benchmark::signature_group::bench_signature_creation sign:setup_keypair_with_message()📈 view plot
🚷 view threshold
3,452,844.00
(-0.61%)Baseline: 3,473,936.19
3,647,633.00
(94.66%)
libsignal_benchmark::signature_group::bench_signature_verification verify:setup_keypair_with_message()📈 view plot
🚷 view threshold
125,443,758.00
(+0.08%)Baseline: 125,349,735.93
131,617,222.72
(95.31%)
reporting_token_benchmark::content_extraction_group::bench_content_extraction extended:setup_extended_message()📈 view plot
🚷 view threshold
12,002.00
(+1.72%)Baseline: 11,799.47
12,389.45
(96.87%)
reporting_token_benchmark::content_extraction_group::bench_content_extraction simple:setup_simple_message()📈 view plot
🚷 view threshold
3,930.00
(+2.79%)Baseline: 3,823.17
4,014.32
(97.90%)
reporting_token_benchmark::full_generation_group::bench_full_token_generation extended:setup_full_gen_extended()📈 view plot
🚷 view threshold
87,073.00
(-0.89%)Baseline: 87,858.85
92,251.79
(94.39%)
reporting_token_benchmark::full_generation_group::bench_full_token_generation simple:setup_full_gen_simple()📈 view plot
🚷 view threshold
79,022.00
(-1.11%)Baseline: 79,904.97
83,900.22
(94.19%)
reporting_token_benchmark::key_derivation_group::bench_key_derivation📈 view plot
🚷 view threshold
50,375.00
(-1.20%)Baseline: 50,988.60
53,538.03
(94.09%)
reporting_token_benchmark::message_encoding_group::bench_message_encoding extended:setup_extended_message()📈 view plot
🚷 view threshold
5,956.00
(+3.59%)Baseline: 5,749.33
6,036.80
(98.66%)
reporting_token_benchmark::message_encoding_group::bench_message_encoding simple:setup_simple_message()📈 view plot
🚷 view threshold
🚨 view alert (🔔)
2,227.00
(+5.13%)Baseline: 2,118.39
2,224.31
(100.12%)

reporting_token_benchmark::token_calculation_group::bench_token_calculation📈 view plot
🚷 view threshold
21,920.00
(+0.02%)Baseline: 21,916.65
23,012.48
(95.25%)
🐰 View full continuous benchmarking report in Bencher

@jlucaso1
jlucaso1 merged commit ed7721f into main Mar 25, 2026
8 checks passed
@jlucaso1
jlucaso1 deleted the proto-update-2.3000.1035617621 branch March 25, 2026 16:33
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