Editing a message makes user and channel mentions break

(#421) Bug Awaiting confirmation messaging

Summary

Editing a message makes user and channel mentions turn into "just text", making them not clickable anymore.

Steps to reproduce

  1. Send a message with a user mention or channel mention or both
  2. Edit the message, for example add something or delete something
  3. The mentions will turn into just text

Environment (optional)

stable build 87 (28da28c), 2026-03-11 14:24:05 UTC, Chrome 144.0.0.0, Linux (x86)

Logs or screenshots (optional)

image image
  • 564405974-8f6d6d36-755a-4c3f-acc8-ac140c2941e7.png

    564405974-8f6d6d36-755a-4c3f-acc8-ac140c2941e7.png

    321×100 | 13 kB

  • 564406127-cf6fc4b6-369e-4202-8b72-88da5364f50a.png

    564406127-cf6fc4b6-369e-4202-8b72-88da5364f50a.png

    291×118 | 15 kB

2 comments

Sign in with Fluxer to comment and vote.
Comment by Rex
RexSystem 1 vote
Status changed from Fixed to Awaiting confirmation
This was closed in a bulk cleanup before Fluxer V2 without being checked or fixed. It may work now, so it is waiting for someone to confirm whether the bug still happens.
Comment by @cproudlock
RexSystem 1 vote originally by @cproudlock on GitHub
The issue is in how the message editor reconstructs mentions from display text. When a message is loaded for editing, fluxer_app/src/utils/MarkdownToSegmentUtils.tsx (convertMarkdownToSegments, line 39) correctly parses the raw markdown mention syntax (e.g. <@12345>) and creates segments. However, the segment state isn't properly persisted through the edit lifecycle. When the user saves the edit, displayToActual() in the textarea segments hook converts from the display text back to raw markdown — but it doesn't properly reconstruct the <@id> format for mentions that were in the original message. The fix would be to ensure that when loading a message for editing in EditingMessageInput.tsx (around line 130-146), the segments created by convertMarkdownToSegments are fully registered in the segment manager so that displayToActual() can reconstruct them on save.