MLM & Affiliate System 6.1.6
2 August 2026
This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.
MLM & Affiliate v6.1.6
Release Date: August 2, 2026 Tags: ADMIN, DASHBOARD, REPORTING, METRICS, GROWTH FIGURES, MONTH BOUNDARIES, UTC, CHARTS, EARNINGS, COMMISSIONS, APPROVALS, PAYOUTS, MULTI CURRENCY, DESIGN SYSTEM, BUG-FIXES
Overview
Version 6.1.6 is about the admin affiliate dashboard, and it starts with two faults in the same place: how that page compared this month against last month.
Both of them flattered the numbers. The "vs last month" baseline was short by nearly a full day, and a baseline that is too small makes growth look larger — so every growth percentage on this dashboard has been reading high, silently and always in the same direction. The month boundaries were also worked out on the server's own local time while the database groups those same rows in UTC, so the newest column of the earnings chart could read zero while that month's earnings sat under a label nothing on the page looked up.
What replaces all of that is the work the page was not doing. The dashboard now opens with the three things that can be waiting on an operator — referrals not yet approved, commission accrued but not yet paid, and affiliates who used to convert and have stopped — each a full-table count, each a link into the registry that clears it.
Every growth percentage on this dashboard changes, and the old values were wrong. Read Upgrade Notes before comparing anything against a figure you recorded last month.
Requires Core v6.6.1.
Update Instructions
pnpm updatorThen restart the backend:
pm2 restart allNothing needs repairing and nothing is rewritten. Every fault in this release was in how a figure was calculated at the moment the page asked for it, not in what was stored — no referral, reward or commission row is touched, and there is no query to run afterwards. The dashboard simply reports different, correct numbers the next time it is opened.
What does need doing is on paper rather than in the database: any affiliate growth figure you have recorded from this page cannot be compared with the ones you will see now. The comparisons in Upgrade Notes say which figures moved and in which direction.
Upgrade Notes
Every "vs last month" percentage on the affiliate dashboard was inflated
The previous month was measured as running from its first day up to and including midnight at the start of its last day. Nearly a whole day of it was missing from the baseline on every month, in every month, since this dashboard existed.
- Changed: the comparison window is now the whole previous month. Because the baseline grows, every growth percentage on this page falls — the commission earned figure, the referrals figure and the affiliates figure. A month reported as up 40% may be up 30%; a month reported as growing may turn out to have shrunk.
Month boundaries are now read in UTC, so figures near a month change move
The two month boundaries were built from the server's local clock, while the database compares and groups those rows in UTC.
- Changed: referrals and commissions created in the first hours of a month were counted against the wrong month. Which way round depended on your server's offset: a host behind UTC pushed early-morning rows back into the previous month, a host ahead of it pulled the previous month's last hours forward.
The 12-month earnings chart could show a zero that was not zero
The chart's column labels were generated on the server clock and its totals were grouped in UTC, so the two could disagree about which month it currently is.
- Changed: both sides are now built on the same clock. The newest column could previously read zero while that month's commission existed under a label the chart never looked up — and at the far end, rows dragged in from before the 12-month window were grouped under a label that is not on the axis and silently discarded.
One headline tile was showing another tile's change figure
- Changed: the total-affiliates tile printed the referrals change beside the affiliate count, so ten new referrals from one existing affiliate read as "+10% affiliates". It now counts distinct affiliates who introduced somebody in each window and compares those.
The "conversion rate" tile is gone, and was never a rate
It divided the reward rows created this month by every referral the programme has ever recorded. The numerator was a month and the denominator was the whole history, so it fell every month a healthy programme ran and could not reach 100 even if every referral converted. Its month-over-month change compared two such numbers against the same all-time denominator.
- Changed: the tile is replaced by earning affiliates — how many of your affiliates have ever been paid, out of how many have referred anybody. That one is exact.
Totals only carry a currency symbol when your programme has one currency
- Changed: the reward amount is a plain number and the currency lives on the condition that granted it, so a total spanning a USDT condition and a EUR one is a number with no unit. The page used to print a dollar sign in front of it regardless. It now shows the currency only when every condition that has actually paid agrees on one, and otherwise prints the figure bare and says mixed at the top of the page.
Added
The dashboard opens with what is waiting on you
- Added a band across the top of the dashboard carrying the three things that can need an operator: referrals not yet approved or rejected, commission accrued but not yet marked paid (as a count and as an amount), and affiliates whose conversion has stalled. Each cell links straight into the registry that clears it.
- Added a stall definition that is a statement of fact rather than a threshold somebody picked: an affiliate counts as stalled when they introduced at least one referral in the last 30 days, have been paid at least once in their life, and were paid nothing in those 30 days. Somebody who has simply never converted yet is a different problem and is deliberately not counted here.
- Added a panel listing the five worst of them by recent referrals, with the total alongside.
A figure that says whether the programme works for more than a handful
- Added an earning affiliates tile in place of the removed conversion rate: the share of your affiliates who have ever been paid, with the two counts it is derived from stated underneath.
- Added a share of programme earnings bar to each row of the top-affiliates list, which answers the question the old bar was pretending to: is one account taking most of your payout?
The page keeps itself current
- Added a refresh every 60 seconds, and only while the tab is actually in front of somebody — an approval queue that moves only when someone presses a button is a number that quietly ages while an operator watches it.
- Added a last updated clock and a live indicator that stops claiming to be live when a refresh has failed.
- Added a manual Refresh button.
Changed
The affiliate dashboard now uses the platform's standard admin frame
- Changed the dashboard onto the shared admin page frame, so its width, spacing and heading match every other admin area rather than being sized by hand.
- Changed the page to render one heading. The failure branch wrote its own, so which heading you saw depended on whether the data had loaded.
- Removed the Quick Actions card. Its three entries — Settings, Conditions, Rewards — are three of the five links in the affiliate navigation rendered directly above it.
The dashboard survives a failed refresh
- Changed a failed background refresh to leave the dashboard on screen with a notice saying the refresh failed, instead of replacing a working console with an error. The figures on screen are still true as of the time stamped at the top.
- Changed the outright failure case — a first load that cannot be read — to keep the heading, the navigation and the Refresh button reachable, and to offer a link into the referral registry, which still works when the summary does not. It previously rendered four zero tiles and two empty charts under a red banner, every one of those zeros a claim the page could not support.
The dashboard stops sending the whole programme to the browser
- Changed the ranked affiliate list to be cut to the top ten before it is sent, and five are shown. Every referrer in the programme was previously serialised into the response so that the page could draw three of them.
A licence check no longer blanks the whole admin affiliate area
- Changed the licence gate to wrap the page content rather than the surrounding chrome. While the check was in flight, the navigation, logo, page and footer were all replaced by a single centred spinner, and the entire page then arrived at once — measured at 798 pixels of movement on this route.
Waiting screens now match the screens they stand in for
- Changed the affiliate settings and referral detail screens so that what you see while they load is the real page with its values withheld, rather than a separate stack of grey boxes built by hand. Headings, labels, icons, tab bars and table columns paint immediately and do not move when the data lands.
Fixed
Every growth percentage was measured against a short baseline
- Fixed the previous month being measured as ending at midnight at the start of its last day, fed to a comparison that includes that instant — so the baseline was every day of the month except its final moment. A smaller baseline makes growth look larger, so every "vs last month" figure on this dashboard read high, on every installation, in the flattering direction, without ever erroring. See Upgrade Notes.
Month boundaries were computed on the wrong clock
- Fixed the current and previous month boundaries being built from the server's local midnight while the database compares those rows in UTC, so referrals and commissions in the first hours of a month were counted against the wrong month. See Upgrade Notes.
The 12-month earnings chart could label a month nothing had filled
- Fixed the chart's column labels being generated on the server clock while its totals were grouped in UTC. Whenever the two disagreed about the date — the last hours of any month, and permanently on a far-offset host — the newest column named a month the totals had not started filling, so it rendered zero while that month's commission sat under a key nothing looked up.
- Fixed the same split at the other end of the window, where rows from before the twelve months were pulled in, grouped under a label absent from the axis, and discarded — work done and thrown away.
The affiliate tile carried the referral change
- Fixed the total-affiliates tile printing the referrals delta as its own. A month in which ten new referrals arrived from one existing affiliate read as +10% affiliates. It now compares distinct affiliates who introduced somebody in each window. See Upgrade Notes.
A month that went down printed two minus signs
- Fixed the change chips adding a sign to a figure that already had one, so a month that lost 12% of its affiliates rendered as
--12%. The sign is now applied once, and the up or down tone is taken from the value itself rather than from a second field that could disagree with it.
The chart's month labels were a month early for most of the world
- Fixed each column of the earnings chart being labelled by parsing its month as UTC and then formatting it in the viewer's time zone, so every operator west of Greenwich saw each column labelled with the previous month. Labels are now pinned to UTC, which is the clock the totals are grouped on.
"Conversion rate" was not a rate
- Removed the conversion-rate tile. It divided this month's reward rows by all-time referrals, so it fell every month a healthy programme ran and could never reach 100. It is replaced by the share of affiliates who have ever been paid, which is exact. See Upgrade Notes.
- Fixed the per-affiliate progress bar on the top-affiliates list, which drew the same ratio per affiliate — rewards divided by referrals. A multi-level programme pays several rewards for one referral, so 240% was a normal value for a good affiliate, and because the bar clamps at full, every one of your best affiliates rendered as an identical full bar. It now shows that affiliate's share of total programme earnings, which cannot exceed 100 and answers the concentration question directly.
Every total was labelled in dollars
- Fixed the dashboard printing a dollar sign in front of every money figure. The reward amount carries no currency of its own — the currency is on the condition that granted it — so a programme running a USDT condition beside a EUR one had its combined total labelled in a third currency it does not use. See Upgrade Notes.
The status ring counted referrals and called them affiliates
- Fixed the account-status ring being titled Affiliate Status with Affiliates in its centre, while the figures behind it group referral rows by status — so anybody who had referred two people was counted twice. The card and the ring now both say referrals, which is what they show.
- Fixed the ring's colours being mapped to two statuses the affiliate programme does not use, leaving Rejected referrals unpainted and falling through to an arbitrary colour.
- Fixed the ring's segment labels being title-cased in English rather than translated, so the legend read Active, Pending and Rejected whatever language the admin was running in.