# Changelog

Notable changes to the integration surface.

## 2026-08 — LVMONMinter documented

The mainnet [`LVMONMinter`](/onchain/minting-lvmon) converts native MON or WMON into LVMON. Calls
are permissioned by caller address and go to the standalone minter contract, not the Diamond.

## 2026-07 — `CANCEL_ALL_DECREASE_ORDERS` (1CT action 13)

The onchain `cancelAllDecreaseOrders(positionHash)` now has a gasless counterpart:
[`CANCEL_ALL_DECREASE_ORDERS`](/gasless/actions), action **13**, signed under
`OneClickCancelAllDecreaseOrders` with `actionData` of a single `bytes32` positionHash. It clears
every take-profit leg and the stop-loss on a position in one intent, and charges no fee.

Two things to check if you already have a 1CT integration:

- **Agents authorized with an explicit permission bitmask do not have bit 13.** They will keep
  getting `skipReason = INVALID` for this action until the trader calls `updateAgentPermissions`.
  Agents authorized with the `type(uint256).max` wildcard pick it up automatically.
- **Action validation widened to `[0, 13]`.** If you mirror the relayer's range check client-side,
  update it.

## 2026-07 — Documentation rewrite

The documentation was restructured around three integration paths — [onchain](/onchain/overview),
[gasless](/gasless/overview), and [REST API](/api/overview) — and rewritten against the current
contracts and services.

If you built against the previous version of these docs, the following changed.

### One-Click Trading is now V2

The previous documentation described the V1 flow. V2 is a different protocol; a V1-shaped request
will not produce a valid signature.

| | Previous docs (V1) | Current (V2) |
| :--- | :--- | :--- |
| Authorization | Separate `OneClickAgent` contract | Built into the Diamond — `verifyingContract` is the **Diamond address** |
| Operations | Open and close only | [14 actions](/gasless/actions) |
| EIP-712 struct | Business fields expanded per action | [Seven shared fields](/gasless/signing#message-type) plus `actionDataHash` |
| Replay protection | `salt` | Millisecond `nonce`, strictly increasing, time-windowed |
| Permissions | All or nothing | [Per-action bitmask](/gasless/actions#permission-bits) |
| Endpoint | `POST /v1/trading/send-open-position-v2` | `POST /v2/trading/submit-intent` |
| Execution fee | None | [Per-action ERC-20 fee](/gasless/fees) |

Migrating means rewriting the signing layer, not adjusting it. Start at
[Signing Intents](/gasless/signing).

### Trading events renamed

`OpenMarketTrade` no longer exists. Market and limit opens now emit:

| Old | New |
| :--- | :--- |
| `OpenMarketTrade` | `OpenPosition` (new slot) or `PositionIncreased` (existing slot) |
| `CloseTradeSuccessful` | `ClosePosition`, or `PositionDecreased` for a partial close |

The old close events are retained for positions created before the merged-position upgrade. See
[Events](/onchain/events).

### `getPositionsV2` superseded by `getPositionsV4`

`getPositionsV2` still exists but its `Position` struct gained an `earliestCloseTime` field — an ABI
copied from the older documentation decodes incorrectly. Use
[`getPositionsV4`](/onchain/reading-data#getpositionsv4), which also exposes `accruedFundingFee` and
`accruedHoldingFee`.

### Positions are merged per market

A position is now a slot keyed by `(user, pairBase, isLong, lvToken)` rather than one object per
trade. Opening the same market twice blends into one position. See
[Core Concepts](/introduction/concepts#positions-are-merged-slots).

### Newly documented operations

These existed but were not covered previously:

- [Partial close](/onchain/closing#partial-close)
- [Add and remove margin](/onchain/manage-position)
- [Update a position's TP/SL](/onchain/manage-position#take-profit-and-stop-loss)
- [TP/SL orders](/onchain/tpsl-orders) — multiple partial take-profit legs per position
- [Market info and pair configuration reads](/onchain/reading-data#market-data)

### Code samples

Samples previously imported a `monad` chain object from `viem/chains`, which does not exist. Define
the chain with `defineChain` — see [Networks & Contracts](/introduction/networks#rpc).

### Testnet removed

The documentation covers Monad mainnet only.

### Trading pairs are no longer listed inline

Pair addresses moved out of the docs and into [`GET /v1/pairs`](/api/pairs#list-pairs). Hardcoded
addresses go stale as markets are listed and delisted.
