feat: add respawn controller verbosity with countdown timers and bug fixes

- Fix "enable twice" bug: add enabled:true to getModalRespawnConfig()
- Add timer tracking with countdown display in respawn banner
- New events: timerStarted, timerCancelled, timerCompleted, actionLog
- Show active timers with progress bars and recent action log
- Skip remaining timeouts after AI check returns IDLE/WORKING verdict
- Enhanced DetectionStatus with activeTimers, recentActions, currentPhase

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-25 03:57:44 +01:00
co-authored by Claude Opus 4.5
parent ae4c445601
commit d19d6ceddd
5 changed files with 721 additions and 167 deletions
+99 -2
View File
@@ -454,8 +454,7 @@ body {
/* Respawn Banner - Compact */
.respawn-banner {
display: flex;
align-items: center;
gap: 0.75rem;
flex-direction: column;
padding: 0.35rem 1rem;
background: linear-gradient(90deg, #1e3a1e, #132513);
border-bottom: 1px solid rgba(34, 197, 94, 0.3);
@@ -463,6 +462,104 @@ body {
flex-shrink: 0;
}
.respawn-banner-row {
display: flex;
align-items: center;
gap: 0.75rem;
}
.respawn-timers-row {
display: flex;
align-items: flex-start;
gap: 1rem;
padding-top: 0.35rem;
border-top: 1px solid rgba(34, 197, 94, 0.15);
margin-top: 0.35rem;
}
.respawn-countdown-timers {
display: flex;
gap: 0.5rem;
flex-wrap: wrap;
}
.respawn-countdown-timer {
display: flex;
align-items: center;
gap: 0.4rem;
background: rgba(0, 0, 0, 0.35);
padding: 0.2rem 0.5rem;
border-radius: 4px;
font-family: 'SF Mono', Monaco, monospace;
font-size: 0.7rem;
}
.respawn-countdown-timer .timer-name {
color: var(--text-dim);
}
.respawn-countdown-timer .timer-value {
color: var(--green);
font-weight: 500;
min-width: 2.5em;
text-align: right;
}
.respawn-timer-bar {
width: 40px;
height: 3px;
background: rgba(255, 255, 255, 0.15);
border-radius: 2px;
overflow: hidden;
}
.respawn-timer-progress {
height: 100%;
background: var(--green);
transition: width 0.1s linear;
}
.respawn-action-log {
flex: 1;
max-height: 60px;
overflow-y: auto;
font-size: 0.65rem;
opacity: 0.75;
font-family: 'SF Mono', Monaco, monospace;
color: var(--text-dim);
}
.respawn-action-log::-webkit-scrollbar {
width: 4px;
}
.respawn-action-log::-webkit-scrollbar-thumb {
background: rgba(34, 197, 94, 0.3);
border-radius: 2px;
}
.respawn-action-entry {
padding: 0.1rem 0;
border-bottom: 1px solid rgba(34, 197, 94, 0.1);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.respawn-action-entry .action-time {
color: var(--text-muted);
margin-right: 0.4rem;
}
.respawn-action-entry .action-type {
color: var(--green);
margin-right: 0.4rem;
}
.respawn-action-entry .action-detail {
color: var(--text-dim);
}
.respawn-indicator {
color: var(--green);
animation: spin 2s linear infinite;