64 Commits

Author SHA1 Message Date
henry 617c8b9d56 fix: prevent scroll reset by stabilizing useEffect dependencies with refs
Run Tests / test (push) Failing after 33s
2026-05-16 22:37:11 +02:00
henry b5b5207756 feat: always enqueue analyze jobs as background, save jobId to DB, reuse active jobs, cleanup stale jobs 2026-05-16 22:31:19 +02:00
henry ff798abf04 chore: remove verbose console.log output from analyze API, keep only error/warn logs 2026-05-16 22:24:22 +02:00
henry 1eddb9173e fix: update admin token check logic and improve comments for clarity
feat: add condition to only delete manually added stocks from DB
docs: clarify stock notes saving method and Alpaca mode indicator fetching
chore: update binary database file
2026-05-16 22:20:29 +02:00
henry 17ba788419 fix: delete button - add error handling and fix variable shadowing in filter callback 2026-05-16 22:16:42 +02:00
henry f8a3b7840f fix: consolidate 3 fetchBars calls into 1 per stock and add 500ms delay between sequential loads to avoid rate limiting 2026-05-16 22:14:21 +02:00
henry 5e865b9c26 feat: auto-load technical indicators on page load and show loading states in all cells 2026-05-16 22:09:03 +02:00
henry 046e81ffc1 feat: rewrite analyze page with technical indicators column and signal summary 2026-05-16 22:05:01 +02:00
henry 898f4f48dc fix: show running job status when viewing in-progress jobs and auto-poll for completion 2026-05-16 21:54:54 +02:00
henry 115363baad refactor: rewrite analyze.ticker page with compact job history, live results, position and orders display 2026-05-16 21:48:58 +02:00
henry 2ab55060f3 feat: wire TradingGraph to use settings for model, temperature, and risk config 2026-05-16 21:37:27 +02:00
henry 1f7c07b427 fix: improve settings page error handling, race condition, and metadata 2026-05-16 21:21:35 +02:00
henry 07c7182ed6 feat: rewrite settings page with sidebar navigation and structured sections 2026-05-16 21:17:41 +02:00
henry bf67a93b31 feat: add notes field to stocks API upsert 2026-05-16 20:42:22 +02:00
henry 7fdef49b8c feat(settings): wire ANALYSIS_BACKGROUND into landing loader and add CI notes 2026-05-16 20:20:36 +02:00
henry 0ee89cf052 feat(settings): add settings route and API updates\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 20:19:35 +02:00
henry 9b8afa2605 feat(settings): add admin settings API routes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 20:10:46 +02:00
henry 078dc25b87 feat(settings): add admin settings UI and Navbar link
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 20:10:41 +02:00
henry 74ebf0b6e3 Feat(api): support fetching bars from paper or live Alpaca (default paper) via alpacaClient.fetchBars\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 18:08:15 +02:00
henry 91659e997a Build: make server-only imports dynamic in analyze route to avoid client bundling errors\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 17:58:25 +02:00
henry b2e0568bfd Fix(types): LLM types, execution LLM call safety, analyze defaults; skip tests in tsconfig for dev typecheck\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 17:57:53 +02:00
henry 5358ee6f97 Fix: use ReadableStream cancel() to cleanup interval (avoid controller.signal TS error)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 17:44:03 +02:00
henry 93056b7ecd Fix JSX syntax: close conditional expression in analyze.ticker.tsx (add missing }) 2026-05-16 15:31:00 +02:00
henry 0e8339d614 UI: surface buying/selling suggestion and execution plan in portfolio and stock detail (show last saved suggestion)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 15:27:41 +02:00
henry 329b83a17c UI: ensure dark text on job detail and job history cards (avoid white-on-light backgrounds)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 15:13:38 +02:00
henry fc17b8cb51 UI: avoid disabling Add Stock button to prevent flaky E2E clicks (addStock still guards empty input) 2026-05-16 15:06:46 +02:00
henry eac93a6b82 Routing: add /stocks/:ticker alias to analyze.ticker for compatibility with tests\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 15:02:08 +02:00
henry e4fb4bca41 Fix routing: move job loader into index and keep cancel as nested action (avoid duplicate file/folder)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 15:00:01 +02:00
henry c8e4c181d0 Fix cancel route import path to queue module\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:58:18 +02:00
henry 1ae60635d3 UI: job badges, skeletons, cancel support + API route to cancel jobs\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:56:22 +02:00
henry 424a2fc6d5 UI: add job details page and auto-refresh in JobHistory\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:52:51 +02:00
henry 2585734f6a UI: add JobHistory component and render on stock detail page\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:48:58 +02:00
henry 669b792045 Jobs API: expose getJob and listRecentJobs; use unified queue module for job status and history; UI can query /api/jobs?ticker=...\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:47:23 +02:00
henry 528045c25e Fix duplicate stockRecord declaration in stock detail loader 2026-05-16 14:35:43 +02:00
henry a835986842 StockDetail: include stockRecord in loader return for job status link 2026-05-16 14:30:47 +02:00
henry 3234a09096 Add job status endpoint, persist lastJobId; replace in-process queue with BullMQ-based queue and worker; link job status in UI 2026-05-16 14:28:34 +02:00
henry d9f9150d68 Add job queue for background analyze, enqueue from API, update MostActiveStocks form POST, add Playwright E2E for Save button 2026-05-16 14:22:13 +02:00
henry a9e73e8e0b API: support background analyze - enqueue TradingGraph and persist decision to DB when body.background is true\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:19:10 +02:00
henry 24c7ee2bf1 Save ticker and last decision to DB; add order suggestion UI; upsert stocks with execution details; ensure analysis saves ticker
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 14:06:45 +02:00
henry c9f83b834e Return agentSignals and debateRounds in mocked /api/analyze response to match component expectations 2026-05-16 14:01:53 +02:00
henry ac175c8d42 Mock lightweight-charts in StockDetail UI test to avoid canvas requirement 2026-05-16 14:01:01 +02:00
henry ea2836bd2e Wrap StockDetail test in MemoryRouter to provide Link context; mock useLoaderData remains 2026-05-16 13:57:30 +02:00
henry 5bb41a50dc Fix TradingViewChart test mocks (timeScale) and add UI test for executionPlan rendering in StockDetail
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 13:55:06 +02:00
henry b9711f2517 Display executionPlan in UI; add tests for Trader executionPlan parsing and TradingGraph execution step
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 13:53:04 +02:00
henry 17c9ee27c0 Show full company name in most-actives API; ensure name column displays canonical company name
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-16 13:41:44 +02:00
henry 56ad0593ad feat: replace StockViewer with MostActiveStocks on stocks page 2026-05-16 12:47:44 +02:00
henry 19b098393a feat: add most-actives API proxy route 2026-05-16 12:39:27 +02:00
henry 15e49cb0f9 feat(tests): update Alpaca API tests to include range parameters and improve stock database cleanup
Run Tests / test (push) Failing after 8s
- Modified Alpaca Historical Bars tests to include range parameters in API requests.
- Updated test descriptions for clarity.
- Added cleanup step to delete test ticker after verification in stock database tests.
- Adjusted Vitest configuration to exclude test files from coverage.
2026-05-14 16:46:28 +02:00
henry cc22174b78 Add tests for Alpaca Historical Bars API
- Implemented tests for fetching historical bars for AAPL with different timeframes (1D, 5Min, 1H).
- Verified response structure and data integrity for each timeframe.
- Ensured that the API returns valid data and appropriate status for the requests.
2026-05-14 12:50:14 +02:00
henry d1a84325ae fix: pass bars data to TradingView chart correctly
- Include bars in loader response
- Convert timestamp to YYYY-MM-DD format for TradingView
- Fix error response to always include bars array
2026-05-14 11:23:33 +02:00