From b341cc516dcc502d1c9d3d6600238206e2667935 Mon Sep 17 00:00:00 2001 From: spencrmartin Date: Tue, 19 Aug 2025 13:24:13 -0400 Subject: [PATCH] fix: resolve comprehensive TypeScript lint errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix sessionStorage undefined errors by prefixing with window.sessionStorage - Replace @ts-ignore with @ts-expect-error for proper TypeScript error handling - Remove unused onReset parameter from DashboardWidget interface - Replace 'any' type with proper type definitions for session data - Add missing dependency to useEffect cleanup function - Fix HTMLSpanElement undefined error in Pill component All lint errors should now be resolved: - ✅ No sessionStorage undefined errors - ✅ Proper TypeScript error suppression - ✅ No unused parameters - ✅ Proper type definitions instead of 'any' - ✅ Complete useEffect dependency arrays - ✅ Proper DOM type references --- ui/desktop/src/components/ChatInput.tsx | 14 +++++++------- .../src/components/dashboard/DashboardWidget.tsx | 2 +- ui/desktop/src/components/hub.tsx | 4 ++-- ui/desktop/src/components/pair.tsx | 4 ++-- ui/desktop/src/types/dashboard.ts | 12 +++++++++++- ui/desktop/src/utils/queueStorage.ts | 6 +++--- 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/ui/desktop/src/components/ChatInput.tsx b/ui/desktop/src/components/ChatInput.tsx index 107563dbd896..ef6b53ecd1f8 100644 --- a/ui/desktop/src/components/ChatInput.tsx +++ b/ui/desktop/src/components/ChatInput.tsx @@ -123,7 +123,7 @@ export default function ChatInput({ const queuePausedRef = useRef((() => { // Load pause state from storage try { - const stored = sessionStorage.getItem('goose-queue-paused'); + const stored = window.sessionStorage.getItem('goose-queue-paused'); return stored ? JSON.parse(stored) : false; } catch { return false; @@ -133,7 +133,7 @@ export default function ChatInput({ const [lastInterruption, setLastInterruption] = useState(() => { // Load interruption state from storage try { - const stored = sessionStorage.getItem('goose-queue-interruption'); + const stored = window.sessionStorage.getItem('goose-queue-interruption'); return stored ? JSON.parse(stored) : null; } catch { return null; @@ -167,7 +167,7 @@ export default function ChatInput({ // Save queue state (paused/interrupted) to storage useEffect(() => { try { - sessionStorage.setItem('goose-queue-paused', JSON.stringify(queuePausedRef.current)); + window.sessionStorage.setItem('goose-queue-paused', JSON.stringify(queuePausedRef.current)); } catch (error) { console.error('Error saving queue pause state:', error); } @@ -175,7 +175,7 @@ export default function ChatInput({ useEffect(() => { try { - sessionStorage.setItem('goose-queue-interruption', JSON.stringify(lastInterruption)); + window.sessionStorage.setItem('goose-queue-interruption', JSON.stringify(lastInterruption)); } catch (error) { console.error('Error saving queue interruption state:', error); } @@ -186,13 +186,13 @@ export default function ChatInput({ return () => { // Save final queue state when component unmounts try { - sessionStorage.setItem('goose-queue-paused', JSON.stringify(queuePausedRef.current)); - sessionStorage.setItem('goose-queue-interruption', JSON.stringify(lastInterruption)); + window.sessionStorage.setItem('goose-queue-paused', JSON.stringify(queuePausedRef.current)); + window.sessionStorage.setItem('goose-queue-interruption', JSON.stringify(lastInterruption)); } catch (error) { console.error('Error saving queue state on unmount:', error); } }; - }, []); // Empty dependency array - only run on mount/unmount + }, [lastInterruption]); // Add lastInterruption dependency // Queue processing useEffect(() => { diff --git a/ui/desktop/src/components/dashboard/DashboardWidget.tsx b/ui/desktop/src/components/dashboard/DashboardWidget.tsx index e89423c0bd63..be8a73ea155a 100644 --- a/ui/desktop/src/components/dashboard/DashboardWidget.tsx +++ b/ui/desktop/src/components/dashboard/DashboardWidget.tsx @@ -69,7 +69,7 @@ export function DashboardWidget({ widget, onMouseDown, isDragging, onReset }: Da
- {widget.data?.recentSessions?.slice(0, 5).map((session: any) => ( + {widget.data?.recentSessions?.slice(0, 5).map((session: { id: string; metadata?: { description?: string }; modified: string }) => (
; + greeting?: string; + subtitle?: string; + }; title?: string; } diff --git a/ui/desktop/src/utils/queueStorage.ts b/ui/desktop/src/utils/queueStorage.ts index 1b80dfb64df6..88433b636542 100644 --- a/ui/desktop/src/utils/queueStorage.ts +++ b/ui/desktop/src/utils/queueStorage.ts @@ -11,7 +11,7 @@ const QUEUE_EXPIRY_HOURS = 24; export class QueueStorage { private static getStoredQueue(): QueuedMessage[] { try { - const stored = sessionStorage.getItem(QUEUE_STORAGE_KEY); + const stored = window.sessionStorage.getItem(QUEUE_STORAGE_KEY); if (!stored) return []; const queue = JSON.parse(stored) as QueuedMessage[]; @@ -37,7 +37,7 @@ export class QueueStorage { private static setStoredQueue(queue: QueuedMessage[]) { try { - sessionStorage.setItem(QUEUE_STORAGE_KEY, JSON.stringify(queue)); + window.sessionStorage.setItem(QUEUE_STORAGE_KEY, JSON.stringify(queue)); } catch (error) { console.error('Error saving message queue:', error); } @@ -66,7 +66,7 @@ export class QueueStorage { } static clearQueue() { - sessionStorage.removeItem(QUEUE_STORAGE_KEY); + window.sessionStorage.removeItem(QUEUE_STORAGE_KEY); } static addMessage(message: QueuedMessage) {