Skip to content

Releases: BlueBubblesApp/bluebubbles-server

BlueBubbles Server v1.9.8

20 Nov 01:28
87679b7
Compare
Choose a tag to compare

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!

Note: If you are an M1 Mac user, please read the note at the bottom of this release

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
  • 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 returns path rather than hash

Useful Links

Clients

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.

Apple Silicon Users

If you are running an M1 Mac and are experiencing repeated Messages App crashes, it is due to the macOS bug detailed here. Luckily, there is a fix, which is to add a boot argument to your Mac. This will require SIP to be disabled, though, if you are experiencing this issue, you already have it disabled.

Open the Terminal App on your Mac and run this command: sudo nvram boot-args=-arm64e_preview_abi

You will be prompted to enter your password, which will be hidden in the Terminal as you enter it.

Enjoy!
Lastly reboot your Mac, and you should be good to go.

BlueBubbles Server v1.9.8

11 Jul 12:21
87679b7
Compare
Choose a tag to compare
Pre-release

What's New?

This is a fairly substantial update. It brings a handle of good QOL updates, as well as a ton of bug fixes and other small improvements. In addition, we now natively support Apple Silicon Macs! In addition, I've done some dependency cleanup, upgrading some backend libraries and removing others.

Warning / Note

Apple has flagged my Apple Developer account, which prevents me from signing the BlueBubbles Server with my developer certificate. As a result, you may need to "Allow" the app to run via your System Preference's Security & Privacy page. Alternatively, you can right click the app and select Open to directly open the app.

image

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
  • Handles/Addresses are now obfuscated in the server log
  • New feature to automatically lock your Mac after login

Bug Fixes & Improvements

  • Fixes issues detecting, parsing, and emitting unsent messages
  • 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

Developers

  • 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 returns path rather than hash

Useful Links

Clients

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.

BlueBubbles Server v1.9.7

21 Apr 21:05
c8fd023
Compare
Choose a tag to compare

What's New?

This update brings some much needed performance improvements to the server, reducing overall CPU utilization and DB query times. In addition, there are a handful of other bug fixes included in this release.

Warning / Note

Apple has flagged my Apple Developer account, which prevents me from signing the BlueBubbles Server with my developer certificate. As a result, you may need to "Allow" the app to run via your System Preference's Security & Privacy page. Alternatively, you can right click the app and select Open to directly open the app.

image

Due to this issue, the BlueBubbles auto-updater no longer works, and you will need to manually perform server updates. Blame Apple. I've tried contacting them, and they've pretty much just ignored my requests.

Changes

  • Vastly improves server performance and reduces CPU utilization by replacing scheduled polling with event-driven polling.
    • Fixes spinning beach ball upon server start
  • Fixes TTL for Firebase messages causing pending notifications to never be delivered
    • This typically occurred when your device was not connected to the internet when a notification should have been delivered
  • Database polling improvements
    • Fixes race conditions during polling
    • Fixes issue causing some events to be ignored when previous events fired successfully
    • Improves handling of updated messages (edited, delivered, read, unsent, etc.)
  • Fixes issue where the server would notify for all new DB entries during an iCloud sync, even if they were not for new messages
    • This may have caused your Firebase messages to be rate-limited temporarily
  • Fixes issue where scheduled messages scheduled more than 24 days out may get triggered immediately

Useful Links

Clients

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.

BlueBubbles v1.9.6

13 Mar 16:13
f8f82bf
Compare
Choose a tag to compare

What's New?

This release introduces some new user-requested features as well as a handful of bug fixes to improve the reliability of the server.

New Features

  • Zrok proxy service (beta)
    • Includes support for reserved (named or unnamed) tunnels
  • Ngrok static domain support
    • You must reserve one within the Ngrok portal
  • Custom landing page support (Advanced Settings)
  • Support for detecting and emitting events for incoming message updates (edit/unsend)

Fixes

  • Fixes issue updating server URL in Firebase after a network/power outage
  • Fixes fatal crash in some macOS environments
  • Fixes remote restart via Firebase for Firestore deployments
  • Improves FindMy Friends refresh reliability
  • Fixes issue where the server notification pop-out would span the entire window

Developer Notes

  • Refactoring code to utilize decorators for retrying function calls and creating singleton function calls
  • Unified logging throughout the codebase by extending the Loggable class or using getLogger("<name>")
  • Upgrade: cloudflared

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.

BlueBubbles Server v1.9.5

08 Feb 15:38
7c33356
Compare
Choose a tag to compare

What's New?

This update brings a few new features, mainly pertaining to improving FindMy capabilities as well as overall reliability of the server.

Changes

  • Improves FindMy capabilities and reliability (Private API Only; Big Sur - Ventura)
    • Private API Helper now listens for changes to friend locations, and updates are emitted to clients
    • The server now maintains a cache of the latest locations from friends
    • Fetching latest locations for friends is now more reliable and accurate
  • Fixes issue with detecting and emitting "address deregistration" events
    • Clients will now be able to alert you when an address gets de-registered (i.e. a phone number)
  • Fixes issue where the server would fail to send a message, resulting in a 500 error
  • Fixes issue where webhooks would attempted to be dispatched before the service started
  • Increases Cloudflare initial connection timeout to 2 minutes to better avoid connection issues after a power outage
  • Fixes issue where the attachments directory would not be created, causing an error when sending attachments
  • Increases inactive time required for automatically purging a device (7 days -> 30 days)
  • Chat payloads now expose the lastAddressedHandle field
  • Slight improvement to reliability of the automated Firebase setup
  • Adds process to automatically set your Server URL in Firebase every 10 minutes (if it's changed)
    • This was implemented to prevent issues where the server would not update its' new URL in Firebase after a power outage
  • Fixes issue importing VCF contacts with middle names (display name would be incorrect)
  • Fixes emitted event when an iMessage alias gets deregistered

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.

BlueBubbles Server v1.9.5 (BETA)

01 Feb 16:36
Compare
Choose a tag to compare
Pre-release

What's New?

This is a pre-release (beta) as it introduces changes with wider scope than normal that requires a bit more testing. If you are a tinkerer, try it out! If you're looking for fully stable releases only, keep waiting

This beta update brings a few new features, mainly pertaining to improving FindMy capabilities as well as overall reliability of the server.

Changes

  • Improves FindMy capabilities and reliability (Private API Only; Big Sur - Ventura)
    • Private API Helper now listens for changes to friend locations, and updates are emitted to clients
    • The server now maintains a cache of the latest locations from friends
    • Fetching latest locations for friends is now more reliable and accurate
  • Fixes issue with detecting and emitting "address deregistration" events
    • Clients will now be able to alert you when an address gets de-registered (i.e. a phone number)
  • Fixes issue where webhooks would attempted to be dispatched before the service started
  • Increases Cloudflare initial connection timeout to 2 minutes to better avoid connection issues after a power outage
  • Fixes issue where the attachments directory would not be created, causing an error when sending attachments
  • Increases inactive time required for automatically purging a device (7 days -> 30 days)
  • Chat payloads now expose the lastAddressedHandle field
  • Slight improvement to reliability of the automated Firebase setup
  • Adds process to automatically set your Server URL in Firebase every 10 minutes (if it's changed)
    • This was implemented to prevent issues where the server would not update its' new URL in Firebase after a power outage

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.

BlueBubbles Server v1.9.4

10 Jan 20:51
4a36b7d
Compare
Choose a tag to compare

What's New?

This update is only addressing the changes that Ngrok has made to their service. Essentially, Ngrok is no longer allowing use of their services using the binary we previously were using. In the new binary, you must create a free account to use the proxy service. This server update will enforce setting an auth token when using Ngrok as your proxy service.

Note: If you are using Ngrok currently without an auth token, this server update will break your connection until you enter an auth token! It will have broken anyways on January 15th...

Note 2: There was an issue with 1.9.3 where the Ngrok proxy would fail due to an incompatible config file. Ngrok decided to add a new required parameter to the config file that they originally generated, and was missing from most people's config files. This server update will actually handle migrating the config file for you.

Changes

  • Ngrok upgraded binary
    • This update will automatically migrate your config.yml configuration for Ngrok
  • Ngrok Auth Token enforcement
    • You will now be prompted to enter an auth token when selecting Ngrok as your proxy service
    • If the Ngrok proxy service starts and doesn't have an auth token provided to it, an error/alert will be thrown.

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.

BlueBubbles Server v1.9.3 (Yanked)

10 Jan 18:36
5fa5691
Compare
Choose a tag to compare

What's New?

This update is only addressing the changes that Ngrok has made to their service. Essentially, Ngrok is no longer allowing use of their services using the binary we previously were using. In the new binary, you must create a free account to use the proxy service. This server update will enforce setting an auth token when using Ngrok as your proxy service.

Note: If you are using Ngrok currently without an auth token, this server update will break your connection until you enter an auth token! It will have broken anyways on January 15th...

Changes

  • Ngrok upgraded binary
  • Ngrok Auth Token enforcement
    • You will now be prompted to enter an auth token when selecting Ngrok as your proxy service
    • If the Ngrok proxy service starts and doesn't have an auth token provided to it, an error/alert will be thrown.

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.

BlueBubbles Server v1.9.2

04 Dec 17:07
ab69220
Compare
Choose a tag to compare

What's New?

Changes

  • Fixes issue where the server URL would not be emitted in some cases, including webhooks
  • Adds experimental FaceTime calling features (Private API & Monterey+ required)
  • Adds share_status and share_direction to message objects
  • Adds ability to force download an attachment via the attachment download endpoint (URL param force=true)
    • Only when the attachment does not exist at the stored file path
  • Fixes possible Messages crash when sending links on Big Sur
  • Fixes some issues with refreshing FindMy Friends locations
  • The server will now automatically clear the registered devices if the Firebase project changes
    • If this is done via the Google Login, the server will create a warning alert
    • If this is done via the Notifications tab on the server, a confirmation dialog will show
  • Fixes issue causing message update events to have no data
    • Fixing this may resolve issues properly showing read receipts (read/delivered/edited)

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.

BlueBubbles Server v1.9.1

10 Nov 21:22
ae114da
Compare
Choose a tag to compare

What's New

This update is a hotfix addressing the issues around introducing the FaceTime helper. This was mostly a problem for the many of you that actually use your Mac for things other than BlueBubbles. I also threw in a few other QOL changes.

Note: If you are having double-send issues, please double-check that the BlueBubbles helper bundle is no longer installed into MacForge. If you do not need MacForge, we recommend you just uninstall it. I have added a warning if MacForge is running on your system.

Changes

  • Added a separate toggle for the FaceTime Private API helper (default: Disabled).
  • Adds timeframe toggle for iMessage statistics
    • You can now filter your stats by a timeframe, which defaults to the past 6 months
    • This is to address all the people upset they are no longer best friends with their listed best friend 😈
  • Fixes issue with the server opening multiple instances of the Messages/FaceTime app in some cases.
  • Adds a warning message on startup notifying the user that they still have MacForge installed, that it is no longer needed, and it should be uninstalled if not used by other plugins.

Useful Links

Clients

Enjoy!

P.S. Download the .dmg, not the .zip

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.