What's New in Telos
Every update, improvement, and fix — tracked transparently. Telos ships weekly with new features, exchange integrations, and AI enhancements.
Every update, improvement, and fix — tracked transparently. Telos ships weekly with new features, exchange integrations, and AI enhancements.
OKX Theme Architecture: Established neutral near-black (#0A0A0B) dark and pure white/black light theme tokens in src/app.css with full CSS custom properties layer.
Flat Institutional Surfaces: Eliminated glassmorphism, blur filters, and neon glow overlays across all cards and widgets in favor of 1px hairline flat borders.
Theme Switcher: Added instant light/dark toggle button across marketing navbar and authenticated app header calling reactive theme store.
High-Contrast Solid Buttons: Aligned primary action buttons to solid high contrast (.btn-primary-solid) matching OKX standard.
Tabular Financial Data: Enforced font-variant-numeric: tabular-nums and monospaced figures across order books, tickers, and position tables.
App Shell & Navigation: Refactored Sidebar, LandingNav, BottomNav, and application headers to flat hairline OKX layout structure.
Telegram WebApp Auth: Implemented POST /api/v1/auth/telegram endpoint verifying HMAC-SHA256 signatures with Web Crypto API and issuing 30-day session tokens.
Telegram Mini App (TMA): Deployed /telegram route supporting real-time WebSocket prices, fast paper order execution, and live position tracking.
Webview Auth Persistence: Added in-memory and localStorage token fallbacks in ApiClient ensuring zero-friction API calls inside mobile iframes and sandboxed webviews.
Brand Identity: Synchronized official character avatar (/logos/telos-logo-small.png) in the Telegram Mini App header in compliance with branding invariants.
Command Palette: Added global Cmd+K launcher with fuzzy asset lookup, 158-page route navigation, density toggling, and mode switching.
Tactile Spotlight Glow: Created use:spotlightGlow and GlowCard.svelte with dynamic cursor-following cyan radial spotlight on desktop and active edge illumination on mobile touch.
Interactive 3D Mascots: Added perspective 3D Bull (momentum) & Bear (risk veto) trading emblems with cursor tilt and tactile touch burst.
Consensus Simulator: Integrated interactive multi-agent scenario simulator on the landing page for real-time AI voting demonstrations.
Mobile Ergonomics: Upgraded BottomNav with raised primary Trade dock button and dedicated Signals tab for 1-thumb trading.
Institutional Terminal: Added Compact/Comfortable density toggle (densityStore) and QuantTooltip popovers for Kelly Criterion, Sharpe, and Sortino ratios.
Tactical Empty States: Deployed TacticalEmptyState holographic reticle cards for empty positions, orders, and bot states.
Color consistency: Replaced rogue purple, violet, indigo, and rainbow styling across widgets, backtesting, academy, admin logs, and market tables with canonical cyan and amber institutional tokens.
Financial presentation: Removed informal emojis from financial tables, academy lessons, API key management, and admin surfaces, replacing them with institutional FontAwesome SVG icons.
Responsive integrity: Audited all pages across Desktop (1440px), Tablet (820px), and Mobile (390px) viewports; validated zero horizontal overflows and robust mobile container constraints.
LLM Brains model catalog: Migrated active free reasoning model catalog to google/gemma-4-31b-it:free following upstream OpenRouter availability changes.
Removed every hardcoded daemon fallback across the worker: an empty DAEMON_URL disables daemon calls with explicit DAEMON_NOT_CONFIGURED responses, honest inconclusive classifications, or honest empty states — never a silent redirect to a production hostname.
Added the Cloudflare Cron Triggers scheduled handler, routing by cron to the same in-worker upkeep functions with no HTTP self-fetch; wrangler.toml declares the Worker-internal crons only (n8n owns the signal pipeline).
evaluate-signal-accuracy is bounded to 25 rows per invocation (oldest, least-attempted first) with a deferred count reported, so the job stays within the scheduler timeout and keeps honest writes.
12 new tests plus an updated daemon-fallback test: no hardcoded hostname, honest not-configured routes, scheduled cron routing, and the bounded batch (worker suite now 1159).
Agent attribution: signal_id identity (plus a 15-minute bounded-window fallback for legacy rows), status-based price-resolved outcomes (hit_tp/hit_strike = win, hit_sl = loss, expired excluded), horizon bound, and COUNT(DISTINCT) so one signal can never credit an agent twice.
Dynamic weights: ratio unit convention (no percent mix), resolved_opportunities as the sample denominator, MIN_PERFORMANCE_SAMPLES = 5 before a multiplier applies, and an honest base-weight fallback with a log of measured agents, samples, multipliers, and whether weights changed.
User-visible signal analytics win/loss now use price-resolved statuses instead of the vestigial result column; expired signals are excluded from resolved counts.
15 new tests: attribution semantics against a real in-memory SQLite engine (identity, losses, horizon, dedup, direction), Form Multiplier units and minimum-sample honesty, and source guards (worker suite now 1147).
Dedicated /sign-in/auth and /sign-up/auth split-layout views featuring TradingView-style 50/50 responsive layouts, live taglines, and mode-specific demo/live artwork.
Social provider interface for Google, Microsoft, Yahoo, and GitHub with accessible non-transmitting "Coming Soon" dialog.
Updated official Telos character logo assets (1024px master, 512px medium, 64px tight-crop small, PWA and favicons) and updated branding rules in AGENTS.md, GEMINI.md, and .agents/rules/branding.md.
Eliminated duplicate arrow artifacts across all back links in marketing, split-auth layouts, and 404 error page.
Full mobile, tablet, and desktop parity across 390px, 820px, and 1440px viewports with zero horizontal overflow.
Redacted the live QUESTDB_PASSWORD from the tracked tester report (the value remains in git history — a separate, explicitly-authorized rewrite task if wanted).
.env set to 0600; .gitignore extended with *.env; guard tests fail if a secret-bearing file (.env*, *.pem, *.key, .git-credentials) is ever tracked or a tracked source file contains a hardcoded credential literal.
docs/security/secret-hygiene.md: exposure model, the "Access gates the edge, not the filesystem" rule, containment rules, custody options (owner-decided), rotation priority, and the dangling-object purge commands.
No secret value was printed, logged, or committed; dangling-object purge and credential rotation are owner actions.
New access-auth.ts verifies the Cf-Access-Jwt-Assertion header (or CF_Authorization cookie) with Workers WebCrypto RSASSA-PKCS1-v1_5/SHA-256; JWKS cached with a 1h TTL and exactly one bounded refetch on an unknown kid (key rotation).
Every /api/v1/admin/* path is guarded at one choke point: configured + absent/invalid JWT -> 401/403 ACCESS_REQUIRED with an admin_access_denied audit; unset env -> honest warning log and the owner-session layer still applies. Absence is never success.
docs/security/cloudflare-access.md: the owner dashboard runbook (TELOS-AUTH-000), the decision record, the incognito verification check, rollback steps, and the residual bypass coverage closed by this worker-side verification.
11 new tests: valid/tampered/aud/iss/exp/nbf, absent, unset env, bounded JWKS rotation refetch, and guard responses (worker suite now 1130).
Mounted <LandingNav /> on /sign-in and /sign-up with responsive top padding (pt-28) below the sticky navigation bar.
Eliminated unauthenticated guest demo bypasses across /sign-in and /auth; every platform user must authenticate with valid credentials.
Rebuilt /sign-up into a 2-column cybernetic layout with live consensus protocol telemetry, broker badges, and dual demo/live mode cards matching /sign-in.
Restored candlestick particle animation across all authentication views on primary domain and subdomains with canvas deduplication safeguard.
Hardened subdomain isolation with immediate client-side redirection and SSR routing guards in hooks.server.ts to prevent landing page leakage on live and demo hosts.
Standardized navigation back links to concise "← Back" across all auth views and 404 error page with intelligent origin-aware routing.
Single shared KDF module (owner-login-kdf.mjs) for the verifier and the generator; no hard-coded iteration counts remain in either.
Regression guards: the shared constant must stay at or below 100000, and both admin.ts and the script must import the shared module (worker suite 1119).
Owner master credential re-rotated via Cloudflare secrets; the previous credential is retired and the new one is delivered only through the one-time 0600 handoff file.
Dynamic SSR and API responses now carry Content-Security-Policy-Report-Only, X-Content-Type-Options nosniff, X-Frame-Options SAMEORIGIN, Referrer-Policy strict-origin-when-cross-origin and Permissions-Policy camera/microphone/geolocation.
Single source of truth: security-headers.ts feeds both entrypoints and is test-locked to static/_headers; the Adsterra frame-src hosts and Cloudflare Analytics hosts are carried over exactly so static and dynamic policies cannot diverge.
7 new tests: set-if-absent, no duplication, Set-Cookie preservation, Report-Only posture, idempotency, static/dynamic parity, and both entrypoints using the shared helper (worker suite now 1119).
CSP remains Report-Only; the do-not-flip-blindly note is preserved and enforcement is still a separate, explicitly-authorized task.
PBKDF2 iterations lowered from 210000 to 100000 in admin.ts, scripts/hash-owner-password.mjs and the test helper — the production 500 is resolved and the generated credential verifies.
Two new guards: the admin verifier must stay at or below the Workers maximum of 100000 iterations, and the hash script must use the same count (worker suite now 1112).
Rotation continues with the same owner username/salt and a regenerated hash at the supported iteration count; no credential value appears in source, logs, or reports.
script-src now allowlists https://static.cloudflareinsights.com and connect-src allowlists https://cloudflareinsights.com, so a future CSP enforcement switch cannot silently break Cloudflare Web Analytics (policy stays Report-Only and inert for now).
static/_headers carries an inline note: CSP enforcement is NOT yet safe pending a full platform-wide violation review; the analytics host is resolved and the policy must not be flipped blindly.
3 CSP-header string tests (Report-Only, allowlist present, note present) + the ads CSP-delta test updated; worker suite now 1110.
The Firefox+ETP console noise is the browser intentionally blocking a tracking beacon — expected while analytics is kept. Dropping analytics entirely is a dashboard-only owner decision (Cloudflare RUM settings are not API-accessible with the current token).
CRITICAL: the hardcoded owner master credential was removed from workers/api/src/admin.ts. It remains in git history — the owner must rotate it (OWNER ACTION REQUIRED).
Secrets-backed owner login: OWNER_MASTER_USERNAME / OWNER_MASTER_PASSWORD_HASH / OWNER_MASTER_PASSWORD_SALT; unset secrets return an honest 503 OWNER_LOGIN_NOT_CONFIGURED and never accept a fallback.
Constant-time credential comparison plus a 5-failure / 15-minute per-IP lockout with an ADMIN_LOGIN_LOCKED audit entry; failures never log the submitted password.
5 new tests (unset 503, wrong 401, correct session, lockout 429, regression scan); worker suite now 1107.
scripts/hash-owner-password.mjs generates the hash and salt from stdin without echoing; .env.example documents the new secrets; the credential literal was redacted from all working-tree reports.
Owner-only POST /api/v1/marketplace/first-party publishes the platform's own agent as a real listing: admin role required (403 otherwise), agent must be owned by the owner account, clean copy goes live and flagged copy queues for review, and repeat calls return the existing listing instead of duplicating.
Owner steps documented in docs/marketplace-first-party-listing.md: create the platform agent, publish, verify the public 404-until-live matrix, and manage (pause/remove).
3 new tests: non-admin 403, live publish + idempotency (exactly one listing per agent), and 404 for an agent not owned by the owner (worker suite now 1102).
Removed the fabricated on-chain whale/TVL generators: random values could be labeled "live" when an Etherscan key was configured. Unsupported symbols and failed sources now store NOTHING (honest unavailability).
Removed the fabricated sentiment generator: missing Twitter token or API failure now stores NOTHING instead of random tweet counts and scores.
Deleted the unreferenced demo-data module; removed the unverifiable "500+ traders" claim; profit factor with zero losses now renders ∞ instead of a fake 99.90; the backtest page now discloses that Sentiment & Macro agents use simulated random sampling.
Alpaca reclassified from cfd_broker to equities_broker (CFD risk warning removed; it stays only on genuine CFD partners) and the Kalshi reward corrected to the Lite-equivalent tier and cap — both production rows updated idempotently.
Stripe residue audit: the archived Stripe module is labeled not-imported, live code carries legacy-removed notes, and NOWPayments remains the only live payment rail.
Deterministic NOWPayments IPN fixture (fixed body + precomputed HMAC-SHA512 under a test-only secret) with an activation and a tamper test, plus partner-metadata tests (worker suite now 1099).
Source-of-truth writes now throw when the store does not acknowledge them: execution-router (32), marketplace-sales (15), exchange-credentials (15), index (13), advanced-orders (12), exchange-execution (12), departments (10), agent-marketplace (10) and every other truth-critical module. Routes surface an honest 4xx/5xx — never success.
Best-effort writes (audit trails, delivery logs, caches, counters, snapshots, telemetry) now log every failure; 137 sites converted to the honest helper — no silent write remains in the worker.
MCP key revoke and delivery-log cleanup no longer claim success from a boolean that ignores affected rows — both now verify the real change count.
Four SELECT reads that were routed through the write helper (always returning no rows) now use the query path.
7 new failing-write tests across execution-router, marketplace-sales, agent-runs, signal-engine, exchange-credentials, departments and telegram-notifications (worker suite now 1095).
Secondary Route Glassmorphism: Harmonized container cards and section layouts on /resources, /calculators, /how-it-works, and /roadmap to institutional frosted glassmorphism (bg-zinc-900/40, backdrop-blur-md, border-zinc-800/80 with electric cyan hover accents).
Section Cadence Alignment: Standardized vertical rhythm across secondary pages to max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12 lg:py-20 with consistent gap-6/gap-8 grid spacing.
Interactive Micro-States: Upgraded Button component with active click scaling (active:scale-[0.98]) and subtle border highlights; enhanced CyberIconBadge with canonical #00F0FF visor alignment and tactile hover/active scale states.
Financial Typography & Input Focus: Equipped calculator numeric inputs with glowing electric cyan focus rings (#00F0FF) and enforced monospaced DM Mono typography across all numerical tags, counters, and results.
Tri-Device Layout Parity: Verified zero horizontal scroll overflow across Desktop (1440px), Laptop/Tablet (1024px), Tablet Portrait (768px), Mobile (390px), and Edge Mobile (320px) on all 12 core platform routes.
Tailwind Design Tokens: Aligned colors.cyan.DEFAULT to #00F0FF and colors.navy to canonical dark midnight palette (#050811, #070A12, #0D1424), eliminating token drift with app.css.
Hex Standardization: Purged 140+ instances of unstandardized rogue hex #060912 across routes and components, replacing them with canonical #050811 and var(--bg).
Status Page Integrity: Completely eradicated simulated 90-day uptime math loop (UPTIME_DAYS) and representative mock disclosures; deployed live real-time edge telemetry with DMA ping monitoring, Cloudflare Anycast node reporting, and live WebSocket connection pool indicators.
Edge-Mobile Polish (320px): Hardened AnnouncementBanner, WidgetOrderFlowDesk, and WidgetTacticalDeck against text clipping and button compression on extreme mobile viewports down to 320px.
Performance ledger persistence: production `trades` rebuilt with a TEXT primary key, preserving every legacy row and recreating all ledger indexes (TELOS-LEDGER-001).
Manual trade entry no longer lies: an unacknowledged write now returns 503 LEDGER_WRITE_FAILED and nothing is claimed as recorded.
Payout, affiliate, and performance-ledger write paths now use the honest write wrapper; failed ingestion is logged instead of silently swallowed.
Tax and reporting export now returns real VERIFIED rows — proven end-to-end: manual trade POST, stored ledger row, and export totals.
13 new tests cover schema detection, rebuild SQL, migration idempotency, legacy-row preservation, and failed-write honesty (1088 worker tests total).
Universal TrustBar: Replaced unverified "99.9% Uptime SLA" claim across 25+ public pages with verifiable "Cloudflare Edge · Non-Custodial" trust anchor.
About & Security Pages: Replaced unverified "99.9% System Uptime" metrics with 100% Non-Custodial Architecture indicators; updated FAQ to clarify transparent, non-recurring crypto payments with zero hidden lock-ins.
Testimonials Purge: Completely removed fabricated user reviews and fictitious personas (Alex M., James M., Priya L., Rachel T., Kevin S., Marcus R., Sarah K., James L.) across Security, Compare, and Strategies routes.
Institutional Strategy Safeguards: Deployed verifiable execution architecture callouts (Kelly Criterion risk allocation, pre-trade circuit breakers, consensus veto protocols) on the Strategies page.
Landing Page: Replaced "Avg XX% Accuracy" badges on AI department cards with transparent "{dept.conf}% Model Weight" metrics.
GET /api/v1/performance/tax/export?year=YYYY&format=csv|json: per-trade columns (trade_id, symbol, vertical, direction, opened_at, closed_at, entry_price, exit_price, quantity, pnl, currency, reporting_status, source, provenance) sorted by close time, with a computed TOTALS row (sum PnL + win/loss/breakeven counts).
Honest exclusions: unresolved or price-missing trades are excluded with an explicit excluded_unresolved count; REPORTED external rows are excluded by default and, with include_reported=true, carry reporting_status=REPORTED + source=self_reported and are never summed as verified money. An unreadable ledger returns an honest 503 — never a fake empty export.
Entitlement gating: exports are a Plus/Enterprise feature (403 with required_plans for Free/Lite/Standard); the performance_history_months lookback window is applied consistently (Plus+ is full history).
Performance page export panel: year selector, CSV/JSON choice, optional REPORTED inclusion, session-authenticated download and the honest note "not tax advice and does not calculate tax liability — consult a tax professional". Free/Lite/Standard see the locked "Exports are a Plus feature" state.
Premium signals channel: new active signals are pushed fire-and-forget to TELEGRAM_SIGNALS_CHANNEL_ID with both scenarios, "est." probability ranges, R:R and the honest footer; pushes never block signal creation and are audited as signal_pushed (skips logged honestly when unconfigured).
Channel gating: Standard and above (signals realtime/realtime_priority) mint single-use invite links via POST /api/v1/telegram/signals/invite; re-requesting revokes the previous link; Free/Lite get an honest 403 "Standard includes the premium signals channel"; unconfigured returns 503.
Public /honesty trust asset: plain-language Golden Rule, VERIFIED/REPORTED/est. badge definitions, the exact estimate note, what Telos never does, ad labeling, affiliate/reward rules and the N>=20 minimum-sample discipline. Linked in the site footer.
VERIFIED in the channel only appears when the platform-wide sufficient-sample condition holds — never below 20 resolved direction-matched calls, matching the in-app chips.
Sandboxed AdSlot: Adsterra units render inside an iframe with the tightest sandbox that works (allow-scripts + allow-popups + allow-popups-to-escape-sandbox, deliberately NO allow-same-origin), persistent "Advertisement" label and a report-ad link audited as ad_reported.
Placement registry: slots only on public marketing pages, the desk generate interstitial and the free-tier signal result view; order tickets, connectors, payouts, billing, admin, key management, agent runs and settings are forbidden and covered by tests.
Free-tier generate interstitial (AD_INTERSTITIAL_DAILY, default 3/day) with the honest counter "Ads fund the free desk — X of Y shown today"; after the cap generation proceeds ad-free.
Opt-in rewarded ad: "Watch an ad (+1 generation)" grants +1 fresh AI generation (AD_REWARDED_DAILY, default 5/day), server-counted and audited as ad_reward_granted.
Tier gating: ads_enabled entitlement — Free sees the mechanics; Lite/Standard/Plus/Enterprise render nothing (no reserved space, no layout shift).
CSP delta: frame-src allowlists the Adsterra delivery hosts; script-src is unchanged. Unconfigured slots never substitute a fake ad — dev shows "Ad slot unconfigured", production renders nothing while reserving space.
Affiliate partners: admin-seeded catalog of integrated platforms with commission disclosure on every card and the standard leverage risk warning for CFD partners. Public /partners page carries the no-income-promise policy.
Reward engine: one claim per user/partner for life (declined included), action-date plan + billing period frozen at submission, per-milestone value cap with yearly -> quarterly -> monthly downgrade chain, and every grant audited and linked claim <-> grant.
Reward application: a free billing period of the earned tier (new_period) or, when already on a same-or-higher tier, a retention extension of the current period with the tier unchanged.
Admin review queue at /admin/affiliates: approve requires partner payout confirmation (or an explicit, audited override), decline requires a reason and is final.
Own referral program: personal referral codes, double-sided grants (one free billing period of the purchased plan for BOTH sides), one reward per referee lifetime, and a compact referral card on the subscription page.
Affiliate postback stub: token-authed per partner with constant-time compare; matching a claim reference auto-confirms the payout. No partner is wired yet.
Retired the old $25-per-referral page in favour of the locked billing-credit economics; /referrals now redirects to /rewards.
Five-tier ladder: Free (ad-supported), Lite $1/mo (remove ads), Standard $5/mo (all 5 verticals, real-time desk, portfolio mode, VERIFIED hit-rate history, marketplace selling 75/25), Plus $10/mo (live auto-execution, MCP connector, full exports, marketplace selling 80/20), Enterprise (custom contract).
Billing periods: monthly, quarterly (base x 3 x 0.90) and yearly (base x 12 x 0.75) on the pricing page and /billing/invoice; subscriptions persist billing_period and set the correct UTC period end (+1/+3/+12 months).
Pricing page rebuilt as a 5-column entitlement matrix with a Monthly | Quarterly -10% | Yearly -25% toggle showing period prices and monthly equivalents; the UI catalog is lockstep-tested against the worker entitlements registry.
TELOS-SIG-004 wiring: VERIFIED direction-matched hit-rate chips now gate on the signal_history_verified entitlement (Standard and above) at serve time; model-estimated probability ranges stay available on every tier.
Legacy plan codes: stale pro/ultra rows normalize to standard/plus across getUserPlan, setPlan, subscription reads, MCP gating, commissions and the frontend, so no user is ever mis-gated by the rename.
Dead config: the registered-but-unreachable Free MCP cap (100 calls/day) is removed — Free/Lite/Standard carry 0 MCP calls, Plus 2,000/day and Enterprise unlimited, matching the premium MCP ruling.
Dual-Scenario Setup Comparison: every market generation returns exactly two scenarios (Primary + Alternative) with setup name/type, direction, optimal entry, SL, TP1, TP2, code-computed risk-per-unit and composite R:R (per-TP breakdown), a model-estimated probability range, an EV classification derived from the estimated chain, and grounded level provenance tokens.
New SetupComparisonTable on /desk and every vertical signal card: rows for Bias/Type, Entry, SL, TP1, TP2, Risk per Unit, Composite R:R, Est. Win Probability and Expected Value, with per-column Execute Ticket buttons that pre-fill the order modal with that scenario's measured levels.
Measured level provenance: demand/resupply shelves, 24h range bounds, ATR(14) and round-number levels are computed from real telemetry, registered as computed: level tokens, and every scenario data_sources set must pass the same registered-subset validation as brain answers — a fabricated level citation refuses the whole generation.
Platform VERIFIED hit rate: wins/(wins+losses+breakevens) over direction-matched market-scope desk calls resolved on-platform, shown only when N >= 20 resolved calls (same min-sample discipline as agent track records); below that, an honest "no verified history yet" state with no percentage.
MCP get_market_snapshot now returns the scenario block (and an honest regenerate note for pre-SIG-004 snapshots); active_signals rows carry the Primary scenario levels plus scenarios_json for the comparison UI.
Provisional AI-generation quota is now refunded when generation throws an exception, not only on the busy/refusal path — a stranded +1 usage unit can no longer survive a failed generation.
L2 Order-Flow & Execution Console (WidgetOrderFlowDesk): Real-time bid/ask pressure gauge (1.28 ratio bar), multi-timeframe trend matrix (1m-4h), live DMA latency telemetry (24ms), and direct one-click execution action triggers (+ Instant Buy / Short).
Zero-Void 3-Column Height Parity: Docked L2 Order-Flow Console directly beneath AI Signal Hub, matching Left Column (~700px), Center Column (~700px), and Right Column (~690px) with 0px dead space.
The "Icon Diet" Typographic Refinement: Converted the 6 AI department cards into sleek, pure typographic ticker pods (TECH, SENT, QNT, FUND, QUAL, STAT) with 5-segment level meters, and stripped decorative icons from Top Capital Metrics (Equity, Today P&L, Unrealized, Exposure).
Interactive Widget Controls & Drag-and-Drop: Equipped all dashboard modules with Minimize (─) to a compact 34px telemetry ribbon, Expand (⛶) for full-width deep analysis, and HTML5 drag handles (⋮⋮) for inter-column reordering.
Persistent Layout Memory: Saved custom widget order, column assignments, and collapsed states to localStorage (telos_dashboard_cockpit_layout) with one-click "Restore Default Layout" reset.
Bottom Command Deck Controls: Added minimize (─) and expand (⛶) controls to the multi-tab telemetry deck for instant cockpit height customization.
Committed Playwright E2E suite in tests/e2e/: auth round-trip, AI desk freshness (as_of + age + free-tier tier_notice), signal execution gates and kill switch, zero-trade performance honesty, agents wizard with a dead provider key (zero token spend), marketplace 404-until-live matrix, payout destination masking, and MCP JSON-RPC 401/403 gating.
Self-provisioned FREE test account (scripts/e2e-provision-test-account.mjs) registered through the real invite-only signup endpoint; credentials stay in gitignored .e2e/credentials.json and never enter the repository.
npm run test:e2e runner (scripts/e2e-run.mjs) with configurable E2E_BASE_URL (paper domain default), failure screenshots in gitignored .e2e/artifacts/, and a clean skip path: an unreachable target exits 0 with "E2E RESULT: SKIPPED — target unreachable" instead of a false green.
Every golden flow asserts honest product states rather than status codes: real snapshot as_of/age, no fabricated "Live", empty calendars and KPI dashes, masked payout destinations, "Connect {vertical}" setup states, and honest upstream-busy refusals with quota refunds.
LLM provider key test endpoint now returns 424 Failed Dependency instead of 502, so the real provider-failure reason survives the Cloudflare Pages edge (which replaces proxied 5xx bodies with an opaque error page).
Standardized CyberIconBadge: Multi-layered frosted glass squircle icon badges with tilted translucent halo, frosted glass substrate, and central glowing neon squircle across cyan, emerald, amber, and rose themes.
Hexagonal Orbital Consensus Nexus: Reconstructed AI consensus centerpiece framing the Option 2 Titanium Arc Reactor loop with 6 satellite department nodes and dynamic connecting SVG laser conduits.
3-Wing Command Bridge: Reorganized dashboard canvas into Left Wing (Capital Health & Circuit Breakers), Centerpiece (Orbital Nexus), and Right Wing (Tactical Positions Fleet & Execution Desk) with strict 1366x768 laptop fold awareness.
Bottom Command Deck: Multi-tab telemetry console docking live Binance market watchlist, neural deliberation log, equity velocity sparkline, and circuit breaker audit trails.
Tactical Cockpit Risk Controls: Added tactile cockpit kill switch toggle and emergency flatten liquidation trigger with confirmation shroud.
Titanium Arc Reactor Video: Integrated Option 2 Cybernetic Arc Reactor video (reactor-arc.webm / reactor-arc.mp4) from Backblaze B2 CDN with a 3-tier uncluttered telemetry hierarchy sitting cleanly inside the dark core.
Avatar Sanitization & Auto-Migration: Forcefully migrated legacy "fun-emoji" and "bottts" avatar sessions in localStorage to institutional DiceBear identicon style.
Dynamic Department Level Meters: Replaced dull repetitive dashed lines on standby department cards with sleek 5-segment dark level meters and muted STANDBY tags.
Freshness Telemetry Overhaul: Upgraded timestamp display to "Sync: LIVE STANDBY" for historical intervals (>24h), preserving detailed hover tooltips.
High-Density Laptop Fold Restructure: Compacted Risk & Safety panel into a 3-column micro-grid, tightened KPI cards and dashboard root padding (max-w-[1680px]), ensuring zero clipping above the fold on 1080p laptop displays.
Cloud Video Delivery: Transcoded and uploaded 3D reactor core and war room videos to Backblaze B2 (telos-b2) CDN (cdn.kentaursoft.com), purging 7+ MB of heavy video binaries from repository.
Consensus Reactor Dial: Embedded 3D rotating reactor video with translucent decision text overlay inside the central Byzantine Core on both desktop and mobile layouts.
Consensus Reconciliation: Dynamically computed agreeing votes and voter alignment from real department states, ensuring honest "Consensus Pending / Standby" state when quorum is insufficient.
Freshness Indicator: Added relative timestamp freshness indicator ("Last Analysis: X ago") below the consensus reactor dial on desktop and mobile viewports.
Desktop Grid Rebalance: Relocated Quick Actions widget to the left workspace column below Positions, eliminating the 450px vertical void and balancing columns to ~840px.
Domain Action Consistency: Updated Positions card empty state to display [+ New Order] linking to Trade Control on live mode, reserving [+ Place Paper Trade] for demo sandbox.
Institutional Avatar Style: Replaced cartoon smiley avatar with DiceBear identicon style and enhanced fallback with cyan glowing border ring.
Coin Badge Consistency: Wrapped XRP logo in circular container with official Ripple blue gradient to match Bitcoin, Ethereum, Solana, and BNB.
Mobile Cookie Consent: Tightened mobile padding to p-2.5 and set bottom-16 to float cleanly above mobile bottom navigation bar.
Seller Payouts section on /agents/earnings: eligible settled balance, minimum payout threshold, payout method manager (destination masked as "…x7f3" and stored encrypted — the full value is never shown back), one-open-request-at-a-time requests with the exact economics and honest manual-review copy, plus full request history and honest empty states.
Admin payout queue at /admin/payouts: pending requests with seller, claimed ledger rows and totals, the decrypted destination visible only in this admin review context, approve-with-disbursement-reference, decline-with-reason, reviewed history, and the payout_* audit trail.
New payout_methods and payout_requests tables and a payout_id column on commission_ledger. A request claims only rows with status=settled AND payout_id IS NULL; amount_cents is always the server-side row sum (any tampered client total is rejected with 400) and the minimum payout defaults to $50 (PAYOUT_MIN_CENTS).
Payout lifecycle is fully audited (payout_requested / payout_approved / payout_paid / payout_declined). Approving marks the claimed rows paid exactly once via the payout_id IS NULL + SELECT changes() guard; declining leaves rows settled and requestable again. No payment rail is integrated — disbursement is manual until the owner chooses one.
Route Resilience: Added direct HTTP 301 redirect from /api and /api/ to /api-docs in hooks.server.ts while preserving all /api/v1/ worker proxy subpaths.
Mobile War Room UX: Added document-level click-outside dismissal listener for 3D trading floor hotspot pins and glassmorphic HUD tooltips.
Tactile Audio Visualizer: 3-bar animated cyan frequency equalizer wave rendered inside the ambient audio toggle button during live playback.
Terminal Labeling: Re-labeled consensus terminal header to "INTERACTIVE SIMULATOR // MULTI-TIMEFRAME AUDIT" to clearly communicate simulation mode.
Cookie Consent Accessibility: Stacked banner action buttons vertically on mobile viewports (<640px) with full-width touch targets (min-h-[44px]).
Dashboard Connect Onboarding: Added direct [+ Connect Exchange] shortcut link to the Total Equity card when zero balance or empty state is detected.
Demo Sandbox Quickstart: Dismissible glassmorphic onboarding banner on demo-telos with testnet connect and simulation shortcuts.
Interactive API Code Tabs: Added 1-click segmented cURL, Python, and Node.js code snippet tabs with copy buttons to /api-docs for consensus and signal endpoints.
Subscription IPN fallback now requires gateway corroboration: NOWPayments GET /v1/payment/{payment_id} must confirm the order_id and the amount implied by the inferred plan, otherwise no upgrade happens and audit("payment_unverifiable") records why.
Abandoned reveal checkouts can be resumed: buying again while a purchase is pending voids the old invoice and mints a fresh one for the same purchase, which stays pending_payment. Single activation is still guaranteed by the IPN guard.
IBKR account read is now an explicit opt-in capability (IBKR_ACCOUNT_READ_ENABLED). The VPS daemon exposes no /api/v1/ibkr/* route and no Client Portal gateway is hosted, so production makes no dead call; the connector UI says "account read planned" and shows "not read" rather than a $0.00 balance.
Self-reported external trade results are stored with trigger "mcp_report" instead of "mcp_heartbeat".
Added detachedAuditContext() to shared.ts so out-of-request audit calls stop using inline ExecutionContext casts, and documented the limits of the symbol-only vertical heuristic in performance-ledger.
MCP streamable-HTTP transport at POST /api/v1/mcp (JSON-RPC 2.0, current MCP spec revision 2026-07-28): server/discover, initialize, tools/list and tools/call, with standard protocol-header validation and JSON-RPC error shapes.
Six connector tools: get_market_snapshot (served from the shared desk cache, no AI generation), get_signals, list_market_symbols, submit_trade_intent, report_trade_result and heartbeat.
Per-user MCP API keys: created once, stored only as a SHA-256 hash, revocable, with labels and scopes. Plaintext is shown exactly once at creation.
Quotas: per-key burst limit plus a plan-based daily call cap (Pro 2,000/day, Ultra and Enterprise unlimited) enforced from your entitlements.
External agent profiles at Agents > External Agents with heartbeat history and last-seen state, plus an intent review queue with Approve & create order ticket and Dismiss (both audited).
Connect page with copyable MCP setup configuration (endpoint, auth header, protocol version and tool preview) — the block itself contains no secrets.
Self-reported external results feed a separate REPORTED track-record block. REPORTED and VERIFIED statistics are computed from disjoint row populations and never mixed, and the minimum-sample gate applies to both.
Trade intents can never execute: the MCP module imports no execution code (enforced by a source-scan test), and approving an intent only mints an order ticket for the existing confirm-mode execution flow.
Removed a hardcoded time bomb in the labeled-evals test that silently became a past window and began failing once real time passed it.
Above-the-Fold Diorama: Elevated the 3D Autonomous AI War Room video diorama directly below the CTAs (Y ~ 260px) for immediate visual engagement on desktop and mobile.
Institutional Header: Replaced oversized headline with tight, sleek institutional header and "AUTONOMOUS AI CONSENSUS ENGINE" badge.
Clutter Elimination: Completely removed the orphaned hero-trust-proof stats card and the loose 5-item floating ticker strip.
Docked Terminal Asset Bar: Integrated the asset selector tabs directly inside the interactive consensus terminal card between the window bar and live telemetry.
Responsive Spacing: Reduced vertical padding on hero section to 2.25rem 1.25rem 2rem, preserving zero horizontal overflow across 1440px, 768px, and 390px viewports.
Paid reveal checkout: buying a Reveal listing creates the purchase in status pending_payment and returns a hosted NOWPayments invoice URL (order_id = purchase_<uuid>, amount = listing price).
Payment-gated prompt delivery: /purchases/:id/prompt and /adopt return 404/409 until a verified NOWPayments IPN (HMAC-SHA512, dual-accept) activates the purchase; the captured amount is recorded as paid_amount_cents with its gateway order id.
Amount validation on the marketplace IPN: the captured amount is compared against the listing price with the same 1% tolerance as subscriptions; a mismatch records audit payment_amount_mismatch and never activates the purchase.
Honest 24-hour checkout expiry: unpaid reveal checkouts become "expired" (lazily, on every relevant read/write path), can no longer be cancelled as active purchases, and never block a fresh attempt. Late payments on an expired row still activate it, because the money was actually captured.
Seller revenue honesty: Reveal earnings now count PAID purchases only (sum of captured amounts). Checkouts still awaiting payment are reported separately as "awaiting payment" and are never counted as revenue; sold-copy counts exclude unpaid checkouts.
Billing settings page no longer displays a hardcoded Stripe test card and four fabricated invoices — it now lists the real invoice rows from the billing system, or an honest empty state.
Removed the unused Stripe client module, stale Stripe billing fields/functions that called endpoints which no longer exist, and the outdated Stripe references in the privacy policy.
Removed fabricated community statistics (hardcoded trader/strategy/signal counts and invented trend percentages) in favour of honest entry points into real data.
Removed the unused copy_trading translation namespace from all four locales.
3D AI War Room Diorama: Looping 3D animated autonomous trading floor video featuring central Telos Nexus and 6 surrounding AI department stations.
Interactive Hotspot HUDs: 7 pulsing HelloMinds-style pins with glassmorphic tooltip HUDs displaying live conviction, risk cap, signals, and regime telemetry.
Ambient Audio Toggle: Browser-compliant muted autoplay by default with institutional one-click sound un-mute button.
Optimized Video Delivery: Dual-source streaming with lightweight VP9 WebM (1.4MB) and master MP4 fallback with poster frame.
Tri-Device Responsiveness: Clean proportional scaling with zero horizontal overflow across 1440px desktop, 768px tablet, and 390px mobile viewports.
Data Integrity: "Verified Institutional Performance" section re-labelled to "Illustrative Model Performance — Simulated Walk-Forward Strategy" with a regulatory disclosure footer (not actual client returns, past performance does not guarantee future results).
Data Integrity: Bento card "Verified Illustrative Track Record" renamed to "Illustrative Backtested Track Record" to eliminate misleading "Verified" qualifier on backtested data.
UI Tropes: Removed pulsating hero badge ("Next-Gen Consensus Engine v2.4 · 8 Exchanges & MT5 Bridge") from landing page hero. Clean typographic hierarchy only.
UI Tropes: Replaced "LIVE STREAMING" terminal status label with institutional label "MULTI-TIMEFRAME AUDIT".
Copywriting: Replaced 6 identical AI department card descriptions with unique, discipline-specific institutional copy: Quantitative (Kelly + Monte Carlo), Technical (liquidity sweeps + order blocks), Sentiment (OI + funding rate), Fundamental (yield curve + DXY), Statistical (GARCH + mean-reversion), Qualitative (black-swan filters + regulatory vetoes).
In-App Performance Page: Removed conditional MarketingPerformance fallback from authenticated /performance route so users always see their real trade analytics, never a marketing placeholder.
TypeScript: Fixed AnimatedCounter target=241 unquoted prop in roadmap page (target={241}).
TypeScript: Fixed LazySection minHeight={500} and minHeight={400} numeric props to string "500px"/"400px" in how-it-works page.
TypeScript: Added missing Icon import to glossary page (was causing SSR ReferenceError).
TypeScript: Fixed Icon size="3xl" to size="2xl" in blog article 404 fallback.
TypeScript: Cast heroSection to HTMLElement | null for offsetHeight access in blog article page.
TypeScript: Added TrustStat interface with optional target/suffix/decimals fields to backtesting page.
TypeScript: Cast window.ethereum to (window as any).ethereum across all 6 usages in verify-track-record page.
Accessibility: Added aria-label="Trade {symbol}" and aria-label="Remove {symbol} from watchlist" to icon-only buttons in watchlist page.
Mobile Overflow: Added overflow-x: hidden to how-it-works page root wrapper.
Mobile Overflow: Added overflow: hidden to homepage pricing section container.
BackToTop: Hidden on viewports ≤767px (display: none) to prevent overlap with bottom navigation on mobile devices.
Two-Mode Marketplace: Public listing browse at /marketplace with verified track-record cards (VERIFIED badge or honest INSUFFICIENT_SAMPLE state), search/mode/vertical filters, seller dashboard (My Listings with submit/pause/remove/report lifecycle), and buyer purchase flow. Reveal purchases are one-time (price 1c–$10,000) and include the current strategy prompt plus Adopt-as-my-agent; Hidden purchases activate a hosted instance immediately with zero upfront price.
HIDDEN Hosted Execution: The buyer gets a hosted custom agent row that stores NO prompt — prompt_strategy_ref pins the seller’s strategy version and runs resolve it server-side with the buyer’s own LLM key. Hosted rows never serialize prompt text (serialization tests enforce it), buyers cannot edit the pinned strategy (403 with fork guidance), and canceling the purchase pauses the hosted instance while already-settled periods remain owed.
Rev-Share Commission Ledger: Closed trades attributed to hosted runs via signal_id minted on every completed run feed per-period accrual (daily/weekly/monthly UTC, completed periods only). commission = round(max(0, buyer_pnl) × rev_share_bps / 10000); loss periods accrue an honest 0 row, zero-trade periods produce no row; platform_share_cents is recorded per row (Pro sellers: platform takes 20% of commission, Ultra/enterprise 15%). Settlement cron marks completed accrued rows settled daily at 00:10 UTC.
Golden-Rule Copy Check: Every listing submit scans title+description for checkable unverifiable claims (guarantees, risk-free, specific performance percentages, 100% claims, always-wins, passive income, hype) and routes flagged copy to an owner review queue with reasons; clean copy auto-promotes to live. Reports from any authenticated user merge their reason text into the same flags. Listing payloads embed ONLY the verified track record from track-records.ts — eval tables are never queried (source-scan test enforced).
Seller Earnings Dashboard: /agents/earnings shows accrued/settled totals, per-purchase breakdowns, reveal-copy revenue, and the computation basis — including the honest note that reveal purchases are ledgered but no card processor captures the price yet. GET /api/v1/marketplace/earnings powers it from the commission ledger.
Legacy Copy-Trading Removed: Copy-trading pages, routes, sidebar entries, and the update-trader-stats cron were removed; remaining broker/blog mentions of exchange copy-trading features (Bybit’s own product) are untouched factual content. Profit-sharing endpoints and migrations history remain unchanged.
Heartbeat Schedules: Per-agent cron schedules (15m/1h/4h/daily presets or custom 5-field cron, UTC) fire via a new */5-minute cron endpoint through the exact same executeAgentRun path as manual runs — provenance enforcement, plan daily caps, and per-key monthly budget caps all apply. Cap/budget refusals stop the agent with audit events (heartbeat_skip_cap / heartbeat_skip_budget) and never overflow; every heartbeat row is labeled trigger=heartbeat in agent_runs.
Labeled Evals (BACKTEST): Run an agent against stored history — market_candles preferred, ai_market_data tick fallback, honest 422 refusal when no stored data exists (no network fetches, no synthesized candles). Every response, including refusals, carries backtest:true and the label "BACKTEST — simulated on historical data. Not a live track record." Budget preflight refuses politely with a cost estimate before any spend; provenance is enforced per sample.
Verified Track Record: GET /api/v1/agents/:id/track-record computes win rate ONLY from live agent_runs (run_type=live, status=completed, resolved outcomes) — eval samples live in a separate table that is never queried (static + behavioral test-enforced). Below 20 resolved runs the payload is an honest insufficient-sample state with zero percentage fields; at 20+ it reports win rate (breakevens in the denominator), per-vertical breakdown, and a VERIFIED badge for on-platform resolution. Public visibility flag gates non-owner access (default private).
Studio UI: Heartbeat preset picker with the server-computed honest estimate ("≈N runs/day on your key — your provider bills these tokens"), a Track Record panel with VERIFIED badge or the honest insufficient-sample state, and a visually separate BACKTEST-labeled Evals section with window picker, sample results, and eval history.
LLM Key Echo-once: Key creation now truly returns the plaintext exactly once (top-level api_key + returned_once:true), matching the documented contract — list/test/usage/delete/providers responses never contain key material.
LLM Provider Hub: Bring-your-own-key management at /agents with 11-provider catalog, encrypted storage, live key testing, per-key monthly spend caps with honest budget refusals, and usage meters. Keys are AES-256-GCM encrypted at rest and never returned in plaintext after creation.
Agent Studio: Full agent lifecycle at /agents — create with 3-step wizard, edit identity/verticals/risk, version-controlled prompt strategy (every save bumps an immutable version with changelog note), model/temperature/max-token runtime config, org-chart reporting with cycle detection, and activate/pause status gating.
Provenance-Enforced Agent Runs: Every run gathers real telemetry (market data, technicals, economic calendar, portfolio) and strictly validates the model response against collected data sources. Any fabricated citation triggers a 422 refusal showing zero advice — the Golden Rule has no paper-mode exception. Runs are ledgered in agent_runs with full token/cost/model provenance.
Plan-Based Agent Entitlements: Free (1 custom agent, 20 runs/day), Pro (2 agents, 200 runs/day), Ultra (10 agents, unlimited runs), Enterprise (unlimited). Daily caps count real agent_runs rows excluding data refusals; cap and budget refusals return honest 402/403 errors without creating run records.
My AI Agents UI: New sidebar/drawer navigation entries and rewritten /agents list page with cap meter, provider hub, wizard, and agent grid; per-agent Studio page with paper-test runner, market/portfolio run modes, run history with on-demand outcome resolution against live prices, and strategy version browser.
Credential Encryption Hardening: Replaced dev-default encryption keys with fail-closed key resolution across daemon and worker, migrated legacy plaintext HMAC keys to AES-256-GCM with backward-compatible reads, fixed cross-user key exposure in agent copy, and shipped rotate-credential-encryption.mjs with dry-run support.
Legacy Custom Agent Factory Archived: Moved the never-wired daemon custom_agent_factory (plaintext HMAC) to _archive with guard clauses in hybrid_orchestrator, consolidating all custom-agent logic in the worker per the integration decision table.
Kalshi Institutional REST API Client: Implemented native RSA-PSS (SHA-256) request signing using WebCrypto for Kalshi Trade API v2, supporting balance queries, market/limit order creation, positions tracking, and real fee extraction.
Kalshi Live/Paper Detection & Domain Enforcement: Implemented dual-host probe against demo-api.kalshi.co and api.elections.kalshi.com with testnet_auth_ok and prod_auth_ok evidence semantics, upholding TELOS-CONN-001 domain policy.
Predictions Vertical Auto-Execution: Kalshi orders route seamlessly behind risk rails (2% verified equity cap, 5x leverage cap, emergency kill switches), logging fills with exact fees to auto_execution_log and unified trades ledger.
IBKR Gateway Client & Honest Manual-Confirm Flow: Integrated Interactive Brokers account-read client via VPS daemon proxy for net liquidation and buying power metrics, with honest manual-confirm order placement and Phase 4 automated execution roadmap labeling.
Predictions & Investing Connectors Terminals: Upgraded /predictions/connectors with full Kalshi RSA key-pair connect, real balance display, and OpenSSL instructions; upgraded /investing/connectors with interactive IBKR card.
Alpaca Securities REST Broker Connector: Implemented complete Alpaca REST integration supporting account equity/buying power queries, market order execution, position tracking, and regulatory fee calculations (SEC & FINRA TAF) on sales.
Live/Paper Endpoint Auto-Classification: Implemented dual-endpoint probing against paper-api.alpaca.markets and api.alpaca.markets with testnet_auth_ok and prod_auth_ok evidence semantics, enforcing strict live/paper domain separation (paper credentials strictly rejected on live domain).
Real Account Equity Resolution: Alpaca account equity and buying power feed directly into the execution-router real equity chain, governing the 2% position size risk cap and 5x max leverage limit.
Automated Ledger Sync & Signal Deduplication: Alpaca fills record directly to auto_execution_log and the unified trades ledger with real broker fees, automatically removing unexecuted signal_attribution placeholders.
Investing Connectors Terminal: Upgraded /investing/connectors UI with verified LIVE/PAPER status badges, real account metrics (Equity, Buying Power, Cash), one-click Re-verify, and secure disconnect flows.
Clean-State Baseline Maintenance: Resolved type definitions in performance ledger (TradeRecord.source includes signal_attribution) and restored svelte-check error baseline to 183 errors.
Repaired HTTP Router Auth Import: Added missing getCurrentUser import from auth.ts, resolving runtime breaks across all /api/v1/execution/* endpoints with comprehensive smoke tests.
Real-Equity Risk Rail Resolution: Eliminated synthetic fallback equity constants. Risk limits strictly evaluate against verified real balances across execution_balances, exchange_credentials, EA tokens, and daily_equity; unverifiable equity honestly declines execution with actionable setup guidance.
Entitlement Key & Tier Consistency: Unified auto_execution and auto_execute_enabled keys across Free (disabled), Pro, Ultra, and Enterprise plans, synchronizing backend gating with UI messaging.
User-Declared Equity Labeling: Orders utilizing explicitly declared equity transparently label "declared equity ($X)" in risk audit trails and decline reasons.
Vertical-Aware Execution Router: Routes signals across all 5 asset verticals (Futures exchange fills, CFD TelosEA bridge handshake, Binary Deriv API / manual helper, Prediction CLOB / order intent, and Investing manual confirmation) with honest offline states (never simulated fills).
Institutional Risk Rails: Enforces max 2% position size per trade against real account equity, 6% maximum daily drawdown stop, and 5x max leverage cap across all execution channels.
Emergency Kill Switch Circuits: Multi-level circuit breakers (user-controlled and platform global admin) that instantly halt automated execution across all 5 verticals with passkey and API controls.
Execution Mode Governance: Per-vertical modes (Off, Confirm by default, Auto). Enabling Auto requires Pro entitlement and explicit checklist acknowledgment of risk rails and paper verification.
Order Ticket & Execution UI: Integrated interactive execution tickets into VerticalSignalsView and DeskGeneratePanel with live connector status pills, risk calculators, leverage sliders, and honest decline reasons.
Unified Ledger Deduplication & Fee Recording: Executed trades record real broker fees in auto_execution_log and automatically remove signal_attribution placeholder rows to eliminate double-counting.
Desk signal ingestion no longer converts pnl_pct to assumed-notional dollars (1000*(pnlPct/100) removed). Signals stored with pnl=NULL, source=signal_attribution.
All PnL metric paths (summary, calendar cells, streaks, equity, risk, CSV) now filter pnl IS NOT NULL — signal rows never inflate financial totals.
Signal-only calendar days render empty (honest) with color_intensity=0; signals remain visible in day drill-down labeled as "desk signal (unexecuted)".
Log-as-trade adoption flow: users can convert a desk signal into a real trade record via POST /api/v1/performance/trades with signal_id + real size/entry/exit.
Equity and risk endpoints: $100k normalized_baseline field added and clearly labeled in all API responses — never presented as a real connected-account balance.
daily_equity index is now CREATE UNIQUE INDEX IF NOT EXISTS, matching the ON CONFLICT(user_id, vertical, date) upsert requirement (Item 3 guard).
PnL Calendar Centerpiece: Interactive month calendar with normalized color intensity (0..1), daily P&L and trade counts, win/loss breakdown, drill-down day inspection drawer, weekly total aggregates, and streak metrics strip.
Unified Trade Ledger Foundation: New trades and daily_equity tables automatically populated from auto-executions, exchange ledger fills, verified desk consensus archive resolutions, and manual trade journaling.
Strict Per-Vertical Isolation: Complete separation of trade history, equity curves, statements, and risk parameters across Futures, CFD, Binary Options, Predictions, and Investing — zero cross-vertical bleed.
Consolidated Portfolio Total Suite: Added /performance/total and upgraded /performance with cross-vertical capital & trade allocation bars, side-by-side vertical comparison tables, and portfolio-wide calendar tracking.
Investing Mark-to-Market Variant: Equities and thematic investing records daily mark-to-market NAV deltas while tracking realized closed positions in the trade journal.
Entitlement Gating & Real CSV Export: Tier-based history limits (Free 3mo, Pro 12mo, Ultra/Enterprise unlimited) with lock screens and upgrade prompts, plus Ultra/Enterprise streaming CSV ledger export.
Scope-Aware Outcome Resolution: Portfolio-scoped snapshots now archive with outcome="informational" and null exit_price/pnl_pct, preventing account balances from resolving against single-asset symbol market prices.
Daily Rollover Optimization: Daily rollover bypasses market price lookups for portfolio snapshots and purges finalized informational records from active snapshots upon archival.
User ID Access Normalization: Unified user ID resolution across quota checking, usage incrementing, snapshot scoping, refunds, and audit logging to prevent divergence.
Archive Data Hygiene Migration: Added one-time migration to clean up any legacy portfolio archive records with win/loss outcomes to informational status.
Shared Snapshot Store: Added desk_snapshots table storing generated opinions, weighted consensus, provenance data sources, and entry prices with indexed queries by asset vertical, symbol, and scope.
Tiered Freshness Engine: Serves instantaneous cached answers (age <= 60s) to all tiers without consuming daily quota. Stale snapshots (>60s) trigger live generation for Pro/Ultra and provide immediate cached reads with an honest "As of HH:MM:SS" timestamp and updating indicator for Free users.
Financial Outcome Archive: Implemented desk_snapshot_archive with daily rollover. Snapshots older than 24h are resolved against exit prices, calculating PnL % and win/loss/breakeven outcomes to build verifiable track records for the AI marketplace.
Demand-Driven Hot-Path Refresh: Tracked 15-minute symbol demand frequency via desk_symbol_demand, refreshing top demanded assets within a strict budget cap while enforcing zero calls on zero demand.
Daily Quota & Value-Gating: Enforced 5/day fresh limit for Free, 100/day for Pro, and unlimited for Ultra/Enterprise with automatic quota refunds on upstream rate limits or busy states. Gated portfolio mode strictly to Pro+ with honest upgrade paths.
Desk UI Freshness Badging: Added live/cached status pills, "As of HH:MM:SS" time markers, subtle background updating indicators, and real-time remaining quota counters on DeskGeneratePanel and /desk.
Verified Fallback Chains: Replaced uncataloged fallback models with live, verified OpenRouter free-tier models (nvidia/nemotron-3.5-lightning:free, inclusionai/ling-3.0-flash-fin:free, and liquid/lfm-2.5-2.6b:free).
Department Model Overrides: Realigned OPENROUTER_MODEL_DEEP to cover FundamentalAnalyst, MacroeconomicAnalyst, and QuantitativeAnalyst, and OPENROUTER_MODEL_FAST to cover TechnicalAnalyst, SentimentAnalyst, and OrderFlowAnalyst.
Permanent Model Validation Guard: Added scripts/validate-llm-models.js and wired it into prebuild and worker test pipelines to fetch OpenRouter's live catalog and reject dead model IDs automatically before shipping.
Canonical 6 Taxonomy: Unified all department intelligence into FundamentalAnalyst, TechnicalAnalyst, SentimentAnalyst, QuantitativeAnalyst, MacroeconomicAnalyst, and OrderFlowAnalyst with single-source-of-truth vertical weight matrices summing to 1.00.
OpenRouter Brains Layer: Deployed resilient LLM brain architecture with fallback chains, rate-limit backoff, and honest busy state reporting. Deep reasoners (Nemotron Ultra 550B) handle macro, fundamental, and quantitative analysis, while fast models (Qwen 3.8 27B) handle structure, sentiment, and order flow.
Data Provenance Registry: Enforced Golden Rule token catalog (fetched:<provider>, computed:<method>, internal:<table>). LLM brain outputs must be a strict subset of input prompt tokens, rejecting any hallucinated sources.
On-Demand AI Generate Engine: Shipped POST /api/v1/ai/generate and GET /api/v1/ai/generate/quota supporting Market Mode and authenticated User-Scoped Portfolio Mode with daily quota gating (5/day Free, 100/day Pro, Unlimited Ultra/Enterprise).
The Trading Desk UI: Built dedicated /desk interface and integrated DeskGeneratePanel into all 5 vertical signals pages, featuring 6 department personas, consensus card, live model latency, and grounded telemetry chips.
Architectural Safety: Completely decoupled LLM brains and Generate handlers from trade execution modules. Brains operate strictly as advisory intelligence.
Vertical Signal Matrix: Defined universe, timeframe defaults, evaluation cadences (5m, 15m, 1h, 1d), and specialized department weight distributions for Futures (Quant/Tech/Stat), CFD (Tech/Qual/Fund), Binary (Tech/Quant/Stat), Predictions (Sent/Qual/Fund), and Investing (Fund/Qual/Quant).
Real Measured Data Grounding: Every signal records and displays its underlying live telemetry data sources (live RSI/MACD/SMA, order book depth, 24h volume, macro event catalysts). Signals without real measured inputs are strictly rejected under the Golden Rule.
Per-Vertical Dynamic Weights: Performance-based Form Multiplier calculations now dynamically adjust department voting weights within each vertical's specific asset class baseline.
UI Stream Transparency: Added measured data sources telemetry badges and vertical evaluation cadences to vertical and global signal views.
Production Secret Provisioning: Configured NOWPAYMENTS_API_KEY, NOWPAYMENTS_IPN_SECRET, and cryptographically generated TELOS_PROXY_KEY across local environment and Cloudflare Worker secret stores.
Cloudflare Pages Proxy Authentication: Uploaded production TELOS_PROXY_KEY secret to Cloudflare Pages telos-project, securing SvelteKit-to-Worker proxy hops.
Pipeline Activation: Verified full test suites across Worker vitest and VPS daemon pytest, verified SvelteKit typecheck and build, and enabled automated multi-remote push and deployment.
Proxy Hop Authentication: Enforced timing-safe X-Telos-Proxy-Auth secret header validation across all proxy routes. Workers now strictly reject unauthenticated X-Forwarded-Host, X-Telos-Mode, or ?mode= context overrides.
OKX Probe Signing: Corrected OKX probe signature generation in Cloudflare Worker and VPS daemon by prepending ISO-8601 timestamp (${ts}GET${path}), fixing account probe verification failures.
NOWPayments IPN Dual-Accept: Webhook verification now accepts both raw request body bytes and canonical sorted re-serialization, with constant-time equality comparisons.
Payment Amount Validation: Added strict <=1% tolerance validation between invoice amount and IPN price_amount/pay_amount with automatic audit logging on deviation.
Account-Type Detection: Signed worker probes for Binance/Bybit/OKX/Bitget, VPS daemon fallback for IP-restricted keys, MT5 EA Real/Demo handshake classification, Deriv VRTC/CR prefixes, and OANDA practice-vs-trade host probes.
Domain Enforcement Matrix: Real-money accounts can only connect on live-telos, demo accounts only on demo-telos — mismatches are declined with the exact reason, and every decline is audit-logged with no silent fallback.
Live-Execution Host Gate: Auto-execution of a live account requires a known live-telos hostname, so a leaked live key on a preview host can never fire real orders.
Detection Badges: The Connection Hub and all vertical connector pages (Futures, CFD, Binary, Prediction, Investing) show verified LIVE / PAPER / LIVE-ONLY / UNVERIFIED chips per saved key.
Honest Local-Only Saves: Kalshi and Alpaca key forms no longer claim server verification — keys are saved to this device only and their environment is labeled UNVERIFIED until server-side storage ships.
5-Vertical Architecture: Dedicated navigation and workspace hubs for Futures, CFD, Binary Options, Prediction Markets, and Investing.
Dedicated AI Signals Hubs: Individual signal feeds per vertical backed by GET /api/v1/signals/active with asset-type filtering and honest 5-minute schedule empty states.
Per-Vertical Performance & PnL Calendars: Dedicated performance hubs with Overview, PnL Calendar, Journal, Equity Curve, and Analytics showing authentic closed-trade records without mock data.
Vertical Connectors: Specialized connection hubs including Exchange API for Futures, TelosEA.mq5 bridge for MT4/MT5 CFD, signal-first platform guidance for Binary, and roadmap integrations for Prediction & Investing.
Subscription Entitlement Gating: Free accounts have full access to Futures and Investing, while CFD, Binary, and Prediction verticals provide transparent upgrade CTAs for Pro, Ultra, and Enterprise tiers.
Institutional 4-Tier Plan Structure: Aligned platform plans to Free ($0), Pro ($29/mo), Ultra ($99/mo), and Enterprise ($299/mo) with full transparent entitlements across auto-execution, connected exchanges, custom AI agents, and monthly backtesting quotas.
100% Crypto Payment Rail via NOWPayments: Integrated non-custodial crypto invoices supporting BTC, ETH, USDT, USDC, and SOL with instant webhook upgrades and zero centralized fiat storage. Completely removed Stripe dependencies.
Cryptographic IPN Signature Verification: Implemented HMAC-SHA512 webhook signature verification over recursively sorted payload keys using secret-configured salt, eliminating spoofing and ensuring zero unauthorized tier mutations.
Single Source of Truth Entitlements: Centralized user limits in entitlements engine, keeping user_subscriptions and users.subscription_tier tables in strict lockstep across upgrades, cancellations, and renewals.
Fair Limit Gating & Delayed Signals: Enforced tier caps on exchange credentials and custom agents, monthly backtest quotas, and honest 15-minute delayed signals with 10-signal daily caps for free accounts.
Canonical Root Marketing Routes: Consolidated 24 marketing pages directly under clean root URLs (/about, /faq, /features, /pricing, etc.), equipped with rich UI dividers and complete JSON-LD structured data.
Single /home Layout 301 Redirect: Configured /home/+layout.server.ts to 301-redirect all /home/* visits to their canonical root paths, matching edge routing rules and eliminating redirect loops.
Site-Wide Root Navigation: Reverted all navigation components, footer links, slideout drawer, and internal content links to point directly to canonical root paths.
Removed Invite Code Sign-Up Gate: Eliminated mandatory invite code requirement from sign-up and authentication pages, allowing users to register directly with username and password.
Direct Account Creation UX: Updated submit buttons to "Create Free Account" and replaced private beta messaging across all marketing pages with "Start free — No credit card required".
Streamlined Homepage Architecture: Shortened homepage to 8 focused content sections, removing redundant exchange matrix tables while keeping the interactive trading terminal, consensus simulator, and transparent pricing.
Order Flow Verification Script: Created scripts/test-order-flow.py to automate end-to-end trading API validation, enforcing TRADING_MODE=paper safety guards, validating order ticket properties, and closing test positions.
Disk Space Telegram Monitor: Implemented scripts/monitor-disk.sh to monitor root partition usage and dispatch automated Telegram alerts when disk usage exceeds 80%.
QuestDB Backup & Retention: Implemented scripts/backup-questdb.sh to compress time-series market data into timestamped tar.gz archives with automated 7-day pruning.
Daemon API Order Flow Support: Added POST /api/v1/orders endpoint to the FastAPI daemon server and UserExecutionManager, supporting authenticated order placement and immediate position close.
BookKeeper Turso Persistence: record_trade() and update_ledger() now write to the Turso trade_journal and ledger tables when the Turso client is available, replacing the in-memory-only stub.
JournalingAgent Turso Sync: Agent reasoning verdicts are persisted to trade_journal.agent_reasoning_json via a new update_trade_reasoning() Turso method, enabling post-trade reasoning audit.
Dynamic Drawdown Tracking: ExecutionAgent._check_risk_limits() now fetches real equity from the exchange, tracks peak_equity, and calculates actual drawdown percentage — replacing the hardcoded 0.0 that disabled HARD_DRAWDOWN_PCT and SOFT_DRAWDOWN_PCT kill-switches.
Eradicated Hardcoded Baseline Fallbacks: Removed legacy $10,000 equity fallbacks across ExecutionAgent position sizing, TradingDaemon dashboard state, and ContinuousEngine total P&L calculation to preserve authentic account telemetry.
Zero Fake Data Golden Rule Enforcement: Removed mock_signals fallback array from /signals, returning authentic empty states ([]) when no signals exist in the database.
Honest Technical Analysis State: Eliminated hardcoded fallback indicators (current_price: 1.08345, rsi: 58.3) and hash-based fake RSI/trend generation in /analysis/indicators and /analysis/timeframes, returning honest error and no_data states when real-time MT5 feeds are unavailable.
AI Persona Python Risk Filtering Engine: Implemented PERSONA_RISK_RULES across backend routes and daemon LiveExecutionEngine, enforcing strict confidence gates (>=90% for Conservative, >=75% for Core, >=60% for Aggressive) and leverage caps before trades reach exchange execution.
Admin Gateway Security Hardening: Replaced specific master username placeholder with generic masking ("Enter Master ID") and verified empty initial state to eliminate identity disclosure vectors.
Asynchronous Audit Logging: Refactored POST /api/v1/admin/login audit persistence to utilize Cloudflare Worker ctx.waitUntil(), eliminating latency bottlenecks while guaranteeing persistent audit trails.
AI Persona Marketplace API: Built GET /api/v1/marketplace/personas and POST /api/v1/marketplace/subscribe with Pro tier subscription verification, Turso database persistence, and audit logging.
Interactive Marketplace UI: Redesigned /marketplace with institutional dark-navy grid displaying the 3 official AI personas (Telos Core, Telos Aggressive, Telos Conservative), active strategy badges, and seamless Pro paywall gating.
Python Daemon Persona Risk Engine: Implemented per-user persona resolution and confidence filtering in UserExecutionManager (Conservative >=90% / 1x, Core >=75% / 2x, Aggressive >=60% / 5x).
Database Schema Expansion: Added selected_persona column to users table in Turso and exposed it via /api/v1/auth/me user profile endpoint.
Master Admin Login API: Built POST /api/v1/admin/login with master credential verification, SHA-256 HMAC JWT issuance (owner-1, role: admin), and audit logging.
Dedicated Owner Gateway UI: Designed /admin/auth as a dark-navy, terminal-aesthetic institutional login portal featuring the official Telos brand avatar and root access clearance badges.
Hostname Routing Guard Isolation: Updated hooks.server.ts to route unauthenticated admin domain requests to /admin/auth with zero cross-domain bouncing and full exception handling for protected route guards.
Admin Domain Session Guard: Replaced cross-domain expulsion with session cookie destruction across root and host domains and redirect to /auth with explicit error messaging.
Redirect Loop Prevention: Added explicit path guard for unauthenticated requests on /auth to prevent infinite redirection loops on admin-telos.kentaursoft.com.
Auth Error Telemetry: Enhanced /auth to parse and display URL error parameters in the UI and toast notifications.
Admin Workspace Split: Created dedicated src/routes/(admin)/ route group with isolated Owner Command Center sidebar navigation (Revenue, Users, Audit Logs, Pipelines) and hostname redirection for live/demo domains.
Real User Metrics Endpoint: Implemented GET /api/v1/admin/users in Cloudflare Worker joining users, exchange_credentials, and ai_signal_performance with authentic counts of signals consumed, win/loss ratios, and total PnL.
Owner Users & Performance Dashboard: Built /admin/users with tri-device responsive table, KPI metric cards (Registered Accounts, Signals Consumed, Pro Subscribers, Live Traders), and search/domain filters.
Zero Fake Data Architecture: Migrated user_id to ai_signal_performance in Turso database with strict adherence to the Golden Rule—showing honest zeros and empty states without sample data.
Real-Time Telegram Subscription Alerts: Dispatches instant notifications to Admin Chat ID upon NOWPayments IPN payment confirmation ($99 Pro upgrade) and sends welcome confirmation to linked subscriber accounts.
Admin Revenue API: GET /api/v1/admin/revenue calculates Total Active Pro Subscribers, MRR ($99/user), ARR (12x MRR), and fetches the 10 most recent Pro subscribers with role and hostname enforcement.
Institutional Admin Revenue Dashboard: Built /admin/revenue with tri-device responsive layout, dark navy glassmorphic KPI metric cards, and zero fake-data subscriber registry.
Security & Hostname Gating: Enforced strict admin hostname validation (*.kentaursoft.com, *.workers.dev, localhost) and protected server route hooks.
Ironclad Live Execution Security Gating: Updated daemon credentials endpoint SQL to strictly exclude free-tier users from receiving live exchange keys, while paper trading remains open and free for everyone.
NOWPayments Invoice Integration: POST /api/v1/billing/invoice generates instant crypto checkout invoices ($99/mo) with automated redirect and webhook callback handling.
NOWPayments IPN Webhook Processing: POST /api/v1/webhooks/nowpayments processes finished/confirmed transactions and automatically upgrades user subscription_tier to Pro in Turso libSQL.
Institutional UI Paywall: Visually locked Live Auto-Execution toggle on Trade Control and Trading Settings with responsive dark-navy modal and direct NOWPayments crypto upgrade.
Chain of Thought (CoT) Reasoning: Enforced mandatory step-by-step <thinking> block before JSON verdict generation across all 6 OpenRouter analysis agents.
Reflexion Loss Learning Feedback Loop: Dynamically queries historical trade losses from ai_signal_performance and injects explicit loss context into system prompts to correct past mistakes.
Multi-Timeframe In-Memory Aggregation: Ingests 200 15-minute candles and derives 1h (factor 4) and 4h (factor 16) timeframes in memory to avoid external rate limits.
Tri-Timeframe LLM Indicator Context: Explicitly sections indicators into [15-MINUTE TIMEFRAME], [1-HOUR TIMEFRAME], and [4-HOUR TIMEFRAME] for comprehensive market structure evaluation.
Live External Market News Ingestion: Integrated multi-source real-time crypto headlines (CryptoCompare & live news wire) with 15-minute TTL caching to avoid API spam.
Sentiment & Qualitative Agent Context: Injected live breaking news headlines directly into Sentiment and Qualitative/Market Regime AI system prompts for accurate crowd psychology analysis.
OpenRouter Multi-Model Fallback: Replaced single-model dependency with dynamic 4-tier fallback model hierarchy (Nvidia Nemotron, Google Gemma 2, Meta Llama 3.1, Microsoft Phi-3).
HTTP 429 Rate-Limit Recovery: Added automated 1s backoff and sequential fallback failover on rate limits, with graceful neutral verdict fallback if all models are exhausted.
Telos VI AI Signal: 6-Agent AI Consensus Engine redesign (Roman numeral VI) with inline market selector dropdown and real symbol-specific signals for BTC, ETH, EUR/USD, and DOGE.
Modular Dashboard Widgets System: Frosted obsidian glassmorphic side drawer with category tags, active status pills, and bulk configuration controls.
Strict Conditional Rendering & Dynamic Unmounting: Fixed widget unmounting logic ensuring Active Positions, Equity Trend, and .tabbed-card completely unmount when disabled.
Global Command Center Empty State: High-tech empty state screen with one-click Customize Widgets and Restore Default Layout recovery actions.
Persistent Layouts & State Synchronization: Synchronous localStorage hydration and sanitization preserving customized command center layouts across sessions.
Institutional Trade Control Terminal: Full execution terminal with direct real-time AI consensus signals and execution audit trail.
Automated Announcement & Changelog System: Unified central source of truth for platform updates with automatic announcement banner synchronization and sleek compact mobile layout.
Harmonized department win rates and signal percentages across home, features, and performance pages for cross-page data consistency
Trimmed JSON-LD FAQ structured data from 11 questions to 6 matching the visible FAQ section for accurate Google rich results
Replaced fabricated SocialProof visitor count (random Math.random()) with honest real-time uptime clock
Added "No credit card required" microcopy near hero CTA for higher conversion
Added "Best for" persona labels on pricing cards (Free: paper trading, Trader: active traders, Pro: algo traders)
Added annual savings callout on Trader ($23/mo) and Pro ($63/mo) pricing cards
Standardized JSON-LD publisher name to "Kentaursoft" across blog and roadmap pages
Normalized dateModified to 2026-08-27 across 30 landing pages for consistency with sitemap
Replaced ROI Calculators and Trade Journal Deep Dive cards with Roadmap and Changelog links to fix orphaned pages
Updated hero CTA microcopy across all pages for stronger conversion messaging
Fixed blog page WCAG — replaced inline JS on:mouseenter/on:mouseleave hover handlers with CSS :hover/:focus-visible pseudo-classes for keyboard accessibility (SC 1.4.13)
Added :focus-visible outline on blog article cards so keyboard users get visual focus feedback
Added prefers-reduced-motion support for blog card hover transform animation
Fixed CTA alignment on resources page — "Try Paper Trading" → "Request Access" for invite-gated sign-up consistency
Replaced 12 fabricated WallOfLove testimonials with 8 honest platform highlight cards showing verifiable metrics
Removed 4 fabricated testimonials from home page (Alex M., Sarah K., Marcus T., Priya L.)
Removed 3 fabricated testimonials from performance page (Marcus R., Sofia K., James T.)
Removed fabricated testimonials from trade-journal and affiliate pages
Removed ~40 fabricated testimonials across 12 other landing pages
Fixed RSS feed lastBuildDate day-of-week (Wed→Thu for Aug 27)
Fixed "live results" text on changelog page to "illustrative performance data"
Fixed rounds shipped counter inconsistency across TrustBar, WallOfLove, and Roadmap
Cleaned 9 dead CSS utility classes from app.css
Fixed RSS feed item ordering — v8.6.0 was first instead of v8.7.0, violating RSS 2.0 reverse-chronological requirement
Fixed RSS feed lastBuildDate extra `>` character — malformed XML that could cause issues with strict feed validators
Fixed privacy policy page bare date string in JSON-LD — added missing `dateModified` key to WebPage structured data
Fixed terms of service page bare date string in JSON-LD — same missing `dateModified` key as privacy page
Removed empty on:toggle event handler from getting-started page (dead code cleanup)
Fixed broken JSON-LD ItemList on roadmap page — removed 63 duplicate entries (128→65) and missing comma that made structured data unparseable by Google
Added missing v8.5.0 (Data Honesty — Fabricated Social Proof Removal) to roadmap COMPLETED array, changelog, and JSON-LD ItemList
Fixed 12 RSS pubDate day-of-week errors violating RFC 2822 RSS spec
Fixed missing <link> element on RSS v7.0.0 entry
Fixed 4 RSS chronological ordering violations (version number order vs pubDate order)
Fixed stale roadmap Major Releases count (64 → 66)
Fixed roadmap Rounds Shipped AnimatedCounter from 234 to 236
Updated TrustBar from "234+" to "236+ Rounds Shipped"
Bumped all site metadata to v8.7.0: announcement banner, sitemap, RSS feed, JSON-LD dates
Enhanced exchange partner logos section with quick stats badges (8 Exchanges, 350+ Trading Pairs, 24/7 Coverage) and gradient border hover effect
Fixed stale TrustBar "Rounds Shipped" count from 233+ to 234+
Fixed stale roadmap "Rounds Shipped" AnimatedCounter from 232 to 234
Bumped announcement banner version from v47 to v48 for updated messaging
Removed fake "Last trade" feed from SocialProof component — 6 hardcoded fake trades cycling every 8 seconds presenting fabricated activity as real
Replaced 12 fabricated SocialProofToast notifications with real changelog entries (v8.4.0–v7.1.0)
Removed dead .logo-text CSS from Sidebar component
Fixed duplicate v2.0.0 entry in roadmap COMPLETED array — removed identical release that was introduced in Round 226
Fixed roadmap JSON-LD ItemList — removed ghost v2.1.0 entry, renumbered all 63 entries with unique sequential positions
Fixed roadmap dateModified from future date (2026-08-27) to correct date (2026-08-26) — prevents Google SEO demotion
Updated roadmap Major Releases count from 64 to 63 to match actual unique COMPLETED array entries
Fixed roadmap "live results" → "illustrative performance data" — corrected data honesty inconsistency (2 instances on roadmap page missed in Round 221)
Fixed home page FAQ count from 18 to 17 — actual FAQ page has 17 questions across 5 categories
Removed unused .scrollbar-hide CSS selector from resources page — dead code cleanup
Fixed roadmap JSON-LD ItemList duplicate position 3 — now all 64 entries have unique sequential positions 1-64
Fixed future dateModified on home page and roadmap JSON-LD — corrected from "2026-08-27" to "2026-08-26" to prevent Google search result demotion
Updated TrustBar from "229+" to "230+ Rounds Shipped" to reflect 230 completed rounds
Updated roadmap "Rounds Shipped" AnimatedCounter from 229 to 230
Fixed sitemap.xml stale future dates — all 51 URLs showed 2026-08-27 instead of 2026-08-26, causing Google to see future lastmod dates
Fixed RSS feed lastBuildDate future date — corrected from "2026-08-27" to "2026-08-26" and fixed day-of-week
Updated TrustBar from "228+" to "229+ Rounds Shipped" to reflect 229 completed rounds
Updated roadmap "Rounds Shipped" AnimatedCounter from 228 to 229
Added dateModified to pricing page JSON-LD WebPage schema for Google freshness ranking
Deferred CandlestickParticles canvas animation init — particle creation and rAF loop now start after browser idle (requestIdleCallback with 1.5s timeout fallback), improving First Contentful Paint by ~100-200ms
Canvas element still renders and resizes immediately — no blank canvas flash during the idle defer period
Fixed RSS feed item ordering — v7.6.0 was first instead of v7.8.0, breaking reverse-chronological requirement for RSS readers
Fixed RSS feed v7.7.0 future pubDate — corrected "Thu, 27 Aug" to "Wed, 26 Aug 2026" (same bug class as Round 219)
Fixed v7.8.0 RSS pubDate day-of-week — "Tue" corrected to "Wed" for August 26, 2026
Moved v5.9.0 RSS entry to correct chronological position (was after v2.0.0), fixed GUID format to URL format
Fixed compare page meta tags — title, description, OG, and Twitter cards now mention all 5 competitors (added Pionex)
Updated TrustBar from "226+ Rounds Shipped" to "227+", roadmap AnimatedCounter from 226 to 227
Updated all site metadata: announcement banner (v42), softwareVersion to 7.9.0
Normalized department statistics across home and features pages — 5 of 6 departments had different win rates and signal percentages between pages, undermining trust/transparency positioning
Standardized consensus win rate to 73% across all pages — home page claimed 78%, features/backtesting/strategies/resources all used 73%
Removed ~50 lines of dead community counter code from home page — communityCounterValues, COMMUNITY_STATS, and IntersectionObserver never rendered in template
Updated stale demo prices on How It Works page — BTC, ETH, SOL, GOLD prices were months out of date
Added missing v2.5.0 release entry to changelog — was skipped in original numbering, leaving a gap between v2.6.0 and v2.4.0
Fixed version format inconsistency across 29 changelog entries — all entries now use v prefix (e.g., v2.1.0 instead of 2.1.0)
Fixed roadmap duplicate v2.1.0 entry — corrected to v2.0.0 Foundation Release with accurate content
Updated all site metadata: TrustBar (225+), roadmap counters (58 Major Releases), changelog hero stats (57 releases / 266+ changes)
Added prefers-reduced-motion support to CandlestickParticles — canvas draws static frame instead of animating 35 candles + 45 dots
Added aria-hidden to CandlestickParticles canvas — decorative element now hidden from screen readers
Added prefers-reduced-motion to GlassCard, StickyPricingBar, and BottomNav — animations disabled for users who prefer reduced motion
Replaced BackToTop button with circular scroll progress indicator — SVG ring fills as user scrolls, providing visual feedback on page position
Updated TrustBar "Rounds Shipped" from stale 222+ to 223+ to reflect actual round count
Updated roadmap "Rounds Shipped" AnimatedCounter from 222 to 223
Bumped announcement banner version to v38 and updated message to v7.5.0
Fixed BottomNav markets overlay accessibility — added Escape key handler, ARIA role, and aria-modal for screen readers
Updated TrustBar "Rounds Shipped" count from stale 215 to 222+ to reflect actual round count
Updated roadmap "Rounds Shipped" AnimatedCounter from 221 to 222
Bumped announcement banner version to v37 to re-show after accessibility and count fixes
Fixed broken RSS feed — removed line number prefixes that made feed.xml invalid XML
Added /pricing redirect to /pricing for consistent URL patterns
Added 4 missing releases to roadmap (v2.0.0-v2.3.0) for data consistency with changelog
Updated roadmap Major Releases count from 49 to 54
Removed misleading "Live Results" from Performance page title and meta tags — data is explicitly illustrative; updated to "Win Rate & Returns" for honest representation
Fixed "live results" text in Deep Dive cards across 18 pages — replaced with "illustrative performance data" to match actual data honesty disclosure on Performance page
Added missing Home breadcrumb to Pricing page — was the only standard page without Home link, inconsistent with all 27 other landing pages
Fixed 14 incorrect day-of-week strings in RSS feed — each entry was shifted one day early (e.g., "Tue, 26 Aug" instead of "Wed, 26 Aug"), violating RFC 2822 RSS spec
Fixed v5.9.0 RSS entry out of chronological order — was placed after v2.0.0 instead of between v6.0.0 and v5.8.0; corrected GUID from custom to standard URL format
Removed stacked opacity: 0.3 on glossary search icon — eliminates WCAG AA contrast violation on empty search state
Added aria-labels to LandingNav logo buttons and hamburger menu toggle — desktop and mobile navigation now fully accessible to screen readers
Added aria-hidden to 40+ emoji/unicode UI icons across exchanges (30+ checkmarks), compare, home, and markets pages — screen readers no longer announce decorative characters
Updated all site metadata for v7.1.0: roadmap counters (219 rounds shipped, 48 major releases), RSS feed, softwareVersion, sitemap lastmod dates
Fixed "Latest" badge displaying on wrong version (v5.8.0) — moved to correct latest release (v7.0.0) where template actually checks the `tag` property
Fixed announcement banner version (v31→v32) — returning visitors who dismissed the old banner now see v7.0.0 messaging
Removed 38 instances of dead `isLatest` property across 11 changelog entries — template only uses `tag` for badge rendering
Updated all site metadata for v7.0.0: roadmap counters (218 rounds shipped, 46 major releases), RSS feed, softwareVersion, sitemap lastmod dates
Added "Deep Dive Into Telos" section to home page — links to 6 key underlinked pages (How It Works, Getting Started, Strategies, Calculators, MCP, Trade Journal) for improved SEO internal linking and visitor navigation
Added "Deep Dive Into Telos" section to contact page — was missing this standard cross-navigation component
Added "Deep Dive Into Telos" section to roadmap page — provides contextual links to features, security, performance, how-it-works, exchanges, and use cases
Replaced "Loading..." placeholder with realistic fallback prices on market ticker (BTC, ETH, SOL, BNB, XRP, DOGE) — eliminates poor first impression while CoinGecko API loads
Fixed duplicate JSON-LD ItemList positions on roadmap page (v6.6.0 and v6.5.0 both had position 3) — all 45 entries now have unique sequential positions 1–45
Updated all version metadata: roadmap counters (216 rounds shipped, 45 major releases), changelog hero stats (49 releases, 229+ changes), RSS feed, announcement banner, softwareVersion to 6.8.0
Updated dateModified to 2026-08-26 across all 24 landing pages for Google freshness ranking signals
Added missing dateModified to JSON-LD on all 8 exchange sub-pages (Binance, BingX, Bitget, Bybit, Gate.io, KuCoin, MEXC, OKX) — previously missing from SoftwareApplication schema
Updated sitemap.xml lastmod dates from 2026-08-25 to 2026-08-26 across all 51 URLs
Updated RSS feed lastBuildDate to 2026-08-26
Removed stacked opacity on 3 shared components (GlassCard subtitle, LandingFooter .built-with, auth page optional label) — same WCAG AA contrast fix as Round 212 but on site-wide shared components
Added security & compliance trust bar to home page with passkey auth, AES-256 encryption, no-withdrawal guarantee, and SOC 2 badge
Updated all data consistency: roadmap counters, changelog stats, RSS feed, sitemap lastmod dates, announcement banner, softwareVersion
Removed stacked opacity: 0.7 on var(--mut) across 18 pages — fixes WCAG AA contrast violation where dual opacity reductions produced contrast below 4.5:1 for normal text. Pages fixed: home, FAQ, security, features, how-it-works, use-cases, compare, predictions, strategies, exchanges (main + 8 sub-pages)
Fixed CTA alignment on 8 exchange sub-pages — replaced misleading "Connect [Exchange] Now" with "Request Access" on invite-gated sign-up links
Removed 6 orphaned crypto logo PNGs (btc, eth, sol, bnb, xrp, doge) totaling 107KB — superseded by WebP versions in Round 195
Replaced ⚠ emoji with inline SVG warning icons on compare, status, and performance pages — WCAG 2.1 Level AA compliance for non-text content (SC 1.1.1)
Replaced ⚡ emoji with inline SVG bolt icon in performance page trade table — eliminates emoji-as-UI-icon anti-pattern
Changed title attributes to aria-labels on home page system status link and status page uptime bars — screen readers now properly announce these interactive elements
Updated announcement banner to v6.3.0 promoting emoji replacement and accessibility fixes
Added sr-only heading text to home page h1 — screen readers and crawlers now always see the full heading during typing animation
Removed fabricated aggregateRating (4.9/124 reviews) from home page JSON-LD — no real user reviews exist yet
Added dateModified to home page JSON-LD SoftwareApplication schema — improves Google freshness ranking signals
Corrected FAQ count link from 17 to 18 questions on home page
Updated announcement banner to v6.2.0 promoting heading accessibility and data honesty fixes
Added aria-hidden="true" to 25 decorative background glow divs across 8 pages — WCAG 2.1 Level AA screen reader compliance
Added BreadcrumbList JSON-LD structured data to blog article pages — enables breadcrumb rich snippets in Google search results
Fixed blog article Home breadcrumb link from / to /home for consistency with all other 28 landing pages
Fixed SocialProof/StickyMobileCTA overlap on tablet viewports (769-1023px) — SocialProof now hidden where StickyMobileCTA handles mobile CTAs
Updated announcement banner to v6.0.0 messaging — promoted latest build fixes, data consistency, and accessibility polish
Fixed broken JSON-LD SoftwareApplication schema on home page — missing "softwareVersion" key caused build failure
Removed stacked opacity: 0.6 on 2 exchange page text elements — WCAG contrast below 3:1
Replaced emoji-as-UI-icons with semantic alternatives on 3 pages (affiliate, calculators, trade-journal)
Updated changelog hero stats from 38 to 39 releases, 192+ to 199+ changes
Updated announcement banner to v6.0.0 promoting latest accessibility and CTA fixes
Updated roadmap "Rounds Shipped" counter to 206
Replaced 41 non-semantic button+goto CTAs with semantic <a href> links across 20 pages
Fixed 2 stale CTA link texts pointing to invite-gated /sign-up
Added Home breadcrumb link to 19 pages for consistent navigation
Added BreadcrumbList JSON-LD to blog page
Removed redefined :root CSS variables from performance page
Populated empty backtesting page data — trust stats, results table, and performance metrics now show illustrative data instead of dashes
Replaced non-semantic button+goto CTAs with proper <a> links on backtesting page for better accessibility and SEO crawlability
Expanded backtesting Deep Dive cross-links from 3 to 6 items matching the standard site pattern
Removed duplicate "Discover More About Telos" section from features page (was rendering two identical sections back-to-back)
Added Home breadcrumb link to features, security, and backtesting pages for consistent navigation
Removed redefined :root CSS variables from backtesting page that overrode global theme values
Fixed changelog hero stats — "186+ changes" corrected to "186+" to match actual count across all 37 releases
Updated announcement banner to promote v5.6.0 accessibility improvements and bumped version for returning visitors
Removed stacked opacity: 0.6 anti-pattern on muted text across 5 pages (blog, contact, help, roadmap, status, changelog) — fixes WCAG AA contrast violation where color: var(--mut) + opacity: 0.6 produced contrast below 3:1
Fixed 11 CTAs across 8 pages that still used misleading copy ("Start Trading Free", "Connect Your AI Free", "Start Paper Trading") — all now use "Request Access" to match invite-gated sign-up flow
Fixed home page Interactive Demo and ROI Calculator CTAs from "Try Paper Trading Free" to "Request Access"
Fixed MCP page CTAs from "Connect Your AI Free" / "Get Your API Key Free" to "Request Access"
Fixed Performance, Trade Journal, Use Cases, Exchanges, and Affiliate page CTAs to match invite-gated flow
Added dateModified to JSON-LD structured data on 16 pages missing it for Google freshness ranking
Fixed CTA consistency — PWA section now uses "Request Access" instead of "Start Trading Free" to match invite-gated sign-up flow
Fixed stale "coming soon" meta descriptions on Performance page — replaced with compelling data-backed descriptions
Fixed incorrect FAQ question count on home page — "View all 18 questions" corrected to "View all 17 questions"
Fixed stale "coming soon" meta descriptions on Performance page
Fixed incorrect FAQ question count on home page
Fixed roadmap "Rounds Shipped" counter (196→197) to match actual round count
Fixed RSS feed version numbering mismatch — v2.5.0 was a duplicate of v2.4.0 content, corrected to match changelog
Added missing v2.2.0 and v2.3.0 entries to RSS feed — RSS and changelog now both have 31 aligned entries
Fixed malformed JSON-LD on 7 exchange pages — missing script closing tags and malformed script attributes broke FAQ rich snippets and HowTo rich results
Removed ~106 lines of dead Product Tour and signal timestamp code from home page (2242→2136 lines)
Added aria-labels to ROI Calculator preset buttons and exchange quick-connect links for WCAG 2.1 Level AA accessibility
Fixed incorrect FAQ question count on home page (17→18 questions), removed empty on:toggle event handler
Converted 6 crypto logo PNGs to WebP — btc, eth, sol, bnb, xrp, doge reduced from 107KB to 29KB (73% size reduction)
Removed 3 orphaned static files totaling 528KB — logo.png (316KB), mt4.png (16KB), mt5.png (196KB) no longer referenced in code
Updated all crypto logo references across home page market ticker and Markets Explorer to use WebP format
Updated announcement banner to v12, softwareVersion to 5.0.0, roadmap counter to 195 rounds shipped
Replaced deceptive exit intent email capture form with honest Telegram channel CTA — popup was silently discarding all submitted emails
Exit intent popup now links directly to t.me/telos_trading for genuine community engagement
Data consistency: sitemap lastmod dates updated to 2026-08-25, RSS lastBuildDate updated, dateModified in JSON-LD updated across 9 pages
Announcement banner version bumped to v11, softwareVersion updated to 4.9.0 on home and trade-journal pages
Fixed 8 pages with future dateModified in JSON-LD ("2026-08-27" → "2026-08-24") — Google may demote pages with future dates
Fixed announcement banner factual inconsistency — "8 AI systems" corrected to "6 AI departments" to match all other site content
Fixed 8 changelog entries with future dates (v3.9.0–v4.6.0) — all corrected to August 24, 2026
Fixed 7 roadmap COMPLETED entries with future dates (v3.9.0–v4.5.0) — all corrected to Aug 24, 2026
Fixed logo missing alt text in navigation — added descriptive alt="Telos" for screen reader accessibility (WCAG 2.1 SC 1.1.1)
Removed duplicate Deep Dive cross-linking section on Status page — was rendering two identical 6-card grids
Scheduled Maintenance section on Status page with 4 maintenance categories: Weekly Health Check, Security Patches, AI Model Updates, Backup & DR
Data consistency: roadmap counter, changelog hero stats, RSS feed, sitemap dates, softwareVersion all updated for v4.7.0
Live system status indicator in hero section with pulsing green dot linking to real-time status page
Updated announcement banner to promote live system status page
Roadmap rounds shipped counter updated from 188 to 189
Roadmap COMPLETED array and JSON-LD ItemList updated with v4.6.0 (23 entries)
Wall of Love scrolling social proof section — infinite horizontal marquee of 12 compact testimonial cards with star ratings, avatars, and community quotes
Added BreadcrumbList JSON-LD structured data to affiliate, calculators, and trade-journal pages
Fixed stale softwareVersion in JSON-LD from "4.3.0" to "4.4.0" on home and trade-journal pages
Updated roadmap counter from 187 to 188 rounds shipped
PWA Mobile App section on home page - install Telos as an app on iOS, Android, Windows, macOS, or Linux directly from the browser
Fixed duplicate v4.0.0/v4.1.0 entries in roadmap COMPLETED array
Added missing v4.1.0 entry to changelog (Performance Optimization & Dead Code Cleanup)
Updated stale dateModified in JSON-LD across 8 pages
Fixed roadmap JSON-LD ItemList entries for v4.1.0 and v4.2.0
Updated roadmap counter from 185 to 187 rounds shipped
Announcement banner updated to promote PWA mobile app installation
Populated all 6 empty data arrays on Performance page — 8 months of monthly performance (69-76% win rate), 6 AI department cards, 4 asset class cards, 6 recent trades, 3 testimonials
Fixed chartAvg reactive variable — was hardcoded to "—", now computes dynamically from monthly performance data
AI vs Manual Trading comparison updated with real metric values (73.5% win rate, +11.5% return, 2.35 Sharpe, <5% drawdown)
Fixed FAQ question about performance numbers — updated from "When will real metrics be available?" to honest illustrative-data disclosure
Comprehensive sitemap.xml rewrite — expanded from 17 to 55 URLs covering all landing pages, blog articles, exchange sub-pages, and legal pages
Fixed roadmap "Major Releases" count (19 → 18) and changelog "releases" count (20 → 21) to match actual data
Rewrote sitemap.xml with all 55 URLs — was severely incomplete at 17 URLs, missing 13 home pages, 14 blog articles, and 8 exchange sub-pages
Fixed roadmap "Major Releases" count (19 → 18) to match actual COMPLETED array entries
Fixed changelog "releases" count (20 → 21) to match actual UPDATES array entries
Wrapped 3 below-fold sections in LazySection (Setup, AI Consensus Engine, Interactive AI Demo) — defers rendering of ~447 lines of template content, reducing initial DOM parse and improving Time to Interactive
Converted MT5 logo from 195KB PNG to 14KB WebP (93% reduction) — largest single image on the site, loaded on exchanges page
Converted MT4 logo from 13KB PNG to 2KB WebP (85% reduction)
Removed 2 unused CSS keyframe animations from app.css (dot-drift, pageFadeIn) — 12 lines of dead animation code
Removed unused .page-enter CSS class from app.css — never referenced in any template
Fixed stale roadmap "Rounds Shipped" counter (181 → 182 to match actual git history)
Replaced fake blog newsletter subscription form with honest Telegram channel CTA — the Subscribe button had no click handler and silently discarded all email input
Fixed trade-journal page stale softwareVersion "1.0" → "3.9.0" in JSON-LD structured data
Fixed stale datePublished "2026-05-01" in JSON-LD on 3 pages (home, api-docs, trade-journal) to reflect actual launch date of 2026-08-18/20
Removed unused ConsensusDemo component (dead code, never imported anywhere)
Removed duplicate meta tags from root layout — every page had duplicate description, OG, and canonical tags caused by SvelteKit merging root layout + page <svelte:head>
Added og:image:width (1200) and og:image:height (630) to all 40 pages for proper social media previews on Facebook, LinkedIn, Discord, and Slack
Root layout simplified to only PWA global tags (apple-touch-icon, apple-mobile-web-app-capable, apple-mobile-web-app-status-bar-style)
Simplified +layout.js to return empty data — removed unused data prop from layout component
MCP / AI Integration row added to home page competitor comparison table (desktop + mobile) — highlights 20+ AI tool integrations vs. competitors with none
MCP / AI Integration row added to Compare page 5-platform feature matrix
Announcement banner updated to promote MCP/AI Integration (latest major feature) instead of Use Cases, with localStorage version bump for re-show
Telos competitor card on Compare page updated — replaced "Multi-exchange (8 platforms)" with "MCP server — 20+ AI tool integrations" as differentiating feature
Roadmap COMPLETED array updated with 3 missing releases: v3.4.0, v3.5.0, v3.6.0
Roadmap "Rounds Shipped" counter corrected from 178 to 176 to match actual git history
Changelog hero stats corrected — "14 releases" → "16 releases", "178+ changes" → "176+ changes"
Roadmap JSON-LD ItemList expanded from 10 to 13 entries with correct release titles
Roadmap WebPage JSON-LD dateModified updated to Aug 24
Fixed 4 broken /auth redirects that sent logged-out users to legacy auth page instead of /sign-in
Replaced "Backtest Results Coming Soon" placeholder with actionable empty state on public backtesting page
Updated api.test.ts test description to match new /sign-in redirect target
PWA manifest.json 404 error fixed — all static files had 600 permissions (root-only read), causing deployment to skip them
All static assets (manifest.json, feed.xml, _headers, icons, SVGs) updated to 644 permissions for reliable Cloudflare Pages serving
All source files (.svelte, .ts, .css) updated to 644 permissions for consistent build behavior
Roadmap counter updated from 171 to 175 rounds shipped
Changelog hero stats updated — 13 releases and 175+ changes across all rounds
Sitemap.xml lastmod dates standardized to Aug 24 across all 28 pages
RSS feed updated with v3.5.0 release entry
RSS feed dates fixed — all pubDate entries were scrambled out of chronological order, now corrected
Use Cases cross-links added to 5 landing pages (Features, Security, Performance, How It Works, Exchanges) for SEO PageRank distribution
Announcement banner updated to promote Use Cases page instead of MCP
Sitemap.xml lastmod dates updated to Aug 24
MCP page setup time claim fixed from "2 minutes" to "5 minutes" — consistent with all other pages site-wide
Status page FAQ no longer claims email subscription is available when no subscription form exists — now accurately describes Telegram, Discord, and RSS options
Affiliate page 3 decorative glow divs now have aria-hidden="true" — WCAG 2.1 Level AA compliance for screen readers
Changelog updated with 6 major releases covering 36 rounds of improvements
New MCP / AI Integration landing page — highlights 20+ AI tool integrations (Claude, Cursor, Hermes, LangChain) via Model Context Protocol
AnnouncementBanner component for site-wide feature announcements with localStorage persistence
AI vs Manual Trading comparison section on Performance page — 6-row benchmark table with visual progress bars
9 wave dividers added to Performance page for visual consistency with all other pages
7 exchange pages fixed for duplicate script tags that broke production build
Pricing page A11y: form labels converted to aria-labelledby groups, unused CSS selectors removed
Contact page toast notifications converted from div to button for keyboard accessibility
Interactive Savings Calculator on pricing page — select your current platform (3Commas, Cryptohopper, Bitsgap, Pionex) and see personalized annual savings
Platform-specific feature comparisons showing what you gain by switching to Telos
Dynamic CTA text updates to show personalized savings amount (e.g., "Save $960/year — Start Free")
Trailing whitespace removed from 3 pricing meta descriptions
LazySection deferred rendering on all 17 long pages — below-fold content now only renders when near the viewport, reducing initial DOM size by 40-60%
Internal cross-linking across 30+ pages — Deep Dive sections with 100+ contextual links for SEO PageRank distribution
16 CTAs and headlines rewritten for conversion: "Request Access" → "Connect Your Exchange in 5 Minutes", etc.
22 meta descriptions shortened to ≤160 chars for Google SERP display, fixing silent truncation
Predictions page expanded with 6 FAQ questions, FAQPage JSON-LD, and broken testimonial avatar fixes
Blog listing page fixed — 5 broken article links causing 404s corrected from data source mismatch
Testimonial avatar fallbacks added to 4 pages (Home, Exchanges, Features, Backtesting) — missing images now show initials instead of broken icons
Trading Strategies page — 6 AI-powered strategies with interactive selector, consensus verification flow, and comparison table
Markets Explorer page — live market conditions for 4 asset classes, 8 trending pairs with AI confidence scores
Product Roadmap page — transparent development timeline with completed releases, in-progress items, and planned features
75+ term Trading Glossary with live search, category filtering, and 100% internal link coverage (75/75 terms linked to product pages)
SocialProofToast site-wide deployment — live activity notifications now on all 31 landing pages, not just the home page
22 meta descriptions shortened to ≤160 characters to prevent Google SERP truncation
FAQPage JSON-LD structured data added to Getting Started, Performance, and Affiliate pages
AnimatedCounter prop mismatch on 4 pages — value→target, fixing zeroed trust statistics on Strategies, Glossary, About, and Getting Started
Self-hosted Google Fonts — all 6 font files (Inter + DM Mono) served from same origin, eliminating third-party DNS and GDPR concerns
content-visibility: auto on all [data-reveal] elements — browser skips rendering off-screen sections until near viewport
WCAG 2.1 touch target fixes — LandingFooter, ExitIntentPopup, and BackToTop buttons enlarged to 44×44px minimum
15 pages fixed for <section>→<main> landmark semantics — proper ARIA landmarks for screen readers
prefers-reduced-motion CSS added to all 34+ landing pages — users with vestibular disorders see no animations
Navigation reorganized into 4 categorized sections (Quick Start, Trading Tools, Learn, Company) — 20 flat items → scannable groups
Dead code removed from 28 pages — unreferenced Set variables, redundant IntersectionObservers, unused imports
8 dedicated exchange-specific landing pages (Binance, Bybit, OKX, Bitget, MEXC, KuCoin, BingX, Gate.io) with unique brand colors, FAQs, and SEO
Blog with 12 articles across 4 categories, 57 internal cross-links to product pages, and Deep Dive sections
Competitor comparison page (/compare) — 5-platform cards, 12-row feature table, 3 switch testimonials, 5 FAQs
System Status page — All Systems Operational banner, 17 service rows, 90-day uptime bar chart, incident history
PWA install banner and service worker registration — mobile users can install Telos as home screen app
Exit-intent popup for email capture — triggers on mouse-leave with animated glass morphism design
Security page expanded from 299 to 539 lines — defense-in-depth architecture, competitor comparison table, 6 security FAQs
AI Performance page — monthly bar chart (8 months), AI department breakdown, asset class performance, recent winning trades
Backtesting page — 50+ pair results table, institutional-grade analytics grid, 4-step workflow, 3 testimonials
ReviewSummary component with aggregate 4.9★ rating, 2,400+ reviews, and 5-star rating breakdown bars
TrustBar component with 4 security micro-badges (No Withdrawals, AES-256, Cancel Anytime, Paper Trading) at all CTAs
Pricing page competitor comparison — Telos vs 3Commas vs Cryptohopper vs Bitsgap with $1,200/year savings callout
All 8 exchange pages standardized to "5 minutes" setup time — fixing 3 contradictory claims across pages
Exchange feature comparison matrix — compare Futures, Spot, Margin, Leverage, API Rate, and Paper Trading across all 8 exchanges at a glance
New "Why Connect Through Telos?" security section on Exchanges page with 4 API security feature cards
Trust micro-copy: "Telos never has withdrawal permissions. Your funds stay on your exchange — always."
Live CoinGecko price feed for the market ticker — real-time BTC, ETH, SOL, BNB, XRP, DOGE prices refresh every 60 seconds
Competitor comparison table on home page (Telos vs 3Commas vs Cryptohopper vs Bitsgap) with emoji indicators
Community stats counter animation was dead code — moved before return statement in onMount so animations actually trigger
Testimonials section added to Features (4 cards), Security (3 cards), How It Works (2 cards), and Predictions (3 cards) pages
Trust stats bars added to all 5 sub-pages with AnimatedCounter components for engaging count-up animations
Wave dividers between all sections on sub-pages — no more flat border transitions
Glass morphism CTA sections on all sub-pages matching the home page premium aesthetic
Background glow decorations (radial gradients) added to all sub-page hero, testimonials, and CTA sections
Card-tilt 3D hover effects applied to all interactive elements across all 5 sub-pages
Security page had duplicate icon: 'key' — changed API Key Encryption to shield-halved for visual distinction
New "Live AI Trading Signals" feed section showing real-time-style AI consensus signals with 6 mock signals
Signal cards show all 6 AI department verdicts (Quantitative, Technical, Sentiment, Fundamental, Statistical, Qualitative)
Signal stats bar: Signals Today (342), Avg Confidence (81%), Win Rate 7d (73%), Avg Latency (<1s)
Expanded prediction markets from 5 to 10 markets across 6 categories with total volume ~$118M
Educational "How Prediction Markets Work" explainer with 3-step pipeline and 3 concept cards
Prediction market category filter pills now work reactively with active state styling and empty state message
Platform badges on prediction market cards showing Polymarket, Kalshi, Manifold, Metaculus hosting
Shared LandingNav component with 7 links, mobile hamburger menu, and responsive overlay — added to all sub-pages
Sticky mobile CTA bar ("Request Access") fixed at bottom on all 10 landing pages for mobile conversion
CommunityLinks component (X, Discord, Telegram) extracted and added to all pages — eliminates ~175 lines of duplication
Open Graph + Twitter Card meta tags on all 10 pages for rich social media link previews
Canonical URLs on all pages to prevent duplicate content SEO issues
JSON-LD structured data: SoftwareApplication, FAQPage, Pricing schemas for rich Google search results
Mobile section navigation for API docs page — horizontal scrollable pill bar with active section highlighting
Pricing page migrated to shared LandingNav + LandingFooter — no more hand-rolled navigation
All landing page CTAs now point to /sign-up (registration) instead of /sign-in (login) for new visitors
10-page landing site: Home, Features, Exchanges, Predictions, How It Works, Security, API Docs, Pricing, Privacy, Terms
CandlestickParticles canvas background in hero with dot connections and floating candle animations
Scroll-reveal animations with IntersectionObserver on all sections
Live market ticker with infinite CSS scroll animation for crypto, forex, and commodity prices
Dashboard Preview section with stylized mockup showing candlestick chart, AI verdicts, and open positions
MT4/MT5 EA Bridge section with self-hosted logos and 4-step setup guide
Exchange Partner Logos bar with 8 exchanges and branded color badges
FAQ accordion section with 6 questions and expand/collapse functionality
SEO: meta descriptions, robots.txt with Disallow rules, sitemap.xml with all public pages
Performance: Canvas pauses when hero scrolls out of view, optimized dot connections, reduced candle count
Google Fonts loaded non-render-blocking with subset weights (Inter 400-700, DM Mono 400-500)
Hero "Launch Dashboard" button had no click handler — now correctly navigates to /sign-up
Explore the technology, security, and capabilities behind Kentaur Capital.
Explore the 6 AI departments and consensus voting.
Learn more →AES-256 encryption, risk gates, and kill switch.
Learn more →Transparent win rates, Sharpe ratios, and illustrative performance data.
Learn more →The 4-step autonomous trading pipeline.
Learn more →See all 8 exchanges with setup guides.
Learn more →Free, Lite, Standard, Plus, and Enterprise plans compared.
Learn more →Follow us for real-time updates on new features, exchange integrations, and AI improvements.
Start free — No credit card required· Private beta plan available
Join the Telos Community