183 lines
6.2 KiB
Markdown
183 lines
6.2 KiB
Markdown
# Fixes Deployed - Visual Hierarchy & Max-Retries Modal
|
|
|
|
**Deployment Date**: October 10, 2025
|
|
**Version ID**: `37657c69-ca2a-4900-be50-570ea34ba452`
|
|
**Live URL**: https://bandit-runner-app.nicholaivogelfilms.workers.dev
|
|
|
|
## Changes Deployed
|
|
|
|
### 1. Max-Retries Modal - Debug Logging Added ✅
|
|
|
|
**Problem**: Modal wasn't appearing when max retries were hit.
|
|
|
|
**Fix Applied**:
|
|
- Added comprehensive console logging throughout the event flow
|
|
- Fixed React hook dependency array (removed `onUserActionRequired` dependency)
|
|
- Added logging in Durable Object, WebSocket hook, and UI component
|
|
|
|
**How to Test**:
|
|
1. Start a run with GPT-4o Mini targeting Level 5
|
|
2. Wait for Level 1 to hit max retries (3 attempts)
|
|
3. Open browser console and look for these logs:
|
|
- `🚨 DO: Emitting user_action_required event:` (from Durable Object)
|
|
- `📣 Calling user action callback with:` (from WebSocket hook)
|
|
- `🚨 USER ACTION REQUIRED received in UI:` (from terminal interface)
|
|
- `✅ Modal state set to true` (confirms modal should show)
|
|
4. If logs appear but modal doesn't show, there's a rendering issue
|
|
5. If logs don't appear, the event isn't being emitted correctly
|
|
|
|
### 2. Terminal Panel Visual Hierarchy ✅
|
|
|
|
**Improvements**:
|
|
- **Commands** (`$ cat readme`): Cyan background with left border, semi-bold font
|
|
- **Output**: Indented (pl-6), slightly dimmed text
|
|
- **System messages** (`[TOOL]`): Purple background with left border
|
|
- **Error messages**: Red background with left border
|
|
- **Separators**: Subtle horizontal line before each command block
|
|
- **Typography**: Increased font size to 13px, better line height
|
|
- **Timestamps**: Smaller and dimmed for less visual weight
|
|
|
|
**Visual Changes**:
|
|
```
|
|
Before:
|
|
23:43:37 [TOOL] ssh_exec: ls
|
|
23:43:37 $ ls
|
|
23:43:37 readme
|
|
|
|
After:
|
|
23:43:37 [TOOL] ssh_exec: ls ← Purple background, left border
|
|
─────────────────────────────── ← Separator
|
|
23:43:37 $ ls ← Cyan background, left border, bold
|
|
23:43:37 readme ← Indented, plain text
|
|
```
|
|
|
|
### 3. Agent Panel Visual Hierarchy ✅
|
|
|
|
**Improvements**:
|
|
- **Message Blocks**: Each message now has padding and rounded borders
|
|
- **Color Coding**:
|
|
- THINKING: Blue background (`bg-blue-950/20`), blue border
|
|
- AGENT: Green background (`bg-green-950/20`), green border
|
|
- USER: Yellow background (`bg-yellow-950/20`), yellow border
|
|
- **Spacing**: Increased from `space-y-1` to `space-y-3`
|
|
- **Labels**: Small rounded badges with color-coded backgrounds
|
|
- **Typography**: 13px font size, better readability
|
|
|
|
**Visual Changes**:
|
|
```
|
|
Before:
|
|
───────────────────────
|
|
23:43:41 AGENT
|
|
Planning: cat readme
|
|
|
|
After:
|
|
╔═══════════════════════╗
|
|
║ 23:43:41 [THINKING] ║ ← Blue background
|
|
║ cat readme ║
|
|
╚═══════════════════════╝
|
|
|
|
╔═══════════════════════╗
|
|
║ 23:43:41 [AGENT] ║ ← Green background
|
|
║ Planning: cat readme ║
|
|
╚═══════════════════════╝
|
|
```
|
|
|
|
## Technical Details
|
|
|
|
### Files Modified
|
|
|
|
1. **`bandit-runner-app/src/components/terminal-chat-interface.tsx`**
|
|
- Fixed `useEffect` dependency array for `onUserActionRequired`
|
|
- Added comprehensive logging
|
|
- Updated terminal line rendering with backgrounds, borders, and spacing
|
|
- Updated chat message rendering with color-coded blocks
|
|
|
|
2. **`bandit-runner-app/src/hooks/useAgentWebSocket.ts`**
|
|
- Added logging when `user_action_required` callback is invoked
|
|
|
|
3. **`bandit-runner-app/src/lib/durable-objects/BanditAgentDO.ts`**
|
|
- Added logging when emitting `user_action_required` event
|
|
- Fixed TypeScript type assertions (`as const`)
|
|
|
|
### CSS Changes Applied
|
|
|
|
**Terminal Lines**:
|
|
```css
|
|
Input (commands):
|
|
- text-cyan-300, font-semibold
|
|
- bg-cyan-950/30, border-l-2 border-cyan-500
|
|
|
|
Output:
|
|
- text-zinc-300/90, pl-6 (indented)
|
|
|
|
System:
|
|
- text-purple-300, font-medium
|
|
- bg-purple-950/20, border-l-2 border-purple-500
|
|
|
|
Error:
|
|
- text-red-300
|
|
- bg-red-950/20, border-l-2 border-red-500
|
|
```
|
|
|
|
**Chat Messages**:
|
|
```css
|
|
Thinking:
|
|
- bg-blue-950/20, border-l-2 border-blue-500
|
|
- text-blue-200/80
|
|
|
|
Agent:
|
|
- bg-green-950/20, border-l-2 border-green-500
|
|
- text-green-200/90
|
|
|
|
User:
|
|
- bg-yellow-950/20, border-l-2 border-yellow-500
|
|
- text-yellow-200/90
|
|
```
|
|
|
|
## Testing Results
|
|
|
|
### Before Deployment
|
|
- ❌ Max-retries modal: Not appearing
|
|
- ❌ Terminal: Poor readability, everything blends together
|
|
- ❌ Agent panel: Difficult to distinguish message types
|
|
|
|
### Expected After Deployment
|
|
- ⏳ Max-retries modal: Should show with debug logs (to be verified)
|
|
- ✅ Terminal: Clear visual hierarchy with color coding and spacing
|
|
- ✅ Agent panel: Distinct message types with color-coded blocks
|
|
|
|
## Next Steps
|
|
|
|
1. **Test the live site** at https://bandit-runner-app.nicholaivogelfilms.workers.dev
|
|
2. **Verify max-retries modal** by starting a run and waiting for Level 1 failures
|
|
3. **Check browser console** for debug logs if modal doesn't appear
|
|
4. **Verify visual improvements** in terminal and agent panels
|
|
5. **Report findings** so we can iterate if needed
|
|
|
|
## Troubleshooting
|
|
|
|
If the modal still doesn't appear:
|
|
|
|
1. **Check console for logs**:
|
|
- If `🚨 DO: Emitting...` appears but nothing else → WebSocket not forwarding event
|
|
- If `📣 Calling user action callback...` appears but no `🚨 USER ACTION...` → Callback not registered
|
|
- If `✅ Modal state set to true` appears → Rendering issue with AlertDialog
|
|
|
|
2. **Check AlertDialog mounting**:
|
|
- Verify `showMaxRetriesDialog` state updates in React DevTools
|
|
- Check if AlertDialog is hidden by z-index or display issues
|
|
|
|
3. **Verify event flow**:
|
|
- Use WebSocket inspector in DevTools Network tab
|
|
- Look for `user_action_required` event in WebSocket messages
|
|
|
|
## Additional Notes
|
|
|
|
- Token usage and cost tracking confirmed working ✅
|
|
- Pre-advance password validation confirmed working ✅
|
|
- Command hygiene (no nested SSH) confirmed working ✅
|
|
- Error recovery with exponential backoff confirmed working ✅
|
|
|
|
All core improvements from the original implementation are still functional!
|
|
|