AI Market Maker 6.1.7

5 August 2026

This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.

ADMINMARKET-RECORDANALYTICSCONFIGURATIONTRADE-GATESVOLATILITYCURRENCYCREATE-WIZARDEMERGENCY-STOPAUDIT-TRAILBUG-FIXES

AI Market Maker v6.1.7

Release Date: August 5, 2026 Tags: ADMIN, MARKET-RECORD, ANALYTICS, CONFIGURATION, TRADE-GATES, VOLATILITY, CURRENCY, CREATE-WIZARD, EMERGENCY-STOP, AUDIT-TRAIL, BUG-FIXES

Overview

Every remaining screen of the addon, brought onto the console the dashboard moved to in 6.1.6 — and the market record page rebuilt around the question it could not answer: why is this market not trading?

Two settings were being saved and one was not. The volatility-pause switch could not be moved and its value was discarded on save, so the guard is off on every market where you believe you switched it on — and the panel beside it reported "Disabled" whatever the database held. The aggression level was a one-to-ten slider over a column that stores three values, so seven of its ten positions were the same market.

The analytics screen was still printing a dollar sign over sums taken in each pool's own quote asset — the fault the dashboard shed in 6.1.6, still live on the other screen.

Read Upgrade Notes before comparing anything against what you wrote down last week, and go and check the volatility guard on each of your markets.

Update Instructions

pnpm updator

Routine. No database change and no new setting — every reading added here is derived from rows the engine already writes.

Requires Core v6.6.2.


Upgrade Notes

The volatility guard is off on markets where you switched it on

The switch was wired to a browser event that a Radix switch never fires, so the control could not be moved at all. Underneath that, the save posted a field name the column, the model and the handler have never used, so on the occasions the value did reach the request it was dropped server-side — with a 200 and a success toast. The read-out beside it had the same wrong name, so a market with the guard genuinely enabled displayed Disabled.

  • Fixed the switch, the save and the read-out, all three of which now use the field the database actually has.
  • Open Configuration on each market and set the volatility guard to what you intended. The panel now shows the stored value, so what you see is what the engine reads.

Seven of the ten aggression settings were the same setting

Aggression is stored as one of three values — conservative, moderate, aggressive — and was edited with a one-to-ten slider that bucketed back into three on save. Positions 1-3 all wrote conservative, 4-7 moderate, 8-10 aggressive. A market you set to 9 and a market you set to 8 are identical.

  • Changed the control to the three choices the column holds, on the market's Configuration tab and in the create wizard.
  • Your stored values are unaffected; only the control changed. Each market now shows which of the three it is on, which the slider never did.

The create wizard could not see past your tenth ecosystem market

Both of its lists were fetched without a page size, and the server pages at ten. An install with more than ten ecosystem markets could not create a market maker for the eleventh, and the set of pairs that already have one was built from ten rows too — so a pair that was already taken could appear selectable and then fail on submit.

  • Fixed both requests to ask for the whole list, and the picker now states how many markets exist beyond what it is showing rather than presenting a short list as the complete set.

An emergency stop from Settings still recorded no reason

6.1.6 fixed the dashboard's emergency stop. The same action on the Settings screen posted an empty request to the same endpoint, so every stop triggered from Settings wrote the handler's fallback sentence into each market's history instead of an operator's words.

  • Fixed the Settings emergency stop to require a written reason and post it, matching the dashboard. Existing history rows cannot be recovered — they record that markets were halted and nothing about why.

The analytics totals were printed in dollars whatever your pools are quoted in

The four figures under the analytics heading put a $ in front of sums taken over each pool's own quote asset, and divided every one of them by a thousand with a K suffix — so a pool of 60 read as $0.1K.

  • Fixed the unit to the quote asset every market shares, disappearing entirely when two markets disagree on one, and the abbreviation to apply only above ten thousand. This is the rule the dashboard adopted in 6.1.6, now shared by both screens rather than implemented twice.

Added

The market page says why a market is not trading, and how to fix it

  • Added a band across the top of every market record stating the engine's own verdict — Quoting or Not quoting — with the closed gate named: fewer than two active bots, an unfunded pool under real liquidity, or a spent daily volume budget. This is the same reading the dashboard ranks markets by, computed once on the server, so the console and the market page cannot disagree.
  • Added a remedy button beside each closed gate that opens the tab which fixes it. Previously the only statement of why a market could not start was a tooltip that appeared on hovering a disabled button — and it was built from a rule that was not the engine's.
  • Added a warning when a market's price has left the range you configured. Outside the range the engine pulls the price back toward it, which makes the next move progressively predictable; this is the state you can still fix by widening the range.

Where the price sits in its range, and how much of today's budget is left

  • Added two instruments to the market page's heading, visible from every tab: the last known price against the configured floor and ceiling with both edge zones drawn, and volume traded today against the budget that will silence the market when it runs out. Both are trade gates, and both now update live rather than freezing at whatever the first page load returned.

How far the pool has been pushed to one side

  • Added the inventory reading to the Liquidity tab and to the market's summary row: what share of the pool is held in the base asset now, against the share it was funded with, and the difference in percentage points. A positive figure means the pool has been absorbing sells and is long the asset it makes a market in.

Changed

The market page's first tab was a copy of its other three

Overview restated the Configuration tab under three headings, the Liquidity tab under two more, and the volume bar in the heading directly above it. Every figure on it was editable somewhere else and nothing said where, so reading a number and wanting to change it meant guessing which of three tabs owned it. The page also carried four separate rows of KPI cards and rendered the same live feed twice.

  • Changed Overview to what only it can show: the market cycle the price engine is driving, the momentum it has accumulated, the bias and price mode steering them, and the activity feed — with one route through to the settings that change them.
  • Changed the page to one row of figures, each of which opens the tab that owns it, and one activity feed.
  • Changed the active tab to live in the address bar, so a link can point at a particular tab and the browser's Back button works inside the page.

Configuration is one form with one save

The tab was seven stacked panels with five save buttons between them, whose scopes overlapped — the price fields were written by two of them. Nothing indicated what was unsaved.

  • Changed it to a single form with the platform's save bar, which appears only when something is actually unsaved and posts only the sections you changed.
  • Changed force-phase, the daily-counter reset and delete from browser confirmation dialogs to the platform's confirmations, each naming the market and what the action does.

Analytics, the create wizard, the guide and settings sit on the shared console

  • Changed all four onto the same page frame the dashboard and the market record use, so the addon reads as one product rather than six.
  • Changed the analytics market and period selectors from a full-width card above the content into the page header.
  • Changed the create wizard onto the platform's step control, the same one the ecosystem and futures market wizards use.
  • Changed the guide to one icon set and one accent. Its sections each carried their own colour, drawn from a table that resolved five names onto two outcomes.
  • Changed the settings screen's pending state to the skeleton built from its own tab and field list — which the route already had, and used only on a cold navigation. Which of the two you saw depended on whether the settings store happened to be populated.

The bot roster

  • Changed the roster to a single line of figures in its own header rather than four KPI cards under the page's four, and its filters now carry counts.
  • Changed the roster to state, in words, when fewer than two bots are active — the gate that stops the engine trading the market at all.
  • Removed the second copy of the live activity feed. What remains per bot is its own last action, which the shared feed cannot show.

Fixed

The market page rendered an error card instead of the market

Opening any market threw before anything drew, because the first tab dereferenced the payload while the fetch was still in flight. The error boundary that caught it was keyed on the tab name, which does not change when the data arrives — so the error card stayed for the rest of the session even though the market had loaded correctly a moment later.

  • Fixed the crash, and the tab panels now wait for the record rather than rendering against an absent one. The heading, the figures and the tab strip render throughout.

A failed market creation said nothing at all

The create wizard's error handling could not run: the request helper reports failures by returning them rather than throwing, so the branch that reported the error was unreachable and the branch that navigated on success never fired. The button stopped spinning and the page sat there.

  • Fixed the wizard to report the server's own refusal — a duplicate market, a range that does not contain the target — instead of nothing.

The phase progress bar and the activity timestamps were frozen

Both read the clock while drawing, which means they only advanced when something else caused the page to redraw. A cycle two days into a five-day phase sat at whatever percentage it was at when the page loaded, and a quiet feed's timestamps stayed at "just now" indefinitely.

  • Fixed both to advance on their own.

Three labels rendered broken text

  • Fixed the wallet panel on the Liquidity tab rendering "BASE /" as a heading, the markets table's profit-and-loss column heading rendering "P L", and the analytics pool total rendering "POOL NET P L" — three strings that had lost their punctuation at source.