Skip to content

Bridge GroupMe voice notes - #31

Merged
Fizzadar merged 11 commits into
mainfrom
iFixRobots/voice-notes
Oct 27, 2026
Merged

Fizzadar merged 11 commits into
mainfrom
iFixRobots/voice-notes

Conversation

@iFixRobots

@iFixRobots iFixRobots commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

GroupMe voice notes arrive in Beeper as the fallback text "⚠️You received a voice note that may not be supported." There's also no mic button in GroupMe chats. The connector ignores audio attachments, and the capabilities don't include voice:

default:
	// Mentions and custom emoji retain their plaintext fallback.
	continue

Incoming voice notes now become Matrix voice messages, with their duration and waveform, through both direct and downloaded media. The fallback text is hidden the same way GroupMe's web client hides it. Outgoing voice messages use the existing upload session, which already handles video, and are sent as an audio attachment with duration, peaks and the transcript URL GroupMe returns. Voice capabilities only list audio/mp4, so Beeper clients convert their recordings to .m4a before sending, and the bridge doesn't need ffmpeg.

This bumps groupme-lib to include beeper/groupme-lib#2, which adds the attachment fields.

Before After
Voice note from GroupMe Fallback text Playable voice message
Voice note from Beeper No mic Sent as a GroupMe voice note

Changelog: Added GroupMe voice notes.

Before / after

I haven't run this on a device yet; it needs a staging bridge build.

View in Indent
Tag @indent to continue the conversation here.

@indent

indent Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Issues

All clear! No issues remaining. 🎉

2 issues already resolved
  • voiceNoteAttachment rounds outgoing duration to whole seconds. Clips under 0.5s end up with Duration 0, which omitempty drops from the GroupMe payload. Send the fractional seconds, or clamp to at least 1 when durationMS > 0. (fixed by commit a95aedc)
    Found by Indent Review Agent
  • visibleText loops forever when an Image/Video attachment has an empty URL and the text is empty or fully stripped, because sameMediaURL("", "") is true. This hangs convertGroupMeMessage and stalls that login's event processing. (fixed by commit 50f47e7)
    Found by Indent Review Agent at a95aedc

CI Checks

All CI checks passed on 075d182.

Review agents

Select any unchecked box below to run or rerun that agent.

Passed (1)
  • Indent Review Agent · No issues found
Full results

Indent Review Agent

  • Summary: No issues found
  • Last ran on commit: 075d1820
  • Latest result
    {
      "summary": "No issues found",
      "findings": []
    }

Comment thread pkg/connector/mediainfo.go Resolved
Base automatically changed from iFixRobots/media-info to main October 27, 2026 16:00
# Conflicts:
#	pkg/connector/capabilities.go
#	pkg/connector/mediainfo.go
iFixRobots and others added 3 commits October 27, 2026 18:08
# Conflicts:
#	go.mod
#	go.sum
#	pkg/connector/capabilities.go
#	pkg/connector/handlematrix.go
GroupMe's live DM events carry an audio attachment's peaks as a bare
"0.0,0.125,..." string rather than the bracketed form groups use, so DM
voice notes arrived without a waveform.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Fizzadar

Copy link
Copy Markdown
Contributor

Tested live on a self-hosted bridge (main vs this branch), confirmed working after one fix:

  • voice notes from Beeper arrive as real GroupMe voice notes and play through, main rejected them as unsupported
  • voice notes from GroupMe now come through as m.audio with the voice flag, duration and waveform instead of the fallback text
  • voice advertised with only audio/mp4

Live DM events send the peaks as a bare 0.0,0.125,... string (groups use the bracketed form) so DM voice notes were losing their waveform - fixed in 00d3ac6 with a test, then smoke tested the final head with voice both ways and mentions. LGTM!

@Fizzadar
Fizzadar merged commit 6104590 into main Oct 27, 2026
5 checks passed
@Fizzadar
Fizzadar deleted the iFixRobots/voice-notes branch October 27, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

2 participants