Skip to content

✨ [feature] Desktop UI modernization: Flat, borderless design#92

Merged
iotserver24 merged 1 commit into
mainfrom
ui-redesign-flatter-desktop-12174502082927007951
May 17, 2026
Merged

✨ [feature] Desktop UI modernization: Flat, borderless design#92
iotserver24 merged 1 commit into
mainfrom
ui-redesign-flatter-desktop-12174502082927007951

Conversation

@iotserver24
Copy link
Copy Markdown
Owner

@iotserver24 iotserver24 commented May 17, 2026

🎯 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

  • Style
    • Updated visual styling across the desktop interface, including removal of borders on key UI regions.
    • Refined button appearance for mode selection and quick-action controls.
    • Adjusted message bubble styling for improved visual consistency.
    • Refined color palette for surfaces and borders throughout the application.

Review Change Stack

- 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.
@google-labs-jules
Copy link
Copy Markdown

👋 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9fc47d91-19e0-4e80-8179-a4e217f994db

📥 Commits

Reviewing files that changed from the base of the PR and between 151c75e and fd35de7.

📒 Files selected for processing (4)
  • packages/desktop/src/renderer/App.tsx
  • packages/desktop/src/renderer/components/ChatPanel.tsx
  • packages/desktop/src/renderer/components/MessageBubble.tsx
  • packages/desktop/src/renderer/styles/global.css

📝 Walkthrough

Walkthrough

This 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.

Changes

Desktop UI styling refresh

Layer / File(s) Summary
Theme color palette darkening
packages/desktop/src/renderer/styles/global.css
The @theme variables for raised surfaces and borders are darkened from #27272a to #18181b, establishing a darker palette for the subsequent component styling updates.
Layout structure border removal
packages/desktop/src/renderer/App.tsx
The header, left sidebar, and right sidebar containers drop their subtle border styling while retaining all layout behavior, transitions, and overflow handling.
ChatPanel button and input styling
packages/desktop/src/renderer/components/ChatPanel.tsx
Mode selection buttons toggle between raised and dim styles, quick-action buttons switch to raised borderless styling, and the floating input container removes explicit borders in favor of raised surface backgrounds.
MessageBubble and markdown code rendering
packages/desktop/src/renderer/components/MessageBubble.tsx
User message bubbles adopt raised surface backgrounds with rounded corners; assistant message Markdown code renderers update to use non-raised surface backgrounds with refined prose styling.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • iotserver24/Xibecode#78: Both PRs modify the same desktop UI styling files, removing borders and adjusting raised/surface classes across App.tsx, ChatPanel.tsx, MessageBubble.tsx, and global.css.
  • iotserver24/Xibecode#80: Directly overlaps with the main PR's className/style adjustments to the same four styling hotspots in the desktop renderer components.
  • iotserver24/Xibecode#88: Touches the same desktop UI styling locations (App.tsx, ChatPanel.tsx, MessageBubble.tsx, global.css) around borders and raised/non-raised surface styling.

Poem

🐰 Borders fade away like morning dew,
Surfaces raised and darkened through,
The UI breathes, now flat and clean,
A minimalist dream on every screen!

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ui-redesign-flatter-desktop-12174502082927007951

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@iotserver24 iotserver24 marked this pull request as ready for review May 17, 2026 06:18
Copilot AI review requested due to automatic review settings May 17, 2026 06:18
@iotserver24 iotserver24 merged commit 035dbac into main May 17, 2026
6 of 7 checks passed
@iotserver24 iotserver24 deleted the ui-redesign-flatter-desktop-12174502082927007951 branch May 17, 2026 06:20
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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">
Comment on lines 30 to 45
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>
) : (
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