DOXA changelog

DOXA is a liquidity aggregator for prediction markets that compares odds and depth across Polymarket, Kalshi and others and routes each trade for best execution with an AI assistant.

v1.10.0: Withdrawal safety & treasury automation

  • Withdrawal funds protection — when you submit a withdrawal, the platform now logically earmarks the requested amount on the source hot wallet so concurrent treasury rebalancing operations never drain the funds you're about to receive; withdrawals no longer fail because automated maintenance moved the money away in the background
  • Configurable safety review window on withdrawals — by default outgoing withdrawals have a 1-hour review period before automatic execution, giving the team a chance to spot anomalies before funds leave the platform; the window length and per-trigger thresholds are adjustable per deployment
  • Smarter automated top-ups — when a hot wallet doesn't have enough liquidity for a pending withdrawal, the treasury system now proactively builds the cheapest funding route (same-chain swap, CCTP bridge or multi-hop) and runs it before approval, reducing failed on-chain transactions from insufficient balance
  • Admin treasury dashboard upgrades — operators see a live status timeline for every rebalance request, can adjust drift thresholds and review windows from the UI without redeploy, and receive Telegram notifications at each step of every plan; one-click cancel cascades to refund the user's balance if a topup can't be completed

v1.9.0: Polymarket V2 trading continuity

  • Polymarket trading is wired through the V2 deposit-wallet path that Polymarket rolled out for their May 2026 protocol upgrade — orders, sells, settlement and payouts continue without disruption ahead of the V1 shutdown deadline
  • Faster API responses under peak load — backend connection pool retuned and scheduled jobs re-staggered, eliminating the brief latency spikes (200 ms–2 s on portfolio and balance endpoints) that occasionally happened during simultaneous market refreshes

v1.8.1: Polymarket redemption reliability & treasury accuracy

  • Winning Polymarket positions on older markets now redeem automatically — payouts that previously got stuck flow back to your available balance on the next cycle
  • Aggregated orderbook sell highlight respects your position — when you sell, the gold fill-window stays on bids you can actually hit (the venues that hold your tokens), not on bids from venues where you have no position
  • Treasury status alert reports a fuller picture — open positions on Polymarket and the Limitless trading wallet are now counted alongside cash, so the coverage ratio reflects total platform assets accurately
  • Production deploys no longer report success while the app container failed to start — the deploy waits up to 3 minutes for the app to become healthy and fails the workflow on timeout
  • Analytics container has a 60-second startup grace window before health checks begin, eliminating a deploy-time race that occasionally left the app container in a created-but-not-started state

v1.8.0: Limitless venue, aggregated orderbook & Polymarket V2

  • Limitless venue fully integrated — markets, orderbook, trading, redemption — adding a third source of liquidity alongside Polymarket and Kalshi
  • Aggregated orderbook tab (Doxa) on event pages — best-of-book pricing across all venues with cross-venue indicator and real-time updates
  • One-click cross-venue execution — your buy is split across the cheapest venues automatically; portfolio shows a single combined card you can sell back the same way
  • Polymarket V2 support — settlement payouts are now delivered to your available balance only after on-chain redemption confirms
  • Limitless multi-outcome events show every outcome (sports Home/Away/Draw, election candidates, multi-tier crypto groups) — previously only one outcome rendered per event
  • Aggregated buys reserve a small slippage cushion automatically — fills no longer fail on small price drift between simulation and execution; any unused budget is refunded right away
  • Aggregated cards correctly reflect their state — open while held, closed after a sell, finalized after market resolution; closed cards drop from the active portfolio view automatically
  • Limitless winning positions are redeemed automatically — gas-less for you
  • Polymarket fractional market sell — sub-decimal share counts no longer rejected; sell-all on small positions now executes cleanly
  • Batch select-and-sell from portfolio — close multiple positions in one confirmation; failed legs retry automatically and show real fill results
  • Duplicate-click protection on every market sell — submitting the same order twice no longer creates duplicate trades
  • Real Polymarket rejection reason now shown on failed orders — instead of a generic 'rejected', you see the actual reason (e.g. 'no orders to match at this price')
  • Aggregated tab UI redesign — Doxa-branded with gold accent; venue tabs render as logos; cleaner aggregated view
  • Venue-availability indicator on tabs when one venue is missing data; Aggregated view works with single-venue depth too

v1.7.0: Market accuracy & resilience fixes

  • Kalshi events are no longer lumped under a whole series — each tournament or match now has its own page with its own outcomes
  • Liquidity and 24h volume filters work correctly for all Kalshi markets
  • Outcome probabilities no longer show impossible totals on low-price markets
  • Resolved Kalshi markets disappear from the feed promptly
  • Orderbook continues to render during brief backend syncs
  • Event breadcrumb now links directly to the original market on Kalshi or Polymarket in a new tab
  • Maintenance notice on the home feed when markets are temporarily unavailable
  • Polymarket NO-orders now record the correct price, position cost, and final status after fills — for both regular and neg-risk markets
  • Market-orders near the max price no longer fail with an 'invalid price' rejection
  • Trading panel: buy button shows the exact reserve amount needed (principal + slippage buffer) so there are no surprises about insufficient balance
  • Winning Polymarket positions are automatically redeemed on-chain, including tiny sub-unit remainders

v1.6.0: Telegram notification system

  • PG-backed notification queue with idempotency and rate limiting
  • 15 notification types: deposits, withdrawals, settlements, redemptions, solvency, whale alerts
  • Solvency check: platform wallets vs user balances with auto-alerts
  • Treasury status report every 3 hours with wallet breakdown
  • Admin panel: per-notification-type on/off toggles
  • Masked emails and percentage-based amounts for security

v1.5.0: Settlement pipeline & balance fixes

  • Sell proceeds go straight to available balance (no more stuck pending)
  • Settlement redemption auto-detected via on-chain CTF balance check
  • Fixed double-unlock causing negative locked balances
  • All-time P&L formula fixed — open positions no longer counted as losses
  • Airdrop UI feature flag (hidden in prod, visible in dev)

v1.4.2: LP Rewards Tracker UI

  • Airdrop LP Rewards page with full mock data
  • Outcome cards with competitiveness indicators
  • Filter bar, rewards tab, open orders tab
  • Onboarding modal and settings

v1.4.1: Trading UX improvements

  • Fractional contracts for accurate payout preview
  • Multiplier matches actual payout (cost-based)
  • Hybrid outcome sorting — numeric ranges first, probability for others
  • Limit price supports 0.1¢ minimum and decimal separators
  • Fill notifications show market title instead of order ID

v1.4.0: Settlement & redemption pipeline

  • Finance queue steps 5-6: on-chain redemption + release
  • Single redemption path (removed duplicate from worker)
  • Per-market sell proceeds release (was per-user)
  • Admin panel shows pending balance
  • 12 audit tasks documented (A01-A12)

v1.3.5: Resolution pipeline hardening

  • Connected redemptionCheck + release steps (were TODO stubs)
  • Double-credit guard in releaseSettlementPayout
  • Meilisearch disk explosion fix — conditional updates + index swap

v1.3.4: Search engine & fill reversal

  • Meilisearch integration — replaced PG ILIKE search
  • Power Search server-side filters
  • Fill reversal protection for Polymarket nonce exploit
  • On-chain balance tracking for positions

v1.3.3: Resolution detection & settlement

  • Resolution check worker in separate thread
  • Financial sequential queue (6-step cron)
  • Settlement with venue branching
  • TRADE_WIN to pending (Rule #2)
  • Category-aware pending — only deposits block withdrawal

v1.3.2: Resolution pipeline tasks

  • 11 resolution pipeline tasks (T01-T11)
  • DLQ retry policy with configurable timeout
  • Kalshi resolution — only finalized status
  • Void market handling and test coverage

v1.3.1: Production deploy fixes

  • Worker image rebuild in CI (removed stale conditional)
  • Grafana alerting fix (chatid type mismatch)
  • Dev → Main merge and production deployment

v1.3.0: Dual Postgres & data retention

  • PG-1 (user/financial) + PG-2 (venue pipeline) split
  • Data retention cron — archive resolved, purge orphaned
  • ClickHouse export: PG → CH → GCS bucket
  • Rust worker memory optimizations (26MB RSS)

v1.2.0: Ledger system & USDT support

  • SUM-on-read ledger (balances table dropped)
  • pg_advisory_xact_lock for balance serialization
  • Full USDT support across all chains
  • Admin panel with standalone JWT auth

v1.1.0: Trading & order execution

  • Market and limit orders via Polymarket CLOB + Kalshi API
  • Simple and Pro trade panel modes
  • Order book with sweep highlighting
  • Fill sync worker with venue status monitoring
  • Slippage protection and platform fee support

v1.0.0: Platform launch

  • Market aggregation: Polymarket + Kalshi
  • Custodial wallets via Privy TEE (5 chains)
  • Deposits, withdrawals, admin approval
  • Power Search with fuzzy matching
  • Bloomberg-inspired dark terminal UI