mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-01 08:13:37 +00:00
- Introduced default feature model settings in the settings view, allowing users to specify the default AI model for new feature cards. - Updated navigation to include a direct link to model defaults in the settings menu. - Enhanced the Add Feature dialog to utilize the default feature model from the app store. - Implemented synchronization of the default feature model in settings migration and sync hooks. - Improved UI components to reflect changes in default settings, ensuring a cohesive user experience.
87 lines
2.6 KiB
TypeScript
87 lines
2.6 KiB
TypeScript
import React from 'react';
|
|
import type { LucideIcon } from 'lucide-react';
|
|
import {
|
|
Key,
|
|
Bot,
|
|
SquareTerminal,
|
|
Palette,
|
|
Settings2,
|
|
Volume2,
|
|
FlaskConical,
|
|
Trash2,
|
|
Workflow,
|
|
Plug,
|
|
MessageSquareText,
|
|
User,
|
|
Shield,
|
|
Cpu,
|
|
GitBranch,
|
|
} from 'lucide-react';
|
|
import { AnthropicIcon, CursorIcon, OpenAIIcon, OpenCodeIcon } from '@/components/ui/provider-icon';
|
|
import type { SettingsViewId } from '../hooks/use-settings-view';
|
|
|
|
export interface NavigationItem {
|
|
id: SettingsViewId;
|
|
label: string;
|
|
icon: LucideIcon | React.ComponentType<{ className?: string }>;
|
|
subItems?: NavigationItem[];
|
|
}
|
|
|
|
export interface NavigationGroup {
|
|
label: string;
|
|
items: NavigationItem[];
|
|
}
|
|
|
|
// Global settings organized into groups
|
|
export const GLOBAL_NAV_GROUPS: NavigationGroup[] = [
|
|
{
|
|
label: 'Model & Prompts',
|
|
items: [
|
|
{ id: 'defaults', label: 'Feature Defaults', icon: FlaskConical },
|
|
{ id: 'model-defaults', label: 'Model Defaults', icon: Workflow },
|
|
{ id: 'worktrees', label: 'Worktrees', icon: GitBranch },
|
|
{ id: 'prompts', label: 'Prompt Customization', icon: MessageSquareText },
|
|
{ id: 'api-keys', label: 'API Keys', icon: Key },
|
|
{
|
|
id: 'providers',
|
|
label: 'AI Providers',
|
|
icon: Bot,
|
|
subItems: [
|
|
{ id: 'claude-provider', label: 'Claude', icon: AnthropicIcon },
|
|
{ id: 'cursor-provider', label: 'Cursor', icon: CursorIcon },
|
|
{ id: 'codex-provider', label: 'Codex', icon: OpenAIIcon },
|
|
{ id: 'opencode-provider', label: 'OpenCode', icon: OpenCodeIcon },
|
|
],
|
|
},
|
|
{ id: 'mcp-servers', label: 'MCP Servers', icon: Plug },
|
|
],
|
|
},
|
|
{
|
|
label: 'Interface',
|
|
items: [
|
|
{ id: 'appearance', label: 'Appearance', icon: Palette },
|
|
{ id: 'terminal', label: 'Terminal', icon: SquareTerminal },
|
|
{ id: 'keyboard', label: 'Keyboard Shortcuts', icon: Settings2 },
|
|
{ id: 'audio', label: 'Audio', icon: Volume2 },
|
|
],
|
|
},
|
|
{
|
|
label: 'Account & Security',
|
|
items: [
|
|
{ id: 'account', label: 'Account', icon: User },
|
|
{ id: 'security', label: 'Security', icon: Shield },
|
|
],
|
|
},
|
|
];
|
|
|
|
// Flat list of all global nav items for backwards compatibility
|
|
export const GLOBAL_NAV_ITEMS: NavigationItem[] = GLOBAL_NAV_GROUPS.flatMap((group) => group.items);
|
|
|
|
// Project-specific settings - only visible when a project is selected
|
|
export const PROJECT_NAV_ITEMS: NavigationItem[] = [
|
|
{ id: 'danger', label: 'Danger Zone', icon: Trash2 },
|
|
];
|
|
|
|
// Legacy export for backwards compatibility
|
|
export const NAV_ITEMS: NavigationItem[] = [...GLOBAL_NAV_ITEMS, ...PROJECT_NAV_ITEMS];
|