Summary: This plugin adds the ability for users to upload gif avatars which will animate on hover or selection in posts, user cards, and profile pages.
By default, this pauses animation when not focused. Within topics, animation will pause when post is not hovered or selected.
animated_avatars_always_animate: overrides the above pausing, forces avatars to always animate. animated_avatars_min_trust_level_to_display restrict animating of avatars by trust level.
Respects prefers-reduced-motion in the browser’s accessibility options: Animations will be disabled entirely.
Configuration
This plugin has an optional dependency on gifsicle. This is used to resize uploaded gif images to fit a square avatar, which helps to wrangle aspect ratios as well as normalize any differences between the static and animated images’ sizes for a smoother swap. The plugin will still function without it, but any non-square avatars may appear stretched when shown.
To enable, you will add a call to the install script in your app.yml. A example of what the after_code hook will look like is the following:
added two more site settings - animated_avatars_always_animate to force always-on animation, and animated_avatars_min_trust_level_to_display to restruct animated avatars by trust level
Some users are reporting the avatar being returned as .png despite the media type being gif.
At this time I’m just trying to understand if it’s something that could be related to the plugin/discourse/nginx or user.
I’ve already a use case in which the issue was the user accessing their Windows machine via RDP but in a specific report I’m having a user with Windows 10 Version 22H2 OS Build 19045.2728 and Chrome 111.0.5563.65 (64bit) but this is what is being returned to the browser:
The 108_2.png is an avatar.
If I check the same topic, I can see that I’m receiving the same image but with .gif extension and in fact it loads animated for me.
However, trying to reach the file directly shows me that two versions exists, both a .png version and a .gif version
There are two static assets that get returned – png and gif. In “always animate” mode, the PNG is swapped on load of the post via a script for the gif version.
If the user is viewing with blocked JS, that may prevent the animation.
It seems that user pages are now broken with this installed, a quick look returns the following stack trace:
Uncaught TypeError: r.default.compute is not a function
n animated-bound-avatar.js:10
htmlHelper helpers.js:30
Ember 2
l manager.js:746
tag reference.js:136
track validator.js:668
animated-bound-avatar.js:10
Unfortunately I don’t know when this started happening.
I haven’t done any debugging on my own yet, but it would’ve had to break between these two commits, as I checked the Discourse diff before updating yesterday evening, and it wasn’t broken before that.