Skip to content

v1.1.0 β€” UI redesign + sector classification + perf & bug fixes

Choose a tag to compare

@dokson dokson released this 25 May 06:30
· 234 commits to master since this release

Highlights

Frontend

  • New components: <Delta>, <CompanyLogo>, <FundLogo>, <GlobalSearch>, <FundCell>, sector pills, YFinanceClassificationTreeVisual
  • Sidebar redesign with sliding active indicator, section hairlines, live data dot, dynamic version footer
  • Layout extended to max-w-screen-2xl across all pages; mobile-friendly header reflow + SidebarTrigger
  • Default tab By Value on /stocks; URL sync ?tab= on StockBrowser and QuarterlyTrends (back/forward navigable)
  • Chunked pagination 500-per-step on Alphabetical + By Value; reset on tab switch
  • Unified delta visualization (icon + signed value + colour) across Dashboard, QuarterlyTrends, FundPortfolio holdings
  • Star button inline in Company cells across all tables
  • Company name typography overhauled (sans, full-contrast)
  • Fund favicon + manager line everywhere a fund appears
  • CUSIP + CIK now searchable in the global search bar
  • Centralized version (__APP_VERSION__ via package.json), centralized cursor:pointer on buttons

Backend

  • GICS replaced by Yahoo Finance Classification (sector_hierarchy.csv + stocks.csv Industry-only)
  • New app/stocks/classification.py: yfinance β†’ same-Company β†’ Groq fallback
  • New /api/funds-missing-quarters and /api/apply-ticker-changes endpoints
  • /health now reports the version
  • CSP relaxed for Google Fonts (style-src + font-src)
  • app/utils/version.py with lru_cache as single source-of-truth

Critical bug fixes

  • /database page lock: CusipAutocomplete onValidChange-in-deps loop with inline parent callbacks. Fixed via ref-pattern (matching TickerAutocomplete)
  • GH Pages /quarterly 404: sector_hierarchy.csv was not in the static deploy copy list. Added + regression test grepping dataService.ts for every fetched CSV
  • CI pandas 2.2 dtype error: TickerResolver.assign_cusip now coerces the CUSIP column to object dtype
  • AppSidebar /funds vs /funds-config double-highlight (word-boundary match)
  • AbortController on streaming Database operations
  • Logo tile bg-neutral-200 so both dark and white logos remain visible
  • ModelSelector ref-pattern (preventive)
  • StockBrowser setState-in-effect β†’ render-time state adjustment

Tests

  • 86 β†’ 94 frontend tests
  • 352 β†’ 359 backend tests
  • Shared vitest setup with IntersectionObserver polyfill
  • Regression guard on the GH Pages copy script (copy-database.test.ts)