Changes:
1. Add 30-second timeout for chat API requests using AbortController
2. User's message now shows immediately before API response (already done in previous PR)
3. Differentiate between timeout errors and other errors in error messages
4. API client now accepts optional signal parameter for abort support
Previously, only the assistant's response was added to the frontend store.
Now both user and assistant messages are stored, so the conversation
displays correctly in the chat interface.
Created the following components:
- ChatInterface: Message input, AI responses, chat history with bot selector dropdown
- BotCard: Bot preview card for dashboard
- BotSelector: Dropdown to select bot (max 3 bots)
- StrategyPreview: Shows parsed strategy config in readable format
- SignalChart: Visual representation of signals over time (SVG-based)
- BacktestChart: Portfolio value chart with metrics display
- ProUpgradeBanner: Upsell banner for Pro features
- TokenPicker: Search/select tokens for conditions
- ConditionBuilder: UI for building trading conditions
Updated pages to use new components:
- Dashboard now uses BotCard
- Bot detail page now uses ChatInterface and StrategyPreview
- Backtest page now uses BacktestChart
- Simulate page now uses SignalChart and ProUpgradeBanner
Implemented issue #9 - Frontend Project Setup with Svelte and TypeScript.
Changes:
- Created SvelteKit project with TypeScript
- Set up routing structure:
- / (landing page)
- /login
- /register
- /dashboard
- /bot/[id]
- /bot/[id]/backtest
- /bot/[id]/simulate
- /settings
- Created Svelte stores for state management:
- userStore - Current user info
- botsStore - List of user's bots
- currentBotStore - Selected bot
- chatStore - Chat messages
- backtestStore - Backtest results
- simulationStore - Simulation signals
- authStore - Authentication state
- Created API client for backend communication
- Set up environment variables (.env.example)
- Created auth store with protected routes and login/register functionality