(function Ma
setTabCompletionOpen, setSelectedTabCompletionIndex, setTabCompletionFilter,
atMentionOpen, atMentionFilter, atMentionStartIndex, atMentionSuggestions, selectedAtMentionIndex,
setAtMentionOpen, setAtMentionFilter, setAtMentionStartIndex, setSelectedAtMentionIndex,
- previewFile, markdownEditMode, shortcuts, rightPanelOpen, maxOutputLines, gitDiffPreview,
+ previewFile, markdownEditMode, shortcuts, rightPanelOpen, maxOutputLines, gitDiffPreview: _gitDiffPreview,
fileTreeFilterOpen, logLevel, setGitDiffPreview, setLogViewerOpen, setAgentSessionsOpen, setActiveAgentSessionId,
onResumeAgentSession, onNewAgentSession, setActiveFocus, setOutputSearchOpen, setOutputSearchQuery,
setInputValue, setEnterToSendAI, setEnterToSendTerminal, setStagedImages, setLightboxImage, setCommandHistoryOpen,
setCommandHistoryFilter, setCommandHistorySelectedIndex, setSlashCommandOpen,
setSelectedSlashCommandIndex, setPreviewFile, setMarkdownEditMode,
- setAboutModalOpen, setRightPanelOpen, setGitLogOpen, inputRef, logsEndRef, terminalOutputRef,
+ setAboutModalOpen: _setAboutModalOpen, setRightPanelOpen, setGitLogOpen, inputRef, logsEndRef, terminalOutputRef,
fileTreeContainerRef, fileTreeFilterInputRef, toggleInputMode, processInput, handleInterrupt,
handleInputKeyDown, handlePaste, handleDrop, getContextColor, setActiveSessionId,
- batchRunState, currentSessionBatchState, onStopBatchRun, showConfirmation, onRemoveQueuedItem, onOpenQueueBrowser,
+ batchRunState: _batchRunState, currentSessionBatchState, onStopBatchRun, showConfirmation: _showConfirmation, onRemoveQueuedItem, onOpenQueueBrowser,
isMobileLandscape = false,
showFlashNotification,
onOpenWorktreeConfig,
diff --git a/src/renderer/components/MarkdownRenderer.tsx b/src/renderer/components/MarkdownRenderer.tsx
index e49b7cae..b71dd27e 100644
--- a/src/renderer/components/MarkdownRenderer.tsx
+++ b/src/renderer/components/MarkdownRenderer.tsx
@@ -225,7 +225,7 @@ export const MarkdownRenderer = memo(({ content, theme, onCopy, className = '',
remarkPlugins={remarkPlugins}
rehypePlugins={allowRawHtml ? [rehypeRaw] : undefined}
components={{
- a: ({ node, href, children, ...props }) => {
+ a: ({ node: _node, href, children, ...props }) => {
// Check for maestro-file:// protocol OR data-maestro-file attribute
// (data attribute is fallback when rehype strips custom protocols)
const dataFilePath = (props as any)['data-maestro-file'];
@@ -250,7 +250,7 @@ export const MarkdownRenderer = memo(({ content, theme, onCopy, className = '',
);
},
- code: ({ node, inline, className, children, ...props }: any) => {
+ code: ({ node: _node, inline, className, children, ...props }: any) => {
const match = (className || '').match(/language-(\w+)/);
const language = match ? match[1] : 'text';
const codeContent = String(children).replace(/\n$/, '');
@@ -268,7 +268,7 @@ export const MarkdownRenderer = memo(({ content, theme, onCopy, className = '',
);
},
- img: ({ node, src, alt, ...props }: any) => {
+ img: ({ node: _node, src, alt, ...props }: any) => {
// Use LocalImage component to handle file:// URLs via IPC
// Extract width from data-maestro-width attribute if present
const widthStr = props['data-maestro-width'];
diff --git a/src/renderer/components/MergeProgressModal.tsx b/src/renderer/components/MergeProgressModal.tsx
index 8ab85b41..020e92b0 100644
--- a/src/renderer/components/MergeProgressModal.tsx
+++ b/src/renderer/components/MergeProgressModal.tsx
@@ -380,7 +380,7 @@ export function MergeProgressModal({
{STAGES.map((stage, index) => {
const isActive = index === currentStageIndex;
const isCompleted = index < currentStageIndex;
- const isPending = index > currentStageIndex;
+ const _isPending = index > currentStageIndex;
return (
- {items.map((item, itemIndex) => {
+ {items.map((item, _itemIndex) => {
const flatIndex = filteredItems.indexOf(item);
const isSelected = flatIndex === selectedIndex;
const isTarget = selectedTarget?.tabId === item.tabId;
diff --git a/src/renderer/components/NewInstanceModal.tsx b/src/renderer/components/NewInstanceModal.tsx
index c93c225d..5021a301 100644
--- a/src/renderer/components/NewInstanceModal.tsx
+++ b/src/renderer/components/NewInstanceModal.tsx
@@ -690,7 +690,7 @@ export function EditAgentModal({ isOpen, onClose, onSave, theme, session, existi
const [customPath, setCustomPath] = useState('');
const [customArgs, setCustomArgs] = useState('');
const [customEnvVars, setCustomEnvVars] = useState>({});
- const [customModel, setCustomModel] = useState('');
+ const [_customModel, setCustomModel] = useState('');
const [refreshingAgent, setRefreshingAgent] = useState(false);
const nameInputRef = useRef(null);
diff --git a/src/renderer/components/QuickActionsModal.tsx b/src/renderer/components/QuickActionsModal.tsx
index f57d2966..2397e340 100644
--- a/src/renderer/components/QuickActionsModal.tsx
+++ b/src/renderer/components/QuickActionsModal.tsx
@@ -104,7 +104,7 @@ export function QuickActionsModal(props: QuickActionsModalProps) {
setShortcutsHelpOpen, setAboutModalOpen, setLogViewerOpen, setProcessMonitorOpen,
setAgentSessionsOpen, setActiveAgentSessionId, setGitDiffPreview, setGitLogOpen,
onRenameTab, onToggleReadOnlyMode, onToggleTabShowThinking, onOpenTabSwitcher, tabShortcuts, isAiMode, setPlaygroundOpen, onRefreshGitFileState,
- onDebugReleaseQueuedItem, markdownEditMode, onToggleMarkdownEditMode, setUpdateCheckModalOpen, openWizard, wizardGoToStep, setDebugWizardModalOpen, setDebugPackageModalOpen, startTour, setFuzzyFileSearchOpen, onEditAgent,
+ onDebugReleaseQueuedItem, markdownEditMode, onToggleMarkdownEditMode, setUpdateCheckModalOpen, openWizard, wizardGoToStep: _wizardGoToStep, setDebugWizardModalOpen, setDebugPackageModalOpen, startTour, setFuzzyFileSearchOpen, onEditAgent,
groupChats, onNewGroupChat, onOpenGroupChat, onCloseGroupChat, onDeleteGroupChat, activeGroupChatId,
hasActiveSessionCapability, onOpenMergeSession, onOpenSendToAgent, onOpenCreatePR,
onSummarizeAndContinue, canSummarizeActiveTab
diff --git a/src/renderer/components/RenameGroupModal.tsx b/src/renderer/components/RenameGroupModal.tsx
index 718bb51e..bf402d1c 100644
--- a/src/renderer/components/RenameGroupModal.tsx
+++ b/src/renderer/components/RenameGroupModal.tsx
@@ -18,7 +18,7 @@ interface RenameGroupModalProps {
export function RenameGroupModal(props: RenameGroupModalProps) {
const {
theme, groupId, groupName, setGroupName, groupEmoji, setGroupEmoji,
- onClose, groups, setGroups
+ onClose, groups: _groups, setGroups
} = props;
const inputRef = useRef(null);
diff --git a/src/renderer/components/SendToAgentModal.tsx b/src/renderer/components/SendToAgentModal.tsx
index a5793866..c1e0dea2 100644
--- a/src/renderer/components/SendToAgentModal.tsx
+++ b/src/renderer/components/SendToAgentModal.tsx
@@ -14,7 +14,7 @@
*/
import React, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
-import { Search, ArrowRight, Check, X, Loader2, Circle } from 'lucide-react';
+import { Search, ArrowRight, X, Loader2, Circle } from 'lucide-react';
import type { Theme, Session, AITab, ToolType } from '../types';
import type { MergeResult } from '../types/contextMerge';
import { fuzzyMatchWithScore } from '../utils/search';
diff --git a/src/renderer/components/SessionList.tsx b/src/renderer/components/SessionList.tsx
index 06f7137b..23a36373 100644
--- a/src/renderer/components/SessionList.tsx
+++ b/src/renderer/components/SessionList.tsx
@@ -1,4 +1,4 @@
-import React, { useState, useEffect, useRef, useCallback } from 'react';
+import React, { useState, useEffect, useRef } from 'react';
import {
Wand2, Plus, Settings, ChevronRight, ChevronDown, ChevronUp, X, Keyboard,
Radio, Copy, ExternalLink, PanelLeftClose, PanelLeftOpen, Folder, Info, GitBranch, Bot, Clock,
@@ -788,7 +788,7 @@ export function SessionList(props: SessionListProps) {
setLiveOverlayOpen,
liveOverlayRef,
cloudflaredInstalled,
- cloudflaredChecked,
+ cloudflaredChecked: _cloudflaredChecked,
tunnelStatus,
tunnelUrl,
tunnelError,
@@ -916,7 +916,7 @@ export function SessionList(props: SessionListProps) {
};
// Helper: Check if a session has worktree children
- const hasWorktreeChildren = (sessionId: string): boolean => {
+ const _hasWorktreeChildren = (sessionId: string): boolean => {
return sessions.some(s => s.parentSessionId === sessionId);
};
@@ -924,7 +924,7 @@ export function SessionList(props: SessionListProps) {
const renderCollapsedPill = (
session: Session,
keyPrefix: string,
- onExpand: () => void
+ _onExpand: () => void
) => {
const worktreeChildren = getWorktreeChildren(session.id);
const allSessions = [session, ...worktreeChildren];
@@ -1187,7 +1187,7 @@ export function SessionList(props: SessionListProps) {
setPreFilterBookmarksCollapsed(null);
}
}
- // eslint-disable-next-line react-hooks/exhaustive-deps
+
}, [sessionFilterOpen]);
// Temporarily expand groups when filtering to show matching sessions
@@ -1227,7 +1227,7 @@ export function SessionList(props: SessionListProps) {
setGroups(prev => prev.map(g => ({ ...g, collapsed: true })));
setBookmarksCollapsed(false);
}
- // eslint-disable-next-line react-hooks/exhaustive-deps
+
}, [sessionFilter]);
// Get the jump number (1-9, 0=10th) for a session based on its position in visibleSessions
diff --git a/src/renderer/components/SettingsModal.tsx b/src/renderer/components/SettingsModal.tsx
index 32a68cc1..4e55d3d4 100644
--- a/src/renderer/components/SettingsModal.tsx
+++ b/src/renderer/components/SettingsModal.tsx
@@ -244,7 +244,7 @@ export const SettingsModal = memo(function SettingsModal(props: SettingsModalPro
// Sync/storage location state
const [defaultStoragePath, setDefaultStoragePath] = useState('');
- const [currentStoragePath, setCurrentStoragePath] = useState('');
+ const [_currentStoragePath, setCurrentStoragePath] = useState('');
const [customSyncPath, setCustomSyncPath] = useState(undefined);
const [syncRestartRequired, setSyncRestartRequired] = useState(false);
const [syncMigrating, setSyncMigrating] = useState(false);
diff --git a/src/renderer/components/StandingOvationOverlay.tsx b/src/renderer/components/StandingOvationOverlay.tsx
index 5b2a153a..58358675 100644
--- a/src/renderer/components/StandingOvationOverlay.tsx
+++ b/src/renderer/components/StandingOvationOverlay.tsx
@@ -112,7 +112,7 @@ export function StandingOvationOverlay({
// Fire confetti on mount only - empty deps to run once
useEffect(() => {
fireConfetti();
- // eslint-disable-next-line react-hooks/exhaustive-deps
+
}, []);
// Handle graceful close with confetti
diff --git a/src/renderer/components/TabBar.tsx b/src/renderer/components/TabBar.tsx
index ed0bbdea..0298f299 100644
--- a/src/renderer/components/TabBar.tsx
+++ b/src/renderer/components/TabBar.tsx
@@ -586,7 +586,7 @@ export function TabBar({
}, [onRequestRename]);
// Count unread tabs for the filter toggle tooltip
- const unreadCount = tabs.filter(t => t.hasUnread).length;
+ const _unreadCount = tabs.filter(t => t.hasUnread).length;
// Filter tabs based on unread filter state
// When filter is on, show: unread tabs + active tab + tabs with drafts
diff --git a/src/renderer/components/TerminalOutput.tsx b/src/renderer/components/TerminalOutput.tsx
index 613fe114..9c62fc05 100644
--- a/src/renderer/components/TerminalOutput.tsx
+++ b/src/renderer/components/TerminalOutput.tsx
@@ -9,7 +9,6 @@ import { MODAL_PRIORITIES } from '../constants/modalPriorities';
import { getActiveTab } from '../utils/tabHelpers';
import { useDebouncedValue, useThrottledCallback } from '../hooks';
import {
- processCarriageReturns,
processLogTextHelper,
filterTextByLinesHelper,
getCachedAnsiHtml,
@@ -858,9 +857,9 @@ interface TerminalOutputProps {
export const TerminalOutput = forwardRef((props, ref) => {
const {
- session, theme, fontFamily, activeFocus, outputSearchOpen, outputSearchQuery,
+ session, theme, fontFamily, activeFocus: _activeFocus, outputSearchOpen, outputSearchQuery,
setOutputSearchOpen, setOutputSearchQuery, setActiveFocus, setLightboxImage,
- inputRef, logsEndRef, maxOutputLines, onDeleteLog, onRemoveQueuedItem, onInterrupt,
+ inputRef, logsEndRef, maxOutputLines, onDeleteLog, onRemoveQueuedItem, onInterrupt: _onInterrupt,
audioFeedbackCommand, onScrollPositionChange, onAtBottomChange, initialScrollTop,
markdownEditMode, setMarkdownEditMode, onReplayMessage,
fileTree, cwd, projectRoot, onFileClick, onShowErrorDetails
@@ -879,7 +878,7 @@ export const TerminalOutput = forwardRef((p
const expandedLogsRef = useRef(expandedLogs);
expandedLogsRef.current = expandedLogs;
// Counter to force re-render of LogItem when expanded state changes
- const [expandedTrigger, setExpandedTrigger] = useState(0);
+ const [_expandedTrigger, setExpandedTrigger] = useState(0);
// Track local filters per log entry (log ID -> filter query)
const [localFilters, setLocalFilters] = useState