Persona gives every member on your forum the tools to make their presence their own. Username colours, fonts, effects, avatars, badges, post themes, profile backgrounds -- it's all in one place, with a live preview so they can see exactly what they're getting before they save.
I built this because I wanted something that actually works across every page, not just posts. Persona renders on threads, profiles, popup cards, the forums list, the visitor dropdown -- everywhere a username shows up. And it plays nice with whatever theme you're running.
What's included
Username Styling :
Every feature saves through XenForo's standard entity/repository/controller pattern. Styles generate as CSS files that get injected via the Listener on page load. No template edits to your core templates -- it uses a single template modification on the visitor menu to add the "Persona" link.
Requirements :
Télécharger V1.1.5 :
Télécharger V1.2.0 :
Version 1.3.1 :
Permission support -- Persona now uses XenForo's built-in permission system. You'll find a "Can use Persona" option under Groups & permissions in the admin panel. Set it to Allow for the groups you want, No or Never for the rest. Styles already applied keep displaying; users without the permission just can't edit or create new ones.
Also in this update:
I built this because I wanted something that actually works across every page, not just posts. Persona renders on threads, profiles, popup cards, the forums list, the visitor dropdown -- everywhere a username shows up. And it plays nice with whatever theme you're running.
What's included
Username Styling :
- Solid or gradient colours
- 20 font choices (Google Fonts built in)
- Font size and letter spacing controls
- Text shadow, strikethrough, overline, text stroke
- Border and background colour around the username
- 6 animation effects (pulse, glow, wave, neon flicker, rainbow cycle, gradient shift)
- 16 icons you can place before or after your name (star, crown, fire, gamepad, trophy, etc.)
- Custom font, colour, gradient, and size for your title text
- Renders on posts, profile page, and popup card
- 6 decorative frames (gold, silver, ruby, emerald, sapphire, diamond)
- Adjustable glow colour and strength
- Glow renders as a proper circular effect on every page
- Multi-select badge system -- pick as many as you want
- Badges show inline next to your name on posts
- 5 post themes that change the look of your message area (Midnight, Crimson, Ocean, Forest, Royal)
- 7 mood options (Focused, Hyped, Chill, Competitive, Creative, Mysterious, Fierce)
- Shows as a clean styled pill next to your username
- Each mood has its own colour scheme
- Renders on posts, profile, and popup card
- Profile background colour
- Profile card colour
- 6 profile effects (snow, rain, aurora, fireflies, matrix, stars) -- dual-layer realistic CSS animations
- Save and load style presets
- Quick-apply without redoing everything
- Toggle visibility of your styles
- Disable other members' styles if you prefer a clean look
- Share your style setup with other members
- Full nameplate background, text colour, border, and radius
- Wraps around the username on posts for a standout look
- Everything updates in real time as you make changes
- Shows exactly how your post will look before you save
Every feature saves through XenForo's standard entity/repository/controller pattern. Styles generate as CSS files that get injected via the Listener on page load. No template edits to your core templates -- it uses a single template modification on the visitor menu to add the "Persona" link.
Requirements :
- XenForo 2.2 or 2.3
- PHP 7.4+
- Works with any XenForo-compatible theme
- Persona sits under Appearance in your admin sidebar. The dashboard gives you an overview of active users and a one-click CSS regeneration tool.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Version 1.0.1
Fixed an issue where usernames and custom titles in the message sidebar could lose their center alignment when Persona features were active. This affected users with nameplates, badges, mood pills, or username effects (wave, bounce, glitch, typewriter) -- the added styling would shift names and titles off-center.
Changes:
Added centering fix for message sidebar user details when per-user Persona CSS is applied
Badge wrapper now uses centered flex layout
Mood pill indicator no longer shifts username alignment
Recommended update for all installations.
Fixed an issue where usernames and custom titles in the message sidebar could lose their center alignment when Persona features were active. This affected users with nameplates, badges, mood pills, or username effects (wave, bounce, glitch, typewriter) -- the added styling would shift names and titles off-center.
Changes:
Added centering fix for message sidebar user details when per-user Persona CSS is applied
Badge wrapper now uses centered flex layout
Mood pill indicator no longer shifts username alignment
Recommended update for all installations.
Version 1.1.3
What's Fixed
Icon and Mood Badge rendering conflict resolved. When a user configured both a username icon (fire, crown, etc.) and a mood badge ("Fierce", "Chill", etc.), only one would display. The root cause was that both features were writing CSS to the same ::after pseudo-element, so whichever rule came last would overwrite the other.
The CSS generator now tracks which pseudo-element the icon occupies and automatically assigns the mood badge to the opposite one. For example, if a user picks a fire icon (which renders via ::after), the mood badge will render via ::before instead. This works for any combination of icon and badge, with no configuration needed.
Context-aware display rules (sidebar, content rows, menus, tooltips, profile headers) have all been updated to correctly handle both pseudo-elements.
What's New
Automatic CSS rebuild on upgrade. When upgrading to 1.1.3, all existing user persona CSS files are automatically regenerated during the install step. This means the fix takes effect immediately for every user who already has a persona configured — no manual rebuild required.
Upgrade Notes
Upload and install as normal through the XenForo admin panel.
The upgrade will regenerate CSS for all users with active personas. On large sites with many configured personas, this may take a few extra seconds during install.
No settings or configuration changes are needed.
What's Fixed
Icon and Mood Badge rendering conflict resolved. When a user configured both a username icon (fire, crown, etc.) and a mood badge ("Fierce", "Chill", etc.), only one would display. The root cause was that both features were writing CSS to the same ::after pseudo-element, so whichever rule came last would overwrite the other.
The CSS generator now tracks which pseudo-element the icon occupies and automatically assigns the mood badge to the opposite one. For example, if a user picks a fire icon (which renders via ::after), the mood badge will render via ::before instead. This works for any combination of icon and badge, with no configuration needed.
Context-aware display rules (sidebar, content rows, menus, tooltips, profile headers) have all been updated to correctly handle both pseudo-elements.
What's New
Automatic CSS rebuild on upgrade. When upgrading to 1.1.3, all existing user persona CSS files are automatically regenerated during the install step. This means the fix takes effect immediately for every user who already has a persona configured — no manual rebuild required.
Upgrade Notes
Upload and install as normal through the XenForo admin panel.
The upgrade will regenerate CSS for all users with active personas. On large sites with many configured personas, this may take a few extra seconds during install.
No settings or configuration changes are needed.
Version 1.1.5
Fixed -- Persona v1.1.5
The bug: regenerateUserCss() in Repository/Persona.php required two arguments ($userId and array $style), but Setup.php was calling it with only $userId during the post-upgrade rebuild step. This caused an ArgumentCountError any time someone upgraded from an older version (like 1.0.1 to 1.1.3 or 1.1.4).
The fix: Made $style an optional parameter (array $style = null). When it's not passed, the method now fetches the user's style data from the UserStyle entity automatically. Both call sites work -- the Setup upgrade path (one arg) and the normal save path (two args).
Fixed -- Persona v1.1.5
The bug: regenerateUserCss() in Repository/Persona.php required two arguments ($userId and array $style), but Setup.php was calling it with only $userId during the post-upgrade rebuild step. This caused an ArgumentCountError any time someone upgraded from an older version (like 1.0.1 to 1.1.3 or 1.1.4).
The fix: Made $style an optional parameter (array $style = null). When it's not passed, the method now fetches the user's style data from the UserStyle entity automatically. Both call sites work -- the Setup upgrade path (one arg) and the normal save path (two args).
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Version 1.2.0 What's Fixed
Username background and border not rendering in sidebar widgets. When a user configured a background colour and/or border on their username, it displayed correctly in tooltips, the live preview, and post areas — but not in the "Members online" sidebar or similar inline-list contexts. The root cause was an override rule that explicitly stripped
Background clipping on gradient + background-colour combinations. When a user had both a text gradient and a background-colour pill, the gradient's
Upgrade Notes
Upload and install as normal. CSS is automatically regenerated for all users. No settings changes needed. Recommended update for all installations.
Username background and border not rendering in sidebar widgets. When a user configured a background colour and/or border on their username, it displayed correctly in tooltips, the live preview, and post areas — but not in the "Members online" sidebar or similar inline-list contexts. The root cause was an override rule that explicitly stripped
background, border, and padding from usernames inside .p-body-sidebar and .contentRow containers. The fix removes those stripping rules and applies display: inline-block; vertical-align: baseline instead, so background pills and borders render cleanly in comma-separated inline lists across all themes.Background clipping on gradient + background-colour combinations. When a user had both a text gradient and a background-colour pill, the gradient's
background-clip: text was applied to the outer wrapper as well as the inner span, clipping the pill to the text shape. The CSS generator now resets the outer element to background-clip: border-box when needed, keeping the pill visible behind the gradient text.Upgrade Notes
Upload and install as normal. CSS is automatically regenerated for all users. No settings changes needed. Recommended update for all installations.
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Version 1.3.0 :
This update addresses a number of input validation issues that were reported by a community member (thanks qubn for the thorough write-up).
What's fixed:
Upgrade: Upload and install through the addon installer as usual. No database changes required.
This update addresses a number of input validation issues that were reported by a community member (thanks qubn for the thorough write-up).
What's fixed:
- Font fields (username and title) are now validated against the known font list before saving. Previously these were free text, which meant a crafted value could inject into the Google Fonts link tag or into generated CSS. Both are now blocked.
- Gradient direction, border styles, text transforms, icon names, nameplate shapes, and all other constrained fields are now validated against strict allowlists on save. Anything not on the list gets silently replaced with the default.
- Colour values are validated against a strict regex (hex, rgb, rgba, hsl, hsla only). Arbitrary strings can no longer be injected through colour fields.
- URL fields are validated for scheme (http/https only), and javascript/data/vbscript schemes are explicitly blocked.
- The blocked-user check has been extended to the Import, Copy, Revert, and Reset actions. Previously it only applied to Save and the main page load.
- Tier enforcement now happens inside the core save method itself, so importing a style code, copying from the showcase, or reverting from history can no longer bypass tier-locked frames, badges, or themes.
- Font names are sanitized before being injected into HTML link tags in the page container listener.
Upgrade: Upload and install through the addon installer as usual. No database changes required.
Permission support -- Persona now uses XenForo's built-in permission system. You'll find a "Can use Persona" option under Groups & permissions in the admin panel. Set it to Allow for the groups you want, No or Never for the rest. Styles already applied keep displaying; users without the permission just can't edit or create new ones.
Also in this update:
- Fixed an issue where rainbow, shimmer, and colour-cycle effects could freeze on certain styles
- Custom font uploads no longer cause a fatal error on save
- Listener output is now cached (5-minute TTL) to reduce query load
- Cleaned up leftover backup files from the package
- Tightened embed URL sanitisation
Pour consulter le contenu, vous devez : Se connecter ou S'inscrire.
Pièces jointes

