← Back to PRs

#11600: fix(bluebubbles): always use private-api method for sending

by coletebou open 2026-02-08 01:52 View on GitHub →
channel: bluebubbles stale
## Problem The BlueBubbles plugin only sets `method: "private-api"` when sending replies or messages with effects. Without this flag, BlueBubbles falls back to AppleScript, which hangs indefinitely on macOS Tahoe (error -1700) — even when the Private API helper is connected and working. ## Fix Always set `method: "private-api"` in the text message payload. This matches the behavior already used by the attachment send path (`attachments.ts` already hardcodes `method: "private-api"`). ## Testing - Verified on macOS 26.2.0 with BlueBubbles Server 1.9.9 - Server reports `private_api: true`, `helper_connected: true` - Messages send successfully with the fix; hang indefinitely without it Closes #1911 <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This change updates the BlueBubbles text-message send path (`extensions/bluebubbles/src/send.ts`) to always include `method: "private-api"` in the `/api/v1/message/text` payload, aligning it with the attachment-send path and avoiding BlueBubbles’ AppleScript fallback behavior on newer macOS versions. The rest of the module continues to resolve a chat GUID for a target (handle/chat id/chat guid/identifier), optionally create a new DM chat when needed, and then POST the message payload via `blueBubblesFetchWithTimeout`. <h3>Confidence Score: 5/5</h3> - This PR is safe to merge with minimal risk. - The change is narrowly scoped to always set a single request field (`method: "private-api"`) in the BlueBubbles text-send payload. It removes a conditional branch but does not alter endpoint selection, response handling, or chat resolution logic, and it matches existing behavior already used elsewhere for attachments. - No files require special attention <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs