Skip to content

Releases: YourSandwich/mautrix-teams

v28.1

Choose a tag to compare

@github-actions github-actions released this 17 Jun 02:54

Full Changelog: v28.0...v28.1

v28.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 12:15

Full Changelog: v27.0...v28.0

v27.0

Choose a tag to compare

@github-actions github-actions released this 27 Apr 13:53

mautrix-teams 27.0 aligns versioning with the underlying mautrix-go release
line; future patch releases will track it as 27.0.x. The release fixes the
meeting/group/channel naming gap, breaks a tight Trouter reconnect loop, and
stops the bridge re-inviting you to portals you have manually left.

Fixed

  • Group, channel and meeting portals now pick up their Teams topic. The
    per-thread /v1/threads/<id> API returns thread metadata under the
    top-level properties key, while /conversations (used at startup)
    uses threadProperties; we now read either, and fall back to the
    calendar subject parsed from properties.meeting JSON for meeting
    threads where neither topic is set.
  • Trouter /v4/a registration now refreshes the skype token on a 401 and
    retries once. Without this the bridge would enter a 5-second reconnect
    loop after Microsoft rotated the websocket and the cached skype token
    expired in the gap, hammering the auth endpoint until manual restart.
  • Startup chat sync no longer re-invites you to portals you have manually
    left in Matrix. The bridge checks the room's member state and skips the
    resync when your membership is leave or ban. Live messages still
    trigger re-invite, as before.
  • Unknown Teams contacts (no profile available, no cached display name)
    show as the bare AAD GUID instead of the full 8:orgid:<guid> MRI, and
    DM rooms with such contacts no longer get the bare MRI written into the
    room name; Element falls back to the ghost's display name instead.

Full Changelog: v26.04.2...v27.0

v26.04.2

Choose a tag to compare

@github-actions github-actions released this 25 Apr 15:52

mautrix-teams 26.04.2 brings live incoming-call notices, fixes the bot
avatar that re-uploaded on every restart, and patches the OAuth bearer
prerequisite so the skype-token refresh recovers cleanly when Azure
revokes a bearer ahead of its stored expiry.

Added

  • Incoming Teams calls now post a live 📲 Incoming call from <name>
    notice in the caller's DM portal within ~1s of the ring, with a
    self-mention so Element fires a Matrix push notification.
  • Post-call summaries from the 48:calllogs system thread are parsed and
    re-routed to the real conversation portal (DM partner for 1:1, thread
    for group calls) instead of opening a virtual 48:calllogs portal that
    the Teams API rejects with HTTP 400.
  • Call notices include direction, caller display name (with cache fallback
    for outgoing calls where Teams omits targetParticipant.displayName),
    and call duration when available. Self-calls and voicemail legs are
    skipped.

Fixed

  • Bot avatar is no longer re-uploaded on every restart. The mxc cache
    file now lives in the bridge working directory (writable under the
    systemd unit's ReadWritePaths) so PrivateTmp=yes no longer wipes it
    on boot.
  • RefreshSkypeToken now refreshes the OAuth bearer first when the
    cached one has expired, and retries once on a 401 from the authz
    endpoint. This was masking expired-bearer cases as msteams: token expired and stalling read receipts and outbound Matrix events between
    full reconnect cycles.

Full Changelog: v26.04.1...v26.04.2

v26.04.1

Choose a tag to compare

@YourSandwich YourSandwich released this 24 Apr 10:51

Fixed

  • Backfill on Synapse now respects max_initial_messages instead of stopping
    at one Teams page. The internal pagination loop also counts only
    bridgeable messages toward the target so non-chat events don't shrink it.
  • Multi-part messages (text + attachment, etc.) get distinct part IDs so
    they no longer collide on bridgev2's (message_id, part_id) UNIQUE
    constraint, which was aborting forward backfill mid-stream.
  • Inline Teams emoticons (:wink: etc.) render as Unicode in the message
    body instead of being split out as standalone m.image parts.
  • Messages that convert to nothing (empty HTML shells, system events) are
    skipped via bridgev2.ErrIgnoringRemoteEvent instead of being posted as
    blank m.text placeholders.
  • History messages now populate parent_id (thread reply target) and
    reactions from properties.emotions and conversationLink.
  • Reactions are deduped by (key, MRI) when parsing emotions so Teams's
    per-emoji history (multiple add/remove cycles) doesn't replay as
    duplicate Matrix reaction events.
  • RichText/UriObject (inline images and screenshots) is now treated as
    a chat message type and bridged.
  • DM portal invites carry is_direct: true so Element auto-marks them as
    direct chats without requiring double-puppeting.

Full Changelog: https://github.com/YourSandwich/mautrix-teams/commits/v26.04.1

v26.04

Choose a tag to compare

@github-actions github-actions released this 22 Apr 03:38