Compare commits
merge into: ruicesar/InfiniteAPI:test/state-mar19-after-303-past
ruicesar/InfiniteAPI:master
ruicesar/InfiniteAPI:fix/restore-master-from-mar18
ruicesar/InfiniteAPI:master-archive-pre-restore-2026-05-01
ruicesar/InfiniteAPI:fix/use-mar4-base
ruicesar/InfiniteAPI:fix/silence-decrypt-error-spam
ruicesar/InfiniteAPI:test/revert-username-pr
ruicesar/InfiniteAPI:fix/decryption-fail-fast
ruicesar/InfiniteAPI:fix/libsignal-raw-jid-transaction-key
ruicesar/InfiniteAPI:feat/replace-circuit-breaker-with-bounded-retry
ruicesar/InfiniteAPI:perf/upsert-fire-and-forget-postwork
ruicesar/InfiniteAPI:fix/view-once-linked-device
ruicesar/InfiniteAPI:chore/reduce-decrypt-error-log-verbosity
ruicesar/InfiniteAPI:fix/inbound-latency-restore
ruicesar/InfiniteAPI:fix/history-sync-tctoken-parallel
ruicesar/InfiniteAPI:feat/tctoken-lifecycle-completion
ruicesar/InfiniteAPI:perf/history-sync-memory
ruicesar/InfiniteAPI:test/reconnection-sync-skip
ruicesar/InfiniteAPI:perf/early-ignore-jid
ruicesar/InfiniteAPI:feat/username-inbound-support
ruicesar/InfiniteAPI:fix/abprops-bad-request
ruicesar/InfiniteAPI:test/revert-to-pr380
ruicesar/InfiniteAPI:fix/remove-vo-raw-debug-logs
ruicesar/InfiniteAPI:test/state-with-dual-protocol
ruicesar/InfiniteAPI:test/state-pre-dual-protocol
ruicesar/InfiniteAPI:test/state-at-pr355
ruicesar/InfiniteAPI:fix/view-once-msmsg-fanout
ruicesar/InfiniteAPI:feat/call-signaling-upstream
ruicesar/InfiniteAPI:fix/respect-caller-provided-waveform
ruicesar/InfiniteAPI:feat/view-once-receive
ruicesar/InfiniteAPI:fix/newsletter-media-upload
ruicesar/InfiniteAPI:fix/bad-mac-retry-alignment
ruicesar/InfiniteAPI:test/state-mar19-after-lidpn
ruicesar/InfiniteAPI:fix/histsync-lid-improvements
ruicesar/InfiniteAPI:test/state-mar19-after-304-histsync
ruicesar/InfiniteAPI:test/state-mar19-after-303-past
ruicesar/InfiniteAPI:fix/past-participants-normalization
ruicesar/InfiniteAPI:fix/past-participants-history-sync
ruicesar/InfiniteAPI:fix/newsletter-wmex-query-ids
ruicesar/InfiniteAPI:test/state-mar18-after-297
ruicesar/InfiniteAPI:fix/carousel-send-render-clean
ruicesar/InfiniteAPI:claude/debug-lint-failures-ZWZLy
ruicesar/InfiniteAPI:test/state-mar16-after-pnlid
ruicesar/InfiniteAPI:fix/pn-lid-session-reuse
ruicesar/InfiniteAPI:test/state-mar16-before-pnlid
ruicesar/InfiniteAPI:fix/carousel-web-runtime-only
ruicesar/InfiniteAPI:fix/carousel-web-clean
ruicesar/InfiniteAPI:fix/carousel-web-render
ruicesar/InfiniteAPI:test/state-mar13-ack-mention
ruicesar/InfiniteAPI:claude/check-music-metadata-version-dTq2i
ruicesar/InfiniteAPI:test/state-mar7-after-carousel
ruicesar/InfiniteAPI:fix/carousel-working-minimal
ruicesar/InfiniteAPI:fix/carousel-web-biz-node
ruicesar/InfiniteAPI:fix/sticker-waba-alignment
ruicesar/InfiniteAPI:test/state-mar4-after-waba
ruicesar/InfiniteAPI:fix/signal-waba-alignment
ruicesar/InfiniteAPI:fix/tctoken-waba-alignment
ruicesar/InfiniteAPI:feat/android-browser-upstream
ruicesar/InfiniteAPI:fix/android-paircode-useragent
ruicesar/InfiniteAPI:feat/android-browser-v2
ruicesar/InfiniteAPI:fix/bad-mac-session-loop
ruicesar/InfiniteAPI:fix/lid-to-pn-normalization
ruicesar/InfiniteAPI:feat/call-signaling
ruicesar/InfiniteAPI:fix/platform-web-to-macos-405
ruicesar/InfiniteAPI:fix/fetch-version-timeout
ruicesar/InfiniteAPI:fix/normalise-reaction-key-remoteJid
ruicesar/InfiniteAPI:test/state-feb28-end
ruicesar/InfiniteAPI:perf/fix-message-delivery-latency
..
pull from: ruicesar/InfiniteAPI:fix/past-participants-normalization
ruicesar/InfiniteAPI:master
ruicesar/InfiniteAPI:fix/restore-master-from-mar18
ruicesar/InfiniteAPI:master-archive-pre-restore-2026-05-01
ruicesar/InfiniteAPI:fix/use-mar4-base
ruicesar/InfiniteAPI:fix/silence-decrypt-error-spam
ruicesar/InfiniteAPI:test/revert-username-pr
ruicesar/InfiniteAPI:fix/decryption-fail-fast
ruicesar/InfiniteAPI:fix/libsignal-raw-jid-transaction-key
ruicesar/InfiniteAPI:feat/replace-circuit-breaker-with-bounded-retry
ruicesar/InfiniteAPI:perf/upsert-fire-and-forget-postwork
ruicesar/InfiniteAPI:fix/view-once-linked-device
ruicesar/InfiniteAPI:chore/reduce-decrypt-error-log-verbosity
ruicesar/InfiniteAPI:fix/inbound-latency-restore
ruicesar/InfiniteAPI:fix/history-sync-tctoken-parallel
ruicesar/InfiniteAPI:feat/tctoken-lifecycle-completion
ruicesar/InfiniteAPI:perf/history-sync-memory
ruicesar/InfiniteAPI:test/reconnection-sync-skip
ruicesar/InfiniteAPI:perf/early-ignore-jid
ruicesar/InfiniteAPI:feat/username-inbound-support
ruicesar/InfiniteAPI:fix/abprops-bad-request
ruicesar/InfiniteAPI:test/revert-to-pr380
ruicesar/InfiniteAPI:fix/remove-vo-raw-debug-logs
ruicesar/InfiniteAPI:test/state-with-dual-protocol
ruicesar/InfiniteAPI:test/state-pre-dual-protocol
ruicesar/InfiniteAPI:test/state-at-pr355
ruicesar/InfiniteAPI:fix/view-once-msmsg-fanout
ruicesar/InfiniteAPI:feat/call-signaling-upstream
ruicesar/InfiniteAPI:fix/respect-caller-provided-waveform
ruicesar/InfiniteAPI:feat/view-once-receive
ruicesar/InfiniteAPI:fix/newsletter-media-upload
ruicesar/InfiniteAPI:fix/bad-mac-retry-alignment
ruicesar/InfiniteAPI:test/state-mar19-after-lidpn
ruicesar/InfiniteAPI:fix/histsync-lid-improvements
ruicesar/InfiniteAPI:test/state-mar19-after-304-histsync
ruicesar/InfiniteAPI:test/state-mar19-after-303-past
ruicesar/InfiniteAPI:fix/past-participants-normalization
ruicesar/InfiniteAPI:fix/past-participants-history-sync
ruicesar/InfiniteAPI:fix/newsletter-wmex-query-ids
ruicesar/InfiniteAPI:test/state-mar18-after-297
ruicesar/InfiniteAPI:fix/carousel-send-render-clean
ruicesar/InfiniteAPI:claude/debug-lint-failures-ZWZLy
ruicesar/InfiniteAPI:test/state-mar16-after-pnlid
ruicesar/InfiniteAPI:fix/pn-lid-session-reuse
ruicesar/InfiniteAPI:test/state-mar16-before-pnlid
ruicesar/InfiniteAPI:fix/carousel-web-runtime-only
ruicesar/InfiniteAPI:fix/carousel-web-clean
ruicesar/InfiniteAPI:fix/carousel-web-render
ruicesar/InfiniteAPI:test/state-mar13-ack-mention
ruicesar/InfiniteAPI:claude/check-music-metadata-version-dTq2i
ruicesar/InfiniteAPI:test/state-mar7-after-carousel
ruicesar/InfiniteAPI:fix/carousel-working-minimal
ruicesar/InfiniteAPI:fix/carousel-web-biz-node
ruicesar/InfiniteAPI:fix/sticker-waba-alignment
ruicesar/InfiniteAPI:test/state-mar4-after-waba
ruicesar/InfiniteAPI:fix/signal-waba-alignment
ruicesar/InfiniteAPI:fix/tctoken-waba-alignment
ruicesar/InfiniteAPI:feat/android-browser-upstream
ruicesar/InfiniteAPI:fix/android-paircode-useragent
ruicesar/InfiniteAPI:feat/android-browser-v2
ruicesar/InfiniteAPI:fix/bad-mac-session-loop
ruicesar/InfiniteAPI:fix/lid-to-pn-normalization
ruicesar/InfiniteAPI:feat/call-signaling
ruicesar/InfiniteAPI:fix/platform-web-to-macos-405
ruicesar/InfiniteAPI:fix/fetch-version-timeout
ruicesar/InfiniteAPI:fix/normalise-reaction-key-remoteJid
ruicesar/InfiniteAPI:test/state-feb28-end
ruicesar/InfiniteAPI:perf/fix-message-delivery-latency
1 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
64ec22d436 |
fix: add pastParticipants to HistorySync with LID normalization and deduplication
Two bugs fixed compared to prior implementation:
1. history.ts — normalize userJid LID→PN
pastParticipants[].userJid may arrive as a LID identifier (e.g. "46802258641027@lid").
The consumer expects a phone number. After building the lidPnMap from conversations
and phoneNumberToLidMappings, each userJid is resolved to its PN equivalent.
If the mapping is not available the original value is preserved (no data loss).
2. event-buffer.ts — deduplicate by groupJid + userJid across chunks
Multiple HistorySync chunks can contain the same group. The previous approach
concatenated blindly, producing duplicate entries. Now a keyed map
{ [groupJid]: IPastParticipant[] } is used so each group appears once and
each participant within a group appears at most once.
Types updated (Events.ts):
- messaging-history.set event includes pastParticipants?: IPastParticipants[]
- BufferedEventData.historySets.pastParticipants typed as keyed map
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|