- 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
style: simplify and shorten advisor chat disclaimer message
- ChartChatbot.tsx: add overflowY: 'auto' and cap max height at 100px in styles and JS auto-resize script
- ChartChatbot.tsx: change form style to alignItems: 'flex-end' for correct alignment at max heights
feat: add financial disclaimer to chatbot panel footer
- StockChart.tsx: compute live SMA 20, EMA 20, and RSI 14 values and pass to ChartChatbot
- ChartChatbot.tsx: add liveData prop and include values in /analyst/chat POST request body
- endpoints.py: extract live indicators and append to Gemini system instructions context
feat: add clear chat button with confirmation overlay to chatbot panel
- ChartChatbot.tsx: import Trash2 icon from lucide-react
- ChartChatbot.tsx: add showConfirm state to manage dialog overlay visibility
- ChartChatbot.tsx: render clear chat button in header and confirmation modal overlay
- ChartChatbot.tsx: clear local state and localStorage history on clear confirmation
fix: prevent empty markdown bullet indicators from rendering as stray dot symbols
- Database: Add subscription_tier, messages_remaining, monthly_messages_used, and last_billing_date to User model
- Migration: Generate and apply Alembic migration with server_defaults for existing rows
- Backend: Enforce bearer token authorization and message limits on /analyst/chat endpoint
- Backend: Map Razorpay webhook payment capture to user subscription tiers and credit allocations
- Frontend: Implement live ticking 3-day countdown timer for Pro pack discount (₹10k vs ₹15k)
- Frontend: Show real-time remaining quota badge in Chatbot header and lock chat input when limit is reached
style: update Quant AI Advisor subtitle to be project-specific
- ChartChatbot.tsx: Refactor formatMessageContent to strip stray asterisks, parse list symbols, and convert section headers (###, ####) into bold HTML layout nodes.
style: update chat loading message and refine markdown text parsing
- ChartChatbot.tsx: Change typing loader status to Analyzing Quant AI Strategy....
- ChartChatbot.tsx: Refactor formatMessageContent helper to remove stray asterisks, convert section hashes into headers, and map bullet points to stylized cyan dots.
feat: implement markdown formatting and auto-expanding chat input
- ChartChatbot.tsx: Add formatMessageContent parser helper to render markdown bold/italic strings into styled HTML nodes.
- ChartChatbot.tsx: Replace single line text input with a custom auto-expanding textarea, handling key bindings (Enter to send, Shift+Enter for new line).
style: apply high-tech GenZ styling to Quant AI Advisor panel
- ChartChatbot.tsx: Import Logo component, replace generic lucide Bot icon in header, rename title to Quant AI Advisor.
- ChartChatbot.tsx: Insert absolute-positioned Logo background watermark inside the message feed container.
feat: persist chat history and restore maximized layout state
- ChartChatbot.tsx: Synchronize message state with localStorage, restoring chat threads dynamically on mount/ticker changes.
- ChartChatbot.tsx: Set a sessionStorage flag on 'Upgrade' button click to record maximize state.
- StockChart.tsx: Import useEffect and initialize isMaximized using the sessionStorage flag, clearing it on mount.
refactor: redirect chatbot trial upgrade trigger to payment page
- Dashboard.tsx: Pass down onOpenRecharge prop to StockChart.
- StockChart.tsx: Accept and forward onOpenRecharge callback to ChartChatbot instance.
- ChartChatbot.tsx: Trigger onOpenRecharge directly when the user clicks 'Upgrade Plan' instead of displaying an alert.
feat: implement maximized chart AI chatbot sidebar with test bypass
- endpoints.py: Add /analyst/chat POST route to feed user workspace details (markers, indicators) to Gemini models.
- ChartChatbot.tsx: Create new glassmorphic sidebar panel with input locks and free trial validation rules.
- ChartChatbot.tsx: Whitelist karanshelar8775@gmail.com for unlimited chatbot access.
- StockChart.tsx: Integrate ChartChatbot and split layout horizontally when chart is maximized.
- Dashboard.tsx: Pass down user state to StockChart.
feat: implement maximized chart interactive AI chatbot sidebar
- endpoints.py: Add /analyst/chat POST route to feed user workspace details (markers, indicators) to Gemini models.
- ChartChatbot.tsx: Create new glassmorphic sidebar panel with input locks and free trial validation rules.
- StockChart.tsx: Integrate ChartChatbot and split layout horizontally when chart is maximized.
- Dashboard.tsx: Pass down user state to StockChart.