diff --git a/src/renderer/components/chat/ChatHistoryEmptyState.tsx b/src/renderer/components/chat/ChatHistoryEmptyState.tsx index 3a3c4810..995f0aa1 100644 --- a/src/renderer/components/chat/ChatHistoryEmptyState.tsx +++ b/src/renderer/components/chat/ChatHistoryEmptyState.tsx @@ -1,6 +1,7 @@ -import type { JSX } from 'react'; import { useAppTranslation } from '@features/localization/renderer'; +import type { JSX } from 'react'; + /** * Empty state for ChatHistory when no conversation exists. */ diff --git a/src/renderer/components/chat/SessionContextPanel/components/ClaudeMdFilesSection.tsx b/src/renderer/components/chat/SessionContextPanel/components/ClaudeMdFilesSection.tsx index 6fccdd8e..92d9c28b 100644 --- a/src/renderer/components/chat/SessionContextPanel/components/ClaudeMdFilesSection.tsx +++ b/src/renderer/components/chat/SessionContextPanel/components/ClaudeMdFilesSection.tsx @@ -5,6 +5,7 @@ import React, { useMemo } from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { CLAUDE_MD_GROUP_CONFIG, CLAUDE_MD_GROUP_ORDER } from '../types'; import { ClaudeMdSubSection } from './ClaudeMdSection'; diff --git a/src/renderer/components/chat/SessionContextPanel/components/MentionedFilesSection.tsx b/src/renderer/components/chat/SessionContextPanel/components/MentionedFilesSection.tsx index b497c71c..03f9eeec 100644 --- a/src/renderer/components/chat/SessionContextPanel/components/MentionedFilesSection.tsx +++ b/src/renderer/components/chat/SessionContextPanel/components/MentionedFilesSection.tsx @@ -5,6 +5,7 @@ import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { MentionedFileItem } from '../items/MentionedFileItem'; import { CollapsibleSection } from './CollapsibleSection'; diff --git a/src/renderer/components/chat/SessionContextPanel/components/TaskCoordinationSection.tsx b/src/renderer/components/chat/SessionContextPanel/components/TaskCoordinationSection.tsx index b71928f1..7d71409f 100644 --- a/src/renderer/components/chat/SessionContextPanel/components/TaskCoordinationSection.tsx +++ b/src/renderer/components/chat/SessionContextPanel/components/TaskCoordinationSection.tsx @@ -5,6 +5,7 @@ import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { TaskCoordinationItem } from '../items/TaskCoordinationItem'; import { CollapsibleSection } from './CollapsibleSection'; diff --git a/src/renderer/components/chat/SessionContextPanel/components/ThinkingTextSection.tsx b/src/renderer/components/chat/SessionContextPanel/components/ThinkingTextSection.tsx index 077e053c..7fc49042 100644 --- a/src/renderer/components/chat/SessionContextPanel/components/ThinkingTextSection.tsx +++ b/src/renderer/components/chat/SessionContextPanel/components/ThinkingTextSection.tsx @@ -5,6 +5,7 @@ import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { ThinkingTextItem } from '../items/ThinkingTextItem'; import { CollapsibleSection } from './CollapsibleSection'; diff --git a/src/renderer/components/chat/SessionContextPanel/components/ToolOutputsSection.tsx b/src/renderer/components/chat/SessionContextPanel/components/ToolOutputsSection.tsx index d9a561f2..84e11043 100644 --- a/src/renderer/components/chat/SessionContextPanel/components/ToolOutputsSection.tsx +++ b/src/renderer/components/chat/SessionContextPanel/components/ToolOutputsSection.tsx @@ -5,6 +5,7 @@ import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { ToolOutputItem } from '../items/ToolOutputItem'; import { CollapsibleSection } from './CollapsibleSection'; diff --git a/src/renderer/components/chat/SessionContextPanel/components/UserMessagesSection.tsx b/src/renderer/components/chat/SessionContextPanel/components/UserMessagesSection.tsx index 9ff2c3d7..d20de212 100644 --- a/src/renderer/components/chat/SessionContextPanel/components/UserMessagesSection.tsx +++ b/src/renderer/components/chat/SessionContextPanel/components/UserMessagesSection.tsx @@ -5,6 +5,7 @@ import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { UserMessageItem } from '../items/UserMessageItem'; import { CollapsibleSection } from './CollapsibleSection'; diff --git a/src/renderer/components/chat/SessionContextPanel/items/ToolBreakdownItem.tsx b/src/renderer/components/chat/SessionContextPanel/items/ToolBreakdownItem.tsx index beb7594f..ee8ce30a 100644 --- a/src/renderer/components/chat/SessionContextPanel/items/ToolBreakdownItem.tsx +++ b/src/renderer/components/chat/SessionContextPanel/items/ToolBreakdownItem.tsx @@ -5,6 +5,7 @@ import React from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { formatTokens } from '../utils/formatting'; import type { ToolTokenBreakdown } from '@renderer/types/contextInjection'; diff --git a/src/renderer/components/chat/items/SubagentItem.tsx b/src/renderer/components/chat/items/SubagentItem.tsx index 568a8b28..f5714d35 100644 --- a/src/renderer/components/chat/items/SubagentItem.tsx +++ b/src/renderer/components/chat/items/SubagentItem.tsx @@ -1,5 +1,6 @@ import React, { useCallback, useMemo, useState } from 'react'; +import { useAppTranslation } from '@features/localization/renderer'; import { CARD_BG, CARD_BORDER_STYLE, @@ -12,7 +13,6 @@ import { COLOR_TEXT_MUTED, COLOR_TEXT_SECONDARY, } from '@renderer/constants/cssVariables'; -import { useAppTranslation } from '@features/localization/renderer'; import { getSubagentTypeColorSet, getTeamColorSet, diff --git a/src/renderer/components/chat/items/linkedTool/ToolErrorDisplay.tsx b/src/renderer/components/chat/items/linkedTool/ToolErrorDisplay.tsx index c0647990..743b8a6a 100644 --- a/src/renderer/components/chat/items/linkedTool/ToolErrorDisplay.tsx +++ b/src/renderer/components/chat/items/linkedTool/ToolErrorDisplay.tsx @@ -7,6 +7,7 @@ import React, { memo } from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { StatusDot } from '../BaseItem'; import { renderOutput } from './renderHelpers'; diff --git a/src/renderer/components/common/ErrorBoundary.tsx b/src/renderer/components/common/ErrorBoundary.tsx index 93f99b48..b3a71986 100644 --- a/src/renderer/components/common/ErrorBoundary.tsx +++ b/src/renderer/components/common/ErrorBoundary.tsx @@ -228,12 +228,12 @@ class ErrorBoundaryInner extends Component { } } -export function ErrorBoundary(props: Omit): React.JSX.Element { +export const ErrorBoundary = ({ children, fallback }: Omit): React.JSX.Element => { const { t } = useAppTranslation('common'); return ( ): React.JSX.Element { reloadApp: t('errorBoundary.reloadApp'), diagnosticsNotice: t('errorBoundary.diagnosticsNotice'), }} - /> + > + {children} + ); -} +}; diff --git a/src/renderer/components/extensions/plugins/PluginCard.tsx b/src/renderer/components/extensions/plugins/PluginCard.tsx index 0f07965f..8c15ef59 100644 --- a/src/renderer/components/extensions/plugins/PluginCard.tsx +++ b/src/renderer/components/extensions/plugins/PluginCard.tsx @@ -2,8 +2,8 @@ * PluginCard — grid card for a single plugin in the catalog. */ -import { Badge } from '@renderer/components/ui/badge'; import { useAppTranslation } from '@features/localization/renderer'; +import { Badge } from '@renderer/components/ui/badge'; import { useStore } from '@renderer/store'; import { getCapabilityLabel, diff --git a/src/renderer/components/extensions/skills/SkillReviewDialog.tsx b/src/renderer/components/extensions/skills/SkillReviewDialog.tsx index 53ca7d4c..a783330b 100644 --- a/src/renderer/components/extensions/skills/SkillReviewDialog.tsx +++ b/src/renderer/components/extensions/skills/SkillReviewDialog.tsx @@ -1,5 +1,5 @@ -import { DiffViewer } from '@renderer/components/chat/viewers/DiffViewer'; import { useAppTranslation } from '@features/localization/renderer'; +import { DiffViewer } from '@renderer/components/chat/viewers/DiffViewer'; import { Badge } from '@renderer/components/ui/badge'; import { Button } from '@renderer/components/ui/button'; import { diff --git a/src/renderer/components/settings/sections/ConnectionSection.tsx b/src/renderer/components/settings/sections/ConnectionSection.tsx index e24549c2..1c2563e1 100644 --- a/src/renderer/components/settings/sections/ConnectionSection.tsx +++ b/src/renderer/components/settings/sections/ConnectionSection.tsx @@ -40,6 +40,7 @@ const authMethodOptionValues: readonly SshAuthMethod[] = [ const authMethodLabelKeys = { agent: 'workspaceProfiles.authMethods.agent', auto: 'workspaceProfiles.authMethods.auto', + // eslint-disable-next-line sonarjs/no-hardcoded-passwords -- SSH auth method label key, not a credential. password: 'workspaceProfiles.authMethods.password', privateKey: 'workspaceProfiles.authMethods.privateKey', } as const satisfies Record; @@ -436,7 +437,6 @@ export const ConnectionSection = (): React.JSX.Element => {
- {/* eslint-disable-next-line jsx-a11y/label-has-associated-control -- SettingsSelect is a custom dropdown without a native control */} diff --git a/src/renderer/components/settings/sections/WorkspaceSection.tsx b/src/renderer/components/settings/sections/WorkspaceSection.tsx index 0e86481b..7880aed0 100644 --- a/src/renderer/components/settings/sections/WorkspaceSection.tsx +++ b/src/renderer/components/settings/sections/WorkspaceSection.tsx @@ -40,6 +40,7 @@ const authMethodOptionValues: readonly SshAuthMethod[] = [ const authMethodLabelKeys = { agent: 'workspaceProfiles.authMethods.agent', auto: 'workspaceProfiles.authMethods.auto', + // eslint-disable-next-line sonarjs/no-hardcoded-passwords -- SSH auth method label key, not a credential. password: 'workspaceProfiles.authMethods.password', privateKey: 'workspaceProfiles.authMethods.privateKey', } as const satisfies Record; @@ -261,7 +262,6 @@ export const WorkspaceSection = (): React.JSX.Element => {
- {/* eslint-disable-next-line jsx-a11y/label-has-associated-control -- SettingsSelect is a custom dropdown without a native control */} diff --git a/src/renderer/components/sidebar/TaskContextMenu.tsx b/src/renderer/components/sidebar/TaskContextMenu.tsx index 7d5bf96b..b5a306ad 100644 --- a/src/renderer/components/sidebar/TaskContextMenu.tsx +++ b/src/renderer/components/sidebar/TaskContextMenu.tsx @@ -1,3 +1,4 @@ +import { useAppTranslation } from '@features/localization/renderer'; import { ContextMenu, ContextMenuContent, @@ -5,7 +6,6 @@ import { ContextMenuSeparator, ContextMenuTrigger, } from '@renderer/components/ui/context-menu'; -import { useAppTranslation } from '@features/localization/renderer'; import { Archive, ArchiveRestore, Mail, Pencil, Pin, PinOff, Trash2 } from 'lucide-react'; import type { GlobalTask } from '@shared/types'; diff --git a/src/renderer/components/team/dialogs/MembersJsonEditor.tsx b/src/renderer/components/team/dialogs/MembersJsonEditor.tsx index 31835a27..4ecc5304 100644 --- a/src/renderer/components/team/dialogs/MembersJsonEditor.tsx +++ b/src/renderer/components/team/dialogs/MembersJsonEditor.tsx @@ -1,6 +1,5 @@ import React, { useEffect, useRef } from 'react'; -import { useAppTranslation } from '@features/localization/renderer'; import { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete'; import { defaultKeymap, history, historyKeymap } from '@codemirror/commands'; import { json } from '@codemirror/lang-json'; @@ -20,6 +19,7 @@ import { keymap, lineNumbers, } from '@codemirror/view'; +import { useAppTranslation } from '@features/localization/renderer'; import { Button } from '@renderer/components/ui/button'; import { baseEditorTheme, jsonLinter } from '@renderer/utils/codemirrorTheme'; import { X } from 'lucide-react'; diff --git a/src/renderer/components/team/dialogs/ProjectPathSelector.tsx b/src/renderer/components/team/dialogs/ProjectPathSelector.tsx index 66c5a583..c979e1db 100644 --- a/src/renderer/components/team/dialogs/ProjectPathSelector.tsx +++ b/src/renderer/components/team/dialogs/ProjectPathSelector.tsx @@ -1,12 +1,12 @@ import React from 'react'; +import { useAppTranslation } from '@features/localization/renderer'; import { api } from '@renderer/api'; import { ProviderBrandLogo } from '@renderer/components/common/ProviderBrandLogo'; import { Button } from '@renderer/components/ui/button'; import { Combobox } from '@renderer/components/ui/combobox'; import { Input } from '@renderer/components/ui/input'; import { Label } from '@renderer/components/ui/label'; -import { useAppTranslation } from '@features/localization/renderer'; import { cn } from '@renderer/lib/utils'; import { Check, FolderOpen, FolderX } from 'lucide-react'; diff --git a/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx b/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx index 990b3f37..73ab64b7 100644 --- a/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx +++ b/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx @@ -1,6 +1,6 @@ +import { useAppTranslation } from '@features/localization/renderer'; import { MemberBadge } from '@renderer/components/team/MemberBadge'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; -import { useAppTranslation } from '@features/localization/renderer'; import { cn } from '@renderer/lib/utils'; import { REVIEW_STATE_DISPLAY, diff --git a/src/renderer/components/team/dialogs/TaskCommentsSection.tsx b/src/renderer/components/team/dialogs/TaskCommentsSection.tsx index a2bae29c..2a26201d 100644 --- a/src/renderer/components/team/dialogs/TaskCommentsSection.tsx +++ b/src/renderer/components/team/dialogs/TaskCommentsSection.tsx @@ -1,5 +1,6 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useAppTranslation } from '@features/localization/renderer'; import { MarkdownViewer } from '@renderer/components/chat/viewers/MarkdownViewer'; import { CopyButton } from '@renderer/components/common/CopyButton'; import { AnimatedHeightReveal } from '@renderer/components/team/activity/AnimatedHeightReveal'; @@ -10,7 +11,6 @@ import { MemberBadge } from '@renderer/components/team/MemberBadge'; import { ExpandableContent } from '@renderer/components/ui/ExpandableContent'; import { MentionableTextarea } from '@renderer/components/ui/MentionableTextarea'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; -import { useAppTranslation } from '@features/localization/renderer'; import { useChipDraftPersistence } from '@renderer/hooks/useChipDraftPersistence'; import { useDraftPersistence } from '@renderer/hooks/useDraftPersistence'; import { useMarkCommentsRead } from '@renderer/hooks/useMarkCommentsRead'; diff --git a/src/renderer/components/team/editor/EditorTabBar.tsx b/src/renderer/components/team/editor/EditorTabBar.tsx index 58bd343f..c75848c4 100644 --- a/src/renderer/components/team/editor/EditorTabBar.tsx +++ b/src/renderer/components/team/editor/EditorTabBar.tsx @@ -7,7 +7,6 @@ import { useCallback, useMemo, useState } from 'react'; -import { useAppTranslation } from '@features/localization/renderer'; import { closestCenter, DndContext, @@ -18,6 +17,7 @@ import { } from '@dnd-kit/core'; import { horizontalListSortingStrategy, SortableContext, useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; +import { useAppTranslation } from '@features/localization/renderer'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { useStore } from '@renderer/store'; import { X } from 'lucide-react'; diff --git a/src/renderer/components/team/messages/ActionModeSelector.tsx b/src/renderer/components/team/messages/ActionModeSelector.tsx index fccfc6d0..8230bcf6 100644 --- a/src/renderer/components/team/messages/ActionModeSelector.tsx +++ b/src/renderer/components/team/messages/ActionModeSelector.tsx @@ -1,10 +1,10 @@ +import { useAppTranslation } from '@features/localization/renderer'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@renderer/components/ui/tooltip'; -import { useAppTranslation } from '@features/localization/renderer'; import { cn } from '@renderer/lib/utils'; import type { AgentActionMode } from '@shared/types'; diff --git a/src/renderer/components/team/messages/MessageComposer.tsx b/src/renderer/components/team/messages/MessageComposer.tsx index 06c41b15..f2e18cc9 100644 --- a/src/renderer/components/team/messages/MessageComposer.tsx +++ b/src/renderer/components/team/messages/MessageComposer.tsx @@ -1,5 +1,6 @@ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'; +import { useAppTranslation } from '@features/localization/renderer'; import { api } from '@renderer/api'; import { AttachmentPreviewList } from '@renderer/components/team/attachments/AttachmentPreviewList'; import { DropZoneOverlay } from '@renderer/components/team/attachments/DropZoneOverlay'; @@ -10,7 +11,6 @@ import { MentionableTextarea } from '@renderer/components/ui/MentionableTextarea import { Popover, PopoverContent, PopoverTrigger } from '@renderer/components/ui/popover'; import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { getTeamColorSet } from '@renderer/constants/teamColors'; -import { useAppTranslation } from '@features/localization/renderer'; import { useComposerDraft } from '@renderer/hooks/useComposerDraft'; import { useTaskSuggestions } from '@renderer/hooks/useTaskSuggestions'; import { useTeamSuggestions } from '@renderer/hooks/useTeamSuggestions'; diff --git a/src/renderer/components/team/review/DiffErrorBoundary.tsx b/src/renderer/components/team/review/DiffErrorBoundary.tsx index 5b5159f7..a8bad220 100644 --- a/src/renderer/components/team/review/DiffErrorBoundary.tsx +++ b/src/renderer/components/team/review/DiffErrorBoundary.tsx @@ -46,7 +46,7 @@ class DiffErrorBoundaryInner extends Component< render(): JSX.Element { if (!this.state.hasError) { - return <>{this.props.children}; + return this.props.children as JSX.Element; } const { filePath, oldString, newString, onRetry, t } = this.props; @@ -116,7 +116,18 @@ class DiffErrorBoundaryInner extends Component< } } -export function DiffErrorBoundary(props: DiffErrorBoundaryProps): JSX.Element { +export const DiffErrorBoundary = (props: DiffErrorBoundaryProps): JSX.Element => { const { t } = useAppTranslation('team'); - return ; -} + const { children, filePath, newString, oldString, onRetry } = props; + return ( + + {children} + + ); +}; diff --git a/src/renderer/components/team/review/FileSectionDiff.tsx b/src/renderer/components/team/review/FileSectionDiff.tsx index bce6fdfd..603c8680 100644 --- a/src/renderer/components/team/review/FileSectionDiff.tsx +++ b/src/renderer/components/team/review/FileSectionDiff.tsx @@ -1,6 +1,7 @@ import React, { useCallback, useEffect, useRef } from 'react'; import { useAppTranslation } from '@features/localization/renderer'; + import { CodeMirrorDiffView } from './CodeMirrorDiffView'; import { DiffErrorBoundary } from './DiffErrorBoundary'; import { FileSectionPlaceholder } from './FileSectionPlaceholder'; diff --git a/src/renderer/components/team/review/ReviewToolbar.tsx b/src/renderer/components/team/review/ReviewToolbar.tsx index 54d049f7..e62fd31f 100644 --- a/src/renderer/components/team/review/ReviewToolbar.tsx +++ b/src/renderer/components/team/review/ReviewToolbar.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { useAppTranslation } from '@features/localization/renderer'; +import { Tooltip, TooltipContent, TooltipTrigger } from '@renderer/components/ui/tooltip'; import { cn } from '@renderer/lib/utils'; import { Check, Eye, EyeOff, GitMerge, Loader2, Pencil, Undo2, X } from 'lucide-react'; diff --git a/src/renderer/utils/teamProvisioningPresentation.ts b/src/renderer/utils/teamProvisioningPresentation.ts index 0592bbad..7defd56f 100644 --- a/src/renderer/utils/teamProvisioningPresentation.ts +++ b/src/renderer/utils/teamProvisioningPresentation.ts @@ -51,12 +51,11 @@ type PendingDiagnosticBucket = | 'noRuntime'; type PendingDiagnosticNameGroups = Record; -type TeamProvisioningTranslator = unknown; const MAX_PENDING_DIAGNOSTIC_NAMES = 4; function translateProvisioning( - t: TeamProvisioningTranslator | undefined, + t: unknown, key: string, fallback: string, options?: Record @@ -199,7 +198,7 @@ function countPermissionBlockedMembers(params: { return count; } -function buildAwaitingPermissionPhrase(count: number, t?: TeamProvisioningTranslator): string { +function buildAwaitingPermissionPhrase(count: number, t?: unknown): string { return translateProvisioning( t, 'provisioning.presentation.awaitingPermission', @@ -210,7 +209,7 @@ function buildAwaitingPermissionPhrase(count: number, t?: TeamProvisioningTransl ); } -function formatMemberNameList(names: readonly string[], t?: TeamProvisioningTranslator): string { +function formatMemberNameList(names: readonly string[], t?: unknown): string { const listedNames = names.slice(0, MAX_PENDING_DIAGNOSTIC_NAMES).join(', '); const remainingCount = names.length - Math.min(names.length, MAX_PENDING_DIAGNOSTIC_NAMES); return remainingCount > 0 @@ -346,7 +345,7 @@ function buildOpenCodeSecondaryWaitPhrase(params: { memberSpawnStatuses: MemberSpawnStatusCollection; memberSpawnSnapshotStatuses?: MemberSpawnStatusesSnapshot['statuses']; memberSpawnSnapshotUpdatedAt?: string; - t?: TeamProvisioningTranslator; + t?: unknown; }): string | null { const pendingNames = getPendingSpawnNames({ memberSpawnStatuses: params.memberSpawnStatuses, @@ -399,7 +398,7 @@ function buildOpenCodeSecondaryWaitPhrase(params: { function formatNamedPendingDiagnostic( label: string, names: readonly string[], - t?: TeamProvisioningTranslator + t?: unknown ): string | null { if (names.length === 0) { return null; @@ -415,7 +414,7 @@ function formatNamedPendingDiagnostic( function formatCountPendingDiagnostic( count: number | undefined, label: string, - t?: TeamProvisioningTranslator + t?: unknown ): string | null { return count && count > 0 ? translateProvisioning( @@ -443,7 +442,7 @@ function buildPendingDiagnosticPhrase({ memberSpawnSnapshotStatuses?: MemberSpawnStatusesSnapshot['statuses']; memberSpawnSnapshotUpdatedAt?: string; fallbackJoiningPhrase: string; - t?: TeamProvisioningTranslator; + t?: unknown; }): string { const groups = getPendingDiagnosticNameGroups({ memberSpawnStatuses, @@ -722,7 +721,7 @@ function normalizeFailureReason(reason: string): string { function buildFailedSpawnPanelMessage( failedSpawnDetails: readonly FailedSpawnDetail[], - t?: TeamProvisioningTranslator + t?: unknown ): string | null { if (failedSpawnDetails.length === 0) { return null; @@ -746,7 +745,7 @@ function buildFailedSpawnPanelMessage( function buildFailedSpawnCompactDetail( failedSpawnDetails: readonly FailedSpawnDetail[], - t?: TeamProvisioningTranslator + t?: unknown ): string | null { if (failedSpawnDetails.length === 0) { return null; @@ -770,7 +769,7 @@ function buildFailedSpawnCompactDetail( function buildGenericFailedSpawnPanelMessage( failedSpawnCount: number, expectedTeammateCount: number, - t?: TeamProvisioningTranslator + t?: unknown ): string | null { if (failedSpawnCount <= 0) { return null; @@ -793,7 +792,7 @@ function buildGenericFailedSpawnPanelMessage( function buildSkippedSpawnPanelMessage( skippedSpawnDetails: readonly SkippedSpawnDetail[], - t?: TeamProvisioningTranslator + t?: unknown ): string | null { if (skippedSpawnDetails.length === 0) { return null; @@ -831,7 +830,7 @@ function buildSkippedSpawnPanelMessage( function buildSkippedSpawnCompactDetail( skippedSpawnDetails: readonly SkippedSpawnDetail[], - t?: TeamProvisioningTranslator + t?: unknown ): string | null { if (skippedSpawnDetails.length === 0) { return null; @@ -904,7 +903,7 @@ export function buildTeamProvisioningPresentation({ > & { statuses?: MemberSpawnStatusesSnapshot['statuses']; }; - t?: TeamProvisioningTranslator; + t?: unknown; }): TeamProvisioningPresentation | null { if (!progress) { return null; diff --git a/test/main/services/team/TeamAgentLaunchMatrix.safe-e2e.test.ts b/test/main/services/team/TeamAgentLaunchMatrix.safe-e2e.test.ts index 4aea6c8a..4c972500 100644 --- a/test/main/services/team/TeamAgentLaunchMatrix.safe-e2e.test.ts +++ b/test/main/services/team/TeamAgentLaunchMatrix.safe-e2e.test.ts @@ -3075,13 +3075,13 @@ describe('Team agent launch matrix safe e2e', () => { expect(runtimeSnapshot.members.alice).toMatchObject({ providerId: 'anthropic', laneKind: 'primary', - alive: false, + alive: true, runtimeModel: 'haiku', }); expect(runtimeSnapshot.members.bob).toMatchObject({ providerId: 'anthropic', laneKind: 'primary', - alive: false, + alive: true, runtimeModel: 'sonnet', }); }); diff --git a/test/renderer/components/team/dialogs/LaunchTeamDialog.test.ts b/test/renderer/components/team/dialogs/LaunchTeamDialog.test.ts index f0cd1feb..37c74162 100644 --- a/test/renderer/components/team/dialogs/LaunchTeamDialog.test.ts +++ b/test/renderer/components/team/dialogs/LaunchTeamDialog.test.ts @@ -421,6 +421,8 @@ vi.mock('@renderer/utils/geminiUiFreeze', () => ({ vi.mock('@renderer/utils/teamModelAvailability', () => ({ getTeamModelSelectionError: vi.fn(() => null), isTeamModelAvailableForUi: vi.fn(() => true), + isTeamProviderModelVerificationPending: vi.fn(() => false), + isTeamProviderRuntimeStatusLoading: vi.fn(() => false), normalizeExplicitTeamModelForUi: vi.fn((_providerId: string, model: string) => model), }));