From 79b98169322c617df890a24efc874ea2b47973cc Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 1/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Add=20w?= =?UTF-8?q?orkspace=20jail=20menu=20item=20markup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vscode/webview/html.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vscode/webview/html.ts b/src/vscode/webview/html.ts index 38f6983..a524dda 100644 --- a/src/vscode/webview/html.ts +++ b/src/vscode/webview/html.ts @@ -50,6 +50,9 @@ export function renderChatHtml(options: ChatHtmlOptions): string { + From 1956fa67328b69de93f55fa4a2c865cf136a3108 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 2/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Track?= =?UTF-8?q?=20workspace=20toggle=20elements=20and=20state?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- media/dom.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/media/dom.js b/media/dom.js index b07ba02..1bc77bb 100644 --- a/media/dom.js +++ b/media/dom.js @@ -33,6 +33,8 @@ const menuDelegation = document.getElementById("menu-delegation"); const menuDelegationCheck = document.getElementById("menu-delegation-check"); const menuMemory = document.getElementById("menu-memory"); const menuMemoryCheck = document.getElementById("menu-memory-check"); +const menuWorkspace = document.getElementById("menu-workspace"); +const menuWorkspaceCheck = document.getElementById("menu-workspace-check"); const menuMcp = document.getElementById("menu-mcp"); const menuReload = document.getElementById("menu-reload"); const menuSettings = document.getElementById("menu-settings"); @@ -61,6 +63,7 @@ let autoApprove = false; let skillsEnabled = true; let delegationEnabled = false; let memoryEnabled = true; +let workspaceEnabled = true; let hasApiKey = false; let apiKeyEnv = ""; let authHeader = ""; From 8406b396c3a5011fc28e09d33e6ceaa38cafa507 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 3/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Wire=20?= =?UTF-8?q?workspace=20jail=20toggle=20in=20the=20settings=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- media/menu.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/media/menu.js b/media/menu.js index dfd1fe0..13e2802 100644 --- a/media/menu.js +++ b/media/menu.js @@ -24,6 +24,7 @@ onMenuClick(menuAutoApprove, () => vscode.postMessage({ type: "toggleAutoApprove onMenuClick(menuSkills, () => vscode.postMessage({ type: "toggleSkills", next: !skillsEnabled })); onMenuClick(menuDelegation, () => vscode.postMessage({ type: "toggleDelegation", next: !delegationEnabled })); onMenuClick(menuMemory, () => vscode.postMessage({ type: "toggleMemory", next: !memoryEnabled })); +onMenuClick(menuWorkspace, () => vscode.postMessage({ type: "toggleWorkspace", next: !workspaceEnabled })); onMenuClick(menuMcp, () => vscode.postMessage({ type: "manageMcpServers" })); onMenuClick(menuReload, () => vscode.postMessage({ type: "reload" })); onMenuClick(menuSettings, () => vscode.postMessage({ type: "openSettings" })); @@ -34,6 +35,7 @@ function applySettings(message) { skillsEnabled = message.skills !== false; delegationEnabled = !!message.delegation; memoryEnabled = message.memory !== false; + workspaceEnabled = message.workspace !== false; hasApiKey = !!message.hasApiKey; apiKeyEnv = message.apiKeyEnv || ""; authHeader = message.authHeader || ""; @@ -42,6 +44,7 @@ function applySettings(message) { menuSkillsCheck.classList.toggle("checked", skillsEnabled); menuDelegationCheck.classList.toggle("checked", delegationEnabled); menuMemoryCheck.classList.toggle("checked", memoryEnabled); + menuWorkspaceCheck.classList.toggle("checked", workspaceEnabled); if (!hasApiKey && apiKeyEnv && !apiKeyCard && !apiKeyPromptHidden) { renderApiKeyCard(); } From a068f6aa8c8e9c430b023475757e5f327f2ef670 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 4/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Declare?= =?UTF-8?q?=20new=20workspace-toggle=20globals=20for=20ESLint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 0f7fb55..1828f22 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -86,6 +86,8 @@ export default tseslint.config( menuSkills: "writable", menuSkillsCheck: "writable", menuToggle: "writable", + menuWorkspace: "writable", + menuWorkspaceCheck: "writable", messagesEl: "writable", newSessionButton: "writable", onMenuClick: "writable", @@ -143,6 +145,7 @@ export default tseslint.config( toolIcon: "writable", updateCommandMenu: "writable", vscode: "writable", + workspaceEnabled: "writable", }, }, rules: { From 27ffee44d4ab9f40758e2484d991e080c9dd4082 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 5/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Add=20t?= =?UTF-8?q?oggleWorkspace=20to=20the=20WebviewMessage=20union?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vscode/webview/messages.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vscode/webview/messages.ts b/src/vscode/webview/messages.ts index 498bed0..e673b79 100644 --- a/src/vscode/webview/messages.ts +++ b/src/vscode/webview/messages.ts @@ -18,6 +18,7 @@ export type WebviewMessage = | { type: "toggleSkills"; next: boolean } | { type: "toggleDelegation"; next: boolean } | { type: "toggleMemory"; next: boolean } + | { type: "toggleWorkspace"; next: boolean } | { type: "manageMcpServers" } | { type: "reload" } | { type: "installCli" } From 5823ffde34c6e54cdb2c2c1ad32a27b25eeb3225 Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 6/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Route?= =?UTF-8?q?=20toggleWorkspace=20to=20SettingsController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vscode/sidebar/chatSidebarProvider.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vscode/sidebar/chatSidebarProvider.ts b/src/vscode/sidebar/chatSidebarProvider.ts index 124047a..bf2ad04 100644 --- a/src/vscode/sidebar/chatSidebarProvider.ts +++ b/src/vscode/sidebar/chatSidebarProvider.ts @@ -135,6 +135,9 @@ export class ChatViewProvider implements vscode.WebviewViewProvider { case "toggleMemory": this.settings.toggleMemory(!!message.next); break; + case "toggleWorkspace": + this.settings.toggleWorkspace(!!message.next); + break; case "manageMcpServers": this.settings.manageMcpServers(); break; From 2bbe922a5445af7b0c13961757448234e99062cd Mon Sep 17 00:00:00 2001 From: Fernando Celmer Date: Sat, 15 Aug 2026 23:21:06 -0300 Subject: [PATCH 7/7] =?UTF-8?q?=E2=9A=99=EF=B8=8F=20FEATURE-#30:=20Add=20t?= =?UTF-8?q?oggleWorkspace=20and=20include=20it=20in=20postSettings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/settings/settings.controller.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/features/settings/settings.controller.ts b/src/features/settings/settings.controller.ts index 916f95f..9aae407 100644 --- a/src/features/settings/settings.controller.ts +++ b/src/features/settings/settings.controller.ts @@ -31,6 +31,7 @@ export class SettingsController { skills: settings.skills, delegation: settings.delegation, memory: settings.memory, + workspace: settings.workspace, mcpServers: settings.mcpServers, hasApiKey: Boolean(apiKey), apiKeyEnv: auth.apiKeyEnv, @@ -342,6 +343,12 @@ export class SettingsController { this.reload(); } + async toggleWorkspace(next: boolean): Promise { + await updateSetting("workspace", next); + await this.postSettings(); + this.reload(); + } + async manageMcpServers(): Promise { const servers = readSettings().mcpServers;