✨ [feature] Desktop UI modernization: Flat, borderless design#92
Conversation
- Replaced outlined borders with filled surfaces across main sections (headers, sidebars, panels). - Updated ChatPanel components (action buttons, chat input container, mode selectors) to use `bg-xibe-surface-raised` borderless styles. - Updated user message bubbles and inline code blocks in MessageBubble.tsx to use borderless flatter backgrounds. - Updated Tailwind config variables in `global.css` to blend sub-surfaces better for a seamless look.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThis PR applies a cohesive visual refresh to the desktop renderer's styling by darkening theme color tokens, removing decorative borders from the main layout structure, and refining interactive component and message rendering styles to achieve a flatter, more minimal appearance. ChangesDesktop UI styling refresh
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Modernizes the desktop renderer’s visual styling toward a flatter, borderless dark UI by adjusting theme tokens and removing/softening border and surface treatments across the main layout and chat components.
Changes:
- Updated global theme tokens to reduce surface separation and make subtle borders less prominent.
- Flattened chat UI elements (mode selector, quick prompts, composer) by removing borders and using raised surfaces.
- Removed header/side panel divider borders and adjusted message/code styling backgrounds.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| packages/desktop/src/renderer/styles/global.css | Adjusts core color tokens for surfaces, hover, and subtle borders to support the flatter theme. |
| packages/desktop/src/renderer/components/MessageBubble.tsx | Updates user bubble styling and changes code/blockquote surface treatments within assistant markdown. |
| packages/desktop/src/renderer/components/ChatPanel.tsx | Flattens mode selector, prompt buttons, and composer container styling (reduced borders/focus styling). |
| packages/desktop/src/renderer/App.tsx | Removes header and side panel border dividers for a more unified layout. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| --color-xibe-surface-hover: #18181b; | ||
| --color-xibe-border: #27272a; | ||
| --color-xibe-border-subtle: #27272a; | ||
| --color-xibe-border-subtle: #18181b; |
| ? "bg-xibe-surface text-xibe-text" | ||
| : "text-xibe-text-dim hover:text-xibe-text hover:bg-xibe-surface" | ||
| ? "bg-xibe-surface-raised text-xibe-text" | ||
| : "text-xibe-text-dim hover:text-xibe-text hover:bg-xibe-surface-raised" |
|
|
||
| {/* Floating Pill input */} | ||
| <div className="relative flex items-end rounded-2xl border border-xibe-border-subtle bg-xibe-bg focus-within:border-xibe-border-focus focus-within:ring-1 focus-within:ring-xibe-border-focus transition-all duration-200"> | ||
| <div className="relative flex items-end rounded-2xl bg-xibe-surface-raised border-none transition-all duration-200"> |
| prose-blockquote:my-4 prose-blockquote:border-l-2 prose-blockquote:border-xibe-border prose-blockquote:pl-4 prose-blockquote:text-xibe-text-dim | ||
| prose-a:text-xibe-text-secondary hover:prose-a:text-xibe-text prose-a:underline prose-a:underline-offset-2 | ||
| prose-strong:text-xibe-text prose-strong:font-semibold | ||
| prose-code:text-xibe-text-secondary prose-code:bg-xibe-surface-raised prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-code:font-medium prose-code:before:content-none prose-code:after:content-none | ||
| prose-code:text-xibe-text-secondary prose-code:bg-xibe-surface prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded-md prose-code:font-medium prose-code:before:content-none prose-code:after:content-none | ||
| prose-h1:text-xl prose-h2:text-lg prose-h3:text-base prose-h1:font-semibold prose-h2:font-semibold prose-h3:font-semibold"> | ||
| <ReactMarkdown | ||
| remarkPlugins={[remarkGfm]} | ||
| components={{ | ||
| pre: ({ children }) => ( | ||
| <pre className="overflow-x-auto rounded-xl bg-xibe-surface-raised p-4 text-[13px] font-mono leading-relaxed my-4">{children}</pre> | ||
| <pre className="overflow-x-auto rounded-xl bg-xibe-surface p-4 text-[13px] font-mono leading-relaxed my-4">{children}</pre> | ||
| ), | ||
| code: ({ className, children }) => { | ||
| const isInline = !className; | ||
| return isInline ? ( | ||
| <code className="rounded-md bg-xibe-surface-raised px-1.5 py-0.5 text-[13px] font-mono text-xibe-text-secondary">{children}</code> | ||
| <code className="rounded-md bg-xibe-surface px-1.5 py-0.5 text-[13px] font-mono text-xibe-text-secondary">{children}</code> | ||
| ) : ( |
🎯 What: Redesigned the desktop React UI to match the modern, minimalist, dark-themed, and borderless design language common in leading AI assistants like Claude Desktop and Cursor.
💡 Why: The previous UI had excessive subtle borders (
border-xibe-border-subtle), prominent outlines on inputs, and distinct container boundaries that made it look slightly segmented. A flatter design improves modern aesthetic appeal.✅ Verification: Verified visually using a Playwright script targeting the local Vite dev server. The resulting screenshots show a unified layout without harsh dividing lines, elevated solid action buttons, and flat input controls. Also passed the full workspace test suite to ensure no logic regressions.
✨ Result: A sleeker, modern UI interface for the desktop app.
PR created automatically by Jules for task 12174502082927007951 started by @iotserver24
Summary by CodeRabbit