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({
- 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: +
+
{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}`,
};
}),