diff --git a/dockerimg/createdockerfile.go b/dockerimg/createdockerfile.go
index 68f074a..d0ba6c3 100644
--- a/dockerimg/createdockerfile.go
+++ b/dockerimg/createdockerfile.go
@@ -32,8 +32,10 @@
 	return dockerImgName, dockerfileBase, dockerfileBaseHash()
 }
 
-const dockerImgRepo = "boldsoftware/sketch"
-const dockerImgName = "ghcr.io/" + dockerImgRepo
+const (
+	dockerImgRepo = "boldsoftware/sketch"
+	dockerImgName = "ghcr.io/" + dockerImgRepo
+)
 
 func dockerfileBaseHash() string {
 	h := sha256.New()
diff --git a/webui/src/web-components/sketch-app-shell.ts b/webui/src/web-components/sketch-app-shell.ts
index 7c618aa..157f2f2 100644
--- a/webui/src/web-components/sketch-app-shell.ts
+++ b/webui/src/web-components/sketch-app-shell.ts
@@ -230,7 +230,8 @@
       margin-right: 50px;
     }
 
-    .restart-button {
+    .restart-button,
+    .stop-button {
       background: #2196f3;
       color: white;
       border: none;
@@ -239,6 +240,9 @@
       cursor: pointer;
       font-size: 12px;
       margin-right: 5px;
+      display: flex;
+      align-items: center;
+      gap: 6px;
     }
 
     .restart-button:hover {
@@ -251,28 +255,43 @@
       opacity: 0.6;
     }
 
-    .refresh-button {
-      background: #4caf50;
+    .stop-button {
+      background: #dc3545;
       color: white;
-      border: none;
-      padding: 4px 10px;
-      border-radius: 4px;
-      cursor: pointer;
-      font-size: 12px;
-      margin-right: 5px;
     }
 
-    .stop-button:hover {
-      background-color: #c82333 !important;
+    .stop-button:hover:not(:disabled) {
+      background-color: #c82333;
     }
 
-    .poll-updates {
-      display: flex;
-      align-items: center;
-      font-size: 12px;
-      margin-right: 10px;
+    .stop-button:disabled {
+      background-color: #e9a8ad;
+      cursor: not-allowed;
+      opacity: 0.7;
     }
 
+    .stop-button:disabled:hover {
+      background-color: #e9a8ad;
+    }
+
+    .button-icon {
+      width: 16px;
+      height: 16px;
+    }
+
+    @media (max-width: 1400px) {
+      .button-text {
+        display: none;
+      }
+
+      .restart-button,
+      .stop-button {
+        padding: 6px;
+      }
+    }
+
+    /* Removed poll-updates class */
+
     .notifications-toggle {
       display: flex;
       align-items: center;
@@ -320,9 +339,6 @@
   @property()
   connectionErrorMessage: string = "";
 
-  @property()
-  messageStatus: string = "";
-
   // Chat messages
   @property({ attribute: false })
   messages: AgentMessage[] = [];
@@ -729,18 +745,8 @@
   private handleDataChanged(eventData: {
     state: State;
     newMessages: AgentMessage[];
-    isFirstFetch?: boolean;
   }): void {
-    const { state, newMessages, isFirstFetch } = eventData;
-
-    // Check if this is the first data fetch or if there are new messages
-    if (isFirstFetch) {
-      this.messageStatus = "Initial messages loaded";
-    } else if (newMessages && newMessages.length > 0) {
-      this.messageStatus = "Updated just now";
-    } else {
-      this.messageStatus = "No new messages";
-    }
+    const { state, newMessages } = eventData;
 
     // Update state if we received it
     if (state) {
@@ -768,7 +774,7 @@
     this.updateLastCommitInfo(newMessages);
 
     // Check for agent messages with end_of_turn=true and show notifications
-    if (newMessages && newMessages.length > 0 && !isFirstFetch) {
+    if (newMessages && newMessages.length > 0) {
       for (const message of newMessages) {
         if (
           message.type === "agent" &&
@@ -858,10 +864,9 @@
         );
       }
 
-      this.messageStatus = "Stop request sent";
+      // Stop request sent
     } catch (error) {
       console.error("Error stopping operation:", error);
-      this.messageStatus = "Failed to stop operation";
     }
   }
 
@@ -927,14 +932,14 @@
           <h2 id="chatTitle" class="chat-title">${this.title}</h2>
         </div>
 
-        <!-- Views section with tabs -->
-        <sketch-view-mode-select></sketch-view-mode-select>
-
-        <!-- Container status info -->
+        <!-- Container status info moved above tabs -->
         <sketch-container-status
           .state=${this.containerState}
         ></sketch-container-status>
 
+        <!-- Views section with tabs - repositioned -->
+        <sketch-view-mode-select></sketch-view-mode-select>
+
         ${this.lastCommit
           ? html`
               <div
@@ -963,23 +968,49 @@
             ?disabled=${this.containerState.message_count === 0}
             @click=${this.openRestartModal}
           >
-            Restart
+            <svg
+              class="button-icon"
+              xmlns="http://www.w3.org/2000/svg"
+              viewBox="0 0 24 24"
+              fill="none"
+              stroke="currentColor"
+              stroke-width="2"
+              stroke-linecap="round"
+              stroke-linejoin="round"
+            >
+              <path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" />
+              <path d="M3 3v5h5" />
+            </svg>
+            <span class="button-text">Restart</span>
           </button>
-          <button id="stopButton" class="refresh-button stop-button">
-            Stop
+          <button
+            id="stopButton"
+            class="stop-button"
+            ?disabled=${(this.containerState?.outstanding_llm_calls || 0) ===
+              0 &&
+            (this.containerState?.outstanding_tool_calls || []).length === 0}
+          >
+            <svg
+              class="button-icon"
+              xmlns="http://www.w3.org/2000/svg"
+              viewBox="0 0 24 24"
+              fill="none"
+              stroke="currentColor"
+              stroke-width="2"
+              stroke-linecap="round"
+              stroke-linejoin="round"
+            >
+              <rect x="6" y="6" width="12" height="12" />
+            </svg>
+            <span class="button-text">Stop</span>
           </button>
 
-          <div class="poll-updates">
-            <input type="checkbox" id="pollToggle" checked />
-            <label for="pollToggle">Poll</label>
-          </div>
-
           <div
             class="notifications-toggle"
             @click=${this._handleNotificationsToggle}
             title="${this.notificationsEnabled
               ? "Disable"
-              : "Enable"} notifications"
+              : "Enable"} notifications when the agent completes its turn"
           >
             <div
               class="bell-icon ${!this.notificationsEnabled
@@ -1002,7 +1033,6 @@
           </div>
 
           <sketch-network-status
-            message=${this.messageStatus}
             connection=${this.connectionStatus}
             error=${this.connectionErrorMessage}
           ></sketch-network-status>
@@ -1096,18 +1126,8 @@
       }
     });
 
-    const pollToggleCheckbox = this.renderRoot?.querySelector(
-      "#pollToggle",
-    ) as HTMLInputElement;
-    pollToggleCheckbox?.addEventListener("change", () => {
-      this.dataManager.setPollingEnabled(pollToggleCheckbox.checked);
-      if (!pollToggleCheckbox.checked) {
-        this.connectionStatus = "disabled";
-        this.messageStatus = "Polling stopped";
-      } else {
-        this.messageStatus = "Polling for updates...";
-      }
-    });
+    // Always enable polling by default
+    this.dataManager.setPollingEnabled(true);
 
     // Process any existing messages to find commit information
     if (this.messages && this.messages.length > 0) {
diff --git a/webui/src/web-components/sketch-container-status.ts b/webui/src/web-components/sketch-container-status.ts
index f4c0f25..ba745cc 100644
--- a/webui/src/web-components/sketch-container-status.ts
+++ b/webui/src/web-components/sketch-container-status.ts
@@ -74,8 +74,7 @@
     }
 
     [title] {
-      cursor: help;
-      text-decoration: underline dotted;
+      cursor: default;
     }
 
     .cost {
@@ -180,11 +179,33 @@
     }
 
     .vscode-link {
+      color: white;
+      text-decoration: none;
+      background-color: #0066b8;
+      padding: 4px 8px;
+      border-radius: 4px;
+      display: flex;
+      align-items: center;
+      gap: 6px;
+      font-size: 12px;
+      transition: all 0.2s ease;
+    }
+
+    .vscode-link:hover {
+      background-color: #005091;
+    }
+
+    .vscode-icon {
+      width: 16px;
+      height: 16px;
+    }
+
+    .github-link {
       color: #2962ff;
       text-decoration: none;
     }
 
-    .vscode-link:hover {
+    .github-link:hover {
       text-decoration: underline;
     }
   `;
@@ -212,33 +233,25 @@
   }
 
   formatHostname() {
+    // Only display outside hostname
     const outsideHostname = this.state?.outside_hostname;
-    const insideHostname = this.state?.inside_hostname;
 
-    if (!outsideHostname || !insideHostname) {
+    if (!outsideHostname) {
       return this.state?.hostname;
     }
 
-    if (outsideHostname === insideHostname) {
-      return outsideHostname;
-    }
-
-    return `${outsideHostname}:${insideHostname}`;
+    return outsideHostname;
   }
 
   formatWorkingDir() {
+    // Only display outside working directory
     const outsideWorkingDir = this.state?.outside_working_dir;
-    const insideWorkingDir = this.state?.inside_working_dir;
 
-    if (!outsideWorkingDir || !insideWorkingDir) {
+    if (!outsideWorkingDir) {
       return this.state?.working_dir;
     }
 
-    if (outsideWorkingDir === insideWorkingDir) {
-      return outsideWorkingDir;
-    }
-
-    return `${outsideWorkingDir}:${insideWorkingDir}`;
+    return outsideWorkingDir;
   }
 
   getHostnameTooltip() {
@@ -298,6 +311,33 @@
     return `sketch-${this.state?.session_id}`;
   }
 
+  // Format GitHub repository URL to org/repo format
+  formatGitHubRepo(url) {
+    if (!url) return null;
+
+    // Common GitHub URL patterns
+    const patterns = [
+      // HTTPS URLs
+      /https:\/\/github\.com\/([^/]+)\/([^/\s.]+)(?:\.git)?/,
+      // SSH URLs
+      /git@github\.com:([^/]+)\/([^/\s.]+)(?:\.git)?/,
+      // Git protocol
+      /git:\/\/github\.com\/([^/]+)\/([^/\s.]+)(?:\.git)?/,
+    ];
+
+    for (const pattern of patterns) {
+      const match = url.match(pattern);
+      if (match) {
+        return {
+          formatted: `${match[1]}/${match[2]}`,
+          url: `https://github.com/${match[1]}/${match[2]}`,
+        };
+      }
+    }
+
+    return null;
+  }
+
   renderSSHSection() {
     // Only show SSH section if we're in a Docker container and have session ID
     if (!this.state?.session_id) {
@@ -312,7 +352,7 @@
     if (!this.state?.ssh_available) {
       return html`
         <div class="ssh-section">
-          <h3>SSH Connection</h3>
+          <h3>Connect to Container</h3>
           <div class="ssh-warning">
             SSH connections are not available:
             ${this.state?.ssh_error || "SSH configuration is missing"}
@@ -323,7 +363,7 @@
 
     return html`
       <div class="ssh-section">
-        <h3>SSH Connection</h3>
+        <h3>Connect to Container</h3>
         <div class="ssh-command">
           <div class="ssh-command-text">${sshCommand}</div>
           <button
@@ -343,7 +383,23 @@
           </button>
         </div>
         <div class="ssh-command">
-          <a href="${vscodeURL}" class="vscode-link">${vscodeURL}</a>
+          <a href="${vscodeURL}" class="vscode-link" title="${vscodeURL}">
+            <svg
+              class="vscode-icon"
+              xmlns="http://www.w3.org/2000/svg"
+              viewBox="0 0 24 24"
+              fill="none"
+              stroke="white"
+              stroke-width="2"
+              stroke-linecap="round"
+              stroke-linejoin="round"
+            >
+              <path
+                d="M16.5 9.4 7.55 4.24a.35.35 0 0 0-.41.01l-1.23.93a.35.35 0 0 0-.14.29v13.04c0 .12.07.23.17.29l1.24.93c.13.1.31.09.43-.01L16.5 14.6l-6.39 4.82c-.16.12-.38.12-.55.01l-1.33-1.01a.35.35 0 0 1-.14-.28V5.88c0-.12.07-.23.18-.29l1.23-.93c.14-.1.32-.1.46 0l6.54 4.92-6.54 4.92c-.14.1-.32.1-.46 0l-1.23-.93a.35.35 0 0 1-.18-.29V5.88c0-.12.07-.23.17-.29l1.33-1.01c.16-.12.39-.11.55.01l6.39 4.81z"
+              />
+            </svg>
+            <span>Open in VSCode</span>
+          </a>
         </div>
       </div>
     `;
@@ -381,9 +437,30 @@
             ${this.state?.git_origin
               ? html`
                   <div class="info-item">
-                    <span id="gitOrigin" class="info-value"
-                      >${this.state?.git_origin}</span
-                    >
+                    ${(() => {
+                      const github = this.formatGitHubRepo(
+                        this.state?.git_origin,
+                      );
+                      if (github) {
+                        return html`
+                          <a
+                            href="${github.url}"
+                            target="_blank"
+                            rel="noopener noreferrer"
+                            class="github-link"
+                            title="${this.state?.git_origin}"
+                          >
+                            ${github.formatted}
+                          </a>
+                        `;
+                      } else {
+                        return html`
+                          <span id="gitOrigin" class="info-value"
+                            >${this.state?.git_origin}</span
+                          >
+                        `;
+                      }
+                    })()}
                   </div>
                 `
               : ""}
diff --git a/webui/src/web-components/sketch-network-status.test.ts b/webui/src/web-components/sketch-network-status.test.ts
index 45882a0..5c968d4 100644
--- a/webui/src/web-components/sketch-network-status.test.ts
+++ b/webui/src/web-components/sketch-network-status.test.ts
@@ -1,61 +1,26 @@
 import { test, expect } from "@sand4rt/experimental-ct-web";
 import { SketchNetworkStatus } from "./sketch-network-status";
 
-test("displays the correct connection status when connected", async ({
+// Test for when no error message is present - component should not render
+test("does not display anything when no error is provided", async ({
   mount,
 }) => {
   const component = await mount(SketchNetworkStatus, {
     props: {
       connection: "connected",
-      message: "Connected to server",
     },
   });
 
-  await expect(component.locator(".polling-indicator")).toBeVisible();
-  await expect(component.locator(".status-text")).toBeVisible();
-  await expect(component.locator(".polling-indicator.active")).toBeVisible();
-  await expect(component.locator(".status-text")).toContainText(
-    "Connected to server",
-  );
+  // The component should be empty
+  await expect(component.locator(".status-container")).not.toBeVisible();
 });
 
-test("displays the correct connection status when disconnected", async ({
-  mount,
-}) => {
-  const component = await mount(SketchNetworkStatus, {
-    props: {
-      connection: "disconnected",
-      message: "Disconnected",
-    },
-  });
-
-  await expect(component.locator(".polling-indicator")).toBeVisible();
-  await expect(component.locator(".polling-indicator.error")).toBeVisible();
-});
-
-test("displays the correct connection status when disabled", async ({
-  mount,
-}) => {
-  const component = await mount(SketchNetworkStatus, {
-    props: {
-      connection: "disabled",
-      message: "Disabled",
-    },
-  });
-
-  await expect(component.locator(".polling-indicator")).toBeVisible();
-  await expect(component.locator(".polling-indicator.error")).not.toBeVisible();
-  await expect(
-    component.locator(".polling-indicator.active"),
-  ).not.toBeVisible();
-});
-
+// Test that error message is displayed correctly
 test("displays error message when provided", async ({ mount }) => {
   const errorMsg = "Connection error";
   const component = await mount(SketchNetworkStatus, {
     props: {
       connection: "disconnected",
-      message: "Disconnected",
       error: errorMsg,
     },
   });
diff --git a/webui/src/web-components/sketch-network-status.ts b/webui/src/web-components/sketch-network-status.ts
index 2a0e455..cf168fd 100644
--- a/webui/src/web-components/sketch-network-status.ts
+++ b/webui/src/web-components/sketch-network-status.ts
@@ -7,9 +7,6 @@
   connection: string;
 
   @property()
-  message: string;
-
-  @property()
   error: string;
 
   // See https://lit.dev/docs/components/styles/ for how lit-element handles CSS.
@@ -23,37 +20,6 @@
       align-items: center;
     }
 
-    .polling-indicator {
-      display: inline-block;
-      width: 8px;
-      height: 8px;
-      border-radius: 50%;
-      margin-right: 4px;
-      background-color: #ccc;
-    }
-
-    .polling-indicator.active {
-      background-color: #4caf50;
-      animation: pulse 1.5s infinite;
-    }
-
-    .polling-indicator.error {
-      background-color: #f44336;
-      animation: pulse 1.5s infinite;
-    }
-
-    @keyframes pulse {
-      0% {
-        opacity: 1;
-      }
-      50% {
-        opacity: 0.5;
-      }
-      100% {
-        opacity: 1;
-      }
-    }
-
     .status-text {
       font-size: 11px;
       color: #666;
@@ -74,23 +40,15 @@
     super.disconnectedCallback();
   }
 
-  indicator() {
-    if (this.connection === "disabled") {
-      return "";
-    }
-    return this.connection === "connected" ? "active" : "error";
-  }
-
   render() {
+    // Only render if there's an error to display
+    if (!this.error) {
+      return html``;
+    }
+
     return html`
       <div class="status-container">
-        <span
-          id="pollingIndicator"
-          class="polling-indicator ${this.indicator()}"
-        ></span>
-        <span id="statusText" class="status-text"
-          >${this.error || this.message}</span
-        >
+        <span id="statusText" class="status-text">${this.error}</span>
       </div>
     `;
   }
diff --git a/webui/src/web-components/sketch-view-mode-select.ts b/webui/src/web-components/sketch-view-mode-select.ts
index 4c3c91f..3b94303 100644
--- a/webui/src/web-components/sketch-view-mode-select.ts
+++ b/webui/src/web-components/sketch-view-mode-select.ts
@@ -35,6 +35,16 @@
       white-space: nowrap;
     }
 
+    @media (max-width: 1400px) {
+      .tab-btn span:not(.tab-icon) {
+        display: none;
+      }
+
+      .tab-btn {
+        padding: 8px 10px;
+      }
+    }
+
     .tab-btn:not(:last-child) {
       border-right: 1px solid #eee;
     }
