From 668443050ec22f5887d0e0deb82aed9fb8c3d9e7 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 7 May 2026 05:30:20 +0000 Subject: [PATCH] docs(ui): update migration roadmap status --- docs/UI_UX_PLATFORM_CORE_MIGRATION_ROADMAP.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/UI_UX_PLATFORM_CORE_MIGRATION_ROADMAP.md b/docs/UI_UX_PLATFORM_CORE_MIGRATION_ROADMAP.md index fcbea2c..a4af52d 100644 --- a/docs/UI_UX_PLATFORM_CORE_MIGRATION_ROADMAP.md +++ b/docs/UI_UX_PLATFORM_CORE_MIGRATION_ROADMAP.md @@ -82,7 +82,7 @@ Note: common platform had a pre-existing local modification in `packages/ui/src/ | [x] | 9. Advanced product-specific surfaces | product | Migrated Visual Strategy Builder controls to adapter Select/Input/Button/IconButton primitives while keeping dnd-kit composition and strategy rule logic product-owned. | Passed: `pnpm --filter @bytelyst/trading-web exec vitest run src/components/strategy/VisualRuleBuilder.dom.test.tsx`; `pnpm --filter @bytelyst/trading-web typecheck`; `pnpm run audit:ui`; `git diff --check`. | `bb4efc2b0d5f8e2ebbd7487b5731e0e6446ec4fb` | Audit raw controls reduced from 17 to 13. Charts, rule semantics, and strategy execution remain product-owned. | | [x] | 10. Audit tooling hardening | product | Replaced brittle `rg`-based shell counting with a portable Python audit that excludes approved UI/test surfaces and reports non-zero raw controls reliably. | Passed: `pnpm run audit:ui`; `pnpm --filter @bytelyst/trading-web typecheck`; `git diff --check`. | `9ea72f7` | Audit now reports 0 direct `@bytelyst/ui` imports outside the adapter and no false-zero dependency on local `rg`. | | [x] | 11. Remaining raw-control migration | product | Migrated remaining production raw controls in portfolio, screener, simple trade plan, chat, settings, and entries surfaces to adapter primitives while preserving trading workflow behavior. | Passed: `pnpm --filter @bytelyst/trading-web exec vitest run src/tabs/SettingsTab.dom.test.tsx src/tabs/EntriesTab.dom.test.tsx`; `pnpm --filter @bytelyst/trading-web typecheck`; `pnpm run audit:ui`; `git diff --check`. | `324e34d`, `7f5f125` | Audit raw interactive controls outside approved primitives reduced to 0. `EntriesTab.tsx` line endings were normalized to satisfy `git diff --check`. | -| [~] | 12. Legacy global cleanup and strict audit | product | Removed unused global `.badge` CSS, removed legacy `SymbolCard` badge selectors, preserved adapter `Badge`/`ProductStatusBadge` usage, tightened legacy-class audit so product token names such as `--bl-surface-card` are not false positives, tokenized reset-password auth surface colors, eliminated hardcoded color literals from `App.css` and `AlertFeed.css`, tokenized `SettingsTab` role/status colors, added shared surface/text aliases to migrate `Login`, `ProductAccessibilityGate`, `LivePulseTicker`, and `AdminTab` off raw hex/rgba operational surface colors, typed the remaining simple form/chat/positions visual-builder change handlers so trivial implicit-`any` errors no longer block `tsc`, reconciled `web/src/components/ui/Primitives.tsx` to the actual linked `@bytelyst/ui` export surface while keeping product-only variants and control sizing local to the adapter, converted `OverviewTab` status/warning/consumer-card color debt onto existing theme variables and `color-mix(...)` surfaces, migrated `SymbolCard.css` surface/status styling from raw hex/rgba values onto shared theme variables, moved `TradeProfileManager` rule/summary/status palette literals onto shared CSS variables and `color-mix(...)` accents, and tokenized `HomeView` shell/error/earnings status plus `Header`/`RightPanel`/`Sidebar` shell status literals while intentionally leaving chart-indicator palette values product-owned for now. | Passed: `pnpm run audit:ui`; `pnpm --filter @bytelyst/trading-web typecheck`; `pnpm --filter @bytelyst/trading-web lint`; `pnpm --filter @bytelyst/trading-web build`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/Login.dom.test.tsx src/App.dom.test.tsx src/components/ComponentsSmoke.test.ts src/tabs/SettingsTab.dom.test.tsx src/tabs/EntriesTab.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/tabs/OverviewTab.dom.test.tsx src/tabs/OverviewTab.test.ts src/App.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/ComponentsSmoke.test.ts src/tabs/TabSuite.test.ts`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/TradeProfileManager.test.ts src/components/TradeProfileManager.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/views/HomeView.dom.test.tsx src/components/layout/Header.dom.test.tsx src/components/layout/AppShell.dom.test.tsx`; `git diff --check`; `BYTELYST_PACKAGE_SOURCE=common-plat pnpm install -r --no-frozen-lockfile --offline`; `pnpm --filter @bytelyst/ui build` (in `/opt/bytelyst/learning_ai_common_plat`). Earlier passed in this phase: `pnpm --filter @bytelyst/trading-web test`; `pnpm --filter @bytelyst/trading-web exec vitest run src/components/ResetPassword.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/App.dom.test.tsx src/views/HomeView.dom.test.tsx src/components/AlertFeed.dom.test.tsx src/components/ComponentsSmoke.test.ts src/tabs/OverviewTab.test.ts`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/tabs/SettingsTab.dom.test.tsx`. | `5f38ada`, `e4c4c60`, `6091f24`, `8f707e0`, `7375ad6`, `eef63cb`, `35fbe87`, `a230679`, `902523d`, `931a3cd`, `4802f02` | Audit now reports 0 raw production controls, 0 legacy global surface classes, 0 direct common-UI imports outside the adapter, and 204 hardcoded color literals. The adapter/common-package API divergence blocker is resolved for the current common-platform checkout by narrowing the product adapter to the real shared export surface and owning product-only variants locally. Strict audit remains deferred until the remaining literal clusters are tokenized or explicitly allowlisted. | +| [~] | 12. Legacy global cleanup and strict audit | product | Removed unused global `.badge` CSS, removed legacy `SymbolCard` badge selectors, preserved adapter `Badge`/`ProductStatusBadge` usage, tightened legacy-class audit so product token names such as `--bl-surface-card` are not false positives, tokenized reset-password auth surface colors, eliminated hardcoded color literals from `App.css` and `AlertFeed.css`, tokenized `SettingsTab` role/status colors, added shared surface/text aliases to migrate `Login`, `ProductAccessibilityGate`, `LivePulseTicker`, and `AdminTab` off raw hex/rgba operational surface colors, typed the remaining simple form/chat/positions visual-builder change handlers so trivial implicit-`any` errors no longer block `tsc`, reconciled `web/src/components/ui/Primitives.tsx` to the actual linked `@bytelyst/ui` export surface while keeping product-only variants and control sizing local to the adapter, converted `OverviewTab` status/warning/consumer-card color debt onto existing theme variables and `color-mix(...)` surfaces, migrated `SymbolCard.css` surface/status styling from raw hex/rgba values onto shared theme variables, moved `TradeProfileManager` rule/summary/status palette literals onto shared CSS variables and `color-mix(...)` accents, tokenized `HomeView` shell/error/earnings status plus `Header`/`RightPanel`/`Sidebar` shell status literals while intentionally leaving chart-indicator palette values product-owned for now, and migrated shared `PriceChart` shell, tooltip, axis, empty-state, and up/down color usage onto shared theme variables so the chart widget no longer contributes raw UI surface debt. | Passed: `pnpm run audit:ui`; `pnpm --filter @bytelyst/trading-web typecheck`; `pnpm --filter @bytelyst/trading-web lint`; `pnpm --filter @bytelyst/trading-web build`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/Login.dom.test.tsx src/App.dom.test.tsx src/components/ComponentsSmoke.test.ts src/tabs/SettingsTab.dom.test.tsx src/tabs/EntriesTab.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/tabs/OverviewTab.dom.test.tsx src/tabs/OverviewTab.test.ts src/App.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/ComponentsSmoke.test.ts src/tabs/TabSuite.test.ts`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/TradeProfileManager.test.ts src/components/TradeProfileManager.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/views/HomeView.dom.test.tsx src/components/layout/Header.dom.test.tsx src/components/layout/AppShell.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/components/PriceChart.dom.test.tsx src/components/ComponentsSmoke.test.ts`; `git diff --check`; `BYTELYST_PACKAGE_SOURCE=common-plat pnpm install -r --no-frozen-lockfile --offline`; `pnpm --filter @bytelyst/ui build` (in `/opt/bytelyst/learning_ai_common_plat`). Earlier passed in this phase: `pnpm --filter @bytelyst/trading-web test`; `pnpm --filter @bytelyst/trading-web exec vitest run src/components/ResetPassword.dom.test.tsx`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/App.dom.test.tsx src/views/HomeView.dom.test.tsx src/components/AlertFeed.dom.test.tsx src/components/ComponentsSmoke.test.ts src/tabs/OverviewTab.test.ts`; `TMPDIR="$PWD/.tmp/vitest" pnpm --filter @bytelyst/trading-web exec vitest run src/tabs/SettingsTab.dom.test.tsx`. | `5f38ada`, `e4c4c60`, `6091f24`, `8f707e0`, `7375ad6`, `eef63cb`, `35fbe87`, `a230679`, `902523d`, `931a3cd`, `4802f02`, `1b9efca` | Audit now reports 0 raw production controls, 0 legacy global surface classes, 0 direct common-UI imports outside the adapter, and 193 hardcoded color literals. The adapter/common-package API divergence blocker is resolved for the current common-platform checkout by narrowing the product adapter to the real shared export surface and owning product-only variants locally. Strict audit remains deferred until the remaining literal clusters are tokenized or explicitly allowlisted. | ## Remaining Work @@ -110,8 +110,8 @@ git pull --rebase origin main Then read this file end-to-end and continue phase 12 from the current baseline: - **Current phase**: 12. Legacy global cleanup and strict audit. -- **Current audit baseline**: 0 direct `@bytelyst/ui` imports outside the adapter, 0 raw production controls outside approved primitives, 0 legacy global surface classes, and 204 hardcoded color literals. -- **Next focus**: decide the remaining chart/domain-color strategy, then burn down `components/PriceChart.css`, `components/PriceChart.tsx`, `views/HomeView.tsx` chart palette, and other residual UI literals while explicitly preserving legitimate trading/chart semantic colors through tokenization or allowlisting. +- **Current audit baseline**: 0 direct `@bytelyst/ui` imports outside the adapter, 0 raw production controls outside approved primitives, 0 legacy global surface classes, and 193 hardcoded color literals. +- **Next focus**: decide the remaining chart/domain-color strategy, then burn down `views/HomeView.tsx` chart palette, `backtest/components/BacktestResultsDashboard.tsx`, `components/strategy/CodeStrategyEditor.tsx`, `components/strategy/VisualRuleBuilder.tsx`, and other residual UI literals while explicitly preserving legitimate trading/chart semantic colors through tokenization or allowlisting. - **Verification after each slice**: run `pnpm run audit:ui`, targeted DOM tests for touched files, `pnpm --filter @bytelyst/trading-web typecheck`, and `git diff --check`; add `pnpm --filter @bytelyst/trading-web lint`, targeted Vitest slices, and `pnpm --filter @bytelyst/trading-web build` before major commits or adapter-related changes. - **Roadmap update requirement**: after every implementation commit, update the roadmap row/checkboxes with the new status, final audit counts, exact verification commands, commit hash, and any deferrals or environment blockers. - **Commit/push rule**: keep commits small and scoped, push each completed slice, then update this document in a follow-up docs commit so the next agent can resume without reconstructing context.