Repository navigation
feat: contact groups (group texts + SMS group chat relay) - #116
Merged
Merged
Conversation
…roup chat, upsert by external_ref; API, MCP, CLI 1.8.0, /groups page Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ThreatCrush Security Scan12 finding(s) HIGH/CRITICAL: 2 | MEDIUM: 4 | LOW: 6
Snippets are redacted; ThreatCrush never prints matched credential material. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Anthony: "smshub could have a group management feature. that would be good. build that too." (and group.call can optionally send its group texts through it).
021_contact_groups.sql(applied on dev2 before merge):contact_groups(name, description, from number, relay, external_ref unique per user) +contact_group_members(contact, opted_out), RLS owner-only.src/lib/groups.ts: list/get/save (upsert by external_ref, members replaced)/update/delete, add/remove members,sendToGroup(each member from your own number, filed in the inbox, STOPped skipped, one group send = one against 10/min, 200 members max),onGroupInboundfromrecordInbound: STOP/START per member, and relay groups pass a member's text to the rest ("Kim: ...").sendMessagerefactored intosendFromNumber(shared single-text path, no rate limit) so group sends reuse the inbox filing./api/v1/groups(+/{id},/members,/members/{member},/send), in developer-api.ts (docs, llms.txt, openapi). MCP list_groups/get_group/save_group/add_group_members/send_to_group. CLI 1.8.0groups/group create|add|remove|send|relay|rm(repeatable--member). Dashboard/groups+ Groups tab.Checks: 322/322 tests (2 new), tsc, lint,
next build; lib exercised against the live DB as riotcoder+smshub (create, upsert by ref, add/remove, STOP, refusal without an own number, cross-user 404, delete; test contacts removed).🤖 Generated with Claude Code