From 70d3fd809ea0c57fb16281e7330e49f5b657f44b Mon Sep 17 00:00:00 2001 From: Sorunome Date: Wed, 22 May 2019 14:46:31 +0200 Subject: [PATCH 01/11] add spoiler msc --- proposals/2010-spoilers.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 proposals/2010-spoilers.md diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md new file mode 100644 index 00000000000..bec895b7a55 --- /dev/null +++ b/proposals/2010-spoilers.md @@ -0,0 +1,25 @@ +# MSC 2010: Proposal to add client-side spoilers +Sometimes you are talking about e.g. a new movie and want to discuss the plot without spoiling others. Or you are talking in e.g. some mental health community where, due to triggers, some content shouldn't be immediately visible to everybody. For this the content is hidden and then revealed once interacted somehow (e.g. a click / hover). + +## Proposal +This proposal adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. + +For example: +`Hello there, the movie was awesome` for a spoiler without reason and `Hey the movie was awesome` for a spoiler with the reason "movie". + +The plain-text fallback could be rendered as `(Spoiler: )` and `(Spoiler for : )` respectively. + +For example: +`Hi there` would have as fallback `Hi (Spoiler: there)` +`Hi there` would have as fallback `Hi (Spoiler for greeting: there)` + +## Tradeoffs +Instead of making this an attribute, an entirely new tag could be introduced (e.g. ``), however that wouldn't be HTML-compliant. + +Instead of limiting the proposed `data-mx-spoiler` attribute only to the ``-tag it could be added to all tags, however it might make implementations for clients more complicated. + +## Potential issues +Depending on context it might make sense to put other events, such as `m.image`, into spoilers, too. This MSC doesn't address that at all. Using `` seems rather sub-optimal for that. + +## Security considerations +The spoiler reason needs to be properly escaped when rendered. From d750115fdc30ce29ed7281c24bbfff65fff0af95 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Wed, 22 May 2019 15:20:30 +0200 Subject: [PATCH 02/11] fix up some things --- proposals/2010-spoilers.md | 39 ++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index bec895b7a55..d47b058fa6e 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -1,25 +1,48 @@ # MSC 2010: Proposal to add client-side spoilers -Sometimes you are talking about e.g. a new movie and want to discuss the plot without spoiling others. Or you are talking in e.g. some mental health community where, due to triggers, some content shouldn't be immediately visible to everybody. For this the content is hidden and then revealed once interacted somehow (e.g. a click / hover). +Sometimes, while you want to put text into a spoiler to not have people accidentally read things that they don't want to see. +For example, when discussing a new movie or a TV series, not everyone might have watched it yet. In such cases it would make sense to add a spoiler so that only those who have seen the movie or don't mind spoilers read the content. +Another example would be e.g. in mental health communities where certain people have certain triggers. People could put talking about abuse or thelike into a spoiler, to not accidentally trigger anyone just reading along the conversation. +Furthermore this is helpful for bridging to other networks that already have a spoiler feature. -## Proposal -This proposal adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. +To render the spoiler the content is hidden and then revealed once interacted somehow (e.g. a click / hover). -For example: -`Hello there, the movie was awesome` for a spoiler without reason and `Hey the movie was awesome` for a spoiler with the reason "movie". +## Proposal +This proposal is about adding a new attribute to the `formatted_body` of messages with type `m.room.message` and msgtype `m.text`. +It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. The plain-text fallback could be rendered as `(Spoiler: )` and `(Spoiler for : )` respectively. -For example: -`Hi there` would have as fallback `Hi (Spoiler: there)` -`Hi there` would have as fallback `Hi (Spoiler for greeting: there)` +### Example +Without reason: +``` +{ + "msgtype": "m.text", + "format": "org.matrix.custom.html", + "body": "Hello there, the movie was (Spoiler: awesome)", + "formatted_body": "Hello there, the movie was awesome" +} +``` +With reason: +``` +{ + "msgtype": "m.text", + "format": "org.matrix.custom.html", + "body": "Hey (Spoiler for movie: the movie was awesome)", + "formatted_body": "Hey the movie was awesome" +} +``` ## Tradeoffs Instead of making this an attribute, an entirely new tag could be introduced (e.g. ``), however that wouldn't be HTML-compliant. Instead of limiting the proposed `data-mx-spoiler` attribute only to the ``-tag it could be added to all tags, however it might make implementations for clients more complicated. +Clients would have to come up with a way how to input spoilers. This could be done, for example, by adding a custom markdown tag (like discord does), so that you do `Text ||spoiler||`, however that doesn't take a spoiler reason into account. + ## Potential issues Depending on context it might make sense to put other events, such as `m.image`, into spoilers, too. This MSC doesn't address that at all. Using `` seems rather sub-optimal for that. +This MSC doesn't take HTML block elements into account. + ## Security considerations The spoiler reason needs to be properly escaped when rendered. From ebb1351a9f27bb335cebf6e2cd92deedcd0dabaf Mon Sep 17 00:00:00 2001 From: Sorunome Date: Wed, 22 May 2019 15:22:22 +0200 Subject: [PATCH 03/11] linebreak consistency --- proposals/2010-spoilers.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index d47b058fa6e..739bfe2ee6d 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -1,5 +1,6 @@ # MSC 2010: Proposal to add client-side spoilers -Sometimes, while you want to put text into a spoiler to not have people accidentally read things that they don't want to see. +Sometimes, while you want to put text into a spoiler to not have people accidentally read things that they don't want to see. + For example, when discussing a new movie or a TV series, not everyone might have watched it yet. In such cases it would make sense to add a spoiler so that only those who have seen the movie or don't mind spoilers read the content. Another example would be e.g. in mental health communities where certain people have certain triggers. People could put talking about abuse or thelike into a spoiler, to not accidentally trigger anyone just reading along the conversation. Furthermore this is helpful for bridging to other networks that already have a spoiler feature. @@ -7,7 +8,8 @@ Furthermore this is helpful for bridging to other networks that already have a s To render the spoiler the content is hidden and then revealed once interacted somehow (e.g. a click / hover). ## Proposal -This proposal is about adding a new attribute to the `formatted_body` of messages with type `m.room.message` and msgtype `m.text`. +This proposal is about adding a new attribute to the `formatted_body` of messages with type `m.room.message` and msgtype `m.text`. + It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. The plain-text fallback could be rendered as `(Spoiler: )` and `(Spoiler for : )` respectively. From 6f3bcb56d34364de1cc6d1c7dc1ad8ca281ef806 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Wed, 22 May 2019 15:35:32 +0200 Subject: [PATCH 04/11] add rendering idea --- proposals/2010-spoilers.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index 739bfe2ee6d..d4128de41cb 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -10,7 +10,9 @@ To render the spoiler the content is hidden and then revealed once interacted so ## Proposal This proposal is about adding a new attribute to the `formatted_body` of messages with type `m.room.message` and msgtype `m.text`. -It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. +It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. It could be rendered, for example, similar to this: + +![Spoiler rendering idea](https://user-images.githubusercontent.com/2433620/58178745-082c1480-7ca7-11e9-901b-13b147cfd157.png) The plain-text fallback could be rendered as `(Spoiler: )` and `(Spoiler for : )` respectively. From 273af2a2e0eb3351ad58bf39c1e2472a3c96881d Mon Sep 17 00:00:00 2001 From: Sorunome Date: Wed, 22 May 2019 17:30:18 +0200 Subject: [PATCH 05/11] wrap long lines --- proposals/2010-spoilers.md | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index d4128de41cb..366f4a3ebeb 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -1,20 +1,29 @@ # MSC 2010: Proposal to add client-side spoilers Sometimes, while you want to put text into a spoiler to not have people accidentally read things that they don't want to see. -For example, when discussing a new movie or a TV series, not everyone might have watched it yet. In such cases it would make sense to add a spoiler so that only those who have seen the movie or don't mind spoilers read the content. -Another example would be e.g. in mental health communities where certain people have certain triggers. People could put talking about abuse or thelike into a spoiler, to not accidentally trigger anyone just reading along the conversation. +For example, when discussing a new movie or a TV series, not everyone might have watched it yet. +In such cases it would make sense to add a spoiler so that only those who have seen the movie or +don't mind spoilers read the content. +Another example would be e.g. in mental health communities where certain people have certain +triggers. People could put talking about abuse or thelike into a spoiler, to not accidentally +trigger anyone just reading along the conversation. Furthermore this is helpful for bridging to other networks that already have a spoiler feature. -To render the spoiler the content is hidden and then revealed once interacted somehow (e.g. a click / hover). +To render the spoiler the content is hidden and then revealed once interacted somehow +(e.g. a click / hover). ## Proposal -This proposal is about adding a new attribute to the `formatted_body` of messages with type `m.room.message` and msgtype `m.text`. +This proposal is about adding a new attribute to the `formatted_body` of messages with type +`m.room.message` and msgtype `m.text`. -It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. It could be rendered, for example, similar to this: +It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribute is present the +contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for +the spoiler by setting the attribute string. It could be rendered, for example, similar to this: ![Spoiler rendering idea](https://user-images.githubusercontent.com/2433620/58178745-082c1480-7ca7-11e9-901b-13b147cfd157.png) -The plain-text fallback could be rendered as `(Spoiler: )` and `(Spoiler for : )` respectively. +The plain-text fallback could be rendered as `(Spoiler: )` and +`(Spoiler for : )` respectively. ### Example Without reason: @@ -37,14 +46,20 @@ With reason: ``` ## Tradeoffs -Instead of making this an attribute, an entirely new tag could be introduced (e.g. ``), however that wouldn't be HTML-compliant. +Instead of making this an attribute, an entirely new tag could be introduced (e.g. ``), +however that wouldn't be HTML-compliant. -Instead of limiting the proposed `data-mx-spoiler` attribute only to the ``-tag it could be added to all tags, however it might make implementations for clients more complicated. +Instead of limiting the proposed `data-mx-spoiler` attribute only to the ``-tag it could be +added to all tags, however it might make implementations for clients more complicated. -Clients would have to come up with a way how to input spoilers. This could be done, for example, by adding a custom markdown tag (like discord does), so that you do `Text ||spoiler||`, however that doesn't take a spoiler reason into account. +Clients would have to come up with a way how to input spoilers. This could be done, for example, +by adding a custom markdown tag (like discord does), so that you do `Text ||spoiler||`, however +that doesn't take a spoiler reason into account. ## Potential issues -Depending on context it might make sense to put other events, such as `m.image`, into spoilers, too. This MSC doesn't address that at all. Using `` seems rather sub-optimal for that. +Depending on context it might make sense to put other events, such as `m.image`, into spoilers, +too. This MSC doesn't address that at all. Using +`` seems rather sub-optimal for that. This MSC doesn't take HTML block elements into account. From 26349417ba01d5a28fc35faa9f66038a294c316a Mon Sep 17 00:00:00 2001 From: Sorunome Date: Tue, 11 Jun 2019 21:13:16 +0200 Subject: [PATCH 06/11] update spoiler render idea --- proposals/2010-spoilers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index 366f4a3ebeb..40feed29eaa 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -20,7 +20,7 @@ It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribut contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. It could be rendered, for example, similar to this: -![Spoiler rendering idea](https://user-images.githubusercontent.com/2433620/58178745-082c1480-7ca7-11e9-901b-13b147cfd157.png) +![Spoiler rendering idea](https://user-images.githubusercontent.com/2433620/59299700-95063480-8c8d-11e9-9348-3e2c8bc94bdc.gif) The plain-text fallback could be rendered as `(Spoiler: )` and `(Spoiler for : )` respectively. From 4f83cc1c244b78d9c34abde492116f4dcdae4047 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Tue, 25 Jun 2019 16:19:29 +0200 Subject: [PATCH 07/11] moved client spoiler conversion to potential issues --- proposals/2010-spoilers.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index 40feed29eaa..fc470fcce72 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -52,10 +52,6 @@ however that wouldn't be HTML-compliant. Instead of limiting the proposed `data-mx-spoiler` attribute only to the ``-tag it could be added to all tags, however it might make implementations for clients more complicated. -Clients would have to come up with a way how to input spoilers. This could be done, for example, -by adding a custom markdown tag (like discord does), so that you do `Text ||spoiler||`, however -that doesn't take a spoiler reason into account. - ## Potential issues Depending on context it might make sense to put other events, such as `m.image`, into spoilers, too. This MSC doesn't address that at all. Using @@ -63,5 +59,9 @@ too. This MSC doesn't address that at all. Using This MSC doesn't take HTML block elements into account. +Clients would have to come up with a way how to input spoilers. This could be done, for example, +by adding a custom markdown tag (like discord does), so that you do `Text ||spoiler||`, however +that doesn't take a spoiler reason into account. + ## Security considerations The spoiler reason needs to be properly escaped when rendered. From 6260871a21a00cd9959396c6ad07797fe526f089 Mon Sep 17 00:00:00 2001 From: Sorunome Date: Thu, 27 Jun 2019 13:07:08 +0200 Subject: [PATCH 08/11] spoiler fallback to uploaded media --- proposals/2010-spoilers.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index fc470fcce72..7b12807835c 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -22,8 +22,9 @@ the spoiler by setting the attribute string. It could be rendered, for example, ![Spoiler rendering idea](https://user-images.githubusercontent.com/2433620/59299700-95063480-8c8d-11e9-9348-3e2c8bc94bdc.gif) -The plain-text fallback could be rendered as `(Spoiler: )` and -`(Spoiler for : )` respectively. +To preserve the semantics of a spoiler in the plaintext fallback it is recommended to upload the contents of the spoiler +as a text file and then link this: `[Spoiler](mxc://someserver/somefile)` and +`[Spoiler for reason](mxc://someserver/somefile)` respectively. ### Example Without reason: @@ -32,7 +33,7 @@ Without reason: "msgtype": "m.text", "format": "org.matrix.custom.html", "body": "Hello there, the movie was (Spoiler: awesome)", - "formatted_body": "Hello there, the movie was awesome" + "formatted_body": "Hello there, the movie was [Spoiler](mxc://someserver/somefile)" } ``` With reason: @@ -41,7 +42,7 @@ With reason: "msgtype": "m.text", "format": "org.matrix.custom.html", "body": "Hey (Spoiler for movie: the movie was awesome)", - "formatted_body": "Hey the movie was awesome" + "formatted_body": "Hey [Spoiler for movie](mxc://someserver/somefile)" } ``` From 540aab82a18bc65aef87cd2b434231d5ce50578e Mon Sep 17 00:00:00 2001 From: Sorunome Date: Thu, 27 Jun 2019 13:09:15 +0200 Subject: [PATCH 09/11] accidentally formatted the wrong entry --- proposals/2010-spoilers.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index 7b12807835c..df7fd6c1fa7 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -32,8 +32,8 @@ Without reason: { "msgtype": "m.text", "format": "org.matrix.custom.html", - "body": "Hello there, the movie was (Spoiler: awesome)", - "formatted_body": "Hello there, the movie was [Spoiler](mxc://someserver/somefile)" + "body": "Hello there, the movie was [spoiler](mxc://someserver/somefile)", + "formatted_body": "Hello there, the movie was awesome" } ``` With reason: @@ -41,8 +41,8 @@ With reason: { "msgtype": "m.text", "format": "org.matrix.custom.html", - "body": "Hey (Spoiler for movie: the movie was awesome)", - "formatted_body": "Hey [Spoiler for movie](mxc://someserver/somefile)" + "body": "Hey [Spoiler for movie](mxc://someserver/somefile)", + "formatted_body": "Hey the movie was awesome" } ``` From 1f786ae6dc2f74069cd008fe69fc2b08ac8be3dc Mon Sep 17 00:00:00 2001 From: Sorunome Date: Mon, 15 Jul 2019 20:52:24 +0200 Subject: [PATCH 10/11] commit image into repo, fix typo --- proposals/2010-spoilers.md | 4 ++-- proposals/images/2010-spoiler-example.gif | Bin 0 -> 55001 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 proposals/images/2010-spoiler-example.gif diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index df7fd6c1fa7..cf969902adc 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -5,7 +5,7 @@ For example, when discussing a new movie or a TV series, not everyone might have In such cases it would make sense to add a spoiler so that only those who have seen the movie or don't mind spoilers read the content. Another example would be e.g. in mental health communities where certain people have certain -triggers. People could put talking about abuse or thelike into a spoiler, to not accidentally +triggers. People could put talking about abuse or the like into a spoiler, to not accidentally trigger anyone just reading along the conversation. Furthermore this is helpful for bridging to other networks that already have a spoiler feature. @@ -20,7 +20,7 @@ It adds a new attribute, `data-mx-spoiler`, to the `` tag. If the attribut contents of the span tag should be rendered as a spoiler. Optionally, you can specify a reason for the spoiler by setting the attribute string. It could be rendered, for example, similar to this: -![Spoiler rendering idea](https://user-images.githubusercontent.com/2433620/59299700-95063480-8c8d-11e9-9348-3e2c8bc94bdc.gif) +![Spoiler rendering idea](images/2010-spoiler-example.gif) To preserve the semantics of a spoiler in the plaintext fallback it is recommended to upload the contents of the spoiler as a text file and then link this: `[Spoiler](mxc://someserver/somefile)` and diff --git a/proposals/images/2010-spoiler-example.gif b/proposals/images/2010-spoiler-example.gif new file mode 100644 index 0000000000000000000000000000000000000000..3716bd7755940ea959cab8d162b90e365358a181 GIT binary patch literal 55001 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 literal 0 HcmV?d00001 From 9ebcff5758d43e18d4062334f873c678660eb54d Mon Sep 17 00:00:00 2001 From: Sorunome Date: Tue, 16 Jul 2019 17:11:07 +0200 Subject: [PATCH 11/11] fix typo, add section on html details element --- proposals/2010-spoilers.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/proposals/2010-spoilers.md b/proposals/2010-spoilers.md index cf969902adc..1d9f4dc9f11 100644 --- a/proposals/2010-spoilers.md +++ b/proposals/2010-spoilers.md @@ -53,6 +53,12 @@ however that wouldn't be HTML-compliant. Instead of limiting the proposed `data-mx-spoiler` attribute only to the ``-tag it could be added to all tags, however it might make implementations for clients more complicated. +Alternatively the [details](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) tag could +be used. This, however, is a block element, and the spoilers are span elements. Furthermore +semantically there is a slight difference: with the details tag you hide something for a person +as it uses up a lot of screen space, while with a spoiler you hide something as a person might not +want to see it. + ## Potential issues Depending on context it might make sense to put other events, such as `m.image`, into spoilers, too. This MSC doesn't address that at all. Using @@ -60,7 +66,7 @@ too. This MSC doesn't address that at all. Using This MSC doesn't take HTML block elements into account. -Clients would have to come up with a way how to input spoilers. This could be done, for example, +Clients would have to come up with a way to input spoilers. This could be done, for example, by adding a custom markdown tag (like discord does), so that you do `Text ||spoiler||`, however that doesn't take a spoiler reason into account.