← Back to PRs

#12793: fix(signal): preserve case-sensitivity for group IDs, UUIDs, and usernames

by wilmerdooley1-star open 2026-02-09 17:50 View on GitHub →
stale
## Problem Messages sent to Signal groups via the `message` tool fail with `Group not found` errors. Signal group IDs are base64-encoded strings that are **case-sensitive**, but the message normalization and actions handlers were incorrectly lowercasing these identifiers. Example: - Correct: `eouKjHKHie8bH+nncebACPAD1cjJZZd46i1+pMaqnMA=` - Broken (lowercased): `eoukjhkhie8bh+nncebacpad1cjjzzd46i1+pmaqnma=` ## Changes ### `src/channels/plugins/normalize/signal.ts` - **`normalizeSignalMessagingTarget`**: Preserve case for `group:`, `uuid:`, and `username:` identifiers - Only lowercase phone numbers (the fallback case), which are typically numeric and case-insensitive ### `src/channels/plugins/actions/signal.ts` - **`resolveSignalReactionTarget`**: Check prefix case-insensitively but preserve group ID case - **`normalizeSignalReactionRecipient`**: Check prefix case-insensitively but preserve UUID case ### `src/channels/plugins/normalize/signal.test.ts` - Updated existing UUID tests to expect case preservation - Added tests for group ID case preservation (base64 strings) - Added tests for username case preservation - Added tests for `u:` shorthand username case preservation ## Testing Tested with Signal group message delivery: - **Before**: `Signal RPC -1: Group not found: eoukjhkhie8bH...` (lowercased ID) - **After**: Messages deliver successfully with case-preserved group ID ## Impact - ✅ Fixes message delivery to Signal groups - ✅ Fixes reactions in Signal groups - ✅ No breaking changes (prefixes like `group:` are still matched case-insensitively) Closes #12843

Most Similar PRs