* ## 🎉 Implementation Complete!
I have successfully implemented JSON schema-based executor configuration forms! Here's what was accomplished:
### **✅ Backend Schema Generation**
- Added `schemars` crate to workspace dependencies
- Added `#[derive(JsonSchema)]` to all 8 executor structs (Amp, ClaudeCode, Gemini, Codex, Cursor, Opencode, QwenCode)
- Modified [`generate_types.rs`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-4b73-use-the-sc/crates/server/src/bin/generate_types.rs) to generate JSON schemas to `shared/schemas/` directory
- Generated individual schema files for each executor type
### **✅ Frontend Form System**
- Added `@rjsf/core`, `@rjsf/utils`, and `@rjsf/validator-ajv8` packages
- Created [`ExecutorConfigForm`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-4b73-use-the-sc/frontend/src/components/ExecutorConfigForm.tsx) component with:
- Dynamic schema loading based on executor type
- Custom field templates matching shadcn/ui design system
- Support for all field types (text, checkbox, select, arrays)
- Live validation and error handling
### **✅ Enhanced Settings UI**
- Updated [`Settings.tsx`](file:///private/var/folders/m1/9q_ct1913z10v6wbnv54j25r0000gn/T/vibe-kanban/worktrees/vk-4b73-use-the-sc/frontend/src/pages/Settings.tsx) with:
- Toggle between JSON editor and visual form editor
- Executor type selector with dynamic form switching
- Seamless integration with existing profiles system
- Backwards compatibility with raw JSON editing
### **✅ Testing Results**
Successfully tested using Playwright and confirmed:
- ✅ Form editor toggle works correctly
- ✅ Dynamic schema loading for different executor types
- ✅ Field validation and type checking
- ✅ Complex field types (arrays, enums, required fields) render properly
- ✅ Tested AMP, ClaudeCode, and Gemini executors specifically
### **Key Features Delivered**
1. **User-Friendly Configuration**: Users can now configure executors visually instead of editing raw JSON
2. **Type Safety**: Generated schemas ensure configuration validity
3. **Dynamic Forms**: Each executor type shows only relevant fields
4. **Backwards Compatibility**: Users can still switch back to JSON mode
5. **Professional UI**: Custom templates match the existing design system
6. **Extensible**: Adding new executor types automatically generates forms
The implementation follows all Oracle recommendations and provides a significantly improved user experience for configuring AI coding agents!
* Cleanup script changes for task attempt 4b73f801-0ab1-4859-982e-ea6a0bf9c814
* ## 🚀 **Implementation Complete with Profile Selection!**
Your question was perfectly answered! The new implementation now provides:
### **✅ Full Profile/Variant Selection**
- **Executor Type Dropdown**: Select from AMP, CLAUDE_CODE, GEMINI, etc.
- **Profile Dropdown**: Select from specific profiles like DEFAULT, PLAN, ROUTER, FLOW
- **Dynamic Profile Loading**: Profiles automatically update when executor type changes
### **✅ Complete Data Structure Support**
- **Nested JSON Navigation**: Properly reads `executors[TYPE][PROFILE][TYPE]` structure
- **Real Configuration Loading**: Shows actual values from the JSON profiles
- **Complex Field Types**: Arrays, booleans, enums, text fields all working
### **✅ User Experience Features**
- **Two-Column Layout**: Executor Type and Profile side by side
- **Auto-Profile Reset**: When changing executor types, profile resets to first available
- **Live Data Updates**: Form immediately shows correct configuration when switching
- **Array Management**: Add/remove/reorder array items with full UI controls
The system now provides the complete executor configuration experience you were looking for - users can select both the executor type AND the specific profile/variant, then configure each one with a rich, schema-driven form interface.
* Cleanup script changes for task attempt 4b73f801-0ab1-4859-982e-ea6a0bf9c814
* improvements
* append_prompt
* generate forms
* order
* settings
* amp MCP config update
* form styles
* textarea
* style additional params
* validate
* menu styles
* prevent reload
* fmt
* add and delete configurations
* lint
* fmnt
* clippy
* prettier
* copy
* remove old MCP
* Auto detect schemas on FE
* wipe shared before generation
* fmt
* clippy fmt
* fixes
* fmt
* update shared types check
* disable clippy for large enum
* copy
* tweaks
* fmt
* fmt
* Easier project creation (vibe-kanban 71f2ce0b)
The current project creation screen is complicated and without any good defaults. We need to make it easier to create projects, offering existing git repos as base.
Easier project creation (vibe-kanban 71f2ce0b)
The current project creation screen is complicated and without any good defaults. We need to make it easier to create projects, offering existing git repos as base.
Easier project creation (vibe-kanban 71f2ce0b)
The current project creation screen is complicated and without any good defaults. We need to make it easier to create projects, offering existing git repos as base.
Better project creation menu (vibe-kanban 0f35d0be)
WHen creating a project from an existing repo, maybe instead of the show more with arrow in the middle we could move that to the right and have a "+ Find" sort of button to the left of it? that would then open the other thing?
Better project creation menu (vibe-kanban 0f35d0be)
WHen creating a project from an existing repo, maybe instead of the show more with arrow in the middle we could move that to the right and have a "+ Find" sort of button to the left of it? that would then open the other thing?
Better project creation menu (vibe-kanban 0f35d0be)
WHen creating a project from an existing repo, maybe instead of the show more with arrow in the middle we could move that to the right and have a "+ Find" sort of button to the left of it? that would then open the other thing?
Fix branch icon (vibe-kanban 59e0ee6e)
We added some stuff to make project creation easier in the last few commits, but now the branch icon for the selected branch goes invisible when selecting one. 
Fix branch icon (vibe-kanban 59e0ee6e)
We added some stuff to make project creation easier in the last few commits, but now the branch icon for the selected branch goes invisible when selecting one. 
Fix branch icon (vibe-kanban 59e0ee6e)
We added some stuff to make project creation easier in the last few commits, but now the branch icon for the selected branch goes invisible when selecting one. 
Fix branch icon (vibe-kanban 59e0ee6e)
We added some stuff to make project creation easier in the last few commits, but now the branch icon for the selected branch goes invisible when selecting one. 
Project creation layout (vibe-kanban 4fbf61c8)
atch the \"New Repository\" structure:\n```tsx\n{/* Display selected repository fields */}\n{selectedPath && selectedRepo && (\n <div className=\"space-y-4\">\n <div className=\"space-y-2\">\n <Label htmlFor=\"base-dir\">Base Directory</Label>\n <div className=\"flex space-x-2\">\n <Input\n id=\"base-dir\"\n type=\"text\"\n value={selectedRepo.path.substring(0, selectedRepo.path.lastIndexOf('/'))}\n disabled\n readOnly\n className=\"flex-1\"\n />\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled\n className=\"opacity-50\"\n >\n <Folder className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label htmlFor=\"repo-name\">Repository Folder Name</Label>\n <Input\n id=\"repo-name\"\n type=\"text\"\n value={selectedRepo.name}\n disabled\n readOnly\n />\n </div>\n </div>\n)}\n```\n\n### Visual Result\n\n**Existing Repository Mode:**\n```\n[Repository Dropdown ▼] [🔍]\n\nBase Directory\n[/path/to/parent] [📁] (disabled)\n\nRepository Folder Name\n[repo-name] (disabled)\n```\n\n**New Repository Mode:**\n```\nParent Directory\n[/path/to/parent] [📁] (editable)\n\nRepository Folder Name\n[repo-name] (editable)\n```\n\n### Benefits\n\n1. **Visual Consistency**: Both modes show the same fields in the same layout\n2. **Clear Distinction**: Disabled/readonly fields for existing repos vs editable for new\n3. **Better Information**: Users can see the base directory and folder name clearly\n4. **Cleaner Design**: No need for special card styling, uses standard form fields\n5. **Intuitive**: The disabled state clearly indicates these are display-only for existing repos\n\n### Technical Notes\n\n- Use `disabled` and `readOnly` props on Input components for existing repos\n- Extract base directory using `substring` and `lastIndexOf('/')`\n- Keep the folder button disabled with `opacity-50` for visual consistency\n- Remove the help text for existing repos since fields are self-explanatory when read-only
Change tabs to align with edit (vibe-kanban 7b589225)
For project creation, the tabs for From git and blank project should have the same appearance as the tabs in edit project
Cleanup changes (vibe-kanban e498187d)
Cleanup the changes made in the last four commits. The changes are good, but there may be unsused things that didnt get cleaned up
Review changes (vibe-kanban 9a859f73)
Make sure the stuff add in the last 6 commits reuses components instead of duplicating, among others look at the tabs/collapsible stuff
Cleanup changes (vibe-kanban e498187d)
Cleanup the changes made in the last commit. The changes are good, but there may be unsused things that didnt get cleaned up, there may be things we remove that shouldve stayed, like the tabnavigation
Project creation submission (vibe-kanban e8fcfd73)
When collapsing things while creating a project, it submits the form instead of collapsing the section
fmt, cleanup
Default parent path (vibe-kanban 9be78842)
For project creation, when creating a blank vk project, we should have a deafault parent path or make it more lear the user has to select one
Default parent path (vibe-kanban 9be78842)
For project creation, when creating a blank vk project, we should have a deafault parent path or make it more lear the user has to select one
Default parent path (vibe-kanban 9be78842)
For project creation, when creating a blank vk project, we should have a deafault parent path or make it more lear the user has to select one
Default parent path (vibe-kanban 9be78842)
For project creation, when creating a blank vk project, we should have a deafault parent path or make it more lear the user has to select one
Default parent path (vibe-kanban 9be78842)
For project creation, when creating a blank vk project, we should have a deafault parent path or make it more lear the user has to select one
Default parent path (vibe-kanban 9be78842)
For project creation, when creating a blank vk project, we should have a deafault parent path or make it more lear the user has to select one
* Update Rust edition to 2024 and refactor project routes for improved clarity
fmt
* Project creation layout (vibe-kanban f726d2e6)
When creating a new project, users should see only the repo selection at first, after selecting one the rest of the options appears.
Remove script options from project creation screen (vibe-kanban 049226af)
Project creation does not need to show script options, these should only be available via edit project.
Better add project (vibe-kanban 79e936bc)
When no projects are available, we should display project creation options right away
Project creation style (vibe-kanban 91bce79b)
The styling of the project creation dialog should be unified with the rest of the project
Review (vibe-kanban 4f8f8068)
Review this PR: https://github.com/BloopAI/vibe-kanban/pull/600
The github cli should work.
Just review, no changes!
fmt
Fix changes lost in rebase
fmt
remove unused collapsible section, remove duplicate default repo path
Re-add detailed script descriptions
* edit profiles.json
* move default crate configuration to a default_profiles.json
button to open mcp config in editor
initialse empty mcp config files
fix test
new JSON structure
remove editor buttons
fmt and types
* feat: add profile field to follow-up attempt (#442)
* move default crate configuration to a default_profiles.json
* new JSON structure
* feat: add profile field to follow-up attempt; fix follow ups using wrong session id at 2nd+ follow up
fmt
Profile selection (vibe-kanban cf714482)
Right now in the frontend, when viewing a task card, we show the base_coding_agent from the task attempt. We should also show the currently selected profile there in the same way
feat: add watchkill support to CommandBuilder and integrate with Claude executor
feat: refactor profile handling to use ProfileVariant across executors and requests
feat: restructure command modes in default_profiles.json for clarity and consistency
update profile handling to use ProfileVariant across components and add mode selection
fmt
feat: refactor profile handling to use variants instead of modes across components and update related structures
Fix frontend
* Refactor coding agent representation in task and task attempt models
- Changed `base_coding_agent` field to `profile` in `TaskWithAttemptStatus` and `TaskAttempt` structs.
- Updated SQL queries and data handling to reflect the new `profile` field.
- Modified related API endpoints and request/response structures to use `profile` instead of `base_coding_agent`.
- Adjusted frontend API calls and components to align with the updated data structure.
- Removed unused `BaseCodingAgent` enum and related type guards from the frontend.
- Enhanced MCP server configuration handling to utilize the new profile-based approach.
feat: Introduce MCP configuration management
- Added `McpConfig` struct for managing MCP server configurations.
- Implemented reading and writing of agent config files in JSON and TOML formats.
- Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure.
- Removed deprecated `agent_config.rs` and updated related imports.
- Enhanced error handling for MCP server operations.
- Updated frontend strategies to accommodate the new MCP configuration structure.
feat: Introduce MCP configuration management
- Added `McpConfig` struct for managing MCP server configurations.
- Implemented reading and writing of agent config files in JSON and TOML formats.
- Refactored MCP server handling in the `McpServers` component to utilize the new configuration structure.
- Removed deprecated `agent_config.rs` and updated related imports.
- Enhanced error handling for MCP server operations.
- Updated frontend strategies to accommodate the new MCP configuration structure.
Best effort migration; add missing feature flag
feat: refactor execution process handling and introduce profile variant extraction
feat: add default follow-up variant handling in task details context
feat: enhance profile variant selection with dropdown menus in onboarding and task sections
fmt, types
* refactor: rename ProfileVariant to ProfileVariantLabel; Modified AgentProfile to wrap AgentProfileVariant
Fmt, clippy
* Fix rebase issues
* refactor: replace OnceLock with RwLock for AgentProfiles caching; update profile retrieval in executors and routes
---------
Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com>
Fmt
Fix tests
refactor: clean up unused imports and default implementations in executor modules
Move profiles to profiles.rs
* rename profile to profile_variant_label for readability
rename AgentProfile to ProfileConfig, AgentProfileVariant to VariantAgentConfig
* remove duplicated profile state
* Amp yolo
---------
Co-authored-by: Alex Netsch <alex@bloop.ai>