summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-06-29feat: enhance data service with DCF and valuation supportTyler Hoang
2026-06-29feat: extend schemas with valuation and DCF typesTyler Hoang
2026-06-29feat: add WACC service and testsTyler Hoang
2026-06-28chore: gitignoreTyler Hoang
2026-06-22test: add Playwright E2E suite for News tabTyler Hoang
2026-06-22feat: add NewsPage component and enable News tabTyler Hoang
2026-06-22feat: add backend news service with Finnhub/FMP fallback and sentimentTyler Hoang
2026-06-14feat: enable Filings tab and route FilingsPageTyler Hoang
2026-06-14feat: add FilingsPage componentTyler Hoang
2026-06-14feat: add FilingsResponse types and api.filings() clientTyler Hoang
2026-06-14test: add filings backend testsTyler Hoang
2026-06-14feat: add GET /api/tickers/{symbol}/filings routeTyler Hoang
2026-06-14fix: clean up get_sec_filings (cache decorator, url shadowing, dead code, ↵Tyler Hoang
imports)
2026-06-14feat: add get_sec_filings serviceTyler Hoang
2026-06-14fix: add defaults to FilingKpis and CadencePoint, make FormMixRow.pct optionalTyler Hoang
2026-06-14feat: add FilingsResponse schemaTyler Hoang
2026-06-11fix: align option chain headersTyler Hoang
2026-06-10Simplify deploy script and docsTyler Hoang
2026-06-09Add Insiders tab with diverging bar chart and transaction tableTyler Hoang
- Backend: get_insider_transactions() in data_service (yfinance, 1hr TTL) - Backend: InsidersResponse schema + GET /api/tickers/{symbol}/insiders - Frontend: InsidersPage with 4-KPI strip, SVG diverging bar chart (), psm-insider transaction rows, pill filter toggles, shimmer skeleton, empty/error states - Enable Insiders nav item (remove disabled flag)
2026-06-09chore: added graphifyTyler Hoang
2026-05-30updateTyler Hoang
2026-05-30fix: add missing start script to frontend package.jsonTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30envTyler Hoang
2026-05-30fix: align deploy flow with post-receive checkout (no .git in /var/www)Tyler Hoang
The working tree at /var/www/prism-v2 is populated by a post-receive hook that does `git --work-tree=... checkout -f`, so it has no .git directory. Drop git operations from deploy.sh and add scripts/post-receive.sample plus README setup for the bare repo + hook + sudoers wiring. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30feat: add scripts/deploy.sh for idempotent production deploysTyler Hoang
Handles first-time install (--install) and redeploys: pulls, builds backend and frontend as www-data with the required HOME/NPM_CONFIG_CACHE env, restarts systemd services, and smoke-checks /health and /. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30docs: tighten README, AGENTS, CLAUDE with production deploy instructionsTyler Hoang
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-21fix: rewrite polar smile with correct closed-lens geometryTyler Hoang
- Piecewise angleFor: puts go CCW (ATM→bottom), calls go CW (ATM→bottom) so both wings meet at the same bottom point and the path closes with Z - Dynamic ivToR computed from actual IV range across all expiries (inner floor 60px, outer wall 240px) instead of hardcoded percentages - IV rings: 5 evenly-spaced steps between real ivLo/ivHi - Curve fill: rgba(194,170,122,0.12) matching design reference - Non-selected curves: index-based styles (solid fg-1, then dashed fg-2/3/4) - Eye price at font-size 30, label lowercase 'call · fair' - Dashed marker-line spoke from center to selected-K dot - Clicking a curve switches the selected expiry via onPickT - Strike ticks use round multiples of a price-adaptive step - Fix IvHeatmap xlabs duplicate key error (key by index, not rounded K) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20feat: implement options tab with Black-Scholes pricer and vol surfaceTyler Hoang
Adds a fully interactive options tab: Terminal view (3-column Bloomberg- style with pricer, chain, smile/term-structure/greek curves) and Surface view (polar smile dial + IV heatmap). Uses synthetic vol surface until a live yfinance chain endpoint is wired up. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19Update production deployment templates and docsTyler Hoang
2026-05-19Fix production API base for ticker searchTyler Hoang
2026-05-19feat: add nginx config with /api/ proxy block for VPS deploymentTyler Hoang
Routes /api/ to the FastAPI backend (8001) so NEXT_PUBLIC_API_BASE_URL can be set to the public domain instead of localhost. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19fix: use ▲▼ glyphs in VolumeCard per design system whitelistTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19fix: resolve quality review issues in PriceVsValueCardTyler Hoang
- Add 150ms ease transitions to pvv-fill and pvv-tick (design system) - Move fill color to modifier CSS classes, drop inline background/opacity - Guard iv === 0 to prevent Infinity in premium/discount label - Remove ambiguous direction arrows from IV figure - Add "projection" suffix to year count in assumption summary Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19feat: add PriceVsValueCard to overview left column (DCF compass)Tyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19feat: fetch valuation on overview tab, add DCF block to ValuationOverviewCardTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19systemdTyler Hoang
2026-05-19unified start/stop script and included systemd filesTyler Hoang
2026-05-19feat: add ValuationOverviewCard to overview right column (multiples)Tyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19feat: replace StatsCard with QualityCard (margins, returns, leverage)Tyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19fix: correct VolumeCard bar transition to 150ms per design systemTyler Hoang
2026-05-19feat: add VolumeCard to overview left column (today vs 30d avg)Tyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19chore: remove unused unavailableFields helperTyler Hoang
2026-05-19feat: remove Coverage card from overview tab, move Profile to top of right ↵Tyler Hoang
column Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19chore: ignore next-env.d.tsTyler Hoang
2026-05-19feat: add real-time DCF sliders to ValuationCardTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19fix: replace undefined --fs-10/11 vars with --fs-12 in DCF slider CSSTyler Hoang
2026-05-19feat: add DCF slider CSS to prism-shellTyler Hoang
2026-05-19feat: add client-side computeDcf utilityTyler Hoang
2026-05-19feat: add projection_years to DcfResult frontend typeTyler Hoang
2026-05-18feat: add projection_years to DcfResult schema and service outputTyler Hoang
Add projection_years: int = 5 field to the DcfResult Pydantic schema and emit it from the data_service.get_valuation() function across all three dcf_out cases (unavailable, error, and successful). This enables frontend DCF sliders to know the default projection horizon. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>