diff --git a/ui/desktop/src/App.tsx b/ui/desktop/src/App.tsx index 8a9d1fcdd8c6..2e9b0655fba9 100644 --- a/ui/desktop/src/App.tsx +++ b/ui/desktop/src/App.tsx @@ -231,7 +231,7 @@ const ConfigureProvidersRoute = () => { const navigate = useNavigate(); return ( -
+
navigate('/settings', { state: { section: 'models' } })} isOnboarding={false} @@ -248,7 +248,7 @@ const WelcomeRoute = ({ onSelectProvider }: WelcomeRouteProps) => { const navigate = useNavigate(); return ( -
+
{ navigate('/', { replace: true }); @@ -625,7 +625,7 @@ export function AppInner() { toastClassName={() => `relative min-h-16 mb-4 p-2 rounded-lg flex justify-between overflow-hidden cursor-pointer - text-text-on-accent bg-background-inverse + text-text-inverse bg-background-inverse ` } style={{ width: '450px' }} @@ -636,7 +636,7 @@ export function AppInner() { pauseOnHover /> -
+
diff --git a/ui/desktop/src/components/AnnouncementModal.tsx b/ui/desktop/src/components/AnnouncementModal.tsx index 197a60c8acc1..72be7be9c63b 100644 --- a/ui/desktop/src/components/AnnouncementModal.tsx +++ b/ui/desktop/src/components/AnnouncementModal.tsx @@ -135,7 +135,7 @@ export default function AnnouncementModal() { diff --git a/ui/desktop/src/components/ApiKeyTester.tsx b/ui/desktop/src/components/ApiKeyTester.tsx index 7017849b9c75..a49fed7eb52d 100644 --- a/ui/desktop/src/components/ApiKeyTester.tsx +++ b/ui/desktop/src/components/ApiKeyTester.tsx @@ -73,14 +73,14 @@ export default function ApiKeyTester({ onSuccess, onStartTesting }: ApiKeyTester
-
+
- +
-

+

Quick Setup with API Key

- Auto-detect your provider + Auto-detect your provider
@@ -92,7 +92,7 @@ export default function ApiKeyTester({ onSuccess, onStartTesting }: ApiKeyTester value={apiKey} onChange={(e) => setApiKey(e.target.value)} placeholder="Enter your API key (OpenAI, Anthropic, Google, etc.)" - className="flex-1 px-3 py-2 border rounded-lg bg-background-default text-text-default placeholder-text-muted focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="flex-1 px-3 py-2 border rounded-lg bg-background-primary text-text-primary placeholder:text-text-secondary focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" disabled={isLoading} onKeyDown={(e) => { if (e.key === 'Enter' && canSubmit) { @@ -116,7 +116,7 @@ export default function ApiKeyTester({ onSuccess, onStartTesting }: ApiKeyTester {/* Loading state */} {isLoading && ( -
+
Detecting provider and validating key...
@@ -148,8 +148,8 @@ export default function ApiKeyTester({ onSuccess, onStartTesting }: ApiKeyTester
-

Suggestions:

-
    +

    Suggestions:

    +
    • diff --git a/ui/desktop/src/components/BaseChat.tsx b/ui/desktop/src/components/BaseChat.tsx index 34f2df8264c4..ef16918179af 100644 --- a/ui/desktop/src/components/BaseChat.tsx +++ b/ui/desktop/src/components/BaseChat.tsx @@ -346,13 +346,13 @@ export default function BaseChat({ return (
      {renderHeader && renderHeader()}
      -
      +

      Failed to Load Session

      @@ -362,7 +362,7 @@ export default function BaseChat({ onClick={() => { setView('chat'); }} - className="px-4 py-2 text-center cursor-pointer text-text-default border border-border-default hover:bg-background-muted rounded-lg transition-all duration-150" + className="px-4 py-2 text-center cursor-pointer text-text-primary border border-border-primary hover:bg-background-secondary rounded-lg transition-all duration-150" > Go home @@ -377,7 +377,7 @@ export default function BaseChat({ return (
      @@ -394,14 +394,14 @@ export default function BaseChat({ className="no-drag flex flex-row items-center gap-1 hover:opacity-80 transition-opacity" > - goose + goose
      {recipe?.title && ( -
      +
      )} diff --git a/ui/desktop/src/components/ChatInput.tsx b/ui/desktop/src/components/ChatInput.tsx index 347382d30f3d..e68f8bc68365 100644 --- a/ui/desktop/src/components/ChatInput.tsx +++ b/ui/desktop/src/components/ChatInput.tsx @@ -1165,9 +1165,9 @@ export default function ChatInput({ disableAnimation ? '' : 'page-transition' } ${ isFocused - ? 'border-border-strong hover:border-border-strong' - : 'border-border-default hover:border-border-default' - } bg-background-default z-10 rounded-t-2xl`} + ? 'border-border-secondary hover:border-border-secondary' + : 'border-border-primary hover:border-border-primary' + } bg-background-primary z-10 rounded-t-2xl`} data-drop-zone="true" onDrop={handleLocalDrop} onDragOver={handleLocalDragOver} @@ -1191,7 +1191,7 @@ export default function ChatInput({ onTriggerQueueProcessing={handleResumeQueue} editingMessageIdRef={editingMessageIdRef} isPaused={queuePausedRef.current} - className="border-b border-border-default" + className="border-b border-border-primary" /> )} {/* Input row with inline action buttons wrapped in form */} @@ -1219,7 +1219,7 @@ export default function ChatInput({ overflowY: 'auto', paddingRight: dictationProvider ? '180px' : '120px', }} - className="w-full outline-none border-none focus:ring-0 bg-transparent px-3 pt-3 pb-1.5 text-sm resize-none text-text-default placeholder:text-text-muted" + className="w-full outline-none border-none focus:ring-0 bg-transparent px-3 pt-3 pb-1.5 text-sm resize-none text-text-primary placeholder:text-text-secondary" /> {/* Inline action buttons - absolutely positioned on the right */} @@ -1346,15 +1346,15 @@ export default function ChatInput({ {/* Recording/transcribing status indicator - positioned above the button row */} {(isRecording || isTranscribing) && ( -
      +
      {isRecording && ( - + Listening )} - {isRecording && isTranscribing && } + {isRecording && isTranscribing && } {isTranscribing && ( @@ -1370,7 +1370,7 @@ export default function ChatInput({ {/* Combined files and images preview */} {(pastedImages.length > 0 || allDroppedFiles.length > 0) && ( -
      +
      {/* Render pasted images first */} {pastedImages.map((img) => (
      @@ -1378,7 +1378,7 @@ export default function ChatInput({ {`Pasted )} {img.isLoading && ( @@ -1419,7 +1419,7 @@ export default function ChatInput({ {file.name} )} {file.isLoading && ( @@ -1437,15 +1437,15 @@ export default function ChatInput({
      ) : ( // File box preview -
      -
      +
      +
      {file.name.split('.').pop()?.toUpperCase() || 'FILE'}
      -

      +

      {file.name}

      -

      {file.type || 'Unknown type'}

      +

      {file.type || 'Unknown type'}

      )} @@ -1482,7 +1482,7 @@ export default function ChatInput({ onRestartStart={() => setChatState?.(ChatState.RestartingAgent)} onRestartEnd={() => setChatState?.(ChatState.Idle)} /> -
      +
      Attach file -
      +
      {/* Model selector, mode selector, alerts, summarize button */}
      {/* Cost Tracker */} @@ -1523,13 +1523,13 @@ export default function ChatInput({ />
      -
      +
      -
      +
      {sessionId && messages.length > 0 && ( <> -
      +
      @@ -1545,7 +1545,7 @@ export default function ChatInput({ }} variant="ghost" size="sm" - className="flex items-center justify-center text-text-default/70 hover:text-text-default text-xs cursor-pointer" + className="flex items-center justify-center text-text-primary/70 hover:text-text-primary text-xs cursor-pointer" > @@ -1568,7 +1568,7 @@ export default function ChatInput({ }} variant="ghost" size="sm" - className="flex items-center justify-center text-text-default/70 hover:text-text-default text-xs cursor-pointer transition-colors" + className="flex items-center justify-center text-text-primary/70 hover:text-text-primary text-xs cursor-pointer transition-colors" > diff --git a/ui/desktop/src/components/ElicitationRequest.tsx b/ui/desktop/src/components/ElicitationRequest.tsx index b1720d3ddf3a..b8b6c3cf7007 100644 --- a/ui/desktop/src/components/ElicitationRequest.tsx +++ b/ui/desktop/src/components/ElicitationRequest.tsx @@ -57,7 +57,7 @@ export default function ElicitationRequest({ if (isCancelledMessage) { return ( -
      +
      Information request was cancelled.
      ); @@ -65,7 +65,7 @@ export default function ElicitationRequest({ if (submitted) { return ( -
      +
      -
      +
      +
      -
      +
      {message || 'Goose needs some information from you.'}
      -
      +
      Honk! {window?.appConfig?.get('GOOSE_VERSION') !== undefined ? ( -

      +

      An error occurred in Goose v{window?.appConfig?.get('GOOSE_VERSION') as string}.

      ) : ( -

      +

      An error occurred.

      )} diff --git a/ui/desktop/src/components/GooseMessage.tsx b/ui/desktop/src/components/GooseMessage.tsx index b6f04f83452e..794ae59fcb44 100644 --- a/ui/desktop/src/components/GooseMessage.tsx +++ b/ui/desktop/src/components/GooseMessage.tsx @@ -143,8 +143,8 @@ export default function GooseMessage({ )} {cotText && ( -
      - +
      + Show thinking
      @@ -172,7 +172,7 @@ export default function GooseMessage({ {toolRequests.length === 0 && (
      {!isStreaming && ( -
      +
      {timestamp}
      )} @@ -213,7 +213,7 @@ export default function GooseMessage({ ); })}
      -
      +
      {!isStreaming && !hideTimestamp && timestamp}
      diff --git a/ui/desktop/src/components/GooseSidebar/AppSidebar.tsx b/ui/desktop/src/components/GooseSidebar/AppSidebar.tsx index b80fd519647e..3342f9dff6aa 100644 --- a/ui/desktop/src/components/GooseSidebar/AppSidebar.tsx +++ b/ui/desktop/src/components/GooseSidebar/AppSidebar.tsx @@ -155,18 +155,18 @@ const SessionList = React.memo<{
      {/* Vertical line segment - full height except last item stops at middle */}
      {/* Horizontal branch line */} -
      +
      @@ -185,10 +185,10 @@ export function OllamaSetup({ onSuccess, onCancel }: OllamaSetupProps) {

      Downloading {getPreferredModel()}...

      {downloadProgress && ( <> -

      {downloadProgress.status}

      +

      {downloadProgress.status}

      {downloadProgress.total && downloadProgress.completed && (
      -
      +
      -

      +

      {Math.round((downloadProgress.completed / downloadProgress.total) * 100)}%

      @@ -209,7 +209,7 @@ export function OllamaSetup({ onSuccess, onCancel }: OllamaSetupProps) { @@ -228,8 +228,8 @@ export function OllamaSetup({ onSuccess, onCancel }: OllamaSetupProps) {
      -

      Waiting for Ollama to start...

      -

      +

      Waiting for Ollama to start...

      +

      Once Ollama is installed and running, we'll automatically detect it.

      @@ -239,7 +239,7 @@ export function OllamaSetup({ onSuccess, onCancel }: OllamaSetupProps) { target="_blank" rel="noopener noreferrer" onClick={handleInstallClick} - className="block w-full px-6 py-3 bg-background-muted text-text-default rounded-lg transition-colors font-medium text-center" + className="block w-full px-6 py-3 bg-background-secondary text-text-primary rounded-lg transition-colors font-medium text-center" > Install Ollama @@ -249,7 +249,7 @@ export function OllamaSetup({ onSuccess, onCancel }: OllamaSetupProps) { diff --git a/ui/desktop/src/components/ParameterInputModal.tsx b/ui/desktop/src/components/ParameterInputModal.tsx index bd0ea6787bcc..17a0d17060a9 100644 --- a/ui/desktop/src/components/ParameterInputModal.tsx +++ b/ui/desktop/src/components/ParameterInputModal.tsx @@ -90,9 +90,9 @@ const ParameterInputModal: React.FC = ({
      {showCancelOptions ? ( // Cancel options modal -
      -

      Cancel Recipe Setup

      -

      What would you like to do?

      +
      +

      Cancel Recipe Setup

      +

      What would you like to do?

      ) : ( // Main parameter form -
      +
      -

      Recipe Parameters

      +

      Recipe Parameters

      {parameters.map((param) => (
      -