Created detailed markdown plans for all items in todo.md: 1. 01-playwright-scaffolding.md - Base Playwright infrastructure 2. 02-magnitude-tests-comprehensive.md - Complete test coverage 3. 03-stream-ai-to-deepgram-tts.md - TTS latency optimization 4. 04-fix-galaxy-node-clicking.md - Galaxy navigation bugs 5. 05-dark-light-mode-theme.md - Dark/light mode with dynamic favicons 6. 06-fix-double-border-desktop.md - UI polish 7. 07-delete-backup-files.md - Code cleanup 8. 08-ai-transition-to-edit.md - Intelligent node creation flow 9. 09-umap-minimum-nodes-analysis.md - Technical analysis Each plan includes: - Detailed problem analysis - Proposed solutions with code examples - Manual Playwright MCP testing strategy - Magnitude test specifications - Implementation steps - Success criteria Ready to implement in sequence. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.2 KiB
4.2 KiB
Plan: Fix Double Border on Desktop Between Sidebar and Conversation
Priority: LOW - Visual polish Dependencies: None Affects: Desktop UI aesthetics
Overview
There's a double border appearing on desktop between the sidebar and the main conversation area. This creates a visual inconsistency and needs to be fixed for a polished look.
Current Issue
+----------+||+-------------+
| Sidebar ||| Main |
| ||| Content |
| ||| |
+----------+||+-------------+
^^
Double border
Root Cause
Likely causes:
- Both AppShell.Navbar and AppShell.Main have borders
- Border-box sizing causing borders to stack
- Mantine default styles adding extra borders
Investigation Steps
-
Inspect current implementation
// Check components/DesktopNav.tsx // Check app/layout.tsx AppShell usage // Check theme.ts AppShell styles -
Identify which elements have borders
- AppShell.Navbar
- AppShell.Main
- Any wrapper components
Proposed Fixes
Option 1: Remove Border from One Side
// app/theme.ts
export const theme = createTheme({
components: {
AppShell: {
styles: {
navbar: {
borderRight: 'none', // Remove right border from navbar
},
},
},
},
});
Option 2: Use Single Shared Border
// app/theme.ts
export const theme = createTheme({
components: {
AppShell: {
styles: (theme) => ({
navbar: {
borderRight: `1px solid ${theme.colors.gray[3]}`,
},
main: {
borderLeft: 'none', // Remove left border from main
},
}),
},
},
});
Option 3: Use Divider Component
// components/DesktopNav.tsx
<Group h="100%" gap={0} wrap="nowrap">
<AppShell.Navbar>{/* ... */}</AppShell.Navbar>
<Divider orientation="vertical" />
<AppShell.Main>{/* ... */}</AppShell.Main>
</Group>
Testing
Manual Playwright MCP Test
test('No double border between sidebar and main content', async ({ page }) => {
await page.goto('/chat');
await page.setViewportSize({ width: 1920, height: 1080 });
// Take screenshot of border area
const borderElement = page.locator('.mantine-AppShell-navbar');
await borderElement.screenshot({ path: 'border-before.png' });
// Check computed styles
const navbarBorder = await page.evaluate(() => {
const navbar = document.querySelector('.mantine-AppShell-navbar');
return window.getComputedStyle(navbar!).borderRight;
});
const mainBorder = await page.evaluate(() => {
const main = document.querySelector('.mantine-AppShell-main');
return window.getComputedStyle(main!).borderLeft;
});
// Only one should have a border
const hasDouble = navbarBorder !== 'none' && mainBorder !== 'none';
expect(hasDouble).toBe(false);
});
Magnitude Test
import { test } from 'magnitude-test';
test('Desktop sidebar has clean border', async (agent) => {
await agent.open('http://localhost:3000/chat');
await agent.act('Resize window to desktop size (1920x1080)');
await agent.check('Sidebar is visible');
await agent.check('No double border between sidebar and content');
await agent.check('Border is clean and single-width');
});
Implementation Steps
-
Identify current border setup
- Inspect DesktopNav component
- Check AppShell configuration
- Check theme.ts
-
Choose fix approach
- Decide which element keeps the border
- Remove border from other element
-
Implement fix
- Update theme.ts or component styles
-
Test with Playwright MCP
- Visual inspection
- Computed styles check
-
Add Magnitude test
-
Commit and push
Success Criteria
- ✅ Only one border between sidebar and main content
- ✅ Border is clean and single-width
- ✅ Consistent across all pages
- ✅ Works in both light and dark mode
- ✅ Playwright MCP test passes
- ✅ Magnitude test passes
Files to Update
app/theme.ts- Update AppShell border stylestests/playwright/desktop-border.spec.ts- Manual testtests/magnitude/desktop-border.mag.ts- Magnitude test