- Upgrading an older store: a payment shortfall noted in the same run that creates its table is now recorded rather than skipped.
- Upgrading an older store: settings saved during the first update are no longer lost when the store had no settings table before it, such as the list of customer wallets that need correcting.
- Upgrading an older store whose payments table marks a missing transaction id as an empty value: the key that stops a payment being settled twice now goes on in one upgrade, rather than needing a second run.
- A payment a gateway confirmed but that could not be settled (for example because the add-on that sells it was switched off meanwhile) is now listed under Payment requests > Paid, not ordered for review after two hours, instead of staying pending unseen.
- Before listing a payment its gateway confirmed but that was never settled, the store now asks that gateway once where it can, and settles the payment if the gateway confirms it in full.
- A checkout, Buy Now or wallet top-up whose total is too large to store is now refused before anything is created, whatever the database's settings.
- When a gateway reports a payment whose reference already belongs to another request, and it came from a different gateway (some gateways use plain numbers that can coincide), it is now listed under Paid, not ordered for review instead of only in the error log. Check with gateway says the same in plain words.
- Such a payment can be confirmed as owed or refunded only after you tick that you checked the gateway and it is a separate payment, since it may be the other request's payment reported again.
- A gateway that sends the same confirmation again gets the same "already processed" answer each time; nothing is charged or delivered twice.
- An internal check script that moved into the shop add-ons answers as gone if an older copy of it is still on a store.
- A payment a gateway reports that can be neither settled nor kept as a late payment (for example a reference that already belongs to another order) is now listed under Payment requests > Paid, not ordered for review, instead of leaving no record.
- Claiming a prize whose delivery fee takes the charge past what one payment can take is now refused with the usual 'couldn't be claimed' message, and the prize stays unclaimed so it can be claimed once the fee is fixed; the error log names the fee.
- A payment a gateway confirmed while the add-on that sells it was switched off is now kept for review under Payment requests > Paid, not ordered on every gateway, and the buyer can still pay the request again.
- A store whose older payments share a gateway reference, so the key that stops a payment being settled twice couldn't be added on upgrade: a payment reported again for a different order is now refused, instead of settling that order too.
- Installing the coins-only package over a store that takes real money, under a licence that covers real money: the installer now asks whether to keep taking real money or make the store coins-only, instead of refusing to go on. Keeping real money asks for at least one payment gateway from the licence, and, where withdrawal requests are waiting or sellers are owed for sales, the add-on that pays them; anything the licence doesn't cover is named for the owner to pay themselves. Before a store becomes coins-only, the installer also names the sellers still owed for sales, along with withdrawals still waiting to be paid.
- Payments: a payment kept for review because nothing could fulfil it, and confirmed as owed, is now closed as sorted once that same payment settles the request (also through Check with gateway), so it can't be refunded a second time. If it was already partly refunded, it stays open and is flagged as a possible double payment. If Check with gateway settled the request without naming the payment, the row goes back to review so someone checks it before any refund.
- Payments: a payment kept for review because nothing could fulfil it can no longer be refunded or confirmed once its request has been paid, if it may be the payment that paid it. That includes the moment while the order is still being fulfilled. It is marked 'Possible double payment: check first' instead.
Changelog
BidKing
Recent published updates to BidKing Starter, Plus and Pro, newest first, in plain English. Each section says which tiers include it.
Latest platform: 1.1.848, 30 Oct 2026Free updates, installed in one click
Core platform
The engine every store runs on: storefront, admin panel, wallet, add-ons and updates.
- Two test pictures that had slipped into the package are no longer included.
- The Payment gateways page has a guide behind the 'i' beside its title: how to connect a gateway, where buyers see it and the common mistakes, with a link to the matching page of the online documentation.
- The sample data's demo avatar now ships under images/static, so updating a store no longer replaces the profile picture of a customer whose old avatar file had the same name.
- Refunds name the gateway that actually took the payment: when a buyer switched payment method and then paid with the first one, the refund panel showed the method picked last and, for a payment converted into another currency, offered the wrong amount to refund at the provider. A second payment kept for refund is also shown under the gateway that took it.
- On a store upgraded from an older version, an old cron file still on the server no longer runs its own code. It runs the current job that replaces it, under the same lock as the scheduler, and asks you to point your cron at cron/dispatch.php; an old file no current job replaces does nothing. Over the web it needs your cron key.
- Older pages a store from before the plugin system may still have on its server (old page parts, a bundled sample game and editor samples, and old demo scripts) now answer as gone instead of running.
- On a demo store, a short line under the robot check on the sign-up and Forgot password forms says it protects the demo, and links to the reCAPTCHA add-on (sold separately) for a store's own login and sign-up forms. Stores that aren't demos never show it.
- Forgot password's reply never carries an earlier refusal's message along with it.
- Admin pages that have a page on the online documentation now show a small 'Online docs' link next to the page name, opening that page in a new tab: the dashboard, settings, payment gateways, transactions, the item library, themes, software update, add-ons, translations, cron, licence and email setup. The Documentation page and the Contact support window link the online docs too. Nothing shows on a store whose edition has no online docs.
- For add-on developers: an admin page can name its documentation page with a new 'docs' key on add_admin_page().
- Setting up the new version over a store from before the plugin system: the setup wizard's add-on list now follows the store's old on/off switches, so a feature you had switched off stays off, along with the add-ons that need it.
- Setting up the new version over a store from before the plugin system keeps an older table that now clashes with a new one by renaming it aside (to its name plus _legacy), never deleting it.
- Setting up over such a store also gives each customer who shared a referral code with an older account a code of their own, so the setup can finish; the older account keeps the code.
- The default app icons (logo_192.png, logo_512.png), default avatar and stock logo files now ship in images/static/defaults/ and are used only where a store has no file of its own, so a store's own files are never replaced.
- Removed: the demo-only email inbox page, which only ever ran on demo stores. On a demo, an email that isn't sent is now simply dropped, and Forgot password replies the same as on any store. The page's empty table (tbl_demo_inbox) is left in place by the update and is safe to keep; database/migration.sql removes it if you run it by hand.
- Setting up the new version over an older database no longer stops on tables that point at one created later in the same step (email campaign recipients, customer group members, and others): those are made on a later pass.
- Setting up the new version over a store from before the plugin system now converts customer wallets to exact amounts when every balance is a plain amount, keeping a backup and checking the total afterwards; otherwise it leaves them unchanged and lists the accounts that need a look.
- It also runs the same one-time updates as a software update. On such a store, old seller balances are never moved into customer wallets: they're listed on the admin dashboard for you to settle.
- Converting customer wallets to exact amounts on an older store now always makes a new backup table, picking a free name, and stops before changing anything if it can't.
- Settings › Rewards and Wallet have an 'i' beside their titles that opens a short guide to coins and the wallet: what the settings do, where customers see them and the common mistakes, with a link to the online docs.
- On Settings › Wallet, the explanations behind each option now open with a click or tap on '?', instead of only on hover, and the longer explanation of spend-only coins moved behind one too. On Rewards, the note shown when the referral coin purchase bonus is a percentage moved behind a '?'.
- For add-on developers: an add-on can add a unique key to a table safely: where two rows share the value, nothing is changed and the Plugins page says which values to fix before running Upgrade again.
- Setting up the new version over an older database now counts every table's rows before and after, and tells you that every row is still there, or which tables lost rows.
- On a store upgraded from an older version, switching on an add-on that follows two of the old feature switches no longer turns back on one the store had switched off: a store with games off and earning on keeps its games off.
- When an update or the installer gives a customer a new referral code because an older account already had the same one, the change is now recorded: each such account, its old and new code and the account that kept the code are saved in the store's database (the referral_codes_reassigned option), so those customers can be told their referral link changed.
- Upgrading an older store's database in the setup wizard keeps that store's own currency, coin value, commission and bonuses. A coins-only edition makes a real-money store coins-only only if you choose that, and the coins-only package stops to ask before it installs anything over a store that takes real money.
- The upgrade step can't be left half done: it runs without a time limit, a cut-off run comes back to the upgrade instead of moving on.
- Upgrading a store with many customers no longer stalls on making their referral codes unique: it's now done in one pass, not one account at a time.
- For add-on developers: a new product_shipping_total filter sets a Buy Now line's whole shipping once the quantity is known, so an add-on can price shipping by the order rather than per unit; the order and the checkout page's live price both use it.
- On a store updated from a version that had the demo-only email inbox, its old pages left on disk now answer as missing pages instead of running.
- On a store upgraded from an old version, files the old version left behind (backup copies, notes, logs and an old image-recolouring script) can no longer be opened from the web. Apache and OpenLiteSpeed both honour the rule, and the example nginx configuration says the same.
- Upgrading an older store: an add-on that isn't in your download still follows the store's old on/off switch, so a store with withdrawals on gets the Withdrawals add-on and keeps its pending requests.
- An upgraded store that takes real money gets the ready-to-use payment gateways a new store starts with, so deposits keep working; a coins-only store gets none.
- The release zip no longer includes placeholder.jpg and placeholder_user.jpg at the site root, so your own copies are never replaced; installing or updating adds the default only where there is none.
- On a store upgraded from an older version whose customer wallets are still stored as text, a credit or charge that couldn't be stored exactly is refused instead of losing cents, and the admin dashboard lists the accounts whose balance needs correcting. Once they are corrected, Finish the wallet switch on the same dashboard card switches wallets to exact amounts. A negative balance no longer stops that switch; its account is listed for review.
- A gateway confirming a payment with a reference that already paid another order now gets a clean "already processed" answer, so it stops retrying. Nothing is charged or delivered for it, and the store log names the order that reference paid.
- Setup wizard: choosing an empty database after an interrupted upgrade of an older one now sets the new store up as a fresh install, with your edition's starting settings, instead of treating it as the older store.
- Removed an unused constant.
- A checkout whose total is too large to store no longer keeps the coupon it reserved: the coupon is free to use again, and the buyer is sent back with the usual error instead of a server error page.
- After an update, the update page and the admin dashboard now say what happened to customer wallets when they were switched to exact amounts: switched, left as they were (with the accounts to correct), or a problem that needs checking before you take payments. The dashboard notice stays until you dismiss it.
- Setting up over an existing coins-only store no longer ticks or queues add-ons that move real money, such as Withdrawals, so the last install step no longer ends with one failed.
- On such a store, the install's add-ons step now says how many withdrawal requests from before are still waiting, so you can pay or refund them yourself.
- The update page now gives the right number of customer wallets left to correct after an update, with the first accounts to look at, as the dashboard does.
- On phones, the page now fades into its background under the bottom menu instead of running hard into it, in light and dark mode and right-to-left languages. The fade never blocks a tap, and it's solid when reduced transparency is on.
- On a store updated with the coins-only download, the old payment-gateway pages left from before answer "gone" instead of running, so no old payment can be settled through them.
- After an update, the count of customer wallets left to correct is now the full number on a large store, not the first 200.
- An old licence script left over from earlier releases is replaced on update with a file that only answers that the page is gone, so opening it directly no longer runs anything.
- On a store upgraded from an older version, the customer-wallet messages on the admin dashboard and in the update report name the wallets as the dashboard card does in Amharic, German, Hungarian, Afaan Oromoo and Urdu, and the "don't take payments until customer wallets are checked" warning reads as a clear stop in Japanese and Vietnamese. Greek and Hungarian name the backup table correctly.
- Upgrading an older store: an add-on whose parent the store had switched off is skipped rather than switching the parent back on; the upgrade screen lists the old tables kept aside (your edited email texts among them) and anything left as it was; and the last step shows the new cron line your scheduled jobs need.
- An older store's payments without a transaction id no longer stop the upgrade adding the key that keeps a payment from being settled twice.
- A wallet top-up that can't be added to the customer's balance exactly (a balance the store can't read, one that would go above the largest amount it can store, or a top-up with no coin amount) is now kept aside for you to refund or credit, instead of being added.
- A banner whose picture is a cut-out keeps its cut-out layout when the picture is served from the image CDN rather than the store's own server: the layout is worked out once, when the banner is saved, opened in the admin or first shown, and kept with the banner.
- Such a banner also keeps its picture's shape: the picture's width and height are kept with the banner too, so the card is sized for it even when the picture is served from the image CDN.
- Extensions menu: the main features now come first, and sections without a set place follow in alphabetical order.
- The Cookie Policy can now name the outside companies an add-on loads, under the consent setting that controls them, each with what it does and a link to its privacy policy. Add-ons register them through the consent_vendors filter; names and descriptions are shown as plain text and only https privacy links are kept.
- Admin pages can now explain themselves: a '?' beside a field opens a short hint by click, tap or keyboard, and an 'i' beside a section title opens a guide to what the section does, where it shows on the store and the common mistakes.
- A gateway's own payment notice can now be checked with that gateway even when the buyer picked another payment method afterwards, so the payment is credited (or kept as a late payment) instead of being checked with the wrong gateway.
- Search titles and descriptions: when a page uses another page's SEO entry for a field it leaves empty, a visitor in another language now sees that entry's translation, including your own edits to it.
- On wide screens, the Storefront features switches on Settings, General line up side by side, each beside its own title.
- On Translations, the Search box in the strings filter lines up with the Language and Content fields again, with its label above it, instead of being split across the row.
- On a customer group's rules, an extra choice an add-on puts under Purchases is a normal-height dropdown beside the rule again, instead of a tall box that pushed the rule's own dropdown down.
- On a coins-only store, the Payment gateways and Manual payments pages say the store takes no payments instead of listing methods that can't be used, and a customer's wallet and unban notes no longer mention withdrawing.
- On a coins-only store, the Payment gateways page no longer invites you to choose how buyers pay or to get more gateways.
- On a store running MySQL 8, the steps that add a missing database column or index on the fly (for example the API's sign-in secret, a user's sign-out of all devices, or the admin's sign-in log) now work instead of failing.
- On a demo store, Settings › Email now says that mail is sent by the demo's own server settings, instead of showing email server fields that aren't used there.
- If the update can't remove the sample email login from one of your email settings, it notes that in the error log and tries again at the next update, instead of stopping.
- The theme preview bar shows non-Latin text in the store's bundled fonts.
- Corrected the explanatory notes in the database code. Nothing behaves differently.
- On a server that runs several demo stores sharing one suppression list, an email address now gets at most 3 demo emails a day across all of them, not 3 from each. The server keeps the count in a file beside that list, which must exist; if it is missing or can't be written, demo emails are not sent.
- The update converts the sellers table to the store's text collation where an older version left it in a different one, and add-ons do the same for theirs when upgraded, so a search or report that compares them with the store's other tables can't fail on it. A table that can't be converted is listed in the update's database report. The sample store file creates its tables in the same collation, and a new check keeps every table's collation named.
- On a store running MySQL 8, an update now widens database columns that are narrower than the new version's, and its database report no longer lists every column as a difference.
- database/production.sql, the reference copy of the database structure, now loads in full on MySQL 8 (it stopped at the users table before). Stores are still installed and updated through the setup wizard and Software update.
- New language: Amharic (አማርኛ), for the storefront and the admin panel, machine-translated (review welcome); stores in Ethiopia are offered it first.
- Updating a store's database by hand with database/migration.sql: its first part now also runs on MySQL 8 (it stopped at the first new column before). On MariaDB it does the same as before. The rest follows in later updates.
- On a coins-only store, the help for spend-only credit and the unban note in Users are now translated into every store language.
- Updating a store's database by hand with database/migration.sql: a second part of it now also runs on MySQL 8. On MariaDB it does the same as before. The rest follows in later updates.
- New language: Afaan Oromoo, for the storefront and the admin panel, machine-translated (review welcome).
- On a coins-only store, the dashboard's coin lines (coins spent, coin orders and members who spent coins) are now translated into every store language.
- Undoing a database update by hand with a migration's down.sql: the first 33 of them now also run on MySQL 8. On MariaDB they do the same as before. The rest follow in a later update. To undo an update, use Roll back in Software update.
- Updating a store's database by hand with database/migration.sql: a third part of it now also runs on MySQL 8. On MariaDB it does the same as before. The rest follows in later updates.
- On MySQL 8 and newer MariaDB servers, the installer and the store's smaller entry points (the web app manifest and security reports) now compare text the same way as the rest of the store, so they no longer risk an "Illegal mix of collations" error.
- Updating a store's database by hand with database/migration.sql: a fourth part of it now also runs on MySQL 8. On MariaDB it does the same as before. The rest follows in later updates.
- Undoing a database update by hand with a migration's down.sql: the remaining 16 of them now also run on MySQL 8, so all of them do. On MariaDB they do the same as before. To undo an update, use Roll back in Software update.
- On MariaDB 11 servers, recording which gateway took a payment no longer relies on a text comparison the server could refuse.
- The demo store's notice on Settings › Email is now in every admin language.
- An update never switches on sending for email settings that still hold the sample login the software once shipped with, even if it couldn't remove that login yet.
- Updating a store's database by hand with database/migration.sql or a migration's up.sql: the rest of them now also run on MySQL 8, so all of them do. On MariaDB they do the same as before.
- Undoing the database version marker by hand with its down.sql: it can now be run twice without an error. To undo an update, use Roll back in Software update.
- An update no longer reports a text column that the store already holds in a larger text size than the release declares, such as support ticket messages widened for emoji. It now also widens a text column that a release makes larger.
- Updating a store's database by hand with a migration's up.sql: the tables and columns it adds are now utf8mb4, as with database/migration.sql or a new store, so they can hold emoji.
- Updating a store's database by hand: the ticket-message conversion that lets tickets hold emoji now keeps the message columns the same size as on a new store.
- A demo store can now send a visitor the few emails they ask for (password reset, sign-in code, email change), each marked as a demo and with a "Don't email me again" link. It stays off until the server owner switches it on and sets a separate sender, and it caps how many go to one inbox, from one network and from the whole site each day.
- The unsubscribe link in emails now opens a page with one button, and nothing changes until it is pressed, so a mail scanner opening the link can't unsubscribe anyone. Unsubscribing straight from the mailbox (one-click) works as before.
- When someone unsubscribes with a Gmail address, the same inbox written with dots or a +tag is unsubscribed too.
- If an add-on's update can't finish changing the database, for example because a table was busy, the Plugins page now says the update didn't finish and keeps offering Upgrade, instead of reporting it as done.
- On a demo store, an email that isn't sent is shown in a demo inbox the visitor can open at /demo-inbox, with codes, reset links and recipients hidden; Forgot password links to it.
- On a demo store, emails use only their built-in text, visitors' words reach them as short plain text without links, and links go only to the store's own address. Sign-up and Forgot password can ask for a Cloudflare Turnstile check, set in the server's configuration.
- Thai admin: the upload-log archive hint now names Security Logs › Upload Logs with the same words as the sidebar.
- Admin Documentation: the Prize draws section now describes the per-draw number range and the chances shown on the form, as the Prize draws add-on does.
- Security and fix notices now appear as a strip at the top of the admin for the people who manage updates, but only when the kernel or an installed add-on is on a version the notice affects. Each strip says what to do, links to the details and to the update, and disappears by itself once you update. You can dismiss a strip; an urgent one comes back after 7 days, and an important one after 30, until you update. The notices come signed with the update check and are checked against the key built into the store; nothing about what you see or dismiss is sent back.
- Security advisory links containing quotes or angle brackets are now refused.
- When a licence is registered to another domain, the installer now explains how to move it from your account instead of only pointing to support.
- A removed internal test page now answers as retired, like the other removed pages.
- The demo store's inbox shows dates in the visitor's language, and its Filipino page is fully translated.
- On a coins-only store, shop cards and the item page (price, phone price bar, delivery line, variant prices) show whole coins instead of amounts ending in .00, and the membership page no longer shows sample cash prices when the membership add-on is off.
- On a coins-only store, Settings no longer offers what only works with money: the payment-gateways shortcut, the currency fields and price preview, the bonus for a friend buying coins, the refund-to-wallet switch for card payments, and the Wallet cash-out section (kept while a withdrawals add-on is on). Saved values are kept as they are.
- On a coins-only store, the admin dashboard counts coins instead of money: Revenue is now "Coins spent" in whole coins with no currency sign, Paying users is "Members who spent coins", and Payments is "Coin orders". Stores that take money keep the old labels.
- A coins-only store charges no tax. Tax rules saved before the store switched to coins-only no longer apply.
- The licence notice on the activation pages and in the install wizard now says what is true: your licence covers the websites shown on its page in your account, and you move it to another domain or subdomain yourself from that page, rather than through a paid transfer.
- README: the manual installation steps are gone, since they skipped the licence binding and key generation the wizard does; it now points to the help page for when the wizard fails.
- The installer's first step now checks for the zip and gd PHP extensions, which add-on and theme downloads and image uploads need, so a server without them is caught before you enter your licence and database instead of failing later.
- New installs include a database column an add-on uses to keep a one-time upgrade step to the records that existed when it first ran.
- A prize paid in coins now shows its worth in coins on My winnings, not as money.
- In the admin, a support ticket shows the customer's wallet in coins, and a customer-group wallet rule is described and labelled in coins.
- Text in Amharic and other languages written in Ethiopic script now shows in every theme, from a font that comes with the store and loads only on pages that use it.
- The sample data (sandbox.sql) now uses a neutral placeholder picture for its products, categories, banners, games and prizes. A store that imported the older sample data shows that placeholder in place of the old sample product photos.
- The installer now knows a store's edition from a marker the release zip carries, instead of working it out from which folders are present; zips built before the marker still install as before.
- The prize draw buy bar now reads "Each ticket gets its own random numbers."
- nginx.conf.example: a game's folder address (/games/<name>/) now opens the game instead of answering 403 Forbidden. Stores on nginx: add index.html to the index line of your server block.
- The games page (/games) opens on Apache and nginx instead of answering "forbidden": the folder the games are served from no longer takes the address over. On Apache, /games first redirects to /games/; nginx serves it directly (nginx.conf.example has the two new location lines).
- Stores still using the sample mail settings must enter their own SMTP details: updating removes the sample login, and only while it is unchanged. Your own mail settings are never touched.
- New stores with a prize add-on and no hero line of their own show "Dream it. Play it. Collect it."; stores that saved their own keep it.
- The licence activation page's product-updates checkbox now names who will send them.
- The reference copy of the database structure (database/production.sql) matches the current schema again, including a new price-unit column and the current payment gateway versions.
- Auto translations: a store that had them on with no languages picked translated nothing after updating. Updating now picks the languages it translated before, once. A list you empty later stays empty.
- On MySQL 8 the checks that keep network calls, emails and payment re-checks out of an open database transaction work again: they used a MariaDB-only query, so on MySQL the VPN lookup in fraud screening failed and the other checks were silently off.
- Seller balances left in the old seller wallet, which the store no longer reads, move into each seller's account wallet when you update, once, with a wallet history entry. A balance only moves when a coin is worth 1 in your currency and exactly one ordinary account has the seller's email. Any other balance is listed on the dashboard for you to settle, and is never moved on its own.
- If your hosting does not let the database user create temporary tables, System health on the dashboard now says so and tells you what to ask your host for. Some pages, such as the referral tree, need that right.
- The update's list of kernel functions now includes the one behind the dashboard's database health line, so add-ons that need it can rely on it being there.
- The sample store's banners, page descriptions, sign-up line and tagline no longer promise a win, and the sample number draw's prizes rise with the matches, ending in a Top prize.
- The sign-in card no longer lets a blurred button show through it: the control's buttons keep their place behind the card but aren't drawn.
- On phones the sign-in card's Sign in and Create account keep their labels on one line, in every theme and language.
- A new helper for add-ons puts a control behind the sign-in card with nothing left on it for a script to use.
- Signing up and signing in by phone no longer depend on a third-party CDN: the phone field's country picker is now served from your own store. If the picker still can't load, the form works without it, taking the country code typed with the number (+91…, 0091…) or else your store's country, instead of refusing every number.
- Signing in with a phone number whose country can't be told now asks for the country code or the email address, instead of saying the details are wrong.
- Greek: a ticket for a draw is now called λαχνός wherever the English says ticket.
- Chinese: a ticket for a draw is now called 抽奖券 wherever the English says ticket.
- Ships the PayPal gateway's order callback file (payment-gateway/paypal/create-order.php) alongside its other callback files, so it is in place before the gateway plugin is activated or updated.
- Support ticket messages with emoji no longer fail on stores updated from the admin: the ticket tables are now converted to full Unicode in the background, like the other tables.
- Ships the UddoktaPay gateway's logo with the other gateway logos, so checkout shows it before the gateway add-on is first loaded.
- A new sign-in card for guests on members-only controls: the control shows behind frosted glass and can't be used, with Sign in and Create account buttons that bring the guest back to the same page, and social sign-in buttons where those are set up. Words in every storefront language.
- Auto translations: a new store's translation service address is https://api.startmymarketplace.com/translate.php. A store that already saved an address keeps it.
- Updating the database by hand with migration.sql now gives the translation service address setting the same default as a new store. An address the store already saved is not changed.
- On a demo store whose email isn't working, the forgot-password pages now say "This is a demo store: emails aren't sent" instead of saying email delivery is having problems.
- The Add-ons page keeps at most 20 suggested lists from the store, so a bad reply can't fill the site's settings.
- Running a scheduled task by hand from the admin no longer fails with an error after the task has run, and the run is recorded in the admin log. An error during such a run now names the task.
- Text columns an update adds to an older store's tables are created as utf8mb4, so emoji and other four-byte characters save in them instead of failing.
- The sign-in card's Sign in and Create account buttons are now always the same width, on phones too, and anything the hidden control keeps hidden stays hidden behind the card.
- In demo mode, a member whose phone field has no digits no longer breaks the admin's user list.
- A fresh install no longer starts with a database-check result cached on the machine that built it, and its translation service address is the current one.
- The sample store's demo customers now use example.com addresses.
- The storefront's and the admin's helper files no longer declare the same functions, so a request that loads both, such as running a scheduled task by hand, no longer fails.
- A manual payment approved by hand is recorded as approved by hand in the payment's claim, not as settled without a reference.
- Admin lists show a member's initials straight away when their uploaded picture is gone, and admin image uploads work on servers without the fileinfo extension.
- A table or column dropped by hand no longer breaks the pages that use it until the next day: the first page that hits it still fails, and the store then checks its database again, so the next page works.
- In right-to-left admin languages such as Arabic and Urdu, the admin sidebar now sits on the right, and on small screens it slides in from the right.
- The update converts an add-on's tables to the store's text collation when an older version left them in another one, so account deletion is no longer held for every customer on those stores.
- Add-ons, Plugins tab: the "Our picks" heading and line read more naturally in Hungarian, French, Italian and Brazilian Portuguese, and use the same word for add-ons as the rest of the page.
- French, Italian and Portuguese (Brazil): the message asking you to turn off an extension's add-ons first now says "add-ons", as the Add-ons page does.
- Report-only security-policy notices have their own list, Error Tracking › Security policy reports, so they no longer crowd out real errors. Old notices aren't carried over: they were only reports, and nothing was ever blocked by them.
- Storefront repeats of a notice are counted one in ten, so their counts read 'about'. A policy you enforce that blocks something is still an incident in Error Tracking.
- The dashboard's 'new errors today' no longer counts security-policy entries.
- Run now on a scheduled job names the job only on errors from the job itself; anything logged after it shows the page's own address.
- The sample data's prize draws no longer name a currency or say "win": each prize says how many numbers it takes to match (for example "Match all 7 numbers"), the sample prizes have generic names instead of brands, the draw descriptions point to the prize list, and two draw categories have plainer names (Daily Draws, Quick Draws).
- The sample data's spin-wheel discount rewards read "Discount coupon" instead of a dollar amount, since a discount is taken off in the store's own currency.
- In right-to-left admin languages the current page's marker in the sidebar sits on its outer edge, and a store name in Latin letters is shortened at its end.
- Icons that showed blank until the full icon set loaded now draw straight away: the customer list, help assistant, email-to-ticket and admin media picker icons.
- Polish admin: the Settings hint on upload-log archives names the screen as the sidebar does, Dzienniki bezpieczeństwa › Logi przesyłania.
- New stores keep every core table in full Unicode (utf8mb4), so names, addresses, item titles, notes and banners can hold emoji and every script. Existing stores are converted in a later update.
- Every page now opens the database with the same collation the tables use, so text comparisons can't fail with "Illegal mix of collations" on MySQL 8.
- Stores set up before full Unicode now convert their older core tables to it in the background, one table at a time, so names, addresses, item titles and notes can hold emoji and every script. Customer, admin and settings tables go first. Order and payment tables, and any very large table, are left for you to convert at a time you choose.
- The admin Documentation page opens again on a coins-only store: its "Before you open" checklist leaves out the payment row there instead of failing.
- The cart, saved addresses and translated pages no longer check the database layout on every visit; the answer is remembered, as other schema checks already are.
- Settings and the strip shown after leaving coins-only mode now use your own name for the unit (for example credits) in the sign-up network limit, the coin-value line and its link, instead of always saying coins.
- The cart page no longer repeats a failing database change on every visit when the database already has the column it was adding.
- The add-on catalogue in the admin lists the new UddoktaPay gateway under Payments.
- The Add-ons page can show a short list of add-ons WowCodes suggests, at the top of the Plugins tab. If the store sends no list, the page is the same as before.
- Bengali: the media picker writes its counts the same way everywhere ("5টি নির্বাচিত").
- A page that answers at another address on some stores shows the search title and description saved for that address when it has none of its own.
- Pictures from the demo data that showed a placeholder on a new install now show: avatars, banners, the item library (and its CSV import) and the admin order list no longer require the picture's file on this server when the store serves it from the demo-image CDN.
- On a desktop the floating menu at the foot of the window no longer hides the control a visitor tabs to or a link jumps to: the page scrolls it clear, and the footer keeps room under its last row so its links never end under the menu. A full-window screen can leave the floating menu out.
- A payment request is no longer closed unasked when the buyer paid at the gateway but never came back to the store: for a gateway that can look a payment up by the store's own order id, the gateway is asked first, and a payment it confirms is credited instead of being lost.
- Ships the Razorpay webhook address, so Razorpay's payment notices reach the store as soon as the gateway is set up.
- A plugin can move its pages to other addresses: saved menu links to the old address are shown with the new one, so they skip the redirect while the menus stay as the owner saved them.
- Turkish: the storefront and admin call coins "jeton" everywhere, instead of sometimes "coin".
- Signing in or signing up no longer fails when an add-on's sign-in or sign-up step has an error: the error is logged, naming the add-on, and the rest carries on.
- A guest asked to sign in now gets the store's own sign-in window, with Sign in and Cancel, which brings them straight back to the page they were on. It follows the theme, dark mode and right-to-left layouts, in all 21 languages. On the support page, a guest pressing Start Live Chat now sees it in place of a small line under the buttons, and turning on push notifications while signed out opens it in place of a plain alert. Add-ons can open it too.
- The database update script and the fresh-install schema add the columns an add-on uses to keep each draw's own number range; existing draws are unchanged.
- Ships the Checkout.com webhook address, so Checkout.com's payment notices reach the store as soon as the gateway is set up.
- The demo data seeds Coinbase Commerce switched off, as it has been withdrawn.
- A visitor sent to sign in from a members-only page, including their support tickets, profile and winnings, is told which page they were going to ("Sign in to continue to …") and is taken back to it after signing in or registering; only a page on the same site is ever accepted as the return address, so a crafted link can no longer send a visitor elsewhere after sign-in.
- A guest opening the support-tickets page is now asked to sign in instead of seeing an empty ticket page, and its button reads "View support tickets", so it isn't mistaken for draw tickets; a new "Support tickets" label is available for a footer link to it.
- Payment gateway settings can now store a gateway's secret keys encrypted when you save them. This switches on per gateway in a later update, once every copy of that gateway that can be installed reads encrypted keys; until then, keys are saved as before.
- While the cookie notice waits for an answer it no longer hides the page's controls: on a phone it is a compact bar along the foot of the screen, a control a visitor tabs to scrolls clear of it, the back-to-top button moves above it, and on a desktop it stays above the floating menu. On a full-window game it is a one-line strip below desktop width, with Details opening the full notice, and on a desktop a card placed clear of the game's controls. Once answered, the room it kept goes too.
- With no live chat set up, the support page no longer shows a Start Live Chat button that could only say the chat wasn't ready; with a chat set up it shows as before. The support hero is now marked so add-ons can place their boxes after it.
- The sign-in and confirm windows' words are written into the page so that a translation containing script or comment markup is always shown as text.
- A guest stopped by an add-on's sign-in check is now sent to sign in and back to the page they were on, instead of to the sign-in page and then home. Only a page on this site is ever taken back.
- A ticket reply can attach a picture from the media library; the reply keeps a private copy. The media library's Media Cloud line opens the add-on's settings while it is installed, and otherwise its page in the store, in a new tab.
- The database a manual install imports includes the Earn page's new Show the Earn page to visitors setting.
- On a desktop page with the floating menu, the cookie notice no longer settles a little lower once the page has loaded: it keeps the place above the menu it first appears in.
- A payment gateway's secret keys are sealed on save only when the installed gateway can open them again, so an older gateway copy keeps working with the keys exactly as typed.
- Wallet pages no longer check the database for the spend-only and wallet-description columns on every request; the answer is remembered, as other schema checks already are. Crediting, locking and withdrawing coins still ask the database every time.
- Remembered schema checks are no longer overwritten by a request that started before an update or plugin change cleared them. If you drop a table or column by hand, run bin/heal-schema.php (or wait a day) so the store asks again.
- Auto translations can now translate everything automatically: choose "Everything, automatically" under When to translate, and new and changed items, listings and pages are translated into every chosen language within a few minutes of being saved. "When a customer opens it" stays the default.
- In that mode, queuing pauses on its own when the translation allowance is nearly used up, and the page says so; texts customers open are still translated while characters last.
- Turning on the coins-only edition for the first time now also empties the saved pages of the Cache add-on, so no page keeps showing money prices; leaving it is noted for the admin whenever the store really was coins-only.
- A guest who presses Start Live Chat on the support page is asked to sign in, with a link back to the support page, instead of nothing happening. The chat widget loads for signed-in customers only.
- The address type label on the checkout address card now sits on the correct side in right-to-left languages.
- An add-on's plugin.json can now mark a picture column that holds a list as "match": "contains", so the media library won't delete a picture named anywhere in that list, even while the add-on is switched off. A name is matched whole, never as part of a longer one.
- The media library's check for pictures in use works on database servers set to NO_BACKSLASH_ESCAPES. An add-on's picture-column declaration with an unknown "match" is refused, in code as in plugin.json, and a plugin.json declaration that is ignored is written to the error log once, naming it and why.
- Themes and add-ons are checked against every kernel function they use before they are released, so one that needs a newer kernel says so and is not installed onto an older one. This is what let a theme update stop some storefronts loading on older kernels.
- Installing the Coins Only edition no longer switches on or queues any payment gateway.
- The admin sidebar names Polish in each admin language instead of always showing 'Polski'.
- Saved addresses show their type (Home, Work, Billing …) in the shopper's language at checkout, payment and on the order page, not the stored English word.
- French and Polish name a home address "Domicile" and "Dom", not the word for the home page.
- Admin: leaving a page with unsaved changes in any form (a sidebar link, another page, closing the tab) now asks first, with Keep editing and Discard changes, plus Save as draft where the form has a draft button. Before, only Settings, Terms and a few other pages asked; most other forms, add-on forms included, lost the changes silently.
- Checkout: a saved address without a nickname is named by its type once, instead of twice or with a blank name.
- Adds Thai (ไทย) to the storefront and the admin panel. Machine-translated; review welcome.
- Japanese is now a storefront and admin language, with the storefront and admin texts translated.
- The Add-ons page lists five new add-ons: Support SLA & Routing, Email to Ticket, Customer Notes & Follow-ups, Satisfaction Surveys and Help Assistant.
- Japanese: on a store with virtual coins only, the sign-in page's wallet line talks about prize coins rather than wins.
- The storefront's security policy lets 2Checkout's secure card form script load on the payment page.
- A store that leaves coins-only mode keeps every balance as it was: one coin stays worth 1 in the store's currency until the admin changes it, and the coin value the store had before coins-only is kept and offered back.
- After leaving coins-only mode the admin is told the store can take payments again, with links to install a payment gateway, set the coin value and, when none is set, the store's currency.
- On a store with virtual coins only, the wallet's transaction list, the payment page and result card, and the pending-claim dialog use coin wording in every language.
- Add-ons that use the header menu tree, the demo image links, the demo admin accounts, the sign-up fraud limits, whole-coin amounts or the withheld sign-up bonus notice now ask for the kernel that first shipped them.
- A database change an update or add-on can't make, for example on a database user without CREATE or ALTER rights, is now reported as an incomplete upgrade instead of stopping the page or the add-on's work with an error.
- On a store with virtual coins only, the payment page that waits for a wallet payment says it usually takes a moment instead of mentioning payment providers, and some languages word the coin lines on the wallet and payment screens more naturally.
- When a long language such as German, Russian or Hungarian would run the desktop status strip wider than the screen, or leave its menu touching the buttons beside it, the menu's last links move into the strip's "More" menu until there is room; the page open stays in the row.
- A long label in a "More" menu, in the status strip or in the floating menu bar, now wraps onto a second line instead of running past the menu or being cut off.
- Between 1280 and 1439 pixels wide, where the status strip leaves its menu out, the "/" or dot that came before the menu is left out too, so the strip no longer ends on a lone separator.
- On a store with virtual coins only, a payment held for review (one that came in after its request had closed) no longer says "Coins paid" above it; that line shows only when coins were taken but nothing could be ordered.
- Header strip: when a menu group moves into the More menu, its copied links no longer repeat ids already on the page, and labels, descriptions or controls pointing at those ids are cleared.
- Groundwork for a media library: pictures and videos uploaded in the admin panel are now listed once each (uploading the same file again reuses it), YouTube and Vimeo links can be kept by their video ID, and a background job lists the pictures your store already has.
- Pictures and videos added from another site's address are checked before they are saved: only JPEG, PNG, WebP, GIF, MP4 and WebM files are taken, judged by their contents, within a size limit, and addresses inside your own server's network are refused.
- A picture or video still used by an item, banner, category, the site logo or a setting can't be deleted from the library.
- A picture or video can also be kept as a link to another address, such as your own CDN, without copying it to your store: only https addresses are taken, your server never downloads them, and removing one from the library only removes the entry.
- Customers' own pictures (avatars and profile pictures) are never listed in the library, even ones no account uses any more.
- Admin dashboard: "Payment methods showing sample details" shows again on stores without the Fraud Prevention add-on.
- Admin language menu: Polish is named in every admin language.
- Settings → Rewards: the spend-only coins hint for group-buys, subscriptions and pre-orders uses your store's name for its coins.
- On a store whose database user can't create tables, the media library now tries to create its table at most once an hour instead of on every background run, so the error log no longer fills with the same line.
- Listing files kept on a cloud disk now saves its place after each file it downloads, so a run that stops partway doesn't download the same files again.
- Picture fields in the admin panel open a media library: upload several files at once with progress, add a picture or video from another site's address (your server copies the file, so your pages never load it from there), or pick from a gallery with search, a Pictures/Videos filter, editable ALT text, and where each file is used. A file in use can't be deleted. The Item library's photos, banners, and the logo and icon in Settings use it.
- The media library never offers a customer's own pictures (avatars, sellers' profile pictures), and a picture field can't be saved with one.
- An address can also be added as a link instead of a copy: the picture or video is then served from that https address, your server never downloads it, and the gallery marks it Linked (if the link stops working, the picture disappears from your store). Deleting a linked entry removes only the library entry. The upload tab points to the cloud storage add-on while it is off.
- An item's extra photos can be an MP4 or WebM video or a YouTube or Vimeo link from the media library; the main photo stays a picture, since cards and sharing need one. The item page plays a video in place, muted and with controls, and loads the YouTube or Vimeo player only when the visitor presses play.
- On screens 1280 pixels wide or more, admin forms place short sections side by side, and preview cards carry a small Preview label.
- Deleting a banner no longer deletes its picture while an item or a setting still uses it.
- Pictures kept in the media library's own folder get thumbnails like any other picture.
- Videos in the media library are always served as video files (MP4 or WebM), on Apache through the images folder's own rules and on the built-in development server. The example nginx configuration now tells browsers not to guess a file's type, over http as well as https.
- A picture attached to a support ticket reply now counts as in use, so the media library won't delete it.
- An add-on can now list the database columns that hold its pictures in its plugin.json, so the media library won't delete a picture that add-on still uses, even while it is switched off.
- The admin media library (Choose from library, uploads, gallery, ALT text, links) and the storefront's video labels are now translated into all 20 languages instead of showing English.
- Media library wording polish in Polish, Indonesian, Bengali, German, Thai, Arabic and Urdu: Remove no longer reads like Delete, Bengali uses its own digits, and Arabic/Urdu format lists read cleanly right to left.
- Opening the media library's gallery never changes the database: on a site where the library's table isn't there yet, the gallery shows as empty, and the table is made only when a file is first added.
- On the seller's item form, an extra photo that is a video shows its poster (or a play mark), and a YouTube or Vimeo link shows a play mark with the site's name, instead of a broken picture.
- Urdu calls coins سکہ / سکے everywhere, the same word as the rest of the store, instead of the loanword کوائن.
- A kernel update no longer rolls itself back because the store is in maintenance mode. The final check recognises the maintenance screen, still checks the admin sign-in page, and says the homepage could not be checked.
- The Spanish storefront reads more naturally: labels and buttons use Spanish sentence case, gift vouchers are called "vale" so they aren't confused with discount coupons, and a few literal phrasings in the wallet, checkout and the 'Log in as' notice are reworded.
- The Brazilian Portuguese storefront reads more naturally: labels and buttons use sentence case, gift vouchers are called "vale-presente" so they aren't confused with discount coupons, and a few literal phrasings in the wallet and checkout are reworded.
- The French storefront reads more naturally: labels use "et" instead of "&", the terms page is called "Conditions générales", and a few capitals and spacing follow French usage.
- The Indonesian storefront now addresses customers as "Anda" everywhere, and several labels read more naturally (for example "Kumpulkan Koin" for Earn and "voucher hadiah" for gift vouchers).
- The German storefront and customer emails now address customers as "du" throughout, as the rest of the store already did, and coin messages say "Coins" everywhere instead of sometimes "Münzen".
- German storefront polish: the image-link help, the not-enough-coins lines and the phone-change email read more naturally.
- On a coins-only store, whole coin amounts no longer show ".00" (505 instead of 505.00) on the header balance, wallet and everywhere the store formats amounts. Fractions keep their decimals; stores that take money are unchanged.
- On a demo store, "Try the demo" no longer puts an admin email or password in the sign-in page. It signs in as the account PX_DEMO_ADMIN in .env names, or else the oldest active admin that uses the published demo password. The people PX_DEMO_OPERATORS lists, the owner among them, are never that account, so an owner is never tried or locked out. If no account qualifies, the page says the demo sign-in isn't set up and opens the staff sign-in.
- "Try the demo" can be pressed up to 30 times in 15 minutes from one connection; after that, that connection is asked to wait a few minutes. Other visitors are not affected.
- The sample store (database/sandbox.sql) names its demo people with full names and @demo.wowcodes.in addresses instead of first names at example.com.
- On a coins-only store the wallet page no longer carries the add-money and withdraw forms, the floating add button or their prices and payout methods in its script, and the item price card leaves out the line about taxes and fees at checkout.
- New money_ui_shown() tells templates whether the storefront shows buying, cashing out, taxes and payment; it is false on a coins-only store.
- On a coins-only store the bid notes say the bid comes out of your coins only if you win, instead of paying.
- On a coins-only store the cart mentions tax only while a tax rule applies to the order.
- The cart and payment pages say "1 item" instead of "1 items" when the cart holds one item, in every language.
- In Russian, the coins-only bid notes call the bid a ставка, the same word as the bid button; in Arabic, the first participation step reads "join and check your balance" instead of "join and deposit".
- On a coins-only store the bid pages say "What a bid costs", "Coins per bid" and "Join & check your coins" instead of "What you pay", "Bidding fee applies" and "Join & fund", in every language.
- On a store with virtual coins only, the short balance shown on phone-width wallets reads 505 instead of 505.00 for a whole number of coins.
- When a new account gets no welcome coins because an earlier account was already made from the same device or network, it is now told why: on the spot after signing up, and in its notifications. Sign-ups from the app get the same notification.
- Fewer genuine newcomers miss the welcome coins: on a phone network that puts many people behind one shared address range, a newcomer without the store's device cookie is now only matched to an earlier account made from the exact same address and browser within the last 24 hours. Browsers that have the cookie work as before.
- The number of new accounts from one network (the first three parts of an IP address) that get welcome coins each day is now 5 instead of 15. Past it, new accounts still open, without welcome coins; referral rewards keep their own limits.
- Both numbers can be changed in Settings › Sign-up & compliance: the accounts per network per day that get welcome coins, and the hours a sign-up without the device cookie is checked against.
- The script that keeps the floating quick-nav to one row also keeps a theme's account strip and its own quick-nav to one row, folding what doesn't fit into a More menu that opens downwards under the strip and never hides the page you're on.
- The admin's server check explains, in every language, what to do when a proxy sends visitors' addresses only in X-Real-IP.
- Small fixes to the Chinese, Turkish and Vietnamese admin texts: the {{variable}} example stays as written, and the data-health confirmation reads in the right order.
- Pressing Escape inside a "More" menu of the header, the floating menu or the account menu closes it and puts the keyboard focus back on its "More" button.
- Smaller download for new installs: the sample product pictures the demo data uses are no longer in the zip. They load from the WowCodes CDN, so sample items still show their pictures. Updating an existing store deletes nothing: the pictures already on your server stay and are served from there, and so are your own uploads.
- The sample data and the zip no longer carry old test avatars or admin screenshots.
- The download now includes LICENSE.txt (what your licence lets you do, given by WowCodes.in / StartMyMarketplace.com) and THIRD-PARTY-NOTICES.txt (the open-source components inside and their licences).
- A new licenses/ folder holds the full GPL-3.0, MIT, SIL Open Font License 1.1 and DejaVu licence texts that the bundled components and fonts need.
- Removes the unused assets/js/jquery-3.4.1.min.js (nothing loads it; the admin uses jQuery 3.6.0) and its notice.
- On a store that runs on coins only, a cancelled or rejected order paid by card or manual payment is no longer refunded to the wallet automatically, even with automatic wallet refunds on: it is left under Orders > Refund owed for you to settle, since it was paid in money.
- The cart no longer suggests shop products or links to the shop when the shop isn't running: no Popular items, You might also like, Browse Shop, Continue Shopping or Add more, and the back arrow goes to the home page.
- Sandbox data: the five sample prize draws have prize-first names and say "Enter the … with your coins for a chance to win great prizes!" instead of promising cash rewards.
- Polish (pl) is a new storefront and admin language. Visitors from Poland are offered it, and the admin can switch it on with the store's other languages. Machine-translated.
- The storefront header keeps to one row however many add-ons add a link: the extra links fold into a More menu in every theme, and the floating menu stays one row with a More button. A theme can set how many links it shows before More.
- A new install now saves the store country at setup (from the country given at step 2, or the store currency), instead of leaving it unset.
- Installing the Coins Only edition no longer asks for a coin price: members earn coins, so there is none to set. The add-on list words Gift Cards and Coin Pricing for coins that are earned, never sold.
- On a coins-only store, the admin calls Payment Requests "Orders paid with coins", since every checkout there is paid with coins.
- Coins Only: the wallet card no longer shows a "Withdrawable" amount, since a coins-only store has no withdrawals.
- Coins Only: amounts a page fills in after it loads, like the admin dashboard's Revenue tile, now show the coin icon, without ".00".
- On a coins-only store, refunds, customer notices and admin log entries that name an amount now save (the coin is written out as "12 coins"); before, they could fail to save. The currency symbol in Settings can no longer be an emoji, which made the save fail.
- Coins Only: the sign-in page, the wallet step of the welcome tour and the profile page talk about coins, not top-ups, payouts or withdrawals, in every language.
- The sample data (database/sandbox.sql) no longer includes a test "Gift Card ₹2000" win.
- Coins Only: the dollar-sign icon shown beside prices and totals (for example in the ticket window) is drawn as the coin.
- Coins Only: the privacy page no longer lists payment providers or mentions cashing out.
- A coin payment's line in the wallet history now names what was bought ("Paid for Wireless Earbuds"), in all 18 languages.
- Changing the store country refreshes cached sign-up and login pages straight away.
- The admin's "Set the Site URL" suggestion offers the address you are on, and the app's Forgot password checks the Site URL the same way the website does.
- A payment gateway's key names can show in your admin language when the gateway translates them.
- While staff are logged in as a customer, that customer's own auto-bid can still pay its bidding fee.
- Add-on cards no longer cut their description short after "e.g." or "i.e.".
- Add-ons page: Plugins and Themes have their own tabs. Plugins are grouped by goal; themes have big pictures and filters, and one search covers both.
- Admin: pagination arrows point the right way in right-to-left languages, and a few pages get the spacing they were missing.
- The "Confirming your payment" page says crediting usually takes a few minutes, and keeps checking for an hour.
- Moving a paid order to another address checks again that nothing holds the order, such as a dispute, before it moves.
- Add-ons page, Owned tab: an on/off switch for each installed plugin, and Update or Update all right there, parent plugins first.
- Add-ons page: buy an add-on from its details panel. A purchase goes through once, however often the button is pressed.
- Homepage: the recent winners ticker no longer hangs the page when there are no winners to show yet.
- Add-ons page: an add-on's details link to its guide when it has one, and list add-ons often added with it.
- Add-ons page: each card says how the add-on can earn your store money.
- Add-ons page: browse by what you want more of instead of by category, with the price next to each name, and see what each add-on lets you preview before buying.
- Add-ons page: offers show a plain end date instead of a countdown, and ended offers are hidden.
- A warning shows on every admin page when the allowed-countries setting holds no valid country code, and clears as soon as it is fixed.
- Admin warnings load their styles correctly on a store installed in a folder.
- A saved address that an order ships to can no longer be changed under it: editing it saves a new address and keeps the old one for that order.
- New setting (Settings › Delivery & returns): let customers move a paid order to another address before it ships, paying any difference from their wallet.
- Refunds: two refunds of the same amount owed, made at the same moment, no longer both go through.
- Payments: the gateway that paid is recorded when the payment is taken, and a look-alike payment from another gateway is kept for an admin to review.
- Checkout's "Set up a payment method" link works for a store installed in a folder.
- Admin: links to add-on pages (coin pricing, exchange rates, tax rules, fraud prevention) show only while that add-on is active.
- Checkout and cart show the coupon box only while the Coupons add-on is active.
- Payment page: when no payment method can take the order, the buyer is told so, and a signed-in admin gets a link to set one up.
- Manual payments: the approve dialog says what approving does. My Orders marks refunded orders on their payment badge.
- Security: country limits refuse a visitor whose country can't be told, and look the country up again when a visitor's connection changes.
- PayPal webhooks answer on a fresh install before the plugin is activated.
- Add-ons page: an add-on's panel shows what it does in full, its features, how it works and what's new in its latest version.
- Payments: a payment held for review because the amount didn't match shows the buyer a held-for-review card instead of saying it failed.
- Payments: a payment from another gateway that only looks like the order's payment is kept for an admin to check.
- Refunds: on an order that stays open with an amount owed back, the refund panel offers that amount and takes only what is owed.
- Add-ons page: Preview shows only where an add-on has a demo page, each card shows the price first, and the details panel shows the full description.
- Payment gateway settings: a secret key is never shown in a public-key box after a refused save.
- Email campaigns: clicking Send now twice, or a retried send, sends one campaign.
- Payments: when the store holds a payment for review, the buyer's result page says so instead of saying the payment failed.
- New Store country setting (Settings › General) says where the business is, and starts the phone number field there when a visitor's country can't be told.
- A fresh install switches on the 10 ready-to-use payment gateways; the others are offered as add-ons.
- Wallet withdrawals: a double click, a refresh or the back button no longer sends a withdraw request twice.
- Refunds: an amount owed back on an open order shows under Refund owed, and refunds pay it off oldest first.
Auctions
All tiers: six auction types and live bidding.
- If your server still has this add-on's cron file from before the plugin system, it now runs this add-on's current job instead of its old code.
- The auction admin pages show an 'Online docs' link to the Auctions page of the online documentation.
- When the new version is set up over a store from before the plugin system, the setup wizard ticks this add-on only if its old on/off switch was on.
- On a store upgraded from an old version, cancelling an auction works again: the status column now takes 'cancelled'. Before, the cancel failed, or the auction ended up in no list. Each auction's web address is now kept unique too.
- On a store upgraded from an old version, the fix that lets auctions be cancelled again now leaves the rest of the status column as it was.
- Auctions now leads the admin's Extensions menu.
- On a store running MySQL 8, after a seller is banned or let back in, the storefront no longer goes on showing their lots as they were before the change.
- On a store running MySQL 8, the reserve price hint's bands stay the same from one visit to the next.
- Section headings keep their closing dot on the same line as the last word, in every language.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A section heading whose text ends in a space keeps its closing dot on the same line as the last word.
- The Thai sign-in and home page lines now read the same whichever prize add-ons the store runs.
- The wallet balance in the phone page header follows the store's amount style, so a coins-only store shows whole coins (2,500) instead of 2,500.00.
- New stores with a prize add-on and no hero line of their own show "Dream it. Play it. Collect it."; stores that saved their own keep it.
- Guests who open the quick bid window from an auction listing now see the bid field behind a sign-in card instead of a plain sign-in message, in every theme. Sign in and Create account bring them back to the same listing.
- Guests on an auction page now see the bid form behind a sign-in card instead of a plain sign-in link, on desktop and in the phone bid sheet, in every theme. No bid can be sent until they sign in, and signing in brings them back to the same auction.
- In the admin, bid fees show in the wallet's unit, as bidders see them, not in the store currency: Fee per bid, Bid fees taken, the auctions list's bid-fee note, the Bids page's fee figures and the auction editor's fee field and summary now read, for example, "6 Coins" instead of "$6".
- Demo auction pictures that showed a placeholder on a new install now show, on the auction page's gallery, in bid lists and in the admin auction and category lists.
- Turkish: coins are called "jeton" everywhere, as in the rest of the store, instead of "coin".
- The category picker on the auction form lays its results out to the field's own width, and "Want to add a new category?" spans the row.
- The instant-bid window shows the placeholder straight away for an item with no picture, instead of first asking for a missing image.
- An auction category's picture can be chosen from the media library, on the Categories page and in the new-category box on the auction form.
- A guest's sign-in links on these pages now bring them back to the page they were on after signing in.
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- A new item's pictures on the auction form can be picked from the media library; its extra pictures can also be a video or a YouTube or Vimeo link, which the auction page plays in its gallery (the store's own gallery; a theme's copy shows the pictures).
- On wide screens the auction form shows the short add-on settings two to a row, and the bidder preview carries a Preview label.
- Deleting a category no longer deletes its picture while something else uses it, and the app's auction details list pictures only.
- The Manage Auction hint about videos and YouTube/Vimeo links in extra pictures is now translated into all 20 languages.
- Urdu calls coins سکہ / سکے everywhere, the same word as the rest of the store, instead of the loanword کوائن.
- After a bid or an unlock, the line saying what was used and what is left reads "1 Coin left", not "1 Coins left", when exactly one is left (in the store's own unit name).
- On a coins-only store the listing page leaves out the "If you win" box about completing payment.
- On a coins-only store the "Win & claim" step says to claim your prize instead of completing payment.
- On a coins-only store, auction cards, the bid desk and the auction page say "Coins per bid" instead of "Bidding Fee" and "Fee per bid", in every language.
- On a coins-only store, the first step on the auction page says to check your coins and the coins each bid costs, instead of the wallet balance and the fee, in every language.
- On a store with virtual coins only, the bid box starts at a whole number (125, not 125.00), and so do the suggestion chips, the raise and lower buttons and the quick-bid window when they fill it. An amount with cents keeps them, and stores that sell for money are unchanged.
- The reverse auction's help now says the lowest bid wins when the auction ends (it said the lowest unique bid), and the item-name examples on the seller and admin forms no longer name a real brand. All languages.
- Coins-only stores: a bid's confirmation and a refusal that names the allowed range now show the amount in coins, not the money symbol from the store settings.
- Adds Polish (pl) text. Machine-translated.
- Coins Only: auction cards keep showing the current bid in coins after the live update, instead of switching to the store's money symbol.
- The warning about reverse auctions with no lowest price says they can be won "for almost nothing".
- Lots that haven't opened yet are marked as upcoming.
- A bid sent twice by mistake (two taps, a retry after a dropped connection) is placed and charged once.
- On a phone, a bid the store turns down keeps the bid panel open with the amount as typed, to fix and send again. When the answer to a bid is lost, the bidder is told to check before bidding again.
- Security: a bid from the website or the app can no longer pretend to be an auto-bid.
- Previewing your store in another language from the admin shows that language on auction tiles and cards too.
- A bid from the app that isn't an amount is refused.
- Auction cards, lists and home sections write prices in the store's own amount format (for example 1.234,56).
- Every amount on the lot page follows the store's amount format.
Buy It Now
All tiers.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- On wide screens the Buy Now price sits beside the other short settings on the auction form.
- Adds Polish (pl) text. Machine-translated.
- A very large or malformed Buy Now price no longer quietly keeps the old price.
- The "From the Buy Now add-on" line on the auction form appears in the admin's language.
- The Buy Now price's info icon describes the rule the lot actually follows.
- An info button beside the Buy Now price explains when Buy Now disappears for each auction type.
- Saving an auction from a form without a Buy Now field keeps its Buy Now price.
- Buy Now puts the item in the cart, where tax, shipping and any coupon are shown before paying.
Notify Me
Plus and Pro.
- If your server still has this add-on's cron file from before the plugin system, it now runs this add-on's current job instead of its old code.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A guest pressing Notify Me, on an auction's page or its card, now gets the store's sign-in window, which brings them back to the page after signing in, in place of a short line under the button (a store whose core doesn't have the window yet keeps the line). The prompt is reworded in all 21 languages.
- Coins-only stores: the "auction is now live" e-mail names the starting bid in coins, not the money symbol from the store settings.
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- Adds Polish (pl) text. Machine-translated.
- A "now live" reminder still goes out if the auction started a while ago and is still running.
- No "now live" email for an auction that has ended or was bought with Buy Now.
- The Notify Me bell says so when it couldn't reach the store.
- Reminders are no longer emailed to banned or deleted accounts.
- A customer's data export includes the auctions they asked to be told about.
- The "auction is live" email links with a full address and goes out in the customer's own language.
- A customer's reminders are removed when they delete their account.
Auction shipping
Plus and Pro.
- Set up over a store from before this add-on, it keeps each auction's old shipping fee: fees are copied in once, the first time it is switched on.
- On wide screens the shipping fee sits beside the other short settings on the auction form.
- A digital auction item never has a shipping fee added.
- Once an auction has a bid, a winner or a Buy Now sale, its shipping fee can be lowered but not raised.
- A shipping fee too large to store is capped instead of being dropped.
- A seller can no longer change an auction's shipping fee; only the store sets it.
- A seller saving their own auction no longer resets your shipping fee to free.
- Auction shipping is its own add-on, and the fee applies everywhere an auction item can be bought.
- Duplicating an auction doesn't copy its shipping fee.
Sellers and payouts
Plus and Pro.
- When the new version is set up over a store from before the plugin system, the setup wizard ticks this add-on only if its old on/off switch was on.
- This add-on's admin pages now have a set place in the Extensions menu, instead of wherever activation order put them.
- On MySQL 8, order status, refund and payout steps now see a database transaction already open and join it, as they do on MariaDB.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- If updating the add-on can't finish changing its seller tables or carrying over older seller records, the update now says so and can be run again, instead of reporting success.
- Upgrading Multivendor can no longer mark new, still-pending seller sales as paid if a one-time upgrade step was interrupted partway.
- If the one-time pending-sales update during an upgrade is interrupted, retrying it now leaves alone any sale made since the first try, so those sellers are still paid.
- The Seller payouts card now reads "1 sale" and "1 seller" correctly instead of always using the plural, in every language.
- Visitors who aren't signed in can open Become a Seller and see what selling involves: what a seller can do, when sellers are paid and whether listings are checked first. Its buttons sign in, or create an account, and come back to the page. A sign-up form sent after signing out goes to sign-in and back to the page.
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- Language files drop one line the add-on no longer reads. Nothing on screen changes.
- Adds Polish (pl) text. Machine-translated.
- Seller Payouts: the Refunded after payout tab pages through all its rows.
- A refund whose seller share couldn't be taken back is always offered again under the order's sale.
- A refund no longer takes money back from a seller already paid for that sale; it is listed under Seller Payouts › Refunded after payout.
- "Take the seller's share back" on the refund panel is unticked by default.
- Refunds from returns, disputes and chargebacks take back the seller's share of an unpaid sale.
- A sale paid partly with spend-only coins (bonuses, game winnings) books that part as the store's, not as the seller's earnings.
- Admin messages about a stopped seller's orders name the seller's page "Orders Received", as the seller sees it.
- Recording a payout can't pay a sale an add-on is already paying the seller for.
Shop
Plus and Pro.
- The shop admin pages show an 'Online docs' link to the Shop page of the online documentation.
- When the new version is set up over a store from before the plugin system, the setup wizard ticks this add-on only if its old on/off switch was on.
- On a store upgraded from an old version, each product's web address is now kept unique. If two products share one, the Plugins page names it so you can change one and run Upgrade.
- The home page section heading keeps its closing dot on the same line as the last word, in every language and theme.
- On a store running MySQL 8, after a seller is banned or let back in, the storefront no longer goes on showing their products as they were before the change.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A section heading whose text ends in a space keeps its closing dot on the same line as the last word.
- On a coins-only store, shop prices on the catalog, category pages, the home shop rail, the deal of the day and the wishlist show whole coins ("2,500"), not "2,500.00". Other stores keep their own number format.
- A shop card reached with the Tab key now shows a focus ring, drawn inside the card, in every theme. A click on an out-of-stock card's button opens the product.
- Demo product pictures that showed a placeholder on a new install now show in the shop's admin lists.
- Browse Shop on an empty My Orders page now opens the shop instead of a page-not-found.
- A shop category's picture can be chosen from the media library.
- The shop card's Buy Now button no longer sits inside the card's link, in every theme: it opens the product on every browser, and the rest of the card still opens it too.
- Manage listing sends a guest to sign in and back to the page.
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- On wide screens the product form shows Category and Price side by side, and the shoppers' preview carries a Preview label.
- Deleting a category no longer deletes its picture while something else uses it, and the app's product details list pictures only.
- Adds Polish (pl) text. Machine-translated.
- Buy-now quotes and checkout no longer accept a saved address the customer has edited or deleted.
- Previewing your store in another language from the admin shows that language on shop tiles and homepage boards.
- My Orders: an order with no item name reads "Item" in the customer's own language.
- Deleting a shop category also forgets its old redirecting addresses, and a renamed category's old address redirects whatever its capital letters.
- Category descriptions read the right way in Arabic.
Flash sales
Plus and Pro.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A click on a sold-out flash-sale card's button opens the product again.
- When a flash-sale product's category is members-only, Add to Cart on its card now takes the buyer to the membership page instead of only showing a message.
- Demo product pictures that showed a placeholder on a new install now show in the flash-sale admin.
- Add to Cart on a flash-sale product card now puts the product in the cart and opens it; it used to open the product page, or do nothing on a phone. A product with options opens its page so one can be chosen. In every theme, the card's button no longer sits inside the card's link.
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- Language files drop 69 lines the add-on no longer reads, left over from an earlier rewrite of its admin page. Nothing on screen changes.
- Adds Polish (pl) text. Machine-translated.
- On a coins-only store, the flash sale editor now shows each product's regular price, and the warning that a sale price must be lower than it, in coins instead of your money currency.
- A store previewed in another language shows its flash sale board in that language.
- A sale price above the product's regular price is never charged: the product sells at its regular price.
- Sale details are no longer given away for products in hidden categories or members-only products.
- With automatic translation on, visitors see flash sales in their own language.
- Two admins saving overlapping flash sales at the same moment can no longer both get through.
- The warning about a product in two sales at once explains how that can happen.
Auto-bidder
Pro.
- A customer's auto-bid keeps bidding on lots with a bidding fee while staff are logged in as that customer.
- Auto-bid checks again sooner on penny auctions with a short countdown, and right away after a bidder updates it.
- When more than 20 auto-bidders wait on one penny auction, they take turns in the order they joined.
- Saving a penny-auction auto-bid again no longer resets the count of bids it has placed.
- Staff logged in as a customer can cancel the customer's auto-bid but not set one.
- An auto-bid limit written in an odd form (an exponent, a leading +) is refused instead of being rounded.
- Auto-bids pass your identity and spending-limit checks like every other bid.
- Auto-bids on lots without a bid fee no longer add 0.00 lines to the wallet history.
- An auto-bid can't be set on an auction that hasn't started, and one set earlier waits for it to open.
- The auto-bid engine runs only while a live auction has an active auto-bid, so it no longer keeps the server busy.
- Amounts typed with Arabic, Persian or Bengali digits are accepted.
- Two auto-bids with the same limit no longer trade steps: the one set first wins at that limit.
Anti-snipe
Pro.
- Set up over a store from before this add-on, it keeps each auction's old anti-snipe settings: they are copied in once, the first time it is switched on.
- On wide screens the anti-sniping setting sits beside the other short settings on the auction form.
- A bid in the very last second always extends the auction, judged on the same clock that closes auctions.
- A late bid never extends an auction that has already been settled or cancelled.
- The anti-sniping window and extension stay within the ranges the admin form allows.
- The "Enable anti-sniping" switch is shown in the admin's language.
- A seller can no longer change an auction's anti-snipe setting; only the store sets it.
- A seller saving their own auction no longer turns off the anti-sniping you set on it.
Abandoned cart reminders
Pro.
- On MySQL 8, the dropped-checkout check asks the payment gateway again whether a payment went through.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- Adds Thai (ไทย). Machine-translated; review welcome.
- Japanese translation.
- Adds Polish (pl) text. Machine-translated.
- Banned, deactivated and deleted customers get no reminders, and no recovery coupon is made for a customer who unsubscribed.
- A reminder that hands out an unused coupon again states that coupon's own discount.
- The page warns when reminder emails can't go out because the Site URL setting is empty.
- A customer gets a new recovery coupon only once the last one is used, switched off or about to expire.
- A customer's data export includes the cart reminders sent to them, without coupon codes.
- Payment-page drop-offs: a customer who reached the payment page and didn't pay gets a reminder after 1 hour and another, with the recovery coupon, after 24 hours.
- Each reminder has a single-use link that puts the items back in the cart.
- The admin page shows payment-page drop-offs in their own row.
- A reminder counts as sent only when it reaches the customer; refused ones are retried and then closed as "Couldn't send".
- A cart counts as recovered only when the order bought something that was in it.
- Browser notification reminders are in the customer's own language.
- Cart reminders go out in the customer's own language, with the discount in their money format.
- The admin menu entries are translated into every admin language.
- Admin pages are fully translated into every admin language.
Classic theme
All tiers.
- Section headings keep their closing dot on the same line as the last word, in every language.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- The theme's preview picture in the admin Themes page now shows the current homepage.
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A section heading whose text ends in a space keeps its closing dot on the same line as the last word.
- A coin prize's worth on My winnings now shows in coins once the core is updated, and the wallet balance in the header and item prices follow the store's amount format, so a coins-only store shows whole coins.
- This theme's fallback hero line now ends "Collect it."
- The home page hero shows this theme's own default line when the store hasn't set one.
- The support page shows its Start Live Chat button only while a live chat is set up, and marks its hero for add-ons to place their boxes after.
- The withdrawal method chooser now opens on a short "Choose one" prompt instead of a full sentence.
- Saved addresses show their type (Home, Work, Billing …) in the shopper's language, not the stored English word.
- The header no longer stops the page on an older kernel: the menu falls back to the plain menu row until the kernel is updated.
- On a coins-only store the wallet's balance card no longer prints the Add balance button, and the item price card leaves out the line about taxes and fees at checkout.
- On a coins-only store the cart mentions tax only while a tax rule applies to the order.
- The payment page says "1 item" instead of "1 items" when the cart holds one item.
- The account strip stays on one row, however many account pages your add-ons bring: the ones that don't fit sit under a More menu, and the page you're on always stays in view.
- With many add-ons switched on, the header no longer grows wider than the screen: links that don't fit go into a More menu, and the floating menu at the bottom stays one row with its own More button.
- On a coins-only store, the getting-started card no longer asks customers to fund their wallet.
- Previewing the store in another language shows that language throughout the theme.
- Wallet on a phone: the exact balance shows under the short K/M/B form.
- The wallet's top-up and withdraw forms keep the store's amount format.
- Address stats show two columns on phones, support ticket previews read the right way in Arabic, and the support badge's rings rest after four pings.
- The date in the language-switch animation follows Settings › Languages › Numbers.
- The language picker is a set of index tabs in the store's accent colour.
- My Winnings: a coin prize's button says Claim coins.
- A new language picker: a sheet on phones and a dialog on larger screens.
- Phone and Arabic tidy-ups across the homepage, wallet, login page and phone menu.
Editorial theme
All tiers.
- Section headings keep their closing dot on the same line as the last word, in every language.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- The theme's preview picture in the admin Themes page now shows the current homepage.
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A section heading whose text ends in a space keeps its closing dot on the same line as the last word.
- The wallet balance in the header now follows the store's amount format in this theme, so a coins-only store shows whole coins instead of money-style amounts.
- This theme's fallback hero line now ends "Collect it."
- The home page hero shows this theme's own default line when the store hasn't set one.
- The support page shows its Start Live Chat button only while a live chat is set up, and marks its hero for add-ons to place their boxes after.
- Between 1024 and 1279px wide, where the status strip hides its menu, the separator before the menu hides with it.
- The header no longer stops the page on an older kernel: the menu falls back to the plain menu row until the kernel is updated.
- The account strip stays on one row, however many account pages your add-ons bring: the ones that don't fit sit under a More menu, and the page you're on always stays in view.
- With many add-ons switched on, the header no longer grows wider than the screen: links that don't fit go into a More menu, and the floating menu at the bottom stays one row with its own More button.
- Previewing the store in another language shows that language throughout the theme.
- The support badge's rings rest after four pings.
- The date in the language-switch animation follows Settings › Languages › Numbers.
- The language picker is the paper's contents column.
- Choosing a language sees the choice off with a short animation, only when motion is welcome.
- One language picker everywhere: a sheet on phones and a dialog on larger screens, with keyboard support and right-to-left layouts.
- Phone tidy-ups: section titles, the footer's age box in dark mode and phone menu badges.
- Back and forward arrows point the right way in right-to-left languages.
- The sign-out window and the Logout link use the theme's own colours.
- The banners' "Featured" heading shows on every page with banners.
Lock-Up theme
Plus.
- The header no longer stops the page on an older kernel: the menu falls back to the plain menu row until the kernel is updated.
- On a coins-only store the wallet's balance card no longer prints the Add balance button.
- With the shop not running, the empty cart no longer shows the Browse Shop button or links to the shop.
- Adds Polish (pl) text. Machine-translated.
- With many add-ons switched on, the header no longer grows wider than the screen: links that don't fit go into a More menu, and the floating menu at the bottom stays one row with its own More button.
- The homepage hero shows each listing's picture filling its frame instead of as a small box inside it.
- The homepage hero fills any card its own products leave empty with whatever else the store has live, and its button follows a product only while that product has something open.
- The bidding lines show only while units are open; otherwise the hero reads for any store, in all 18 languages.
Bazaar theme
Pro.
- Section headings keep their closing dot on the same line as the last word, in every language.
- Amharic (አማርኛ) translation, machine-translated (review welcome).
- The theme's preview picture in the admin Themes page now shows the current homepage.
- Oromo (Afaan Oromoo) translation, machine-translated (review welcome).
- A section heading whose text ends in a space keeps its closing dot on the same line as the last word.
- A coin prize's worth on My winnings now shows in coins once the core is updated, and the wallet balance in the header and item prices follow the store's amount format, so a coins-only store shows whole coins.
- This theme's fallback hero line now ends "Collect it."
- The sign-in and sign-up pages load the phone country picker from your own store, and still work if it can't load.
- The home page hero shows this theme's own default line when the store hasn't set one.
- The support page shows its Start Live Chat button only while a live chat is set up, and marks its hero for add-ons to place their boxes after.
- The address type label on the checkout address card now sits on the correct side in right-to-left languages.
- The withdrawal method chooser now opens on a short "Choose one" prompt instead of a full sentence.
- Saved addresses show their type (Home, Work, Billing …) in the shopper's language, not the stored English word.
- Checkout: a saved address without a nickname is named by its type once, instead of twice or with a blank name.
- On the seller's item form, an extra photo that is a video shows its poster (or a play mark), and a YouTube or Vimeo link shows a play mark with the site's name, instead of a broken picture.
- The header no longer stops the page on an older kernel: the menu falls back to the plain menu row until the kernel is updated.
- On a coins-only store the wallet's balance card no longer prints the Add balance button, and the item price card leaves out the line about taxes and fees at checkout.
- On a coins-only store the cart mentions tax only while a tax rule applies to the order.
- The cart and payment pages say "1 item" instead of "1 items" when the cart holds one item.
- The account strip stays on one row, however many account pages your add-ons bring: the ones that don't fit sit under a More menu, and the page you're on always stays in view.
- With the shop not running, the empty cart no longer shows the Browse Shop button or links to the shop.
- With many add-ons switched on, the header no longer grows wider than the screen: links that don't fit go into a More menu, and the floating menu at the bottom stays one row with its own More button.
- On a coins-only store, the getting-started card no longer asks customers to fund their wallet.
- Previewing the store in another language shows that language throughout the theme.
- Wallet on a phone: the exact balance shows under the short K/M/B form.
- The wallet's top-up and withdraw forms keep the store's amount format.
- Address stats show two columns on phones, support tickets read the right way in Arabic, and the support badge's rings rest after four pings.
- The language picker is rolled rugs on a rail, with the chosen language's rug unrolled.
- My Winnings: a coin prize's button says Claim coins, and the address window labels saved addresses.
- A seller's item page links back to My Listings correctly.
- The app install prompt no longer says the store works offline.
- The "Report copyright infringement" line under a product is the platform's own.
- A new language picker: a sheet on phones and a dialog on larger screens.
Salesroom theme
Pro.
- The header no longer stops the page on an older kernel: the menu falls back to the plain menu row until the kernel is updated.
- On a coins-only store the wallet's balance card no longer prints the Add balance button.
- With the shop not running, the empty cart no longer shows the Browse Shop button or links to the shop.
- Adds Polish (pl) text. Machine-translated.
- With many add-ons switched on, the header no longer grows wider than the screen: links that don't fit go into a More menu, and the floating menu at the bottom stays one row with its own More button.
- The homepage hero shows each listing's picture filling its frame instead of as a small box inside it.
- The homepage reads for any store: the line above the headline, the default sale title and the wall labels no longer name auction lots.
This page lists the most recent updates published up to 29 Oct 2026. Some platform lines apply only to features your tier includes. Each update is checked against a digital signature before it installs.