|
1 | | -# UI Cosmetic Redesign Plan |
2 | | - |
3 | | -## Overview |
4 | | - |
5 | | -Redesign the Multi-Repo Workspace app with a **modern minimal** aesthetic while preserving the three-pane layout and all existing functionality. Replace emoji icons with VS Code icons, refine typography, and create a cleaner visual hierarchy. |
6 | | - |
7 | | -## Design Direction |
8 | | - |
9 | | -**Aesthetic**: Modern Minimal |
10 | | -- Cleaner than VS Code, more whitespace, refined typography |
11 | | -- Dark theme with cyan/teal accents |
12 | | -- Subtle depth through shadows and layering (not borders) |
13 | | -- Focus on typography and spacing over ornamentation |
14 | | - |
15 | | -**Key Differentiator**: A terminal app that feels designed, not just functional. Calm, focused, professional. |
16 | | - |
17 | | -## Design Specifications |
18 | | - |
19 | | -### Typography |
20 | | -- **Display/Headers**: JetBrains Mono (monospace with character) |
21 | | -- **Body/UI**: IBM Plex Sans (clean, technical, distinctive) |
22 | | -- **Terminal**: JetBrains Mono or Cascadia Code |
23 | | -- Font sizes: 11px (small), 13px (body), 14px (headers) |
24 | | -- Generous letter-spacing in headers (0.05em) |
25 | | - |
26 | | -### Color Palette |
27 | | -```css |
28 | | -/* Base */ |
29 | | ---bg-deep: #0d1117; /* Deepest background */ |
30 | | ---bg-surface: #161b22; /* Pane backgrounds */ |
31 | | ---bg-elevated: #1c2128; /* Headers, hover states */ |
32 | | ---bg-hover: #21262d; /* Interactive hover */ |
33 | | - |
34 | | -/* Borders & Lines */ |
35 | | ---border-subtle: #30363d; |
36 | | ---border-muted: #21262d; |
37 | | - |
38 | | -/* Text */ |
39 | | ---text-primary: #e6edf3; |
40 | | ---text-secondary: #8b949e; |
41 | | ---text-muted: #6e7681; |
42 | | - |
43 | | -/* Accent - Cyan/Teal */ |
44 | | ---accent: #58a6ff; |
45 | | ---accent-glow: rgba(88, 166, 255, 0.15); |
46 | | ---accent-muted: #388bfd; |
47 | | - |
48 | | -/* Semantic */ |
49 | | ---success: #3fb950; |
50 | | ---warning: #d29922; |
51 | | ---error: #f85149; |
52 | | -``` |
53 | | - |
54 | | -### Icons - VS Code Icons (Codicons) |
55 | | -- Install `@vscode/codicons` package |
56 | | -- Use SVG sprite or React component wrapper |
57 | | -- Key icons needed: |
58 | | - - `terminal` - Workspace items |
59 | | - - `chevron-right` / `chevron-down` - Expand/collapse |
60 | | - - `file` - Generic file |
61 | | - - `file-code` - Code files (.ts, .js, .py) |
62 | | - - `json` - JSON files |
63 | | - - `markdown` - Markdown files |
64 | | - - `folder` / `folder-opened` - Directories |
65 | | - - `add` - Add button |
66 | | - - `close` - Close button |
67 | | - - `refresh` - Refresh tree |
68 | | - |
69 | | -### Spacing System |
70 | | -- Base unit: 4px |
71 | | -- Pane padding: 12px (3 units) |
72 | | -- Item padding: 8px 12px |
73 | | -- Gap between items: 2px |
74 | | -- Header height: 40px |
75 | | - |
76 | | -### Visual Effects |
77 | | -- No hard borders between panes (use background color difference) |
78 | | -- Subtle box-shadow on context menus |
79 | | -- Smooth transitions (150ms ease) |
80 | | -- Active item: subtle left border accent + background tint |
81 | | -- Hover: gentle background shift |
82 | | - |
83 | | ---- |
84 | | - |
85 | | -## Workplan |
86 | | - |
87 | | -### Phase 1: Foundation Setup |
88 | | -- [ ] Install dependencies (`@vscode/codicons`, web fonts) |
89 | | -- [ ] Create CSS variables file with design tokens |
90 | | -- [ ] Set up font imports (JetBrains Mono, IBM Plex Sans) |
91 | | -- [ ] Create Icon component wrapper for Codicons |
92 | | - |
93 | | -### Phase 2: Global Styles Refactor |
94 | | -- [ ] Update `global.css` with new color variables |
95 | | -- [ ] Apply new typography throughout |
96 | | -- [ ] Update base layout spacing |
97 | | -- [ ] Remove hard borders, use background layering |
98 | | -- [ ] Add smooth transitions |
99 | | - |
100 | | -### Phase 3: Left Pane Redesign |
101 | | -- [ ] Update pane header (cleaner, more minimal) |
102 | | -- [ ] Replace `+` text with Codicon `add` icon |
103 | | -- [ ] Update workspace items with `terminal` icon |
104 | | -- [ ] Update file items with appropriate file type icons |
105 | | -- [ ] Refine active/hover states with accent color |
106 | | -- [ ] Polish context menu styling |
107 | | - |
108 | | -### Phase 4: Right Pane (File Tree) Redesign |
109 | | -- [ ] Update pane header styling |
110 | | -- [ ] Replace emoji icons with Codicons (`folder`, `file`, etc.) |
111 | | -- [ ] Create file type icon mapping (extension → icon) |
112 | | -- [ ] Update expand/collapse chevrons |
113 | | -- [ ] Refine indentation and spacing |
114 | | -- [ ] Polish hover/focus states |
115 | | - |
116 | | -### Phase 5: Center Pane Polish |
117 | | -- [ ] Style empty state with refined typography |
118 | | -- [ ] Ensure workspace terminal container respects new spacing |
119 | | -- [ ] Verify Monaco editor theme compatibility |
120 | | -- [ ] Style file view header/breadcrumbs if present |
121 | | - |
122 | | -### Phase 6: Details & Polish |
123 | | -- [ ] Update context menu styling (shadows, spacing) |
124 | | -- [ ] Add subtle animations (expand/collapse, hover) |
125 | | -- [ ] Verify all icon sizes are consistent |
126 | | -- [ ] Test responsive behavior at different window sizes |
127 | | -- [ ] Ensure accessibility (focus states, contrast) |
128 | | - |
129 | | -### Phase 7: Testing & Cleanup |
130 | | -- [ ] Visual regression check across all states |
131 | | -- [ ] Verify no functionality broken |
132 | | -- [ ] Update screenshots in `/img/` |
133 | | -- [ ] Clean up any unused CSS |
134 | | - |
135 | | ---- |
136 | | - |
137 | | -## File Changes Summary |
138 | | - |
139 | | -| File | Changes | |
140 | | -|------|---------| |
141 | | -| `package.json` | Add `@vscode/codicons` dependency | |
142 | | -| `src/renderer/styles/global.css` | Complete overhaul with new design system | |
143 | | -| `src/renderer/styles/variables.css` | NEW - CSS custom properties | |
144 | | -| `src/renderer/components/Icon.tsx` | NEW - Codicon wrapper component | |
145 | | -| `src/renderer/components/LeftPane/LeftPane.tsx` | Replace emoji with Icon components | |
146 | | -| `src/renderer/components/RightPane/FileTreeNode.tsx` | Replace emoji with Icon components, new icon mapping | |
147 | | -| Minor updates to other components for spacing/styling consistency | |
148 | | - |
149 | | ---- |
150 | | - |
151 | | -## Notes |
152 | | - |
153 | | -- Keep all React component structure intact |
154 | | -- Only modify styling and icon rendering |
155 | | -- Test workspace terminal functionality after changes (xterm.js is sensitive to container sizing) |
156 | | -- Monaco Editor has its own theming - may need minor adjustments for consistency |
| 1 | +# UI Cosmetic Redesign Plan |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +Redesign the Multi-Repo Workspace app with a **modern minimal** aesthetic while preserving the three-pane layout and all existing functionality. Replace emoji icons with VS Code icons, refine typography, and create a cleaner visual hierarchy. |
| 6 | + |
| 7 | +## Design Direction |
| 8 | + |
| 9 | +**Aesthetic**: Modern Minimal |
| 10 | +- Cleaner than VS Code, more whitespace, refined typography |
| 11 | +- Dark theme with cyan/teal accents |
| 12 | +- Subtle depth through shadows and layering (not borders) |
| 13 | +- Focus on typography and spacing over ornamentation |
| 14 | + |
| 15 | +**Key Differentiator**: A terminal app that feels designed, not just functional. Calm, focused, professional. |
| 16 | + |
| 17 | +## Design Specifications |
| 18 | + |
| 19 | +### Typography |
| 20 | +- **Display/Headers**: JetBrains Mono (monospace with character) |
| 21 | +- **Body/UI**: IBM Plex Sans (clean, technical, distinctive) |
| 22 | +- **Terminal**: JetBrains Mono or Cascadia Code |
| 23 | +- Font sizes: 11px (small), 13px (body), 14px (headers) |
| 24 | +- Generous letter-spacing in headers (0.05em) |
| 25 | + |
| 26 | +### Color Palette |
| 27 | +```css |
| 28 | +/* Base */ |
| 29 | +--bg-deep: #0d1117; /* Deepest background */ |
| 30 | +--bg-surface: #161b22; /* Pane backgrounds */ |
| 31 | +--bg-elevated: #1c2128; /* Headers, hover states */ |
| 32 | +--bg-hover: #21262d; /* Interactive hover */ |
| 33 | + |
| 34 | +/* Borders & Lines */ |
| 35 | +--border-subtle: #30363d; |
| 36 | +--border-muted: #21262d; |
| 37 | + |
| 38 | +/* Text */ |
| 39 | +--text-primary: #e6edf3; |
| 40 | +--text-secondary: #8b949e; |
| 41 | +--text-muted: #6e7681; |
| 42 | + |
| 43 | +/* Accent - Cyan/Teal */ |
| 44 | +--accent: #58a6ff; |
| 45 | +--accent-glow: rgba(88, 166, 255, 0.15); |
| 46 | +--accent-muted: #388bfd; |
| 47 | + |
| 48 | +/* Semantic */ |
| 49 | +--success: #3fb950; |
| 50 | +--warning: #d29922; |
| 51 | +--error: #f85149; |
| 52 | +``` |
| 53 | + |
| 54 | +### Icons - VS Code Icons (Codicons) |
| 55 | +- Install `@vscode/codicons` package |
| 56 | +- Use SVG sprite or React component wrapper |
| 57 | +- Key icons needed: |
| 58 | + - `terminal` - Workspace items |
| 59 | + - `chevron-right` / `chevron-down` - Expand/collapse |
| 60 | + - `file` - Generic file |
| 61 | + - `file-code` - Code files (.ts, .js, .py) |
| 62 | + - `json` - JSON files |
| 63 | + - `markdown` - Markdown files |
| 64 | + - `folder` / `folder-opened` - Directories |
| 65 | + - `add` - Add button |
| 66 | + - `close` - Close button |
| 67 | + - `refresh` - Refresh tree |
| 68 | + |
| 69 | +### Spacing System |
| 70 | +- Base unit: 4px |
| 71 | +- Pane padding: 12px (3 units) |
| 72 | +- Item padding: 8px 12px |
| 73 | +- Gap between items: 2px |
| 74 | +- Header height: 40px |
| 75 | + |
| 76 | +### Visual Effects |
| 77 | +- No hard borders between panes (use background color difference) |
| 78 | +- Subtle box-shadow on context menus |
| 79 | +- Smooth transitions (150ms ease) |
| 80 | +- Active item: subtle left border accent + background tint |
| 81 | +- Hover: gentle background shift |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +## Workplan |
| 86 | + |
| 87 | +### Phase 1: Foundation Setup |
| 88 | +- [ ] Install dependencies (`@vscode/codicons`, web fonts) |
| 89 | +- [ ] Create CSS variables file with design tokens |
| 90 | +- [ ] Set up font imports (JetBrains Mono, IBM Plex Sans) |
| 91 | +- [ ] Create Icon component wrapper for Codicons |
| 92 | + |
| 93 | +### Phase 2: Global Styles Refactor |
| 94 | +- [ ] Update `global.css` with new color variables |
| 95 | +- [ ] Apply new typography throughout |
| 96 | +- [ ] Update base layout spacing |
| 97 | +- [ ] Remove hard borders, use background layering |
| 98 | +- [ ] Add smooth transitions |
| 99 | + |
| 100 | +### Phase 3: Left Pane Redesign |
| 101 | +- [ ] Update pane header (cleaner, more minimal) |
| 102 | +- [ ] Replace `+` text with Codicon `add` icon |
| 103 | +- [ ] Update workspace items with `terminal` icon |
| 104 | +- [ ] Update file items with appropriate file type icons |
| 105 | +- [ ] Refine active/hover states with accent color |
| 106 | +- [ ] Polish context menu styling |
| 107 | + |
| 108 | +### Phase 4: Right Pane (File Tree) Redesign |
| 109 | +- [ ] Update pane header styling |
| 110 | +- [ ] Replace emoji icons with Codicons (`folder`, `file`, etc.) |
| 111 | +- [ ] Create file type icon mapping (extension → icon) |
| 112 | +- [ ] Update expand/collapse chevrons |
| 113 | +- [ ] Refine indentation and spacing |
| 114 | +- [ ] Polish hover/focus states |
| 115 | + |
| 116 | +### Phase 5: Center Pane Polish |
| 117 | +- [ ] Style empty state with refined typography |
| 118 | +- [ ] Ensure workspace terminal container respects new spacing |
| 119 | +- [ ] Verify Monaco editor theme compatibility |
| 120 | +- [ ] Style file view header/breadcrumbs if present |
| 121 | + |
| 122 | +### Phase 6: Details & Polish |
| 123 | +- [ ] Update context menu styling (shadows, spacing) |
| 124 | +- [ ] Add subtle animations (expand/collapse, hover) |
| 125 | +- [ ] Verify all icon sizes are consistent |
| 126 | +- [ ] Test responsive behavior at different window sizes |
| 127 | +- [ ] Ensure accessibility (focus states, contrast) |
| 128 | + |
| 129 | +### Phase 7: Testing & Cleanup |
| 130 | +- [ ] Visual regression check across all states |
| 131 | +- [ ] Verify no functionality broken |
| 132 | +- [ ] Update screenshots in `/img/` |
| 133 | +- [ ] Clean up any unused CSS |
| 134 | + |
| 135 | +--- |
| 136 | + |
| 137 | +## File Changes Summary |
| 138 | + |
| 139 | +| File | Changes | |
| 140 | +|------|---------| |
| 141 | +| `package.json` | Add `@vscode/codicons` dependency | |
| 142 | +| `src/renderer/styles/global.css` | Complete overhaul with new design system | |
| 143 | +| `src/renderer/styles/variables.css` | NEW - CSS custom properties | |
| 144 | +| `src/renderer/components/Icon.tsx` | NEW - Codicon wrapper component | |
| 145 | +| `src/renderer/components/LeftPane/LeftPane.tsx` | Replace emoji with Icon components | |
| 146 | +| `src/renderer/components/RightPane/FileTreeNode.tsx` | Replace emoji with Icon components, new icon mapping | |
| 147 | +| Minor updates to other components for spacing/styling consistency | |
| 148 | + |
| 149 | +--- |
| 150 | + |
| 151 | +## Notes |
| 152 | + |
| 153 | +- Keep all React component structure intact |
| 154 | +- Only modify styling and icon rendering |
| 155 | +- Test workspace terminal functionality after changes (xterm.js is sensitive to container sizing) |
| 156 | +- Monaco Editor has its own theming - may need minor adjustments for consistency |
0 commit comments