# Polyester Testnet is live

_Sep 24, 2026_

The first release of **Polyester Testnet**, open for you to try trading on Polyester with test funds.

- **Daily rewards:** claim testnet rewards every day
- **Good-Til-Date orders:** limit orders that expire at the exact time you choose
- **Currency conversion APIs:** reference rates for 154 fiat currencies, USDC and USDT
- **Help chat:** ask about your recent funding activity

**API users:** review the 13 changes that need attention below.

## For developers and market makers: action required

### CreateOrder removes request_id and exact replay (Breaking change)

<!-- id: dxit9rMaux8 -->

Single-order submissions through REST, ConnectRPC, and trading WebSocket now represent independent attempts, with optional client order IDs available for reconciliation.

> **What you need to do**
>
> Remove request_id from single-order requests and update generated clients. Update trading WebSocket SBE clients to schema version 11 without requestId. Remove automatic single-create retries after ambiguous failures; supply a unique client order ID and reconcile through GetOrder before deciding whether to submit again.

### CreateOrder now requires a request ID (Breaking change)

<!-- id: A65jpmURJpM -->

Single and batch order submissions can replay their original admission outcomes for 15 minutes, including after a lost response or service restart.

> **What you need to do**
>
> Supply requestId in REST CreateOrder bodies and request_id in protobuf CreateOrder requests. SBE WebSocket clients must upgrade to schema version 12 and include requestId when creating orders. Preserve the request ID and complete payload when retrying; generate a fresh ID when changing an order or batch.

### Candle and trade APIs reject query aliases (Breaking change)

<!-- id: 2YstCQ9Nh83 -->

Integrations using millisecond time parameters or page_token must switch to RFC3339 startTime/endTime and camelCase pageToken.

> **What you need to do**
>
> Replace startTimeMs/endTimeMs with RFC3339 startTime/endTime and page_token with pageToken. Supply candle timeframe and limits within the documented maximum; use true/false or 1/0 for candle inclusion flags. Restart trade pagination without a pageToken to obtain a fresh cursor after the update.

### Batch-replacement timestamps now use strings (Breaking change)

<!-- id: KfCJbWpdVcW -->

Developers consuming JSON WebSocket status updates must accept decimal strings for nanosecond timestamps to preserve their exact values.

> **What you need to do**
>
> Update JSON WebSocket consumers to read batch-replacement acceptedTsNs, updatedTsNs, and items\[\].updatedTsNs as decimal strings instead of JSON numbers. Preserve them as strings or parse them with an integer type that retains nanosecond precision. Accept firePx="0" on trigger events without a firing price.

### Order creation rejects reused client order IDs (Breaking change)

<!-- id: 9mxYX7qRXtN -->

API clients now receive a duplicate-ID error even when the earlier order was canceled or the submitted order details are identical.

> **What you need to do**
>
> Clients relying on CreateOrder retries replaying an earlier result must handle duplicate-ID rejection. Use a fresh clientOrderId for each new order; retry BatchCreateOrders with the original requestId and unchanged payload.

### Spot volume API adds historical USD series (Breaking change)

<!-- id: LbKjj9GfV4D -->

Developers can retrieve 97 aligned samples of trailing 24-hour USD volume for individual trading pairs and their combined total, spaced 15 minutes apart over the latest day.

> **What you need to do**
>
> Replace order_by=VOLUME_24H_QUOTE with order_by=VOLUME_24H_USD and update generated clients for the renamed enum. Update primary REST candle tuple parsers to accept quote volume as the seventh value; reference candle tuples retain six values. Handle omitted market overview base and quote volumes when amounts exceed the supported range, and omitted USD volume when valuation is unavailable.

### Withdrawal API rejects unknown JSON fields (Breaking change)

<!-- id: V2BDh3V2eMX -->

This validation applies to destination checks and both API-key and wallet-authorized withdrawals.

> **What you need to do**
>
> Remove unsupported JSON fields from withdrawal creation and destination-validation requests; clients already sending only documented fields need no changes.

### Deposit configuration API removes polyesterChainId (Breaking change)

<!-- id: NwYM3ZU6NLY -->

Developers consuming GET /v1/chain/deposit-withdraw/config must update integrations that depend on the removed field.

> **What you need to do**
>
> Remove dependencies on the top-level polyesterChainId response field and update affected client models.

### Daily Claims API standardizes error codes (Breaking change)

<!-- id: iUF4NY1dp16 -->

Session-authenticated integrations can distinguish temporary reward unavailability from general service failures across REST and Connect.

> **What you need to do**
>
> Update clients matching previous REST error strings: for example, resource_exhausted becomes RATE_LIMIT_EXCEEDED and invalid_request becomes INVALID_REQUEST. Handle SERVICE_UNAVAILABLE separately from CLAIM_TEMPORARILY_UNAVAILABLE, and keep request bodies within 1,024 bytes.

### SocialVerificationReady distinguishes expired and invalid states (Breaking change)

<!-- id: Cdgc9tUGmYp -->

API clients can determine whether to restart a social verification challenge or retrieve its current status without parsing error messages.

> **What you need to do**
>
> Update clients that handle these failures as AUTH_INVALID_REQUEST or HTTP 400 to accept the new codes and HTTP 412. Restart verification after expiration; retrieve the current status for invalid-state responses.

### Stricter integer validation for Connect JSON requests (Bug fix)

<!-- id: VbQBCbQSJco -->

Connect JSON APIs now reject scientific notation and other unsupported integer formats instead of converting them automatically.

> **What you need to do**
>
> If your Connect JSON client sends integer fields using scientific notation or other rejected formats, serialize them as plain base-10 integers. For example, replace "1e4" with "10000". Clients already sending canonical integers need no changes.

### Transfer history no longer repeats or skips entries (Bug fix)

<!-- id: GB97gLwcfKz -->

Clients paginating transfer history now receive consecutive entries in both oldest-first and newest-first order, including transfers recorded within the same microsecond.

> **What you need to do**
>
> Discard previously saved transfer-history page tokens and restart with no page token, then use the continuation tokens returned by subsequent responses.

### Terms acceptance is required to continue (Improvement)

<!-- id: V6gAtPG1q6N -->

New accounts accept terms during onboarding, while returning users with outstanding acceptance see a separate prompt.

> **What you need to do**
>
> When prompted, review the Terms of Service and Privacy Policy, select the acceptance checkbox, and choose Continue; alternatively, log out.

## Trading

Good-Til-Date limit orders now support exact expiries, and daily testnet rewards can be claimed for Master Account Trading balances. Trading API contracts also changed around order submission identity and request formats, alongside broad reliability improvements.

### CreateOrder removes request_id and exact replay (Breaking change)

<!-- id: dxit9rMaux8 -->

Single-order submissions through REST, ConnectRPC, and trading WebSocket now represent independent attempts, with optional client order IDs available for reconciliation.

Submitting without a client order ID can create a separate order each time. Reusing a retained client order ID returns CONFLICT_DUPLICATE_CLIENT_ORDER_ID, even for an identical order. After an ambiguous timeout, use GetOrder with the supplied client order ID; an immediate lookup miss does not prove rejection. BatchCreateOrders retains its request-ID replay behavior.

### CreateOrder now requires a request ID (Breaking change)

<!-- id: A65jpmURJpM -->

Single and batch order submissions can replay their original admission outcomes for 15 minutes, including after a lost response or service restart.

Exact retries preserve the original order IDs, admission timestamp, and ordered batch outcomes, including validation rejections. Reusing a request ID with a changed payload during the replay window returns CONFLICT_IDEMPOTENCY_KEY_REUSE.

### Candle and trade APIs reject query aliases (Breaking change)

<!-- id: 2YstCQ9Nh83 -->

Integrations using millisecond time parameters or page_token must switch to RFC3339 startTime/endTime and camelCase pageToken.

Candle REST responses now preserve nextPageToken, including when requesting live candles, and historical pages exclude the current open candle. Pagination can continue beyond a full 10,000-candle page. Trade pagination no longer skips older trades whose IDs exceed the previous page’s last ID, and trade time filters preserve nanosecond precision.

### Batch-replacement timestamps now use strings (Breaking change)

<!-- id: KfCJbWpdVcW -->

Developers consuming JSON WebSocket status updates must accept decimal strings for nanosecond timestamps to preserve their exact values.

Batch-replacement status updates now ignore stale updates and prevent completed or rejected items from returning to an active phase. Trigger-event JSON always includes firePx, using "0" when no firing price applies.

### Order creation rejects reused client order IDs (Breaking change)

<!-- id: 9mxYX7qRXtN -->

API clients now receive a duplicate-ID error even when the earlier order was canceled or the submitted order details are identical.

CreateOrder rejects reuse of an account-scoped clientOrderId while it remains retained, including after rejection or completion. In BatchCreateOrders with a new requestId, reused client IDs return CONFLICT_DUPLICATE_CLIENT_ORDER_ID for the affected items while other valid items continue. Retrying the same batch requestId with unchanged contents still returns its original per-item results.

### Spot volume API adds historical USD series (Breaking change)

<!-- id: LbKjj9GfV4D -->

Developers can retrieve 97 aligned samples of trailing 24-hour USD volume for individual trading pairs and their combined total, spaced 15 minutes apart over the latest day.

GET /v1/spot/markets/volume-history supports pair filtering and returns decimal USD amounts. Each pair remains separate, including pairs sharing the same base asset. History requests fail when contributing trades cannot be valued reliably. Market overview responses and WebSocket updates now include optional USD volume, and default volume ranking uses USD. Candle responses add exact quote-asset volume calculated from executed prices and quantities. REST candle tuples expand from six to seven values, and the market overview sort option changes from VOLUME_24H_QUOTE to VOLUME_24H_USD.

### Good-Til-Date limit orders (New feature)

<!-- id: fsPRpqrg7kM -->

Set an exact expiry time for limit orders so any unfilled quantity cancels automatically.

GTD limit orders support post-only execution through REST, ConnectRPC and private trading WebSockets. JSON requests use limitGtd with a required absolute RFC 3339 expireAt timestamp, validated within an inclusive 1-second-to-30-day window. Orders stop being eligible for execution at the deadline, with remaining quantity canceled as GTD_EXPIRED. The original expiry survives amendments, replacements and recovery, and appears in order reads and private realtime updates.

### Daily testnet reward claims (New feature)

<!-- id: LeyQzmqAM94 -->

Adds daily testnet rewards credited to the Master Account’s Trading balance.

When a reward campaign is active, signed-in users can claim once per Master Account each UTC day, resetting at 00:00 UTC. The API reports today’s rewards, claim status and next reset time. Multi-asset rewards are paid together, and retries return the same daily claim. Future rewards remain hidden until their scheduled day, and missed days do not accumulate.

### Stricter integer validation for Connect JSON requests (Bug fix)

<!-- id: VbQBCbQSJco -->

Connect JSON APIs now reject scientific notation and other unsupported integer formats instead of converting them automatically.

Integer fields accept base-10 whole numbers such as 100 or "100". Scientific notation, decimal-point notation, leading plus signs, whitespace inside integer strings, and leading zeros are rejected. BatchCreateOrders requests containing these formats return HTTP 400 before order submission.

### Spot order cancellations now enforce trading permissions (Bug fix)

<!-- id: Ecqxg9xAgrs -->

API clients require Spot Trade permission for cancellation actions, while Spot Read continues to allow cancel-all previews.

The permission requirement covers single and batch cancellation, live cancel-all, and enabling or disabling automatic cancellation timers. Authorized cancellation remains available when account or subaccount trading is inactive.

### Order books no longer stall during market additions (Bug fix)

<!-- id: VDZJtLjU5nL -->

Traders continue receiving book updates for existing and newly added markets when market coverage expands.

Fixed a condition that could leave order books stale or unavailable after adding markets.

### More reliable standalone trigger controls (Bug fix)

<!-- id: Yk46gPuXw2v -->

Fixed inconsistencies between standalone trigger update responses and saved state during interruptions.

Cancel, pause, resume, and edit operations for standalone stop-loss, take-profit, and trailing-stop triggers can recover committed results after restarts without repeating the same update. Requests based on outdated state are rejected before they overwrite newer changes. Standalone TWAP and ladder cancellations now complete only after the cancellation has been durably recorded.

### Trailing-stop activation events and live trigger prices (Bug fix)

<!-- id: E9btxH7NUkD -->

Standalone trailing stops now report when tracking begins and expose their current trigger price as the market moves.

Trigger history and JSON/protobuf WebSocket event streams now include EVENT_ACTIVATED. Trigger reads and protobuf state updates expose the current trailing threshold, which follows peak or trough changes. The threshold is absent before activation or when no positive threshold exists. REST responses expose it as triggerPrice.

### Exclude Coinbase from reference candle collection (Bug fix)

<!-- id: U796XYAbhMn -->

Reference candle collection now uses Binance, Bybit, and OKX, avoiding repeated attempts to fetch Coinbase history whose completeness cannot be verified.

Coinbase market discovery and live trade and quote feeds remain supported.

### POST /v1/orders no longer omits retry metadata (Bug fix)

<!-- id: 4ZSREtCQeBP -->

API clients can determine when to retry a single order rejected for exceeding the account’s order-placement quota.

HTTP 429 responses now include quota headers and structured rate_limit information describing the limit, remaining quota and retry delay. ConnectRPC errors also preserve structured quota information alongside the order error.

### Batch replacements no longer report nonexistent orders (Bug fix)

<!-- id: fN7YmqzDVtE -->

When a requested total quantity is at or below the quantity already filled, batch replacement results correctly identify cancellation of the remaining quantity without a successor order.

BatchReplaceOrders and GetBatchReplaceStatus now distinguish cancel-only outcomes with action_taken=AMENDED and no replacement order ID. Cancel-only admission also returns no successor client order ID. Status describes the original order, which clients should track until cancellation is confirmed; REPLACED identifies an admitted successor.

### Batch cancellation retries no longer cancel different orders (Bug fix)

<!-- id: jmuN2mjok8v -->

Trading API clients now receive the original ordered results when replaying an identical batch cancellation, including after a service restart.

During the default 15-minute retry window after completion, reusing the same request ID with changed targets, symbols or item order returns per-item CONFLICT_IDEMPOTENCY_KEY_REUSE errors without cancelling the changed targets. This applies to batches using order IDs, client order IDs or both.

### TP/SL cancellations no longer report false failures (Bug fix)

<!-- id: Yde26YnCokZ -->

Traders canceling attached take-profit or stop-loss triggers after an order fills now receive success when the cancellation is confirmed.

Fixes intermittent service-unavailable responses after a cancellation had already succeeded, including triggers linked as one-cancels-the-other pairs.

### Ladder cancellations no longer report unspecified type (Bug fix)

<!-- id: 31bpqDr8ED8 -->

API and SDK consumers can identify the strategy directly from newly recorded cancellation events without fetching the original trigger.

Cancellation history preserves the trigger type for Ladder, TWAP, stop-loss, take-profit, and trailing-stop triggers. Previously recorded events are not backfilled.

### Order submissions no longer stall behind unrelated orders (Bug fix)

<!-- id: h1ZHwX8FrBc -->

This fixes a source of submission delays during concurrent trading activity, including scheduled TWAP slices.

Independent orders can proceed while unrelated orders finish processing, including orders submitted with or without a client order ID.

### TWAP orders stop failing on confirmation timeouts (Bug fix)

<!-- id: 8pFFauymzcJ -->

Traders no longer see a duplicate client ID failure when an accepted TWAP slice receives a delayed confirmation.

Retries preserve the original slice quantity, and late confirmations advance progress only once, allowing subsequent slices to continue.

### Live candles no longer stall after restart (Bug fix)

<!-- id: fvxBp6Hg37n -->

Spot market candle subscribers continue receiving updates when recovery replays a candle already loaded from saved history.

Fixes a restart failure caused by treating an unchanged candle as conflicting data, which could interrupt live candle updates.

### Fix SBE trade WebSocket availability during idle markets (Bug fix)

<!-- id: fakTmn8wHLx -->

SBE trade WebSocket connections can now become available after startup or outage recovery without waiting for a new settlement.

Fixes HTTP 503 responses on /ws/trade.sbe that could persist during periods without trading activity. Clients can now connect after startup or recovery even if no new settlements have occurred.

### Fix order processing when clientOrderId is omitted (Bug fix)

<!-- id: KPDEuLKGeQc -->

Fixed an issue where submitting an order without the optional clientOrderId could interrupt order-state processing.

These orders now support continued order-state processing during normal operation and recovery after a service restart.

### Partial-fill cancellations no longer block new orders (Bug fix)

<!-- id: 4ec1bi5jVi6 -->

Traders can continue placing orders when settlement arrives after a partially filled order has been canceled.

Fixes a timing issue that could incorrectly cause subsequent order attempts to return “Service temporarily unavailable.”

### Order and trigger details no longer overflow (Bug fix)

<!-- id: gmhTuPjp2D6 -->

Traders can reach active and historical order details, including TWAP activity, in shorter supported browser windows without changing browser zoom.

Details scroll within the dialog while headers and close controls remain visible. The fix also covers related order and trigger dialogs opened from within another dialog.

### Fixed order-history time filtering (Bug fix)

<!-- id: bjVEitHQDXU -->

Order-history time filters now use when an order was filled, canceled, or rejected, including exact start and end boundaries.

Orders created before the requested range now appear when they reach a final status within that range. The correction applies to REST and Connect order-history queries, with or without a status filter.

### Order details no longer mix protection settings (Bug fix)

<!-- id: ZJdJCtRm9gp -->

Traders receive take-profit, stop-loss, and trailing-stop details that match the order version shown after edits or recovery.

Order lookups, open-order lists, and live updates keep protection settings and status together. Rearmed protection no longer shows an outdated completion status or timestamp. Recovery also accounts for quantities already executed by protective orders.

### TWAP details show late execution prices (Bug fix)

<!-- id: J1J4AgM21UV -->

Traders who leave completed or canceled TWAP details open can see execution prices that become available later without refreshing the page.

Execution prices continue updating while the details remain open in a visible tab, including after the final slice or cancellation.

### Homepage media resumes after switching tabs (Bug fix)

<!-- id: AimbmA7Wuez -->

Visitors returning to the homepage tab can resume live market updates and visible video playback without visibility-handling errors.

Homepage market feeds and videos pause while the tab is hidden and resume when it becomes visible, with videos playing only when on screen.

### Trade order IDs no longer link to transactions (Bug fix)

<!-- id: EFHjzrr7qJc -->

Traders can copy order IDs from trade history without being sent to a transaction page in Polyester Scan.

The Order ID column now displays copyable text with “Copy ID” and “ID copied” tooltips.

### More reliable transfer history and order status updates (Bug fix)

<!-- id: Zxgt9wxGYXG -->

Fixed incorrect chain information in transfer history and missed order acceptance and cancellation updates.

Internal transfers now handle absent chain information correctly when loading history. Deposit records preserve their source chain through settlement and failure updates. Valid order acceptance and cancellation updates are processed correctly with either empty or populated client order IDs.

### More reliable order updates and settlement recovery (Bug fix)

<!-- id: boesfKn6bLK -->

Fixed reliability issues affecting batch order replacements, settlement recovery, and pending order updates during planned restarts.

Batch replacements now consistently associate original and replacement orders with the same batch request. Fixed a failure case that could cause settlement requests to be skipped during recovery, and improved handling of queued order updates during graceful shutdown.

### More reliable recovery of reserved funds (Bug fix)

<!-- id: h9MFjTLsQjk -->

Improved reservation recovery for orders, withdrawals, and internal transfers after service interruptions.

Fixes cases where recovery could skip related reservation updates, helping keep reserved funds consistent. Also improves restoration of order and trigger reservations and funds reserved for withdrawals and internal transfers.

### WebSocket order edits no longer ignore attached protections (Bug fix)

<!-- id: YBeq3HkRPth -->

Protobuf trading clients can update or clear attached take-profit, stop-loss, and trailing-stop settings when modifying an order.

Valid immediate-or-cancel buy orders using a maximum quote spend also pass validation. Order edits now use the documented default modification behavior when omitted, while explicitly supplied zero prices and quantities are rejected instead of silently ignored.

### More reliable order retries and trigger handling (Bug fix)

<!-- id: ep4eR5mKf3c -->

Fixed edge cases affecting order replacement retries, cancel-all-after renewals, and standalone trigger creation.

Order replacement retries more accurately distinguish changes to price, quantity, and attached take-profit or stop-loss settings. Renewed cancel-all-after settings now survive completion of an older expiry. Successfully saved standalone triggers remain accepted if subsequent service communication fails, and identical creation retries return the existing trigger.

### More reliable reference candle history (Bug fix)

<!-- id: 9XaTCn4SLcz -->

Improved historical reference candle recovery and handling of incomplete exchange data.

Backfills now continue searching for older daily candles across empty response pages and retry temporary exchange failures while respecting exchange cooldowns. Missing Coinbase candles are no longer treated as confirmed periods without trading, and history rechecks reject responses that would reclassify previously observed candles that way.

### More reliable trading candles (Bug fix)

<!-- id: UnwDRay9etp -->

Improved one-second and one-minute candle accuracy and recovery after restarts and temporary service interruptions.

Fixes cases where repeated data inflated candle totals, unfinished minutes were incorrectly reconstructed, or interrupted updates were lost.

### Market overview no longer misorders price changes (Bug fix)

<!-- id: 6C51fYMgdaa -->

Descending 24-hour change sorting now places a 10% loss ahead of a 1% gain, including across result pages.

Last-trade prices ignore older or duplicate trades, removed markets are excluded from overview responses, and available sparklines follow the requested interval order without duplicates. Volume history excludes delisted markets and rejects requests that explicitly select them.

### Live candles no longer double-count trades (Bug fix)

<!-- id: WBzX3upFvaF -->

Traders viewing live spot candles now see volume totals that remain unchanged when a trade update is retried.

Repeated trade updates no longer inflate base or quote volume in open candles. Longer-timeframe candles also retain available data across gaps in incoming updates.

### More reliable order and trigger updates (Bug fix)

<!-- id: AYwNdK7TpLZ -->

Fixed cases where interrupted processing could cause related order updates to be skipped on retry.

Recovery now also accounts for trigger updates and removals, improving handling of previously recorded trading activity.

### More reliable transfers, withdrawals, and settlement (Bug fix)

<!-- id: VZA1LuV6Qok -->

Fixed retry and recovery handling for internal transfers, withdrawals, and trade settlement.

Internal transfers remain retryable after temporary account lookup failures. Completed withdrawals are recognized more reliably when processing is retried. Settlement resumes only after pending balance updates are recovered successfully.

### Cancel-all retries no longer reuse failed results (Bug fix)

<!-- id: Wn2cm7hd3Hp -->

API clients can reuse the same request ID after an unsuccessful cancel-all or dead-man switch request.

Duplicate cancel-all, dead-man switch, and batch replacement requests now respect their own cancellation and deadline while waiting for the original request to finish.

### Ladder orders no longer stall after restart (Bug fix)

<!-- id: 7YRh4T2Z6uS -->

Unfinished ladder placements are preserved when many orders need recovery at once.

Recovery resumes unfinished placements from the latest saved ladder state and retains retries during busy periods.

### More reliable external market data (Bug fix)

<!-- id: SEJ28zKy9M2 -->

Improved the accuracy and reliability of external market data used for reference prices and candles.

Corrected Binance and Binance.US trade direction, preserved Kraken quote timestamps, and improved Bybit feed subscriptions and keepalives. Invalid trade data is filtered more consistently, and malformed Coinbase book updates no longer partially change quotes.

### More reliable daily reward claims (Bug fix)

<!-- id: CkNYLAFZfU8 -->

Daily reward claims recover more reliably after request cancellation.

Failed claim attempts remain eligible for retry after cancellation or timeout, with corresponding API error codes preserved. Claims API Connect JSON requests now reject unknown fields, while invalid claim states return errors instead of misleading processing statuses.

### More reliable spot order handling (Bug fix)

<!-- id: GKW9xS1vVFx -->

Improved order consistency when duplicate spot order identifiers are encountered.

A submission that duplicates an existing resting order’s identifier is rejected while preserving the existing order in the book.

### Order responses no longer show 1970 dates (Bug fix)

<!-- id: igNdaS45aV -->

Developers reading open orders, order details, or order history now receive optional lifecycle timestamps only when those timestamps are set.

Unset completion dates and activation dates for attached stop-loss, take-profit, and trailing-stop orders are omitted. Delayed updates no longer make orders reappear in open-order results or roll back batch replacement progress. Trigger reads also reject outdated updates.

### Index prices no longer round half-ticks down (Bug fix)

<!-- id: aK2kQWavQvd -->

Traders and API consumers receive correctly rounded index prices when combined venue prices fall exactly halfway between ticks.

A combined index price of 3.5 ticks now rounds to 4 ticks instead of potentially publishing 3 ticks.

### Order book streams reset after snapshot replacement (Bug fix)

<!-- id: 3GpwERsR1MZ -->

Subscribers receive a full replacement of price levels after feed recovery, including when the update sequence restarts or stays unchanged.

Replacement snapshots now tell subscribers to clear their previous order book before applying fresh levels. Snapshot recovery also discards retained state when a market has no current snapshot, preventing outdated bids and asks from reappearing.

### Maker buy rebates no longer go missing (Bug fix)

<!-- id: ZUdCgfj8bA -->

Eligible maker buy fills now credit rebates paid in the purchased asset.

Rebates no longer count as spending from funds reserved for maker buy orders. Trading fee and rebate amounts also round down at settlement precision instead of rounding up.

### Order book updates pause after delivery failures (Bug fix)

<!-- id: G16qrVAdtKh -->

Spot order book feeds wait for a fresh snapshot before publishing further price-level changes after a failed update batch.

The same safeguard applies when an update batch exceeds the supported size, preventing updates from continuing across missing data.

### Preserve sign-in state when switching gateways (Bug fix)

<!-- id: cewy41ywkSY -->

Switching between available regional gateways no longer makes your account appear signed out after the page reloads.

System status is now available in the trading footer. Refreshing gateway latency keeps the status menu open. If cookies prevent saving a gateway selection, the panel displays guidance to allow cookies and retry.

### Heatmap no longer freezes during market updates (Bug fix)

<!-- id: GdQYQwJ5Ljd -->

Order book snapshots also retain their price levels when valid batched updates overlap the latest snapshot.

Fixed a case where overlapping market updates stopped heatmap data from advancing and temporarily cleared the order book. These updates now apply changed quantities and remove cleared price levels correctly.

### Order details no longer omit older trades (Bug fix)

<!-- id: YkZGKXVL7KV -->

Traders can scroll the Trades and Transfers tabs to load additional execution history.

Duplicate trades and settlement transfers are removed across loaded pages. Replacing a partially filled order also stops repeating a fill notification for inherited fills.

### Footer ticker stops jumping on decimal changes (Bug fix)

<!-- id: MbGThZhHBB9 -->

Traders see consistent price precision and slower scrolling across all three footer ticker speed settings.

Stablecoin-quoted prices display two decimal places, while other prices retain their market precision, preventing jumps when trailing zeroes change. QuickSwap links also resolve token selections after available token data loads and use current token information.

### More reliable candle history recovery (Bug fix)

<!-- id: cZ5WSzfu3cz -->

Fixed an issue that could stall candle history updates while processing large historical backlogs.

Historical catch-up now handles large batches more reliably, improving availability of spot and reference candle history through the market data API. Failed writes remain eligible for retry.

### Home page lag reduced in Safari (Bug fix)

<!-- id: in6e2mD3zXi -->

Safari users should experience smoother browsing while live market prices update.

Price updates retain their rise-and-fall highlights, and empty order books remain static. Account settings confirmations now reflect your preference changes without appearing for background synchronization.

### Trailing stop and TWAP tables load without errors (Bug fix)

<!-- id: GVW1LU5xeoE -->

Traders can sort the Slippage column while order history is loading without encountering an error.

Slippage cells show a dash while loading or when configured slippage is unavailable.

### Order form stops shifting during sidebar toggles (Bug fix)

<!-- id: YNFCMNuHWm7 -->

Traders using the advanced spot trading layout can repeatedly expand and collapse the sidebar while the order form keeps its position and width.

The order form stays in place throughout the sidebar animation, including successive opening and closing actions.

### Partial exits no longer end TP/SL protection (Bug fix)

<!-- id: PULLsH9Ui35 -->

Traders using attached OCO take-profit and stop-loss orders retain protection for the remaining quantity when an immediate-or-cancel exit fills partially or not at all.

Both protective legs rearm for the remaining exposure after the exit order ends. Later fills of a still-working parent order also receive protection again.

### More stable order book headers (Bug fix)

<!-- id: Dth6smCBALv -->

Reduced order book header shifting when the trading panel loads or resizes.

Size and Total headers retain consistent labels, with the selected asset symbol shown in wider panels and hidden in compact views.

### Consistent BTC-USDT quantity precision (Bug fix)

<!-- id: ee1zZKwDnaB -->

BTC-USDT keeps its quantity increment of 0.00000001 BTC instead of reverting to 0.00001 BTC.

The minimum BTC quantity also remains one satoshi (0.00000001 BTC). Orders must still meet the 1 USDT minimum order value, and the price increment remains 0.01 USDT.

### More reliable batch order replacements (Bug fix)

<!-- id: 4bqK2HDdTy -->

Fixed unnecessary rejections during repeated partial order replacements that could cause market-making quotes to disappear.

Completed replacement batches no longer prevent subsequent replacements solely because their orders remain open.

### Lower memory use for real-time order updates (Bug fix)

<!-- id: 3uXAGtCycoa -->

Reduced memory use when processing completed-order history, including during service restarts.

Preserves live updates for attached take-profit, stop-loss, and trailing-stop orders while their parent orders remain needed.

### Order edits no longer underestimate required funds (Bug fix)

<!-- id: 2gJa2PW3Rjj -->

Price changes, quantity increases, and Replace Only edits now check available funds against the full unfilled replacement amount.

When available funds are insufficient, the order editor disables confirmation and displays an insufficient-balance message. Reducing quantity through an in-place amendment requires no additional funds.

### Market Overview volume no longer drops during updates (Bug fix)

<!-- id: a4aBxScChHu -->

Traders and API consumers now receive combined historical and recent trading volume across REST, Connect and WebSocket responses.

24-hour base, quote and USD volume preserve earlier trading activity as new trades arrive, without counting recent activity twice when totals refresh.

### Order edits no longer double-count reserved funds (Bug fix)

<!-- id: 2yQi7Ab2maS -->

Traders editing open orders now need available funds only for the additional amount required by the change.

Balance checks account for existing reservations and partial fills when changing quantity or buy price. Edits that reduce the required funds no longer show a false insufficient-balance warning. When additional funds exceed the available balance, the confirmation button is disabled and identifies the insufficient asset balance.

### Fixes to support messages and social-post formatting (Bug fix)

<!-- id: 7nePqbEQPad -->

Improved text and link display in support conversations, notification previews, and trading social posts.

Support replies and notification previews display HTML markup as text while preserving supported Markdown formatting, links, and images. Trading social posts handle special characters and links more consistently while retaining hashtag, ticker, and mention highlighting.

### Order tables stop loading indefinitely when signed out (Bug fix)

<!-- id: FbVVSjHNkJz -->

Switching trading pairs or changing order filters while signed out now leaves order tables empty instead of stuck loading.

Order-table reloads now finish when no account is available, allowing the loading indicator to clear.

### Market overview USD volume updates with trades (Bug fix)

<!-- id: Tn7kpnAHJQ4 -->

Current 24-hour USD totals use the latest quote-to-USD conversion rate across market overview API responses and live updates.

USD volume now updates alongside quote volume as trades arrive. Historical volume charts retain their historical conversion rates.

### Spot prices no longer default to dollar labels (Bug fix)

<!-- id: X1UpdmYF2qB -->

Traders see each pair’s quote asset and price precision across market lists, the trade menu, and the price ticker.

The spot market table and trading header show last, 24-hour high, and 24-hour low prices with precision based on the pair’s tick size. Live price updates receive directional color flashes in market lists, the trade menu, and the ticker. The spot market table removes Market Cap and 7d Change columns, while the Spot Volume chart groups the top three assets separately and combines the remainder under Other.

### Take-profit cancellation no longer fails after fills (Bug fix)

<!-- id: G345WgZ4V9q -->

Traders can cancel attached take-profit, stop-loss, and trailing-stop protection even several minutes after the original order fills.

Canceling a take-profit preserves a separate non-OCO trailing stop’s running state, settings, and price tracking, while the original order remains Filled.

### Trading charts recover from temporary rendering failures (Bug fix)

<!-- id: X3ATywAsy75 -->

Traders can resume viewing charts after temporary browser drawing errors without reloading the page.

Charts automatically retry drawing after a failure and redraw their axes and overlays when rendering recovers. Very large chart layouts adjust drawing resolution to stay within browser limits.

### Limit order form stops freezing on post-only markets (Bug fix)

<!-- id: TAL44v1pjxA -->

Traders can continue updating limit prices from the order book when a market allows only post-only orders.

The form remains responsive with Post-only automatically enabled, including when the market switches into post-only mode.

### Markets Overview restores missing USD volume (Bug fix)

<!-- id: f2ksDf2C9i9 -->

USDT and USDC markets now show 24-hour USD volume and chart history when historical conversion prices are missing.

Missing USDT or USDC conversion prices use a $1 estimate for volume displays, while available historical prices take precedence, including deviations from $1. Volume-history errors for other missing conversions now identify the affected pair and time window.

### Order details quantity no longer pads zeros (Bug fix)

<!-- id: 4LJDxddrZh -->

Traders viewing order details now see quantities such as 4.7 XRP instead of 4.70 XRP.

Total quantity omits unnecessary trailing decimal zeros while preserving meaningful digits up to the asset’s display precision.

### TWAP orders no longer omit slippage limits (Bug fix)

<!-- id: cSESJhMKzv4 -->

For traders using market execution, configured percentage or quote-currency caps are submitted with TWAP orders and displayed in order tables and details.

TWAP tables gain a Slippage column. Bulk cancellation also applies selected market and side filters without depending on which open orders are loaded locally.

### Improved live candlestick performance (Improvement)

<!-- id: gFK5btn13wR -->

Reduced processing time for live spot candlestick updates and trade-driven previews.

The improvement preserves existing candle intervals and JSON and Protobuf stream formats. No integration changes are required.

### Filtered market overview queries process faster (Improvement)

<!-- id: HoypyUWmmvz -->

Developers querying selected spot markets or requesting cached volume history benefit from reduced response preparation time.

The gains apply to filtered market overview queries and cached volume-history responses, including requests spanning many trading pairs.

### Homepage and funding FAQs add documentation links (Improvement)

<!-- id: Dy65iXP84Tp -->

Users can find guidance on fees, supported networks, deposit mistakes, and transfer permissions directly where they need it.

Homepage, deposit, withdrawal, and transfer FAQs expand their explanations, with clickable documentation links in relevant answers. The redesigned homepage footer adds developer documentation, changelog, community, and AI assistant links. Homepage demos update their asset defaults and withdrawal amount display, while the chart opens with one-minute candles.

### Trade history responses take less processing time (Improvement)

<!-- id: WVSuVBbrDth -->

API clients benefit when retrieving large trade pages or order details containing many fills and transfers.

Benchmarks show reduced time to prepare trade-history and order-detail responses, including large JSON responses. These measurements exclude database and network time and do not establish production latency gains.

### Order book snapshots generate faster (Improvement)

<!-- id: FXwHArDcGwR -->

Developers and market makers benefit when fetching spot market depth, especially at 500 or 1,000 levels per side.

Controlled benchmarks show faster snapshot preparation and JSON encoding, while supported depths, price ordering, and response formats remain unchanged.

### Trading sidebar narrows and reorganizes market controls (Improvement)

<!-- id: 4VjG8QG7V9X -->

Traders can choose price or 24-hour change sorting and its direction from a single menu while leaving more room for trading panels.

Market rows now stack the price above the 24-hour percentage change. All, Favorites, and Trending remain directly accessible, while additional market lists move into the More market lists menu.

### Order updates distinguish inherited fills (Improvement)

<!-- id: eyAyTdF2fdT -->

API clients can identify executions after an order replacement even when its first update already includes a new fill.

REST responses and JSON WebSocket order updates now include inheritedCumQty, with inherited_cum_qty_scaled available in protobuf. The value records fills carried over when the replacement was accepted and stays fixed for that replacement. Subtracting it from cumulative filled quantity gives the amount executed by that replacement. Original orders report zero inherited fills, and historical reads retain the value. Clients still need order-version deduplication and their own notification baseline after reconnecting.

### Order details load older trades on scroll (Improvement)

<!-- id: DYthnsHnj2J -->

The Trades and Transfers tabs fetch additional records as you scroll and remove repeated entries across pages.

Editing a partially filled order also suppresses the initial fill notification for quantity already filled before the edit.

### Collapsed market sidebar shows all listed pairs (Improvement)

<!-- id: bkBrv8RKmpi -->

Traders can switch spot markets without expanding the sidebar, with favorites grouped above the remaining pairs.

The expanded sidebar now opens on All and keeps column headers visible while market rows scroll. Positive 24-hour changes show a plus sign. Favorites for markets that are no longer listed are automatically removed once the market list is available.

### Trading sidebar shows all markets by default (Improvement)

<!-- id: RVmve7EzqGv -->

Traders can access listed markets from the collapsed sidebar, with favorites grouped above the remaining pairs.

The expanded sidebar opens on All and keeps market column headings visible while rows scroll. The collapsed sidebar adds up and down scroll buttons. Favorites for markets that are no longer listed are removed, and positive 24-hour changes display a plus sign.

### Buy and sell buttons show pair availability (Improvement)

<!-- id: jYGxkZKUPxS -->

Spot order submission is blocked when a pair is temporarily disabled, cancel-only, not yet listed, or delisted.

Disabled order buttons explain the pair restriction instead of showing balance warnings. Buttons update automatically as scheduled listing and delisting times pass, and blocked submission attempts display the corresponding reason.

### Table headers show controls on touchscreens (Improvement)

<!-- id: 3uVTkv9xSa -->

Sorting and column-reordering controls now remain visible on devices without hover support across order, funding, and balance tables.

On desktop, controls appear when a header is hovered or receives keyboard focus, and reorder handles remain visible while dragging. Controls overlay the header edge, leaving more space for column labels.

### Smoother trading layouts and clearer account displays (Improvement)

<!-- id: izkrHq61XJx -->

Improved desktop layout resizing, chart placeholders, transfer defaults, and order and percentage displays.

Hold the standard trading layout’s bottom resize handle near a screen edge to continue resizing while the page scrolls. Spot-volume charts now use animated loading placeholders and fade transitions consistent with account-history charts. The transfer dialog clears default account selections when the source has no transferable funds. Filled orders show a solid check indicator, and negative percentages retain their minus sign when displayed without arrows.

### Homepage adds trading and funding previews (Improvement)

<!-- id: RzpapF5VEvo -->

Visitors can browse spot markets by volume, new listings, gainers, or losers and open a trading pair directly from the homepage.

The redesigned homepage includes a trading terminal preview, interactive deposit and withdrawal demonstrations, expandable FAQs, and a dedicated mobile navigation menu.

### Spot Volume chart shows live USD history (Improvement)

<!-- id: fHMn5TWgULZ -->

Traders can compare volume by base asset, with data refreshing every minute while the page is active.

The chart combines trading pairs for each base asset into a stacked volume history and shows totals for the selected time when hovering. Loading, empty, and unavailable states include a retry option after errors. Spot market tables, market tooltips, and trading turnover now use USD volume, and Top and Trending markets sort by USD volume with unavailable values last.

## Funding

Help chat can now answer questions about recent deposits, withdrawals, and transfers with account approval. Funding APIs now reject unknown withdrawal fields and no longer return polyesterChainId in deposit configuration, while transfer history pagination is more reliable.

### Withdrawal API rejects unknown JSON fields (Breaking change)

<!-- id: V2BDh3V2eMX -->

This validation applies to destination checks and both API-key and wallet-authorized withdrawals.

Requests containing unsupported fields, including nested fields, now receive HTTP 400. Retries after an interrupted withdrawal reservation also preserve the original request data.

### Deposit configuration API removes polyesterChainId (Breaking change)

<!-- id: NwYM3ZU6NLY -->

Developers consuming GET /v1/chain/deposit-withdraw/config must update integrations that depend on the removed field.

The response no longer includes the top-level polyesterChainId field. Supported chains, assets, contracts, and the snapshot timestamp remain available.

### Help chat can check funding history (New feature)

<!-- id: 5A2NnVQr65N -->

Signed-in users can approve account access to ask about recent deposits, withdrawals and transfers.

Answers can include transaction status, confirmation counts and estimated completion times when available. Help chat also preserves source references on separate claims, keeps the Chat Sessions count consistent with My Chats, and avoids pointing to an unavailable human-support button.

### Transfer history no longer repeats or skips entries (Bug fix)

<!-- id: GB97gLwcfKz -->

Clients paginating transfer history now receive consecutive entries in both oldest-first and newest-first order, including transfers recorded within the same microsecond.

The fix applies to GET /v1/transfers and the public ListTransfers RPC. Response timestamps retain microsecond precision. Previously issued page tokens are rejected; clients holding those tokens must restart pagination.

### Truncated JSON requests now return HTTP 400 (Bug fix)

<!-- id: 3uBkz12rr8K -->

Developers calling affected JSON APIs now receive invalid_argument for incomplete or whitespace-only request bodies instead of HTTP 501.

Affected requests are rejected before processing, including requests to create withdrawals through API-key and wallet flows.

### Internal transfers no longer hang awaiting confirmation (Bug fix)

<!-- id: MrF7isoskaK -->

Requests to transfer funds between Trading accounts now return a timeout error when confirmation does not arrive within the confirmation deadline.

Cancelling a request also stops the confirmation wait. A timeout or cancelled request does not establish whether the transfer completed.

### Transfers show Funding balance errors (Bug fix)

<!-- id: 9Japp4wBDxH -->

When a Funding balance refresh fails, users can retry directly in the transfer form without losing known balance information.

Transfers between your accounts and to other users now show a Funding balance refresh warning with a Retry button. Known balances remain visible, and transfers from Funding stay disabled until a refresh succeeds.

### Fixed transfer history errors for off-chain transfers (Bug fix)

<!-- id: aM6kuWas3Yy -->

Fixed a case where valid off-chain transfers could prevent transfer history from loading.

Affected transfers now appear alongside the rest of the history page. The fix applies to both REST and ConnectRPC transfer history requests.

### Deposit guide no longer clips horizontally (Bug fix)

<!-- id: 2c8eV2NLatE -->

First-time visitors to the Deposit page see instructions reposition above or below highlighted fields when the window has insufficient space beside them.

Guide placement adjusts as the window resizes, and page scrolling pauses while the guide is open.

### Transfer destinations no longer omit whitelisted accounts (Bug fix)

<!-- id: Vm2mpFW3AQU -->

Whitelisted internal accounts now appear even when they have not been saved in your address book.

Transfer destination lists also preserve unresolved whitelist status and include whitelist update times for internal accounts.

### Trading transfer retries preserve original acceptance details (Bug fix)

<!-- id: c2LoZZL9PMB -->

Clients using POST /v1/trading/internal-transfers receive consistent accepted results when retrying the same transfer.

Retries retain the original transfer ID and acceptance timestamp, and asset display metadata changes no longer cause false retry conflicts. Accepted transfers remain recorded when the caller disconnects. Error responses preserve cancellation and timeout statuses, domain error codes, and applicable retry headers.

### Transfer page clears emptied sources after submission (Bug fix)

<!-- id: e3BGU7nYeX7 -->

When a successful transfer sends the full balance of the source’s only asset, the form clears its selections so the next transfer starts without a misleading balance error.

The source, destination, and selected asset reset when the source is emptied; partial transfers retain their account selections.

### Transfer balances no longer revert after updates (Bug fix)

<!-- id: FPZHFwEdPsK -->

Users moving funds see newly credited available balances even when an older balance refresh finishes later.

Transfer account balances now follow live updates for the active main account or sub-account, and delayed refreshes preserve newer amounts and newly credited assets.

### More reliable funding updates (Bug fix)

<!-- id: 6PTvjvDWzfM -->

Fixed a chain data lookup error that could interrupt deposit, withdrawal, and balance updates.

Affected data is now retried automatically, allowing funding updates to recover once the required chain data becomes available. Updates dependent on missing data remain delayed until it can be retrieved.

### Outside clicks no longer cancel wallet confirmations (Bug fix)

<!-- id: NhVAibSXra4 -->

Wallet users also receive a completion notification and refreshed balances when a request succeeds after they cancel it in the app.

Pending wallet confirmations stay open when you click outside the dialog, including on a wallet extension’s confirmation prompt. You can still cancel while waiting for wallet approval; if you later approve the request in your wallet and it completes, the app reports the outcome and refreshes balances.

### Equity charts no longer hide loading failures (Bug fix)

<!-- id: NN4Cxs5tDw8 -->

Dashboard, Funding, and Unified Trading equity charts now offer Retry and retain available history with a warning when a refresh fails.

Charts show placeholders when history is unavailable. Documentation and changelog pages use the standard desktop app navigation, and the mobile sign-in button reads “Connect”. Accounts with unfinished welcome onboarding land on Spot Markets after sign-in. The dashboard VIP badge opens the fee schedule, login policy links open in a new tab, and account-page search shortcuts stay hidden while signed out. Deposit and Transfer buttons appear below balances for signed-in users.

### Ledger transaction details no longer appear abruptly (Bug fix)

<!-- id: BqG1KdSFcdZ -->

Deposits, withdrawals, and transfers now show loading placeholders arranged to match their transaction details.

Amounts, progress, and transaction steps fade into place as data arrives, reducing layout shifts when opening transaction details.

### Withdrawal forms stay in sync with whitelist changes (Bug fix)

<!-- id: QE6vNdv53vD -->

Open withdrawal forms now recheck destination eligibility when the withdrawal whitelist changes, including changes made in another tab.

After a whitelist-related rejection, the form refreshes the whitelist and prompts you to choose an approved address. Further submission stays blocked until destination eligibility can be verified.

### Withdrawal errors suggest networks with sufficient liquidity (Bug fix)

<!-- id: LFx2A31HUH7 -->

When a withdrawal exceeds available liquidity, the message identifies the asset and network and offers recovery options.

Suggested alternative networks now account for the full entered amount, network fees, available balance, minimum withdrawal amounts, and supported precision. If no alternative qualifies, the message suggests splitting withdrawals across supported networks or waiting for liquidity to replenish.

### Transfers no longer accept identical source and destination (Bug fix)

<!-- id: CJaWaHJoMpY -->

This applies when manually entering a recipient in the “To another Polyester user” transfer flow.

Selecting the same account’s Funding balance as both source and destination now disables Transfer, as does selecting its Trading balance on both sides. Transfers between Funding and Trading, or to another account, remain available when other requirements are met.

### Asset tooltips explain testnet trading eligibility (Improvement)

<!-- id: fcwAKLushwd -->

Deposit and withdrawal screens now distinguish paper assets for trading from native testnet tokens for testing deposits and withdrawals.

Updated tooltips, alerts, and FAQs explain that paper assets are simulated versions created on Ethereum Sepolia, separate from the assets’ native blockchains. They also clarify that native testnet tokens cannot be traded on the exchange during testnet. The deposit address header gives account labels more room.

### Deposits and withdrawals gain testnet asset tabs (Improvement)

<!-- id: NuY17dViU3V -->

Users selecting a paper asset on testnet now see a notice explaining that it has no value outside the testnet.

Deposit and withdrawal asset pickers now offer Paper Assets and Testnet Assets tabs, with Paper Assets selected by default. Both pages also include an FAQ explaining the difference between paper assets and assets on public test networks.

### Withdrawals use wallet message signing (Improvement)

<!-- id: JJW6CqCREu5 -->

Users withdrawing trading balances now approve a message instead of structured data in their wallet.

The updated approval method applies to both connected and embedded wallets.

### Transfer amounts default to asset units (Improvement)

<!-- id: Sd7kkV7nEhm -->

The transfer dialog now starts in the selected asset’s units when you have no saved denomination preference.

You can still switch to USD when a price is available, and saved USD selections continue to apply.

### Clearer Scan navigation and smoother onboarding (Improvement)

<!-- id: 3ofGozGiPJD -->

Polyester Scan improves documentation access and makes Testnet easier to identify, alongside onboarding and tour display fixes.

Scan’s More menu enables User Docs and API Docs links and adds Developer Docs. The network selector shows a dedicated Testnet icon and label, with Mainnet displayed as unavailable. In Mock Mode, username claiming no longer blocks onboarding completion. Tour videos without a separate dark version remain visible in dark mode, and the deposit tour gains a preview image.

## Accounts

Daily claims and social verification APIs now return standardized, more specific error states. Account settings also add username editing, guided X and Discord verification, and account selection during API key creation.

### Daily Claims API standardizes error codes (Breaking change)

<!-- id: iUF4NY1dp16 -->

Session-authenticated integrations can distinguish temporary reward unavailability from general service failures across REST and Connect.

REST application errors now use uppercase Claims codes, while Connect errors include claims.v1.ErrorDetail. Browser clients can read retry and rate-limit response headers. Public request bodies are limited to 1 KiB. Protocol and network failures may omit Claims error details.

### SocialVerificationReady distinguishes expired and invalid states (Breaking change)

<!-- id: Cdgc9tUGmYp -->

API clients can determine whether to restart a social verification challenge or retrieve its current status without parsing error messages.

SocialVerificationReady now returns AUTH_SOCIAL_VERIFICATION_EXPIRED for expired challenges and AUTH_SOCIAL_VERIFICATION_INVALID_STATE when verification is no longer awaiting user action. Both replace AUTH_INVALID_REQUEST and return HTTP 412 through REST, replacing HTTP 400.

### VIP tier updates no longer stall across accounts (Bug fix)

<!-- id: ARnaA4sFDAq -->

Scheduled VIP qualification continues for other accounts when one account has conflicting qualification data.

The affected account keeps its last valid VIP tier, and corrected data can be considered at the next eligible hourly evaluation.

### Equity charts no longer fail across price gaps (Bug fix)

<!-- id: NtmxCE7br5N -->

Account and portfolio history reuse available prices without treating missing price data as zero equity.

Charts carry the latest usable earlier price across missing or incomplete price data. A leading gap uses the first usable later chart price within the requested period. When required prices have no usable history, the chart returns empty instead of a server error.

### Subaccount setup no longer times out after signup (Bug fix)

<!-- id: 5B1HX7hREfP -->

Newly registered users can request subaccount signing authorization without a 15-second error caused by concurrent account updates.

Fixes a first-attempt HTTP 500 that could force users to retry subaccount setup immediately after creating their account.

### Self-funded daily claims no longer stay pending (Bug fix)

<!-- id: GQQhqq14zJ -->

Campaign funding accounts now receive an unavailable result when attempting to claim rewards from their own campaign.

Existing affected claims show as unavailable while retaining their original claim reference and reward amounts. REST and Connect return the existing CLAIM_UNAVAILABLE error for these claim attempts.

### Daily claims stop reporting misleading insufficient funds (Bug fix)

<!-- id: XQnAAF5TFKY -->

Affected reward requests now tell customers the claim is temporarily unavailable and to try again later.

The daily-claim API returns HTTP 503 with CLAIM_TEMPORARILY_UNAVAILABLE for affected requests; Connect callers receive Unavailable.

### Daily claims no longer retry unfunded payouts continuously (Bug fix)

<!-- id: 787SradBxYr -->

When a daily reward payout lacks funding, your original claim remains eligible for automatic retry without another submission.

Affected payouts retry after progressively longer delays, capped at 15 minutes. Repeated claim requests respect the same delay, and claim status remains available.

### Daily reward dialog no longer overlaps tours (Bug fix)

<!-- id: HaotzeE3SYe -->

Eligible testnet users can open daily rewards from navigation or after onboarding without competing tour overlays.

Opening daily rewards dismisses active tours and prevents new tours from appearing until the dialog closes, when tour eligibility is checked again. Polyester Scan’s footer AI links also include the Polyester Chain guide in their prefilled questions.

### More reliable account and API settings updates (Bug fix)

<!-- id: bMof7pJArwU -->

Fixed an issue that could delay account and API configuration changes from taking effect.

Subaccount access changes and API rate-limit updates now synchronize more reliably, including when existing entries are updated or removed.

### Testnet welcome stops repeating across subaccounts (Bug fix)

<!-- id: 8XCm6VfsHBP -->

Eligible Testnet users now see the welcome dialog after onboarding is complete and the onboarding dialog has closed.

The welcome stays marked as seen for the main account in the same browser across subaccount switches and page reloads, while separate main accounts retain their own welcome status.

### Missing qualification data no longer lowers VIP tiers (Bug fix)

<!-- id: 7RUbtvqKpFM -->

Accounts also retain earned automatic qualifications when a temporary VIP assignment expires while activity data is incomplete.

Missing portfolio-value or settled-volume data now prevents automatic tier reductions, while complete qualification data can still support upgrades.

### API key lists no longer show revoked keys (Bug fix)

<!-- id: h3Cro22eh9M -->

Remaining keys appear newest first, with consistent ordering when creation times match.

Subaccount detail requests also reject invalid inclusion flags and distinguish denied balance access from temporary unavailability.

### More reliable index-price history (Bug fix)

<!-- id: Hna7U6FPPET -->

Improved recovery of the historical index prices used in portfolio history.

Recovery now preserves saved progress when older data is replayed and rejects conflicting historical records before incorporating them into hourly averages.

### MFA completion errors no longer consume challenges (Bug fix)

<!-- id: UfisR4CzvAJ -->

Users can retry the same unexpired MFA challenge when a temporary service error prevents verification from completing.

Applies to authenticator-app, passkey and recovery-code verification. Authentication REST errors also return HTTP statuses matching their reported error codes.

### Equity history avoids stalls after feed handovers (Bug fix)

<!-- id: ChidrPEuwRg -->

Account and portfolio charts can continue receiving new price history when the underlying price feed is reassigned.

Prevents a price feed handover from interrupting new equity-history data while retaining current market prices. Previously stored history gaps are not repaired.

### Equity charts load without direct USD markets (Bug fix)

<!-- id: bf8ALnoMfqo -->

Accounts holding assets such as ETC can now load equity history using verified USDT market prices when direct USD markets are unavailable.

Equity remains displayed in USDT. History requests also allow time for recent prices to finalize, avoiding failures near minute boundaries; missing or invalid price history can still make charts unavailable.

### Incomplete initial prices no longer block equity history (Bug fix)

<!-- id: KwCu2HP3Q2n -->

Users can view the available portion of account and portfolio equity history when its earliest price records are incomplete or invalid.

History starts at the first chart point supported by usable prices, keeping equity values and BTC prices aligned. Invalid prices or extended gaps later in the history can still prevent loading, as can entirely unusable price history.

### Restore live portfolio valuation updates (Bug fix)

<!-- id: GTg7tqSWr29 -->

Fixed a price-update issue that could make current portfolio equity unavailable after startup.

Portfolio valuations now continue receiving live index-price updates. Price-update failures no longer block unrelated ledger reads.

### X verification code no longer misaligns bio text (Bug fix)

<!-- id: SunbuvVA8ey -->

The profile preview keeps text aligned while demonstrating how to add a verification code to your X bio.

The highlighted code now matches the surrounding bio text’s line height throughout the typing animation.

### X verification continues when profile details fail (Bug fix)

<!-- id: JFQJEX6vXtT -->

Users linking an X account can proceed to bio verification even when their profile preview cannot load.

The verification screen explains when profile details are unavailable and still lets users attempt verification with a code in their X bio. Handles confirmed as nonexistent continue to show an account-not-found message.

### Renaming API keys no longer clears public keys (Bug fix)

<!-- id: VQ2oA7S2qV9 -->

Developers can rename an API key while keeping its public key visible and available to copy in account settings.

The public key remains displayed after saving a new label or receiving a live update for the renamed key.

### Wallet sign-in no longer mislabels service errors (Bug fix)

<!-- id: EtzQEAmTZfZ -->

Wallet sign-in and signed subaccount creation now distinguish server failures from invalid or expired wallet challenges.

When a wallet challenge cannot be retrieved because of a server failure, the response now reports a server error. Missing and expired challenges retain their existing authentication errors.

### Native testnet holdings no longer block equity (Bug fix)

<!-- id: RJoZMg1As4P -->

Current and historical portfolio equity exclude native testnet tokens such as tBTC and tETH while preserving their actual balances.

Native testnet tokens contribute zero to equity without requiring price feeds. Paper trading assets continue to contribute to portfolio value and require valid prices.

### Docs and announcements restore account menus (Bug fix)

<!-- id: 5uttdMq35fK -->

Signed-in visitors opening documentation or announcements directly now see their account controls while their session is restored.

Moving to either section from elsewhere in the app preserves the existing sign-in state.

### Onboarding shows images while videos load (Bug fix)

<!-- id: Drcya6ymZn7 -->

Users viewing the deposit, trading, and wallet ownership steps now see a still image while each animation loads.

Onboarding prepares these images when the tour opens and continues to show still images for reduced-motion preferences. The welcome screen animation also responds to pointer movement and clicks again.

### Profiles no longer hide completed Discord verification (Bug fix)

<!-- id: YohL59u3zYM -->

Accounts with previously completed Discord verification are corrected without needing to verify again.

Completing Discord verification now updates the username and verified status returned in your account profile.

### In-app notifications stop when disabled (Bug fix)

<!-- id: ccrwc5D67yb -->

Turning off In-App Notifications in Settings clears visible notification toasts and saves your choice for future visits.

New toasts remain hidden while the setting is off. Turning it back on allows new notifications to appear without replaying dismissed ones. Notifications remain enabled by default.

### X verification no longer leaves handles unsaved (Bug fix)

<!-- id: ZotakEtUC54 -->

Verifying X from Account \> Profile now saves the selected handle automatically, without a separate profile save.

Verification completes only when the saved profile confirms the matching X handle as verified. If saving fails, an error appears and verification remains available to retry.

### Discord verification no longer rejects completed checks (Bug fix)

<!-- id: bLh4i99VHqP -->

After posting a challenge code in the Discord verification channel, users can click Verify Now to confirm their verified account without an unnecessary error.

The verification dialog now checks the result completed by the Discord bot and displays confirmation when verification succeeds.

### Portfolio values no longer use stale prices (Bug fix)

<!-- id: im6bCRjnEWq -->

Portfolio valuations across master accounts and owned subaccounts now use validated index prices instead of trade-candle prices.

Current valuations require valid prices from at least two venues with price samples and inputs no older than five seconds. Historical valuations use finalized one-minute index closing prices. Requests return an error when required prices are missing or invalid, rather than reuse older prices or return partial valuations.

### Sub-account invitation badges no longer obscure names (Bug fix)

<!-- id: fvcwm4sEkaZ -->

The Members table keeps invited usernames and Account IDs readable when space is limited.

Invitation timestamps hide in narrow cells to leave room for the recipient’s name or Account ID, while the Invited badge stays visible and long names truncate with an ellipsis.

### Revoked API keys no longer remain listed (Bug fix)

<!-- id: dqhcx136rT6 -->

Account and sub-account API key tables now hide keys immediately after successful revocation and keep them hidden through delayed updates.

Actions, confirmation dialogs, notifications, and MFA prompts now consistently say “Revoke.” Revoked keys no longer offer a repeat removal action.

### Terms acceptance is required to continue (Improvement)

<!-- id: V6gAtPG1q6N -->

New accounts accept terms during onboarding, while returning users with outstanding acceptance see a separate prompt.

Acceptance is recorded for your account, and onboarding hides the consent checkbox when the current terms are already accepted. Terms of Service and Privacy Policy pages remain accessible without consent dialogs. Accounts with an existing username skip username selection during onboarding.

### MFA setup reminders in your account (Improvement)

<!-- id: FcNSHYk5Wgz -->

A persistent banner across account pages now reminds users without multi-factor authentication to add a passkey or authenticator app.

Select “Set up MFA” to open enrollment directly from the banner. The reminder disappears once a verification method is added. Enrollment instructions, loading placeholders, and spacing in security settings have also been refined.

### X verification instructions no longer repeat (Improvement)

<!-- id: 2TyXGXiQzT4 -->

Users linking an X account now see one explanation that verification uses their public bio without requiring an X login.

The explanation appears in the Verify X dialog header, with the duplicate guidance beneath the handle field removed.

### Portfolio history calculations take less time (Improvement)

<!-- id: Unpdrm8eiKe -->

Accounts with many subaccounts or frequent balance changes benefit from faster portfolio equity calculations.

The change reduces the time needed to prepare historical equity values across a master account and its subaccounts.

### X verification requires bio confirmation (Improvement)

<!-- id: CK4BqgogJn9 -->

Users linking an X account to their profile must confirm they have saved the verification code in their X bio before selecting Verify.

A checkbox enables Verify, and a reminder highlights the confirmation when users hover over the disabled button. If you change the handle or verification code, you need to confirm again.

### Profile adds username selection and editing (Improvement)

<!-- id: Bu4iACLFTZV -->

Accounts without a username can now choose and claim a generated name directly from the Profile page.

Refresh the suggested names before claiming one, or copy your existing username. When custom editing is unlocked, use inline save and cancel controls; during a cooldown, the edit control indicates when another change becomes available. Username history remains accessible beside the username label.

### Simplified notification settings (Improvement)

<!-- id: SJTunuwLKg1 -->

Notification settings now group display options together and hide event-specific controls when unavailable.

The In-App Notifications toggle moves into Display Settings. The Push Notifications and Show Notification Badge switches are removed. Notification trigger groups and the All, Essential, and Custom presets appear only when the feature is enabled.

### API key details use a two-column layout (Improvement)

<!-- id: Jv8tnSYp7k -->

Users managing API keys can view identifiers, account, label, and expiration together in a responsive General Info card.

Fields stack on smaller screens, with the public key spanning both columns on wider screens. The API Requests panel now shows a chart placeholder marked “Coming soon,” and the empty code panel has been removed.

### Clearer MFA expiry and recovery code controls (Improvement)

<!-- id: CrZVEH31EqS -->

Multi-factor authentication prompts now show when the current verification request expires. Recovery code controls provide clearer copy feedback and easier dismissal after saving.

Expiry guidance appears in method selection, authenticator, passkey, and recovery code prompts. Authenticator errors and verification progress messages take priority over the expiry note. Recovery code copy confirmations stay visible longer, and after confirming you saved your codes, you can close the dialog with Escape or by clicking outside.

### API key creation adds account selection (Improvement)

<!-- id: ZPJT6kfPupv -->

Users with eligible subaccounts can choose which account a new API key represents directly in the creation dialog.

The dialog preselects the subaccount whose page opened it, otherwise the eligible active account or main account. Labels now show a character counter as they approach the existing 64-character limit and prevent input beyond it.

### Discord and X verification show confirmation screens (Improvement)

<!-- id: FL6SY97nZcj -->

Users linking social accounts to their profile now see a dedicated confirmation displaying their verified handle.

Successful verification replaces the setup instructions with a provider icon, checkmark, and linked handle. X verification also offers a Change handle button that focuses and selects the current handle for editing.

### Profile verification guides X and Discord linking (Improvement)

<!-- id: FvuLK87Z88x -->

Account holders can preview their X profile before verification and receive automatic confirmation when Discord verification completes.

Start either flow from Social Links in Profile settings. X verification shows the selected profile and instructions for adding a temporary code to its bio. Discord verification provides server and channel instructions, a copyable code, and an option to renew expired codes. Verified handles appear in Profile settings.

### Address book tags toggle within the picker (Improvement)

<!-- id: 3QPpk87KLQy -->

When adding address book entries, including during sub-account creation, users can select or deselect tags by clicking a row or using the keyboard.

Selected tags appear first, in selection order, with checkmarks showing which tags are applied.

### Social verification shows time until code expiry (Improvement)

<!-- id: d3xqLWQtwYh -->

Users verifying X or Discord accounts from their profile can now see the remaining time update automatically while the dialog is open.

The expiry display uses relative labels such as “in 5m,” with the exact expiry time available on hover.

### Onboarding adds screen reader cues (Improvement)

<!-- id: 5GHeGpgSWjN -->

Account setup now provides clearer progress information, announces refreshed username choices, and adds keyboard focus indicators to theme options.

Color tone and color scheme controls have associated labels, and legal links indicate that they open in a new tab to screen readers. Decorative previews are excluded from keyboard navigation and screen reader output.

### Subaccount display names use their labels (Improvement)

<!-- id: V6LpjHys4ar -->

Shared contacts and account identity displays show a labeled subaccount as “Trading” instead of “@alice / Trading”.

Subaccounts without a label continue to display the owner's username when available.

### Balance tables show 50 rows per page (Improvement)

<!-- id: YXDPVWFYDKY -->

The new default applies to balances on the account dashboard, Funding Account, and Unified Trading pages.

The default page size increases from 10 to 50 assets, reducing page changes when reviewing larger portfolios.

### Social verification codes now use four characters (Improvement)

<!-- id: 3DoX2BZBKXo -->

Users verifying their X account need less space in their profile bio for the temporary code.

New codes contain four uppercase letters or digits, such as 24AB, and remain valid for 15 minutes.

### API key audit log tab removed (Improvement)

<!-- id: er4eXkscfAZ -->

API key owners now see permissions directly on the details page without a tab that always showed an empty history.

A Permissions section replaces the tab navigation, and the unused Audit Log page has been removed.

### Onboarding adds username and appearance choices (Improvement)

<!-- id: 4rkgTtEcKbF -->

Users can re-roll suggested usernames and preview their selection before completing account setup.

The welcome walkthrough now includes username selection and controls for language, light or dark mode, color tone, and trading colors. Introductory slides use animated previews, with still images for users who prefer reduced motion.

## API

New currency conversion APIs provide display metadata and reference rates for 154 fiat currencies, USDC, and USDT. Transfer and analytics timestamp filters now include records at the requested end time, and trade responses consistently identify maker and taker fills.

### Currency conversion APIs add fiat and stablecoin rates (New feature)

<!-- id: 4WTSyne7sz9 -->

Developers can fetch display metadata and reference rates for 154 fiat currencies, USDC, and USDT.

GET /v1/market/currency-conversion/config returns currency names, symbols, and display precision. GET /v1/market/currency-conversion/rates returns fiat units per USD and independently observed USD values for USDC and USDT, with exact decimal strings, source timestamps in seconds, and freshness flags. Last-known rates remain available when stale; the rates endpoint returns HTTP 503 before any observations are available.

### Spot configuration no longer fails after asset additions (Bug fix)

<!-- id: WkUUdZrf5Qy -->

API clients can retrieve asset precision and trading-pair settings after new assets are added.

Fixes configuration requests failing because market-data volume precision was unavailable for a newly added asset.

### Fixed inclusive timestamp filters for transfers and analytics (Bug fix)

<!-- id: TnMaac5fgqS -->

Transfer history and Chain Analytics queries now include records previously omitted at the requested end timestamp.

Transfer filters include the entire final microsecond, allowing exact timestamp queries to find matching transfers. Zipped asset supply, grouped supply, and unified asset balance analytics include the entire explicitly requested final second while preserving response time-range metadata.

### Taker fills no longer omit isMaker (Bug fix)

<!-- id: 5RMJJjSxnMd -->

REST clients receive an explicit maker-or-taker value in both trade history and order-detail responses.

Trade objects returned by GET /v1/spot/trades and GET /v1/spot/orders/{order_id} now include isMaker: false for taker fills and continue to include isMaker: true for maker fills, matching the existing required-field contract.

### Faster recovery from currency-rate refresh failures (Bug fix)

<!-- id: AQp58sYYfkp -->

Fiat conversion rate updates now retry temporary provider failures, helping updates recover before the next scheduled refresh.

Retries happen automatically; no client changes are needed.

### GET /v1/transfers rejects invalid filters (Bug fix)

<!-- id: ULZiozvQCUV -->

Developers receive HTTP 400 for malformed sort flags and unsupported timestamp bounds when querying transfer history.

Malformed reversed values now return a validation error instead of silently selecting oldest-first ordering. REST and Connect requests reject timestamp bounds that exceed the supported Unix-microsecond range.

### More reliable fiat currency conversion rates (Bug fix)

<!-- id: KKBZXjXAQHg -->

Fixed handling of invalid provider data in fiat currency conversion updates.

Fiat rate updates now reject out-of-range values, invalid timestamps, and responses containing unexpected trailing data, preventing these inputs from becoming conversion rates returned by the API.

### Corrected order book depth examples in REST API docs (Bug fix)

<!-- id: VhCr2HromMt -->

Generated order book request examples now use numeric depth values accepted by the REST API.

Examples for GET /v1/orderbook/{symbol} now use ?depth=1 instead of ?depth=DEPTH_1, preventing the invalid-depth error reported when copying the documented request.

### Fixed Python SDK import errors (Bug fix)

<!-- id: JQJ6tUtRNdm -->

Fixed incorrect module references that could prevent the Python SDK from importing successfully.

Bundled API modules now resolve consistently within the installed SDK, including newly generated modules.

### Local currency symbols in conversion config (Bug fix)

<!-- id: SsviuzjC8be -->

The currency conversion API now returns representative local fiat symbols where available, making display labels more familiar.

Examples include ֏ for AMD, Kz for AOA, and the full-width ￥ for JPY. Several currencies share symbols such as $, so code remains the currency identifier. ISO codes remain the fallback when no distinct visible local symbol is available. English names, display fraction digits, stablecoin tickers, and response fields are unchanged.

### Batch replacement stream docs add payload examples (Improvement)

<!-- id: brMnCFqBYro -->

API developers can reference JSON and Protobuf examples showing a batch with both accepted and rejected order replacements.

Field descriptions explain item ordering, replacement progress, optional order identifiers, rejection codes, and accepted and rejected counts.

### Clearer ledger API errors (Improvement)

<!-- id: dHaqt1UtcTs -->

Ledger read APIs now provide more specific feedback for invalid parameters and pagination tokens.

Validation errors explain accepted history ranges and numeric formats, and identify pagination-token fields that do not match the request. Canceled requests and deadline failures receive distinct error responses. Temporary data unavailability is reported with a clearer message.

### API reference lists accepted authentication methods (Improvement)

<!-- id: BppvEBxEE4W -->

Developers can identify which endpoints accept session tokens, API keys, or requests without authentication.

REST and ConnectRPC reference data now includes accepted credential types, with session-only endpoints explicitly identified and public endpoints marked as requiring no authentication.

## Polyester Scan

Polyester Scan now offers a full-screen mobile menu and clearer active-network labeling, while desktop search preselects suggestions for faster keyboard navigation. Release handling is also more reliable, helping open tabs recover after app updates.

### Scan preview avatars display their colors (Bug fix)

<!-- id: 75DMANoKoNZ -->

Address icons in generated Polyester Scan preview images now retain distinct background and shape colors.

The fix applies to address and smart-account preview cards, as well as address icons in fund-flow previews.

### Scan block overview handles missing address fields (Bug fix)

<!-- id: KXzCJbo7YDy -->

Blocks with incomplete fee recipient or parent hash data are handled safely when viewing their details in Polyester Scan.

The fee recipient display and copy control tolerate missing address values, and the parent hash link handles an absent hash.

### More reliable Polyester and Scan updates (Bug fix)

<!-- id: dZadydf9dn6 -->

Fixed an issue that could prevent new Polyester and Polyester Scan releases from rolling out.

The previous release now stays available during updates where possible. Older tabs may need to reload when files from their release are no longer available.

### Open tabs keep loading after app updates (Bug fix)

<!-- id: am6tXupXNCg -->

Polyester and Scan automatically retry startup loading failures after updates and offer a Reload button if loading still fails.

Files needed by existing tabs remain available for at least four days after their app version is replaced. Automatic recovery is limited to one reload within five minutes to prevent repeated refreshes.

### Polyester Scan search automatically selects suggestions (Improvement)

<!-- id: FWvsWbmNRVB -->

Desktop users can press Enter immediately to activate the selected suggestion when opening search or changing their query.

Search selects the first popular suggestion, or the first available result when popular suggestions are absent, and updates the selection as results arrive. Pressing Up within popular suggestions now keeps selection in that group.

### Polyester Scan adds a full-screen mobile menu (Improvement)

<!-- id: gLHVTtjfyaU -->

Mobile visitors can access grouped explorer links, settings, network selection, and theme controls from one menu.

The menu closes after navigation and supports dismissal with Escape. Shared asset and chain links gain expanded artwork coverage, including testnet tokens and networks. Homepage layouts and documentation navigation also receive visual updates.

### Polyester Scan displays the active network (Improvement)

<!-- id: 5WWeUZHYgMT -->

The public network menu no longer offers Ethereum, and saved selections for unavailable networks automatically fall back to Polyester.

The explorer home page heading and top-bar badge now show the network name, including whether it is Testnet or Devnet.

### Scan renames Chains to Supported Chains (Improvement)

<!-- id: j11VzxZRGj4 -->

Navigation and search use the new name, while existing chain links redirect to the corresponding pages.

The list now lives at /supported-chains and individual networks at /supported-chain/{code}; redirects from old detail links preserve selected tabs. Chain and unified asset statistics use two-column layouts on small screens. Network tooltips on the list pages show asset counts and typical deposit confirmation times.

## Documentation

Documentation now offers richer changelog search with audience filters, expandable details, and shareable URLs, while testnet guides and API references are accessible without an access code. API reference coverage also expands to wallet authentication and paginated execution history.

### API Playground no longer JSON-encodes array filters (Bug fix)

<!-- id: FLbUqowb867 -->

Developers can enter comma-separated array values in REST query fields and get correctly formatted requests and code examples.

Array examples now populate editable fields as comma-separated values. Requests, generated code samples, and Markdown examples follow each parameter’s declared format, including repeated symbol parameters for open-order filters.

### Daily claims API docs appear under Trading (Bug fix)

<!-- id: DnfuPe9Jeaq -->

Developers can find daily reward status and claim endpoints in the Trading section of both the REST and ConnectRPC references.

Daily claims documentation now uses consistent navigation grouping across both API references.

### Badges no longer shrink in tight layouts (Bug fix)

<!-- id: dKy1sE3N5vb -->

Status labels retain their width, and API reference badges can expand to fit longer labels.

API reference badges for field types, validation rules, values, and defaults no longer have a fixed maximum width or automatic text truncation; long pattern previews remain abbreviated.

### Documentation Markdown no longer shows authoring markup (Bug fix)

<!-- id: STdWM6ggTPe -->

Readers using Copy page or View as Markdown now receive readable steps, tables, and code examples from the documentation page.

Markdown exports preserve code formatting and include full image and link URLs. ChatGPT and Claude sharing links use the Markdown view. Documentation code snippets also retain line breaks and syntax colors, and expanded images close without flashing.

### Changelog search and filters update results immediately (Bug fix)

<!-- id: 6raTf3DQAg -->

Readers can open links containing search terms and filters and keep those selections when paging through changelog entries.

Search and filter changes update the displayed entries and address bar together. The date filter selects one period at a time; selecting it again clears it.

### Changelog adds expandable sections and audience filters (Improvement)

<!-- id: 4pQhwkAdAtX -->

Readers can search individual change descriptions and combine filters to find relevant updates.

Sections show matching item counts, while individual changes can expand to reveal details. Filters include category, audience, product area, network, and date, and selected filters remain in shareable links. Entries display calendar dates or release date ranges.

### Testnet docs open without an access code (Improvement)

<!-- id: LcEEB29wixw -->

Visitors can browse user guides, developer documentation, SDK guides, and API documentation on testnet without entering an access code.

User, developer, and SDK documentation is available as both web pages and Markdown. Selecting Connect from public testnet pages opens login with a return destination that preserves the documentation page and query parameters.

### API reference documents wallet challenges and pagination (Improvement)

<!-- id: Exx9g6pt4mc -->

Developers can consult updated request and response schemas for wallet authentication and execution history across order replacements.

The reference covers wallet challenge messages for login and sub-account creation, paginated order executions, and trade filters across replacements with optional settlement transfers. It also corrects withdrawal signature guidance and the numeric order book depth example.

### Clearer API documentation navigation and examples (Improvement)

<!-- id: EAjMuuiD4M9 -->

API documentation groups related services more clearly and includes improved examples and updated server listings.

Find Zipper under Chain, and Internal Transfer and VIP under Account. Fee and Rate Limit remain under Trading. Examples now include fuller wallet sign-in and subaccount authorization messages. The public OpenAPI server list uses https://api.testnet.polyester.com for Testnet and lists Development and Testnet only.

### Documentation links gain consistent underlines (Improvement)

<!-- id: VXyYr5a9SFb -->

FAQ answer links now show keyboard focus cues, while linked chain names display underlines that thicken on hover.

JSON code examples gain syntax coloring, and interactive deposit and withdrawal walkthroughs show approval counts progressing toward the required total.

### Mobile navigation stays available on desktop-only pages (Improvement)

<!-- id: TBdau8iNUtM -->

Mobile visitors can browse the home page, legal pages, and user, developer, and SDK guides.

The desktop-required notice now leaves the top navigation accessible. Documentation uses smaller headings, wider page margins, and text-only previous and next links on narrow screens. Trading, markets, API reference, changelog, and help pages display the desktop-required notice on mobile.

### Changelog adds filters and shareable searches (Improvement)

<!-- id: 2adNUhnNnF2 -->

Readers can narrow the full release history by product, network, environment, change type, or date.

Search and filter selections stay in the URL for sharing and persist across pagination. Active filters can be removed individually or reset together, and release details expand through Learn More.

## Platform

Support chat now uses live network and market information, while the homepage offers dedicated funding demos and a more responsive trading preview. Reliability improvements keep chat messages and attachments visible and prevent homepage and embedded app loading issues.

### Embedded app no longer reloads repeatedly (Bug fix)

<!-- id: jCu6gtkBL6B -->

Users with older saved appearance settings can open the embedded app without a reload loop when their browser blocks third-party preference cookies.

Saved light or dark mode and color theme settings now apply immediately without refreshing the page.

### Homepage coin animation no longer flashes on load (Bug fix)

<!-- id: 6kbPuFDDWu7 -->

Visitors see a still coin image until the animation reaches its intended starting position beside the headline.

The opening transition keeps the coin image visible while the video prepares, including in browsers that use playback events to determine readiness.

### Home-page ball animation no longer shows double (Bug fix)

<!-- id: 722d13VBtWu -->

Visitors see a single moving ball beside the home-page headline when playback begins.

The static ball image disappears as the animation starts, preventing it from showing through the moving ball, and updated video assets support transparent playback.

### Homepage animation no longer fades at wider widths (Bug fix)

<!-- id: GYHFrAxXRVR -->

Visitors on medium and larger screens see the execution animation without faded side edges.

The homepage also updates the capitalization of its Frequently Asked Questions heading.

### Home page no longer fails after navigation (Bug fix)

<!-- id: A6BbnzYfWbN -->

Visitors can return to the home page from documentation or updates pages without encountering a missing market-data error.

The home page can load its market and asset information even when navigation does not supply the initial data.

### Homepage headline stays synchronized with its animation (Bug fix)

<!-- id: Xtxtp6ZVXMf -->

Mobile visitors see the headline and animated logo stay in step when video playback is interrupted.

Playback retries after pauses and when returning to the page, while Safari keeps the logo visible as playback starts.

### Homepage headline no longer drifts from animation (Bug fix)

<!-- id: 3MPF8X3uqLF -->

Mobile visitors see token names stay synchronized with the animated ball when video playback stalls.

The homepage retries playback after interruptions and keeps the ball visible while Safari starts the video.

### Help chat attachment previews no longer fail (Bug fix)

<!-- id: f7331BaNpF5 -->

Signed-in users can view screenshots when reopening saved conversations or sending attachments to support.

Image attachments display in the help widget wherever support chat is available.

### Help chat messages no longer disappear (Bug fix)

<!-- id: eEdgxBzDB9y -->

When starting a conversation, your first message and reply remain visible even if loading the saved conversation is delayed or fails.

New conversations stay selected instead of switching to an unrelated chat after a reply finishes. Choosing New chat still opens an empty conversation.

### Navigation hides unavailable changelog link (Bug fix)

<!-- id: bfTFdKkoC6b -->

Desktop and mobile menus now hide the Changelog entry when the changelog is disabled.

The link remains visible when the changelog is enabled.

### Testnet links now show access-code prompts (Bug fix)

<!-- id: 7oQ3qy3JfvE -->

Visitors navigating from public testnet pages into restricted app pages are prompted for a code when access is required.

The testnet homepage, public documentation, and legal pages remain accessible without a code.

### Home page separates deposit and withdrawal demos (Improvement)

<!-- id: U9YCmGr6ePg -->

Visitors can browse dedicated funding previews alongside a compact spot-market table and a trading-terminal preview adapted to screen size.

Deposit and withdrawal demos each have their own section and links to the relevant guides. The market preview uses narrower rows, while smaller screens show a terminal image with a live market header.

### Home page trading preview appears in stages (Improvement)

<!-- id: JcDBmpn7ktm -->

Mobile visitors can scroll past the trading preview and browse supported networks in a fixed grid.

The preview reveals its chart and order book as they become ready. The animated headline pauses when off screen or the browser tab is hidden, and home page network counts now follow the supported-network catalog.

### Images show loading placeholders and failure fallbacks (Improvement)

<!-- id: G7PTkWRAfZm -->

Avatars, banners, tutorial thumbnails, and trading previews gain consistent visual states when images load slowly or fail.

Loading placeholders follow the image’s size and shape and disappear once it loads; supported image slots show a neutral background if loading fails.

### Support chat uses live network and market information (Improvement)

<!-- id: 4r7oeGX6rNW -->

Answers about supported assets, transfer fees, minimums and trading rules now combine documentation with current product data.

Source links open documentation and legal pages on the app you are using. Replies also preserve screen names from linked instructions and bracket syntax in code examples.
