Skip to content

ui: frontend design overhaul — layout, consistency, polish#74

Merged
luokerenx4 merged 6 commits intomasterfrom
dev
Mar 19, 2026
Merged

ui: frontend design overhaul — layout, consistency, polish#74
luokerenx4 merged 6 commits intomasterfrom
dev

Conversation

@luokerenx4
Copy link
Contributor

Summary

  • Split DataSourcesPage into separate MarketDataPage (structured data) and NewsPage (RSS/unstructured data) with independent routes and sidebar entries
  • ConfigSection two-column layout — new description-aside component applied to all 7 config pages (Market Data, News, Settings, Connectors, AI Provider, Heartbeat, Tools)
  • Unified button systembtn-primary, btn-secondary, btn-danger CSS utility classes with focus-visible rings, replacing 10+ inconsistent inline styles across pages and components
  • Layout alignment — all pages centered at 880px max-width (was 640-720px left-aligned)

Test plan

  • Visit every page via sidebar — verify layout is centered, two-column on desktop, stacked on mobile
  • /data-sources redirects to /market-data
  • Config pages auto-save works (edit a value → SaveIndicator shows saving → saved)
  • Button styles consistent across all pages (primary = solid accent, secondary = ghost border)
  • Tab navigation shows focus rings on buttons

🤖 Generated with Claude Code

luokerenx4 and others added 6 commits March 19, 2026 01:45
UTA now tracks consecutive broker call failures and derives health state
(healthy → degraded → offline). When offline, broker calls fail fast and
a background recovery loop attempts broker.init() with exponential backoff.
initAccount always registers UTAs (marking offline if init fails) so they
appear in the UI with health indicators instead of silently disappearing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…kOffline

UTA is a business entity that always starts successfully. Broker connection
is an internal concern — _connect() fires from the constructor, goes offline
if it fails, and auto-recovers. initAccount in main.ts no longer calls
broker.init() or distinguishes Alpaca/CCXT — all accounts register
synchronously and connect asynchronously.

Adds dedicated uta-health.spec.ts with TDD coverage for initial connect
failure, exponential backoff recovery, runtime disconnect, and offline
behavior (staging works, push blocked).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Separate structured data (market data) from unstructured data (news)
into independent pages with cleaner UI using Section/Field components.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add ConfigSection component — two-column settings layout with
title/description on the left and controls on the right. Wider
content area (880px, centered) replaces narrow left-aligned 640px.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Consistent two-column description-aside layout across all config
pages. Wider content area (880px centered) replaces 640px left-aligned.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add btn-primary/secondary/danger CSS utility classes with focus-visible
rings. Replace 10+ inline button styles across pages and components.
HeartbeatPage uses ConfigSection two-column layout. Both pages centered
at 880px.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@luokerenx4 luokerenx4 merged commit e009f6f into master Mar 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant