Changelog
What's new in Convexity — features, fixes, and improvements.
v0.9.3
2026-04-21
Insider Drift Closed, Plaid Merged Layer & Brief
- AI assistant renamed from 'The Analyst' to 'Brief'
- Plaid iframe permission violations resolved — Link flow works on prod
- Plaid holdings now merge into Risk analysis and Brief context site-wide
- Portfolio routes now auth-scoped — Plaid-synced portfolios are visible to their owner
ai
AI assistant renamed from 'The Analyst' to 'Brief' across FAB, chat, and context chip
data
Insider drift remediation: canonical query_insider_trades powers dashboard, company feed, alerts, ticker pages — all surfaces now return the same numbers
data
Per-service insider caches deleted (drift source); values served straight from the canonical query on every request
fix
Plaid Permissions-Policy header delegates accelerometer, encrypted-media, payment, and other required features to Plaid origins — resolves iframe permission violations
fix
nginx Permissions-Policy mirrored into tracked config (deploy/nginx-convexity.conf) with belt-and-braces middleware fallback
fix
Portfolio routes now use authenticated user ID instead of hardcoded user 1 — Plaid-synced portfolios now appear for the correct account
fix
CI: SARIF upload and gitleaks 403s on PRs fixed via explicit workflow permissions
feat
Plaid brokerage holdings merge into Risk analysis symbol set — Correlation Matrix, Stress Test, VaR, and all risk widgets automatically include linked brokerage positions
feat
Brief (AI chat) now receives brokerage tickers and has_linked_brokerage flag in session context — can answer 'what do I own?' and portfolio questions without the user re-stating positions
feat
usePlaidHoldings shared hook: single cache entry for all consumers; no duplicate in-flight requests regardless of page
feat
Portfolio manager: newly-linked Plaid brokerage auto-selects + invalidates detail — Holdings table reflects sync immediately
feat
Portfolio header button now reads 'Refresh Brokerage' when connected and calls /plaid/sync directly (no re-link required)
feat
Each Plaid portfolio tab shows a 'synced Xm ago' indicator sourced from /plaid/items
feat
Plaid dashboard groups holdings under their owning account card with per-account position count and value
feat
Plaid queries auto-refetch on window focus and every 5 minutes while the page is open
feat
Light mode deprecated — dark is the only supported theme for new work (existing toggle preserved for current users)
v0.9.2
2026-04-20
Full S&P 500 Insiders, Alerts & Exports
- Insider coverage expanded to the full S&P 500 with a market heatmap widget
- Alerts persist to the database with email delivery and unsubscribe
- CSV export from the screener and watchlist
- 10-Q/10-K persistence landed; 8-K coverage expanded from 30 to all S&P 500
data
S&P 500 insider expansion: chunked sync pipeline + market heatmap widget on insider flow page
feat
Alerts: persisted to DB with ARQ-driven email delivery, one-click unsubscribe, and rate-limit guard
feat
CSV export on the stock screener and on watchlists — one-click download of the current view
feat
Stock detail: correlated stocks card surfaces top ±N peers by rolling correlation
feat
Stock screener: curated alt-data preset chips (insider flows, dark-pool skew, unusual options, etc.)
feat
Plaid: aggregate holdings across all linked institutions with per-institution portfolio persistence (one '{institution} (Plaid)' portfolio per item)
data
10-Q/10-K persistence: service, ARQ sync job, API routes, backfill script
data
8-K coverage expanded from 30 companies to the full S&P 500
feat
SEC filings semantic search powered by Voyage embeddings
ai
Voyage batch output download follows 307 redirect; payload shape corrected; per-call budget guard added
fix
Sentry PII scrubber: redacts tokens, emails, and session IDs from events in production
feat
Finviz Elite parity audit: tier-bump of matched features + admin gate on /alerts/evaluate
feat
Marketing: pre-recorded AI demo replay replaces live streaming per-visitor (/try page + homepage teaser)
feat
Semantic gate in front of event-driven Claude calls — only routes to the model when relevance passes a threshold
feat
Clickable header indices + XGBoost scroll fix + insider sync normalization
v0.9.1
2026-04-18
The Analyst, Interconnected Lenses & Freshness Everywhere
- AI assistant rebranded to 'The Analyst' — shows which page it's reading and tailors prompts to your ticker
- Consistent data-freshness badges across every alt-data surface
- Refreshed product voice: every angle of every ticker, one substrate underneath
ai
AI assistant rebranded as 'The Analyst' with a 'Reading · <page>' context chip in the header
ai
Empty-state prompts reference the page you're on and the active ticker
ai
Input placeholder adapts per page and per ticker ('Ask about TSLA or this page…')
feat
DataFreshnessBadge applied to Cap Table, Alt-Data, Subsidiaries, and Subsidiary Graph — one visual language for 'how fresh is this?'
feat
Homepage H1 refreshed: 'Every angle. One ticker. One substrate underneath.'
feat
Product page H1 refreshed: 'Every angle of every ticker. One substrate, many lenses.'
feat
Section 3 of homepage refocused on 'Stop stitching tools together'
feat
'One ticker · every lens' tagline now on boot splash, login, onboarding, terminal banner, and profile
feat
Dashboard greeting surfaces 'One pane. Your tickers. All signals cross-linked.'
feat
Pricing page now flags aspirational features as 'Coming Soon' for honesty
ai
Voyage 4 embeddings with shared-space profile and batch discount for vector workloads
fix
Use Cases → Analysts layout corrected; Plaid entry delinked from footer and count fixed
fix
Security page accuracy pass: subprocessors listed, unsupported claims removed
fix
Broken Geist @import that caused stylesheet URL verification 404
v0.9.0
2026-04-16
Observability, Hardening & Preferences
- Sentry error tracking + structured JSON logging in production
- Server-side user preferences with cross-device sync
- Security page rebuilt with audited claims and honest disclosures
feat
Server-side user preferences: theme, sidebar, dashboard layout, recent pages/tickers persist across devices
feat
Deep health check at /api/health/deep — monitors DB, Redis, AI, disk, memory, market data
feat
Structured JSON logging in production with request ID propagation for traceability
feat
Sentry error tracking with FastAPI and SQLAlchemy integrations
feat
Frontend code splitting — 60+ pages lazy-loaded for faster initial load
feat
Frontend test infrastructure: Vitest unit tests + Playwright E2E smoke tests
fix
Rate limiter wired into middleware — API endpoints now properly rate-limited
fix
Morning Brief no longer renders error text as panel content
fix
Header indices truly centered via CSS Grid (not shifted by sibling widths)
fix
Footer consolidated: removed floating ⌘K pills and AI fab, added version number
fix
Security page: removed false claims (zero-knowledge, SOC 2, CSP, IP allowlisting)
fix
@sentry/react added to package.json — fixes production frontend builds
data
Security page now lists all subprocessors (Anthropic, OpenAI, Plaid, Polygon, Sentry, etc.)
data
Vulnerability reporting section with safe harbor language
v0.8.0
2026-04-15
Clean URLs, Navigation & Cold-Start Resilience
- All public pages now at clean root URLs (/markets, /stocks, /ticker/NVDA)
- Markets link added to site-wide navigation bar
- Cold-start graceful degradation with per-service timeouts
feat
Clean root URLs: removed /public prefix from all public pages
feat
Markets link in global navigation bar (desktop and mobile)
feat
Footer now links to Markets, Stocks, Changelog, and Security pages
feat
301 redirects from legacy /public/* paths to clean URLs
feat
Changelog page at /changelog with release history
fix
/markets renders partial data on cold start instead of 504 timeout
fix
/stocks fast-path fallback fetches top 50 stocks when full scanner is cold
fix
Per-service asyncio timeouts (10-20s) prevent single slow source from blocking page
fix
/sitemap footer link now serves marketing page instead of SPA
data
Partial renders skip HTML cache so next request gets warm data
v0.7.0
2026-04-14
Public Surfaces & Dashboard Polish
- Server-rendered public ticker, markets, and screener pages for SEO
- Embeddable ticker widget for third-party sites
- Dashboard contrast and readability improvements (WCAG AA)
feat
Public ticker pages at /ticker/{symbol} with AI synthesis and insider trades
feat
Public markets dashboard with indices, movers, sector rotation, breakouts
feat
Public stock screener with S&P 500 rankings and sort filters
feat
Embeddable ticker widget for iframe embedding on external sites
feat
Morning brief RSS feed at /feed/morning-brief.xml
feat
Public JSON API: /api/v1/quote, /api/v1/indices, /api/v1/movers
feat
Sitemap index, pages sitemap, and robots.txt for SEO
fix
Morning Brief panel now generates market-level brief when no portfolio exists
fix
Insider Flow panel filters to Buy/Sale trades >= $50K (no more $0 Awards)
fix
Dark mode text contrast bumped to WCAG AA (--text-secondary 7.1:1)
fix
Panel glass surface opacity increased for better visual separation
data
Desaturated donut chart sector colors for dark mode readability
data
Footer bar font size increased from 9px to 10-12px
v0.6.0
2026-04-13
Security Hardening & Marketing Homepage
- Argon2id password hashing replacing bcrypt (OWASP recommended)
- JWT refresh token rotation with reuse detection
- Marketing homepage now serves at convexityos.com root
feat
Marketing homepage now serves at convexityos.com
feat
Redesigned login page with animated convexity curves
feat
AI Analysis renders **bold**, *italic*, and $dollar highlights inline
feat
Refresh token rotation with database-backed refresh tokens
fix
Blank page bug: auth verification now runs above ProtectedRoute
fix
AI price hallucination: prompt forces exact live market data
data
Argon2id password hashing (memory-hardened, 64MB, 3 iterations)
data
Legacy bcrypt hashes auto-upgraded to Argon2id on login
v0.5.0
2026-04-12
Rebrand, Local AI & Marketing Launch
- Full rebrand from FinTerm to Convexity with new indigo identity
- Local Ollama AI (Qwen2) for free passive narratives
- Stripe-inspired marketing homepage at convexityos.com
feat
New Convexity logo (lambda/convexity curve)
feat
Accent color rebrand from orange to indigo across entire app
feat
Boot splash screen with glow animation on startup
ai
Ollama integration with Qwen2 1.5B for local AI on VPS
ai
Macro dashboard narrative uses local Qwen model
fix
Chart loading reliability: no longer requires double-refresh
fix
Universal chart tooltip readability across themes
v0.4.0
2026-04-11
UX Overhaul & Reliability Fixes
- Merged and consolidated pages for streamlined navigation
- Fixed data loading across macro, smart money, and stock endpoints
feat
Screener promoted to top-level sidebar item
feat
Portfolio value history graph on dashboard
feat
All stock tickers are now clickable links
fix
Fixed Fear & Greed and macro data failing
fix
Fixed national debt showing $0 deficit
fix
Fixed stock detail pages stuck in infinite loading
v0.3.0
2026-04-10
AI-Everywhere & Patch Notes
- AI Insight panels added to 15+ pages for context-aware analysis
- Patch Notes page with full changelog
ai
AI insights on StockDetail, Research, Intelligence, Macro, and more
ai
AI insider pattern detection, Fed speech interpretation
ai
AI earnings surprise analysis and SEC filing summaries
feat
Patch Notes page accessible from footer
v0.2.0
2026-04-09
Claude AI Integration & Glass Theme
- Anthropic Claude integration for market analysis
- Full app rebrand to frosted glass theme with dark mode
ai
Claude backend service for market summaries and chat
ai
AI portfolio analysis with diversification scoring
feat
Light frosted glass theme with CSS variables
feat
Dark mode toggle with localStorage persistence
v0.1.0
2026-04-08
Initial Capabilities Dashboard
- Interactive capabilities dashboard with frosted glass design
- 70+ feature pages covering equities, crypto, macro, alt-data
feat
Capabilities Dashboard with portfolio, chart, analysis panels
feat
Real-time WebSocket market data integration
feat
SEC EDGAR, FRED, ClinicalTrials.gov, USPTO data integrations
data
Real data from 20+ government and public APIs
Try the latest version
Real-time data, AI analysis, and 12 alternative data sources — all in one terminal.