Commit Graph

95 Commits

Author SHA1 Message Date
henry 47e48c4902 fix: use useMemo for derived rawSettings and remove unused imports in SystemSettings 2026-05-16 21:14:58 +02:00
henry 8f58caee01 feat: add SystemSettings component with Alpaca mode and raw settings 2026-05-16 21:11:37 +02:00
henry d83620c493 fix: improve StockTable save behavior, accessibility, and structure 2026-05-16 21:09:11 +02:00
henry bf628f67b6 feat: add StockTable component with search, sort, pagination, inline editing 2026-05-16 21:04:09 +02:00
henry 2d6551fd35 fix: improve TradingSettings validation, debounce, accessibility, and cleanup 2026-05-16 21:01:08 +02:00
henry faf642b043 feat: add TradingSettings component with risk management defaults 2026-05-16 20:57:16 +02:00
henry c04f35a1b9 fix: improve LlmSettings types, accessibility, debounce, and defaults 2026-05-16 20:55:03 +02:00
henry 5dca683b88 feat: add LlmSettings component with model, temperature, debate rounds 2026-05-16 20:50:33 +02:00
henry fd47982086 fix: remove unused React import and add aria-current to SettingsSidebar 2026-05-16 20:48:53 +02:00
henry c3886f0925 feat: add SettingsSidebar component with section navigation 2026-05-16 20:45:56 +02:00
henry bf67a93b31 feat: add notes field to stocks API upsert 2026-05-16 20:42:22 +02:00
henry d370412c51 feat(settings): register admin settings API routes\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 20:26:49 +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 9b63d981b0 fix(settings): store JSON as string in DB and parse on read\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 20:18:32 +02:00
henry dba81832c1 feat(settings): add SettingsService with cache and emitter\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 20:11:02 +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 e88deac193 Add API route for price-stream 2026-05-16 18:01:48 +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 3ed894015a 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:19 +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 c900fd8b77 Routes: add api/jobs/:jobId/cancel mapping 2026-05-16 15:05:09 +02:00
henry 2643c472dd Routes: add jobs/:jobId UI route mapping 2026-05-16 15:04:27 +02:00
henry 6c92a6d95a UI: make JobHistory Details an anchor to avoid flaky click in Playwright 2026-05-16 15:03:47 +02:00
henry e7cbb56328 Routes: add api/jobs endpoints and /stocks/:ticker route mapping 2026-05-16 15:02:52 +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 9771f48028 Queue: unify exports; support BullMQ when REDIS_URL set, otherwise in-process fallback 2026-05-16 14:43:52 +02:00
henry 9167bd8912 Queue: support REDIS_URL BullMQ mode; fallback to in-process queue for dev/tests 2026-05-16 14:42:33 +02:00
henry 5f5a48067c Remove QueueScheduler usage (avoid SSR runtime error) 2026-05-16 14:41:06 +02:00
henry 1b31a4a131 Typings: annotate job param as any in queue worker 2026-05-16 14:39:33 +02:00
henry ceb664f56c Fix TS errors: relax bullmq import typing, adjust job loader, and cast chart mock as any 2026-05-16 14:39:00 +02:00
henry 31503624f6 Fix bullmq import for ESM SSR compatibility (use default import) 2026-05-16 14:36:45 +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 eee375ff56 MostActiveStocks: send background flag when triggering analyze\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> 2026-05-16 14:19:45 +02:00