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';