Files
vibe-kanban/frontend/tailwind.config.js

153 lines
4.8 KiB
JavaScript
Raw Normal View History

2025-06-14 15:14:08 -04:00
/** @type {import('tailwindcss').Config} */
module.exports = {
darkMode: ["class"],
content: [
'./pages/**/*.{ts,tsx}',
'./components/**/*.{ts,tsx}',
'./app/**/*.{ts,tsx}',
'./src/**/*.{ts,tsx}',
UI form builder for editing executor config (#619) * ## 🎉 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
2025-09-04 20:46:26 +01:00
"node_modules/@rjsf/shadcn/src/**/*.{js,ts,jsx,tsx,mdx}"
2025-06-14 15:14:08 -04:00
],
2025-06-21 18:23:34 +01:00
safelist: [
'xl:hidden',
'xl:relative',
'xl:inset-auto',
'xl:z-auto',
'xl:h-full',
'xl:w-[800px]',
'xl:flex',
'xl:flex-1',
'xl:min-w-0',
'xl:overflow-y-auto',
'xl:opacity-100',
'xl:pointer-events-auto',
],
2025-06-14 15:14:08 -04:00
prefix: "",
theme: {
container: {
center: true,
padding: "2rem",
screens: {
"2xl": "1400px",
},
},
extend: {
backgroundImage: {
'diagonal-lines': `
repeating-linear-gradient(-45deg, hsl(var(--border) / 0.4) 0 2px, transparent 1px 12px),
linear-gradient(hsl(var(--background)), hsl(var(--background)))
`,
},
Overhaul UI (#577) * font * flat ui * burger menu * button styles * drag effects * search * Improve * navbar * task details header WIP * task attempt window actions * task details * split out title description component * follow up * better board spacing * Incrementally use tanstack (vibe-kanban 0c34261d) Let's refactor the codebase to remove: @frontend/src/components/context/TaskDetailsContextProvider.tsx @frontend/src/components/context/TaskDetailsContextProvider.ts Instead, we want to use @tanstack/react-query * task attempt header info * ui for dropdown * optionally disable * Create hook for attempt actions (vibe-kanban 651551d9) - Start dev server - Rebase - Create PR - Merge These should all be hooks, similar to frontend/src/hooks/useOpenInEditor.ts Their usage in two places should be standardised: - frontend/src/components/tasks/AttemptHeaderCard.tsx - frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx * dropdown positioning * color * soften colours * add new task button * editor dialog via hook * project provider * fmt * lint * follow up styling * break words * card styles * Stop executions from follow up (vibe-kanban e2a2c75b) The follow up section currently disables the 'send' button if a task attempt is running, however instead we should show a destructive 'stop' button which will perform the same functionality as 'stop attempt' frontend/src/components/tasks/TaskFollowUpSection.tsx You can see how we stop already in frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx Maybe we could make this a hook and use tanstack similar to frontend/src/hooks/useBranchStatus.ts What about making the hook more generic, to cover start/stop and status retrieval. We should also combine the hook frontend/src/hooks/useExecutionProcesses.ts * Make sure the kanban columns are always at least full height (vibe-kanban 220cb780) There can be whitespace underneath the columns, ideally there should be no whitespace - the columns should extend to the bottom of the page, even when there aren't enough tasks to fill it up all the way ![Screenshot 2025-08-27 at 14.42.41.png](.vibe-images/11efe690-ec72-4513-a7b6-49641ff170c4.png) frontend/src/pages/project-tasks.tsx * Display diff summary (vibe-kanban f1736551) If files have been changed, we should display a summary of the changes like "6 files changed, +21 -19" in the AttemptHeaderCard, to the right of the dropdown, similar to how we do at the top of the difftab. We should also add an icon button to open the task attempt in full screen and at the diff tab. frontend/src/components/tasks/AttemptHeaderCard.tsx frontend/src/components/tasks/TaskDetails/DiffTab.tsx * styles * projects * full screen max width * full screen actions * remove log * style improve * create new attempt * darkmode * scroll diffs * Refactor useCreatePR (vibe-kanban e6b76f10) The useCreatePR hook should function similarly to useOpenInEditor, in that the the popup should be rendered in some root node. This improves the reusability of this functionality. We should then update TaskDetailsPanel to make the 'create pr' button real. frontend/src/hooks/useOpenInEditor.ts frontend/src/hooks/useCreatePR.ts frontend/src/components/tasks/TaskDetailsPanel.tsx * Rebasing should cause branch status to refresh (vibe-kanban 3da4fe0f) Currently doesn't in frontend/src/components/tasks/TaskDetailsPanel.tsx * project name * Change ?view=full to /full (vibe-kanban a25483a6) * Hide TaskDetailsHeader (vibe-kanban b73697bd) If the app is running inside of VS Code * copy * Add button to open repo (vibe-kanban e447df94) Open repo in IDE button in the navbar, next to create task button * style process cards * Errors not displayed properly (vibe-kanban fb65eb03) frontend/src/components/tasks/TaskDetailsToolbar.tsx Errors are currently failing silently on actions like merge and rebase * fmt * fix * fix border
2025-08-27 23:59:26 +01:00
ringColor: {
DEFAULT: 'hsl(var(--primary))', // e.g. Tailwind's blue-500
},
fontSize: { // These are downshifted by 1
xs: ['0.625rem', { lineHeight: '0.875rem' }], // 10px / 14px
sm: ['0.75rem', { lineHeight: '1rem' }], // 12px / 16px
base: ['0.875rem', { lineHeight: '1.25rem' }], // 14px / 20px
lg: ['1rem', { lineHeight: '1.5rem' }], // 16px / 24px
xl: ['1.125rem', { lineHeight: '1.75rem' }], // 18px / 28px
},
2025-06-14 15:14:08 -04:00
colors: {
border: "hsl(var(--border))",
input: "hsl(var(--input))",
ring: "hsl(var(--ring))",
background: "hsl(var(--background))",
foreground: "hsl(var(--foreground))",
primary: {
DEFAULT: "hsl(var(--primary))",
foreground: "hsl(var(--primary-foreground))",
},
secondary: {
DEFAULT: "hsl(var(--secondary))",
foreground: "hsl(var(--secondary-foreground))",
},
destructive: {
DEFAULT: "hsl(var(--destructive))",
foreground: "hsl(var(--destructive-foreground))",
},
muted: {
DEFAULT: "hsl(var(--muted))",
foreground: "hsl(var(--muted-foreground))",
},
accent: {
DEFAULT: "hsl(var(--accent))",
foreground: "hsl(var(--accent-foreground))",
},
popover: {
DEFAULT: "hsl(var(--popover))",
foreground: "hsl(var(--popover-foreground))",
},
card: {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
success: {
DEFAULT: "hsl(var(--success))",
foreground: "hsl(var(--success-foreground))",
},
warning: {
DEFAULT: "hsl(var(--warning))",
foreground: "hsl(var(--warning-foreground))",
},
info: {
DEFAULT: "hsl(var(--info))",
foreground: "hsl(var(--info-foreground))",
},
neutral: {
DEFAULT: "hsl(var(--neutral))",
foreground: "hsl(var(--neutral-foreground))",
},
status: {
init: "hsl(var(--status-init))",
"init-foreground": "hsl(var(--status-init-foreground))",
running: "hsl(var(--status-running))",
"running-foreground": "hsl(var(--status-running-foreground))",
complete: "hsl(var(--status-complete))",
"complete-foreground": "hsl(var(--status-complete-foreground))",
failed: "hsl(var(--status-failed))",
"failed-foreground": "hsl(var(--status-failed-foreground))",
paused: "hsl(var(--status-paused))",
"paused-foreground": "hsl(var(--status-paused-foreground))",
},
console: {
DEFAULT: "hsl(var(--console-background))",
foreground: "hsl(var(--console-foreground))",
success: "hsl(var(--console-success))",
error: "hsl(var(--console-error))",
},
2025-06-14 15:14:08 -04:00
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
Overhaul UI (#577) * font * flat ui * burger menu * button styles * drag effects * search * Improve * navbar * task details header WIP * task attempt window actions * task details * split out title description component * follow up * better board spacing * Incrementally use tanstack (vibe-kanban 0c34261d) Let's refactor the codebase to remove: @frontend/src/components/context/TaskDetailsContextProvider.tsx @frontend/src/components/context/TaskDetailsContextProvider.ts Instead, we want to use @tanstack/react-query * task attempt header info * ui for dropdown * optionally disable * Create hook for attempt actions (vibe-kanban 651551d9) - Start dev server - Rebase - Create PR - Merge These should all be hooks, similar to frontend/src/hooks/useOpenInEditor.ts Their usage in two places should be standardised: - frontend/src/components/tasks/AttemptHeaderCard.tsx - frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx * dropdown positioning * color * soften colours * add new task button * editor dialog via hook * project provider * fmt * lint * follow up styling * break words * card styles * Stop executions from follow up (vibe-kanban e2a2c75b) The follow up section currently disables the 'send' button if a task attempt is running, however instead we should show a destructive 'stop' button which will perform the same functionality as 'stop attempt' frontend/src/components/tasks/TaskFollowUpSection.tsx You can see how we stop already in frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx Maybe we could make this a hook and use tanstack similar to frontend/src/hooks/useBranchStatus.ts What about making the hook more generic, to cover start/stop and status retrieval. We should also combine the hook frontend/src/hooks/useExecutionProcesses.ts * Make sure the kanban columns are always at least full height (vibe-kanban 220cb780) There can be whitespace underneath the columns, ideally there should be no whitespace - the columns should extend to the bottom of the page, even when there aren't enough tasks to fill it up all the way ![Screenshot 2025-08-27 at 14.42.41.png](.vibe-images/11efe690-ec72-4513-a7b6-49641ff170c4.png) frontend/src/pages/project-tasks.tsx * Display diff summary (vibe-kanban f1736551) If files have been changed, we should display a summary of the changes like "6 files changed, +21 -19" in the AttemptHeaderCard, to the right of the dropdown, similar to how we do at the top of the difftab. We should also add an icon button to open the task attempt in full screen and at the diff tab. frontend/src/components/tasks/AttemptHeaderCard.tsx frontend/src/components/tasks/TaskDetails/DiffTab.tsx * styles * projects * full screen max width * full screen actions * remove log * style improve * create new attempt * darkmode * scroll diffs * Refactor useCreatePR (vibe-kanban e6b76f10) The useCreatePR hook should function similarly to useOpenInEditor, in that the the popup should be rendered in some root node. This improves the reusability of this functionality. We should then update TaskDetailsPanel to make the 'create pr' button real. frontend/src/hooks/useOpenInEditor.ts frontend/src/hooks/useCreatePR.ts frontend/src/components/tasks/TaskDetailsPanel.tsx * Rebasing should cause branch status to refresh (vibe-kanban 3da4fe0f) Currently doesn't in frontend/src/components/tasks/TaskDetailsPanel.tsx * project name * Change ?view=full to /full (vibe-kanban a25483a6) * Hide TaskDetailsHeader (vibe-kanban b73697bd) If the app is running inside of VS Code * copy * Add button to open repo (vibe-kanban e447df94) Open repo in IDE button in the navbar, next to create task button * style process cards * Errors not displayed properly (vibe-kanban fb65eb03) frontend/src/components/tasks/TaskDetailsToolbar.tsx Errors are currently failing silently on actions like merge and rebase * fmt * fix * fix border
2025-08-27 23:59:26 +01:00
fontFamily: {
'chivo-mono': ['Chivo Mono', 'Noto Emoji', 'monospace'],
Overhaul UI (#577) * font * flat ui * burger menu * button styles * drag effects * search * Improve * navbar * task details header WIP * task attempt window actions * task details * split out title description component * follow up * better board spacing * Incrementally use tanstack (vibe-kanban 0c34261d) Let's refactor the codebase to remove: @frontend/src/components/context/TaskDetailsContextProvider.tsx @frontend/src/components/context/TaskDetailsContextProvider.ts Instead, we want to use @tanstack/react-query * task attempt header info * ui for dropdown * optionally disable * Create hook for attempt actions (vibe-kanban 651551d9) - Start dev server - Rebase - Create PR - Merge These should all be hooks, similar to frontend/src/hooks/useOpenInEditor.ts Their usage in two places should be standardised: - frontend/src/components/tasks/AttemptHeaderCard.tsx - frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx * dropdown positioning * color * soften colours * add new task button * editor dialog via hook * project provider * fmt * lint * follow up styling * break words * card styles * Stop executions from follow up (vibe-kanban e2a2c75b) The follow up section currently disables the 'send' button if a task attempt is running, however instead we should show a destructive 'stop' button which will perform the same functionality as 'stop attempt' frontend/src/components/tasks/TaskFollowUpSection.tsx You can see how we stop already in frontend/src/components/tasks/Toolbar/CurrentAttempt.tsx Maybe we could make this a hook and use tanstack similar to frontend/src/hooks/useBranchStatus.ts What about making the hook more generic, to cover start/stop and status retrieval. We should also combine the hook frontend/src/hooks/useExecutionProcesses.ts * Make sure the kanban columns are always at least full height (vibe-kanban 220cb780) There can be whitespace underneath the columns, ideally there should be no whitespace - the columns should extend to the bottom of the page, even when there aren't enough tasks to fill it up all the way ![Screenshot 2025-08-27 at 14.42.41.png](.vibe-images/11efe690-ec72-4513-a7b6-49641ff170c4.png) frontend/src/pages/project-tasks.tsx * Display diff summary (vibe-kanban f1736551) If files have been changed, we should display a summary of the changes like "6 files changed, +21 -19" in the AttemptHeaderCard, to the right of the dropdown, similar to how we do at the top of the difftab. We should also add an icon button to open the task attempt in full screen and at the diff tab. frontend/src/components/tasks/AttemptHeaderCard.tsx frontend/src/components/tasks/TaskDetails/DiffTab.tsx * styles * projects * full screen max width * full screen actions * remove log * style improve * create new attempt * darkmode * scroll diffs * Refactor useCreatePR (vibe-kanban e6b76f10) The useCreatePR hook should function similarly to useOpenInEditor, in that the the popup should be rendered in some root node. This improves the reusability of this functionality. We should then update TaskDetailsPanel to make the 'create pr' button real. frontend/src/hooks/useOpenInEditor.ts frontend/src/hooks/useCreatePR.ts frontend/src/components/tasks/TaskDetailsPanel.tsx * Rebasing should cause branch status to refresh (vibe-kanban 3da4fe0f) Currently doesn't in frontend/src/components/tasks/TaskDetailsPanel.tsx * project name * Change ?view=full to /full (vibe-kanban a25483a6) * Hide TaskDetailsHeader (vibe-kanban b73697bd) If the app is running inside of VS Code * copy * Add button to open repo (vibe-kanban e447df94) Open repo in IDE button in the navbar, next to create task button * style process cards * Errors not displayed properly (vibe-kanban fb65eb03) frontend/src/components/tasks/TaskDetailsToolbar.tsx Errors are currently failing silently on actions like merge and rebase * fmt * fix * fix border
2025-08-27 23:59:26 +01:00
},
2025-06-14 15:14:08 -04:00
keyframes: {
"accordion-down": {
from: { height: "0" },
to: { height: "var(--radix-accordion-content-height)" },
},
"accordion-up": {
from: { height: "var(--radix-accordion-content-height)" },
to: { height: "0" },
},
pill: {
'0%': { opacity: '0' },
'10%': { opacity: '1' },
'80%': { opacity: '1' },
'100%': { opacity: '0' },
},
2025-06-14 15:14:08 -04:00
},
animation: {
"accordion-down": "accordion-down 0.2s ease-out",
"accordion-up": "accordion-up 0.2s ease-out",
pill: 'pill 2s ease-in-out forwards',
2025-06-14 15:14:08 -04:00
},
},
},
plugins: [require("tailwindcss-animate"), require("@tailwindcss/container-queries")],
2025-06-14 15:14:08 -04:00
}