UI Audit and Fixes - 2025-10-20
Issues Identified
1. Profile Page Missing Billing Information ❌
Current State: profile-page.tsx shows basic profile (name, email, bio) but missing billing fields
Backend Fields Available (models.rs:205-213):
company- Company namephone- Phone number (E.164 format: +1234567890)address_line1- Street addressaddress_line2- Apt/Suitecity- Citystate- 2-letter US state codepostal_code- ZIP/Postal codecountry- ISO 3166-1 alpha-2 (US, CA, GB)
Fix Required: Add "Billing Information" section to ProfilePage
2. SidePanel Shows Placeholders Instead of Functional UI ❌
Current Issues:
llm Chat Tab (side-panel.tsx:161-171):
<Text fontSize="sm" color="gray.500">
llm Chat integration will be connected here.
</Text>
❌ Not functional - just placeholder text
Sessions Tab (side-panel.tsx:174-186):
<Text fontSize="xs" color="gray.500">
Manage multiple workspace sessions here.
Each session provides an isolated development environment...
</Text>
❌ Not functional - just placeholder text ❌ Doesn't show actual sessions from sessionStore ❌ Doesn't integrate with SessionTabManager
Models Tab (side-panel.tsx:188-203):
<Text fontSize="xs" color="gray.500">
Select and configure llm models:
</Text>
<VStack align="stretch" spacing={2} fontSize="xs">
<Text>• Primary Model: LM Studio (local)</Text>
<Text>• Secondary Model: Claude Code (API)</Text>
...
</VStack>
❌ Not functional - just placeholder text ❌ No actual model selection UI
Fix Required:
- Create functional llm Chat component with file management, prompt window
- Integrate Sessions tab with sessionStore to show/switch actual sessions
- Create functional Models selector with actual LM Studio integration
3. No Navigation Back to IDE ❌
Current State:
- Profile page at
/profilehas no way to return to IDE at/ide - Documentation pages have no breadcrumbs or back button
- Header has logo/brand but doesn't link back to IDE
Fix Required:
- Add "Back to IDE" button in Header when on non-IDE pages
- Or add breadcrumb navigation
- Or make logo always navigate to
/ide(or last active session)
4. Tab UI Not Clear Enough ⚠️
User Feedback: "when we add a session by clicking on the '+' the interface is not really showing that we have a new tab"
Current Implementation (session-tab-manager.tsx:150-200):
- Tabs DO render with session names
- Tabs DO have borders and styling
- BUT: May not be visually distinct enough
Fix Applied (commit debf72c):
- ✅ Clear borders (2px blue for active, 1px gray for inactive)
- ✅ Distinct backgrounds (white/dark for active, lighter gray for inactive)
- ✅ Better spacing (4px padding, 150px max width)
- ✅ Hover effects
- ✅ Blue solid "+" button (was ghost, now more visible)
Needs Testing: Deploy Build #20 to verify tab visibility
Fixes Required
Priority 1: Critical Functionality ⚠️
-
SidePanel - llm Chat Tab
- Create
llmchat-panel.tsxcomponent - File upload/management interface
- Prompt input with multi-line support
- Chat history display
- Model selection dropdown
- Token usage display
- Create
-
SidePanel - Sessions Tab
- Show list of sessions from
sessionStore.sessions - Highlight current session
- Click to switch session (call
setCurrentSession()) - Integration with SessionTabManager
- Show list of sessions from
-
SidePanel - Models Tab
- List LM Studio models (from
llmService.getModels()) - Select primary/secondary models
- Show model info (size, type, context length)
- Mode selection (Single/Parallel/Sequential/Consensus)
- List LM Studio models (from
Priority 2: Profile & Navigation
-
ProfilePage - Billing Section
- Add "Billing Information" tab or accordion
- Form fields for all 8 billing fields
- Validation (E.164 phone, ISO country codes)
- Save to backend via
userService.updateProfile()
-
Navigation
- Add "Back to IDE" button in Header (when not on /ide route)
- Or: Make logo navigate to /ide
- Or: Add breadcrumbs component
Priority 3: Polish
-
WebSocket Connection Indicator
- ✅ Already implemented (connection-status.tsx)
- Shows in top-right of theia IDE
- Green/Yellow/Red states
-
Tab UI Improvements
- ✅ Already implemented (session-tab-manager.tsx)
- Needs deployment to verify
Implementation Plan
Step 1: Create llm Chat Component
// src/components/SidePanel/llmchat-panel.tsx
- Chat message list (scrollable)
- Prompt input (multi-line textarea)
- File attachment button
- Model selector dropdown
- Send button
- Clear conversation button
Step 2: Create Sessions List Component
// src/components/SidePanel/SessionsPanel.tsx
- Map sessionStore.sessions to list items
- Show session.name, session.type
- Highlight currentSession
- Click handler: setCurrentSession(session)
- Create session button (calls createSession())
Step 3: Create Models Selector Component
// src/components/SidePanel/ModelsPanel.tsx
- Fetch models from llmService.getModels()
- Display model list with radio buttons
- Show model metadata (size, context_length)
- Save selection to localStorage or sessionStore
Step 4: Add Billing to Profile
// src/pages/profile-page.tsx
- Add <Accordion> or <Tabs> for "Billing Information"
- Form fields for company, phone, address, etc.
- Validation (phone: E.164, country: ISO alpha-2)
- Update userService.updateProfile() call
Step 5: Add Navigation
// src/components/header.tsx
- Use useLocation() to detect current route
- Show "Back to IDE" button if not on /ide
- Or: Make logo onClick={() => navigate('/ide')}
Files to Modify
- ✅
src/components/connection-status.tsx- DONE (commit debf72c) - ✅
src/components/theia-embed.tsx- DONE (commit debf72c) - ✅
src/components/session-tabs/session-tab-manager.tsx- DONE (commit debf72c) - ❌
src/components/side-panel.tsx- NEEDS WORK - ❌
src/components/SidePanel/llmchat-panel.tsx- NEW FILE - ❌
src/components/SidePanel/SessionsPanel.tsx- NEW FILE - ❌
src/components/SidePanel/ModelsPanel.tsx- NEW FILE - ❌
src/pages/profile-page.tsx- NEEDS WORK - ❌
src/components/header.tsx- NEEDS WORK
Testing Checklist
After deployment:
- Profile page shows billing fields (company, phone, address, etc.)
- Billing fields save correctly to backend
- llm Chat tab shows functional chat interface
- Sessions tab shows list of actual sessions
- Clicking session in side panel switches main IDE view
- Models tab shows LM Studio models
- Model selection persists across page reloads
- "Back to IDE" navigation works from Profile/Docs pages
- WebSocket connection indicator shows green when connected
- Session tabs are visually distinct (blue border for active)
- Clicking "+" creates new tab with clear visual indication
Status: Document created 2025-10-20 Next: Implement llmChatPanel, SessionsPanel, ModelsPanel