Skip to content

Hide the names of banned users behind a spoiler tag#32424

Merged
andybalaam merged 1 commit intodevelopfrom
andybalaam/spoiler-banned-names
Feb 23, 2026
Merged

Hide the names of banned users behind a spoiler tag#32424
andybalaam merged 1 commit intodevelopfrom
andybalaam/spoiler-banned-names

Conversation

@andybalaam
Copy link
Member

@andybalaam andybalaam commented Feb 9, 2026

Make banned users' names (which may be offensive) hidden by default.

Demo

rec-2026-02-09_16.43.32.mp4

@t3chguy t3chguy changed the title WIP: spoilers on banned names WIP: spoilers on banned users' names Feb 9, 2026
@t3chguy
Copy link
Member

t3chguy commented Feb 9, 2026

Tweaked title, originally thought "banned names" was like profanity detection or something

@jimmackenzie
Copy link

T&S team feedback: this is a welcome change - it materially improves the status quo.

Longer term, we'd be interested in exploring whether those events should be displayed in the timeline, or be viewable elsewhere. This is a welcome incremental change while we debate that question!

Comment on lines +139 to +141
? _t("timeline|m.room.member|ban_reason", { senderName, targetName: "<<TARGET>>", reason })
: _t("timeline|m.room.member|ban", { senderName, targetName: "<<TARGET>>" });
const targetI = text.indexOf("<<TARGET>>");
Copy link
Member

@t3chguy t3chguy Feb 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is all sorts of wild, we should not be doing things like this, the 3rd param to _t can apply React element replacers, it may need updates to the i18n strings but that is worth everyone's collective sanity. Again see textForJoinRulesEvent for an example.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, didn't think this was the right way! Hopefully better attempt in 42986fc

@t3chguy
Copy link
Member

t3chguy commented Feb 20, 2026

Going to request design review as spoilers are something which is seldom seen by users and not sure if design ever signed them off, this will be putting them a lot more front and centre

@t3chguy t3chguy requested a review from a team February 20, 2026 09:10
@amshakal
Copy link
Member

I think this is a wonderful idea. Is it using the same spolier UI we already have on element web?

@t3chguy
Copy link
Member

t3chguy commented Feb 20, 2026

@amshakal yes it is, with the known issue that spoilers do not work for users relying on accessible technologies such as screen readers

Comment on lines +137 to +163
return allowJSX
? reason
? () =>
_t(
"timeline|m.room.member|ban_reason_spoiler",
{
senderName,
reason,
},
{
user: () => <Spoiler>{targetName}</Spoiler>,
},
)
: () =>
_t(
"timeline|m.room.member|ban_spoiler",
{
senderName,
reason,
},
{
user: () => <Spoiler>{targetName}</Spoiler>,
},
)
: reason
? () => _t("timeline|m.room.member|ban_reason", { senderName, targetName, reason })
: () => _t("timeline|m.room.member|ban", { senderName, targetName });
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please no, nested ternary is hellish. I suggest looking at the previous example I pointed you to for something to copy

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in latest.

Copy link
Member

@t3chguy t3chguy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM otherwise

@andybalaam andybalaam force-pushed the andybalaam/spoiler-banned-names branch from 948a1dd to 8244607 Compare February 20, 2026 13:12
@andybalaam andybalaam force-pushed the andybalaam/spoiler-banned-names branch from 8244607 to 3ca5726 Compare February 20, 2026 13:12
@andybalaam andybalaam added this pull request to the merge queue Feb 23, 2026
Merged via the queue into develop with commit 41f8fff Feb 23, 2026
39 checks passed
@andybalaam andybalaam deleted the andybalaam/spoiler-banned-names branch February 23, 2026 13:49
alexlebens pushed a commit to alexlebens/infrastructure that referenced this pull request Mar 10, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [vectorim/element-web](https://github.com/element-hq/element-web) | patch | `v1.12.11` → `v1.12.12` |

---

### Release Notes

<details>
<summary>element-hq/element-web (vectorim/element-web)</summary>

### [`v1.12.12`](https://github.com/element-hq/element-web/releases/tag/v1.12.12)

[Compare Source](element-hq/element-web@v1.12.11...v1.12.12)

#### ✨ Features

- Add stable support for MSC4380 invite blocking ([#&#8203;31966](element-hq/element-web#31966)). Contributed by [@&#8203;richvdh](https://github.com/richvdh).
- Hide the names of banned users behind a spoiler tag ([#&#8203;32424](element-hq/element-web#32424)). Contributed by [@&#8203;andybalaam](https://github.com/andybalaam).
- Room list: remove bold effect on selected room ([#&#8203;32593](element-hq/element-web#32593)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Use Compound buttons in auth screens ([#&#8203;32562](element-hq/element-web#32562)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Track room list sorting algorithm changes ([#&#8203;32556](element-hq/element-web#32556)). Contributed by [@&#8203;MidhunSureshR](https://github.com/MidhunSureshR).
- Update `sso_redirect_options` to work for Native OIDC ([#&#8203;32537](element-hq/element-web#32537)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).

#### 🐛 Bug Fixes

- Room list: avoid excessive re-renders on room list store update or filter change ([#&#8203;32663](element-hq/element-web#32663)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Room list: listen to call event to check number of participants ([#&#8203;32677](element-hq/element-web#32677)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Fix invite-specific join errors not being shown ([#&#8203;32621](element-hq/element-web#32621)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Prevent logging lots of "Browser unsupported" lines ([#&#8203;32647](element-hq/element-web#32647)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Update critical gradient for room status bar ([#&#8203;32575](element-hq/element-web#32575)). Contributed by [@&#8203;Half-Shot](https://github.com/Half-Shot).
- Room list: avoid header overflowing when too long ([#&#8203;32645](element-hq/element-web#32645)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Room list: center focus outline of room list item ([#&#8203;32637](element-hq/element-web#32637)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Fix misaligned cross in complete security dialog ([#&#8203;32614](element-hq/element-web#32614)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Room list: fix keyboard navigation ([#&#8203;32585](element-hq/element-web#32585)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Don't show empty privacy section ([#&#8203;32582](element-hq/element-web#32582)). Contributed by [@&#8203;dbkr](https://github.com/dbkr).
- Disable room list image dragging ([#&#8203;32590](element-hq/element-web#32590)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).
- Update UserMenu theme toggle to use IconButton ([#&#8203;32591](element-hq/element-web#32591)). Contributed by [@&#8203;t3chguy](https://github.com/t3chguy).
- Room list: make room list item scales with large font size ([#&#8203;32523](element-hq/element-web#32523)). Contributed by [@&#8203;florianduros](https://github.com/florianduros).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4yIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYXV0b21lcmdlIiwiaW1hZ2UiXX0=-->

Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/4596
Co-authored-by: Renovate Bot <renovate-bot@alexlebens.net>
Co-committed-by: Renovate Bot <renovate-bot@alexlebens.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants