From f46d233553af82ebb15ca734af9bc8425babe602 Mon Sep 17 00:00:00 2001 From: togotago <88701594+togotago@users.noreply.github.com> Date: Sat, 14 Feb 2026 00:52:06 +0100 Subject: [PATCH] fix: reconcile deleted sessions blacklist against gateway (#4) Fix: reconcile deleted-sessions blacklist against gateway on each refresh. Permanent sessions like agent:main:main auto-recover from accidental deletion. Closes #3 --- src/hooks/useGateway.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hooks/useGateway.ts b/src/hooks/useGateway.ts index c7a2848..15b3ebb 100644 --- a/src/hooks/useGateway.ts +++ b/src/hooks/useGateway.ts @@ -129,7 +129,14 @@ export function useGateway() { const sessionList = res?.sessions as Array> | undefined; if (sessionList) { const deleted = getDeletedSessions(); - setSessions(sessionList.filter((s) => !deleted.has((s.key || s.sessionKey) as string)).map((s) => ({ + // Reconcile: remove blacklisted keys that still exist on the gateway + // (e.g. permanent sessions like agent:main:main that can't actually be deleted) + const activeKeys = new Set(sessionList.map((s) => (s.key || s.sessionKey) as string)); + const reconciled = new Set([...deleted].filter((k) => !activeKeys.has(k))); + if (reconciled.size !== deleted.size) { + localStorage.setItem('pinchchat-deleted-sessions', JSON.stringify([...reconciled])); + } + setSessions(sessionList.filter((s) => !reconciled.has((s.key || s.sessionKey) as string)).map((s) => ({ key: (s.key || s.sessionKey) as string, label: (s.label || s.key || s.sessionKey) as string, messageCount: s.messageCount as number | undefined,