Skip to content

feat(desktop): comprehensive UI polish — design system, animations, and theme overhaul#2535

Closed
HUQIANTAO wants to merge 2 commits into
esengine:main-v2from
HUQIANTAO:feat/desktop-ui-polish
Closed

feat(desktop): comprehensive UI polish — design system, animations, and theme overhaul#2535
HUQIANTAO wants to merge 2 commits into
esengine:main-v2from
HUQIANTAO:feat/desktop-ui-polish

Conversation

@HUQIANTAO
Copy link
Copy Markdown
Contributor

@HUQIANTAO HUQIANTAO commented Jun 1, 2026

Summary

A comprehensive visual overhaul of the Reasonix desktop frontend that transforms the UI from a functional-but-raw state into a polished, modern interface. This PR touches the design token system, animation framework, and every major visual component.

fe043c1975a6feee393a753c59a09558 2abd969c9ba12bd81a0a51dea3fa0cc5 90f0de0e4e8701fc78f17f977dd69e60 add20b147424f399590ff1170d1ed22c

Motivation

The desktop shell was functionally complete (chat, commands, sessions, memory, settings, approvals, updates) but lacked visual refinement. The goal is to bring it to a professional-grade aesthetic comparable to tools like Cherry Studio, Cursor, and Continue.


Changes

Design Token System (styles.css:root variables)

Surface palette (dark theme)

  • Replaced pure-black #0e0e10 with a deep blue-purple #1a1a2e, creating a softer, more layered dark environment
  • Full surface ramp restyled: --bg-soft (#22223a), --bg-elev (#2a2a45), --bg-elev-2 (#33335a)
  • Border colors shifted to match the blue-purple undertone (--border: #3a3a5c)

Surface palette (light theme)

  • Moved from warm yellowish gray (#faf9f7) to cooler neutral gray (#f5f5f7)
  • Refined border and elevated surface tones for better contrast hierarchy

Text hierarchy

  • Introduced three-level text tokens: --fg-1 (primary), --fg-2 (secondary), --fg-3 (tertiary/metadata)
  • Dark: #e8e8f0 / #a0a0b8 / #6c6c88; Light: #1d1d2a / #52526a / #8888a0

Shadow system

  • Added three-level shadow tokens: --shadow-sm, --shadow-md, --shadow-lg
  • Separate values for dark (heavier) and light (subtle) themes

Radius system

  • Three tiers: --radius-sm (8px), --radius (12px), --radius-lg (16px)
  • Components now reference tokens instead of hardcoded values

Transition system

  • Named easing tokens: --ease-fast (0.12s), --ease (0.2s), --ease-slow (0.3s)
  • Replaces scattered hardcoded durations throughout the stylesheet

Chat-specific tokens

  • --chat-bg-user / --chat-bg-assistant for per-role message backgrounds

Animation System (new)

Six reusable @keyframes + utility classes:

Class Keyframes Purpose
.anim-pulse box-shadow expansion Attention indicators (thinking icon, YOLO dot)
.anim-slide-in translateX(16px) -> 0 Drawer entrance
.anim-slide-up translateY(12px) -> 0 Staggered content reveal
.anim-fade-in opacity 0 -> 1 Backdrop entrance
.anim-scale-in scale(0.96) -> 1 Modal/menu entrance
.breathe opacity oscillation Streaming cursor

Message Area (Message.tsx + styles.css)

User messages

  • Added msg__avatar element: 20x20px rounded square with User icon (Lucide), accent-tinted background
  • Container now has --chat-bg-user background, 1px border, 12px border-radius
  • Hover state: background shifts to --accent-soft, border darkens
  • Rewind button hidden by default, revealed on hover (was always-dim visible)

Assistant messages

  • Removed standalone avatar element (was causing duplicate icon with thinking toggle)
  • Added --chat-bg-assistant background container
  • Message body wrapped in flex container for consistent layout

Message actions toolbar

  • Hidden by default (opacity: 0), revealed on message hover at 60% opacity
  • Full opacity on direct hover for accessibility

Rewind menu

  • Background elevated from --bg-soft to --bg-elev
  • Added anim-scale-in entrance animation
  • Shadow upgraded to --shadow-md

Thinking/Reasoning Indicator (Message.tsx + styles.css)

Icon

  • Replaced ChevronRight with Brain (Lucide) icon
  • Accent-colored with anim-pulse animation while thinking
  • Animation stops and opacity drops to 0.7 when complete

Elapsed time

  • Real-time timer (100ms interval) displayed as X.Xs in monospace
  • Only visible during active thinking phase

Toggle button

  • Upgraded from borderless text to bordered pill (1px border, rounded corners)
  • Hover: background fills, border darkens

Content body

  • Left border changed from --border to --accent-soft
  • Added --bg-soft background fill
  • Rounded corners on right side
  • anim-slide-up entrance animation

Streaming Cursor

  • Width reduced from 7px block to 2px line
  • Animation changed from stepped blink to smooth breathe (1.4s ease-in-out)
  • Added box-shadow glow effect with accent color

Tool Cards

  • Icon: 24x24 accent-tinted rounded background square (was bare icon)
  • Running state: added box-shadow glow ring (0 0 0 1px var(--accent-soft))
  • Quiet mode: icon reverts to bare (no background) to maintain subdued appearance
  • Tool name font size increased from 12.5px to 13px
  • Border-radius updated to --radius-sm token

Welcome Screen

  • Logo: 54px -> 72px, border-radius 13px -> 18px, added box-shadow
  • Title: 22px/650 -> 28px/700, increased letter-spacing
  • Tagline: 13.5px -> 15px
  • Background: added radial-gradient with accent-tinted soft glow
  • Staggered anim-slide-up entrance on all elements (logo -> title -> tagline -> hints -> examples, 50ms intervals)
  • Example cards: hover lifts with translateY(-1px) + --shadow-sm
  • Keyboard shortcut badges: added subtle box-shadow

Composer (Input Area)

  • Focus state: border color changes to accent, adds 0 0 0 2px accent glow ring
  • Send button: 30px -> 34px, added --shadow-sm, hover scales to 1.05 with --shadow-md
  • Stop button: added shadow, hover scales to 1.05
  • Disabled state: shadow removed, hover scale disabled
  • Mode indicator: font size 11.5px -> 12px, hover lifts with translateY(-1px)
  • YOLO mode dot: added anim-pulse animation

Drawers & Modals

Drawers

  • Backdrop opacity reduced from 40% to 35%
  • Added anim-fade-in on backdrop
  • Replaced custom drawer-in keyframe with shared anim-slide-in
  • Shadow upgraded to --shadow-lg

Modals

  • Backdrop opacity reduced from 55% to 40%
  • Added anim-fade-in on backdrop
  • Added anim-scale-in entrance on modal body
  • Shadow upgraded to --shadow-lg
  • Border-radius and padding updated to token values

Scrollbar

  • Width reduced from 10px to 6px
  • Replaced solid --border thumb with semi-transparent overlay (dark: rgba(255,255,255,0.15), light: rgba(0,0,0,0.12))
  • Hover state: opacity increases (dark: 0.28, light: 0.22)
  • Border-radius increased to 10px for smoother appearance
  • Dedicated --scrollbar-thumb / --scrollbar-thumb-hover tokens with theme-aware values

Status Bar

  • Busy dot: replaced custom pulse keyframe with shared anim-pulse

Chip (Header Buttons)

  • Height increased from 26px to 28px
  • Border-radius updated to --radius-sm token
  • Hover: translateY(-1px) micro-lift
  • Padding increased slightly for better touch target

Files Changed

File Lines Description
desktop/frontend/src/styles.css +460 / -162 Design tokens, animations, all component styles
desktop/frontend/src/components/Message.tsx +89 / -44 Avatar, thinking animation, elapsed timer

Testing

  • Built with wails build on macOS arm64
  • Verified dark and light themes
  • Confirmed thinking animation (pulse + elapsed timer) renders correctly
  • Verified user message bubbles with avatar display
  • Confirmed scrollbar styling in both themes
  • Tested drawer/modal entrance animations
  • Verified streaming cursor breathe effect

@github-actions github-actions Bot added the v2 Go rewrite (1.x) — main-v2 branch, active development label Jun 1, 2026
@HUQIANTAO HUQIANTAO changed the title feat(desktop): UI polish — message bubbles, animations, theme overhaul feat(desktop): comprehensive UI polish — design system, animations, and theme overhaul Jun 1, 2026
@HUQIANTAO HUQIANTAO force-pushed the feat/desktop-ui-polish branch from 1cdd7dc to 751771f Compare June 1, 2026 07:25
@SivanCola
Copy link
Copy Markdown
Collaborator

附个截图看看

@HUQIANTAO
Copy link
Copy Markdown
Contributor Author

Hi @SivanCola — 感谢 review 🙏

PR description 里其实已经附了 4 张图(暗/亮主题、message area、tool cards、welcome screen),覆盖了主要改动区域。如果想看某个具体区域的新效果,可以告诉我具体哪个(drawer 进入动画?streaming cursor 的 breathe?thinking 的 pulse?),我再补。

另外:当前这个 PR 在 rebase 后冲突,需要先把冲突解决(详见下一个 comment)。

@HUQIANTAO HUQIANTAO force-pushed the feat/desktop-ui-polish branch from 9ce4026 to 8a1c640 Compare June 5, 2026 01:47
@esengine
Copy link
Copy Markdown
Owner

esengine commented Jun 6, 2026

Thanks for the work here. This PR currently has an empty diff (0 files changed, +0/-0): the two commits add and then remove a screenshot, cancelling each other out, and the styles.css / Message.tsx changes described in the PR body were never committed. Closing as there is nothing to merge. If you would like to land the UI polish, please open a fresh PR with the actual changes against the latest main-v2. Thank you!

@esengine esengine closed this Jun 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

v2 Go rewrite (1.x) — main-v2 branch, active development

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants