- Add GET /api/v1/indicators endpoint computing MACD (12/26/9) and Bollinger
Bands (20,2) via pandas-ta, aligned with chart candles
- Extract shared candle-fetching into gemini.fetch_stock_history_rows used by
both stockHistory and the indicators endpoint
- Add MACD/BB toggles to Technical Overlays toolbar
- Render Bollinger Bands on main chart and MACD as separate pane with histogram
- Enrich chart data with indicator series aligned by epoch timestamp (ts)
- Surface MACD/BB active indicators to AI analyst chat context
design: lower book stack position slightly, add gold light reflection overlays to covers and pages
- UpgradePage.tsx: center brand logo and title, set absolute positioning for back button
- UpgradePage.tsx: remove test mode footer message and clean inline card overrides
- App.css: define tier-specific box shadow glows and borders on hover transitions
style: prevent chart panel shrinking and make center content scrollable
- App.css: Add overflow-y: auto, scrollbar style, and max-height constraints to the .center-content column.
- App.css: Add flex-shrink: 0 to the .chart-panel layout to prevent container clipping when RSI is toggled.
style: add diagonal watermark and GenZ neon glow layouts to TrendingHub
- App.css: Set initial opacity: 0 on number input spin buttons, and add a hover selector on input[type=number] to trigger smooth opacity transition to 0.7.
style: restore and style number input spin buttons using invert filter
- App.css: Replace spin button hiding styles with a Webkit filter: invert(1) to convert native bright white spin boxes into dark-theme friendly scroll arrows.
style: hide native number input spin buttons globally
- App.css: Add global rules for ::-webkit-scrollbar, ::-webkit-scrollbar-track, and ::-webkit-scrollbar-thumb to override thick white native scrollbars with thin (6px) dark-theme scrollbars.
style: replace native select elements with custom React glassmorphic dropdowns
- AIAnalyst.tsx: Convert Trading Style and Risk Profile dropdowns to custom React state-managed components.
- AIAnalyst.tsx: Add glassmorphic wrappers with blur backdrops, shadows, and borders for parameter selections.
- App.css: Add .glass-dropdown-item hover states for smooth neon-cyan text color and glass highlights.
style: apply premium styles and color contrast to parameters dropdowns
- AIAnalyst.tsx: Add premium-select class name to Trading Style and Risk Profile dropdowns.
- App.css: Style .premium-select to remove default browser arrows, insert a custom SVG chevron indicator, and set a dark background and white text for option items.
style: remove browser focus outline on chart clicks
- StockChart.tsx: Configured explicit pixel heights (340px for full view, 220px when RSI is active) to prevent ResponsiveContainer from collapsing in flex environments.
- App.css: Converted .chart-panel to min-height: 540px and height: auto to accommodate the newly dimensioned chart containers.
fix: resolve chart height squishing and X-axis labels clipping
- StockChart.tsx: Set ComposedChart bottom margin to 25 to reserve rendering space for X-axis date/time tick labels.
- StockChart.tsx: Changed chart container height to use flexbox (flex: 1) instead of calc height percentages.
- App.css: Set a fixed height: 520px on .chart-panel to ensure stable layout constraints for chart responsive renderers.
feat: add candlestick charts, technical indicators, live toasts, and AI personalization
- schema.py: Support optional trading_style and risk_tolerance variables in get_ai_insight mutation, and tailor Gemini agent prompt
- StockChart.tsx: Implement calculations and toggle controls for SMA (20), EMA (20), RSI (14) indicator sub-panel, and Line/Candlestick chart representations
- AIAnalyst.tsx: Add UI selectors for Trading Style and Risk Profile parameters
- App.tsx: Add live glassmorphic Toast notification system, check price alerts in WebSocket ticks loop, and format open/high/low/close candlestick data points
- App.css: Style toast stack containers, control buttons, overlays, and keyframes animations
feat: migrate credit purchase to full-page UpgradePage layout
- App.tsx: Add 'upgrade' view routing, clean up unused showRecharge state, and redirect to dashboard upon successful checkout
- UpgradePage.tsx: Create new full-page pricing page with a responsive 4-column grid and dynamic 3-day new user lifetime offer check
- Dashboard.tsx: Remove RechargeModal import, rendering block, and unused props
- App.css: Add styling for full-page container, hover transitions, and glowing back navigation buttons
- schema.py: Map package tiers dynamically in create_payment_order mutation
feat: upgrade credit pricing tiers and redesign RechargeModal as a SaaS plans grid
- endpoints.py: Add GET /api/v1/stocks/indices API with yfinance batch downloading and 60-second caching
- schema.py: Enrich WatchlistType and fetch quotes concurrently in Query.watchlist using asyncio.gather
- TickerTape.tsx: Create a new scrolling index marquee component for market indicators
- App.tsx: Add polling for indices, fetch key stats (open, high, low, volume) from yfinance history, and manage watchlistQuotes state
- Dashboard.tsx: Render the TickerTape and propagate active stats and quotes
- StockChart.tsx: Render a sleek key metrics grid displaying Open, High, Low, Volume, and Change
- WatchlistSidebar.tsx: Show live price and color-coded change percentages next to watchlisted items
- App.css: Add styling for scrolling marquee, metrics grid layout, and color utility helpers
feat: add real-time stock autocomplete and company name auto-correction