element-hq / element-meta

Shared/meta documentation and project artefacts for Element clients
72 stars 12 forks source link

Automatically triggering effects from emoji use is unexpected and disruptive #356

Open wezm opened 3 years ago

wezm commented 3 years ago

Description

The recent addition of effects triggered by emoji https://github.com/vector-im/element-web/issues/14676 is very surprising to me as it's not clear that it will be triggered at all. I use the ๐ŸŽ‰ emoji frequently and it's not my intention when writing a message to my colleagues that the inclusion of this single character will result in them being confronted with a full screen effect.

The deliberate slash commands seem fine as that's a conscious action by the sender. I'm aware of the setting to turn these off but that only affects me (I think) and not my recipients.

Steps to reproduce

Describe how what happens differs from what you expected.

When I'm sending a message I expect that message to be delivered as I typed it. It is very surprising that by using a particular character I might trigger a full screen visual effect for my recipients.

Version information

For the web app:

turt2live commented 3 years ago

Chat effects can be disabled via the "Show chat effects" option in settings fwiw.

wezm commented 3 years ago

Yep:

I'm aware of the setting to turn these off but that only affects me (I think) and not my recipients.

jryans commented 3 years ago

Thanks for the feedback, I'll circulate this with the team.

apiraino commented 3 years ago

I second this issue based on the condivisible principle of not surprising users. A default set to false would be (imo) better suited.

(while I am here: this small issue takes nothing away from the great work of the element.io team)

smithfred commented 3 years ago

I think there's a better solution than "disable by default" (or "enable by default").

There are at least 3 facets to this:

To address all three, the first time one of the related emoji is sent, or the emoji or /confetti is received (since the point at which the user started using the version of Element that introduced the feature), Element could show an informational message (before sending in the case of the sender):

When someone uses ๐ŸŽ‰๏ธ, ๐ŸŽŠ๏ธ or `/confetti` in a message, Element will show a confetti animation to everyone on the chat.
You can change what you want to happen when sending and receiving these at any time in Settings.
[ ] Never send animations when using these emoji.
[ ] Never show animations from others.
[Preview animation][OK]

The "don't send animation" option would presumably need a sender-side "confetti animation" message component separate from the emoji themselves so it can be excluded - I don't know if this is the case now, but presumably it's already present somewhere for /confetti purposes.

SimonBrandner commented 3 years ago

Another option might be showing the effect only if the message contained only an emoji. I think that is the message type is m.emote? This would probably work the best with some combination of the other suggestions

kumarunster commented 3 years ago

please keep this, this is the killer feature to attract users and force them to move from other proprietary messengers

SimonBrandner commented 3 years ago

@kumarunster, as far as I know, there is no intention in removing this. This is just a discussion about how exactly should this behave

iliana commented 3 years ago

Hi folks โ€” triggering unexpected motion in this way, especially in a surprising and unannounced way, is a huge accessibility problem for people like me who can easily experience motion sickness. https://webkit.org/blog/7551/responsive-design-for-motion/

Effects having a toggle is a start, but it's not enough; it's very important to use the platform's signals for whether a user wants reduced motion. This is the only method people like me have to inform websites of our motion preferences before unfortunately learning about a vestibular trigger.

The Element web client needs to check the value of the prefers-reduced-motion media query to, ideally, disable chat effects altogether if the user requests reduced motion.

(The discoverability of the option is also awful โ€” I didn't know it was an option until I came across this issue, and when I went to look for it I first checked Appearance, didn't find it, and got frustrated and had to search other sections.)

jryans commented 3 years ago

@iliana Thanks for raising the accessibility component, which is quite distinct from how this feature should be controlled more generally. We have added a check for prefers-reduced-motion which will go out with the next release, so this should address the accessibility concern here.

michael-ts commented 1 year ago

I agree that it should be easy to opt out of seeing animations.

Having said that, I just have to say that having discovered this feature I find it a bit hilarious that my window goes crazy whenever a little emoji appears in the text. This is followed by little bit of disappointment that confetti is the only animation available. I hope there are plans for more of these added in the future - might I suggest a cloud of rocket exhaust boosting the rocket off the screen? Even better, using the tornado emoji could cause all the characters in the window to get caught up in a swirling vortex and swept off the screen before falling from the sky back into place!

t3chguy commented 1 year ago

@michael-ts Element Web & Desktop support a few more than just confetti - https://github.com/matrix-org/matrix-react-sdk/blob/f3f87054b4828fbaf422430453a867d1204bdd32/src/effects/index.ts#L29-L99

daniellekirkwood commented 1 year ago

Also related: https://github.com/vector-im/element-meta/blob/develop/docs/chat_effects.md

spanezz commented 8 months ago

Indeed, I could disable those animations, and I just checked if the phrase "Chat effects provide a delightful experience to the user. They add personality and flair to the timeline." was written on April, 1st, and sadly it wasn't.

I could disable the effects for me, but as long as I'm inflicting them on other unsuspecting users not well-versed in Elements enough to switch off a "let other users arbitrarily impair my usage experience at any time" feature that is on by default, then it's better that I'm very well aware of what happened if I accidentally use one of those emojis out of habits, so at least I get a chance to apologise.

Really, the setting I need, and I echo @smithfred here, is "don't trigger them on my system and don't cause my emojis to trigger this in remote systems".

Using slash-commands is fine: if I want to harass people I can do it with those as well as pure words, and they can solve either problem by blocking me if I don't stop when they ask me to