← Tasks

Mentions - stage 1

Problem: You can’t invite someone to an ongoing discussion (in a task, update, or thread) so only existing followers are notified of new comments.

The common solution to this problem is mentions (@username). For Macro, a mention would automatically add the mentioned user as a follower so they’d see the discussion in their Focus and be emailed about new comments.

NB. This is non-trivial to implement so requires some up-front research.

Implementation details

The hard part about mentions is the dropdown UI/UX. So as as a first stage, we can implement mentions without a dropdown UI. i.e. You type @username into a message and it will:

  • add that user as a follower of the discussion
  • send a new comment email to them (and other discussion followers)

Everything will work, but you will need to be careful to type the username exactly to make sure it’s correct.

Another important point is that at the moment users do not have usernames, only emails, and full names, neither of which are suitable for mentions in markdown (full names have spaces which won’t work). So we will have to add usernames (similar to GitHub). I’ve split this out into a separate task here.

Finally, there is some complexity where you have added some @username text client side, and the preview needs to determine whether that corresponds to a real user or not. How to do this without adding a delay when showing the markdown preview? We will ignore this issue for now and accept that some previews will be incorrect.

Steps

  1. Style @username text differently in markdown previews to highlight mentions
  2. Style @username text differently in rendered markdown
  3. Backend: Update (create + edit)
  4. Backend: Update comment (create + edit)
  5. Backend: Task (edit)
  6. Backend: Task comment (create + edit)
  7. Backend: Thread (create)
  8. Backend: Thread comment (create + edit)

NB. Mentions will not be supported in:

  • email content
  • project descriptions
T
tyro 1 year ago

Mentions (stage 1) are now live! Implemented by @tyro! 🚀

Status
Done
Assignee
T
tyro
Due Not set
Following
T
Follow You're not tracking this item.