From 517e49c2b0dd1b9e4408fbb46a1fdffcd81a50a1 Mon Sep 17 00:00:00 2001 From: Let Me Duck You Date: Wed, 2 Jul 2025 14:04:06 +0600 Subject: [PATCH 1/5] Added General settings with a settings selection option to view all workspaces tasks --- packages/types/src/global-settings.ts | 1 + src/core/webview/ClineProvider.ts | 3 ++ .../webview/__tests__/ClineProvider.spec.ts | 1 + src/core/webview/webviewMessageHandler.ts | 5 ++++ src/shared/ExtensionMessage.ts | 2 ++ src/shared/WebviewMessage.ts | 1 + .../src/components/history/HistoryView.tsx | 21 +++++++++---- .../history/__tests__/useTaskSearch.spec.tsx | 24 ++++++++------- .../src/components/history/useTaskSearch.ts | 11 ++++--- .../components/settings/GeneralSettings.tsx | 30 +++++++++++++++++++ .../src/components/settings/SettingsView.tsx | 30 +++++++++++++++++-- .../src/context/ExtensionStateContext.tsx | 5 ++++ .../__tests__/ExtensionStateContext.spec.tsx | 1 + 13 files changed, 110 insertions(+), 25 deletions(-) create mode 100644 webview-ui/src/components/settings/GeneralSettings.tsx diff --git a/packages/types/src/global-settings.ts b/packages/types/src/global-settings.ts index 6a0dda1cf2..05420559a0 100644 --- a/packages/types/src/global-settings.ts +++ b/packages/types/src/global-settings.ts @@ -107,6 +107,7 @@ export const globalSettingsSchema = z.object({ historyPreviewCollapsed: z.boolean().optional(), profileThresholds: z.record(z.string(), z.number()).optional(), hasOpenedModeSelector: z.boolean().optional(), + showAllWorkspacesTasks: z.boolean().optional(), lastModeExportPath: z.string().optional(), lastModeImportPath: z.string().optional(), }) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index 8eb6108a76..4ae9ae9b4b 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -1413,6 +1413,7 @@ export class ClineProvider profileThresholds, alwaysAllowFollowupQuestions, followupAutoApproveTimeoutMs, + showAllWorkspacesTasks, } = await this.getState() const telemetryKey = process.env.POSTHOG_API_KEY @@ -1525,6 +1526,7 @@ export class ClineProvider hasOpenedModeSelector: this.getGlobalState("hasOpenedModeSelector") ?? false, alwaysAllowFollowupQuestions: alwaysAllowFollowupQuestions ?? false, followupAutoApproveTimeoutMs: followupAutoApproveTimeoutMs ?? 60000, + showAllWorkspacesTasks: showAllWorkspacesTasks ?? false, } } @@ -1677,6 +1679,7 @@ export class ClineProvider codebaseIndexEmbedderModelId: "", }, profileThresholds: stateValues.profileThresholds ?? {}, + showAllWorkspacesTasks: stateValues.showAllWorkspacesTasks ?? false, } } diff --git a/src/core/webview/__tests__/ClineProvider.spec.ts b/src/core/webview/__tests__/ClineProvider.spec.ts index 801c6c4774..2a94d97bc5 100644 --- a/src/core/webview/__tests__/ClineProvider.spec.ts +++ b/src/core/webview/__tests__/ClineProvider.spec.ts @@ -539,6 +539,7 @@ describe("ClineProvider", () => { sharingEnabled: false, profileThresholds: {}, hasOpenedModeSelector: false, + showAllWorkspacesTasks: false, } const message: ExtensionMessage = { diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index 296f23bc5f..a85a5fa12d 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -1926,5 +1926,10 @@ export const webviewMessageHandler = async ( } break } + + case "showAllWorkspacesTasks": + await updateGlobalState("showAllWorkspacesTasks", message.bool ?? false) + await provider.postStateToWebview() + break } } diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts index 031c1f1d6f..aefcaa2e98 100644 --- a/src/shared/ExtensionMessage.ts +++ b/src/shared/ExtensionMessage.ts @@ -102,6 +102,7 @@ export interface ExtensionMessage { | "marketplaceInstallResult" | "marketplaceData" | "shareTaskSuccess" + | "showAllWorkspacesTasks" text?: string payload?: any // Add a generic payload for now, can refine later action?: @@ -270,6 +271,7 @@ export type ExtensionState = Pick< marketplaceInstalledMetadata?: { project: Record; global: Record } profileThresholds: Record hasOpenedModeSelector: boolean + showAllWorkspacesTasks: boolean } export interface ClineSayTool { diff --git a/src/shared/WebviewMessage.ts b/src/shared/WebviewMessage.ts index 0f1d22c3c7..d78b282a8f 100644 --- a/src/shared/WebviewMessage.ts +++ b/src/shared/WebviewMessage.ts @@ -176,6 +176,7 @@ export interface WebviewMessage { | "fetchMarketplaceData" | "switchTab" | "profileThresholds" + | "showAllWorkspacesTasks" | "shareTaskSuccess" | "exportMode" | "exportModeResult" diff --git a/webview-ui/src/components/history/HistoryView.tsx b/webview-ui/src/components/history/HistoryView.tsx index 2f156d0418..001fcddb25 100644 --- a/webview-ui/src/components/history/HistoryView.tsx +++ b/webview-ui/src/components/history/HistoryView.tsx @@ -1,4 +1,6 @@ import React, { memo, useState } from "react" + +import { vscode } from "@/utils/vscode" import { DeleteTaskDialog } from "./DeleteTaskDialog" import { BatchDeleteTaskDialog } from "./BatchDeleteTaskDialog" import { Virtuoso } from "react-virtuoso" @@ -35,8 +37,8 @@ const HistoryView = ({ onDone }: HistoryViewProps) => { sortOption, setSortOption, setLastNonRelevantSort, - showAllWorkspaces, - setShowAllWorkspaces, + showAllWorkspacesTasks, + setShowAllWorkspacesTasks, } = useTaskSearch() const { t } = useAppTranslation() @@ -129,12 +131,19 @@ const HistoryView = ({ onDone }: HistoryViewProps) => {