Skip to content

fix(chatwoot): group message without participant or with LID no longer kills the sink (xmacna/elysium#961) - #5

Merged
raffareis merged 2 commits into
mainfrom
xmacna/961-chatwoot-group-participant
Oct 21, 2026
Merged

raffareis merged 2 commits into
mainfrom
xmacna/961-chatwoot-group-participant

Conversation

@raffareis

Copy link
Copy Markdown
Member

Fixes the Chatwoot sink for group messages without participant or with a LID participant (xmacna/elysium#961). Before this, TypeError ... 'split' / 'formatInternational' made the receipt dead after 10 attempts in enforce mode.

  • chatwootGroupParticipant.ts: participant = participantAlt (LID, not fromMe) -> participant -> participantAlt; LID or unparseable number shows the raw identifier; no identifier shows only the pushName.
  • Both group branches of chatwoot.service.ts (media and text) use the helper.
  • follow-redirects 1.16.1 (GHSA-q3jh-wrc6-jgq8, GHSA-8r9p-f939-6h3c), lockfile only, needed for the npm audit gate.

Proof:

  • test/xmacna-chatwoot-group-participant.test.ts 7/7; counter-proof against the original service reproduces the TypeError.
  • tsc 0, lint clean, test:xmacna-inbox 76/76, validate-inbound-inbox-source PostgreSQL 3/3 (incl. 840 concurrent deliveries), runtime audit 0.
  • Published by digest via candidate-release (evolution-api-candidate@sha256:a6d1c379e2c7…) and live on the default Evolution since 2026-10-21 03:18Z (MAR-552). This merge makes main match the running runtime.

🤖 Generated with Claude Code

raffareis and others added 2 commits October 20, 2026 20:05
…r kills the sink (xmacna/elysium#961)

The group branches of eventWhatsapp called participant.split() without a guard
and parsePhoneNumberFromString(...).formatInternational() without checking the
result. Group messages with no participant, or with a LID participant and no
participantAlt, threw a TypeError; in enforce the durable inbox retried the
receipt 10 times and marked it dead.

Resolve the participant as participantAlt (LID addressing) -> participant ->
participantAlt, show the raw identifier for LIDs or unparsable numbers, and
drop the identifier from the header when there is none.

MAR-552

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f939-6h3c)

Runtime audit gate of validate-inbound-inbox-source fails on 1.16.0.
Lockfile-only bump within axios range.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@raffareis
raffareis merged commit 082ede2 into main Oct 21, 2026
4 checks passed
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