Waving just got competitive. XenPing now shows how many waves each member has received and crowns your friendliest members on a brand-new leaderboard β turning a simple π into a daily reason to come back.
Waves received" counter on every profile. Right next to the Wave button, a pill shows the total number of waves a member has received. It's visible to everyone β members, guests, even on your own profile β as social proof that encourages people to collect more waves.
Most waved" leaderboard. A new public page (/waves) ranks members by the waves they've received, with gold / silver / bronze for the top three and a "your waves received" card at the top. A "Most waved" tab is added to the navigation so it's always one click away.
GOOD TO KNOW
The profile counter and the leaderboard link to each other, so members go from a profile to the full ranking in a single tap.
Built entirely on the existing data β no new tables, and the leaderboard stays fast as your wave count grows.
Fully configurable flame tiers. You're no longer limited to the 5 built-in tiers. Create as many as you want and set each tier's name, day threshold, colour, FontAwesome icon and an optional animated glow β from a redesigned ACP page with a live preview.
"Has reached a streak of at least N days". Reward members the moment they hit a streak milestone. Because it plugs into XenForo's user-criteria system, it also works for user group promotions and notices, not just trophies.
Top streaks" widget. A new sidebar widget showing your live streak leaderboard with each member's flame. Drop it on the Members page, the forum list, or any widget position β the number of rows is configurable.
Improved
Redesigned flame-tier management (clean table overview + live flame preview when adding/editing a tier).
The XenStreak admin section now lives under the XenSupport tab in the Admin control panel.
Fixed
Make the flame truly yours: design your own streak tiers, reward your most loyal members with trophies, and showcase your top streakers anywhere with a brand-new widget β plus a stability fix.
Fixed a rare error that could appear in the server error log when the same member triggered two requests at once (e.g. overlapping "keep-alive" pings from multiple tabs). Streak rows are now claimed atomically, so no duplicate-key error is logged.
UPGRADING
Upgrade is automatic. Your flames are preserved β the original 5 tiers (orange to red to blue to purple to gold) are recreated by default, so nothing changes visually until you choose to customise them.
XP economy API (balance, spend, refund): other add-ons can now use XenLevel XP as a spendable currency.
Upgrading is one click from your Add-ons page, no configuration required.
Fixed
Stamp Album: on a completed set, the "Completed" badge could overlap the set title and description. It now sits cleanly above the title and stays correct in every language. Thanks to everyone who reported it.
Stamp Album - a brand new layer of progression on top of your existing XP and achievements. Members collect stamps across themed sets, watch their album fill up, and earn bonus XP when they complete a whole set. Stamps unlock automatically based on activity (posts, reactions, XP earned, level reached) or when a linked achievement triggers. Four rarity tiers (common, rare, epic, legendary) with visual progression.
New public page at /level-album/ with one card per set + progress bars + preview tiles
Single-set page showing every stamp inside (locked vs unlocked) with criteria hints
Set completed" celebration alert + bonus XP payout
11 starter stamps across 3 sets shipped on install, ready to use
Personal XP Boosters - a new reward type in the XP shop. Members buy a time-boxed personal multiplier and earn faster while it lasts.
Stacks intelligently with global Double-XP events (admin-configurable cap, default 4x)
Smart "extend, don't downgrade" rule on re-buy: stronger booster wins on multiplier, duration always adds up
Hourly cron quietly resets expired boosters
XP Transaction History - a new public page at /level-history/ where members can see their full earn-and-spend log. Color-coded amounts (green earn, red spend), source icons, paginated.
Full ACP CRUD for stamps and stamp sets (drag handles, live preview tile, status toggles)
Two new admin menu entries under XenLevel
album master switch, stamp alert toggle, booster max-stack cap
Existing XP shop now accepts a third reward type (booster) alongside collectible and usergroup
Upgrade notes
Drop the new files over your existing install
Visit ACP > Add-ons > XenLevel, click Upgrade
The 11 seed stamps appear in your album immediately. Edit, deactivate or delete them as you like
No breaking changes to existing achievements, tiers, quests, events, or the XP shop. Your data is safe.
Behind the scenes
The Awarder now applies personal boosters on top of active Double-XP events, capped to keep things sane
Achievement unlocks now also award any linked stamps, so the two systems compose naturally
LESS premium glassmorphic design, light + dark mode, mobile responsive
Free upgrade. Enjoy.
Improved
Vanilla JS, no jQuery dependency, no perf hit on the hot path
Drop the new files over your existing install and click Upgrade in ACP > Add-ons > XenJourney.
Improved
The preset apply flow now reads the preset reliably, so the confirm page and the apply action both work as intended.
Removed a dead admin route that could never match and was the source of the issue.
Hardened the confirm form so the selected preset always carries through to the final apply step.
Upgrade notes
No schema changes, no data migration. Your existing steps and member progress are untouched.
If you were unable to apply a preset before, you can now do so right after upgrading.
Under the hood
Thanks to the member who reported this. Keep the feedback coming.
Fixed
XenJourney 1.0.1 - Preset fix
applying a preset from the Browse presets page failed with the error "The requested preset is not part of the library." The preset id was being lost between the button and the apply action, so no preset could be applied. This is now fixed and every preset (Generic, Gaming, Tech, Lifestyle) applies cleanly.
Root cause traced through the routing layer, fix verified end to end in the ACP (apply Gaming preset, then Generic, both succeed).
New "Grace days" option (streak freeze). Configure how many missed days a member can have before the streak resets. Default is 1, so a member who misses one busy day keeps their streak instead of losing everything. Set it to 0 for the old strict behavior (must visit every single day).
Fixed
The headline: several of you reported streaks resetting "for no reason." After a deep dive, the day-counting math turned out to be correct in every timezone. The real culprit was two design flaws working together, and both are now fixed.
One source of truth. The displayed flame, the leaderboard, and the reset rule now all use the member's own timezone and the exact same threshold. The flame can no longer show a streak that is already lost.
Timezone consistency. All "what day is it" checks now resolve through the member's profile timezone (falling back to the board timezone, then UTC), so the flame is accurate for everyone regardless of where they live.
Heads up on upgrade
Default behavior is now slightly more forgiving: one missed day no longer breaks a streak (Grace days = 1).
Prefer the old strict rule? Set ACP > Options > XenStreak > Grace days to 0.
No schema changes, no data migration. Existing streaks are untouched.
Under the hood
Shared timezone + day-difference helpers, so the badge and the tracker can never drift apart again.
Verified against a 32-case matrix (7 timezones, DST spring and fall transitions, half-hour offset zones, day-boundary visits) plus a dedicated grace-period test suite.
Thanks to everyone who reported this. Keep the feedback coming.
Changes
XenStreak 1.0.7 - Streaks that no longer reset out of nowhere
Free update. Built straight from community feedback.β
What was actually happening
The flame lied, then reset. The badge stayed lit for ~2 days (measured in the server timezone), but a streak reset the moment a single day was missed (measured in the member timezone). So the flame kept glowing on a streak that was already broken, then dropped to 1 on the next visit. From the member's side: "it was alive, then it reset for no reason."
No forgiveness. Missing one single day wiped the entire streak.
New "Recalculate XP" tool in the Admin CP under XenSupport β Recalculate XP. One click, it walks every member, computes the XP they should have based on their current post count, thread count, reactions received and the register bonus, and tops up the difference.
Drop the new files in and run the upgrade from the Admin CP.
Fixed
XenLevel 1.0.1 - Retroactive XP backfill + bug fix
/level-quests/ template error
Changes
Recalculate XP for existing members
Built for forums that install XenLevel on a community that already has thousands of posts and likes, so existing members aren't stuck at zero XP from day one.
Top-up only, it never removes XP.
Idempotent, you can re-run it safely (members already at target get nothing).
Goes through the standard XP engine, so levels, tier rewards and achievements all fire normally as members catch up.
The quests page was throwing "Function intval is unknown" on some XenForo installs because intval() isn't on the templater whitelist. Swapped for the whitelisted floor() which does the same rounding job. The page loads normally again.
Just drop the new files in and run the upgrade from the Admin CP.
Fixed
XenStreak 1.0.6 β bug fixes
Changes
Profile badge cleaned up
The streak badge on member profiles was showing the day count twice on desktop ("9 9 days" instead of just "9 days") because of a redundant element. It now reads "[flame] 9 days" cleanly on both desktop and mobile.
Renamed the "Total daily visits" stat to "Total days visited" for clarity (it is the lifetime count of days a member has visited, not a per-day number).
Fixed
Streaks now roll over at the member's local midnight (their timezone) instead of UTC. This stops streaks from resetting for members who visit late at night. Daylight saving time is handled, and it falls back to the board timezone when a member hasn't set their own.
The flame "active" window is more tolerant of timezone offsets, so a valid streak is no longer hidden by mistake.
Exclude members by username: you can now keep a specific member off the spotlight by their username, no need to deal with user group IDs. Handy for excluding yourself, or any member whose group is otherwise eligible.
Excluded members are now also hidden from the Contenders list.
A member you just excluded who was already the current spotlight is now replaced automatically on the next run, even with "Lock winner" enabled (before, they could stay featured for the rest of the period).
Fixed
Clearer help text on the excluded groups field (reminder: group 1 is Guests, the Administrative group is 3).
Missing tooltips when hovering cards and avatars: added
Improved
Cleaner admin "Current spotlight" view
More resilient styling that works across custom themes
Better truncation handling for long usernames
Drop-in upgrade. No manual action needed.
Fixed
Past spotlight cards rendering broken on some pages: fixed
Run now" in the ACP creating duplicate entries instead of refreshing the current one: fixed (existing duplicates are cleaned up automatically on upgrade)
Past spotlights" section disappearing when only one winner exists: fixed
Edit announcements: announcements can now be edited after posting. A pencil icon appears next to the existing pin and delete buttons (visible to the announcement author, team managers, and admins with bypass). The form is pre-filled with the existing title and message. The "edited" indicator shows up automatically once a change is saved.
Root cause: the date-clamping logic introduced in 1.0.20 (designed to prevent year-30000 spam events) had a subtle race condition. When a submitted date was older than now - 24h, it was silently clamped to exactly now - 86400 at the moment of save. But the upcoming-events listing filters on start_date >= now - 86400, where now advances every second. A few seconds after save, the new now - 86400 cutoff was after the saved start date, so the event fell off the listing.
Fixed
events disappearing right after creation. Symptom: a freshly-created event would appear briefly on the team page, then vanish on the next refresh or page interaction (e.g., clicking "Accept" on a pending application).
the lower bound clamp has been removed. Dates are now saved as the user submitted them. The upper bound (no events past now + 5 years) is still enforced to prevent integer overflow / spam. If a user creates an event with a date in the past, it simply won't show in the "Upcoming events" section β which is the expected natural behavior. The event still exists in the database and is accessible via direct link.
Garbled text in Compare Teams. Two content: CSS rules contained corrupted unicode (mojibake) and have been replaced with encoding-safe Unicode escapes. Please perform a hard refresh (Ctrl+F5) after upgrading to clear the CSS cache.
Changes
Duplicate comment submission. Removed a redundant JavaScript submit handler that was firing alongside XenForo's native AJAX form handler.
Duplicate key error when creating a second team. A database migration now drops the legacy "one team per user" unique key, so users can belong to multiple teams as intended by your group permissions.
Template error on Edit details. The implode(chr(10), β¦) call was being blocked by the templater whitelist; it has been moved to a server-side getter.
ACP menu entry. The admin navigation entry was orphaned (parent_navigation_id referenced a non-existent parent). It now correctly sits under Setup β Teams.
Fixes a "Template alert_user_xs_spotlight_selected is unknown" error that could appear in member alert popups when uninstalling a previous version. Uninstall now cleans up its own alerts, and the upgrade also clears any leftover broken alerts from older installs as a safety net. No schema changes, safe to upgrade.