Repository navigation
Preserve Unicode BlueBubbles reactions and publish room capabilities - #241
Draft
chrisbutler wants to merge 1 commit into
Draft
chrisbutler wants to merge 1 commit into
chrisbutler wants to merge 1 commit into
Conversation
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.
The BlueBubbles connector currently maps reactions into the six classic Tapbacks. This loses distinctions such as a blue heart versus a red heart, a skin-tone thumbs-up versus a plain thumbs-up, and arbitrary Unicode reactions. Stored reactions also need their original Unicode value for replacement/removal after a restart.
Add opt-in Unicode Tapbacks behind an optional connector interface, with the existing behavior retained for other connectors and servers without the capability. Require macOS 26+, an enabled private API, and the server's checked
custom_emoji_reactionscapability. Preserve the complete Unicode value through incoming JSON, sending, history/backfill, database storage, replacement, and redaction. Schema 22 adds a default-emptycustom_emojifield for existing classic records. A failed remote removal keeps the local reaction record available for retry.Publish BlueBubbles reaction capabilities in
com.beeper.room_featuresat the bridge state key and the empty key used by current Android room-state refresh. Unicode mode omits the six-emoji allowlist and still allows one reaction per sender; uploaded/image emoji remain unsupported. Capability cache IDs include the whole feature payload. Explicit SMS rooms retain conservative classic-reaction and transport restrictions.Enable with
imessage.bluebubbles_custom_emoji_reactions: trueonly on a server/helper with the companion capability changes. Companion drafts: BlueBubblesApp/bluebubbles-server#870 and BlueBubblesApp/bluebubbles-helper#78 . The server contribution is stacked on BlueBubblesApp/bluebubbles-server#839 and credits that existing work.Validation:
go test ./...passes on macOS arm64.go test -race ./imessage/bluebubblespasses.Draft review items:
imessagego. This PR preserves the protocol identity; the account-specific generic-protocol workaround and SMS room allowlists are kept out of this contribution. The Android client needs a separate picker/capability fix.This PR is independent of contact sync #238. It includes no user room IDs, contact records, credentials, compiled binaries, or local installation policy. Implementation and tests were developed with Codex assistance.