Skip to content

Report a Remotes message or a person to devnull's moderators - #173

Open
shanerbaner82 wants to merge 2 commits into
mainfrom
feat/report-messages-and-users
Open

shanerbaner82 wants to merge 2 commits into
mainfrom
feat/report-messages-and-users

Conversation

@shanerbaner82

@shanerbaner82 shanerbaner82 commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Apple rejected the app under App Store Review Guideline 1.2: apps with user-generated content must let people report objectionable content and abusive users. The app could already report commits. This PR adds reporting for Remotes messages and for people.

  • Report message is now the last item in the long-press menu on someone else's sent message, both on the bubble and on its photos. Your own messages, ones still sending and org events don't show it.
  • Report @handle sits next to Mute and Block in another person's profile ⋯ menu. It also stays available on a profile you've blocked.
  • Both open a new report sheet (ReportsToModerators and partials/report-sheet). It works like the Report commit form: pick a reason, add optional details, then Send report. If devnull doesn't take the report, the reason shows in the sheet, and the screen's own error is left as it was.
  • New Client calls are reportMessage() and reportUser(), which call POST remotes/messages/{id}/reports and POST users/{handle}/reports.

This depends on dev-null-sh/dev-null.sh#1518, which adds those endpoints. Merge and deploy that one first.

cc @simonhamp

Tests

There are 5 new tests: the message report flow, the error shown in the sheet, the profile report flow, and the two Client payloads. I updated 12 existing tests that check exact menu contents.

On the full suite, 1882 tests pass and 8 fail. The same 8 fail on main without this change: the swipe tests (pan-x-trigger) and the TestableComponent::trigger ones. CI on main is already red for them. Pint passes.

An independent review returned PASS. Its fixes are in the second commit: the sheet keeps its contents while it slides away, and a misplaced docblock is fixed. One edge case remains on iOS. If you open a new report within a moment of tapping Done, the late dismiss can close the new sheet. That's unlikely, because the menu needs a long press.

Screenshots

These are iOS only (iPhone 17 Pro simulator). Android wasn't captured for this PR.

profile-menu

iOS light iOS dark
Before
After

message-menu

iOS light iOS dark
Before
After
  • No visible change

shanerbaner82 and others added 2 commits November 7, 2026 13:03
Report message ends the long-press menu of someone else's message, and
Report @handle joins Mute and Block in a profile's menu. Both open a
report sheet like Report commit's: a reason, optional details, and Send
report, with why devnull said no shown in the sheet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant