Commit Graph

301 Commits

Author SHA1 Message Date
Renato Alcara bedb21fa1b Revert "fix: add blank line before line 1893 to satisfy linting rules"
This reverts commit eb84424142.
2026-04-04 00:33:16 -03:00
Renato Alcara eb84424142 fix: add blank line before line 1893 to satisfy linting rules 2026-03-15 21:16:08 -03:00
Renato Alcara 49241af14f Merge branch 'master' into feat/call-signaling-upstream 2026-03-13 20:53:22 -03:00
João Lucas c4e5d1262a Fix ack handling (#2373)
* fix: ack handling to match wa web

* fix: prevent duplicate ack on message errors
2026-03-13 21:45:49 +02:00
Renato Alcara 83a166f1cc style: fix CRLF line endings and prettier formatting
Convert CRLF to LF line endings and apply prettier auto-fix
to pass CI lint checks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 13:17:01 -03:00
Renato Alcara 67b578db33 feat: complete WhatsApp call signaling (voice, video, call links)
Implements comprehensive call signaling based on real WhatsApp Android
protocol captures via Frida dynamic instrumentation (v2.26).

Voice calls: offerCall, acceptCall, preacceptCall, rejectCall, terminateCall,
  sendRelayLatency, sendTransport, sendCallDuration
Video calls: sendVideoState, sendEncRekey, muteCall, sendHeartbeat
Call links: createCallLink, queryCallLink, joinCallLink

Enhanced handleCall to process multi-children stanzas (e.g. transport +
mute_v2 arriving together) and added CB:relay handler for top-level
relay stanzas carrying TURN server info.

Inspired by WhiskeySockets/Baileys#2375 — verified and corrected against
real protocol captures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 15:04:45 -03:00
João Lucas 7a5b090616 fix: request placeholder resend for messages without encryption (CTWAads) (#2334)
* fix: request placeholder resend for messages without encryption (CTWA ads)

* fix: implement placeholder resend cache management and metadata preservation
2026-02-11 11:56:23 +02:00
vini 23156c833e feat(call): add caller phone number to offer call event (#2190) 2026-02-11 02:11:16 +02:00
João Lucas b5c174111f feat: replace async crypto with sync Rust WASM for app state sync (#2315)
* feat: replace async crypto with sync Rust WASM for app state sync

* fix: remove unecessary buffer copying

* fix: update whatsapp-rust-bridge to version 0.5.2 and refactor async calls to sync. HKDF and MD5 in rust
2026-02-05 16:06:47 +02:00
João Lucas de Oliveira Lopes 92d4198ff1 fix: skip retry for expired status messages over 24 hours old (#2280) 2026-01-22 14:55:29 +02:00
João Lucas de Oliveira Lopes 5cbad3170b Fix connection showing "Online" but disconnected (#2132) (#2264)
* fix(messages): handle identity change notifications correctly (#2132)

* fix: tests and linting, add a helper like waweb
2026-01-22 14:54:10 +02:00
Rajeh Taher d4e5b4167d history: fortify contact data 2026-01-22 14:13:33 +02:00
Luiz Braga 32134a870e chore: Add messageTimestamp to message updates in messages-recv when receiving a message status update (#2277) 2026-01-20 12:37:34 +02:00
Rajeh Taher 83e0f22af8 messages-recv: decrease PDO response timeout 2026-01-18 01:34:39 +02:00
YonkoSam 1408499d7c moved retryCount before validating the session (#2167) 2026-01-18 01:11:10 +02:00
Matheus Filype b7960dbb9a feat: Optimize Offline Node Processing with Batching and Event Loop Yielding (#2138)
* fix: improve message resend logic by adding checks for message IDs

* Revert "fix: improve message resend logic by adding checks for message IDs"

This reverts commit c03f9d8e6fc6cbfbb9d1f8f67c169700e704213d.

* fix(messages-recv): improve offline node processing and error handling

* feat: improve offline node processing by yielding to event loop
2025-12-12 06:50:18 +02:00
YonkoSam 1e6f65cf5e fix Memory leak in makeMutex - Promise never gets garbage collected (#2151)
* Memory leak in makeMutex - Promise never gets garbage collected

Hey, I've been debugging a memory leak in my application and traced it back to the makeMutex implementation.

The current implementation chains promises indefinitely without ever breaking the chain:

Every call to mutex() creates a new Promise that awaits the previous task, then becomes the new task. The problem is the old promises never get released because each one holds a reference to the previous through the closure.

What I found
Took a heap snapshot after running for a while and found hundreds of Promises from make-mutex.js holding ~15MB and growing. The retainer graph shows a long chain of Promises all pointing back to each other.

Since processingMutex handles every incoming message/notification, this chain grows constantly and never shrinks.

This keeps the same mutex behavior but lets the GC clean up old promises every 50 tasks instead of holding them forever.

* Refactor makeMutex to use AsyncMutex directly

* lint

* revert
2025-12-12 04:35:24 +02:00
Matheus Filype 829fa8d601 feat: Mutex redesign - isolate event processing for better ordering and throughput (#2137)
* fix: improve message resend logic by adding checks for message IDs

* Revert "fix: improve message resend logic by adding checks for message IDs"

This reverts commit c03f9d8e6fc6cbfbb9d1f8f67c169700e704213d.

* fix: introduce separate mutexes for message, receipt, app state patch, and notification processing

* fix: remove unused processing mutex for notifications
2025-12-12 04:34:59 +02:00
João Lucas de Oliveira Lopes 674f116b00 fix(messages-recv): cancel pending phone requests for message retries (#2147) 2025-12-05 23:41:14 +02:00
YonkoSam 96e4e04239 Await cache checks for message resend logic (#2136) 2025-12-05 23:40:38 +02:00
Rajeh Taher f46e8b118c messages-recv: handle newsletter and unavailable message acks 2025-11-21 17:35:46 +02:00
Rajeh Taher 23f1268918 messages-recv: remove outdated case for privacy_token 2025-11-21 17:09:06 +02:00
Rajeh Taher 129df47fbb revert #2010 2025-11-19 16:57:22 +02:00
Rajeh Taher e3cc1acec0 messages-recv: ignore only view once messages 2025-11-19 16:54:57 +02:00
Rajeh Taher 247c717881 messages, auth: rename 'contacts-tc-token' to tctoken 2025-11-19 16:35:18 +02:00
Rajeh Taher 50d410d117 chore: lint 2025-11-19 16:25:56 +02:00
vini a70e4da1c4 feat(signal): better parity with whatsapp web (#1967) 2025-11-19 15:20:49 +02:00
Cassio Santos 5c456e514e fix: cannot send message on new Whatsapp Business limited accounts (#2080)
* fix: cannot send message on new Whatsapp Business limited accounts

* chore: add woraround to resend the message on 475 errors

* fix: lint

* fix: add handler

* fix: lint

* Update src/Socket/messages-send.ts

---------

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2025-11-19 15:18:19 +02:00
vini b4863b624e refactor(retry): improve message encryption and retry logic (#2055) 2025-11-19 15:13:51 +02:00
João Lucas de Oliveira Lopes 9b012baa5c fix: suppress receipts for newsletter messages to prevent disconnection (#2071) 2025-11-19 15:13:03 +02:00
João Lucas de Oliveira Lopes e5f820d119 fix: gracefully handle unavailable view-once messages and improve log error (#2070) 2025-11-19 15:12:28 +02:00
Rajeh Taher 29318cf6c2 chore: lint and re-organize 2025-10-20 00:37:37 +03:00
Rajeh Taher cc3cd17392 cleanup: remove string lid / jid refs and improve hosted support 2025-10-20 00:05:54 +03:00
Rajeh Taher 928fa6ac66 messages-recv: simplify retry logic + re-do acks 2025-10-18 21:02:58 +03:00
Rajeh Taher 07536dedfc process-message: check fromMe properly in message addons 2025-10-18 20:28:58 +03:00
Rajeh Taher e41a66b3c4 libsignal,lid-mapping, etc.: Partially fix "No sessions" on hosted JIDs 2025-10-16 18:31:01 +03:00
vini 20c43d1d3c chore: remove unnecessary info logs (#1893) 2025-10-11 13:45:38 +03:00
Rajeh Taher f56293365f chore: avoid npm warnings (update conventional-changelog) 2025-10-08 19:46:39 +03:00
Rajeh Taher 54db127303 defaults,utils: Minimize vectors for automation detection 2025-10-07 20:29:47 +03:00
Rajeh Taher acc5111792 group events: fix serialization issue 2025-10-07 20:17:07 +03:00
Rajeh Taher c5b0001b61 *group: parse @lids properly when processing group notifications
*This commit is breaking, it changes the format of participants in group-participants.update.
2025-10-05 23:56:14 +03:00
Rajeh Taher 09263aa3d2 libsignal: Process @hosted conversions to @hosted.lid 2025-10-05 22:51:13 +03:00
Rajeh Taher dd93b641c9 Signal, messages-recv, jid-utils: Handle ADJIDs properly in Signal 2025-10-05 19:09:28 +03:00
Rajeh Taher 38e0f2c0e6 Signal, messages-recv: Fix previous commit, fix log 2025-10-04 15:30:04 +03:00
Rajeh Taher 334977f983 general: revert #1665 2025-10-03 18:14:30 +03:00
Rajeh Taher 37d729b33a messages-recv, decode-wa-message: handle storing new pairs better + lint 2025-10-03 01:17:37 +03:00
Rajeh Taher 50b36ece3b decode-wa-message, process-message: Fix @hosted lids processing 2025-10-03 00:22:57 +03:00
Rajeh Taher 39541cc162 messages: No longer send <ack>s on successful decrypt + fix lid acks 2025-10-02 23:30:28 +03:00
Gustavo Quadri ae456cb342 fix: send message speed, lid logic, remove messages-send useless functions (#1794)
* fix: remove redundant migration

* fix: remove deduplicatelidpnjids

* fix: assertsessions complexity

* fix: assertsessions call

* fix: remove getencryptionjid

* fix: add wirejid to injecte2esession, remove libsignal lid migration

* fix: logger lid-mapping

* fix: injecte2esession decoded approach

* fix: changes made by @AstroX11

* fix: lint

* fix: lint

* fix: lint

* Revert "fix: injecte2esession decoded approach"

This reverts commit 4e368296ed084398b8a173ec117dc2478e481748.

* fix: centralize getlidforpn calls in messages-send

* fix: add resolvechunklids to signal

* fix: remove useless arrays

* fix: assertsessions logic

* fix: lint

* Revert "fix: assertsessions logic"

This reverts commit 65b0730891c91573edcab1c96af010db54382fba.

* fix: remove onwhatsapp fallback to prevent rate limit, migrate sessions when lid-map is created, new migration logic and user devices key

* fix: migrate session devices, socket creation

* fix: add back decryptionjid validation

* fix: add resolveSignalAddress to get lid

* fix: type error migration

* fix: lint

* fix: device level cache, proposed changes
2025-09-26 06:53:15 +03:00
João Lucas de Oliveira Lopes 3b46d43beb fix: harden Protobuf Deserialization and Refactor Utilities (#1820)
* refactor: reorganize browser utility functions and improve buffer handling

* fix: harden protobuf deserialization and clean up code

* refactor: simplify data handling in GroupCipher and SenderKey classes

* fix: Ensure consistent Buffer hydration and remove redundant code

* refactor: update decodeAndHydrate calls to use proto types for improved type safety
2025-09-26 04:45:30 +03:00