Signal-desktop: Add support for formatting text with Markdown

Created on 14 Dec 2016  路  36Comments  路  Source: signalapp/Signal-Desktop

  • [x] I have searched open and closed issues for duplicates

Feature Description

There is currently no support to format text as italic, bold or to underline or strikethrough.

Screenshots

WhatsApp handles this really well on Android and iOS (have never used the web interface) though it would be better to implement Markdown tags than to come up with our own tags like WhatsApp did.

The way WhatsApp does it is that it turns

7c1a94e0-ab15-11e6-80b4-c5b8acf27e44

Into

80dd3906-ab15-11e6-8f35-76830910d0e6

This is already a filed issue on the Android repository: https://github.com/WhisperSystems/Signal-Android/issues/5534

This is to make the feature cross platform.

Feature Request

Most helpful comment

It would be great to also support adding code blocks, inline code, and links!

This still keeps me on Skype for quick chats nowadays :(

All 36 comments

Should be pretty straightforward to implement this on Desktop, though we'll probably want to coordinate the release with Android/iOS.

It would be great to also support adding code blocks, inline code, and links!

This still keeps me on Skype for quick chats nowadays :(

I'm still happy to implement this feature, but I'm not willing to build it on all three platforms. I don't want to build another PR just for it to be rejected on the grounds of not wanting the feature. If I built this feature again, and it met the code standards you want, would it be merged?

You know what would be helpful for us? A comprehensive spec of the behavior you'd like, including the phones, including comparisons to the other mobile apps. We have other higher-priority stuff on our plate right now, but that spec would remove a lot of the design friction holding us back whenever we do consider this.

First thanks for taking time to respond, I know you and your colleagues are busy with so much more than this issue. I'm willing to help in additional areas beyond this single issue, but this is a feature I want so it seems like a good place to start and get my feet wet in the codebase.

Granted this is just my 2 cents on this, but here goes:

The underlying principle for me is that I as a user of Signal (and a strong advocate) would like formatting on my messages.

It's a strong desire, but it's non urgent. The primary use case of Signal (in my mind) is security, not features, but IMO the features are what push Signal from a project only used by enthusiasts to something the mainstream public can use. With that out of the way here is _my probably flawed_ vision for formatting in messages:

Desktop (electron web app): Ideally we'd see something like what Github provides, a full featured editor with buttons that does the formatting for you, but for power users the ability to insert formatting via the keyboard. Markdown seems like the obvious choice.

Mobile: Same behavior, on mobile it might make sense to limit the number of UX options for formatting on the top level, but mobile isn't a second class client so having all the options (even if some is under a dropdown) and preserving the ability to use markdown to format the message would be ideal.

As for comparisons to other applications, my comparisons are a bit outdated because I switched to using Signal as my main messaging application and pulled my inner circle with me almost 2 years ago, I only use signal and texts now. I'm passionate about this feature because I spent 3 months evaluating other options and after weighing pros and cons chose signal. Many of my friends ask me often why signal doesn't support formatting like What'sApp does. I can look into some other apps in the near future, and come back.

Ultimately I believe limiting support to a subset of markdown is a mistake, because markdown degrades gracefully into text.

I was recently made aware of Signal by a friend and I wondered how I had overlooked it. I think it's because I was searching for chat clients that supported markdown. I wouldn't use a graphic toolbar (in fact, I'd rather not have one). Thanks for considering this feature!! :D And thanks for your hard work.

Thanks for hard work: app works and looks great. That said, yes, support for formatting, especially for code blocks, is very much needed.

I would also like to have this feature of Markdown (don't need any UI to manage it) people would just have to know the markdowns which are standard.

Lively convo over here, in case it hasn't been linked already: https://community.signalusers.org/t/font-styling-for-signal-messages-e-g-using-markdown/612

i agree- markdown support would be really nice. Signal makes it too easy to securely encrypt and send messages\files to friends and coworkers to not have at least some this feature set at our disposal. (it also is nice WHEN BEING INTENTIONALLY _dramatic_.) :wink:

Since for scientific workgroups this is also quite important: supporting LaTeX expression as part of markdown. This would make life sooo much easier.

As for the reserved character problem: To make this not confuse users who have no idea about markdown and wonder about reserved characters: I'm all for toggling the markdown mode with a button in the text field.

Also one thing I have in mind: when replying to a markdown message, when toggling the markdown mode in the reply field the code of the referred message should be shown and one should be able to split the messages on refers to up, so one could react on individual points of the message.

I think Signal-Desktop provides the ideal platform to implement this first, as it has an entire browser stack already integrated. This feature would imho justify all the bloat that comes with electron.

If one is more interested in the points I'm making I will provide mockups.

For users switching away from WhatsApp, the habit of typing in standard markdown is strong and switching to signal is the obvious choice but then the habits _die hard_

bump I wouldn't mind taking the time to make a PR for the iOS version if others are willing to take the responsibility of desktop and android, it seems clear from this thread that people are keen for some form of formatting. Personally I'd like to avoid links though since it can be easy to send misleading/malicious links through markdown, but otherwise I think the rest of MD would be good to implement and only requires client side code.

Hi,

As I've explained on the signal community forum, I'm very happy to work on this for android, desktop, and iOS. I've explained my methodology and decisions there too, but it will not be hard to add addition styling options on top of my 'minimum' requirements.

Also explained there is my current status on this. After 2 days, in my spare time, I've got the rendering of styles working on android and desktop - very soon I will port the functions across to iOS too. My next steps (again explained at the forum) are to get previewing of stylings, then the style menu popup options working.

Currently my solution applies to bold (*bold*), italic (_italic_) and strikethrough (\~strikethrough~) - the reasons for deviating from commonmark explained in the forum post - but it will not be hard to expand on this, e.g. for `monospace`.

@SRugina Could you evaluate math expression support too eventually?

The code that evaluates math expressions would have to be written/used from a package, but feasibly the code I'm currently using can be used to detect the start and end of a math expression - then all one would have to do is use a package to evaluate the math expression within this range.

Currently, I do not plan to add that myself as it is beyond my goal of text styling for Signal.

@Esokrates I've never seen markdown esque formatting evaluate functions. Did you mean formatting math expressions?

Looking forward to this, especially links

I'm new to Signal and I'm floored that it doesn't have text-formatting. I thought this is such a basic feature of all chat apps! Like, really?

Not constructive, positive, or likely to promote getting this feature included @KeronCyst.

Okay, I guess I should say, "Yes, please add this."

To _me_, that doesn't carry anywhere _near_ as much weight as "Literally every other app has this basic feature, even Hangouts (if on desktop)." The _only_ no-format messaging system I can think of is SMS or systems based on SMS like GroupMe (and maybe LINE, way back then... I can't remember).

But I mean, whatever interpretation of my reaction will help more, sure.

And now you're just inviting the question of "if every other app is superior to your mind, why are you here?". To _me_, your tone is about the only way of ensuring your message carries no weight at all.

Can we please, please keep the discussion on topic so that this thread doesn't need to be locked?

"if every other app is superior to your mind, why are you here?"

Because I obviously _want_ Signal to be superior, and I see its potential and would still like to use it; I was just floored by this matter when I found out on my own. Anyways, all blows have been delivered here, so carry on.

Just want to add that I use signal for most of my messaging (android and linux desktop) and would love to have basic markdown support. As many of the people I interact with are developers, as is myself, code blocks and inline code snippets would make a huge difference. I'm happy to help implement this feature as well.

While not having this support wouldn't make me stop using signal, I think it's something that could benefit everyone -- especially those migrating from other messaging apps that already do support markdown. First impressions are important.

I'd also love to see the support of ``` code quotes in Signal. Telegram supports it and it make shared code a lot more pleasant to read.

Coming from Matrix and Discord makes me miss this feature. Having it would definitely helpful in convincing others to use Signal :)

I'm seeing this being requested in various posts in the community since 2016 - I get that there are "more important features" being implemented, but after seeing stickers and other 'fluff' being added in, I'm surprised that this has yet to be done, especially since someone in this thread offered to implement it.

Inline styling support will help a lot in migrating people from WhatsApp. As things stand, the average user would consider this a limitation.

It has been confirmed that Signal is working on implementing this feature.

These things would really make the experience for my family and I complete

  • Support for backups and transfer on Android. Not manual, > but automatic like iOS
  • Support for ChromeOS via Android Tablet support
  • Support for simple markdown like bold, strike through etc.

signal_app: Great list, we鈥檙e working on all of these!

Source

Just was going to ask whether an external contributor may do that to get that feature finally in (as it would usually be with open source projects). But if they are already implementing it on their own, fine by me!

They've been super backlogged with the huge influx of users and @SRugina had been very busy with his main work. If you're qualified to take it on then I think you'd be able to get something together sooner than anyone else 馃憣

You can already do this with Unicode; cf. the Javascript-based YayText.com.

I switched from WhatsApp and Telegram to signal.
I really miss bold text and code blocks (discussion with a friend of mine who is also coding).
My daughter is not using Signal because "why using a messenger that is not even allowing bold text".
I would donate 20 Euro for this feature!

You can already do this with Unicode; cf. the Javascript-based YayText.com.

Thanks, this is a good workaround. But I would really appreciate it (20 euros) if Signal added Markdown support.

I really wonder, why such an important feature (under user perspective) is missing.
Do you cooperate with services like https://www.bountysource.com/
There users can donate for single GitHub issues and I already have donated for some other projects there.

I would like to be able to paste source code

Was this page helpful?
0 / 5 - 0 ratings