Fix Signal Desktop v8.0.0 binary ACI compatibility#799
Open
strichter wants to merge 2 commits intobbernhard:masterfrom
Open
Fix Signal Desktop v8.0.0 binary ACI compatibility#799strichter wants to merge 2 commits intobbernhard:masterfrom
strichter wants to merge 2 commits intobbernhard:masterfrom
Conversation
Signal Desktop v8.0.0 switched from string ACI fields to binary ACI encoding in protobuf messages. This breaks reactions, mentions, quotes, and other message features when the library cannot parse the new format. Two-part fix applied via patch to signal-cli v0.13.24 source build: 1. Bump signal-service-java from unofficial_137 to unofficial_138, which adds dual-format ACI parsing (string + binary fallback via ServiceId.parseOrNull). 2. Add defensive null guards in MessageEnvelope.java for cases where ServiceId resolution still fails (e.g. ACI.UNKNOWN). Preserves message content with UNKNOWN_UUID fallback rather than dropping entire message components (quotes, reactions, mentions, etc.). The patch is applied during the x86_64 source build. The source-built installDist output replaces the release tarball, so both the JVM and native (GraalVM) paths get the fix. Non-x86_64 architectures continue using the unpatched release tarball until signal-cli cuts a new release with unofficial_138. See: AsamK/signal-cli#1944 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Open
2 tasks
The BUILT_LIBSIGNAL_JAR variable captured a relative path that became invalid after cd /tmp. Switch to capturing just the filename and using the already-copied absolute path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
strichter
added a commit
to strichter/signal-cli-rest-api
that referenced
this pull request
Feb 28, 2026
… ACI Signal Desktop v8.0.0 switched to binary ACI encoding which breaks reactions, mentions, and quotes in signal-cli v0.13.24. The signal-cli master branch already includes the fix (signal-service-java unofficial_138 with dual-format ACI parsing), so building from master on x86_64 resolves all three issues without needing a patch. Changes: - Build from signal-cli master instead of v0.13.24 tag on x86_64 - Use installDist output as the main signal-cli installation - Detect libsignal-client jar version dynamically (master uses 0.87.1) - Update signal-cli-native.patch for master's build.gradle.kts - Move BaseConfig/libsignal workarounds behind arch guard (arm64/armv7 only) Supersedes bbernhard#799 (patch-based approach). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 tasks
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Signal Desktop v8.0.0 switched from string ACI fields (
mentionAci,authorAci,targetAuthorAci) to binary ACI encoding (mentionAciBinary,authorAciBinary,targetAuthorAciBinary) in protobuf messages. This causes:Fix
Two-part patch applied to signal-cli v0.13.24 during the x86_64 source build:
Bump
signal-service-javafromunofficial_137→unofficial_138— adds dual-format ACI parsing (ServiceId.parseOrNull(stringField, binaryField)) so both old string and new binary formats work.Defensive null guards in
MessageEnvelope.java— for edge cases where ServiceId resolution still returns null/ACI.UNKNOWN:getTargetAuthor()getServiceId()UNKNOWN_UUIDinstead of dropping the quoteHow it works
ext/patches/fix-binary-aci.patchto the v0.13.24 checkout, theninstallDistreplaces the release tarball directory. Both the JVM and GraalVM native paths get the fix.unofficial_138.Verified
Tested end-to-end with Signal Desktop v8.0.0 sending to a linked signal-cli instance:
targetAuthorUuidpopulatedmentionsarray with UUIDs presentquote.authorUuidpopulatedRelated
unofficial_138: dual-format ACI parsingTest plan
podman build .)🤖 Generated with Claude Code