Skip to content

UI: warm two-tone (Codex-style) theme refresh + chat/sidebar polish#8

Merged
Broccolito merged 14 commits into
mainfrom
redesign/codex-warm-theme
Jul 3, 2026
Merged

UI: warm two-tone (Codex-style) theme refresh + chat/sidebar polish#8
Broccolito merged 14 commits into
mainfrom
redesign/codex-warm-theme

Conversation

@Broccolito

Copy link
Copy Markdown
Collaborator

Summary

A warm, Codex-inspired refresh of the desktop GUI — a subtly two-tone canvas (a distinct warm-beige sidebar against a lighter content area), flattened surfaces, and a handful of polish fixes — while preserving BioRouter's warm cream identity. The change is token-centric (ui/desktop/src/styles/main.css), so it cascades across every view and mirrors automatically in dark mode.

What changed

Two-tone canvas

  • Decoupled --sidebar from --background-muted into its own warm-beige surface (#f3ede1), with dedicated --sidebar-hover / --sidebar-active tokens (light + dark) so hover/active feedback doesn't invert when the surface deepens.
  • Replaced the sidebar shell's heavy right-edge drop shadow with a 1px hairline — the tone difference already separates it.

Flat / minimal harmonization (every screen + popups)

  • Removed off-policy elevation shadows from list rows, settings rows, app cards, and knowledge-panel controls (surfaces-over-elevation: borders, not shadows).
  • Added the missing flat page-header dividers on Knowledge & Settings; fixed the Skills header divider overshoot.
  • Defined the previously-undefined --text-subtle / --color-text-subtle token so de-emphasized metadata (Scheduler/Applications/Workflows) renders muted instead of full-dark.
  • Reduced coral-accent overuse (e.g. the Knowledge dropzone drag state); harmonized dialogs/dropdowns/Diagnostics to warm surface tokens + the popover shadow token; applied the mono metric scale to Home stats.

Chat + composer polish

  • Warmed the chat canvas from stark white to the same bg-background-muted off-white every other view uses (via MainPanelLayout); the bordered white composer now reads as a raised surface on top.
  • Gave the floating composer a visible hairline border + a dedicated, very subtle --shadow-composer lift.

Layout fixes

  • Squared off the main content panel so it sits flush against the straight, full-height sidebar (removed the inset-variant rounded-xl + shadow-sm that left a corner notch).
  • Fixed the collapsed-sidebar top strip: offset the session-name pill so it clears the macOS traffic lights + floating controls, and shrank its -webkit-app-region: drag wrapper so it no longer swallows the controls' clicks (app-region is resolved by compositor paint order, not z-index).

Verification

Driven live against the running dev app across all 11 screens + key popups, light and dark mode; zero renderer console errors; prettier + eslint clean on all touched files.

Follow-up (not in this PR)

An accessibility/correctness audit surfaced 41 verified findings (e.g. the Home <h1> greeting split into per-character spans with no aria-label; the Skills enable/disable Switch lacking an accessible name; hover-only row actions with no keyboard focus fallback; session-list rows not keyboard-openable). These were deliberately kept out of this theme PR and are tracked for a dedicated a11y pass.

Broccolito added 14 commits July 2, 2026 16:21
Decouple --sidebar from --background-muted so the sidebar reads as a
distinct, slightly deeper warm-beige surface against the lighter main
canvas — a Codex-style two-tone layering kept low-contrast and warm so it
never looks glaring. Add dedicated --sidebar-hover/--sidebar-active tokens
(light + dark) and point the sidebar nav item + running-chat hover/active
states at them, so deepening the surface doesn't invert the hover/active
feedback. Main canvas, cards, and the coral accent are unchanged.
…text-subtle

- Drop the elevation box-shadow on list-row and settings-row hover/focus so
  rows indicate state with background only (surfaces-over-elevation policy).
- Replace the sidebar shell's heavy right-edge drop shadow with a 1px hairline
  in the sidebar-border token — the new two-tone surface already separates it.
- Define the previously-undefined --text-subtle / --color-text-subtle token
  (light + dark) so de-emphasized metadata (Scheduler/Applications/Workflows
  'Created/Updated/model' rows) renders muted instead of full-dark.
Add the missing flat page-header bottom border; replace inline rgba box-shadows
on the graph panel, toolbar buttons, ingest/paste boxes, model picker and KB
selector with border-border-subtle; reduce coral overuse on the dropzone
drag-active state to a neutral fill + subtle 1px accent border. Graph canvas
color scale left untouched (canvas can't consume CSS tokens).
Add the mandated header bottom-border divider and description; align section
labels (Models/Chat/App tabs) from text-xs to the text-[11px] token size.
Neutralize off-policy card/row box-shadows to borders across the list views and
their modals; keep behavior and hover-reveal logic unchanged.
Remove app-grid card hover elevation (border-only); apply the metric type scale
(text-3xl font-mono font-light) to the Home Sessions/Tokens totals; flatten
FoldedCard's inline shadow to a token border.
…nsions highlight

Constrain the Skills header divider to the ReadableContent inset so it no longer
overshoots; give the onboarding model selects a focus affordance + subtle border;
swap the extensions deep-link highlight's hard-coded blue shadow for a soft coral ring.
Point the floating composer at var(--shadow-default) instead of hard-coded rgba;
give Diagnostics semantic text/bg tokens instead of neutral-*/black; align
dropdown submenu radius/padding with the parent menu.
The composer had a transparent border and the very-light --shadow-default, so its
edge nearly vanished against the white canvas. Give it a warm hairline
border-border-subtle and a dedicated --shadow-composer token (a hair more lift than
--shadow-default, warm-tinted) so the chat box reads as a distinct, gently raised
surface — kept deliberately subtle. New token, not a change to the shared
--shadow-default (which the base Card also uses).
…idebar

The inset-variant main content carried rounded-xl + shadow-sm; with the flush,
full-height square sidebar that left a rounded notch where the two met. Drop the
corner radius and floating shadow so the content butts cleanly against the sidebar.
BaseChat's coherent-mode chat panel, sticky header, and composer bar hard-coded
bg-background-default (pure white) while every other view renders on
bg-background-muted (#faf8f3) via MainPanelLayout — so the chat read as a stark
white slab. Point them at bg-background-muted so the chat is the same elegant
off-white; the bordered white composer input now reads as a raised surface on
top. Warm the three remaining full-screen white pages (provider gate, permission
page, schedule detail) for the same consistency.
When the sidebar retracts, the chat goes full-width and the session-name pill slid
to x~16 — directly over the macOS traffic lights (x20-85) and crowding the floating
top controls (which end at x172). Add a collapsed-state left offset to the pill
(pl-[184px] on macOS to clear traffic lights + controls, pl-[104px] elsewhere) via
the already-available useSidebar() state, so the top strip reads cleanly:
traffic-lights -> controls -> session name. Expanded layout is unchanged (pl-4).
… chat

The chat's session-name pill wrapper is a full-width -webkit-app-region: drag
surface (so the header strip drags the window). When the sidebar collapsed, the
chat went full-width and that drag surface covered the floating top controls
(sidebar toggle / new-window / dashboard). -webkit-app-region is resolved by the
compositor in paint order, not z-index, so the drag surface swallowed the
controls' real mouse clicks even though they are higher-z no-drag buttons — the
buttons looked active but did nothing. Shrink the pill wrapper to w-fit and offset
it past the controls with a margin when collapsed so it no longer overlaps them;
only the standard base .titlebar-drag-region (which every other screen's controls
already sit over) remains. Expanded layout is unchanged.
@Broccolito Broccolito merged commit 9a5b975 into main Jul 3, 2026
2 checks passed
@Broccolito Broccolito deleted the redesign/codex-warm-theme branch July 3, 2026 00:30
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