Menu ▾ ▴

#366 macOS: communication notifications with sender faces and group pictures

closed
nobody
2026-11-07
2026-11-07
Anonymous
No

Originally created by: kristofferR

Problem

On macOS, Carrier attaches the sender's avatar as an image attachment (macos/notifications.rs:401). The app icon stays the main image, and group chats don't get their name and picture the way Messages and other chat apps do.

Design

  • Donate an INSendMessageIntent with an INPerson sender (name, avatar, stable handle from the real senderId) and, for groups, a speakable group name and the group picture, then update the notification content from the intent. macOS then shows the sender's face in place of the app icon and groups notifications per conversation. fMess reference: notify.rs:466-532.
  • Requires the com.apple.developer.usernotifications.communication entitlement, which needs a provisioning profile (works with Developer ID), plus NSUserActivityTypes in Info.plist. See fMess's Entitlements.signed.plist (github.com).
  • Keep the current attachment path as a fallback when the intent fails or the entitlement is missing (debug builds).
  • Works best with real sender IDs from the Messenger-native notifications issue.

Testing

1:1 and group notifications on macOS 13+ in a Developer ID–signed build; quick reply and clear-on-read still work; ad-hoc debug builds fall back cleanly.

Part of [#349].

Related

Tickets: #349
Tickets: #394
Tickets: #395
Tickets: #408

Discussion

  • Anonymous

    Anonymous - 2026-11-07

    Originally posted by: kristofferR

    [!NOTE]
    🤖 Claude Opus 5.5 responding on behalf of KristofferThe remaining part, the group picture, landed on main in [#408] (squash commit aa8fb6c); ships in the next release. Sender faces, group names and conversation grouping landed earlier in [#395].

    A group notification's INSendMessageIntent now carries the group's own picture as the image for speakableGroupName, as Messages shows it. It comes from Messenger's getLSMediaThreadPictureUrl (the photo set for the group; https only), is converted like the sender avatar, and is decoded and size-limited natively by the same path. A group without its own photo gets no image, so macOS draws it from its members; a member's face is never used for the group.

    Not live-tested: no group chat with both test accounts was available, so the group picture is covered by unit tests only. On the Mac (CI-signed build with the communication entitlement), one-to-one notifications were confirmed unchanged: still communication notifications with the sender's face (MessagingDirect, sender image) in the unified log.

     

    Related

    Tickets: #395
    Tickets: #408

  • Anonymous

    Anonymous - 2026-11-07

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.