Forums Feature Requests Thread

[New] Messaging & chat: No message editing anywhere — the edit() method exists but is never wired to a route

Patrick Bass · Jun 6 · 12 · 1 Locked
[High Priority] [New Feature] [Deployed to Production]
🚀 OP Jun 6, 2026 5:50pm

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

🚀 Jun 7, 2026 11:14am

Shipped and deployed to production. Commit 315546830c.

DM message editing shipped: POST /messages/message/{id}/edit with ownership + CSRF + participant checks. Pencil icon on own bubbles, inline edit textarea, (edited) label, Ctrl+Enter/Escape bindings.

Closed as: deployed.


Patrick Bass
@mobieus

Log in or register to reply to this thread.