diff --git a/ui/desktop/src/components/McpApps/toolsCache.ts b/ui/desktop/src/components/McpApps/toolsCache.ts index 3c7bff067..e2a63aeca 100644 --- a/ui/desktop/src/components/McpApps/toolsCache.ts +++ b/ui/desktop/src/components/McpApps/toolsCache.ts @@ -36,15 +36,3 @@ export function getCachedTools( cache.set(key, promise); return promise; } - -export function clearToolsCache(sessionId?: string): void { - if (!sessionId) { - cache.clear(); - return; - } - for (const key of cache.keys()) { - if (key.startsWith(`${sessionId}:`)) { - cache.delete(key); - } - } -} diff --git a/ui/desktop/src/components/ToolCallWithResponse.tsx b/ui/desktop/src/components/ToolCallWithResponse.tsx index 1f0235483..a3fab0fc1 100644 --- a/ui/desktop/src/components/ToolCallWithResponse.tsx +++ b/ui/desktop/src/components/ToolCallWithResponse.tsx @@ -12,7 +12,6 @@ import { ToolConfirmationData, } from '../types/message'; import { cn, snakeToTitleCase } from '../utils'; -import { LoadingStatus } from './ui/Dot'; import { ChevronRight, ExternalLink } from 'lucide-react'; import { TooltipWrapper } from './settings/providers/subcomponents/buttons/TooltipWrapper'; import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js'; @@ -22,6 +21,8 @@ import McpAppRenderer from './McpApps/McpAppRenderer'; import ToolApprovalButtons from './ToolApprovalButtons'; import { defineMessages, useIntl } from '../i18n'; +type LoadingStatus = 'loading' | 'success' | 'error'; + const i18n = defineMessages({ viewSubagentSession: { id: 'toolCallWithResponse.viewSubagentSession', diff --git a/ui/desktop/src/components/icons/Anthropic.tsx b/ui/desktop/src/components/icons/Anthropic.tsx deleted file mode 100644 index 2d2ca8a28..000000000 --- a/ui/desktop/src/components/icons/Anthropic.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Anthropic({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/ArrowRight.tsx b/ui/desktop/src/components/icons/ArrowRight.tsx deleted file mode 100644 index 5f4fe3177..000000000 --- a/ui/desktop/src/components/icons/ArrowRight.tsx +++ /dev/null @@ -1,23 +0,0 @@ -interface ArrowRightProps { - className?: string; -} - -export function ArrowRight({ className = '' }: ArrowRightProps) { - return ( - - - - ); -} diff --git a/ui/desktop/src/components/icons/Back.tsx b/ui/desktop/src/components/icons/Back.tsx deleted file mode 100644 index 294d54e5a..000000000 --- a/ui/desktop/src/components/icons/Back.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function Back({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/ChatGPT.tsx b/ui/desktop/src/components/icons/ChatGPT.tsx deleted file mode 100644 index 59ef88169..000000000 --- a/ui/desktop/src/components/icons/ChatGPT.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export default function ChatGPT({ className = '' }) { - return ( - - - - ); -} diff --git a/ui/desktop/src/components/icons/ChatSmart.tsx b/ui/desktop/src/components/icons/ChatSmart.tsx deleted file mode 100644 index acdd377ab..000000000 --- a/ui/desktop/src/components/icons/ChatSmart.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function ChatSmart({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/ChevronDown.tsx b/ui/desktop/src/components/icons/ChevronDown.tsx deleted file mode 100644 index 35603c0f1..000000000 --- a/ui/desktop/src/components/icons/ChevronDown.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function ChevronDown({ className }: { className?: string }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/ChevronRight.tsx b/ui/desktop/src/components/icons/ChevronRight.tsx deleted file mode 100644 index 4e91907f0..000000000 --- a/ui/desktop/src/components/icons/ChevronRight.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; - -interface Props extends React.ComponentPropsWithoutRef<'svg'> { - className?: string; -} - -export function ChevronRight({ className = '', ...props }: Props) { - return ( - - - - ); -} diff --git a/ui/desktop/src/components/icons/ChevronUp.tsx b/ui/desktop/src/components/icons/ChevronUp.tsx deleted file mode 100644 index 792d59424..000000000 --- a/ui/desktop/src/components/icons/ChevronUp.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function ChevronUp({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Discord.tsx b/ui/desktop/src/components/icons/Discord.tsx deleted file mode 100644 index b26397c73..000000000 --- a/ui/desktop/src/components/icons/Discord.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Discord({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Document.tsx b/ui/desktop/src/components/icons/Document.tsx deleted file mode 100644 index 4c515c526..000000000 --- a/ui/desktop/src/components/icons/Document.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function Document({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Idea.tsx b/ui/desktop/src/components/icons/Idea.tsx deleted file mode 100644 index 8f1dd1275..000000000 --- a/ui/desktop/src/components/icons/Idea.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function Idea({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Key.tsx b/ui/desktop/src/components/icons/Key.tsx deleted file mode 100644 index e7ff465db..000000000 --- a/ui/desktop/src/components/icons/Key.tsx +++ /dev/null @@ -1,35 +0,0 @@ -interface KeyProps { - className?: string; -} - -export function Key({ className = '' }: KeyProps) { - return ( - - - - - - - - - - - ); -} diff --git a/ui/desktop/src/components/icons/LinkedIn.tsx b/ui/desktop/src/components/icons/LinkedIn.tsx deleted file mode 100644 index a2be6b967..000000000 --- a/ui/desktop/src/components/icons/LinkedIn.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function LinkedIn({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/More.tsx b/ui/desktop/src/components/icons/More.tsx deleted file mode 100644 index 00df1c6d7..000000000 --- a/ui/desktop/src/components/icons/More.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function More({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Ollama.tsx b/ui/desktop/src/components/icons/Ollama.tsx deleted file mode 100644 index 4e7b57d36..000000000 --- a/ui/desktop/src/components/icons/Ollama.tsx +++ /dev/null @@ -1,45 +0,0 @@ -export default function Ollama({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/OpenAI.tsx b/ui/desktop/src/components/icons/OpenAI.tsx deleted file mode 100644 index b00bcfca7..000000000 --- a/ui/desktop/src/components/icons/OpenAI.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export default function OpenAI({ className = '' }) { - return ( - - - - ); -} diff --git a/ui/desktop/src/components/icons/OpenRouter.tsx b/ui/desktop/src/components/icons/OpenRouter.tsx deleted file mode 100644 index 6a7d760c3..000000000 --- a/ui/desktop/src/components/icons/OpenRouter.tsx +++ /dev/null @@ -1,44 +0,0 @@ -export default function OpenRouter({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Refresh.tsx b/ui/desktop/src/components/icons/Refresh.tsx deleted file mode 100644 index f97e43235..000000000 --- a/ui/desktop/src/components/icons/Refresh.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Refresh({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Send.tsx b/ui/desktop/src/components/icons/Send.tsx deleted file mode 100644 index 235ff7233..000000000 --- a/ui/desktop/src/components/icons/Send.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Send({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/SensitiveHidden.tsx b/ui/desktop/src/components/icons/SensitiveHidden.tsx deleted file mode 100644 index 959ec6abb..000000000 --- a/ui/desktop/src/components/icons/SensitiveHidden.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function SensitiveHidden({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/SensitiveVisible.tsx b/ui/desktop/src/components/icons/SensitiveVisible.tsx deleted file mode 100644 index 9012defae..000000000 --- a/ui/desktop/src/components/icons/SensitiveVisible.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export default function SensitiveVisible({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Settings.tsx b/ui/desktop/src/components/icons/Settings.tsx deleted file mode 100644 index 5bbc7e3a3..000000000 --- a/ui/desktop/src/components/icons/Settings.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Settings({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Tetrate.tsx b/ui/desktop/src/components/icons/Tetrate.tsx deleted file mode 100644 index 7a088f2d2..000000000 --- a/ui/desktop/src/components/icons/Tetrate.tsx +++ /dev/null @@ -1,22 +0,0 @@ -export default function Tetrate({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Time.tsx b/ui/desktop/src/components/icons/Time.tsx deleted file mode 100644 index d83681ecf..000000000 --- a/ui/desktop/src/components/icons/Time.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Time({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/Youtube.tsx b/ui/desktop/src/components/icons/Youtube.tsx deleted file mode 100644 index 9d2d23155..000000000 --- a/ui/desktop/src/components/icons/Youtube.tsx +++ /dev/null @@ -1,18 +0,0 @@ -export default function Youtube({ className = '' }) { - return ( - - ); -} diff --git a/ui/desktop/src/components/icons/index.tsx b/ui/desktop/src/components/icons/index.tsx index c648d2ce6..36a3c9aef 100644 --- a/ui/desktop/src/components/icons/index.tsx +++ b/ui/desktop/src/components/icons/index.tsx @@ -1,51 +1,25 @@ import ArrowDown from './ArrowDown'; import ArrowUp from './ArrowUp'; import Attach from './Attach'; -import Back from './Back'; -import ChatGPT from './ChatGPT'; import { Bird1 } from './Bird1'; import { Bird2 } from './Bird2'; import { Bird3 } from './Bird3'; import { Bird4 } from './Bird4'; import { Bird5 } from './Bird5'; import { Bird6 } from './Bird6'; -import ChatSmart from './ChatSmart'; import Check from './Check'; -import ChevronDown from './ChevronDown'; -import ChevronUp from './ChevronUp'; -import { ChevronRight } from './ChevronRight'; import Close from './Close'; import { CodeXml } from './CodeXml'; import { Cog } from './Cog'; import CoinIcon from './CoinIcon'; import Copy from './Copy'; -import Discord from './Discord'; -import Document from './Document'; -import Edit from './Edit'; import { Fuel } from './Fuel'; import { GalleryHorizontalEnd } from './GalleryHorizontalEnd'; import { Gavel } from './Gavel'; import { GlassWater } from './GlassWater'; import { Grape } from './Grape'; -import Idea from './Idea'; -import LinkedIn from './LinkedIn'; -import More from './More'; -import OpenRouter from './OpenRouter'; -import Ollama from './Ollama'; -import Refresh from './Refresh'; -import SensitiveHidden from './SensitiveHidden'; -import SensitiveVisible from './SensitiveVisible'; -import Send from './Send'; -import Settings from './Settings'; -import Time from './Time'; import { Gear } from './Gear'; -import Youtube from './Youtube'; import { Goose } from './Goose'; -import Anthropic from './Anthropic'; -import { ArrowRight } from './ArrowRight'; -import { Key } from './Key'; -import OpenAI from './OpenAI'; -import Tetrate from './Tetrate'; import { Microphone } from './Microphone'; import { Watch0 } from './Watch0'; import { Watch1 } from './Watch1'; @@ -59,45 +33,25 @@ export { ArrowDown, ArrowUp, Attach, - Back, - ChatGPT, Bird1, Bird2, Bird3, Bird4, Bird5, Bird6, - ChatSmart, Check, - ChevronDown, - ChevronRight, - ChevronUp, Close, CodeXml, Cog, CoinIcon, Copy, - Discord, - Document, - Edit, Fuel, GalleryHorizontalEnd, Gavel, Gear, GlassWater, Grape, - Idea, - LinkedIn, Microphone, - More, - OpenRouter, - Ollama, - Refresh, - SensitiveHidden, - SensitiveVisible, - Send, - Settings, - Time, Watch0, Watch1, Watch2, @@ -105,11 +59,5 @@ export { Watch4, Watch5, Watch6, - Youtube, Goose, - Anthropic, - ArrowRight, - Key, - OpenAI, - Tetrate, }; diff --git a/ui/desktop/src/components/icons/toolcalls/Harddrive.tsx b/ui/desktop/src/components/icons/toolcalls/Harddrive.tsx deleted file mode 100644 index aa34ff726..000000000 --- a/ui/desktop/src/components/icons/toolcalls/Harddrive.tsx +++ /dev/null @@ -1,16 +0,0 @@ -export const Harddrive = ({ className }: { className?: string }) => ( - - - - -); diff --git a/ui/desktop/src/components/icons/toolcalls/index.tsx b/ui/desktop/src/components/icons/toolcalls/index.tsx index 533f252de..3c78ab201 100644 --- a/ui/desktop/src/components/icons/toolcalls/index.tsx +++ b/ui/desktop/src/components/icons/toolcalls/index.tsx @@ -8,7 +8,6 @@ export { FileEdit } from './FileEdit'; export { FilePlus } from './FilePlus'; export { FileText } from './FileText'; export { Globe } from './Globe'; -export { Harddrive } from './Harddrive'; export { Monitor } from './Monitor'; export { Numbers } from './Numbers'; export { Save } from './Save'; diff --git a/ui/desktop/src/components/recipes/shared/RecipeNameField.tsx b/ui/desktop/src/components/recipes/shared/RecipeNameField.tsx deleted file mode 100644 index 33dd2fcdc..000000000 --- a/ui/desktop/src/components/recipes/shared/RecipeNameField.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { recipeNameSchema, RECIPE_NAME_PLACEHOLDER } from './recipeNameUtils'; -import { defineMessages, useIntl } from '../../../i18n'; - -const i18n = defineMessages({ - defaultLabel: { - id: 'recipeNameField.defaultLabel', - defaultMessage: 'Recipe Name', - }, - formatHint: { - id: 'recipeNameField.formatHint', - defaultMessage: 'Will be automatically formatted (lowercase, dashes for spaces)', - }, -}); - -interface RecipeNameFieldProps { - id: string; - value: string; - onChange: (value: string) => void; - onBlur: () => void; - errors: string[]; - label?: string; - required?: boolean; - disabled?: boolean; -} - -export function RecipeNameField({ - id, - value, - onChange, - onBlur, - errors, - label, - required = true, - disabled = false, -}: RecipeNameFieldProps) { - const intl = useIntl(); - const displayLabel = label || intl.formatMessage(i18n.defaultLabel); - return ( -
- - { - // Allow typing normally, only filter out invalid characters but keep spaces - const rawValue = e.target.value; - const filtered = rawValue.replace(/[^a-zA-Z0-9\s-]/g, ''); - onChange(filtered); - }} - onBlur={(e) => { - // Transform on blur: convert to lowercase and replace spaces with dashes - const rawValue = e.target.value; - const transformed = rawValue - .toLowerCase() - .replace(/\s+/g, '-') - .replace(/[^a-z0-9-]/g, '') - .replace(/-+/g, '-') - .replace(/^-+|-+$/g, ''); - - onChange(transformed); - onBlur(); - }} - disabled={disabled} - className={`w-full p-3 border rounded-lg bg-background-primary text-text-primary focus:outline-none focus:ring-2 focus:ring-blue-500 ${ - errors.length > 0 ? 'border-red-500' : 'border-border-primary' - } ${disabled ? 'opacity-50 cursor-not-allowed' : ''}`} - placeholder={RECIPE_NAME_PLACEHOLDER} - data-testid="recipe-name-input" - /> -

- {intl.formatMessage(i18n.formatHint)} -

- {errors.length > 0 &&

{errors[0]}

} -
- ); -} - -export { recipeNameSchema }; diff --git a/ui/desktop/src/components/recipes/shared/recipeNameUtils.ts b/ui/desktop/src/components/recipes/shared/recipeNameUtils.ts deleted file mode 100644 index 5d8045f75..000000000 --- a/ui/desktop/src/components/recipes/shared/recipeNameUtils.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { z } from 'zod'; - -/** - * Validation schema for recipe names - */ -export const recipeNameSchema = z.string().min(3, 'Recipe name must be at least 3 characters'); - -/** - * Transform a string to a valid recipe name format: - * - Convert to lowercase - * - Replace spaces with dashes - * - Remove invalid characters - * - Trim whitespace and dashes - */ -export function transformToRecipeName(input: string): string { - return input - .toLowerCase() - .replace(/[^a-zA-Z0-9\s-]/g, '') // Remove invalid characters - .replace(/\s+/g, '-') // Replace spaces with dashes - .replace(/--+/g, '-') // Replace multiple dashes with single dash - .replace(/^-+|-+$/g, '') // Remove leading/trailing dashes - .trim(); -} - -/** - * Generate a recipe name from a title - */ -export function generateRecipeNameFromTitle(title: string): string { - if (!title.trim()) { - return ''; - } - return transformToRecipeName(title); -} - -/** - * Common placeholder text for recipe name inputs - */ -export const RECIPE_NAME_PLACEHOLDER = 'my-awesome-recipe'; diff --git a/ui/desktop/src/components/sessions/SessionViewComponents.tsx b/ui/desktop/src/components/sessions/SessionViewComponents.tsx deleted file mode 100644 index 693a55eb0..000000000 --- a/ui/desktop/src/components/sessions/SessionViewComponents.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import React from 'react'; -import { MessageSquare, AlertCircle } from 'lucide-react'; -import { defineMessages, useIntl } from '../../i18n'; -import { Card } from '../ui/card'; -import { Button } from '../ui/button'; -import { ScrollArea } from '../ui/scroll-area'; -import MarkdownContent from '../MarkdownContent'; -import ToolCallWithResponse from '../ToolCallWithResponse'; -import ImagePreview from '../ImagePreview'; -import { - getTextAndImageContent, - getThinkingContent, - ToolRequestMessageContent, - ToolResponseMessageContent, - type Message, -} from '../../types/message'; -import { formatMessageTimestamp } from '../../utils/timeUtils'; - -const i18n = defineMessages({ - errorLoadingDetails: { - id: 'sessionViewComponents.error.loading', - defaultMessage: 'Error Loading Session Details', - }, - tryAgain: { - id: 'sessionViewComponents.error.tryAgain', - defaultMessage: 'Try Again', - }, - noMessages: { - id: 'sessionViewComponents.empty.title', - defaultMessage: 'No messages found', - }, - noMessagesDesc: { - id: 'sessionViewComponents.empty.description', - defaultMessage: "This session doesn't contain any messages", - }, - you: { - id: 'sessionViewComponents.role.user', - defaultMessage: 'You', - }, - goose: { - id: 'sessionViewComponents.role.assistant', - defaultMessage: 'Goose', - }, -}); - -/** - * Get tool responses map from messages - */ -export const getToolResponsesMap = ( - messages: Message[], - messageIndex: number, - toolRequests: ToolRequestMessageContent[] -) => { - const responseMap = new Map(); - - if (messageIndex >= 0) { - for (let i = messageIndex + 1; i < messages.length; i++) { - const responses = messages[i].content - .filter((c) => c.type === 'toolResponse') - .map((c) => c as ToolResponseMessageContent); - - for (const response of responses) { - const matchingRequest = toolRequests.find((req) => req.id === response.id); - if (matchingRequest) { - responseMap.set(response.id, response); - } - } - } - } - - return responseMap; -}; - -interface SessionMessagesProps { - messages: Message[]; - isLoading: boolean; - error: string | null; - onRetry: () => void; -} - -/** - * Common component for displaying session messages - */ -export const SessionMessages: React.FC = ({ - messages, - isLoading, - error, - onRetry, -}) => { - const intl = useIntl(); - return ( - -
-
-
- {isLoading ? ( -
-
-
- ) : error ? ( -
-
- -
-

{intl.formatMessage(i18n.errorLoadingDetails)}

-

{error}

- -
- ) : messages?.length > 0 ? ( - messages - .map((message, index) => { - const { textContent, imagePaths } = getTextAndImageContent(message); - const thinkingContent = getThinkingContent(message); - - // Get tool requests from the message - const toolRequests = message.content - .filter((c) => c.type === 'toolRequest') - .map((c) => c as ToolRequestMessageContent); - - // Get tool responses map using the helper function - const toolResponsesMap = getToolResponsesMap(messages, index, toolRequests); - - // Skip pure tool response messages for cleaner display - const isOnlyToolResponse = - message.content.length > 0 && - message.content.every((c) => c.type === 'toolResponse'); - - if (message.role === 'user' && isOnlyToolResponse) { - return null; - } - - return ( - -
- - {message.role === 'user' ? intl.formatMessage(i18n.you) : intl.formatMessage(i18n.goose)} - - - {formatMessageTimestamp(message.created)} - -
- -
- {/* Thinking content */} - {thinkingContent && ( -
- -
- )} - - {/* Text content */} - {textContent && ( -
0 || imagePaths.length > 0 ? 'mb-4' : ''}`} - > - -
- )} - - {imagePaths.length > 0 && ( -
- {imagePaths.map((imagePath, imageIndex) => ( - - ))} -
- )} - - {/* Tool requests and responses */} - {toolRequests.length > 0 && ( -
- {toolRequests.map((toolRequest) => ( - - ))} -
- )} -
-
- ); - }) - .filter(Boolean) // Filter out null entries - ) : ( -
- -

{intl.formatMessage(i18n.noMessages)}

-

{intl.formatMessage(i18n.noMessagesDesc)}

-
- )} -
-
-
-
- ); -}; diff --git a/ui/desktop/src/components/settings/extensions/agent-api.ts b/ui/desktop/src/components/settings/extensions/agent-api.ts index 27ba11bad..7245cade6 100644 --- a/ui/desktop/src/components/settings/extensions/agent-api.ts +++ b/ui/desktop/src/components/settings/extensions/agent-api.ts @@ -82,7 +82,3 @@ export async function removeFromAgent( throw error; } } - -export function sanitizeName(name: string) { - return name.toLowerCase().replace(/-/g, '').replace(/_/g, '').replace(/\s/g, ''); -} diff --git a/ui/desktop/src/components/settings/models/modelInterface.ts b/ui/desktop/src/components/settings/models/modelInterface.ts index b16f82ea8..1ecdf0f24 100644 --- a/ui/desktop/src/components/settings/models/modelInterface.ts +++ b/ui/desktop/src/components/settings/models/modelInterface.ts @@ -15,25 +15,6 @@ export default interface Model { request_params?: Record & { thinking_effort?: ThinkingEffort }; // provider-specific request parameters } -export function createModelStruct( - modelName: string, - provider: string, - id?: number, // Make `id` optional to allow user-defined models - lastUsed?: string, - alias?: string, // optional model display name - subtext?: string -): Model { - // use the metadata to create a Model - return { - name: modelName, - provider: provider, - alias: alias, - id: id, - lastUsed: lastUsed, - subtext: subtext, - }; -} - export async function getProviderMetadata(providerName: string) { const providers = await acpListProviderDetails(); const matches = providers.find((providerMatch) => providerMatch.name === providerName); diff --git a/ui/desktop/src/components/settings/providers/interfaces/ParameterSchema.ts b/ui/desktop/src/components/settings/providers/interfaces/ParameterSchema.ts deleted file mode 100644 index b739aab86..000000000 --- a/ui/desktop/src/components/settings/providers/interfaces/ParameterSchema.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default interface ParameterSchema { - name: string; - is_secret: boolean; - required?: boolean; - default?: string; // optional default values -} diff --git a/ui/desktop/src/components/settings/providers/interfaces/ProviderDetails.tsx b/ui/desktop/src/components/settings/providers/interfaces/ProviderDetails.tsx deleted file mode 100644 index 22abe7abb..000000000 --- a/ui/desktop/src/components/settings/providers/interfaces/ProviderDetails.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; -import ParameterSchema from '../interfaces/ParameterSchema'; -import ProviderSetupFormProps from '../modal/interfaces/ProviderSetupFormProps'; - -export default interface ProviderDetails { - id: string; - name: string; - description: string; - parameters: ParameterSchema[]; - getTags?: (name: string) => string[]; - customForm?: React.ComponentType; - customSubmit?: (e: React.SyntheticEvent) => void; -} diff --git a/ui/desktop/src/components/settings/providers/interfaces/ProviderState.tsx b/ui/desktop/src/components/settings/providers/interfaces/ProviderState.tsx deleted file mode 100644 index 6a31f9503..000000000 --- a/ui/desktop/src/components/settings/providers/interfaces/ProviderState.tsx +++ /dev/null @@ -1,11 +0,0 @@ -interface ProviderMetadata { - [key: string]: string | number | boolean | null; -} - -// runtime data per instance -export default interface ProviderState { - id: string; - name: string; - isConfigured: boolean; - metadata: ProviderMetadata; -} diff --git a/ui/desktop/src/components/settings/providers/modal/interfaces/ProviderSetupFormProps.tsx b/ui/desktop/src/components/settings/providers/modal/interfaces/ProviderSetupFormProps.tsx deleted file mode 100644 index c2b3c79db..000000000 --- a/ui/desktop/src/components/settings/providers/modal/interfaces/ProviderSetupFormProps.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; -import ProviderState from '../../interfaces/ProviderState'; - -export default interface ProviderSetupFormProps { - configValues: { [key: string]: string }; - setConfigValues: React.Dispatch>; - onSubmit: (e: React.FormEvent) => void; - provider: ProviderState; -} diff --git a/ui/desktop/src/components/settings/providers/subcomponents/utils/StringUtils.tsx b/ui/desktop/src/components/settings/providers/subcomponents/utils/StringUtils.tsx index e3f4562a8..07dc294a7 100644 --- a/ui/desktop/src/components/settings/providers/subcomponents/utils/StringUtils.tsx +++ b/ui/desktop/src/components/settings/providers/subcomponents/utils/StringUtils.tsx @@ -1,44 +1,13 @@ -import { defineMessages, useIntl } from '../../../../../i18n'; +import { defineMessages } from '../../../../../i18n'; import type { IntlShape } from 'react-intl'; const i18n = defineMessages({ - ollamaNotConfiguredPrefix: { - id: 'stringUtils.ollamaNotConfiguredPrefix', - defaultMessage: 'To use, either the', - }, - ollamaApp: { - id: 'stringUtils.ollamaApp', - defaultMessage: 'Ollama app', - }, - ollamaNotConfiguredSuffix: { - id: 'stringUtils.ollamaNotConfiguredSuffix', - defaultMessage: 'must be installed on your machine and open, or you must enter a value for OLLAMA_HOST.', - }, configuredProvider: { id: 'stringUtils.configuredProvider', defaultMessage: '{name} provider is configured', }, }); -// Functions for string / string-based element creation (e.g. tooltips for each provider, descriptions, etc) -export function OllamaNotConfiguredTooltipMessage() { - const intl = useIntl(); - return ( -

- {intl.formatMessage(i18n.ollamaNotConfiguredPrefix)}{' '} - - {intl.formatMessage(i18n.ollamaApp)} - {' '} - {intl.formatMessage(i18n.ollamaNotConfiguredSuffix)} -

- ); -} - export function ConfiguredProviderTooltipMessage(intl: IntlShape, name: string) { return intl.formatMessage(i18n.configuredProvider, { name }); } diff --git a/ui/desktop/src/components/ui/Dot.tsx b/ui/desktop/src/components/ui/Dot.tsx deleted file mode 100644 index 8c8d02c1e..000000000 --- a/ui/desktop/src/components/ui/Dot.tsx +++ /dev/null @@ -1,26 +0,0 @@ -export type LoadingStatus = 'loading' | 'success' | 'error'; -export default function Dot({ - size, - loadingStatus, -}: { - size: number; - loadingStatus: LoadingStatus; -}) { - const backgroundColorClasses = { - loading: 'bg-blue-500', - success: 'bg-green-600', - error: 'bg-red-600', - }; - - return ( -
-
-
- ); -} diff --git a/ui/desktop/src/components/ui/Pill.tsx b/ui/desktop/src/components/ui/Pill.tsx deleted file mode 100644 index ce4cc0ef6..000000000 --- a/ui/desktop/src/components/ui/Pill.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React from 'react'; -import { cn } from '../../utils'; - -interface PillProps { - children: React.ReactNode; - className?: string; - variant?: 'default' | 'glass' | 'solid' | 'gradient' | 'glow'; - size?: 'xs' | 'sm' | 'md' | 'lg'; - color?: 'blue' | 'green' | 'amber' | 'red' | 'purple' | 'slate'; - onClick?: () => void; - disabled?: boolean; - animated?: boolean; -} - -export function Pill({ - children, - className, - variant = 'glass', - size = 'md', - color = 'blue', - onClick, - disabled = false, - animated = false, -}: PillProps) { - const baseStyles = - 'inline-flex items-center justify-center rounded-full transition-all duration-300 ease-out font-medium'; - - const variants = { - default: 'bg-background border border-border hover:bg-muted/50', - glass: - 'bg-white/10 dark:bg-black/10 backdrop-blur-xl border border-white/20 dark:border-white/10 shadow-lg shadow-black/5 dark:shadow-black/20 hover:bg-white/15 dark:hover:bg-black/15 hover:shadow-xl', - solid: 'bg-background border border-border shadow-md hover:shadow-lg hover:scale-105', - gradient: 'bg-gradient-to-r shadow-lg hover:shadow-xl hover:scale-105 border-0', - glow: 'shadow-lg hover:shadow-xl hover:scale-105 border-0', - }; - - const colors = { - blue: { - gradient: 'from-blue-500 to-blue-600 hover:from-blue-600 hover:to-blue-700 text-white', - glow: 'bg-blue-500 hover:bg-blue-600 text-white shadow-blue-500/25 hover:shadow-blue-500/40', - glass: 'text-blue-700 dark:text-blue-300 hover:text-blue-800 dark:hover:text-blue-200', - }, - green: { - gradient: 'from-green-500 to-green-600 hover:from-green-600 hover:to-green-700 text-white', - glow: 'bg-green-500 hover:bg-green-600 text-white shadow-green-500/25 hover:shadow-green-500/40', - glass: 'text-green-700 dark:text-green-300 hover:text-green-800 dark:hover:text-green-200', - }, - amber: { - gradient: 'from-amber-500 to-amber-600 hover:from-amber-600 hover:to-amber-700 text-white', - glow: 'bg-amber-500 hover:bg-amber-600 text-white shadow-amber-500/25 hover:shadow-amber-500/40', - glass: 'text-amber-700 dark:text-amber-300 hover:text-amber-800 dark:hover:text-amber-200', - }, - red: { - gradient: 'from-red-500 to-red-600 hover:from-red-600 hover:to-red-700 text-white', - glow: 'bg-red-500 hover:bg-red-600 text-white shadow-red-500/25 hover:shadow-red-500/40', - glass: 'text-red-700 dark:text-red-300 hover:text-red-800 dark:hover:text-red-200', - }, - purple: { - gradient: - 'from-purple-500 to-purple-600 hover:from-purple-600 hover:to-purple-700 text-white', - glow: 'bg-purple-500 hover:bg-purple-600 text-white shadow-purple-500/25 hover:shadow-purple-500/40', - glass: - 'text-purple-700 dark:text-purple-300 hover:text-purple-800 dark:hover:text-purple-200', - }, - slate: { - gradient: 'from-slate-500 to-slate-600 hover:from-slate-600 hover:to-slate-700 text-white', - glow: 'bg-slate-500 hover:bg-slate-600 text-white shadow-slate-500/25 hover:shadow-slate-500/40', - glass: 'text-slate-700 dark:text-slate-300 hover:text-slate-800 dark:hover:text-slate-200', - }, - }; - - const sizes = { - xs: 'px-2 py-1 text-xs gap-1', - sm: 'px-3 py-1.5 text-sm gap-1.5', - md: 'px-4 py-2 text-sm gap-2', - lg: 'px-6 py-3 text-base gap-3', - }; - - const animatedStyles = animated ? 'animate-pulse' : ''; - - const disabledStyles = disabled - ? 'opacity-50 cursor-not-allowed pointer-events-none' - : onClick - ? 'cursor-pointer hover:scale-105 active:scale-95' - : ''; - - const colorStyles = - variant === 'gradient' - ? colors[color].gradient - : variant === 'glow' - ? colors[color].glow - : variant === 'glass' - ? colors[color].glass - : ''; - - return ( -
- {children} -
- ); -} - -export default Pill; diff --git a/ui/desktop/src/components/ui/card.tsx b/ui/desktop/src/components/ui/card.tsx index 07efd5b08..4d5cdc233 100644 --- a/ui/desktop/src/components/ui/card.tsx +++ b/ui/desktop/src/components/ui/card.tsx @@ -56,14 +56,4 @@ function CardContent({ className, ...props }: React.ComponentProps<'div'>) { return
; } -function CardFooter({ className, ...props }: React.ComponentProps<'div'>) { - return ( -
- ); -} - -export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent }; +export { Card, CardHeader, CardTitle, CardAction, CardDescription, CardContent }; diff --git a/ui/desktop/src/components/ui/dialog.tsx b/ui/desktop/src/components/ui/dialog.tsx index 9f3b74dd2..a5026cf11 100644 --- a/ui/desktop/src/components/ui/dialog.tsx +++ b/ui/desktop/src/components/ui/dialog.tsx @@ -26,10 +26,6 @@ function DialogPortal({ ...props }: React.ComponentProps; } -function DialogClose({ ...props }: React.ComponentProps) { - return ; -} - const DialogOverlay = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef @@ -118,7 +114,6 @@ function DialogDescription({ export { Dialog, - DialogClose, DialogContent, DialogDescription, DialogFooter, diff --git a/ui/desktop/src/components/ui/dropdown-menu.tsx b/ui/desktop/src/components/ui/dropdown-menu.tsx index 7f4787df4..4adf1f76d 100644 --- a/ui/desktop/src/components/ui/dropdown-menu.tsx +++ b/ui/desktop/src/components/ui/dropdown-menu.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; -import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react'; +import { CircleIcon } from 'lucide-react'; import { cn } from '../../utils'; @@ -10,12 +10,6 @@ function DropdownMenu({ ...props }: React.ComponentProps; } -function DropdownMenuPortal({ - ...props -}: React.ComponentProps) { - return ; -} - function DropdownMenuTrigger({ ...props }: React.ComponentProps) { @@ -42,10 +36,6 @@ function DropdownMenuContent({ ); } -function DropdownMenuGroup({ ...props }: React.ComponentProps) { - return ; -} - function DropdownMenuItem({ className, inset, @@ -69,32 +59,6 @@ function DropdownMenuItem({ ); } -function DropdownMenuCheckboxItem({ - className, - children, - checked, - ...props -}: React.ComponentProps) { - return ( - - - - - - - {children} - - ); -} - function DropdownMenuRadioGroup({ ...props }: React.ComponentProps) { @@ -155,74 +119,13 @@ function DropdownMenuSeparator({ ); } -function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>) { - return ( - - ); -} - -function DropdownMenuSub({ ...props }: React.ComponentProps) { - return ; -} - -function DropdownMenuSubTrigger({ - className, - inset, - children, - ...props -}: React.ComponentProps & { - inset?: boolean; -}) { - return ( - - {children} - - - ); -} - -function DropdownMenuSubContent({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - export { DropdownMenu, - DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, - DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, - DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuSub, - DropdownMenuSubTrigger, - DropdownMenuSubContent, }; diff --git a/ui/desktop/src/components/ui/icons.tsx b/ui/desktop/src/components/ui/icons.tsx index 1fb76a885..33f6a31eb 100644 --- a/ui/desktop/src/components/ui/icons.tsx +++ b/ui/desktop/src/components/ui/icons.tsx @@ -1,158 +1,3 @@ -export const BotIcon = () => { - return ( - - - - ); -}; - -export const UserIcon = () => { - return ( - - - - ); -}; - -export const AttachmentIcon = () => { - return ( - - - - ); -}; - -export const VercelIcon = ({ size = 17 }) => { - return ( - - - - ); -}; - -export const MasonryIcon = () => { - return ( - - - - ); -}; - -export const GitIcon = () => { - return ( - - - - - - - - - - - ); -}; - -export const BoxIcon = ({ size = 16 }: { size: number }) => { - return ( - - - - ); -}; - -export const HomeIcon = ({ size = 16 }: { size: number }) => { - return ( - - - - ); -}; - export const GPSIcon = ({ size = 16 }: { size: number }) => { return ( { ); }; - -export const InvoiceIcon = ({ size = 16 }: { size: number }) => { - return ( - - - - ); -}; - -export const Bird = () => ( - - - - - - -); diff --git a/ui/desktop/src/components/ui/separator.tsx b/ui/desktop/src/components/ui/separator.tsx deleted file mode 100644 index ee8afe251..000000000 --- a/ui/desktop/src/components/ui/separator.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import * as React from 'react'; -import * as SeparatorPrimitive from '@radix-ui/react-separator'; - -import { cn } from '../../utils'; - -function Separator({ - className, - orientation = 'horizontal', - decorative = true, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { Separator }; diff --git a/ui/desktop/src/components/ui/sheet.tsx b/ui/desktop/src/components/ui/sheet.tsx deleted file mode 100644 index ad2e31478..000000000 --- a/ui/desktop/src/components/ui/sheet.tsx +++ /dev/null @@ -1,139 +0,0 @@ -'use client'; - -import * as React from 'react'; -import * as SheetPrimitive from '@radix-ui/react-dialog'; -import { XIcon } from 'lucide-react'; - -import { cn } from '../../utils'; -import { defineMessages, useIntl } from '../../i18n'; - -const i18n = defineMessages({ - close: { - id: 'sheet.close', - defaultMessage: 'Close', - }, -}); - -function Sheet({ ...props }: React.ComponentProps) { - return ; -} - -function SheetTrigger({ ...props }: React.ComponentProps) { - return ; -} - -function SheetClose({ ...props }: React.ComponentProps) { - return ; -} - -function SheetPortal({ ...props }: React.ComponentProps) { - return ; -} - -const SheetOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -SheetOverlay.displayName = SheetPrimitive.Overlay.displayName; - -function SheetContent({ - className, - children, - side = 'right', - ...props -}: React.ComponentProps & { - side?: 'top' | 'right' | 'bottom' | 'left'; -}) { - const intl = useIntl(); - return ( - - - - {children} - - - {intl.formatMessage(i18n.close)} - - - - ); -} - -function SheetHeader({ className, ...props }: React.ComponentProps<'div'>) { - return ( -
- ); -} - -function SheetFooter({ className, ...props }: React.ComponentProps<'div'>) { - return ( -
- ); -} - -function SheetTitle({ className, ...props }: React.ComponentProps) { - return ( - - ); -} - -function SheetDescription({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -export { - Sheet, - SheetTrigger, - SheetClose, - SheetContent, - SheetHeader, - SheetFooter, - SheetTitle, - SheetDescription, -}; diff --git a/ui/desktop/src/constants/events.ts b/ui/desktop/src/constants/events.ts index 026d00d02..3f7e874a0 100644 --- a/ui/desktop/src/constants/events.ts +++ b/ui/desktop/src/constants/events.ts @@ -7,11 +7,9 @@ export enum AppEvents { SESSION_DELETED = 'session-deleted', SESSION_RENAMED = 'session-renamed', SESSION_FORKED = 'session-forked', - SESSION_NEEDS_NAME_UPDATE = 'session-needs-name-update', SESSION_STATUS_UPDATE = 'session-status-update', ADD_ACTIVE_SESSION = 'add-active-session', CLEAR_INITIAL_MESSAGE = 'clear-initial-message', - MESSAGE_STREAM_FINISHED = 'message-stream-finished', SCROLL_CHAT_TO_BOTTOM = 'scroll-chat-to-bottom', HIDE_ALERT_POPOVER = 'hide-alert-popover', RESPONSE_STYLE_CHANGED = 'responseStyleChanged', diff --git a/ui/desktop/src/i18n/messages/de.json b/ui/desktop/src/i18n/messages/de.json index 447de615c..1758d482d 100644 --- a/ui/desktop/src/i18n/messages/de.json +++ b/ui/desktop/src/i18n/messages/de.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Standardanbieter verwenden" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Rezeptname" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Wird automatisch formatiert (Kleinbuchstaben, Bindestriche für Leerzeichen)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Abbrechen" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Streaming" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Diese Sitzung enthält keine Nachrichten" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Keine Nachrichten gefunden" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Fehler beim Laden der Sitzungsdetails" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Erneut versuchen" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Sie" - }, "sessions.action.delete": { "defaultMessage": "Sitzung löschen" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Einstellungen" }, - "sheet.close": { - "defaultMessage": "Schließen" - }, "shortcutRecorder.cancel": { "defaultMessage": "Abbrechen" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Anbieter {name} ist konfiguriert" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama-App" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Um dies zu nutzen, muss entweder die" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "auf Ihrem Computer installiert und geöffnet sein, oder Sie müssen einen Wert für OLLAMA_HOST eingeben." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Vorhandenes hinzufügen" }, diff --git a/ui/desktop/src/i18n/messages/en.json b/ui/desktop/src/i18n/messages/en.json index 06d74e45a..9d1ed244b 100644 --- a/ui/desktop/src/i18n/messages/en.json +++ b/ui/desktop/src/i18n/messages/en.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Use default provider" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Recipe Name" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Will be automatically formatted (lowercase, dashes for spaces)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Cancel" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Streaming" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "This session doesn't contain any messages" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "No messages found" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Error Loading Session Details" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Try Again" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "You" - }, "sessions.action.delete": { "defaultMessage": "Delete session" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Settings" }, - "sheet.close": { - "defaultMessage": "Close" - }, "shortcutRecorder.cancel": { "defaultMessage": "Cancel" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "{name} provider is configured" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama app" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "To use, either the" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "must be installed on your machine and open, or you must enter a value for OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Add Existing" }, diff --git a/ui/desktop/src/i18n/messages/es.json b/ui/desktop/src/i18n/messages/es.json index 85ed43c3a..027580698 100644 --- a/ui/desktop/src/i18n/messages/es.json +++ b/ui/desktop/src/i18n/messages/es.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Usar el proveedor por defecto" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Nombre de la receta" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Se formateará automáticamente (minúsculas, guiones en lugar de espacios)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Cancelar" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Streaming" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Esta sesión no contiene ningún mensaje" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "No se encontraron mensajes" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Error al cargar los detalles de la sesión" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Reintentar" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Tú" - }, "sessions.action.delete": { "defaultMessage": "Eliminar sesión" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Ajustes" }, - "sheet.close": { - "defaultMessage": "Cerrar" - }, "shortcutRecorder.cancel": { "defaultMessage": "Cancelar" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "El proveedor {name} está configurado" }, - "stringUtils.ollamaApp": { - "defaultMessage": "App de Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Para usarlo, o bien la" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "debe estar instalada en tu máquina y abierta, o debes ingresar un valor para OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Agregar existente" }, diff --git a/ui/desktop/src/i18n/messages/fr.json b/ui/desktop/src/i18n/messages/fr.json index 72f231906..faa86ff1a 100644 --- a/ui/desktop/src/i18n/messages/fr.json +++ b/ui/desktop/src/i18n/messages/fr.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Utiliser le fournisseur par défaut" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Nom de la recette" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Sera automatiquement mis en forme (minuscules, tirets à la place des espaces)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Annuler" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Diffusion en cours" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Cette session ne contient aucun message" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Aucun message trouvé" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Erreur lors du chargement des détails de la session" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Réessayer" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Vous" - }, "sessions.action.delete": { "defaultMessage": "Supprimer la session" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Paramètres" }, - "sheet.close": { - "defaultMessage": "Fermer" - }, "shortcutRecorder.cancel": { "defaultMessage": "Annuler" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Le fournisseur {name} est configuré" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Application Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Pour l'utiliser, soit le" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "doit être installé sur votre machine et ouvert, soit vous devez saisir une valeur pour OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Ajouter une existante" }, diff --git a/ui/desktop/src/i18n/messages/hi.json b/ui/desktop/src/i18n/messages/hi.json index 185804ac8..d68c0256a 100644 --- a/ui/desktop/src/i18n/messages/hi.json +++ b/ui/desktop/src/i18n/messages/hi.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "डिफ़ॉल्ट प्रदाता का उपयोग करें" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "रेसिपी का नाम" - }, - "recipeNameField.formatHint": { - "defaultMessage": "स्वचालित रूप से स्वरूपित किया जाएगा (लोअरकेस, रिक्त स्थान के लिए डैश)" - }, "recipeWarningModal.cancel": { "defaultMessage": "रद्द करें" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "स्ट्रीमिंग" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "इस सत्र में कोई संदेश नहीं है" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "कोई संदेश नहीं मिला" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "सत्र विवरण लोड करने में त्रुटि" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "पुनः प्रयास करें" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "आप" - }, "sessions.action.delete": { "defaultMessage": "सत्र हटाएँ" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Settings" }, - "sheet.close": { - "defaultMessage": "बंद करें" - }, "shortcutRecorder.cancel": { "defaultMessage": "रद्द करें" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "{name} प्रदाता कॉन्फ़िगर किया गया है" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama ऐप" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "उपयोग करने के लिए, या तो" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "आपकी मशीन पर स्थापित और खुला होना चाहिए, या आपको OLLAMA_HOST के लिए एक मान दर्ज करना होगा।" - }, "subRecipeEditor.addExisting": { "defaultMessage": "मौजूदा जोड़ें" }, diff --git a/ui/desktop/src/i18n/messages/id.json b/ui/desktop/src/i18n/messages/id.json index 77b7cfd1b..b814410f3 100644 --- a/ui/desktop/src/i18n/messages/id.json +++ b/ui/desktop/src/i18n/messages/id.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Gunakan penyedia default" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Nama Resep" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Akan diformat secara otomatis (huruf kecil, tanda hubung untuk spasi)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Batal" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Streaming" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Sesi ini tidak berisi pesan apa pun" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Tidak ada pesan ditemukan" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Kesalahan Memuat Detail Sesi" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Coba Lagi" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Anda" - }, "sessions.action.delete": { "defaultMessage": "Hapus sesi" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Pengaturan" }, - "sheet.close": { - "defaultMessage": "Tutup" - }, "shortcutRecorder.cancel": { "defaultMessage": "Batal" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Penyedia {name} telah dikonfigurasi" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Aplikasi Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Untuk menggunakan, salah satu" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "harus terpasang di mesin Anda dan terbuka, atau Anda harus memasukkan nilai untuk OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Tambahkan yang Sudah Ada" }, diff --git a/ui/desktop/src/i18n/messages/it.json b/ui/desktop/src/i18n/messages/it.json index bf187f5d2..7faf78b94 100644 --- a/ui/desktop/src/i18n/messages/it.json +++ b/ui/desktop/src/i18n/messages/it.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Usa provider predefinito" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Nome ricetta" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Verrà formattato automaticamente (minuscolo, trattini al posto degli spazi)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Annulla" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Streaming" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Questa sessione non contiene messaggi" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Nessun messaggio trovato" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Errore durante il caricamento dei dettagli della sessione" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Riprova" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Tu" - }, "sessions.action.delete": { "defaultMessage": "Elimina sessione" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Impostazioni" }, - "sheet.close": { - "defaultMessage": "Chiudi" - }, "shortcutRecorder.cancel": { "defaultMessage": "Annulla" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Il provider {name} è configurato" }, - "stringUtils.ollamaApp": { - "defaultMessage": "App Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Per usarlo, l'" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "deve essere installata sul tuo computer e aperta, oppure devi inserire un valore per OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Aggiungi esistente" }, diff --git a/ui/desktop/src/i18n/messages/ja.json b/ui/desktop/src/i18n/messages/ja.json index c896b6ba1..ecb3f40f8 100644 --- a/ui/desktop/src/i18n/messages/ja.json +++ b/ui/desktop/src/i18n/messages/ja.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "デフォルトプロバイダーを使用" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "レシピ名" - }, - "recipeNameField.formatHint": { - "defaultMessage": "自動的に整形されます(小文字、スペースはダッシュ)" - }, "recipeWarningModal.cancel": { "defaultMessage": "キャンセル" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "ストリーミング中" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "このセッションにはメッセージがありません" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "メッセージが見つかりません" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "セッション詳細の読み込みエラー" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "再試行" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "あなた" - }, "sessions.action.delete": { "defaultMessage": "セッションを削除" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "設定" }, - "sheet.close": { - "defaultMessage": "閉じる" - }, "shortcutRecorder.cancel": { "defaultMessage": "キャンセル" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "{name}プロバイダーが設定されています" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollamaアプリ" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "使用するには、" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "をマシンにインストールして開いておくか、OLLAMA_HOSTの値を入力する必要があります。" - }, "subRecipeEditor.addExisting": { "defaultMessage": "既存を追加" }, diff --git a/ui/desktop/src/i18n/messages/ko.json b/ui/desktop/src/i18n/messages/ko.json index ffabbd4cc..3e245a6e4 100644 --- a/ui/desktop/src/i18n/messages/ko.json +++ b/ui/desktop/src/i18n/messages/ko.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "기본 제공업체 사용" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "레시피 이름" - }, - "recipeNameField.formatHint": { - "defaultMessage": "자동으로 형식이 지정됩니다(소문자, 공백은 대시로 변환)." - }, "recipeWarningModal.cancel": { "defaultMessage": "취소" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "스트리밍" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "이 세션에는 메시지가 없습니다." - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "메시지를 찾을 수 없습니다." - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "세션 세부정보를 로드하는 중 오류가 발생했습니다." - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "다시 시도" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "나" - }, "sessions.action.delete": { "defaultMessage": "세션 삭제" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "설정" }, - "sheet.close": { - "defaultMessage": "닫기" - }, "shortcutRecorder.cancel": { "defaultMessage": "취소" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "{name} 제공업체가 구성되었습니다." }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama 앱" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "사용하려면" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "을(를) 컴퓨터에 설치하고 열어야 합니다. 또는 OLLAMA_HOST 값을 입력해야 합니다." - }, "subRecipeEditor.addExisting": { "defaultMessage": "기존 서브레시피 추가" }, diff --git a/ui/desktop/src/i18n/messages/ms.json b/ui/desktop/src/i18n/messages/ms.json index 59b6ca42b..cfd0418a2 100644 --- a/ui/desktop/src/i18n/messages/ms.json +++ b/ui/desktop/src/i18n/messages/ms.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Gunakan penyedia lalai" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Nama Resipi" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Akan diformat secara automatik (huruf kecil, sengkang untuk ruang)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Batal" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Penstriman" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Sesi ini tidak mengandungi sebarang mesej" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Tiada mesej ditemui" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Ralat Memuatkan Butiran Sesi" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Cuba Lagi" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Anda" - }, "sessions.action.delete": { "defaultMessage": "Padam sesi" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Tetapan" }, - "sheet.close": { - "defaultMessage": "Tutup" - }, "shortcutRecorder.cancel": { "defaultMessage": "Batal" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Penyedia {name} telah dikonfigurasikan" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Aplikasi Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Untuk menggunakannya, sama ada" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "mesti dipasang pada mesin anda dan dibuka, atau anda mesti memasukkan nilai untuk OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Tambah Sedia Ada" }, diff --git a/ui/desktop/src/i18n/messages/pt.json b/ui/desktop/src/i18n/messages/pt.json index 5b62ef7ff..972bdc197 100644 --- a/ui/desktop/src/i18n/messages/pt.json +++ b/ui/desktop/src/i18n/messages/pt.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Usar fornecedor predefinido" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Nome da receita" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Será formatado automaticamente (minúsculas, traços nos espaços)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Cancelar" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Em transmissão" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Esta sessão não contém mensagens" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Nenhuma mensagem encontrada" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Erro ao carregar os detalhes da sessão" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Tentar novamente" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Você" - }, "sessions.action.delete": { "defaultMessage": "Eliminar sessão" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Definições" }, - "sheet.close": { - "defaultMessage": "Fechar" - }, "shortcutRecorder.cancel": { "defaultMessage": "Cancelar" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "O fornecedor {name} está configurado" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Aplicação Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Para utilizar, ou a" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "deve estar instalada e aberta na sua máquina, ou deve introduzir um valor para OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Adicionar Existente" }, diff --git a/ui/desktop/src/i18n/messages/ru.json b/ui/desktop/src/i18n/messages/ru.json index 0f97cb630..3c3c8b7d7 100644 --- a/ui/desktop/src/i18n/messages/ru.json +++ b/ui/desktop/src/i18n/messages/ru.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Использовать провайдера по умолчанию" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Имя рецепта" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Будет автоматически отформатировано (нижний регистр, дефисы вместо пробелов)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Отмена" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Потоковая передача" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Этот сеанс не содержит сообщений" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Сообщения не найдены" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Ошибка загрузки сведений о сеансе" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Повторить попытку" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Вы" - }, "sessions.action.delete": { "defaultMessage": "Удалить сеанс" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Настройки" }, - "sheet.close": { - "defaultMessage": "Закрыть" - }, "shortcutRecorder.cancel": { "defaultMessage": "Отмена" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Провайдер {name} настроен" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Приложение Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Для использования либо" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "должно быть установлено на вашем компьютере и открыто, либо нужно ввести значение для OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Добавить существующий" }, diff --git a/ui/desktop/src/i18n/messages/tr.json b/ui/desktop/src/i18n/messages/tr.json index 2bedebd62..f94ea8a88 100644 --- a/ui/desktop/src/i18n/messages/tr.json +++ b/ui/desktop/src/i18n/messages/tr.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Varsayılan sağlayıcıyı kullan" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Tarif Adı" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Otomatik olarak biçimlendirilecektir (küçük harf, boşluklar için kısa çizgiler)" - }, "recipeWarningModal.cancel": { "defaultMessage": "İptal" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Akış" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Bu oturum herhangi bir mesaj içermiyor" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Mesaj bulunamadı" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Oturum Ayrıntıları Yüklenirken Hata Oluştu" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Tekrar Deneyin" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "sen" - }, "sessions.action.delete": { "defaultMessage": "Oturumu sil" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Ayarlar" }, - "sheet.close": { - "defaultMessage": "Kapat" - }, "shortcutRecorder.cancel": { "defaultMessage": "İptal" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "{name} sağlayıcısı yapılandırıldı" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama uygulaması" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Kullanmak için ya" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "makinenizde kurulu ve açık olmalı veya OLLAMA_HOST için bir değer girmelisiniz." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Mevcut Ekle" }, diff --git a/ui/desktop/src/i18n/messages/vi.json b/ui/desktop/src/i18n/messages/vi.json index 96ba2605e..3658da2b2 100644 --- a/ui/desktop/src/i18n/messages/vi.json +++ b/ui/desktop/src/i18n/messages/vi.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "Sử dụng nhà cung cấp mặc định" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "Tên công thức" - }, - "recipeNameField.formatHint": { - "defaultMessage": "Sẽ được định dạng tự động (chữ thường, dấu gạch ngang thay cho khoảng trắng)" - }, "recipeWarningModal.cancel": { "defaultMessage": "Hủy" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "Đang truyền phát" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "Phiên này không chứa tin nhắn nào" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "Không tìm thấy tin nhắn nào" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "Lỗi khi tải chi tiết phiên" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "Thử lại" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "Bạn" - }, "sessions.action.delete": { "defaultMessage": "Xóa phiên" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "Cài đặt" }, - "sheet.close": { - "defaultMessage": "Đóng" - }, "shortcutRecorder.cancel": { "defaultMessage": "Hủy" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "Nhà cung cấp {name} đã được định cấu hình" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ứng dụng Ollama" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "Để sử dụng, hoặc là" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "phải được cài đặt trên máy của bạn và đang mở, hoặc bạn phải nhập một giá trị cho OLLAMA_HOST." - }, "subRecipeEditor.addExisting": { "defaultMessage": "Thêm hiện có" }, diff --git a/ui/desktop/src/i18n/messages/zh-CN.json b/ui/desktop/src/i18n/messages/zh-CN.json index a05d6f74a..28c3c085f 100644 --- a/ui/desktop/src/i18n/messages/zh-CN.json +++ b/ui/desktop/src/i18n/messages/zh-CN.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "使用默认提供商" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "配方名称" - }, - "recipeNameField.formatHint": { - "defaultMessage": "将自动格式化(小写字母,空格转为短横线)" - }, "recipeWarningModal.cancel": { "defaultMessage": "取消" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "流式传输中" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "此会话不包含任何消息" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "未找到消息" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "加载会话详情出错" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "重试" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "你" - }, "sessions.action.delete": { "defaultMessage": "删除会话" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "设置" }, - "sheet.close": { - "defaultMessage": "关闭" - }, "shortcutRecorder.cancel": { "defaultMessage": "取消" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "{name} 提供商已配置" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama 应用" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "要使用,必须" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "在你的机器上已安装并打开,或者你必须为 OLLAMA_HOST 设置一个值。" - }, "subRecipeEditor.addExisting": { "defaultMessage": "添加已有" }, diff --git a/ui/desktop/src/i18n/messages/zh-TW.json b/ui/desktop/src/i18n/messages/zh-TW.json index b04b17ed5..c9cbf5a3f 100644 --- a/ui/desktop/src/i18n/messages/zh-TW.json +++ b/ui/desktop/src/i18n/messages/zh-TW.json @@ -3026,12 +3026,6 @@ "recipeModelSelector.useDefaultProvider": { "defaultMessage": "使用預設提供者" }, - "recipeNameField.defaultLabel": { - "defaultMessage": "配方名稱" - }, - "recipeNameField.formatHint": { - "defaultMessage": "將自動格式化(小寫,空格以連字號取代)" - }, "recipeWarningModal.cancel": { "defaultMessage": "取消" }, @@ -3737,24 +3731,6 @@ "sessionIndicators.streaming": { "defaultMessage": "串流中" }, - "sessionViewComponents.empty.description": { - "defaultMessage": "此工作階段不包含任何訊息" - }, - "sessionViewComponents.empty.title": { - "defaultMessage": "找不到訊息" - }, - "sessionViewComponents.error.loading": { - "defaultMessage": "載入工作階段詳細資料時發生錯誤" - }, - "sessionViewComponents.error.tryAgain": { - "defaultMessage": "再試一次" - }, - "sessionViewComponents.role.assistant": { - "defaultMessage": "Goose" - }, - "sessionViewComponents.role.user": { - "defaultMessage": "您" - }, "sessions.action.delete": { "defaultMessage": "刪除工作階段" }, @@ -4082,9 +4058,6 @@ "settingsView.title": { "defaultMessage": "設定" }, - "sheet.close": { - "defaultMessage": "關閉" - }, "shortcutRecorder.cancel": { "defaultMessage": "取消" }, @@ -4151,15 +4124,6 @@ "stringUtils.configuredProvider": { "defaultMessage": "已設定 {name} 提供者" }, - "stringUtils.ollamaApp": { - "defaultMessage": "Ollama 應用程式" - }, - "stringUtils.ollamaNotConfiguredPrefix": { - "defaultMessage": "若要使用,請選擇" - }, - "stringUtils.ollamaNotConfiguredSuffix": { - "defaultMessage": "必須安裝在您的電腦上並開啟,或者您必須輸入 OLLAMA_HOST 的值。" - }, "subRecipeEditor.addExisting": { "defaultMessage": "新增現有項目" }, diff --git a/ui/desktop/src/sessions.ts b/ui/desktop/src/sessions.ts index 5988b7493..cdd82adbf 100644 --- a/ui/desktop/src/sessions.ts +++ b/ui/desktop/src/sessions.ts @@ -16,24 +16,6 @@ export function getSessionDisplayName(session: Session): string { return session.name; } -export function resumeSession(session: Session, setView: setViewType) { - const eventDetail = { - sessionId: session.id, - initialMessage: undefined, - }; - - window.dispatchEvent( - new CustomEvent(AppEvents.ADD_ACTIVE_SESSION, { - detail: eventDetail, - }) - ); - - setView('pair', { - disableAnimation: true, - resumeSessionId: session.id, - }); -} - interface CreateSessionOptions { recipeDeeplink?: string; recipeId?: string; diff --git a/ui/desktop/src/types/electron.ts b/ui/desktop/src/types/electron.ts deleted file mode 100644 index 630187eba..000000000 --- a/ui/desktop/src/types/electron.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface ElectronEvent { - preventDefault: () => void; - sender: unknown; -} - -export interface IpcRendererEvent extends ElectronEvent { - senderId: number; -} - -// Mouse event -export interface MouseUpEvent extends ElectronEvent { - button: number; -} diff --git a/ui/desktop/src/types/message.ts b/ui/desktop/src/types/message.ts index 679efc9b5..efc6f1608 100644 --- a/ui/desktop/src/types/message.ts +++ b/ui/desktop/src/types/message.ts @@ -404,15 +404,6 @@ export function getAnyToolConfirmationData(message: Message): ToolConfirmationDa return undefined; } -export function getToolConfirmationId( - content: ActionRequired & { type: 'actionRequired' } -): string | undefined { - if (content.data.actionType === 'toolConfirmation') { - return content.data.id; - } - return undefined; -} - export function getPendingToolConfirmationIds(messages: Message[]): Set { const pendingIds = new Set(); const respondedIds = new Set(); @@ -442,8 +433,3 @@ export function getElicitationContent( content.type === 'actionRequired' && content.data.actionType === 'elicitation' ); } - -export function hasCompletedToolCalls(message: Message): boolean { - const toolRequests = getToolRequests(message); - return toolRequests.length > 0; -} diff --git a/ui/desktop/src/utils/analytics.ts b/ui/desktop/src/utils/analytics.ts index 7bb1650b3..41c0a4d10 100644 --- a/ui/desktop/src/utils/analytics.ts +++ b/ui/desktop/src/utils/analytics.ts @@ -447,27 +447,6 @@ export function trackScheduleRunNow(success: boolean, errorDetails?: string): vo // Recipe Tracking // ============================================================================ -export function trackRecipeCreated(success: boolean, errorDetails?: string): void { - trackEvent({ - name: 'recipe_created', - properties: { success, error_details: errorDetails }, - }); -} - -export function trackRecipeImported(success: boolean, errorDetails?: string): void { - trackEvent({ - name: 'recipe_imported', - properties: { success, error_details: errorDetails }, - }); -} - -export function trackRecipeEdited(success: boolean, errorDetails?: string): void { - trackEvent({ - name: 'recipe_edited', - properties: { success, error_details: errorDetails }, - }); -} - export function trackRecipeDeleted(success: boolean, errorDetails?: string): void { trackEvent({ name: 'recipe_deleted', @@ -556,13 +535,6 @@ export function trackVoiceDictation( }); } -export function trackModeChanged(fromMode: string, toMode: string): void { - trackEvent({ - name: 'input_mode_changed', - properties: { from_mode: fromMode, to_mode: toMode }, - }); -} - export function trackDiagnosticsOpened(): void { trackEvent({ name: 'input_diagnostics_opened', @@ -570,20 +542,6 @@ export function trackDiagnosticsOpened(): void { }); } -export function trackCreateRecipeOpened(): void { - trackEvent({ - name: 'input_create_recipe_opened', - properties: {}, - }); -} - -export function trackEditRecipeOpened(): void { - trackEvent({ - name: 'input_edit_recipe_opened', - properties: {}, - }); -} - // ============================================================================ // Auto-Update Tracking // ============================================================================ diff --git a/ui/desktop/src/utils/date.ts b/ui/desktop/src/utils/date.ts index e89c2309f..943e886db 100644 --- a/ui/desktop/src/utils/date.ts +++ b/ui/desktop/src/utils/date.ts @@ -1,36 +1,3 @@ -export const formatToLocalDateTime = (dateString?: string | null): string => { - if (!dateString) { - return 'N/A'; - } - try { - const date = new Date(dateString); - // Check if the date is valid - if (isNaN(date.getTime())) { - return 'Invalid Date'; - } - return date.toLocaleString(); // Uses user's locale and timezone - } catch (e) { - console.error('Error formatting date:', e); - return 'Invalid Date'; - } -}; - -export const formatDate = (dateString?: string | null): string => { - if (!dateString) { - return 'N/A'; - } - try { - const date = new Date(dateString); - if (isNaN(date.getTime())) { - return 'Invalid Date'; - } - return date.toLocaleDateString(); // Uses user's locale - } catch (e) { - console.error('Error formatting date:', e); - return 'Invalid Date'; - } -}; - export const formatToLocalDateWithTimezone = (dateString?: string | null): string => { if (!dateString) { return 'N/A';