NFT Marketplace 6.2.9
Latest4 September 2026
This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.
NFT Marketplace v6.2.9
Release Date: September 4, 2026 Tags: ANALYTICS, MARKETPLACE, WEBSOCKET, ONBOARDING, PRICING
Requires Core v6.7.6.
Overview
Four routes in this addon have never returned a usable answer, and one of them is the collection statistics behind every card the marketplace broadcasts. None of it failed loudly: a query for a column that does not exist raises an error the route swallows, a websocket that matches nobody still reports a successful subscribe, and a price that cannot be resolved comes back as "unpriced" rather than as a fault.
Three of the four have no screen calling them today, so what changes for a customer is the token page's live feed; the rest is a repair to what the API answers, which matters if you have built anything against it.
They were found by a set of scanners added to the build in this cycle, not by reports, and each is a different way for a mistake to be invisible:
- The creator analytics endpoint,
GET /api/nft/creator/analytics, answered an error on every request. It askednft_collectionfor four columns it has never had, and its hand-written SQL readnft_sales,nft_tokensandnft_creators— the tables are singular. No screen calls it today; anything you have built against it got a 500. - Every collection card the marketplace socket broadcast showed zeros, because it filtered tokens on a status only a listing can hold.
- The whole live feed reached nobody, three faults deep.
- An NFT priced in a crypto asset other than a stablecoin came back unpriced, which also skipped the high-value KYC gate where an operator had switched it on.
- The admin readiness route could never report launch-ready, because four of its scored checks read settings keys that nothing writes. The onboarding checklist screen reads a different route and is unaffected.
Update Instructions
# 1. Update the addon in Admin → System → Extensions
# 2. Apply the release
pnpm updatorNo schema change, no seeder, no .env change. pnpm updator stops the stack,
reconciles dependencies, rebuilds the frontend and restarts — and the frontend
rebuild is the half that makes the live feed real, so a backend restart on its
own is not enough here.
Upgrade Notes
Figures that were zero will change, because they were never measured
The creator analytics endpoint, the collection statistics and the readiness score have all been reporting the absence of data rather than the data. After this update they report what the marketplace actually holds. Expect volumes, floor prices and item counts to move on the first load; nothing about the underlying records has changed. The readiness score moves only on an install that has actually saved its NFT settings, and no screen displays it today.
Per-token royalties are refused rather than silently dropped
Batch minting accepted a royaltyPercentage per token, validated it against the
platform maximum, and then handed it to a column that does not exist, so
Sequelize discarded it. Royalty is a property of the collection. A batch
that sends a per-token royalty different from the collection's is now refused
with that explanation, per token, instead of reporting success and storing
nothing. A batch that sends no royalty, or one matching the collection, is
unaffected.
Fixed
The creator analytics endpoint
- Fixed — it selected
totalItems,volumeTraded,floorPriceandtotalSalesfromnft_collection, and the table has never carried any of them. They are aggregates, and they are now computed as subqueries the way the three figures beside them already were. The ordering clause named the same missing column. - Fixed — six inline subqueries read
FROM nft_salesandnft_tokens, and two raw queries beside them read those names plusnft_creators. The tables arenft_sale,nft_tokenandnft_creator; only the hand-written SQL pluralised them, so all eight statements raised "Table doesn't exist". Raw SQL is not typechecked and a mocked query never runs the string, which is why this survived.
The marketplace live feed
- Fixed — collection statistics filtered
nft_tokenon statusACTIVE. The token statuses areDRAFT,MINTEDandBURNED;ACTIVEbelongs to a listing. The token list came back empty, so both price aggregates short-circuited through their length guards and every collection card the socket has broadcast showed zero items, zero floor price and zero volume. - Fixed — the live feed reached nobody, and the subscription key was only the first of three reasons. The client subscribed under one payload shape while the route broadcast under another, so the broker never matched a subscriber; the frames it would have delivered carried a stream name the client had not registered for, so the socket manager dropped them; and the handler read one level too deep into the frame it was given. All three are fixed together, because repairing only the first would have left the feed just as dead while looking fixed.
- Fixed — the collection editor announced Contract: undefined after a
successful deployment. The route answers the address one level below the
response envelope, and a missing field is simply
undefinedon its way into the message.
Pricing and readiness
- Fixed — the USD price of a crypto asset came from a
pricecolumn onecosystem_token, which does not exist. The query raised "Unknown column", the surrounding handler recorded it as "the ecosystem extension may not be available", and every caller received no price. USD and the stablecoins are short-circuited above this branch, so what it cost was every NFT priced in any OTHER crypto asset: no USD figure, and — where an operator had switched on the high-value KYC requirement — a purchase that passed ungated, because the gate cannot value what it cannot price. Prices now come from the same source the rest of the platform uses. - Fixed — the admin onboarding readiness route read four settings keys that nothing has ever written. Two were snake-case names for a screen that writes camel-case, so the critical task "Configure marketplace fees" could never clear and the creator-verification check was always false; one asked for a platform KYC key by the wrong name, so KYC read as disabled however it was configured; and the count of configured settings matched a key prefix that matches nothing, so two more checks were false on every install. The two switches now read their real keys, and read the value rather than the presence of a row — presence is backwards, since the settings panel saves changed keys only, so a switch at its default has no row and a switch turned off has one saying "false".
Dead terms
- Fixed — a token query listed
LISTEDandSOLDamong the statuses to match, and an auction activity feed listedAUCTION_CREATED. Neither column can hold those values. Both figures were already correct by accident; the terms are removed because the next reader would reasonably trust the list, and the same names on a write would throw and lose the row.