Code Monkey home page Code Monkey logo

imessage's People

Contributors

abaker avatar bradtgmurray avatar carlambroselli avatar cnuss avatar dltacube avatar ericrabil avatar itsjunetime avatar james-choncholas avatar joshuafhiggins avatar ownaginatious avatar pkulak avatar sumnerevans avatar tgloureiro avatar trek-boldly-go avatar tulir avatar vurpo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imessage's Issues

Reactions from FluffyChat aren't propogated

I'm honestly not sure if this is a FluffyChat bug or an imessage bug, but any reactions from FluffyChat show a Ignoring reaction $..... due to unknown m.relates_to data error in the bridge, but show up fine on other clients. Reactions from other clients work fine.

Crash on startup (SIGSEGV)

I followed the instructions on https://docs.mau.fi/bridges/go/imessage/mac/setup.html
Similar to: mautrix/whatsapp#180

Crash on startup (iMessage).

Stack Trace + Logs:

nicholas@Nicholass-MacBook-Air mautrix-imessage-universal % ./mautrix-imessage 
2023-07-29T09:26:31-07:00 INF Initializing bridge built_at="Jul 28 2023, 20:45:36" go_version=go1.20.6 name=mautrix-imessage version=0.1.0+dev.807b62d1
2023-07-29T09:26:31-07:00 DBG Initializing database connection
2023-07-29T09:26:31-07:00 DBG Initializing state store
2023-07-29T09:26:31-07:00 DBG Initializing Matrix event processor
2023-07-29T09:26:31-07:00 DBG Initializing Matrix event handler
2023-07-29T09:26:31-07:00 DBG Bridge built with end-to-bridge encryption, but disabled in config
2023-07-29T09:26:31-07:00 DBG Initializing iMessage connector
2023-07-29T09:26:31-07:00 INF Contact access is allowed module=iMessage/Mac
2023-07-29T09:26:31-07:00 INF Bridge initialization complete, starting...
2023-07-29T09:26:31-07:00 DBG Running database upgrades
2023-07-29T09:26:31-07:00 INF Database is up to date current_version=21 db_section=main latest_known_version=21 oldest_compatible_version=21
2023-07-29T09:26:31-07:00 INF Database is up to date current_version=5 db_section=matrix_state latest_known_version=5 oldest_compatible_version=5
2023-07-29T09:26:31-07:00 DBG Starting application service websocket
2023-07-29T09:26:31-07:00 DBG Checking connection to homeserver
2023-07-29T09:26:31-07:00 DBG Appservice transaction websocket opened
2023-07-29T09:26:31-07:00 DBG Starting handling of transaction content={"pdu":0} req_id=0 ws_command=
2023-07-29T09:26:31-07:00 DBG Finished dispatching events from transaction req_id=0 ws_command=
2023-07-29T09:26:31-07:00 DBG Sent response to transaction req_id=0 ws_command=
2023-07-29 09:26:32.189 mautrix-imessage[590:4826] XXX: countOfStores: 1, countOfAccounts: 1
2023-07-29T09:26:32-07:00 DBG Request completed as_user_id=@imessagebot:[nicholasroth.net](http://nicholasroth.net/) duration=594.450732 method=GET req_id=1 response_length=857 response_mime=application/json status_code=200 url=https://matrix.nicholasroth.net/_matrix/client/versions?user_id=%40imessagebot%3Anicholasroth.net
2023-07-29T09:26:32-07:00 DBG Request completed as_user_id=@imessagebot:[nicholasroth.net](http://nicholasroth.net/) duration=41.372467 method=GET req_id=2 response_length=60 response_mime=application/json status_code=200 url=https://matrix.nicholasroth.net/_matrix/client/v3/account/whoami?user_id=%40imessagebot%3Anicholasroth.net
2023-07-29T09:26:32-07:00 DBG Websocket mode: no need to check status of homeserver -> bridge connection
2023-07-29T09:26:32-07:00 DBG Starting event processor
2023-07-29T09:26:32-07:00 DBG Finding bridge user
2023-07-29T09:26:32-07:00 DBG Updating bot profile
2023-07-29T09:26:32-07:00 DBG Logging in with shared secret module=User/@nicholasroth:[nicholasroth.net](http://nicholasroth.net/)
2023-07-29T09:26:32-07:00 DBG Request completed as_user_id=@imessagebot:[nicholasroth.net](http://nicholasroth.net/) duration=58.614954 method=GET req_id=4 response_length=59 response_mime=application/json status_code=200 url=https://matrix.nicholasroth.net/_matrix/client/v3/profile/@imessagebot:nicholasroth.net/avatar_url?user_id=%40imessagebot%3Anicholasroth.net
2023-07-29T09:26:32-07:00 DBG Request completed as_user_id=@imessagebot:[nicholasroth.net](http://nicholasroth.net/) duration=108.653296 method=GET req_id=3 response_length=26 response_mime=application/json status_code=200 url=https://matrix.nicholasroth.net/_matrix/media/v3/config?user_id=%40imessagebot%3Anicholasroth.net
2023-07-29T09:26:32-07:00 DBG Request completed as_user_id=@imessagebot:[nicholasroth.net](http://nicholasroth.net/) duration=113.868711 method=GET req_id=6 response_length=37 response_mime=application/json status_code=200 url=https://matrix.nicholasroth.net/_matrix/client/v3/profile/@imessagebot:nicholasroth.net/displayname?user_id=%40imessagebot%3Anicholasroth.net
2023-07-29T09:26:32-07:00 DBG Request completed as_user_id=@nicholasroth:[nicholasroth.net](http://nicholasroth.net/) duration=364.834563 method=POST req_body="<sensitive content omitted>" req_id=5 response_length=64 response_mime=application/json status_code=403 url=https://matrix.nicholasroth.net/_matrix/client/v3/login
2023-07-29T09:26:32-07:00 WRN Failed to switch to auto-logined custom puppet: failed to log in with shared secret: failed to POST /_matrix/client/v3/login: M_FORBIDDEN (HTTP 403): Invalid username or password module=User/@nicholasroth:[nicholasroth.net](http://nicholasroth.net/)
2023-07-29T09:26:32-07:00 DBG Connecting to iMessage
2023-07-29T09:26:32-07:00 DBG Starting iMessage handler
2023-07-29T09:26:32-07:00 DBG Sending bridge status to server: {StateEvent:CONNECTED Timestamp:0 TTL:0 Source: Error: Message: UserID: RemoteID:unknown RemoteName: Info:map[]}
2023-07-29T09:26:32-07:00 DBG Starting IPC loop
2023-07-29T09:26:32-07:00 INF Initialization complete
2023-07-29T09:26:32-07:00 INF Bridge started!
2023-07-29T09:26:32-07:00 DBG Periodic sync is enabled
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x10050b836]

goroutine 50 [running]:
[maunium.net/go/mautrix/util/configupgrade.(*Helper).Set(0x0](http://maunium.net/go/mautrix/util/configupgrade.(*Helper).Set(0x0)?, 0x0?, {0x100a04a78, 0x5}, {0xc0004dde10?, 0x2, 0x100fde640?})
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/util/configupgrade/helper.go:275](http://maunium.net/go/[email protected]/util/configupgrade/helper.go:275) +0xd6
[maunium.net/go/mautrix/bridge.(*Bridge).ResendBridgeInfo.func1(0xc0004f3680](http://maunium.net/go/mautrix/bridge.(*Bridge).ResendBridgeInfo.func1(0xc0004f3680)?)
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/bridge/bridge.go:659](http://maunium.net/go/[email protected]/bridge/bridge.go:659) +0x6e
[maunium.net/go/mautrix/util/configupgrade.SimpleUpgrader.DoUpgrade(0x10000e756](http://maunium.net/go/mautrix/util/configupgrade.SimpleUpgrader.DoUpgrade(0x10000e756)?, 0x1013cf058?)
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/util/configupgrade/upgrade.go:48](http://maunium.net/go/[email protected]/util/configupgrade/upgrade.go:48) +0x1f
[maunium.net/go/mautrix/util/configupgrade.(*Helper).apply(0xc0002aa000](http://maunium.net/go/mautrix/util/configupgrade.(*Helper).apply(0xc0002aa000)?, {0x100b825e0, 0x100a85480})
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/util/configupgrade/upgrade.go:52](http://maunium.net/go/[email protected]/util/configupgrade/upgrade.go:52) +0x32
[maunium.net/go/mautrix/util/configupgrade.Do({0x100a0c282](http://maunium.net/go/mautrix/util/configupgrade.Do(%7B0x100a0c282), 0xb}, 0x1, {0x100b83a98?, 0xc000169e60}, {0xc0004ddfa8, 0x1, 0x1004184fe?})
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/util/configupgrade/upgrade.go:83](http://maunium.net/go/[email protected]/util/configupgrade/upgrade.go:83) +0x2b2
[maunium.net/go/mautrix/bridge.(*Bridge).ResendBridgeInfo(0xc000232a00)](http://maunium.net/go/mautrix/bridge.(*Bridge).ResendBridgeInfo(0xc000232a00))
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/bridge/bridge.go:658](http://maunium.net/go/[email protected]/bridge/bridge.go:658) +0x7f
created by [maunium.net/go/mautrix/bridge.(*Bridge).start](http://maunium.net/go/mautrix/bridge.(*Bridge).start)
	/Users/tulir/go/pkg/mod/[maunium.net/go/[email protected]/bridge/bridge.go:646](http://maunium.net/go/[email protected]/bridge/bridge.go:646) +0x52a

Non-Standard iMessages cause crash (MacOS)

Messaging "Apple" either store or Apple Card causes mautrix-imessage to seg fault

�[0m[Jun 8, 2021 14:26:15] [Matrix/DEBUG] Appservice transaction websocket connected
�[0m[Jun 8, 2021 14:26:15] [Matrix/DEBUG] Sending bridge status to server
�[36m[Jun 8, 2021 14:26:15] [Portal/iMessage;-;urn:biz:b15ed773-9eed-11e7-baa2-7b88b04daa8e/INFO] Syncing portal�[0m
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0x44d3aa6]

goroutine 42 [running]:
maunium.net/go/mautrix/appservice.(*IntentAPI).EnsureRegistered(0x0, 0xc00031424b, 0x2c)
/Users/along/go/pkg/mod/maunium.net/go/[email protected]/appservice/intent.go:55 +0x26
main.(*Portal).CreateMatrixRoom(0xc0003221b0, 0x0, 0x0)
/Users/along/opt/mautrix-imessage/portal.go:370 +0xcc
main.(*Portal).Sync(0xc0003221b0)
/Users/along/opt/mautrix-imessage/portal.go:175 +0x318
main.(*Bridge).StartupSync(0xc00012e3c0)
/Users/along/opt/mautrix-imessage/main.go:308 +0x33d
created by main.(*Bridge).Start
/Users/along/opt/mautrix-imessage/main.go:286 +0x4da

Panic: runtime error MacNoSIPConnector

I'm receiving the below error when I try to run mautrix-imessage set up for mac-nosip. However, I haven't ever gotten no-sip to work even though I believe to have set it up correctly.

I've included logs below:

user@macos mautrix-imessage % ./mautrix-imessage 
[Aug 26, 2021 16:47:43] [INFO] Initializing mautrix-imessage 0.1.0+dev.45190ed2 (Aug 26 2021, 16:41:50)
[Aug 26, 2021 16:47:43] [DEBUG] Initializing database connection
[Aug 26, 2021 16:47:43] [DEBUG] Initializing state store
[Aug 26, 2021 16:47:43] [DEBUG] Initializing Matrix event processor
[Aug 26, 2021 16:47:43] [DEBUG] Initializing Matrix event handler
[Aug 26, 2021 16:47:43] [DEBUG] Initializing iMessage connector
[Aug 26, 2021 16:47:43] [INFO] Bridge initialization complete, starting...
[Aug 26, 2021 16:47:43] [DEBUG] Running database upgrades
[Aug 26, 2021 16:47:43] [Database/Upgrade/INFO] Database currently on v3, latest: v3
[Aug 26, 2021 16:47:43] [DEBUG] Checking connection to homeserver
[Aug 26, 2021 16:47:43] [Crypto/Helper/DEBUG] Initializing end-to-bridge encryption...
[Aug 26, 2021 16:47:43] [Crypto/Helper/DEBUG] Found existing device ID for bot in database: ZJIMZBXVNQ
[Aug 26, 2021 16:47:43] [Crypto/Bot/DEBUG] req #2: GET https://m.example.com/_matrix/client/r0/login
[Aug 26, 2021 16:47:43] [Crypto/Bot/DEBUG] req #3: POST https://m.example.com/_matrix/client/r0/login {"type":"uk.half-shot.msc2778.login.application_service","identifier":{"type":"m.id.user","user":"@imessagebot:example.com"},"device_id":"ZJIMZBXVNQ","initial_device_display_name":"iMessage Bridge"}
[Aug 26, 2021 16:47:43] [Crypto/Helper/DEBUG] Logged in as bridge bot with device ID ZJIMZBXVNQ
[Aug 26, 2021 16:47:43] [DEBUG] Finding bridge user
[Aug 26, 2021 16:47:43] [Matrix/@matrixuser:example.com/DEBUG] req #4: GET https://m.example.com/_matrix/client/r0/account/whoami
[Aug 26, 2021 16:47:43] [User/@matrixuser:example.com/INFO] Successfully automatically enabled custom puppet
[Aug 26, 2021 16:47:43] [DEBUG] Connecting to iMessage
[Aug 26, 2021 16:47:43] [DEBUG] Starting application service websocket
[Aug 26, 2021 16:47:43] [DEBUG] Starting event processor
[Aug 26, 2021 16:47:43] [DEBUG] Starting iMessage handler
[Aug 26, 2021 16:47:43] [DEBUG] Starting IPC loop
[Aug 26, 2021 16:47:43] [INFO] Initialization complete
[Aug 26, 2021 16:47:43] [INFO] Bridge started!
[Aug 26, 2021 16:47:43] [iMessage/Mac-noSIP/DEBUG] Preparing to execute /Users/user/Documents/matrix/imessage-rest/Build/macOS/Build/Products/Debug/barcelona-mautrix
[Aug 26, 2021 16:47:43] [DEBUG] Periodic sync is enabled
[Aug 26, 2021 16:47:43] [DEBUG] Updating bot profile
[Aug 26, 2021 16:47:43] [Crypto/Helper/DEBUG] End-to-bridge encryption is in appservice mode
[Aug 26, 2021 16:47:43] [Portal/iMessage;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/iMessage;+;[CHAT NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/iMessage;+;[CHAT NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/iMessage;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/SMS;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/iMessage;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
...
[Aug 26, 2021 16:47:43] [Portal/SMS;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/SMS;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Portal/iMessage;-;[PHONE NUMBER]/DEBUG] Starting message processing loop
[Aug 26, 2021 16:47:43] [Matrix/DEBUG] Appservice transaction websocket connected
[Aug 26, 2021 16:47:43] [DEBUG] Sending /sync start request through websocket
[Aug 26, 2021 16:47:43] [DEBUG] Sending bridge status to server
[Aug 26, 2021 16:47:43] [iMessage/Mac-noSIP/DEBUG] Process started, PID 4050
[Aug 26, 2021 16:47:43] [iMessage/Mac-noSIP/IPC/DEBUG] Standard input closed, ending IPC loop
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x453a480]

goroutine 52 [running]:
os.(*ProcessState).exited(...)
        /usr/local/opt/go/libexec/src/os/exec_posix.go:82
os.(*ProcessState).Exited(...)
        /usr/local/opt/go/libexec/src/os/exec.go:150
go.mau.fi/mautrix-imessage/imessage/mac-nosip.(*MacNoSIPConnector).Start.func1(0xc00025c0a0, 0xc0000bb220)
        /Users/user/Documents/matrix/mautrix-imessage/imessage/mac-nosip/nosip.go:77 +0x40
created by go.mau.fi/mautrix-imessage/imessage/mac-nosip.(*MacNoSIPConnector).Start
        /Users/user/Documents/matrix/mautrix-imessage/imessage/mac-nosip/nosip.go:75 +0x35a
user@matrix:~/synapse/appservice/syncproxy$ source ./env && ./mautrix-syncproxy 
[Aug 26, 2021 23:46:23] [INFO] Starting old active targets
[Aug 26, 2021 23:46:23] [INFO] Started 0 active targets out of 1 total old targets
[Aug 26, 2021 23:46:23] [INFO] Starting to listen on localhost:29332
[Aug 26, 2021 23:47:45] [DEBUG] Received PUT request with &{AppserviceID:imessage BotAccessToken:syt_aW1lc3NhZ2Vib3Q_iBjbllLOZVCiJoAXGhvV_415HZ6 HSToken:OSxeZNXr7YCCTyFU95irZN7oE1TA0Vd6GAmQpMZxKJHBM4aWTBXwD4vdQJr4ida2 Address:http://localhost:29331 UserID:@imessagebot:example.com DeviceID:ZJIMZBXVNQ IsProxy:false NextBatch: Active:false client:<nil> log:<nil> running:false cancel:<nil> wg:{noCopy:{} state1:[0 0 0]} lock:{state:0 sema:0}}
[Aug 26, 2021 23:47:45] [Target-imessage/DEBUG] Upserting target for PUT request
[Aug 26, 2021 23:47:45] [Target-imessage/DEBUG] Starting target for PUT request
[Aug 26, 2021 23:47:46] [Target-imessage/Sync-1/DEBUG] Locking mutex to start syncing
[Aug 26, 2021 23:47:46] [Target-imessage/Sync-1/INFO] Starting syncing
[Aug 26, 2021 23:47:46] [Target-imessage/DEBUG] Stopping syncing...
[Aug 26, 2021 23:47:46] [Target-imessage/DEBUG] Waiting for syncing to stop
[Aug 26, 2021 23:47:46] [Target-imessage/Sync-1/DEBUG] Sync returned error request error: Get "http://localhost:8008/_matrix/client/r0/sync?filter=0&set_presence=offline&timeout=30000": context canceled, but context had different error context canceled
[Aug 26, 2021 23:47:46] [Target-imessage/Sync-1/INFO] Syncing stopped
[Aug 26, 2021 23:47:46] [Target-imessage/Sync-1/DEBUG] Unlocking mutex
[Aug 26, 2021 23:47:46] [Target-imessage/INFO] Target stopped after DELETE request
user@matrix:~/synapse/appservice/wsproxy$ ./mautrix-wsproxy
2021/08/26 23:46:10 Found 1 appservice in config.yaml
2021/08/26 23:46:10 Starting to listen on localhost:29331
2021/08/26 23:47:45 imessage connected to websocket
2021/08/26 23:47:45 Starting sync proxy for imessage / @imessagebot:example.com / ZJIMZBXVNQ
2021/08/26 23:47:46 Sending response {ReqID:1 Command:response Data:<nil>}
2021/08/26 23:47:46 Unknown command bridge_status in request #0 from websocket. Data: {"state_event":"CONNECTED","timestamp":1630021663,"ttl":600,"source":"bridge","user_id":"@matrixuser:example.com"}
2021/08/26 23:47:46 Error reading from websocket: websocket: close 1006 (abnormal closure): unexpected EOF
2021/08/26 23:47:46 imessage disconnected from websocket

Mac-NoSIP Crashing - Runtime Error invalid memory address

When running matrix-imessage on a Mac with SIP disabled, I keep getting this error and I cannot figure out why. Any help you can provide would be greatly appreciated, let me know what other information would be helpful for debugging!

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x451123b]

goroutine 48 [running]:
os.(*ProcessState).exited(...)
/usr/local/Cellar/go/1.18/libexec/src/os/exec_posix.go:83
os.(*ProcessState).Exited(...)
/usr/local/Cellar/go/1.18/libexec/src/os/exec.go:155
go.mau.fi/mautrix-imessage/imessage/mac-nosip.(*MacNoSIPConnector).Start.func1()
/Users/tulir/builds/i2hvwHJ9/0/mautrix/imessage/imessage/mac-nosip/nosip.go:89 +0x3b
created by go.mau.fi/mautrix-imessage/imessage/mac-nosip.(*MacNoSIPConnector).Start
/Users/tulir/builds/i2hvwHJ9/0/mautrix/imessage/imessage/mac-nosip/nosip.go:87 +0x274

Reactions on Link Messages not forwarded to Matrix

Seems to be repeatable at least on twitter.com links (for mac-nosip). If you send a link to a tweet from Matrix, and the recipient responds with a reaction, the reaciton isn't propagated to Matrix, instead printing an error about an "unhanded message".

Running on iOS

This looks awesome — any status or ETA for running on iOS?

Unable to send messages to iMessage client

Firstly, this project is awesome! Thank you for providing this bridge!

After setting this bridge up, all my iMessage came through properly (except messages sent by my apple id). However, when I tried to reply through Element.io to my home server (i.e. send a message to the iMessage application), the bridge did not seem to pick up the message. I did not see anything in the logs.

Also, (maybe this is related and caused by a configuration issue) but none of my personal iMessages were backfilled into my home server. Nor can I send a message through the iMessage client (from my own apple id to a random iPhone user) and have it show up on my home server. None of my sent iMessages were backfilled into my home server either. Only messages sent from other apple iMessage users.

Any thoughts on this?

EDIT:
Found this in the logs. I missed it before.

[Mar 18, 2021 09:41:44] [Portal/iMessage;-;+1000000/DEBUG] Dropping own message in iMessage;-;+10000000 as double puppeting is not initialized

So, my question now is, how can i enable double puppeting?

HEIF conversion not working with Gitlab binaries

I was excited to use the HEIF conversion from #46, but at least with the binaries from Gitlab for amd64 I'm receiving an error on conversion stating that mautrix-imessage was compiled without libheif. I'm not sure whether it affects the other Gitlab binaries, also not sure yet what steps to take in a manual compile to make sure this works.

Docker image unavailable (server returning 403)

Hi, not sure if this is the best channel to notify you of the issue but it looks like there's an issue with your Docker repository on dock.mau.dev. Trying to pull an image (I'm after imessage but it looks to be an issue when trying to get any image) results in a 403:

# docker pull dock.mau.dev/mautrix/imessage:latest
Error response from daemon: Head "https://dock.mau.dev/v2/mautrix/imessage/manifests/latest": denied: access forbidden

Also, just wanted to say I really appreciate your Matrix bridges - they've been incredibly helpful.

Duplicate "DM" rooms being created after bridge server restart

It seems that whenever the bridge server is stopped and restarted, the bot sends new room invites for messages from users that already have rooms (from previous server sessions). So you end up getting duplicate "DM" rooms from the same iMessage user. Is there a solution to prevent this behavior and use existing rooms after restart?

Convert HEIC images to format that renders in Element

Feature request to convert HEIC images attached to iMessages to an image format (GIF/JPG/PNG) that renders in Element and standard OSS web browsers; otherwise, HEIC attachments, which are very common from iOS devices, are invisible when using a Matrix client with the bridge.

login-matrix command

Are there any roadblocks to adding a login-matrix command? I'm using this with conduit and it does not provide shared secret authentication capabilities. Is this something you could use some help with?

End-to-End Encryption not working

I'm using several mautrix bridges, which work really good, but I'm unable to enable End-to-End Encryption for the imessage bridge. WhatsApp, Facebook, Instagram, Signal, Discord are working encrypted with the bridge set default:true.

I'm running a Mac Mini M1 with the bridge running in Automator (works flawless), the synapse homeserver/wsproxy are another public server and they are connected via Wireguard and served as docker container. I'm receiving my chats as unencrypted even though I have enabled it as default.

I tried creating a encrypted room by addin @imessage_34567890:my.matrix.server, which creates an encrypted chat, but everything written there goes into void. After a time, the unencrypted chat rooms reappear, those are working.

The encryption part of the mautrix-imessage config.yaml

encryption:
# Allow encryption, work in group chat rooms with e2ee enabled
allow: true
# Default to encryption, force-enable encryption in all portals the bridge creates
# This will cause the bridge bot to be in private chats for the encryption to work properly.
default: true
# Whether or not to use MSC2409/MSC3202 instead of /sync long polling for receiving encryption-related data.
appservice: false
# Require encryption, drop any unencrypted messages.
require: false
# Enable key sharing? If enabled, key requests for rooms where users are in will be fulfilled.
# You must use a client that supports requesting keys from other users to use this feature.
allow_key_sharing: false

Is there anything, I'm missing? wsproxy doesn't seem to be involved in the encryption part, so I thought the issue is the Mac setup.

SMS shortcode rooms not using associated contact's display name / avatar.

Using contacts_mode: mac new conversations from shortcode numbers (5/6-digit numbers for SMS) are not retrieving the first name / last name / company name / avatar of the associated contact and setting it as the display name / photo for the room. That all works fine for full 10 digit phone numbers or email address senders. Tested this using both a "company" contact and also a first name / last name contact and in both circumstances, the display name used is just the shortcode number (ie. "45225").

Not sure if the contacts logic is looking for a particular format number/email address?

Android: `./gradlew installDebug` fails

sdfg@heracles ~/scratch/mautrix-imessage/android-sms $ ./gradlew installDebug --stacktrace                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
> Task :buildSrc:compileKotlin FAILED                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
e: java.lang.NoClassDefFoundError: Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel                                                                                                                                                                                                                                                                                                                                                                                    
        at org.jetbrains.kotlin.com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)                                                                                                                                                                                                                                                                                                                                                                     
        at org.jetbrains.kotlin.com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)                                                                                                                                                                                                                                                                                                                                                                                   
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)                                                                                                                                                                                                                                                                                                                                                                                  
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)                                                                                                                                                                                                                                                                                                                                                                            
        at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)                                                                                                                                                                                                                                                                                                                                                                        
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:226)                                                                                                                                                                                                                                                                                                                                                                                                         
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:152)                                                                                                                                                                                                                                                                                                                                                                                                                     
        at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:52)                                                                                                                                                                                                                                                                                                                                                                                                                      
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:88)                                                                                                                                                                                                                                                                                                                                                                                                                        
        at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:44)                                                                                                                                                                                                                                                                                                                                                                                                                        
        at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:98)                                                                                                                                                                                                                                                                                                                                                                                                                                    
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:386)                                                                                                                                                                                                                                                                                                                                                                                 
        at org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunner.runCompiler(IncrementalJvmCompilerRunner.kt:110)                                                                                                                                                                                                                                                                                                                                                                                 
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileIncrementally(IncrementalCompilerRunner.kt:286)                                                                                                                                                                                                                                                                                                                                                                              
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl$rebuild(IncrementalCompilerRunner.kt:99)                                                                                                                                                                                                                                                                                                                                                                                
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:114)                                                                                                                                                                                                                                                                                                                                                                                       
        at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:74)                                                                                                                                                                                                                                                                                                                                                                                            
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execIncrementalCompiler(CompileServiceImpl.kt:607)                                                                                                                                                                                                                                                                                                                                                                                          
        at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execIncrementalCompiler(CompileServiceImpl.kt:96)                                                                                                                                                                                                                                                                                                                                                                                    
        at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1659)                                                                                                                                                                                                                                                                                                                                                                                                             
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)                                                                                                                                                                                                                                                                                                                                                                                          
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)                                                                                                                                                                                                                                                                                                                                                                                                                                     
        at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360)                                                                                                                                                                                                                                                                                                                                                                                                                   
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)                                                                                                                                                                                                                                                                                                                                                                                                                                 
        at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)                                                                                                                                                                                                                                                                                                                                                                                                                                 
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)                                                                                                                                                                                                                                                                                                                                                                                                               
        at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)                                                                                                                                                                                                                                                                                                                                                                                                                           
        at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598)                                                                                                                                                                                                                                                                                                                                                                                                              
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844)                                                                                                                                                                                                                                                                                                                                                                                                      
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721)       
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)                       
        at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720)            
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)                                                                                                                                                 
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)                                                                                                                                                 
        at java.base/java.lang.Thread.run(Thread.java:1589)                                                        
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.ExceptionInInitializerError [in thread "RMI TCP Connection(2)-127.0.0.1"]
        at org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
        ... 35 more                                                                                                
                                                                                                                          
                                                                                                                          
FAILURE: Build failed with an exception.                                                                       
                                                                                                                          
* What went wrong:                   
Execution failed for task ':buildSrc:compileKotlin'.                                                   
> Internal compiler error. See log for more details                                                    
                                                                                                                          
* Try:                                                                                                                                                                                                                                               
Run with --info or --debug option to get more log output. Run with --scan to get full insights.                                                                                                                                                      
                                                                                                                          
* Exception is:                                                                                                          
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':buildSrc:compileKotlin'.                                                                                                                                                    
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)                                                                                                                                                                          
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)           
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)   
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)                                                                                                                    
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)                                                                                                                
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)                                                                                                                      
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) 
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)                                                                                                                            
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)                                                                                                                                   
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)                                                                                                                                   
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)                                                                                                     
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)                                                                                                     
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)                                                                                                                                 
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)                                                                                                                                  
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)                                                                                                                                   
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)    
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)                                                                                                                         
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)                                                                                                            
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)                                                                                                                                  
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)                                                                                                                                  
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)                                                                                                                                                    
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)         
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)                                                                                                            
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)                                                                                                   
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)                                                                                                   
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)    
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)       
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)         
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)                          
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.GradleException: Internal compiler error. See log for more details                                                                                                                                                         
        at org.jetbrains.kotlin.gradle.tasks.TasksUtilsKt.throwGradleExceptionIfError(tasksUtils.kt:18)                                                                                                                                              
        at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:135)                                                                                                                                         
        at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runCompilerAsync(GradleKotlinCompilerRunner.kt:173)                                                                                                                              
        at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runCompilerAsync(GradleKotlinCompilerRunner.kt:168)                                                                                                                              
        at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runJvmCompilerAsync(GradleKotlinCompilerRunner.kt:87)
        at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompilerAsync$kotlin_gradle_plugin(Tasks.kt:541)          
        at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompilerAsync$kotlin_gradle_plugin(Tasks.kt:465)                                                                                                                                                                                                                                                                                                                                                                                           
        at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.executeImpl(Tasks.kt:387)                              
        at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:351)                          
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)                                                                                                                                     
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)                                                                                                                                                                        
        at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:47)                                                                                                            
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)           
        at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)                                                                                                                                        
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:498)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)                                                                                                                                 
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)                                                                                                                                 
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)                                                                                                                                   
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)                                                                                                                                       
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)                       
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)          
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71) 
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:483)                                                                                                                     
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:466)                                                                                                                    
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:105)                                                                                                                        
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:270)                                                                                      
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:248)                                                                                                             
        at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:83)                 
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:37)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)                                                                                                     
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)                                                                                                     
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:37)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:50)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:54)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:35)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:174)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:45)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:40)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:29)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:99)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:92)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:84)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:41)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:91)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:78)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:49)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:105)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:50)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:86)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:32)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:43)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:31)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$2.withWorkspace(ExecuteActionsTaskExecuter.java:283)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:49)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35)
        at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173) 
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)


* Get more help at https://help.gradle.org

BUILD FAILED in 467ms

Weird issues with one side of connection after restart

So just to put this out at the start: like half of what I'm using this bridge for is to get iMessage stuff into my Matrix system, because I like to keep my chat histories in one place if I'm going to look through them for something later. To this end, the backfilling is obviously quite useful, there's just one problem and another that sort of compounds: it seems the bridge is only able to send "my half" of things if given a token to use my account as the puppet, otherwise that half is just missing/it doesn't spawn a puppet for me. Is that intended or a bug? Either way, this is made considerably worse by the fact that for some reason the auth token for my account is forgotten every time the bridge restarts!
I can obviously copy paste in the token again, but by the time that message is processed, it has usually gotten through the full backfill and the chat log is quite incomplete. This bothers me quite a bit, is there a way to work around that, or is it a fixable problem?

Backfill doesn't backfill messages on a self-hosted instance

When running mautrix-imessage on a machine with SIP enabled, backfilling only creates rooms, but does not actually populate them with any messages.

A lot of log lines like this are seen:

2023-09-13T22:38:34-07:00 DBG Dropping backfill bridge-initial-+<redacted>::1694669914213 as Beeper batch sending is not supported portal_guid=iMessage;-;+<redacted>

Commenting out this block fixes it. Condition is probably incorrect?

Feature Request: Ability to Filter messages out of bridge

The ability to have configuration options to filter a few categories of messages would be very useful.

Various Options:

  1. Only bridge existing contacts. (Should grab messages if contact is created in iCloud account.)
  2. Block bridging of short number SMS

build.sh failing with heif support

When compiling on MacOS with heif support I received the following error:
invalid flag in pkg-config --cflags: -I@CMAKE_INSTALL_PREFIX@/include

I was able to work around this by prepending the final line in build.sh with:
CGO_CFLAGS_ALLOW='-I@CMAKE_INSTALL_PREFIX@/include' go build -tags ...

I'm not sure if this is a proper solution to this error, but wanted to post here in case someone else runs across the issue. I came up with this after reading here.

Crashes

Note

this may be a barcelona issue instead of mautrix-imessage?

Macos 12.6.5 (no sip)
mautrix-imessage 0.1.0+dev.49d33ae6 (Aug 3 2023, 06:20:42 with go1.20.7)
barcelona downloaded from github actions commit 6a80060

Logs:

Aug  3, 2023 06:34:07 INF 2023-08-03T06:34:07-0700 warning Chat : [Barcelona] Processing chat dictionaryRepresentation for guid iMessage;-;+[redactedphonenumber] and hoping it returns a chat module=iMessage/Barcelona/Stdout
Aug  3, 2023 06:34:07 ERR 2023-08-03 06:34:07.862 darwin-barcelona-mautrix[9527:36127] -[IMChatRegistry _processLoadedChatDictionaries:]: unrecognized selector sent to instance 0x7fd2581040c0 module=iMessage/Barcelona/Stderr
Aug  3, 2023 06:34:07 ERR 2023-08-03 06:34:07.904 darwin-barcelona-mautrix[9527:36127] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IMChatRegistry _processLoadedChatDictionaries:]: unrecognized selector sent to instance 0x7fd2581040c0'
*** First throw call stack:
(
        0   CoreFoundation                      0x00007ff811f7e773 __exceptionPreprocess + 242
        1   libobjc.A.dylib                     0x00007ff811cdebc3 objc_exception_throw + 48
        2   CoreFoundation                      0x00007ff81200335b -[NSObject(NSObject) __retain_OA] + 0
        3   CoreFoundation                      0x00007ff811ee5535 ___forwarding___ + 1356
        4   CoreFoundation                      0x00007ff811ee4f58 _CF_forwarding_prep_0 + 120
        5   darwin-barcelona-mautrix            0x0000000104d7c536 $s9Barcelona20loadChatMatchingGUID_03badC0So6IMChatCSgSS_AEtF + 4550
        6   darwin-barcelona-mautrix            0x0000000104d76cd0 $s9Barcelona20getIMChatForChatGuidySo0C0CSgSSYaFTY0_ + 480
        7   darwin-barcelona-mautrix            0x0000000104d3f261 $s9Barcelona14CBChatRegistryC9storeChat33_B631F2037A1B2332DAA100A57B2DC58DLL11withDetailsAA0B10IdentifierVSgSDys11AnyHashableVypG_tYaFTQ3_ + 1
        8   darwin-barcelona-mautrix            0x0000000104d40c61 $s9Barcelona14CBChatRegistryC11internalize33_B631F2037A1B2332DAA100A57B2DC58DLL5chatsSaySo6IMChatCGSaySDys11AnyHashableVypGG_tYaFAHSgALYaXEfU0_TQ1_ + 1
        9   darwin-barcelona-mautrix            0x0000000104d46f21 $s9Barcelona14CBChatRegistryC11internalize33_B631F2037A1B2332DAA100A57B2DC58DLL5chatsSaySo6IMChatCGSaySDys11AnyHashableVypGG_tYaFAHSgALYaXEfU0_TATQ0_ + 1
        10  darwin-barcelona-mautrix            0x00000001052897b1 $sST10ExtensionsE8asyncMapySayqd__Gqd__7ElementQzYaKXEYaKlFTQ1_ + 1
        11  darwin-barcelona-mautrix            0x0000000104d40331 $s9Barcelona14CBChatRegistryC11internalize33_B631F2037A1B2332DAA100A57B2DC58DLL5chatsSaySo6IMChatCGSaySDys11AnyHashableVypGG_tYaFTQ1_ + 1
        12  darwin-barcelona-mautrix            0x0000000104d3dad1 $s9Barcelona14CBChatRegistryC11loadedChatsyySaySDys11AnyHashableVypGGSgYaFTQ1_ + 1
        13  darwin-barcelona-mautrix            0x0000000104dbe571 $s9Barcelona22IMDaemonListenerBridgeC11loadedChatsyySaySDys11AnyHashableVypGGSgFyyYaYbcfU_TQ1_ + 1
        14  darwin-barcelona-mautrix            0x0000000104dc0701 $s9Barcelona22IMDaemonListenerBridgeC11loadedChatsyySaySDys11AnyHashableVypGGSgFyyYaYbcfU_TATQ0_ + 1
        15  darwin-barcelona-mautrix            0x0000000104c57521 $sxIeghHr_xs5Error_pIegHrzo_s8SendableRzs5NeverORs_r0_lTRyt_Tg5TQ0_ + 1
        16  darwin-barcelona-mautrix            0x0000000104c53d51 $sxIeghHr_xs5Error_pIegHrzo_s8SendableRzs5NeverORs_r0_lTRyt_Tg5TATQ0_ + 1
        17  libswift_Concurrency.dylib          0x00007ffb2b367441 _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1
)
libc++abi: terminating with uncaught exception of type NSException module=iMessage/Barcelona/Stderr
Aug  3, 2023 06:34:07 DBG Standard input closed, ending IPC loop module=iMessage/Mac-noSIP/IPC
Aug  3, 2023 06:34:07 ERR Barcelona died with exit code -1 and error signal: abort trap, exiting bridge... module=iMessage/Mac-noSIP

iMessage contacts don't show up in Element

In the console log of the bridge, I see:

[Jun  4, 2022 22:01:40] [iMessage/Mac/INFO] Contact access is allowed

However, when I attempt to start a chat with one of my iMessage contacts (by typing a part of their name) from Element, no suggestions show up.

[Meta] Archive the repo

Since the docs say this bridge is no longer maintained, probably marking the repo as archived and adding some kind of notice in the readme would be beneficial.

Changing imessage usernames

Is there any way to change an imessage user's name? Sometimes the name is not picked up from the address book on my Mac or I will update it after the bridge picks up the first message.

Equivalent "GUID"s are sometimes split out

When a person you're chatting with has both a phone number and an email address tied to their iMessage, this leads to potentially two "guids" for the same user. Generally I've not seen this be an issue but for some reason today after a restart the bridge decided to switch one person's GUID from one to the other. This caused a new room creation with incoming messages going to the new room, but outgoing messages still went out via the old room just fine, of course to the same chat as seen in iMessage.

On Monterey noSIP.

Homebrew libheif not in path specified in build.sh

I believe I have a "vanilla" install of Homebrew -- I've never done anything to change where it puts files. For me, libheif is in /usr/local/Cellar/libheif/1.12.0_1/lib/ rather than /opt/homebrew/lib or /usr/local/homebrew/lib, the paths hard-coded into build.sh. Is there something wrong with how I have Homebrew installed or should build.sh search under /usr/local/Cellar subdirectories for this library? For now, I've manually entered the path in build.sh but would like to have this work correctly moving forward.

Contacts usage can't be granted due to lack of Info.plist entry

If the config file specifies contacts_mode: mac, mautrix-imessage fails to start up on my machine due to not being able to request contacts permission (it runs the [CNContactsStore requestAccessForEntityType:completionHandler:] method, but nothing is prompted to the user). I think this occurs due to the lack of embedded Info.plist including the key NSContactsUsageDescription (see this stackoverflow link). It seems that the Info.plist can be fairly easily embedded into the final binary with the go flags specified in this article under the section "The One Weird Linker Trick": https://pcable.net/posts/2020-11-14-inetaccesspolicy/

I suspect this doesn't appear when people use the self-hosted bridge through beeper-desktop due to the fact that the user has already granted permission to beeper-desktop, and mautrix-imessage is (maybe) running as a subprocess of beeper-desktop. It's also fairly easy to work around by specifying contacts_mode: disable.

I can probably file a PR at some point to fix this if it's desired, but I also understand if this is not expected to work since it's a weird use-case.

Focus support

Hello, I'm interested in using this bridge, but from what I've seen it's missing a feature I use all the time, focus reporting. I would love to see it get implemented! I know Matrix doesn't have support for that built in but you could send a message saying [BRIDGE] Focus: [focus name] has been enabled/disabled! Thank you!

Documentation lacking about supported macOS versions

I know the docs for this bridge are currently sparse, but it would be awesome if the bridge setup instructions for Mac were updated to add supported macOS versions. I attempted to migrate my bridge from normal Mac to Mac (No-SIP) over the past few days, but I spent a significant amount of time troubleshooting crashes. It turns out these crashes occurred because Barcelona does not support Catalina (10.15). The normal Mac bridge worked fine on Catalina, but once I tried to set up Barcelona I started running into issues.

I opened an (upstream?) issue on Barcelona as https://github.com/open-imcore/barcelona/issues/33 to add the supported macOS versions to that project's documentation. However, I expect that the documentation on https://docs.mau.fi is the only documentation most people will read, so I think it would be nice to document the supported macOS versions there as well.

(Also, I just wanted to add that this project is awesome and allows me to use iMessage in environments where I can't access an iPhone or Mac, so it provides a lot of value to me. Thanks for putting in the continuing effort to develop and update it!)

Make barcelona pong timeout configurable

At least on a VM, 15 seconds may not be enough time for barcelona to respond; I've had to manually patch source code for longer timeout to allow mautrix-imessages/barcelona to start. It would be nice if the timeout value were configurable in config.yaml.

Auto Run on Login

What is the correct way to run the bridge when my Mac boots? I've tried adding the executable as a Login Item, but the bridge doesn't start correctly.

incoming attachments not working

Finally got these things all working:

  • incoming text messages
  • outgoing text messages
  • outgoing attachment messages

But for some reason incoming attachments are not being handled. I see the attachment file transfer being logged in the bridge, but then it just sits for about a minute before finally reporting this:

DBG Starting handling of iMessage ED6C6695-AC18-44ED-8537-9DF83DE99F9E (type: 0, attachments: 0, text: 0) portal_guid=iMessage;-;[email protected]
WRN iMessage ED6C6695-AC18-44ED-8537-9DF83DE99F9E doesn't contain any attachments nor text

Not sure if it could be some kind of permissions issue or what.

Here's the full sequence:

2023-05-03T10:02:05-04:00 INF 2023-05-03T10:02:05-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D was created! module=iMessage/Barcelona/Stdout
2023-05-03T10:02:06-04:00 INF 2023-05-03T10:02:06-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has updated! isFinished false state accepted error nil module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has updated! isFinished false state transferring error nil module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has updated! isFinished false state finalizing error nil module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has updated! isFinished true state finished error nil module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has finished! module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug IMFileTransfer : [Barcelona] checking inSandboxedLocation for localPath: Optional("/var/folders/6s/j5t63ckj1m9dw6b6k_xq7ldm0000gn/T/com.apple.imagent/2D04F63D-6BEB-4D4F-B862-9D3228D02A43/0/uxmsmp5zooirj9cpiqlg.jpeg") module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has updated! isFinished true state finished error nil module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has finished! module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug IMFileTransfer : [Barcelona] checking inSandboxedLocation for localPath: Optional("/Users/myuser/Library/Messages/Attachments/83/03/7A4ECAC5-665E-498C-8B33-AE76EBD09A4D/uxmsmp5zooirj9cpiqlg.jpeg") module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has updated! isFinished true state finished error nil module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug FileTransfers : [Barcelona] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D has finished! module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug IMFileTransfer : [Barcelona] checking inSandboxedLocation for localPath: Optional("/Users/myuser/Library/Messages/Attachments/83/03/7A4ECAC5-665E-498C-8B33-AE76EBD09A4D/uxmsmp5zooirj9cpiqlg.jpeg") module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug ERDaemonListener : [Barcelona] chat:iMessage;-;[email protected] updated:[AnyHashable("lastAddressedLocalHandle"): +19173199095, AnyHashable("properties"): { LSMD = "2023-05-03 14:01:36 +0000"; hasBeenAutoSpamReported = 1; hasViewedPotentialSpamChat = 1; messageHandshakeState = 2; numberOfTimesRespondedtoThread = 3; pv = 0; shouldForceToSMS = 0; }, AnyHashable("state"): 3, AnyHashable("autoDonationBehavior"): 0, AnyHashable("chatIdentifier"): [email protected], AnyHashable("participants"): <__NSSingleObjectArrayI 0x600002e2c010>( { FZPersonID = "[email protected]"; } ) , AnyHashable("style"): 45, AnyHashable("unreadCount"): 2, AnyHashable("originalGroupID"): 1706A1BB-17E3-405E-AFE0-3BD4958E74C7, AnyHashable("isRecovered"): 0, AnyHashable("rowID"): 1, AnyHashable("groupID"): 367D03E4-1FAD-42DE-897A-15AB317AA1EF, AnyHashable("accountID"): BBA0BBB3-5E80-400A-83BD-AFA124B40BEE, AnyHashable("pcmid"): [email protected], AnyHashable("lastReadMessageTimeStamp"): 704814905270678016, AnyHashable("isFiltered"): 0, AnyHashable("isBlackholed"): 0, AnyHashable("guid"): iMessage;-;[email protected], AnyHashable("lastMessageTimeStampOnLoad"): 704813575281999872, AnyHashable("serviceName"): iMessage, AnyHashable("hasHadSuccessfulQuery"): 1] module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug CBChatRegistry : [Barcelona] chat nil pcID nil persistentIdentifier iMessage;-;[email protected] updated Optional([AnyHashable("unreadCount"): 2, AnyHashable("accountID"): BBA0BBB3-5E80-400A-83BD-AFA124B40BEE, AnyHashable("pcmid"): [email protected], AnyHashable("lastReadMessageTimeStamp"): 704814905270678016, AnyHashable("rowID"): 1, AnyHashable("guid"): iMessage;-;[email protected], AnyHashable("lastAddressedLocalHandle"): +19173199095, AnyHashable("serviceName"): iMessage, AnyHashable("groupID"): 367D03E4-1FAD-42DE-897A-15AB317AA1EF, AnyHashable("chatIdentifier"): [email protected], AnyHashable("style"): 45, AnyHashable("hasHadSuccessfulQuery"): 1, AnyHashable("properties"): { LSMD = "2023-05-03 14:01:36 +0000"; hasBeenAutoSpamReported = 1; hasViewedPotentialSpamChat = 1; messageHandshakeState = 2; numberOfTimesRespondedtoThread = 3; pv = 0; shouldForceToSMS = 0; }, AnyHashable("participants"): <__NSSingleObjectArrayI 0x600002e2c010>( { FZPersonID = "[email protected]"; } ) , AnyHashable("state"): 3, AnyHashable("isBlackholed"): 0, AnyHashable("isFiltered"): 0, AnyHashable("autoDonationBehavior"): 0, AnyHashable("originalGroupID"): 1706A1BB-17E3-405E-AFE0-3BD4958E74C7, AnyHashable("isRecovered"): 0, AnyHashable("lastMessageTimeStampOnLoad"): 704813575281999872]): chat(_:updated:) module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug ERDaemonListener : [Barcelona] messagesReceived: [IMMessageItem[outgoing: NO [email protected]; service=iMessage; [email protected]; destinationCallerID= +19173199095, unformatted=(null); country=US; roomName='(null)'; flags=101001; subject='(null)' text='(null)' messageID: 65 GUID:'ED6C6695-AC18-44ED-8537-9DF83DE99F9E' sortID: 0 date:'704815325.849180' date-delivered:'0.000000' date-read:'0.000000' date-played:'0.000000' transfer guids: '( "7A4ECAC5-665E-498C-8B33-AE76EBD09A4D" )' empty: NO finished: YES sent: NO read: NO delivered: YES audio: NO played: NO from-me: NO DD results: NO DD Scanned: YES Downgraded: NO emote: NO expirable: NO expire-state: 0 balloon-bundle-id: (null) expressive-send-style-id: (null) time-expressive-send-played: (null) bizIntent: (null) locale: (null) error: 0 sync-state 0 corrupt: NO shouldSendMeCard: NO isSpam: NO hasUnseenMention: NO threadIdentifier: (null), threadOriginator: (null), replyCountsByPart: (null), syndicationRanges: (null), syncedSyndicationRanges: (null), dateEdited: '0.000000', hasGroupActivity: NO, wasDetonated: NO]] comingFromStorage: false module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug ERDaemonListener : [Barcelona] sending message Optional("ED6C6695-AC18-44ED-8537-9DF83DE99F9E") Optional("iMessage") [email protected] down the pipeline module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 DBG Received IPC command: typing/0 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:02:07-04:00 DBG Sending request as_user_id=@imessage_incoming=40sender.com:mymatrix.domain body={"timeout":60000,"typing":false} method=PUT req_id=15 url=https://matrix.mymatrix.domain/matrix/client/v3/rooms/%21QgIaoSIMSECfHAVN:mymatrix.domain/typing/@imessage_incoming=40sender.com:mymatrix.domain?user_id=%40imessage_incoming%3D40sender.com%3Amymatrix.domain
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 debug CBChatRegistry : [Barcelona] chat [email protected] pcID [email protected] received [IMMessageItem[outgoing: NO [email protected]; service=iMessage; [email protected]; destinationCallerID= +19173199095, unformatted=(null); country=US; roomName='(null)'; flags=101001; subject='(null)' text='(null)' messageID: 65 GUID:'ED6C6695-AC18-44ED-8537-9DF83DE99F9E' sortID: 4 date:'704815325.849180' date-delivered:'0.000000' date-read:'0.000000' date-played:'0.000000' transfer guids: '(
"7A4ECAC5-665E-498C-8B33-AE76EBD09A4D"
)' empty: NO finished: YES sent: NO read: NO delivered: YES audio: NO played: NO from-me: NO DD results: NO DD Scanned: YES Downgraded: NO emote: NO expirable: NO expire-state: 0 balloon-bundle-id: (null) expressive-send-style-id: (null) time-expressive-send-played: (null) bizIntent: (null) locale: (null) error: 0 sync-state 0 corrupt: NO shouldSendMeCard: NO isSpam: NO hasUnseenMention: NO threadIdentifier: (null), threadOriginator: (null), replyCountsByPart: (null), syndicationRanges: (null), syncedSyndicationRanges: (null), dateEdited: '0.000000', hasGroupActivity: NO, wasDetonated: NO]] from storage false: account(:chat:style:chatProperties:groupID:chatPersonCentricID:messagesReceived:messagesComingFromStorage:) module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 INF 2023-05-03T10:02:07-0400 info CBChat : [Barcelona] handled message ED6C6695-AC18-44ED-8537-9DF83DE99F9E, <CBMessage retryCount=0 rawFlags=66 error=noError time=2023-05-03 14:02:05 +0000 timeDelivered=nil timeRead=nil sender=<Handle name=mailto [email protected]/> sent=false delivered=true typing=false read=false fromMe=false downgraded=false beingRetried=false finished=true prepared=false sos=false alert=false spam=false emote=false played=false corrupt=false expirable=false audioMessage=false locationMessage=false empty=false/>"
2023-05-03T10:02:07-0400 debug IMFileTransfer : [Barcelona] checking inSandboxedLocation for localPath: Optional("/Users/myuser/Library/Messages/Attachments/83/03/7A4ECAC5-665E-498C-8B33-AE76EBD09A4D/uxmsmp5zooirj9cpiqlg.jpeg")
2023-05-03T10:02:07-0400 info FileTransfers : [CBFileTransferCenter] Transfer 7A4ECAC5-665E-498C-8B33-AE76EBD09A4D is truly finished!
2023-05-03T10:02:07-0400 debug IMFileTransfer : [Barcelona] checking inSandboxedLocation for localPath: Optional("/Users/myuser/Library/Messages/Attachments/83/03/7A4ECAC5-665E-498C-8B33-AE76EBD09A4D/uxmsmp5zooirj9cpiqlg.jpeg") module=iMessage/Barcelona/Stdout
2023-05-03T10:02:07-04:00 DBG Request completed as_user_id=@imessage_incoming=40sender.com:mymatrix.domain duration=14.083064 method=PUT path=/v3/rooms/!QgIaoSIMSECfHAVN:mymatrix.domain/typing/@imessage_incoming=40sender.com:mymatrix.domain req_id=15 response_length=2 response_mime=application/json status_code=200
2023-05-03T10:02:07-04:00 DBG Handled typing notification in 17.143934ms (queued: 0m/0r/0t/0ch/0ct/0s/0b) module=iMessage
2023-05-03T10:02:20-04:00 DBG Sending IPC command: ping/17 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:02:20-04:00 DBG Received IPC command: response/17 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:02:35-04:00 DBG Sending IPC command: ping/18 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:02:35-04:00 DBG Received IPC command: response/18 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:02:50-04:00 DBG Sending IPC command: ping/19 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:02:50-04:00 DBG Received IPC command: response/19 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:03:02-04:00 INF 2023-05-03T10:03:02-0400 info MautrixIPCChannel : [BarcelonaMautrixIPC] Outgoing! message -1 module=iMessage/Barcelona/Stdout
2023-05-03T10:03:02-04:00 DBG Received IPC command: message/0 module=iMessage/Mac-noSIP/IPC
2023-05-03T10:03:02-04:00 DBG Handled message in 12.076µs (queued: 0m/0r/0t/0ch/0ct/0s/0b) module=iMessage
2023-05-03T10:03:02-04:00 DBG Starting handling of iMessage ED6C6695-AC18-44ED-8537-9DF83DE99F9E (type: 0, attachments: 0, text: 0) portal_guid=iMessage;-;[email protected]
2023-05-03T10:03:02-04:00 WRN iMessage ED6C6695-AC18-44ED-8537-9DF83DE99F9E doesn't contain any attachments nor text portal_guid=iMessage;-;[email protected]
2023-05-03T10:03:02-04:00 DBG Unhandled message ED6C6695-AC18-44ED-8537-9DF83DE99F9E portal_guid=iMessage;-;[email protected]
2023-05-03T10:03:02-04:00 DBG Handled iMessage in 103.917579ms (queued: 0i/0r/0m/0s) portal_guid=iMessage;-;[email protected]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.