feat: add smart respawn integration and priority todos (Phase 2)

Smart Respawn Integration (2.5):
- Check circuit breaker OPEN state before respawn (blocks cycle)
- Check RALPH_STATUS EXIT_SIGNAL=true to stop respawn
- Check STATUS=BLOCKED to pause respawn for human intervention
- Use RECOMMENDATION from RALPH_STATUS in update prompt
- Emit respawn:blocked SSE event with reason and details
- Show notification when respawn is blocked
- Visual blocked state with pulsing red indicator

Priority-based Todos (part of 2.3):
- Add RalphTodoPriority type (P0/P1/P2/null)
- Parse priority from todo content (P0:, Critical:, High Priority, etc.)
- Add priority field to RalphTodoItem interface
- Update frontend to display priority badges with colors
- Sort todos by priority (P0 > P1 > P2) then by status
- Add CSS for priority badges and highlighted cards

Bump version to 0.1391

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-27 00:54:02 +01:00
co-authored by Claude Opus 4.5
parent 59b22337a5
commit 925ea09cca
8 changed files with 217 additions and 23 deletions
+45
View File
@@ -620,6 +620,17 @@ body {
font-size: 0.7rem;
}
.respawn-state.respawn-blocked {
background: rgba(244, 67, 54, 0.3);
color: #f44336;
animation: respawn-blocked-pulse 1.5s ease-in-out infinite;
}
@keyframes respawn-blocked-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.6; }
}
/* Respawn spacer removed - using flex layout */
.respawn-cycles {
@@ -1305,6 +1316,40 @@ body {
color: var(--text-dim);
}
/* Priority badges */
.ralph-task-priority {
font-size: 0.55rem;
font-weight: 700;
padding: 0.1rem 0.25rem;
border-radius: 2px;
flex-shrink: 0;
text-transform: uppercase;
}
.ralph-task-priority.priority-p0 {
background: rgba(244, 67, 54, 0.3);
color: #f44336;
}
.ralph-task-priority.priority-p1 {
background: rgba(255, 193, 7, 0.3);
color: #ffc107;
}
.ralph-task-priority.priority-p2 {
background: rgba(33, 150, 243, 0.2);
color: #2196f3;
}
/* Priority-based card highlighting */
.ralph-task-card.task-priority-p0 {
border-left-color: #f44336;
}
.ralph-task-card.task-priority-p1:not(.task-completed) {
border-left-color: #ffc107;
}
/* Empty state */
.ralph-state-empty {
color: var(--text-muted);