Skip to content

Add group story support via --group-id - #2083

Merged
AsamK merged 5 commits into
AsamK:masterfrom
tonycpsu:group-story
Jul 12, 2026
Merged

AsamK merged 5 commits into
AsamK:masterfrom
tonycpsu:group-story

Conversation

@tonycpsu

@tonycpsu tonycpsu commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Depends on #2082 β€” this PR builds on the sendStory command introduced there and will not merge cleanly until #2082 is merged.

Summary

  • Extends sendStory with optional --group-id / -g parameter for posting stories to Signal groups
  • Uses the existing group send endorsement infrastructure for sealed-sender delivery (the blocker that stalled Support for stories - issue #1592Β #1713 is now resolved)
  • Recipients determined by group membership; endorsements fetched via getGroupSendEndorsements()
  • Includes ACI type safety, endorsement availability filtering, unregistered-recipient skipping, and empty-recipient guards

Changes

  • Manager.sendStory() β€” gains Optional<GroupId> third parameter
  • ManagerImpl β€” branches on group vs My Story; validates membership, V2 requirement, empty recipients before upload
  • SendHelper.sendGroupStoryMessage() β€” endorsement-aware group story delivery with recipient filtering
  • SendStoryCommand β€” adds -g / --group-id argument with error handling
  • Stubs β€” DbusManagerImpl, StubManager, MinimalStubManager updated
  • Documentation β€” man page and changelog updated

Test plan

  • Smoke test: group story sent to a test group, confirmed visible on phone
  • Regression: My Story send still works
  • Error case: invalid group ID β†’ "Group not found"
  • Error case: non-image file β†’ MIME validation error
  • Full build + test suite passes (./gradlew compileJava compileTestJava test)

πŸ€– Generated with Claude Code

https://claude.ai/code/session_01MR2KF56Qcf9qNH1URj3XWs

@AsamK

AsamK commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Needs a rebase, also I see some unrelated files that should be removed, task-1-report.md

@tonycpsu

Copy link
Copy Markdown
Contributor Author

Needs a rebase, also I see some unrelated files that should be removed, task-1-report.md

Oops! Will do!

tonycpsu and others added 5 commits July 12, 2026 09:13
Extend Manager.sendStory() with an optional GroupId parameter and add
SendHelper.sendGroupStoryMessage() for endorsement-aware group story
delivery, laying the groundwork for group story support (task 1 of 4).
The existing My Story code path is unchanged.
Passes an optional GroupId through to Manager.sendStory so stories can
be posted to a group instead of only My Story, and surfaces
GroupNotFoundException / NotAGroupMemberException as user errors.
Updates DbusManagerImpl and StubManager (in SubscribeCallEventsTest) to
match the new 3-parameter sendStory signature: (String attachment,
boolean allowsReplies, Optional<GroupId> groupId).

Also includes the empty-recipient guard added after Task 1 review to
prevent stories from being sent to groups where the user is the only member.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MR2KF56Qcf9qNH1URj3XWs
- Add --group-id (-g) option to sendStory command in man page
- Update CHANGELOG to mention group story support via --group-id
- Maintain alphabetical order of options in sendStory section

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MR2KF56Qcf9qNH1URj3XWs
- Filter group story recipients by ACI type and endorsement availability
  to prevent ClassCastException and NPE on edge cases
- Add empty-recipient guard after endorsement filtering
- Skip known-unregistered recipients before address resolution, matching
  the pattern from sendGroupMessageInternal
- Add debug logging when recipients are filtered out
- Fix redundant error message prefixing in SendStoryCommand
- Add .superpowers/ to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MR2KF56Qcf9qNH1URj3XWs
@tonycpsu

Copy link
Copy Markdown
Contributor Author

Done.

@AsamK
AsamK merged commit 6808b66 into AsamK:master Jul 12, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants