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