# Workspace Visual Overhaul - Design ## Layout Architecture ### New Workspace Layout ``` ┌──────────────────────────────────────────────────────────────────────┐ │ App Shell (Header + Nav) │ ├──────────────────────────────────────────────────────────────────────┤ │ Project Workspace Header │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ 📁 My Project [History] [⚙️ Settings] │ │ │ │ (secondary actions on right) │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├──────────────────────┬───────────────────────────────────────────────┤ │ │ │ │ Sidebar (280px) │ Main Content │ │ ┌────────────────┐ │ ┌─────────────────────────────────────────┐ │ │ │ Branch ▼ │ │ │ Breadcrumbs: src > components │ │ │ ├────────────────┤ │ ├─────────────────────────────────────────┤ │ │ │ 📁 src/ │ │ │ Toolbar: [Edit] [Raw] [Blame] │ │ │ │ 📁 tests/ │ │ ├─────────────────────────────────────────┤ │ │ │ 📄 README.md │ │ │ │ │ │ │ ... │ │ │ function hello() { │ │ │ │ │ │ │ return "world"; │ │ │ └────────────────┘ │ │ } │ │ │ │ │ │ │ │ │ └─────────────────────────────────────────┘ │ │ │ │ └──────────────────────┴───────────────────────────────────────────────┘ ``` ### Project Settings Page ``` ┌──────────────────────────────────────────────────────────────────────┐ │ App Shell (Header + Nav) │ ├──────────────────────────────────────────────────────────────────────┤ │ Settings Header │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ ← Back to Project My Project / Settings │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├──────────────────┬───────────────────────────────────────────────────┤ │ │ │ │ Settings Tabs │ Tab Content │ │ ┌──────────────┐│ ┌─────────────────────────────────────────────┐ │ │ │ General ││ │ General Settings │ │ │ ├──────────────┤│ │ │ │ │ │ Repositories ││ │ Project Name: [My Project ] │ │ │ ├──────────────┤│ │ Description: [A test project... ] │ │ │ │ Members ││ │ │ │ │ ├──────────────┤│ │ [Save Changes] │ │ │ │ Danger Zone ││ │ │ │ │ └──────────────┘│ └─────────────────────────────────────────────┘ │ │ │ │ └──────────────────┴───────────────────────────────────────────────────┘ ``` ## Component Changes ### 1. WorkspaceHeader (New Component) **Location**: `apps/web/src/components/workspace-header.tsx` **Props:** ```typescript interface WorkspaceHeaderProps { project: Project; onNavigateToHistory: () => void; onNavigateToSettings: () => void; } ``` **Layout:** - Left: Project icon + Project name (bold) - Right: Action buttons group - "History" button (clock icon) - "Settings" button (gear icon) - Subtitle (optional): Project description or current repo name ### 2. ProjectSettingsPage (New Page) **Location**: `apps/web/src/pages/project-settings.tsx` **Route**: `/projects/:projectId/settings` **Tabs:** 1. **General** - Project name input - Description textarea - Created date (read-only) - Save button 2. **Repositories** (moved from separate page) - List of project repositories - Add repository button - Repository cards with actions (delete) - Same functionality as current repo management 3. **Members** (placeholder for future) - "Coming soon" message 4. **Danger Zone** - Delete project button (with confirmation) ### 3. Sidebar Simplification **Remove from sidebar:** - "Manage Repositories" link (moved to settings) - "History" link (moved to header) **Keep in sidebar:** - Branch selector - File tree ### 4. Navigation Updates **Current routes:** - `/projects` → Project list (unchanged) - `/projects/:id` → Workspace (new header) - `/projects/:id/repositories` → Repository list (REMOVE) - `/projects/:id/repositories/:repoId/history` → History (keep) - `/projects/:id/settings` → NEW **New navigation flow:** ``` Projects List ↓ click Workspace (with header actions) ↓ click Settings Project Settings ↓ click Repositories tab Repository Management (in settings) ↓ click Back Workspace ``` ## CSS Changes ### Workspace Header ```css .workspace-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--border-color); background: var(--surface-color); } .workspace-header-left { display: flex; align-items: center; gap: 0.75rem; } .workspace-header-title { font-size: 1.25rem; font-weight: 600; color: var(--text-primary); } .workspace-header-actions { display: flex; gap: 0.5rem; } .workspace-header-action-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; border: 1px solid var(--border-color); border-radius: 6px; background: var(--surface-color); color: var(--text-secondary); font-size: 0.875rem; cursor: pointer; transition: all 0.2s; } .workspace-header-action-btn:hover { background: var(--hover-color); border-color: var(--primary-color); } ``` ### Settings Layout ```css .settings-container { display: flex; min-height: calc(100vh - var(--header-height)); } .settings-sidebar { width: 240px; border-right: 1px solid var(--border-color); padding: 1.5rem 0; } .settings-tab { display: block; padding: 0.75rem 1.5rem; color: var(--text-secondary); text-decoration: none; font-size: 0.875rem; border-left: 3px solid transparent; } .settings-tab:hover { background: var(--hover-color); } .settings-tab.active { color: var(--primary-color); border-left-color: var(--primary-color); background: var(--primary-light); } .settings-content { flex: 1; padding: 2rem; max-width: 800px; } ``` ## API Changes No new API endpoints needed. The settings page will use existing APIs: - `GET /projects/:id` - project details - `PUT /projects/:id` - update project (already exists? if not, add) - `DELETE /projects/:id` - delete project (already exists) ## Implementation Order 1. **Create WorkspaceHeader component** - Extract from current workspace page - Add action buttons - Style appropriately 2. **Create ProjectSettingsPage** - Settings layout with tabs - General tab with project info - Danger zone with delete button 3. **Move repository management** - Move repo list from separate page to settings tab - Update routes 4. **Update workspace page** - Remove sidebar links - Add WorkspaceHeader - Keep file tree and viewer 5. **Update router** - Remove `/projects/:id/repositories` route - Add `/projects/:id/settings` route - Add tab routes: `/projects/:id/settings/general`, etc. 6. **Polish** - Ensure responsive design - Test navigation flow - Update breadcrumbs if needed ## Migration Notes - Users currently accessing `/projects/:id/repositories` will need to navigate to Settings > Repositories - Can add a redirect or show a message on the old route temporarily - Update any hardcoded links in the codebase