diff --git a/ui/desktop/src/components/Modal.tsx b/ui/desktop/src/components/Modal.tsx index 0f59b097..7ead76a1 100644 --- a/ui/desktop/src/components/Modal.tsx +++ b/ui/desktop/src/components/Modal.tsx @@ -62,7 +62,7 @@ export default function Modal({ return (
diff --git a/ui/desktop/src/components/settings/extensions/ManualExtensionModal.tsx b/ui/desktop/src/components/settings/extensions/ManualExtensionModal.tsx index 6de376a2..637c2389 100644 --- a/ui/desktop/src/components/settings/extensions/ManualExtensionModal.tsx +++ b/ui/desktop/src/components/settings/extensions/ManualExtensionModal.tsx @@ -3,8 +3,7 @@ import { Card } from '../../ui/card'; import { Button } from '../../ui/button'; import { Input } from '../../ui/input'; import { FullExtensionConfig, DEFAULT_EXTENSION_TIMEOUT } from '../../../extensions'; -import { toast } from 'react-toastify'; -import Select from 'react-select'; +import { Select } from '../../ui/Select'; import { createDarkSelectStyles, darkSelectTheme } from '../../ui/select-styles'; import { getApiUrl, getSecretKey } from '../../../config'; import { toastError } from '../../../toasts'; @@ -147,8 +146,6 @@ export function ManualExtensionModal({ isOpen, onClose, onSubmit }: ManualExtens onChange={(option) => setFormData({ ...formData, type: option?.value as FullExtensionConfig['type'] }) } - styles={createDarkSelectStyles()} - theme={darkSelectTheme} />
diff --git a/ui/desktop/src/components/settings_v2/SettingsView.tsx b/ui/desktop/src/components/settings_v2/SettingsView.tsx index ffb8e984..78976eff 100644 --- a/ui/desktop/src/components/settings_v2/SettingsView.tsx +++ b/ui/desktop/src/components/settings_v2/SettingsView.tsx @@ -22,13 +22,14 @@ export default function SettingsView({ viewOptions: SettingsViewOptions; }) { return ( -
+
onClose()} /> +

Settings

{/* Content Area */} diff --git a/ui/desktop/src/components/settings_v2/extensions/ExtensionsSection.tsx b/ui/desktop/src/components/settings_v2/extensions/ExtensionsSection.tsx index 4a2372d3..afdd7928 100644 --- a/ui/desktop/src/components/settings_v2/extensions/ExtensionsSection.tsx +++ b/ui/desktop/src/components/settings_v2/extensions/ExtensionsSection.tsx @@ -113,11 +113,11 @@ export default function ExtensionsSection() { }; return ( -
-
-

Extensions

+
+
+

Extensions

-
+

These extensions use the Model Context Protocol (MCP). They can expand Goose's capabilities using three main components: Prompts, Resources, and Tools. @@ -131,46 +131,46 @@ export default function ExtensionsSection() {

+ + {/* Modal for updating an existing extension */} + {isModalOpen && selectedExtension && ( + + )} + + {/* Modal for adding a new extension */} + {isAddModalOpen && ( + + )}
- - {/* Modal for updating an existing extension */} - {isModalOpen && selectedExtension && ( - - )} - - {/* Modal for adding a new extension */} - {isAddModalOpen && ( - - )}
); } diff --git a/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx b/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx index 0dd56773..4517ba93 100644 --- a/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx +++ b/ui/desktop/src/components/settings_v2/extensions/modal/EnvVarsSection.tsx @@ -74,7 +74,7 @@ export default function EnvVarsSection({ -

+

Add key-value pairs for environment variables. Click the "+" button to add after filling both fields.

@@ -89,7 +89,7 @@ export default function EnvVarsSection({ onChange={(e) => onChange(index, 'key', e.target.value)} placeholder="Variable name" className={cn( - 'w-full border-borderSubtle text-textStandard', + 'w-full text-textStandard border-borderSubtle hover:border-borderStandard', isFieldInvalid(index, 'key') && 'border-red-500 focus:border-red-500' )} /> @@ -100,7 +100,7 @@ export default function EnvVarsSection({ onChange={(e) => onChange(index, 'value', e.target.value)} placeholder="Value" className={cn( - 'w-full border-borderSubtle text-textStandard', + 'w-full text-textStandard border-borderSubtle hover:border-borderStandard', isFieldInvalid(index, 'value') && 'border-red-500 focus:border-red-500' )} /> @@ -124,7 +124,7 @@ export default function EnvVarsSection({ }} placeholder="Variable name" className={cn( - 'w-full border-borderStandard text-textStandard', + 'w-full text-textStandard border-borderSubtle hover:border-borderStandard', invalidFields.key && 'border-red-500 focus:border-red-500' )} /> @@ -136,16 +136,16 @@ export default function EnvVarsSection({ }} placeholder="Value" className={cn( - 'w-full border-borderStandard text-textStandard', + 'w-full text-textStandard border-borderSubtle hover:border-borderStandard', invalidFields.value && 'border-red-500 focus:border-red-500' )} />
{validationError &&
{validationError}
} diff --git a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx index 46ac6855..7433a2df 100644 --- a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx +++ b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionInfoFields.tsx @@ -1,5 +1,5 @@ import { Input } from '../../../ui/input'; -import Select from 'react-select'; +import { Select } from '../../../ui/Select'; import React, { useState } from 'react'; interface ExtensionInfoFieldsProps { diff --git a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx index fd03b123..d6d75722 100644 --- a/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx +++ b/ui/desktop/src/components/settings_v2/extensions/modal/ExtensionModal.tsx @@ -131,7 +131,7 @@ export default function ExtensionModal({ <>

- Are you sure you want to delete "{formData.name}"? This action cannot be undone. + Are you sure you want to remove "{formData.name}"? This action cannot be undone.

)} - )} - handleToggle(extension)} - variant="mono" - /> -
+
handleToggle(extension)} + > +
+

{getFriendlyTitle(extension)}

+

{renderFormattedSubtitle()}

+
+ +
e.stopPropagation()} + > + {/* Only show config button for non-builtin extensions */} + {extension.type !== 'builtin' && ( + + )} + handleToggle(extension)} + variant="mono" + />
-

{renderFormattedSubtitle()}

); } diff --git a/ui/desktop/src/components/settings_v2/extensions/subcomponents/ExtensionList.tsx b/ui/desktop/src/components/settings_v2/extensions/subcomponents/ExtensionList.tsx index ebc473a8..9d54bcfc 100644 --- a/ui/desktop/src/components/settings_v2/extensions/subcomponents/ExtensionList.tsx +++ b/ui/desktop/src/components/settings_v2/extensions/subcomponents/ExtensionList.tsx @@ -13,7 +13,7 @@ interface ExtensionListProps { export default function ExtensionList({ extensions, onToggle, onConfigure }: ExtensionListProps) { return ( -
+
{extensions.map((extension) => ( - +
+
{/* Header */}
-

- Configure Approve Mode -

+

Configure approve mode

-

+

Approve requests can either be given to all tool requests or determine which actions may need integration

@@ -81,22 +79,22 @@ export function ConfigureApproveMode({
{/* Actions */} -
+
diff --git a/ui/desktop/src/components/settings_v2/mode/ModeSection.tsx b/ui/desktop/src/components/settings_v2/mode/ModeSection.tsx index bacde850..bf462220 100644 --- a/ui/desktop/src/components/settings_v2/mode/ModeSection.tsx +++ b/ui/desktop/src/components/settings_v2/mode/ModeSection.tsx @@ -62,11 +62,11 @@ export const ModeSection = () => { }, []); return ( -
-
-

Mode

+
+
+

Mode

-
+

Configure how Goose interacts with tools and extensions

diff --git a/ui/desktop/src/components/settings_v2/mode/ModeSelectionItem.tsx b/ui/desktop/src/components/settings_v2/mode/ModeSelectionItem.tsx index f9de90ce..27a1d1c0 100644 --- a/ui/desktop/src/components/settings_v2/mode/ModeSelectionItem.tsx +++ b/ui/desktop/src/components/settings_v2/mode/ModeSelectionItem.tsx @@ -11,22 +11,22 @@ export interface GooseMode { export const all_goose_modes: GooseMode[] = [ { key: 'auto', - label: 'Completely Autonomous', + label: 'Completely autonomous', description: 'Full file modification capabilities, edit, create, and delete files freely.', }, { key: 'approve', - label: 'Manual Approval', + label: 'Manual approval', description: 'All tools, extensions and file modifications will require human approval', }, { key: 'smart_approve', - label: 'Smart Approval', + label: 'Smart approval', description: 'Intelligently determine which actions need approval based on risk level ', }, { key: 'chat', - label: 'Chat Only', + label: 'Chat only', description: 'Engage with the selected provider without using tools or extensions.', }, ]; @@ -89,20 +89,23 @@ export function ModeSelectionItem({ }, [currentMode, mode.key]); return ( -
+
handleModeChange(mode.key)} > -
-

{mode.label}

- {showDescription && ( -

- {mode.description} -

- )} +
+
+

{mode.label}

+ {showDescription && ( +

+ {mode.description} +

+ )} +
-
+ +
{!isApproveModeConfigure && (mode.key == 'approve' || mode.key == 'smart_approve') && (
diff --git a/ui/desktop/src/components/settings_v2/models/ModelsSection.tsx b/ui/desktop/src/components/settings_v2/models/ModelsSection.tsx index 94b1a6ee..c8b3f6c7 100644 --- a/ui/desktop/src/components/settings_v2/models/ModelsSection.tsx +++ b/ui/desktop/src/components/settings_v2/models/ModelsSection.tsx @@ -58,14 +58,14 @@ export default function ModelsSection({ setView }: ModelsSectionProps) { }, []); return ( -
-
-

Models

+
+
+

Models

-
-
-

{model}

-

{provider}

+
+
+

{model}

+

{provider}

diff --git a/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelButton.tsx b/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelButton.tsx index 149daf0e..37b7217f 100644 --- a/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelButton.tsx +++ b/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelButton.tsx @@ -1,8 +1,8 @@ import React, { useState } from 'react'; import { Button } from '../../../ui/button'; import { AddModelModal } from './AddModelModal'; -import { Gear } from '../../../icons'; import type { View } from '../../../../App'; +import { ArrowLeftRight } from 'lucide-react'; interface AddModelButtonProps { setView: (view: View) => void; @@ -14,11 +14,11 @@ export const AddModelButton = ({ setView }: AddModelButtonProps) => { return ( <> {isAddModelModalOpen ? ( setIsAddModelModalOpen(false)} /> diff --git a/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelModal.tsx b/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelModal.tsx index b8132400..8fb88a23 100644 --- a/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelModal.tsx +++ b/ui/desktop/src/components/settings_v2/models/subcomponents/AddModelModal.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { ExternalLink, Plus } from 'lucide-react'; +import { ArrowLeftRight, ExternalLink, Plus } from 'lucide-react'; import Modal from '../../../Modal'; import { Button } from '../../../ui/button'; @@ -221,10 +221,10 @@ export const AddModelModal = ({ onClose, setView }: AddModelModalProps) => { } >
-
- +
+
Switch models
-
+
Configure your AI model providers by adding their API keys. Your keys are stored securely and encrypted locally.
@@ -233,7 +233,7 @@ export const AddModelModal = ({ onClose, setView }: AddModelModalProps) => { href={QUICKSTART_GUIDE_URL} target="_blank" rel="noopener noreferrer" - className="flex items-center justify-center text-textStandard font-medium text-sm" + className="flex items-center text-textStandard font-medium text-sm" > View quick start guide diff --git a/ui/desktop/src/components/settings_v2/models/subcomponents/ModelSettingsButtons.tsx b/ui/desktop/src/components/settings_v2/models/subcomponents/ModelSettingsButtons.tsx index ab3ae3da..3ef3264b 100644 --- a/ui/desktop/src/components/settings_v2/models/subcomponents/ModelSettingsButtons.tsx +++ b/ui/desktop/src/components/settings_v2/models/subcomponents/ModelSettingsButtons.tsx @@ -10,16 +10,16 @@ interface ConfigureModelButtonsProps { export default function ModelSettingsButtons({ setView }: ConfigureModelButtonsProps) { return ( -
+
); diff --git a/ui/desktop/src/components/settings_v2/providers/subcomponents/CardContainer.tsx b/ui/desktop/src/components/settings_v2/providers/subcomponents/CardContainer.tsx index f2c01de2..6d749e95 100644 --- a/ui/desktop/src/components/settings_v2/providers/subcomponents/CardContainer.tsx +++ b/ui/desktop/src/components/settings_v2/providers/subcomponents/CardContainer.tsx @@ -34,7 +34,7 @@ export default function CardContainer({ }: CardContainerProps) { return (
{/*Title*/} -
-

Session sharing

+
+

Session sharing

@@ -103,7 +103,7 @@ export default function SessionSharingSection() {
{/* Toggle for enabling session sharing */}
-