What's New
It's been a while since i've released a stable update! Life got a bit hectic for a while... This update is an accumulation of a ton of enhancements and bug fixes. I've been wanting to release this for a while, but I had a few outstanding items that I needed to fix and test. I've since found some time to finalize it, so here it is!
There are a TON of updates and I think you'll all find that it hopefully makes your server more resilient and stable. That said, this update does not include the new iMessage features on iOS 18. However, it does fix Private API Attachment sending on macOS Sequoia.
Big thanks to @cameronaaron for helping to fix the message detection issue!
New Features
- Support for message searching on macOS Ventura and newer via the Private API
- Google Login to download contacts from your Google Account
- This will not continuously sync your Google Contacts
- Apple Silicon (ARM) Native Build! You can now run the BlueBubbles Server natively on an Apple Silicon Mac
- This has not been extensively tested yet, but we figured we'd make it available
- The Cloudflare (and maybe Ngrok & Zrok) daemon still will require Rosetta to run because they have not released Apple Silicon compatible builds yet
- Ability to disable the automatic opening of the FindMy app on startup (see settings)
- Settings toggle to allow auto-start as a Launch Agent to achieve crash-persistence
- You must manually set the auto start method to
Launch Agent
- If the server crashes, it will automatically be restarted. If it closes normally (exit code 0), it will not be automatically restarted
- You must manually set the auto start method to
- Handles/Addresses are now obfuscated in the server log
- New feature to automatically lock your Mac after login
- Improvements to the FindMy API
Other Enhancements
- When multiple new messages are found, notifications are now dispatched in ascending order (oldest first)
- Logs on the Debug page from the Messages app are now hidden by default
- Increases ping interval to 1 minute to reduce battery drain for socket clients
- Improvements to handling of Cloudflare errors (specifically, rate limiting)
- Adds ability to disable Zrok via the Settings UI
Fixes
- Improvements to the handling of the Zrok Proxy Service to increase stability
- Fixes detection of delivered messages when sent from other Apple devices
- Replaces automatic update service with a more manual update process
- Adds warning next to your Server URL on the dashboard if it's using an insecure connection (HTTP) and a non-local address.
- The warning basically explains that the connection is insecure and may be vulnerable to a man in the middle attack.
- Increases send timeout time from 30 seconds to 1 minute to prevent unnecessary send errors
- Fixes issue where images converted from HEIC would get a double-extension
- Fixes issue detecting live photos for converted HEIC images
- Start Delay now will only be applied when the Mac uptime is < 5 minutes
- Improved error handling for Cloudflare proxy service
- Fixes issue where a new Server URL on server startup would not get dispatched to Firebase
- Fixes attachment de-duplication issue causing a visual bug where the wrong image would be displayed for an older image
- This fix only applies to all future sent attachments and will not fix older bugged attachments
- Also fixes an issue where old images would appear wrong after clearing the attachment cache
- Fixes bug with sending text + attachments using the multipart endpoint
- Error and Warning logs are now colored red and orange, respectively
- Improvements & fixes to the OAuth Firebase setup process
- Fixes alignment of the trash & edit icons for webhook table entries
- Removes "Beta" tag for the Zrok Proxy Service
- Adds "warning" next to the server URL on the dashboard when the connection may be insecure (i.e. dynamic DNS over HTTP)
- Fixes API error message when a 500 error is thrown
- A slightly improved icon to follow macOS design better
- Fixes Private API Attachment Sending on macOS Sequoia
- Fixes issue detecting new messages, resulting in missed notifications
- Fixes issue where BlueBubbles would not be able to use the Private API when there was a space in the app path.
- Fixes issue causing duplicate proxy service processes
- Fixes issue causing the FindMy Devices endpoint to return null even when devices and/or items exist
- Fixes issue that kept the Private API service running, even when it was disabled
- The FindMy Devices endpoint will now return null on macOS Sequoia+
- Apple now encrypts the location data, and we can no longer read it properly
For Developers
- Adds Webhook support for FindMy Location updates
- Adds
isDelivered
to message payloads - Adds slight delay between emitting multiple message events
- The Refresh FindMy Devices API endpoint now returns devices
- Adds additional fields for FindMy Devices & Items to improve client support
- Adds REST API endpoints for managing server webhooks
GET /api/v1/webhook
POST /api/v1/webhook
DELETE /api/v1/webhook/<id>
- Adds validation to the "addresses" field for the
POST /api/v1/contact/query
API - Migrated away from using the
zx
library to execute CLI commands in favor of a custom purpose-built executor.- This also fixes an issue with orphaned cloudflared processes (and possible memory leak)
- Removes
yarn
support due to build issues - Bumps NodeJS version to v20.11
- Fixes all fixable vulnerabilities in dependencies
- Tons of development package upgrades & dependency fixes
- TypeScript
- ESLint
- Electron
- Much More...
- Upgrades Cloudflared binary to latest version
- Webhook error logs are now debug level
- BREAKING: The
POST /api/v1/attachment/upload
endpoint now returnspath
rather thanhash
Useful Links
- Support Us: https://bluebubbles.app/donate
- Sponsor Us: https://github.com/sponsors/BlueBubblesApp
Clients
- BlueBubbles for Android: https://play.google.com/store/apps/details?id=com.bluebubbles.messaging
- BlueBubbles for Windows: https://apps.microsoft.com/store/detail/9P3XF8KJ0LSM
- BlueBubbles for Linux: https://flathub.org/apps/details/app.bluebubbles.BlueBubbles
- BlueBubbles Web: https://bluebubbles.app/web
Enjoy!
P.S. If you are on Cloudflare, expect a disconnect status when the server first starts. To fix it, either disconnect from WiFi or flush your DNS cache on WiFi. If you use the Detect Localhost Address
option, this can be mitigated while on your home network.