diff --git a/webui/src/web-components/sketch-app-shell.test.ts b/webui/src/web-components/sketch-app-shell.test.ts
index 5d4ca0f..94e9a55 100644
--- a/webui/src/web-components/sketch-app-shell.test.ts
+++ b/webui/src/web-components/sketch-app-shell.test.ts
@@ -298,9 +298,9 @@
 
   // Simulate connection established by setting the connection status property
   await component.evaluate(async () => {
-    const appShell = document.querySelector('sketch-app-shell') as any;
+    const appShell = document.querySelector("sketch-app-shell") as any;
     if (appShell) {
-      appShell.connectionStatus = 'connected';
+      appShell.connectionStatus = "connected";
       appShell.requestUpdate();
       // Force an update cycle to complete
       await appShell.updateComplete;
@@ -371,9 +371,9 @@
 
   // Test the isIdle calculation logic directly
   const isIdleResult = await component.evaluate(() => {
-    const appShell = document.querySelector('sketch-app-shell') as any;
-    if (!appShell) return { error: 'No app shell found' };
-    
+    const appShell = document.querySelector("sketch-app-shell") as any;
+    if (!appShell) return { error: "No app shell found" };
+
     // Create test messages directly in the browser context
     const testMessages = [
       {
@@ -404,55 +404,55 @@
         parent_conversation_id: null,
       },
     ];
-    
+
     // Set the messages
     appShell.messages = testMessages;
-    
+
     // Call the getLastUserOrAgentMessage method directly
     const lastMessage = appShell.getLastUserOrAgentMessage();
-    const isIdle = lastMessage ? 
-      lastMessage.end_of_turn && !lastMessage.parent_conversation_id : 
-      true;
-    
+    const isIdle = lastMessage
+      ? lastMessage.end_of_turn && !lastMessage.parent_conversation_id
+      : true;
+
     return {
       messagesCount: testMessages.length,
       lastMessage: lastMessage,
       isIdle: isIdle,
-      expectedWorking: !isIdle
+      expectedWorking: !isIdle,
     };
   });
-  
+
   // The isIdle should be false because the last agent message has end_of_turn: false
   expect(isIdleResult.isIdle).toBe(false);
   expect(isIdleResult.expectedWorking).toBe(true);
-  
+
   // Now test the full component interaction
   await component.evaluate(() => {
-    const appShell = document.querySelector('sketch-app-shell') as any;
+    const appShell = document.querySelector("sketch-app-shell") as any;
     if (appShell) {
       // Set connection status to connected
-      appShell.connectionStatus = 'connected';
-      
+      appShell.connectionStatus = "connected";
+
       // Set container state with active LLM calls
       appShell.containerState = {
         outstanding_llm_calls: 1,
         outstanding_tool_calls: [],
-        agent_state: null
+        agent_state: null,
       };
-      
+
       // The messages are already set from the previous test
       // Force a re-render
       appShell.requestUpdate();
     }
   });
-  
+
   // Wait for the component to update
   await page.waitForTimeout(500);
-  
+
   // Now check that the call status component shows WORKING
   const callStatus = component.locator("sketch-call-status");
   await expect(callStatus).toBeVisible();
-  
+
   // Check that the status banner shows WORKING
   const statusBanner = callStatus.locator(".status-banner");
   await expect(statusBanner).toBeVisible();
diff --git a/webui/src/web-components/sketch-app-shell.ts b/webui/src/web-components/sketch-app-shell.ts
index f545b82..7f51576 100644
--- a/webui/src/web-components/sketch-app-shell.ts
+++ b/webui/src/web-components/sketch-app-shell.ts
@@ -1464,7 +1464,7 @@
               const lastUserOrAgentMessage = this.getLastUserOrAgentMessage();
               return lastUserOrAgentMessage
                 ? lastUserOrAgentMessage.end_of_turn &&
-                  !lastUserOrAgentMessage.parent_conversation_id
+                    !lastUserOrAgentMessage.parent_conversation_id
                 : true;
             })()}
             .isDisconnected=${this.connectionStatus === "disconnected"}
