From 1994821acfcea0c08b8c433e12116e09838db288 Mon Sep 17 00:00:00 2001 From: Saravana Achu Mac Date: Fri, 8 May 2026 20:58:00 -0700 Subject: [PATCH] Polish trading UI and add launch roadmap --- .npmrc | 7 +- .pnpmfile.cjs | 8 +- docs/LAUNCH_READY_UI_UX_ROADMAP.md | 398 +++++ package.json | 9 +- pnpm-lock.yaml | 10 +- web/package.json | 14 +- web/src/App.css | 60 +- web/src/App.tsx | 18 +- web/src/components/AlertFeed.css | 26 +- web/src/components/AlertFeed.tsx | 24 +- web/src/components/layout/AppShell.tsx | 40 +- web/src/components/layout/Header.tsx | 6 +- web/src/components/layout/RightPanel.tsx | 93 +- web/src/components/layout/Sidebar.tsx | 74 +- web/src/components/theme/ThemeProvider.tsx | 4 +- web/src/components/ui/Primitives.tsx | 34 +- web/src/components/ui/button.tsx | 47 +- web/src/components/ui/card.tsx | 10 +- web/src/components/ui/page-header.tsx | 8 +- web/src/index.css | 1777 +++++++++++++++++++- web/src/main.tsx | 1 + web/src/tabs/EntriesTab.dom.test.tsx | 8 +- web/src/tabs/EntriesTab.tsx | 148 +- web/src/tabs/MyStrategiesTab.tsx | 142 +- web/src/tabs/SettingsTab.tsx | 19 +- web/src/tabs/TabSuite.test.ts | 6 +- web/src/views/HomeView.tsx | 113 +- web/src/views/MarketsView.tsx | 4 +- web/src/views/PortfolioView.tsx | 6 +- web/src/views/ResearchView.tsx | 14 +- web/src/views/ScreenerView.tsx | 62 +- web/src/views/SettingsView.tsx | 18 +- web/src/views/SimpleView.tsx | 67 +- web/tsconfig.app.json | 21 + web/vite.config.ts | 22 +- 35 files changed, 2653 insertions(+), 665 deletions(-) create mode 100644 docs/LAUNCH_READY_UI_UX_ROADMAP.md diff --git a/.npmrc b/.npmrc index eddfb6c..6c2b9be 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,2 @@ -@bytelyst:registry=https://gitea.bytelyst.com/api/packages/ByteLyst/npm/ -# Gitea auth tokens belong in user-level ~/.npmrc or CI secrets, and are only needed -# when BYTELYST_PACKAGE_SOURCE=gitea. -# Gitea returns Docker-internal tarball URLs (172.17.0.1:3300); rewrite host to the public URL -replace-registry-host=always +link-workspace-packages=true +prefer-workspace-packages=true diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs index d0a917e..4f43d27 100644 --- a/.pnpmfile.cjs +++ b/.pnpmfile.cjs @@ -2,7 +2,8 @@ const fs = require('node:fs'); const path = require('node:path'); const PACKAGE_SCOPE = '@bytelyst/'; -const PACKAGE_SOURCE = process.env.BYTELYST_PACKAGE_SOURCE || 'common-plat'; +const requestedPackageSource = process.env.BYTELYST_PACKAGE_SOURCE || 'common-plat'; +const PACKAGE_SOURCE = requestedPackageSource === 'vendor' ? 'vendor' : 'common-plat'; const DEFAULT_COMMON_PLAT_ROOTS = [ path.resolve(__dirname, '..', 'learning_ai_common_plat'), '/opt/bytelyst/learning_ai_common_plat', @@ -70,11 +71,6 @@ function resolveSpecifier(name) { return packagePath ? `file:${packagePath}` : null; } - if (PACKAGE_SOURCE === 'gitea') { - const version = resolveRegistryVersion(name); - return version ?? null; - } - const vendorPath = pathIfPackageExists(VENDOR_PACKAGES_ROOT, name); if (vendorPath) { return `file:${vendorPath}`; diff --git a/docs/LAUNCH_READY_UI_UX_ROADMAP.md b/docs/LAUNCH_READY_UI_UX_ROADMAP.md new file mode 100644 index 0000000..651226e --- /dev/null +++ b/docs/LAUNCH_READY_UI_UX_ROADMAP.md @@ -0,0 +1,398 @@ +# Launch-Ready UI/UX Roadmap + +Last updated: 2026-05-08 + +## Purpose + +This roadmap defines the path to make the trading web product feel modern, coherent, professional, and launch-ready across the entire app. It covers the product frontend in `learning_ai_invt_trdg` and the shared UI/design-system foundation in `learning_ai_common_plat`. + +The goal is not another styling pass. The goal is a stable product-quality experience with reusable platform components that can be applied to this product and future ByteLyst products. + +## Product Standard + +The target experience is a polished operational SaaS console for trading workflows: + +- Calm, readable, premium, and practical. +- Dense enough for portfolio/trading operations without feeling cramped. +- Consistent component behavior across all routes. +- Clear primary actions and obvious next steps. +- Strong loading, empty, error, disabled, and success states. +- Responsive across desktop, tablet, and phone without broken menus, overflow, or hidden content. +- Accessible by keyboard and readable under normal contrast settings. + +## Current State Summary + +The app is functional, but launch readiness is blocked by inconsistent UI systems: + +- The shared platform primitives exist, but many product screens still use raw page-specific styling. +- `web/src/index.css` and `web/src/App.css` carry too much global/product-specific behavior. +- Complex screens such as Trade Plans, Portfolio, Backtesting, Settings/Admin, Visual Builder, and Code Editor still contain legacy visual patterns. +- Tables, cards, badges, timeline steps, forms, tabs, alerts, and empty states do not yet fully share one design language. +- Some routes look modern after recent improvements, while deeper states still look like developer tooling. +- Responsive behavior has improved, but the shell still needs a formal contract for desktop/tablet/phone. +- Global overlays such as critical alerts and the assistant widget need collision rules. + +## Guiding Principles + +1. Centralize primitives in common platform. +2. Compose product screens from approved primitives. +3. Prefer quiet utility over decorative UI. +4. Keep cards for bounded tools/items, not every page section. +5. Use semantic colors only for meaning: success, warning, danger, info. +6. Use monospace only for symbols, prices, IDs, and technical values. +7. Avoid raw HTML controls in product screens unless wrapped by a shared primitive. +8. Every user-facing state needs loading, empty, error, disabled, and success treatment. +9. Every route must pass responsive, accessibility, and overflow checks before launch. + +## Phase 0: Stop UI Drift + +Objective: prevent new inconsistent UI while remediation is underway. + +Scope: + +- Expand `pnpm audit:ui` to flag: + - raw `