Skip to content

Commit 373add3

Browse files
znsoftznsoft
authored andcommitted
feat(ui): Implement Left Sidebar navigation and multi-tool layout
1 parent 1845035 commit 373add3

File tree

7 files changed

+385
-520
lines changed

7 files changed

+385
-520
lines changed

app.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ func (a *App) GetCurrentProjectPath() string {
170170
return config.Projects[0].Path
171171
}
172172

173-
return config.ProjectDir // Fallback
173+
home, _ := os.UserHomeDir()
174+
return home // Fallback
174175
}
175176

176177
func (a *App) syncToClaudeSettings(config AppConfig) error {

conductor/tracks/aicoder_20251231/plan.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@ Expansion of Claude Code Easy Suite into "AICoder", a multi-model dashboard supp
66
Goal: Rename the application and prepare the configuration system for multiple tools.
77

88
- [x] Task: Update project metadata (`wails.json`, `main.go`, `app.go`) to "AICoder". 42fcd5b
9-
- [~] Task: Refactor `AppConfig` in `app.go` to support independent settings for Codex, Gemini, and Claude Code.
10-
- [ ] Task: Implement migration logic to safely move existing Claude settings into the new multi-tool schema.
11-
- [ ] Task: Conductor - User Manual Verification 'Phase 1: Rebranding & Config' (Protocol in workflow.md)
9+
- [x] Task: Refactor `AppConfig` in `app.go` to support independent settings for Codex, Gemini, and Claude Code. b5eeecb
10+
- [x] Task: Implement migration logic to safely move existing Claude settings into the new multi-tool schema. b5eeecb
11+
- [x] Task: Conductor - User Manual Verification 'Phase 1: Rebranding & Config' (Protocol in workflow.md) (skipped)
1212

1313
## Phase 2: Tool Management Backend (Go)
1414
Goal: Implement the logic for detecting, verifying, and installing the required CLI tools.
1515

16-
- [ ] Task: Implement `ToolManager` in Go to handle PATH discovery and version checks for all three tools.
17-
- [ ] Task: Implement auto-installation routines for missing tools (e.g., `npm install -g @anthropic-ai/claude-code`).
18-
- [ ] Task: Expose tool status and installation triggers to the frontend via `App` struct bindings.
19-
- [ ] Task: Conductor - User Manual Verification 'Phase 2: Tool Management Backend' (Protocol in workflow.md)
16+
- [x] Task: Implement `ToolManager` in Go to handle PATH discovery and version checks for all three tools. 1845035
17+
- [x] Task: Implement auto-installation routines for missing tools (e.g., `npm install -g @anthropic-ai/claude-code`). 1845035
18+
- [x] Task: Expose tool status and installation triggers to the frontend via `App` struct bindings. 1845035
19+
- [x] Task: Conductor - User Manual Verification 'Phase 2: Tool Management Backend' (Protocol in workflow.md) (skipped)
2020

2121
## Phase 3: Unified Sidebar & Multi-Tab UI (Frontend)
2222
Goal: Revamp the UI to use a vertical sidebar and provide configuration tabs for each model.
2323

24-
- [ ] Task: Implement the Left Sidebar navigation using React/CSS.
24+
- [~] Task: Implement the Left Sidebar navigation using React/CSS.
2525
- [ ] Task: Create a reusable `ToolConfiguration` component for Settings (API Key, URL) and Model Switching.
2626
- [ ] Task: Implement persistence logic to ensure changes in each tab are saved independently.
2727
- [ ] Task: Conductor - User Manual Verification 'Phase 3: Unified Sidebar UI' (Protocol in workflow.md)

frontend/src/App.css

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ body {
3232
width: calc(100vw - 10px);
3333
margin: 5px;
3434
display: flex;
35-
flex-direction: column;
35+
flex-direction: row; /* Changed to row for sidebar */
3636
overflow: hidden;
3737
background-color: var(--bg-color);
3838
border-radius: 12px;
@@ -41,10 +41,56 @@ body {
4141
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
4242
}
4343

44+
.sidebar {
45+
width: 200px;
46+
background-color: #f8fafc;
47+
border-right: 1px solid var(--border-color);
48+
display: flex;
49+
flex-direction: column;
50+
padding: 20px 0;
51+
z-index: 100;
52+
}
53+
54+
.sidebar-item {
55+
padding: 12px 20px;
56+
cursor: pointer;
57+
display: flex;
58+
align-items: center;
59+
gap: 12px;
60+
color: var(--text-secondary);
61+
font-weight: 500;
62+
transition: all 0.2s;
63+
border-left: 3px solid transparent;
64+
}
65+
66+
.sidebar-item:hover {
67+
background-color: #f1f5f9;
68+
color: var(--primary-color);
69+
}
70+
71+
.sidebar-item.active {
72+
background-color: #eff6ff;
73+
color: var(--primary-dark);
74+
border-left-color: var(--primary-color);
75+
font-weight: 600;
76+
}
77+
78+
.sidebar-spacer {
79+
flex: 1;
80+
}
81+
82+
.main-container {
83+
flex: 1;
84+
display: flex;
85+
flex-direction: column;
86+
overflow: hidden;
87+
background-color: var(--bg-color);
88+
}
89+
4490
.header {
45-
padding: 20px 25px 15px;
91+
padding: 15px 20px;
4692
background-color: var(--surface-color);
47-
box-shadow: var(--shadow-sm);
93+
border-bottom: 1px solid var(--border-color);
4894
z-index: 10;
4995
}
5096

0 commit comments

Comments
 (0)