From 4e8d50b9b3bd494185ec0467f08bd9887b5c877c Mon Sep 17 00:00:00 2001 From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 20:38:41 +0000 Subject: [PATCH 1/3] feat(claw): add Mac/Linux vs Windows toggle for Docker setup command The Docker command for Google Account setup uses && to chain commands, which doesn't work in PowerShell on Windows. Add an OS selector toggle (defaulting to Mac/Linux) that swaps && for ; when Windows is selected. --- src/app/(app)/claw/components/SettingsTab.tsx | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/app/(app)/claw/components/SettingsTab.tsx b/src/app/(app)/claw/components/SettingsTab.tsx index 35dd619e53..048cb81a9c 100644 --- a/src/app/(app)/claw/components/SettingsTab.tsx +++ b/src/app/(app)/claw/components/SettingsTab.tsx @@ -37,6 +37,7 @@ import { getSettingsModelOptions } from './modelSupport'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible'; +import { RadioButtonGroup } from '@/components/ui/RadioGroup'; import { Dialog, DialogContent, @@ -258,8 +259,14 @@ function GoogleAccountCard({ const [open, setOpen] = useState(false); const [copied, setCopied] = useState(false); const [confirmDisconnect, setConfirmDisconnect] = useState(false); + const [os, setOs] = useState<'unix' | 'windows'>('unix'); const isDisconnecting = mutations.disconnectGoogle.isPending; - const command = setupData?.command; + const rawCommand = setupData?.command; + const command = rawCommand + ? os === 'windows' + ? rawCommand.replace(' && ', ' ; ') + : rawCommand + : undefined; function handleCopy() { if (!command) return; @@ -325,10 +332,20 @@ function GoogleAccountCard({
{!connected && command && (
-

- Run this command in a terminal on your local machine to connect your Google - account: -

+
+

+ Run this command in a terminal on your local machine to connect your Google + account: +

+ setOs(v as 'unix' | 'windows')} + /> +
                       {command}

From d7bdebd14a91742156bc236702ea274d43022752 Mon Sep 17 00:00:00 2001
From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 07:58:50 +0000
Subject: [PATCH 2/3] feat(claw): simplify Docker command by using semicolon
 separator for all platforms

---
 src/app/(app)/claw/components/SettingsTab.tsx | 26 ++++---------------
 1 file changed, 5 insertions(+), 21 deletions(-)

diff --git a/src/app/(app)/claw/components/SettingsTab.tsx b/src/app/(app)/claw/components/SettingsTab.tsx
index 048cb81a9c..82c2070027 100644
--- a/src/app/(app)/claw/components/SettingsTab.tsx
+++ b/src/app/(app)/claw/components/SettingsTab.tsx
@@ -37,7 +37,6 @@ import { getSettingsModelOptions } from './modelSupport';
 import { Badge } from '@/components/ui/badge';
 import { Button } from '@/components/ui/button';
 import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';
-import { RadioButtonGroup } from '@/components/ui/RadioGroup';
 import {
   Dialog,
   DialogContent,
@@ -259,14 +258,9 @@ function GoogleAccountCard({
   const [open, setOpen] = useState(false);
   const [copied, setCopied] = useState(false);
   const [confirmDisconnect, setConfirmDisconnect] = useState(false);
-  const [os, setOs] = useState<'unix' | 'windows'>('unix');
   const isDisconnecting = mutations.disconnectGoogle.isPending;
   const rawCommand = setupData?.command;
-  const command = rawCommand
-    ? os === 'windows'
-      ? rawCommand.replace(' && ', ' ; ')
-      : rawCommand
-    : undefined;
+  const command = rawCommand ? rawCommand.replace(' && ', ' ; ') : undefined;
 
   function handleCopy() {
     if (!command) return;
@@ -332,20 +326,10 @@ function GoogleAccountCard({
             
{!connected && command && (
-
-

- Run this command in a terminal on your local machine to connect your Google - account: -

- setOs(v as 'unix' | 'windows')} - /> -
+

+ Run this command in a terminal on your local machine to connect your Google + account: +

                       {command}

From 104b3b72465b9a48f6e8900d9bef964ccb596a71 Mon Sep 17 00:00:00 2001
From: "kiloconnect[bot]" <240665456+kiloconnect[bot]@users.noreply.github.com>
Date: Wed, 1 Apr 2026 08:07:07 +0000
Subject: [PATCH 3/3] feat(claw): use semicolon in Docker setup command
 directly in router

---
 src/app/(app)/claw/components/SettingsTab.tsx | 3 +--
 src/routers/kiloclaw-router.ts                | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/app/(app)/claw/components/SettingsTab.tsx b/src/app/(app)/claw/components/SettingsTab.tsx
index 82c2070027..35dd619e53 100644
--- a/src/app/(app)/claw/components/SettingsTab.tsx
+++ b/src/app/(app)/claw/components/SettingsTab.tsx
@@ -259,8 +259,7 @@ function GoogleAccountCard({
   const [copied, setCopied] = useState(false);
   const [confirmDisconnect, setConfirmDisconnect] = useState(false);
   const isDisconnecting = mutations.disconnectGoogle.isPending;
-  const rawCommand = setupData?.command;
-  const command = rawCommand ? rawCommand.replace(' && ', ' ; ') : undefined;
+  const command = setupData?.command;
 
   function handleCopy() {
     if (!command) return;
diff --git a/src/routers/kiloclaw-router.ts b/src/routers/kiloclaw-router.ts
index 677e1a41ef..c070cf81bb 100644
--- a/src/routers/kiloclaw-router.ts
+++ b/src/routers/kiloclaw-router.ts
@@ -1280,7 +1280,7 @@ export const kiloclawRouter = createTRPCRouter({
     const gmailPushFlag = isDev ? ' --gmail-push-worker-url=${GMAIL_PUSH_WORKER_URL}' : '';
     const imageUrl = `ghcr.io/kilo-org/google-setup${imageTag}`;
     return {
-      command: `docker pull ${imageUrl} && docker run -it --network host ${imageUrl} --token="${token}"${workerFlag}${gmailPushFlag}`,
+      command: `docker pull ${imageUrl} ; docker run -it --network host ${imageUrl} --token="${token}"${workerFlag}${gmailPushFlag}`,
     };
   }),