## 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 - [ ] 3.1 Add confirmation dialog component for stop action - [ ] 3.2 Update SessionsPage stop handler to show confirmation - [ ] 3.3 Update InstanceList stop handler to show confirmation ## 4. Frontend - Delete State Update - [ ] 4.1 Update delete handler in SessionsPage to filter state immediately - [ ] 4.2 Update delete handler in InstanceList to filter state immediately - [ ] 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 - [ ] 5.3 Implement health check polling (30s interval) in SessionsPage - [ ] 5.4 Show error badge when tunnel is unhealthy - [ ] 5.5 Add "Recreate Tunnel" button next to "Open" button - [ ] 5.6 Update InstanceList to show health status and recreate button ## 6. Quality Gates - [ ] 6.1 Run Python syntax check - [ ] 6.2 Run frontend typecheck - [ ] 6.3 Run frontend lint - [ ] 6.4 Test stop confirmation dialog - [ ] 6.5 Test delete state update - [ ] 6.6 Test tunnel recreation - [ ] 6.7 Commit and push changes