From 308664a4c992c8163da07093df8e33798f6fca62 Mon Sep 17 00:00:00 2001 From: Hibryda Date: Sun, 8 Mar 2026 03:13:02 +0100 Subject: [PATCH] =?UTF-8?q?fix(v3):=20terminal=20tabs=20close=20+=20naming?= =?UTF-8?q?=20=E2=80=94=20replace=20$state=20with=20Record=20for=20Sv?= =?UTF-8?q?elte=205=20reactivity?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v2/src/lib/stores/workspace.svelte.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/v2/src/lib/stores/workspace.svelte.ts b/v2/src/lib/stores/workspace.svelte.ts index f02edef..0d42342 100644 --- a/v2/src/lib/stores/workspace.svelte.ts +++ b/v2/src/lib/stores/workspace.svelte.ts @@ -20,7 +20,7 @@ let activeTab = $state('sessions'); let activeProjectId = $state(null); /** Terminal tabs per project (keyed by project ID) */ -let projectTerminals = $state>(new Map()); +let projectTerminals = $state>({}); // --- Getters --- @@ -68,7 +68,7 @@ export async function switchGroup(groupId: string): Promise { if (groupId === activeGroupId) return; // Teardown: clear terminal tabs and agent sessions for the old group - projectTerminals = new Map(); + projectTerminals = {}; clearAllAgentSessions(); activeGroupId = groupId; @@ -90,19 +90,17 @@ export async function switchGroup(groupId: string): Promise { // --- Terminal tab management per project --- export function getTerminalTabs(projectId: string): TerminalTab[] { - return projectTerminals.get(projectId) ?? []; + return projectTerminals[projectId] ?? []; } export function addTerminalTab(projectId: string, tab: TerminalTab): void { - const tabs = projectTerminals.get(projectId) ?? []; - tabs.push(tab); - projectTerminals.set(projectId, [...tabs]); + const tabs = projectTerminals[projectId] ?? []; + projectTerminals[projectId] = [...tabs, tab]; } export function removeTerminalTab(projectId: string, tabId: string): void { - const tabs = projectTerminals.get(projectId) ?? []; - const filtered = tabs.filter(t => t.id !== tabId); - projectTerminals.set(projectId, filtered); + const tabs = projectTerminals[projectId] ?? []; + projectTerminals[projectId] = tabs.filter(t => t.id !== tabId); } // --- Persistence --- @@ -111,7 +109,7 @@ export async function loadWorkspace(initialGroupId?: string): Promise { try { const config = await loadGroups(); groupsConfig = config; - projectTerminals = new Map(); + projectTerminals = {}; // CLI --group flag takes priority, then explicit param, then persisted let cliGroup: string | null = null;