Area: Messaging & chat (audit p4) · Surface: Chat-room messages (ChatRoomController / rooms templates) · Dimension: competitor-gap · Severity: minor
Reactions are the lowest-friction engagement signal in group chat — Discord, Slack, and Circle all lean on them to acknowledge without adding noise. We built reactions for 1:1 DMs but left the higher-traffic community chat rooms without them, an inconsistency members will notice immediately. The DM react endpoint and pill rendering are a near-drop-in template.
Evidence
DMs have a full reaction system: POST /messages/react (routes.php:965), MessageController::react (line 1143), message_reactions table, and pill UI in conversation.php:279-293. Chat rooms have nothing equivalent — no react route (routes.php:990-993 only send/typing/delete/report), no reaction grep hit in chat-rooms.js except the GIF search placeholder, and no chat_message_reaction table (grep returns no schema file).
Suggested fix. Add a chat_message_reactions table and POST /rooms/{slug}/messages/{id}/react mirroring MessageController::react, broadcast reaction deltas over the room SSE stream, and reuse the DM reaction-pill UI in _message.php.
Filed by the automated tenant-app audit and adversarially evidence-verified. Status: verified. Open — not yet actioned.
Patrick Bass
@mobieus