Skip to content

feat: refresh observer dashboard brand styling#107

Merged
willwashburn merged 14 commits intomainfrom
noodle/relaycast-brand-refresh
Mar 26, 2026
Merged

feat: refresh observer dashboard brand styling#107
willwashburn merged 14 commits intomainfrom
noodle/relaycast-brand-refresh

Conversation

@noodleonthecape
Copy link

Summary

  • align the observer dashboard with the refreshed Agent Relay cloud brand system
  • introduce shared semantic brand tokens and glass/light surface styling
  • keep console-heavy views on darker operator surfaces for logs, activity, and telemetry

What changed

  • rewrote observer global theme tokens around the shared blue/stone/warm palette
  • refreshed login, loading, dashboard shell, sidebar, chat feed, thread panel, and agent profile surfaces
  • updated console tabs/feed/activity styling to use dark console panels with branded accents
  • polished avatars, pills, and message cards to fit the shared visual system

Validation

  • npm run build --workspace=@relaycast/observer-dashboard
  • npx tsc -p packages/observer-dashboard/tsconfig.json --noEmit

@github-actions
Copy link

Preview deployed!

Environment URL
API https://pr107-api.relaycast.dev
Health https://pr107-api.relaycast.dev/health
Observer https://pr107-observer.relaycast.dev/observer

This preview shares the staging database and will be cleaned up when the PR is merged or closed.

Run E2E tests

npm run e2e -- https://pr107-api.relaycast.dev --ci

Open observer dashboard

https://pr107-observer.relaycast.dev/observer

Noodle and others added 12 commits March 25, 2026 13:42
Apply and persist light/dark theme early to avoid flash-of-unstyled-theme: add an inline themeScript in RootLayout that reads localStorage (agentrelay-theme) and sets html dataset/class/color-scheme. Introduce html[data-theme] handling and transitions in globals.css, adjust many CSS variables and background gradients for both light and dark themes to improve visual consistency. Update AgentSidebar to default to dark on server, respect html.dataset.theme, toggle dataset/color-scheme, persist changes to localStorage, and use a short transition class when switching themes.
Remove the 'Observer' brand pill and the 'Enter observer' h1 from packages/observer-dashboard/src/app/login/page.tsx to simplify the login UI and clean up the header layout.
Switch console color variables from a dark to a light palette in globals.css. Add an AgentRelayWordmark SVG component and replace the previous sidebar brand/title markup in AgentSidebar.tsx (also remove a small descriptive paragraph). Tweak ConsolePanel copy to shorten the console description. These changes update branding and move the console surfaces to a light-themed style.
ConsolePanel: replace the inline pill-style tab buttons with a compact <select> dropdown (styled) and add a ChevronDown icon for the dropdown indicator. Simplified TAB_OPTIONS to only include id/label (removed per-tab icons), updated change handler to use select value, and added an aria-label for accessibility. Also changed the default active tab from 'feed' to 'activity'.
Delete the top header block ("Observer console" label, "Realtime operations" h2, and descriptive paragraph) in ConsolePanel.tsx along with its enclosing wrapper. This simplifies the panel header/layout and reduces visual clutter; no functional behavior was changed.
Introduce responsive mobile panes and styling hooks across the dashboard. Components (AgentPanel, AgentSidebar, ConsolePanel, ThreadPanel) now accept an optional className and use cn to merge classes. DashboardLayout gains mobilePane state, a compact mobile UI with MobilePaneButton, StreamBanner, and renderRightPanel to render AgentPanel/ThreadPanel/ConsolePanel with passed className; it also auto-switches to details on agent/thread selection. Minor UI tweaks (select width, sidebar spacing) to improve mobile/desktop behavior.
Add a className prop to ChatFeed and use the shared cn helper to merge it into the root section. Also adjust DashboardLayout container div to include the missing flex class and pass className="h-full" to the AgentSidebar so it stretches to full height. These tweaks enable external styling and correct layout sizing for the sidebar.
Remove responsive column classes from AgentMetricsCards so the metrics use a single grid layout (removed sm:grid-cols-2 and xl:grid-cols-3). Reorder TAB_OPTIONS in ConsolePanel to place Activity and Costs before Feed and Metrics, updating the tab display order in the UI.
@willwashburn willwashburn merged commit dc95d24 into main Mar 26, 2026
4 checks passed
@willwashburn willwashburn deleted the noodle/relaycast-brand-refresh branch March 26, 2026 04:04
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.

2 participants