Area: Messaging & chat (audit p4) · Surface: DM messages (MessageController) + chat-room messages (ChatRoomController) · Dimension: competitor-gap · Severity: major
Discord, Slack, Circle, Skool, and Intercom all let users edit a sent message (typically showing an 'edited' marker). We ship neither for DMs nor chat rooms — once sent, the only correction path is delete-and-resend, which breaks reply chains and reactions. The chat model author already wrote the edit() method, so the data layer is half-built; only the route, controller authz (author-only, time window optional), and an inline-edit UI are missing. This is a low-effort, high-visibility gap.
Evidence
src/Models/ChatMessage.php:152 defines `public static function edit(int $id, string $newBody): void` but grep shows it is referenced nowhere in any controller (`grep -rn 'ChatMessage::edit' src/` outside the definition returns nothing; ChatRoomController exposes only delete/report, routes.php:992-993). MessageController has no edit handler (routes.php:954-973 list send/react/delete/archive/rename/invite/leave but no edit). conversation.php has no edit affordance.
Suggested fix. Add POST /rooms/{slug}/messages/{id}/edit and POST /messages/{id}/edit-message, both author-only, calling ChatMessage::edit() / an equivalent for DM messages; stamp an edited_at column and render an '(edited)' label. Stream the edit over the SSE/poll channel.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus