## 1. Backend - Tunnel Recreation

- [x] 1.1 Add `recreate_tunnel` function to docker.py
- [x] 1.2 Create `POST /instances/{id}/recreate-tunnel` endpoint in tool_instances.py
- [x] 1.3 Update stop_instance to also stop the tunnel process

## 2. Backend - Tunnel Health Check

- [x] 2.1 Add `check_tunnel_health(url)` function to docker.py
- [x] 2.2 Create `GET /instances/{id}/health` endpoint in tool_instances.py
- [x] 2.3 Add tunnel_url_health field to ToolInstance model (optional, can use status)

## 3. Frontend - Stop Confirmation

- [x] 3.1 Add confirmation dialog component for stop action
- [x] 3.2 Update SessionsPage stop handler to show confirmation
- [x] 3.3 Update InstanceList stop handler to show confirmation

## 4. Frontend - Delete State Update

- [x] 4.1 Update delete handler in SessionsPage to filter state immediately
- [x] 4.2 Update delete handler in InstanceList to filter state immediately
- [x] 4.3 Ensure error handling shows message on failure

## 5. Frontend - Tunnel Health & Recreate

- [x] 5.1 Add tunnel health check API function in sessions.ts
- [x] 5.2 Add recreate tunnel API function in sessions.ts
- [x] 5.3 Implement health check polling (30s interval) in SessionsPage
- [x] 5.4 Show error badge when tunnel is unhealthy
- [x] 5.5 Add "Recreate Tunnel" button next to "Open" button
- [x] 5.6 Update InstanceList to show health status and recreate button

## 6. Quality Gates

- [x] 6.1 Run Python syntax check
- [x] 6.2 Run frontend typecheck - PASSED
- [x] 6.3 Run frontend lint - PASSED
- [x] 6.4 Test stop confirmation dialog
- [x] 6.5 Test delete state update
- [x] 6.6 Test tunnel recreation
- [x] 6.7 Commit and push changes
