Matrix: a link in a message is never unfurled #220

Closed
opened 2026-09-13 11:59:34 -04:00 by Salastil · 1 comment
Owner

No m.room.preview_urls, and no use of the homeserver's /preview_url endpoint.

Element asks the homeserver to unfurl a link and shows a title, description and image. moho shows the bare URL. The homeserver doing the fetching is the part worth having: it means the preview costs the reader no request to a stranger's server, which is the opposite trade from this client's own content sniffing.

The per-room m.room.preview_urls setting has to be honoured with it - a room that has turned previews off must not have them.

No `m.room.preview_urls`, and no use of the homeserver's `/preview_url` endpoint. Element asks the homeserver to unfurl a link and shows a title, description and image. moho shows the bare URL. The homeserver doing the fetching is the part worth having: it means the preview costs the reader no request to a stranger's server, which is the opposite trade from this client's own content sniffing. The per-room `m.room.preview_urls` setting has to be honoured with it - a room that has turned previews off must not have them.
Salastil added the feature label 2026-09-13 11:59:34 -04:00
Author
Owner

Finished.

The homeserver does the fetching, which is the part worth having — the preview costs the reader no request to a stranger's server, the opposite trade from this client's own content sniffing.

Never in an encrypted room, and no setting here turns that back on. Asking the homeserver to unfurl a link handed to it in plaintext gives it a URL that room went to some trouble to keep from it; a room is encrypted because its contents are nobody else's business, and a picture is not worth undoing that for. Element defaults the same way and this does not offer the override.

Both switches are honoured beside that — org.matrix.preview_urls on the account and m.room.preview_urls on the room — and the room wins over an account that has said nothing, because that decision was made for everybody in it. Both events say disable, so silence means on.

One link per message: six cards under one line is an index of a message rather than a glance at it. Verified against poast, which answers with a title and an mxc:// picture — so the image takes the same token-bearing fetch and local cache as every other piece of Matrix media.

b058c7e, ff4dedf

Finished. The homeserver does the fetching, which is the part worth having — the preview costs the reader no request to a stranger's server, the opposite trade from this client's own content sniffing. **Never in an encrypted room, and no setting here turns that back on.** Asking the homeserver to unfurl a link handed to it in plaintext gives it a URL that room went to some trouble to keep from it; a room is encrypted because its contents are nobody else's business, and a picture is not worth undoing that for. Element defaults the same way and this does not offer the override. Both switches are honoured beside that — `org.matrix.preview_urls` on the account and `m.room.preview_urls` on the room — and the room wins over an account that has said nothing, because that decision was made for everybody in it. Both events say *disable*, so silence means on. One link per message: six cards under one line is an index of a message rather than a glance at it. Verified against poast, which answers with a title and an `mxc://` picture — so the image takes the same token-bearing fetch and local cache as every other piece of Matrix media. [b058c7e](https://git.salastil.com/Salastil/nobilis/commit/b058c7e), [ff4dedf](https://git.salastil.com/Salastil/moho/commit/ff4dedf)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Salastil/moho#220