From 8ba60710aa7b26a5313d29684f17e836e81c93dd Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 27 Feb 2020 23:30:01 +0000 Subject: [PATCH 01/49] Add blurhash MSC --- proposals/2448-blurhash-for-media.md | 54 ++++++++++++++++++++++++ proposals/images/2448-blurhash.png | Bin 0 -> 74833 bytes proposals/images/2448-current-state.png | Bin 0 -> 15377 bytes proposals/images/2448-loaded-image.png | Bin 0 -> 165219 bytes 4 files changed, 54 insertions(+) create mode 100644 proposals/2448-blurhash-for-media.md create mode 100644 proposals/images/2448-blurhash.png create mode 100644 proposals/images/2448-current-state.png create mode 100644 proposals/images/2448-loaded-image.png diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md new file mode 100644 index 00000000000..06de204ed18 --- /dev/null +++ b/proposals/2448-blurhash-for-media.md @@ -0,0 +1,54 @@ +# MSC2448: Using BlurHash in Media Events + +[BlurHash](https://blurha.sh) is a compact representation of a placeholder +for an image (or the frame of a video). Currently in Matrix, clients must +display a placeholder image in the message timeline while a piece of media is +loading. Some clients, such as Riot, simply display an empty space. + +While thumbnails exist to combat this to some degree, they still need to be +downloaded from a homeserver, which is not instantaneous. + +Instead, a blurhash can be sent inside the `m.room.message` event, which upon +receipt other clients can render for a pretty preview while the actual +thumbnail downloads. + +## Proposal + +A new field is added in `m.room.message`'s `content` called `blurhash`. It +is a BlurHash of the original piece of media. Clients could then render this +using [one of the available BlurHash +implementations](https://github.com/woltapp/blurhash). + +This would be displayed while the thumbnail of the media is loaded in parallel. + +This is beneficial as it's an extremely efficient way to give someone a quick +idea of what a piece of media contains before any requests are made to a +media repository. + +To be clear: This does not replace thumbnails - it will be shown before they +are downloaded. + +## Visualisation + +Viewing an image message that is loading: + +![blurhashed preview](images/2448-blurhash.png) + +Once the image loads: + +![the image has loaded](images/2448-loaded-image.png) + +For reference, the current state of things in Riot is: + +![boo, sad](images/2448-current-state.png) + +## Alternatives + +We could include a base64 thumbnail of the image in the event, but blurhash +produces much more efficient textual representations. + +## Backwards compatibility + +Older clients would ignore the new `blurhash` parameter. + +Newer clients would only show it if it exists. diff --git a/proposals/images/2448-blurhash.png b/proposals/images/2448-blurhash.png new file mode 100644 index 0000000000000000000000000000000000000000..5136884fcb473859fe94d920d14c07ce4b715f00 GIT binary patch literal 74833 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%0Af>vV0?Ib~=pqODaL#)`XA zmc@EZx}cLqh9is5eZ=}i_pzHzZ|R;XN%LyxcL!@ms>2jmJ)Q&+^vxz|S}Hhb&hc3Y zq~o}u8w>nUl=btI1mNHqzW<~r7ErJV+%Q`V9!kf#B_LK89}8%Qo<#Zcc+*F8xJXQoRSZHDO!(!!x%(1Bh?Gu$0Lbl1A}fu_()@x7AY} zWO$`VH`JRnFqqV<;kJDn3DJ6Ju>L%E<2L&^SveQVP+Zp`viH%_nnlOoG4J(!2kaMVa1g{ literal 0 HcmV?d00001 diff --git a/proposals/images/2448-loaded-image.png b/proposals/images/2448-loaded-image.png new file mode 100644 index 0000000000000000000000000000000000000000..fc4656364fe590b8dd7ed9c2abdd01793335d05e GIT binary patch literal 165219 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
~=O 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 Date: Thu, 27 Feb 2020 23:36:17 +0000 Subject: [PATCH 02/49] some cleanup --- proposals/2448-blurhash-for-media.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 06de204ed18..054e0bdc17b 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -14,9 +14,9 @@ thumbnail downloads. ## Proposal -A new field is added in `m.room.message`'s `content` called `blurhash`. It -is a BlurHash of the original piece of media. Clients could then render this -using [one of the available BlurHash +A new field is added in `m.room.message`'s content field called `blurhash`. +It is a BlurHash of the original piece of media. Clients could then render +this using [one of the available BlurHash implementations](https://github.com/woltapp/blurhash). This would be displayed while the thumbnail of the media is loaded in parallel. From 8adf2b204ef09411f4f1df81f56c81fcdf37a5cc Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 11:16:26 +0000 Subject: [PATCH 03/49] Add blurhash to img tag, make things optional, /upload mod --- proposals/2448-blurhash-for-media.md | 79 +++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 054e0bdc17b..2348ee9e315 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -14,20 +14,83 @@ thumbnail downloads. ## Proposal -A new field is added in `m.room.message`'s content field called `blurhash`. -It is a BlurHash of the original piece of media. Clients could then render -this using [one of the available BlurHash -implementations](https://github.com/woltapp/blurhash). +### m.room.message -This would be displayed while the thumbnail of the media is loaded in parallel. +A new optional field is added in `m.room.message`'s content field called +`blurhash`. It is a BlurHash of the original piece of media. Clients could +then render this using [one of the available BlurHash +implementations](https://github.com/woltapp/blurhash). -This is beneficial as it's an extremely efficient way to give someone a quick -idea of what a piece of media contains before any requests are made to a -media repository. +This would be optionally displayed while the thumbnail of the media is loaded +in parallel. + +Example `m.room.message` content field: + +``` +{ + "body": "image.png", + "info": { + "size": 149234, + "mimetype": "image/png", + "thumbnail_info": { + "w": 301, + "h": 193, + "mimetype": "image/png", + "size": 172958 + }, + "w": 301, + "h": 193, + "thumbnail_url": "mxc://example.org/abcdefg" + }, + "msgtype": "m.image", + "url": "mxc://example.org/abcde", + "blurhash": "JadR*.7kCMdnj" +} +``` + +### Inline images + +An optional attribute is added to `` tags in messages: `blurhash`, where +the value of the attribute is the blurhash representation of the inline +image. + +This would be optionally displayed with the inline image itself is loaded in parallel. + +Example `m.room.message.formatted_body`: + +``` +"formatted_body": This is awesome \"flutterjoy\" +``` + +Note that a BlurHash representation is really only applicable to media, and +as such should only be used in conjunction with the following +`m.room.message` msgtypes: + +* `m.image` +* `m.video` To be clear: This does not replace thumbnails - it will be shown before they are downloaded. +## Calculating a blurhash + +BlurHashes are inserted into `m.room.message` events by the client, however +some clients may not be able to implement the BlurHash library for whatever +reason. In this case, it would be nice to allow the media repository to +calculate the BlurHash of a piece of media for the client, similar to how +thumbnails are calculated by media repositories today. + +The [`/_matrix/media/r0/upload`](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-media-r0-upload) endpoint response is modified to include an optional `blurhash` parameter, which the client may use to insert into messages if desired: + +Example response: + +``` +{ + "content_uri": "mxc://example.com/abcde123", + "blurhash": "LKO2?U%2Tw=w]~RB" +} +``` + ## Visualisation Viewing an image message that is loading: From 56703fcb82873736ee7ae4d116ba9cece23ecab2 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 13:40:55 +0000 Subject: [PATCH 04/49] unstable prefixes, no encoding needed --- proposals/2448-blurhash-for-media.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 2348ee9e315..9677f21da23 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -8,9 +8,10 @@ loading. Some clients, such as Riot, simply display an empty space. While thumbnails exist to combat this to some degree, they still need to be downloaded from a homeserver, which is not instantaneous. -Instead, a blurhash can be sent inside the `m.room.message` event, which upon +Instead, a BlurHash can be sent inside the `m.room.message` event, which upon receipt other clients can render for a pretty preview while the actual -thumbnail downloads. +thumbnail downloads. They also do not contain any `"` characters, making them +simple to stick inside existing JSON blobs. ## Proposal @@ -50,8 +51,8 @@ Example `m.room.message` content field: ### Inline images -An optional attribute is added to `` tags in messages: `blurhash`, where -the value of the attribute is the blurhash representation of the inline +An optional attribute is added to `` tags in messages: `data-blurhash`, +where the value of the attribute is the blurhash representation of the inline image. This would be optionally displayed with the inline image itself is loaded in parallel. @@ -59,7 +60,7 @@ This would be optionally displayed with the inline image itself is loaded in par Example `m.room.message.formatted_body`: ``` -"formatted_body": This is awesome \"flutterjoy\" +"formatted_body": This is awesome \"flutterjoy\" ``` Note that a BlurHash representation is really only applicable to media, and @@ -80,7 +81,10 @@ reason. In this case, it would be nice to allow the media repository to calculate the BlurHash of a piece of media for the client, similar to how thumbnails are calculated by media repositories today. -The [`/_matrix/media/r0/upload`](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-media-r0-upload) endpoint response is modified to include an optional `blurhash` parameter, which the client may use to insert into messages if desired: +The +[`/_matrix/media/r0/upload`](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-media-r0-upload) +endpoint response is modified to include an optional `blurhash` key, +which the client may use to insert into messages if desired: Example response: @@ -115,3 +119,13 @@ produces much more efficient textual representations. Older clients would ignore the new `blurhash` parameter. Newer clients would only show it if it exists. + +## Unstable prefixes + +Implementations wishing to add this before this MSC is merged can do so with the following: + +The `blurhash` key in `m.room.message` should be replaced with `xyz.amorgan.blurhash`. + +The `blurhash` key in `/_matrix/media/r0/upload`s response should be replaced with `xyz.amorgan.blurhash`. + +The `data-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. From 793107dcbb3c35a6bb5242e5190f297bf0ac8bd5 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 16:59:44 +0000 Subject: [PATCH 05/49] Move m.r.m msgtype into the m.r.m section --- proposals/2448-blurhash-for-media.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 9677f21da23..6bec2f78fb2 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -49,6 +49,13 @@ Example `m.room.message` content field: } ``` +Note that a BlurHash representation is really only applicable to media, and +as such should only be used in conjunction with the following +`m.room.message` msgtypes: + +* `m.image` +* `m.video` + ### Inline images An optional attribute is added to `` tags in messages: `data-blurhash`, @@ -63,13 +70,6 @@ Example `m.room.message.formatted_body`: "formatted_body": This is awesome \"flutterjoy\" ``` -Note that a BlurHash representation is really only applicable to media, and -as such should only be used in conjunction with the following -`m.room.message` msgtypes: - -* `m.image` -* `m.video` - To be clear: This does not replace thumbnails - it will be shown before they are downloaded. From 777c30ca8c14e9003c2b1e493c7007be519cc7ba Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 17:00:26 +0000 Subject: [PATCH 06/49] hm --- proposals/2448-blurhash-for-media.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 6bec2f78fb2..3fada02cc67 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -37,7 +37,7 @@ Example `m.room.message` content field: "w": 301, "h": 193, "mimetype": "image/png", - "size": 172958 + "size": 72958 }, "w": 301, "h": 193, From b80822e0cc82222c49666187dad67beb9690ea90 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 17:01:57 +0000 Subject: [PATCH 07/49] data-mx-blurhash --- proposals/2448-blurhash-for-media.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 3fada02cc67..25e9645d041 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -58,11 +58,12 @@ as such should only be used in conjunction with the following ### Inline images -An optional attribute is added to `` tags in messages: `data-blurhash`, -where the value of the attribute is the blurhash representation of the inline -image. +An optional attribute is added to `` tags in messages: +`data-mx-blurhash`, where the value of the attribute is the blurhash +representation of the inline image. -This would be optionally displayed with the inline image itself is loaded in parallel. +This would be optionally displayed with the inline image itself is loaded in +parallel. Example `m.room.message.formatted_body`: @@ -122,10 +123,14 @@ Newer clients would only show it if it exists. ## Unstable prefixes -Implementations wishing to add this before this MSC is merged can do so with the following: +Implementations wishing to add this before this MSC is merged can do so with +the following: -The `blurhash` key in `m.room.message` should be replaced with `xyz.amorgan.blurhash`. +The `blurhash` key in `m.room.message` should be replaced with +`xyz.amorgan.blurhash`. -The `blurhash` key in `/_matrix/media/r0/upload`s response should be replaced with `xyz.amorgan.blurhash`. +The `blurhash` key in `/_matrix/media/r0/upload`s response should be replaced +with `xyz.amorgan.blurhash`. -The `data-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. +The `data-mx-blurhash` attribute in `` tags should be replaced with +`data-xyz-amorgan-blurhash`. From b240d9206063c6f0a8db5730fce65a163ab5a67b Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 18:05:04 +0000 Subject: [PATCH 08/49] Must HTML encode, link to blurhash algo description --- proposals/2448-blurhash-for-media.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 25e9645d041..eb3660119ae 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -71,6 +71,9 @@ Example `m.room.message.formatted_body`: "formatted_body": This is awesome \"flutterjoy\" ``` +Note that that the blurhash MUST be HTML-encoded here to comply with HTML +standards. + To be clear: This does not replace thumbnails - it will be shown before they are downloaded. @@ -134,3 +137,9 @@ with `xyz.amorgan.blurhash`. The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. + +## Links + +BlurHash's algorithm description can be found +[here](https://github.com/woltapp/blurhash/blob/master/Algorithm.md), which +also includes the full output character set. From 1afad016544a1fbbd5cfa934a4f7aca0266814a8 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 18:08:29 +0000 Subject: [PATCH 09/49] New endpoint, not new key on existing endpoint --- proposals/2448-blurhash-for-media.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index eb3660119ae..9f4bac0ef24 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -132,8 +132,9 @@ the following: The `blurhash` key in `m.room.message` should be replaced with `xyz.amorgan.blurhash`. -The `blurhash` key in `/_matrix/media/r0/upload`s response should be replaced -with `xyz.amorgan.blurhash`. +`/_matrix/media/r0/upload` should be replaced with +`/_matrix/media/unstable/xyz.amorgan/upload`, which keeps the same `blurhash` +response key. The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. From 60773e4443b96740f6ecc91d324c9deb8fdabb28 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 18:14:07 +0000 Subject: [PATCH 10/49] No HTML encoding warning --- proposals/2448-blurhash-for-media.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 9f4bac0ef24..0ac2835e5b4 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -71,9 +71,6 @@ Example `m.room.message.formatted_body`: "formatted_body": This is awesome \"flutterjoy\" ``` -Note that that the blurhash MUST be HTML-encoded here to comply with HTML -standards. - To be clear: This does not replace thumbnails - it will be shown before they are downloaded. From df5b6d7260a9d70890efe5234c6a326afc666f4a Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 28 Feb 2020 18:19:37 +0000 Subject: [PATCH 11/49] Straight mxc->blurhash endpoint --- proposals/2448-blurhash-for-media.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 0ac2835e5b4..7b2cc4a490d 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -96,6 +96,25 @@ Example response: } ``` +In addition, a new endpoint will be added to the Media API that allows a +client with an existing mxc URL to retrieve a blurhash for it from the +server. It will take the form of `GET +/_matrix/media/r0/download/{serverName}/{mediaId}/blurhash`. + +Example request: + +``` +GET /_matrix/media/r0/download/example.com/abcde12345/blurhash +``` + +Example response: + +``` +{ + "blurhash": "LEHV6nWB2yk8pyo" +} +``` + ## Visualisation Viewing an image message that is loading: @@ -133,6 +152,10 @@ The `blurhash` key in `m.room.message` should be replaced with `/_matrix/media/unstable/xyz.amorgan/upload`, which keeps the same `blurhash` response key. +`/_matrix/media/r0/download/{serverName}/{mediaId}/blurhash` should be +replaced with +`/_matrix/media/unstable/xyz.amorgan/download/{serverName}/{mediaId}/blurhash`. + The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. From 571ce2aeefbf1144089534aa41e36a82a17b408e Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 3 Mar 2020 11:09:21 +0000 Subject: [PATCH 12/49] Unstable feature flag --- proposals/2448-blurhash-for-media.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 7b2cc4a490d..a36d0a368a4 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -99,7 +99,7 @@ Example response: In addition, a new endpoint will be added to the Media API that allows a client with an existing mxc URL to retrieve a blurhash for it from the server. It will take the form of `GET -/_matrix/media/r0/download/{serverName}/{mediaId}/blurhash`. +/_matrix/media/r0/blurhash/{serverName}/{mediaId}`. Example request: @@ -152,13 +152,17 @@ The `blurhash` key in `m.room.message` should be replaced with `/_matrix/media/unstable/xyz.amorgan/upload`, which keeps the same `blurhash` response key. -`/_matrix/media/r0/download/{serverName}/{mediaId}/blurhash` should be +`/_matrix/media/r0/blurhash/{serverName}/{mediaId}` should be replaced with -`/_matrix/media/unstable/xyz.amorgan/download/{serverName}/{mediaId}/blurhash`. +`/_matrix/media/unstable/xyz.amorgan/blurhash/{serverName}/{mediaId}`. The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. +And finally, an entry should be added to the homeserver's `GET +/_matrix/client/versions` endpoint, in `unstable_features`, with the key +`xyz.amorgan.blurhash` set to `true`. + ## Links BlurHash's algorithm description can be found From e885eae98a759a773b4816219eba6b1f968d0e2b Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 3 Mar 2020 11:13:29 +0000 Subject: [PATCH 13/49] blurhash in "info", download->blurhash --- proposals/2448-blurhash-for-media.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 7b2cc4a490d..68e45fdda9d 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -13,6 +13,9 @@ receipt other clients can render for a pretty preview while the actual thumbnail downloads. They also do not contain any `"` characters, making them simple to stick inside existing JSON blobs. +To be clear: A BlurHash does not replace a thumbnail - it will be shown +before the thumbnail is downloaded. + ## Proposal ### m.room.message @@ -41,11 +44,11 @@ Example `m.room.message` content field: }, "w": 301, "h": 193, - "thumbnail_url": "mxc://example.org/abcdefg" + "thumbnail_url": "mxc://example.org/abcdefg", + "blurhash": "JadR*.7kCMdnj" }, "msgtype": "m.image", "url": "mxc://example.org/abcde", - "blurhash": "JadR*.7kCMdnj" } ``` @@ -62,7 +65,7 @@ An optional attribute is added to `` tags in messages: `data-mx-blurhash`, where the value of the attribute is the blurhash representation of the inline image. -This would be optionally displayed with the inline image itself is loaded in +This would be optionally displayed while the inline image itself is loaded in parallel. Example `m.room.message.formatted_body`: @@ -71,9 +74,6 @@ Example `m.room.message.formatted_body`: "formatted_body": This is awesome \"flutterjoy\" ``` -To be clear: This does not replace thumbnails - it will be shown before they -are downloaded. - ## Calculating a blurhash BlurHashes are inserted into `m.room.message` events by the client, however @@ -99,12 +99,12 @@ Example response: In addition, a new endpoint will be added to the Media API that allows a client with an existing mxc URL to retrieve a blurhash for it from the server. It will take the form of `GET -/_matrix/media/r0/download/{serverName}/{mediaId}/blurhash`. +/_matrix/media/r0/blurhash/{serverName}/{mediaId}`. Example request: ``` -GET /_matrix/media/r0/download/example.com/abcde12345/blurhash +GET /_matrix/media/r0/blurhash/example.com/abcde12345 ``` Example response: From b893c21428d6c709acdfc76f8afa4964c0733bac Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 3 Mar 2020 11:31:07 +0000 Subject: [PATCH 14/49] Get an image from a blurhash, get a blurhash from an MXC url --- proposals/2448-blurhash-for-media.md | 31 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index a36d0a368a4..2e8d11c1ffb 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -96,25 +96,40 @@ Example response: } ``` -In addition, a new endpoint will be added to the Media API that allows a -client with an existing mxc URL to retrieve a blurhash for it from the -server. It will take the form of `GET -/_matrix/media/r0/blurhash/{serverName}/{mediaId}`. +A server MUST also be able to render a BlurHash image from a BlurHash string. +This is to support clients that do not have a BlurHash client implementation +or are otherwise unable to do so themselves. + +This takes the form of a new endpoint, `GET +/_matrix/media/r0/blurhash/{encodedBlurHash}`. This endpoint supports the following query parameters: + +* `width` - The width in pixels of the returned BlurHash image +* `height` - The height in pixels of the returned BlurHash image + +Note that implementations should be careful to limit the size of accepted +BlurHash strings, as not to overload the server with processing an obscenely +long string. If this is the case, the server should return a `400 +M_TOO_LARGE`. Example request: ``` -GET /_matrix/media/r0/download/example.com/abcde12345/blurhash +GET /_matrix/media/r0/blurhash/LG.F5%5D%3B%2BYk%5E6%23%25*%2B%2CK-%3A9%3D%3F%40%5B + +{} ``` Example response: ``` -{ - "blurhash": "LEHV6nWB2yk8pyo" -} + ``` +In addition, the server can return the BlurHash string for an image when +given an MXC URL. This would be through something like the Media Information +API (specified in +[MSC2380](https://github.com/matrix-org/matrix-doc/pull/2380)), or similar. + ## Visualisation Viewing an image message that is loading: From 3695ecf2ffb4cca82e0f410bbaa991ab6a01a78a Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 3 Mar 2020 21:42:06 +0000 Subject: [PATCH 15/49] No GET body --- proposals/2448-blurhash-for-media.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 00b2873f0b2..8eafbee4aa7 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -115,8 +115,6 @@ Example request: ``` GET /_matrix/media/r0/blurhash/LG.F5%5D%3B%2BYk%5E6%23%25*%2B%2CK-%3A9%3D%3F%40%5B - -{} ``` Example response: From 842c2a0ad103f6fe690f85be6c4495e5fa73998b Mon Sep 17 00:00:00 2001 From: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> Date: Fri, 3 Apr 2020 17:20:30 +0100 Subject: [PATCH 16/49] Update proposals/2448-blurhash-for-media.md Co-Authored-By: Sorunome --- proposals/2448-blurhash-for-media.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 8eafbee4aa7..9497a048c97 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -71,7 +71,7 @@ parallel. Example `m.room.message.formatted_body`: ``` -"formatted_body": This is awesome \"flutterjoy\" +"formatted_body": This is awesome \"flutterjoy\" ``` ## Calculating a blurhash From 3994010a9d11c23016baf181d1e8cc34ddaded5a Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 18 Aug 2020 16:49:19 +0100 Subject: [PATCH 17/49] Explicitly state blurhashes are not exempt from encryption --- proposals/2448-blurhash-for-media.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 9497a048c97..6613f9a0078 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -176,6 +176,12 @@ And finally, an entry should be added to the homeserver's `GET /_matrix/client/versions` endpoint, in `unstable_features`, with the key `xyz.amorgan.blurhash` set to `true`. +## Security considerations + +Blurhash entries in encrypted events, be it as part of the `info` property, +or `` tags, should be encrypted along with the rest of the event +content. + ## Links BlurHash's algorithm description can be found From 616bc81eab36175ed213fe74aa73468f1d996d40 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 18 Aug 2020 16:52:07 +0100 Subject: [PATCH 18/49] /upload -> xyz.amorgan.blurhash instead --- proposals/2448-blurhash-for-media.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 6613f9a0078..b9ac932af85 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -161,9 +161,9 @@ the following: The `blurhash` key in `m.room.message` should be replaced with `xyz.amorgan.blurhash`. -`/_matrix/media/r0/upload` should be replaced with -`/_matrix/media/unstable/xyz.amorgan/upload`, which keeps the same `blurhash` -response key. +`/_matrix/media/r0/upload` should return a `xyz.amorgan.blurhash` key +containing the blurhash instead of `blurhash`. This is preferred to adding +another endpoint, which is messier to later remove. `/_matrix/media/r0/blurhash/{serverName}/{mediaId}` should be replaced with From e0a74423f51cf9e5b9878842592ef4945514b09b Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 17:32:40 +0000 Subject: [PATCH 19/49] Add blurhashes to URL previews --- proposals/2448-blurhash-for-media.md | 29 +++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index b9ac932af85..d317f96413e 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -30,7 +30,7 @@ in parallel. Example `m.room.message` content field: -``` +```json { "body": "image.png", "info": { @@ -59,6 +59,33 @@ as such should only be used in conjunction with the following * `m.image` * `m.video` +### URL previews + +An optional attribute is added to the OpenGraph data returned by a call +to +[`GET /_matrix/media/r0/preview_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-media-r0-preview-url) +called `matrix:image:blurhash`. The value +of this attribute is the blurhash representation of the media specified +by `og:image`. + +Note that `matrix:image:blurhash` MUST NOT be returned if `og:image` is omitted +in the response. + +Example response to `GET /_matrix/media/r0/preview_url`: + +```json +{ + "og:title": "Matrix Blog Post", + "og:description": "This is a really cool blog post from matrix.org", + "og:image": "mxc://example.com/ascERGshawAWawugaAcauga", + "og:image:type": "image/png", + "og:image:height": 48, + "og:image:width": 48, + "matrix:image:size": 102400, + "matrix:image:blurhash": "oyp8ky2BWn7VHEL" +} +``` + ### Inline images An optional attribute is added to `` tags in messages: From 385be8a83e8945e94147c6c00700fffb8e401986 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 17:50:45 +0000 Subject: [PATCH 20/49] Clarify that 'blurhash' should go in content.info --- proposals/2448-blurhash-for-media.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index d317f96413e..fb976586d9b 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -20,7 +20,7 @@ before the thumbnail is downloaded. ### m.room.message -A new optional field is added in `m.room.message`'s content field called +A new optional field is added in `m.room.message`'s `content.info` dictionary called `blurhash`. It is a BlurHash of the original piece of media. Clients could then render this using [one of the available BlurHash implementations](https://github.com/woltapp/blurhash). @@ -28,7 +28,7 @@ implementations](https://github.com/woltapp/blurhash). This would be optionally displayed while the thumbnail of the media is loaded in parallel. -Example `m.room.message` content field: +Example `m.room.message` content: ```json { From 708b75638c21efe3f2d343c7dfb8e48061d0996f Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 17:53:38 +0000 Subject: [PATCH 21/49] formatting --- proposals/2448-blurhash-for-media.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index fb976586d9b..39ab2a5754e 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -20,9 +20,9 @@ before the thumbnail is downloaded. ### m.room.message -A new optional field is added in `m.room.message`'s `content.info` dictionary called -`blurhash`. It is a BlurHash of the original piece of media. Clients could -then render this using [one of the available BlurHash +A optional field is added in `m.room.message`'s `content.info` dictionary +with the key `blurhash`. It is a BlurHash of the original piece of media. +Clients could then render this using [one of the available BlurHash implementations](https://github.com/woltapp/blurhash). This would be optionally displayed while the thumbnail of the media is loaded From b761b069ab060c334319df60f841346db03edb25 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 18:20:28 +0000 Subject: [PATCH 22/49] Add blurhash to m.sticker events --- proposals/2448-blurhash-for-media.md | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 39ab2a5754e..0001722c77a 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -59,6 +59,35 @@ as such should only be used in conjunction with the following * `m.image` * `m.video` +### m.sticker + +An optional field is added to `m.sticker`'s `content.info` dictionary with +the key `blurhash`. It's value is a BlurHash of the sticker media. + +Example `m.sticker` content: + +```json +{ + "body": "Landing", + "info": { + "h": 200, + "mimetype": "image/png", + "size": 73602, + "thumbnail_info": { + "h": 200, + "mimetype": "image/png", + "size": 73602, + "w": 140 + }, + "thumbnail_url": "mxc://matrix.org/sHhqkFCvSkFwtmvtETOtKnLP", + "w": 140, + "blurhash": "JadR*.7kCMdnj" + }, + "url": "mxc://matrix.org/sHhqkFCvSkFwtmvtETOtKnLP" +} +``` + + ### URL previews An optional attribute is added to the OpenGraph data returned by a call From 40d71ff4a229826da3b3621f1c0dad35a82fbd43 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 18:51:34 +0000 Subject: [PATCH 23/49] Add m.room.member --- proposals/2448-blurhash-for-media.md | 30 ++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 0001722c77a..221c4f36eea 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -62,7 +62,7 @@ as such should only be used in conjunction with the following ### m.sticker An optional field is added to `m.sticker`'s `content.info` dictionary with -the key `blurhash`. It's value is a BlurHash of the sticker media. +the key `blurhash`. Its value is a BlurHash of the sticker media. Example `m.sticker` content: @@ -87,6 +87,24 @@ Example `m.sticker` content: } ``` +### m.room.member + +An optional field is added to `m.room.member`'s `content` dictionary with +the key `blurhash`. Its value is a BlurHash of the media that is pointed +to by `avatar_url`. + +Note that `blurhash` SHOULD be omitted if `avatar_url` is not present. + +Example `m.room.member` event content: + +```json +{ + "avatar_url": "mxc://example.org/SEsfnsuifSDFSSEF", + "displayname": "Alice Margatroid", + "membership": "join", + "blurhash": "JadR*.7kCMdnj" +} +``` ### URL previews @@ -97,7 +115,7 @@ called `matrix:image:blurhash`. The value of this attribute is the blurhash representation of the media specified by `og:image`. -Note that `matrix:image:blurhash` MUST NOT be returned if `og:image` is omitted +Note that `matrix:image:blurhash` MUST be omitted if `og:image` is not present in the response. Example response to `GET /_matrix/media/r0/preview_url`: @@ -209,6 +227,14 @@ Older clients would ignore the new `blurhash` parameter. Newer clients would only show it if it exists. +Users who have not specified `blurhash` in the `m.room.member` event yet may +stand out from users who have while both are loading. This is entirely up to +clients to handle, though a suggestion may be to "fake" a blurhash by +blurring some placeholder image (perhaps something with variation between +users like Element's coloured backgrounds with letters in them, or [an +identicon](https://en.wikipedia.org/wiki/Identicon) derived from the user's +ID) until the user's actual avatar loads. + ## Unstable prefixes Implementations wishing to add this before this MSC is merged can do so with From 7f131843383fc0c1126bb6ac4320d3558b2d6b72 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 18:54:21 +0000 Subject: [PATCH 24/49] Add m.room.avatar --- proposals/2448-blurhash-for-media.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 221c4f36eea..9aa7f17a3a1 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -106,6 +106,24 @@ Example `m.room.member` event content: } ``` +### m.room.avatar + +Much like `m.room.member`, room avatars should have blurhashes as well. This +will be especially useful when viewing a server's Public Rooms directory. + +An optional field is added to `m.room.avatar`'s `content` dictionary with the +key `blurhash`. Its value is a BlurHash of the media that is pointed to by +`url`. + +Example `m.room.avatar` content: + +```json +{ + "url": "mxc://amorgan.xyz/a59ee02f180677d83d1b57d366127f8e1afdd4ed", + "blurhash": "JadR*.7kCMdnj" +} +``` + ### URL previews An optional attribute is added to the OpenGraph data returned by a call From 1300a6e281f4547f28a6b2c57da0d22b4bda7b41 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 18:58:00 +0000 Subject: [PATCH 25/49] Update unstable prefixes section for new event types --- proposals/2448-blurhash-for-media.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 9aa7f17a3a1..729fa5cfe61 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -258,8 +258,8 @@ ID) until the user's actual avatar loads. Implementations wishing to add this before this MSC is merged can do so with the following: -The `blurhash` key in `m.room.message` should be replaced with -`xyz.amorgan.blurhash`. +The `blurhash` key in `m.room.message`, `m.room.avatar`, `m.sticker` and +`m.room.member` should be replaced with `xyz.amorgan.blurhash`. `/_matrix/media/r0/upload` should return a `xyz.amorgan.blurhash` key containing the blurhash instead of `blurhash`. This is preferred to adding From 2a02d2c78cdb237ffbbcc8561edfadcedce8bef7 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:29:50 +0000 Subject: [PATCH 26/49] Specify endpoints that will need to be modified to support avatar blurhashes --- proposals/2448-blurhash-for-media.md | 49 +++++++++++++++++++--------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 729fa5cfe61..640a78850e6 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -87,8 +87,30 @@ Example `m.sticker` content: } ``` +### m.room.avatar + +Room avatars having BlurHashes available will be especially useful when +viewing a server's Public Rooms directory. + +An optional field is added to `m.room.avatar`'s `content` dictionary with the +key `blurhash`. Its value is a BlurHash of the media that is pointed to by +`url`. + +Example `m.room.avatar` content: + +```json +{ + "url": "mxc://amorgan.xyz/a59ee02f180677d83d1b57d366127f8e1afdd4ed", + "blurhash": "JadR*.7kCMdnj" +} +``` + ### m.room.member +Much like room avatars, user avatars can have BlurHashes as well. There is a +little more required to implement this, but the outcome of no longer having +missing avatars upon opening a room is worthwhile. + An optional field is added to `m.room.member`'s `content` dictionary with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by `avatar_url`. @@ -106,23 +128,18 @@ Example `m.room.member` event content: } ``` -### m.room.avatar - -Much like `m.room.member`, room avatars should have blurhashes as well. This -will be especially useful when viewing a server's Public Rooms directory. +### Profile endpoints -An optional field is added to `m.room.avatar`'s `content` dictionary with the -key `blurhash`. Its value is a BlurHash of the media that is pointed to by -`url`. +Endpoints that return profile information, and thus MXC URLs to user avatars, are +extended to optionally include BlurHashes as well. -Example `m.room.avatar` content: +[`GET /_matrix/client/r0/profile/{userId}`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid) has an optional field added with +the key `blurhash`. Its value is a BlurHash of the media that is pointed to +by `avatar_url`. `blurhash` MUST be omitted if `avatar_url` is not present. +The same applies to [`GET /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid-avatar-url), and to the federation endpoint [`GET /_matrix/federation/v1/query/profile`](https://matrix.org/docs/spec/server_server/r0.1.4#get-matrix-federation-v1-query-profile). -```json -{ - "url": "mxc://amorgan.xyz/a59ee02f180677d83d1b57d366127f8e1afdd4ed", - "blurhash": "JadR*.7kCMdnj" -} -``` +[`PUT /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-profile-userid-avatar-url) has an optional field added +to the request body with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by the value of the `avatar_url` field in the same request. ### URL previews @@ -258,8 +275,8 @@ ID) until the user's actual avatar loads. Implementations wishing to add this before this MSC is merged can do so with the following: -The `blurhash` key in `m.room.message`, `m.room.avatar`, `m.sticker` and -`m.room.member` should be replaced with `xyz.amorgan.blurhash`. +The `blurhash` key in any events, request or response bodies should be +replaced with `xyz.amorgan.blurhash`. `/_matrix/media/r0/upload` should return a `xyz.amorgan.blurhash` key containing the blurhash instead of `blurhash`. This is preferred to adding From 7ea82b4c58362d01649fd815804baef9778b9c47 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:31:53 +0000 Subject: [PATCH 27/49] Remove the controversial /_matrix/media/r0/blurhash endpoint --- proposals/2448-blurhash-for-media.md | 31 ---------------------------- 1 file changed, 31 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 640a78850e6..29b97704da0 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -205,33 +205,6 @@ Example response: } ``` -A server MUST also be able to render a BlurHash image from a BlurHash string. -This is to support clients that do not have a BlurHash client implementation -or are otherwise unable to do so themselves. - -This takes the form of a new endpoint, `GET -/_matrix/media/r0/blurhash/{encodedBlurHash}`. This endpoint supports the following query parameters: - -* `width` - The width in pixels of the returned BlurHash image -* `height` - The height in pixels of the returned BlurHash image - -Note that implementations should be careful to limit the size of accepted -BlurHash strings, as not to overload the server with processing an obscenely -long string. If this is the case, the server should return a `400 -M_TOO_LARGE`. - -Example request: - -``` -GET /_matrix/media/r0/blurhash/LG.F5%5D%3B%2BYk%5E6%23%25*%2B%2CK-%3A9%3D%3F%40%5B -``` - -Example response: - -``` - -``` - In addition, the server can return the BlurHash string for an image when given an MXC URL. This would be through something like the Media Information API (specified in @@ -282,10 +255,6 @@ replaced with `xyz.amorgan.blurhash`. containing the blurhash instead of `blurhash`. This is preferred to adding another endpoint, which is messier to later remove. -`/_matrix/media/r0/blurhash/{serverName}/{mediaId}` should be -replaced with -`/_matrix/media/unstable/xyz.amorgan/blurhash/{serverName}/{mediaId}`. - The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. From f93d70811ca8ed6a2e9ad4bf8b113e3324512eb7 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:32:21 +0000 Subject: [PATCH 28/49] Format the Unstable prefixes section a little more nicely --- proposals/2448-blurhash-for-media.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 29b97704da0..720aabd1978 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -248,17 +248,17 @@ ID) until the user's actual avatar loads. Implementations wishing to add this before this MSC is merged can do so with the following: -The `blurhash` key in any events, request or response bodies should be +* The `blurhash` key in any events, request or response bodies should be replaced with `xyz.amorgan.blurhash`. -`/_matrix/media/r0/upload` should return a `xyz.amorgan.blurhash` key +* `/_matrix/media/r0/upload` should return a `xyz.amorgan.blurhash` key containing the blurhash instead of `blurhash`. This is preferred to adding another endpoint, which is messier to later remove. -The `data-mx-blurhash` attribute in `` tags should be replaced with +* The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. -And finally, an entry should be added to the homeserver's `GET +* And finally, an entry should be added to the homeserver's `GET /_matrix/client/versions` endpoint, in `unstable_features`, with the key `xyz.amorgan.blurhash` set to `true`. From ed9ed5e2b8550b173b2fbbbe0cb983ff7cfa2392 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:32:43 +0000 Subject: [PATCH 29/49] grammar --- proposals/2448-blurhash-for-media.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 720aabd1978..51c6f20eae3 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -235,7 +235,7 @@ Older clients would ignore the new `blurhash` parameter. Newer clients would only show it if it exists. -Users who have not specified `blurhash` in the `m.room.member` event yet may +Users who have not specified `blurhash` in their `m.room.member` event yet may stand out from users who have while both are loading. This is entirely up to clients to handle, though a suggestion may be to "fake" a blurhash by blurring some placeholder image (perhaps something with variation between From 48c4d55225305154cc32c7fe12fb5a09872540a1 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:43:10 +0000 Subject: [PATCH 30/49] Add a quick note about encrypted media and server-side blurhash calc --- proposals/2448-blurhash-for-media.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 51c6f20eae3..6ee17043ff9 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -205,6 +205,9 @@ Example response: } ``` +Servers will obviously not be able to return a BlurHash string for encrypted +media. + In addition, the server can return the BlurHash string for an image when given an MXC URL. This would be through something like the Media Information API (specified in From fba60db82b3fa7c2faccca70ad6c71f070ff0f4e Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:47:59 +0000 Subject: [PATCH 31/49] Rename with a more generic title --- proposals/2448-blurhash-for-media.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 6ee17043ff9..f85333e7bc0 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -1,4 +1,4 @@ -# MSC2448: Using BlurHash in Media Events +# MSC2448: Using BlurHash as a Placeholder for Media in Matrix [BlurHash](https://blurha.sh) is a compact representation of a placeholder for an image (or the frame of a video). Currently in Matrix, clients must From c837c83e933db246181bf03fff4662935e9f0348 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:49:06 +0000 Subject: [PATCH 32/49] Riot -> Element --- proposals/2448-blurhash-for-media.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index f85333e7bc0..b9de0cbcb66 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -3,7 +3,7 @@ [BlurHash](https://blurha.sh) is a compact representation of a placeholder for an image (or the frame of a video). Currently in Matrix, clients must display a placeholder image in the message timeline while a piece of media is -loading. Some clients, such as Riot, simply display an empty space. +loading. Some clients, such as Element, simply display an empty space. While thumbnails exist to combat this to some degree, they still need to be downloaded from a homeserver, which is not instantaneous. @@ -223,7 +223,7 @@ Once the image loads: ![the image has loaded](images/2448-loaded-image.png) -For reference, the current state of things in Riot is: +For reference, the current state of things in Element is: ![boo, sad](images/2448-current-state.png) From b3f19155c14bc856b9374377bb4600a76b6aeb5d Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 19:50:06 +0000 Subject: [PATCH 33/49] Slight title adjustment --- proposals/2448-blurhash-for-media.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index b9de0cbcb66..6e5bb98b3ff 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -1,4 +1,4 @@ -# MSC2448: Using BlurHash as a Placeholder for Media in Matrix +# MSC2448: Using BlurHash as a Placeholder for Matrix Media [BlurHash](https://blurha.sh) is a compact representation of a placeholder for an image (or the frame of a video). Currently in Matrix, clients must From 5b8c19107721d30b90e0283d28868d10fa8e0da1 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 20:19:10 +0000 Subject: [PATCH 34/49] Add note about negligible DoS potential of large blurhashes --- proposals/2448-blurhash-for-media.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 6e5bb98b3ff..a8e0d0f4db7 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -267,10 +267,18 @@ another endpoint, which is messier to later remove. ## Security considerations -Blurhash entries in encrypted events, be it as part of the `info` property, +BlurHash entries in encrypted events, be it as part of the `info` property, or `` tags, should be encrypted along with the rest of the event content. +A [discussion in +#matrix-spec](https://matrix.to/#/!NasysSDfxKxZBzJJoE:matrix.org/$Cfa0dtF3DenIUAbC5aeg3Xo10gAF54mAJLZ6VzvYNfo?via=matrix.org&via=amorgan.xyz&via=pixie.town) +questioned whether massive BlurHashes may be a potential DoS vector for +clients. The discussion found that only a maximum of 100 x 100 components can +be defined by a BlurHash. This may be in the higher range for low-resource +(or unoptimised) clients, and clients are free to refuse to render a BlurHash +with a large component count, but it shouldn't be a cause for concern. + ## Links BlurHash's algorithm description can be found From 63d4966cfd5aa89fdf6444214ddb3e1db2acdeb8 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 26 Jan 2021 20:21:09 +0000 Subject: [PATCH 35/49] Add note about invalid BlurHashes --- proposals/2448-blurhash-for-media.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index a8e0d0f4db7..911ffc11f03 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -279,6 +279,8 @@ be defined by a BlurHash. This may be in the higher range for low-resource (or unoptimised) clients, and clients are free to refuse to render a BlurHash with a large component count, but it shouldn't be a cause for concern. +Invalid BlurHashes should not be rendered. + ## Links BlurHash's algorithm description can be found From 676571f390b4ed34f0a78fc96b7a9252b981750d Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Thu, 1 Apr 2021 16:18:52 +0100 Subject: [PATCH 36/49] Move blurhash to m.room.avatar's content.info dict --- proposals/2448-blurhash-for-media.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 911ffc11f03..ae35ab4e40a 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -92,7 +92,7 @@ Example `m.sticker` content: Room avatars having BlurHashes available will be especially useful when viewing a server's Public Rooms directory. -An optional field is added to `m.room.avatar`'s `content` dictionary with the +An optional field is added to `m.room.avatar`'s `content.info` dictionary with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by `url`. @@ -101,7 +101,9 @@ Example `m.room.avatar` content: ```json { "url": "mxc://amorgan.xyz/a59ee02f180677d83d1b57d366127f8e1afdd4ed", - "blurhash": "JadR*.7kCMdnj" + "info": { + "blurhash": "JadR*.7kCMdnj" + } } ``` From 594bcee99a9622fad83183e0468c1c3aaf1bbe5e Mon Sep 17 00:00:00 2001 From: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> Date: Tue, 13 Apr 2021 16:46:51 +0100 Subject: [PATCH 37/49] Apply suggestions from code review Co-authored-by: Kevin Cox Co-authored-by: Alexey Rusakov --- proposals/2448-blurhash-for-media.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index ae35ab4e40a..74abb7ca547 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -1,7 +1,7 @@ # MSC2448: Using BlurHash as a Placeholder for Matrix Media [BlurHash](https://blurha.sh) is a compact representation of a placeholder -for an image (or the frame of a video). Currently in Matrix, clients must +for an image (or a frame of video). Currently in Matrix, clients must display a placeholder image in the message timeline while a piece of media is loading. Some clients, such as Element, simply display an empty space. @@ -20,7 +20,7 @@ before the thumbnail is downloaded. ### m.room.message -A optional field is added in `m.room.message`'s `content.info` dictionary +An optional field is added in `m.room.message`'s `content.info` dictionary with the key `blurhash`. It is a BlurHash of the original piece of media. Clients could then render this using [one of the available BlurHash implementations](https://github.com/woltapp/blurhash). From 64116aed76964f7ec8dcfca4c2455469b5bffbf5 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 13 Apr 2021 16:50:02 +0100 Subject: [PATCH 38/49] Clarify that clients must calculate blurhashes for encrypted media --- proposals/2448-blurhash-for-media.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 74abb7ca547..ca50e263219 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -207,8 +207,8 @@ Example response: } ``` -Servers will obviously not be able to return a BlurHash string for encrypted -media. +Note that media servers will not be able to return a BlurHash string for +encrypted media; that must be left to the client. In addition, the server can return the BlurHash string for an image when given an MXC URL. This would be through something like the Media Information From 9bd0ba631f48b46feca7b0d2fce0e8ba055c70d3 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Sat, 22 May 2021 23:42:44 +0100 Subject: [PATCH 39/49] Fix inconsistency of blurhashes MUST vs SHOULD be omitted I justify this being a MUST as otherwise naive clients see and present a blurhash, but never show the actual image as it wouldn't be available. This may believe one to believe that their media repository is broken. However, in fact the event itself just has a blurhash without a corresponding image. --- proposals/2448-blurhash-for-media.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index ca50e263219..9a62b77ba17 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -117,7 +117,7 @@ An optional field is added to `m.room.member`'s `content` dictionary with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by `avatar_url`. -Note that `blurhash` SHOULD be omitted if `avatar_url` is not present. +Note that `blurhash` MUST be omitted if `avatar_url` is not present. Example `m.room.member` event content: From e7e0fb71abf7836dda2dee9ddbb50d3208aabfd6 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Sat, 22 May 2021 23:46:48 +0100 Subject: [PATCH 40/49] blurhashes can be inserted into more than just m.room.message events --- proposals/2448-blurhash-for-media.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 9a62b77ba17..33d025e7520 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -187,11 +187,11 @@ Example `m.room.message.formatted_body`: ## Calculating a blurhash -BlurHashes are inserted into `m.room.message` events by the client, however -some clients may not be able to implement the BlurHash library for whatever -reason. In this case, it would be nice to allow the media repository to -calculate the BlurHash of a piece of media for the client, similar to how -thumbnails are calculated by media repositories today. +BlurHashes are inserted into events by the client, however some clients may not +be able to implement the BlurHash library for whatever reason. In this case, it +would be nice to allow the media repository to calculate the BlurHash of a piece +of media for the client, similar to how thumbnails are calculated by media +repositories today. The [`/_matrix/media/r0/upload`](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-media-r0-upload) From 1d954f084bb3ef044b3de93d5fc86677c915e25d Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Sat, 22 May 2021 23:48:02 +0100 Subject: [PATCH 41/49] Remove the need for an unstable_features entry --- proposals/2448-blurhash-for-media.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 33d025e7520..e49edb456d5 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -263,10 +263,6 @@ another endpoint, which is messier to later remove. * The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. -* And finally, an entry should be added to the homeserver's `GET -/_matrix/client/versions` endpoint, in `unstable_features`, with the key -`xyz.amorgan.blurhash` set to `true`. - ## Security considerations BlurHash entries in encrypted events, be it as part of the `info` property, From 9e981ba72726c7e91146481084841e1e9107ddef Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Sun, 23 May 2021 00:12:26 +0100 Subject: [PATCH 42/49] Make blurhash generation on the server opt-in --- proposals/2448-blurhash-for-media.md | 45 +++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index e49edb456d5..59ebbf5c4f5 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -185,7 +185,7 @@ Example `m.room.message.formatted_body`: "formatted_body": This is awesome \"flutterjoy\" ``` -## Calculating a blurhash +## Calculating a blurhash on the server BlurHashes are inserted into events by the client, however some clients may not be able to implement the BlurHash library for whatever reason. In this case, it @@ -193,10 +193,33 @@ would be nice to allow the media repository to calculate the BlurHash of a piece of media for the client, similar to how thumbnails are calculated by media repositories today. -The +A new boolean query parameter, `generate_blurhash`, is added to [`/_matrix/media/r0/upload`](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-media-r0-upload) -endpoint response is modified to include an optional `blurhash` key, -which the client may use to insert into messages if desired: +which allows clients to ask the server to generate a BlurHash for them. This +may be useful for clients that are designed to run on very low-power hardware, +or otherwise cannot generate a BlurHash itself. +If set to `true`, the server SHOULD generate a BlurHash of the uploaded media +and return it as the value of the `blurhash` key in the response. + +If the server cannot generate a BlurHash of the media - perhaps because it is +not a file that a BlurHash can be derived from or it is too expensive to process +a very large piece of media - then the server SHOULD NOT return a `blurhash` key +in the response. Additionally, if `generate_blurhash` is not `true`, then the +server SHOULD NOT return a `blurhash` key in the response. + +Fundamentally, this means that clients SHOULD NOT assume that a server will always +return a BlurHash in the response to `/_matrix/media/r0/upload`, even if they have +set the `generate_blurhash` query parameter to `true` in the request. + +An example request from a client that would like the server to generate a +blurhash would look like: + +``` +POST /_matrix/media/r0/upload?generate_blurhash=true&filename=My+Family+Photo.jpeg HTTP/1.1 +Content-Type: Content-Type: image/jpeg + + +``` Example response: @@ -207,10 +230,15 @@ Example response: } ``` +We explicitly make this behaviour opt-in as it is assumed that the majority of +clients that end up supporting BlurHashes will be capable of generating them +locally. Thus the less load we can put on the homeserver, (by not making +blurhash generation the default), the better. + Note that media servers will not be able to return a BlurHash string for encrypted media; that must be left to the client. -In addition, the server can return the BlurHash string for an image when +The server could additionally return the BlurHash string for an image when given an MXC URL. This would be through something like the Media Information API (specified in [MSC2380](https://github.com/matrix-org/matrix-doc/pull/2380)), or similar. @@ -256,9 +284,10 @@ the following: * The `blurhash` key in any events, request or response bodies should be replaced with `xyz.amorgan.blurhash`. -* `/_matrix/media/r0/upload` should return a `xyz.amorgan.blurhash` key -containing the blurhash instead of `blurhash`. This is preferred to adding -another endpoint, which is messier to later remove. +* `/_matrix/media/r0/upload?generate_blurhash=true` should return a +`xyz.amorgan.blurhash` key containing the blurhash instead of `blurhash`. +This is preferred to adding another endpoint, which is messier to later +remove. * The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. From 75a4fa6c1bf0ecc12d05fd97e9d524c05526551c Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Sun, 23 May 2021 00:16:43 +0100 Subject: [PATCH 43/49] Clarify why we place blurhash under the matrix:image:blurhash OG prop --- proposals/2448-blurhash-for-media.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 59ebbf5c4f5..b3aab3054a1 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -150,7 +150,9 @@ to [`GET /_matrix/media/r0/preview_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-media-r0-preview-url) called `matrix:image:blurhash`. The value of this attribute is the blurhash representation of the media specified -by `og:image`. +by `og:image`. Note that we place this value under the `matrix` namespace as +the [OpenGraph protocol](https://ogp.me/) does not (yet) have a spec'd field +for BlurHashes. Note that `matrix:image:blurhash` MUST be omitted if `og:image` is not present in the response. From 934b6d7a303e5d5b4df9e06085b8348a82e4159f Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Sun, 23 May 2021 00:22:39 +0100 Subject: [PATCH 44/49] Mention that the generate_blurhash query param needs an unstable prefix --- proposals/2448-blurhash-for-media.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index b3aab3054a1..4097b7394e2 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -286,10 +286,9 @@ the following: * The `blurhash` key in any events, request or response bodies should be replaced with `xyz.amorgan.blurhash`. -* `/_matrix/media/r0/upload?generate_blurhash=true` should return a -`xyz.amorgan.blurhash` key containing the blurhash instead of `blurhash`. -This is preferred to adding another endpoint, which is messier to later -remove. +* `/_matrix/media/r0/upload`'s new `generate_blurhash` query parameter +should instead be `xyz.amorgan.generate_blurhash`. And instead of the +key `blurhash`, the endpoint should return `xyz.amorgan.blurhash`. * The `data-mx-blurhash` attribute in `` tags should be replaced with `data-xyz-amorgan-blurhash`. From 974d368e401d67fb5a0e64a305cd8a03ac4fec21 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 1 Aug 2022 14:31:25 +0100 Subject: [PATCH 45/49] lint proposal markdown --- proposals/2448-blurhash-for-media.md | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 4097b7394e2..f2e0b5035c6 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -48,7 +48,7 @@ Example `m.room.message` content: "blurhash": "JadR*.7kCMdnj" }, "msgtype": "m.image", - "url": "mxc://example.org/abcde", + "url": "mxc://example.org/abcde" } ``` @@ -135,13 +135,20 @@ Example `m.room.member` event content: Endpoints that return profile information, and thus MXC URLs to user avatars, are extended to optionally include BlurHashes as well. -[`GET /_matrix/client/r0/profile/{userId}`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid) has an optional field added with +[`GET /_matrix/client/r0/profile/{userId}`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid) +has an optional field added with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by `avatar_url`. `blurhash` MUST be omitted if `avatar_url` is not present. -The same applies to [`GET /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid-avatar-url), and to the federation endpoint [`GET /_matrix/federation/v1/query/profile`](https://matrix.org/docs/spec/server_server/r0.1.4#get-matrix-federation-v1-query-profile). +The same applies +to [`GET /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid-avatar-url) +, and to the federation +endpoint [`GET /_matrix/federation/v1/query/profile`](https://matrix.org/docs/spec/server_server/r0.1.4#get-matrix-federation-v1-query-profile) +. -[`PUT /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-profile-userid-avatar-url) has an optional field added -to the request body with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by the value of the `avatar_url` field in the same request. +[`PUT /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-profile-userid-avatar-url) +has an optional field added +to the request body with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by the value of +the `avatar_url` field in the same request. ### URL previews @@ -284,14 +291,14 @@ Implementations wishing to add this before this MSC is merged can do so with the following: * The `blurhash` key in any events, request or response bodies should be -replaced with `xyz.amorgan.blurhash`. + replaced with `xyz.amorgan.blurhash`. * `/_matrix/media/r0/upload`'s new `generate_blurhash` query parameter -should instead be `xyz.amorgan.generate_blurhash`. And instead of the -key `blurhash`, the endpoint should return `xyz.amorgan.blurhash`. + should instead be `xyz.amorgan.generate_blurhash`. And instead of the + key `blurhash`, the endpoint should return `xyz.amorgan.blurhash`. * The `data-mx-blurhash` attribute in `` tags should be replaced with -`data-xyz-amorgan-blurhash`. + `data-xyz-amorgan-blurhash`. ## Security considerations From 56683970073e1a9696c62b0d356a144c29d0a1bf Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 1 Aug 2022 14:33:24 +0100 Subject: [PATCH 46/49] Apply suggestions from TravisR --- proposals/2448-blurhash-for-media.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index f2e0b5035c6..260001d4742 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -8,8 +8,8 @@ loading. Some clients, such as Element, simply display an empty space. While thumbnails exist to combat this to some degree, they still need to be downloaded from a homeserver, which is not instantaneous. -Instead, a BlurHash can be sent inside the `m.room.message` event, which upon -receipt other clients can render for a pretty preview while the actual +Instead, a BlurHash can be sent inside events, which upon +receipt other clients can render for a pretty media preview while the actual thumbnail downloads. They also do not contain any `"` characters, making them simple to stick inside existing JSON blobs. @@ -262,7 +262,7 @@ Once the image loads: ![the image has loaded](images/2448-loaded-image.png) -For reference, the current state of things in Element is: +As a sample, this is Element's behaviour prior to this MSC's introduction: ![boo, sad](images/2448-current-state.png) From 234877c86be231fe271402b0c4898d3fcb882c36 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 1 Aug 2022 14:48:16 +0100 Subject: [PATCH 47/49] Clear client recommendations for blurhashes vs. thumbnails --- proposals/2448-blurhash-for-media.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 260001d4742..421642b8720 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -13,8 +13,11 @@ receipt other clients can render for a pretty media preview while the actual thumbnail downloads. They also do not contain any `"` characters, making them simple to stick inside existing JSON blobs. -To be clear: A BlurHash does not replace a thumbnail - it will be shown -before the thumbnail is downloaded. +To be clear: A BlurHash does not replace a thumbnail - rather it is a placeholder +and should be shown before the thumbnail is downloaded. For a familiar messaging +user experience, clients are recommended to first render and display a blurhash, +then download the thumbnail of the media. Once the thumbnail file is downloaded, +display it. Finally, the user can optionally view the full media item by selecting it. ## Proposal From abf52839b8c3f490970617ebe188d9f7959e6933 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 1 Aug 2022 15:27:17 +0100 Subject: [PATCH 48/49] r0 -> v3; update links to new spec website --- proposals/2448-blurhash-for-media.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 421642b8720..71dc250224c 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -1,7 +1,7 @@ # MSC2448: Using BlurHash as a Placeholder for Matrix Media [BlurHash](https://blurha.sh) is a compact representation of a placeholder -for an image (or a frame of video). Currently in Matrix, clients must +for an image (or a frame of video). Currently, in Matrix, clients must display a placeholder image in the message timeline while a piece of media is loading. Some clients, such as Element, simply display an empty space. @@ -138,17 +138,17 @@ Example `m.room.member` event content: Endpoints that return profile information, and thus MXC URLs to user avatars, are extended to optionally include BlurHashes as well. -[`GET /_matrix/client/r0/profile/{userId}`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid) +[`GET /_matrix/client/v3/profile/{userId}`](https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3profileuserid) has an optional field added with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by `avatar_url`. `blurhash` MUST be omitted if `avatar_url` is not present. The same applies -to [`GET /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-profile-userid-avatar-url) +to [`GET /_matrix/client/v3/profile/{userId}/avatar_url`](https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3profileuseridavatar_url) , and to the federation -endpoint [`GET /_matrix/federation/v1/query/profile`](https://matrix.org/docs/spec/server_server/r0.1.4#get-matrix-federation-v1-query-profile) +endpoint [`GET /_matrix/federation/v1/query/profile`](https://spec.matrix.org/v1.3/server-server-api/#get_matrixfederationv1queryprofile) . -[`PUT /_matrix/client/r0/profile/{userId}/avatar_url`](https://matrix.org/docs/spec/client_server/r0.6.1#put-matrix-client-r0-profile-userid-avatar-url) +[`PUT /_matrix/client/v3/profile/{userId}/avatar_url`](https://spec.matrix.org/v1.3/client-server-api/#put_matrixclientv3profileuseridavatar_url) has an optional field added to the request body with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by the value of the `avatar_url` field in the same request. @@ -157,7 +157,7 @@ the `avatar_url` field in the same request. An optional attribute is added to the OpenGraph data returned by a call to -[`GET /_matrix/media/r0/preview_url`](https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-media-r0-preview-url) +[`GET /_matrix/media/v3/preview_url`](https://spec.matrix.org/v1.3/client-server-api/#get_matrixmediav3preview_url) called `matrix:image:blurhash`. The value of this attribute is the blurhash representation of the media specified by `og:image`. Note that we place this value under the `matrix` namespace as @@ -167,7 +167,7 @@ for BlurHashes. Note that `matrix:image:blurhash` MUST be omitted if `og:image` is not present in the response. -Example response to `GET /_matrix/media/r0/preview_url`: +Example response to `GET /_matrix/media/v3/preview_url`: ```json { @@ -206,7 +206,7 @@ of media for the client, similar to how thumbnails are calculated by media repositories today. A new boolean query parameter, `generate_blurhash`, is added to -[`/_matrix/media/r0/upload`](https://matrix.org/docs/spec/client_server/r0.6.0#post-matrix-media-r0-upload) +[`POST /_matrix/media/v3/upload`](https://spec.matrix.org/v1.3/client-server-api/#post_matrixmediav3upload) which allows clients to ask the server to generate a BlurHash for them. This may be useful for clients that are designed to run on very low-power hardware, or otherwise cannot generate a BlurHash itself. @@ -220,14 +220,14 @@ in the response. Additionally, if `generate_blurhash` is not `true`, then the server SHOULD NOT return a `blurhash` key in the response. Fundamentally, this means that clients SHOULD NOT assume that a server will always -return a BlurHash in the response to `/_matrix/media/r0/upload`, even if they have +return a BlurHash in the response to `/_matrix/media/v3/upload`, even if they have set the `generate_blurhash` query parameter to `true` in the request. An example request from a client that would like the server to generate a blurhash would look like: ``` -POST /_matrix/media/r0/upload?generate_blurhash=true&filename=My+Family+Photo.jpeg HTTP/1.1 +POST /_matrix/media/v3/upload?generate_blurhash=true&filename=My+Family+Photo.jpeg HTTP/1.1 Content-Type: Content-Type: image/jpeg @@ -244,8 +244,8 @@ Example response: We explicitly make this behaviour opt-in as it is assumed that the majority of clients that end up supporting BlurHashes will be capable of generating them -locally. Thus the less load we can put on the homeserver, (by not making -blurhash generation the default), the better. +locally. Thus, the less load we can put on the homeserver (by not making +blurhash generation the default) the better. Note that media servers will not be able to return a BlurHash string for encrypted media; that must be left to the client. @@ -296,7 +296,7 @@ the following: * The `blurhash` key in any events, request or response bodies should be replaced with `xyz.amorgan.blurhash`. -* `/_matrix/media/r0/upload`'s new `generate_blurhash` query parameter +* `/_matrix/media/v3/upload`'s new `generate_blurhash` query parameter should instead be `xyz.amorgan.generate_blurhash`. And instead of the key `blurhash`, the endpoint should return `xyz.amorgan.blurhash`. From 754fa7a3b11aee2f5d2296b0c6e88c51a5ccc81d Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 1 Aug 2022 15:43:59 +0100 Subject: [PATCH 49/49] Add and update request/repsonse examples --- proposals/2448-blurhash-for-media.md | 57 ++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/proposals/2448-blurhash-for-media.md b/proposals/2448-blurhash-for-media.md index 71dc250224c..cc321b906ea 100644 --- a/proposals/2448-blurhash-for-media.md +++ b/proposals/2448-blurhash-for-media.md @@ -103,7 +103,7 @@ Example `m.room.avatar` content: ```json { - "url": "mxc://amorgan.xyz/a59ee02f180677d83d1b57d366127f8e1afdd4ed", + "url": "mxc://matrix.example.com/a59ee02f180677d83d1b57d366127f8e1afdd4ed", "info": { "blurhash": "JadR*.7kCMdnj" } @@ -148,11 +148,62 @@ to [`GET /_matrix/client/v3/profile/{userId}/avatar_url`](https://spec.matrix.or endpoint [`GET /_matrix/federation/v1/query/profile`](https://spec.matrix.org/v1.3/server-server-api/#get_matrixfederationv1queryprofile) . -[`PUT /_matrix/client/v3/profile/{userId}/avatar_url`](https://spec.matrix.org/v1.3/client-server-api/#put_matrixclientv3profileuseridavatar_url) +#### Example responses: + +`GET /_matrix/client/v3/profile/{userId}` + +```json5 +{ + "avatar_url": "mxc://matrix.org/SDGdghriugerRg", + "displayname": "Alice Margatroid", + "blurhash": "oyp8ky2BWn7VHEL" +} +``` + +`GET /_matrix/federation/v1/query/profile` + +```json5 +{ + "avatar_url": "mxc://matrix.org/SDGdghriugerRg", + "displayname": "Alice Margatroid", + "blurhash": "oyp8ky2BWn7VHEL" +} +``` + +`GET /_matrix/client/v3/profile/{userId}/avatar_url` + +```json5 +{ + "avatar_url": "mxc://matrix.org/SDGdghriugerRg", + "blurhash": "oyp8ky2BWn7VHEL" +} +``` + +Separately, [`PUT /_matrix/client/v3/profile/{userId}/avatar_url`](https://spec.matrix.org/v1.3/client-server-api/#put_matrixclientv3profileuseridavatar_url) has an optional field added to the request body with the key `blurhash`. Its value is a BlurHash of the media that is pointed to by the value of the `avatar_url` field in the same request. +#### Example request/response interaction + +Request: +``` +PUT /_matrix/client/v3/profile/{userId}/avatar_url HTTP/1.1 + +{ + "avatar_url": "mxc://matrix.org/SDGdghriugerRg", + "blurhash": "oyp8ky2BWn7VHEL" +} +``` + +Successful response: + +``` +200 OK + +{} +``` + ### URL previews An optional attribute is added to the OpenGraph data returned by a call @@ -228,7 +279,7 @@ blurhash would look like: ``` POST /_matrix/media/v3/upload?generate_blurhash=true&filename=My+Family+Photo.jpeg HTTP/1.1 -Content-Type: Content-Type: image/jpeg +Content-Type: image/jpeg ```