feat(ui): make Ralph Wiggum tracker panel detachable

Add ability to detach the Ralph Wiggum tracker panel as a floating
window that can be dragged around the screen.

Changes:
- Add detach button to the Ralph panel header
- Restructure HTML to separate clickable content from controls
- Add CSS styles for detached state (floating, draggable, resizable)
- Add toggleRalphDetach() and setupRalphDrag() JavaScript methods
- Panel auto-expands when detached for better visibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-19 18:41:14 +01:00
co-authored by Claude Opus 4.5
parent 2c38f7924a
commit 6a414a2648
3 changed files with 184 additions and 35 deletions
+70 -15
View File
@@ -457,21 +457,6 @@ body {
position: relative;
}
/* Collapsed Summary Bar */
.ralph-summary {
display: flex;
align-items: center;
gap: 0.75rem;
padding: 0.5rem 0.75rem;
cursor: pointer;
user-select: none;
transition: background 0.15s;
}
.ralph-summary:hover {
background: var(--bg-hover);
}
/* Mini Progress Ring (in summary) */
.ralph-ring-mini {
position: relative;
@@ -908,6 +893,76 @@ body {
padding: 0.5rem;
}
/* Ralph panel summary layout adjustments */
.ralph-summary {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.5rem 0.75rem;
user-select: none;
transition: background 0.15s;
}
.ralph-summary-content {
display: flex;
align-items: center;
gap: 0.75rem;
flex: 1;
cursor: pointer;
}
.ralph-summary-content:hover {
background: var(--bg-hover);
}
.ralph-controls {
display: flex;
gap: 0.25rem;
flex-shrink: 0;
}
/* Detached Ralph Panel */
.ralph-panel.detached {
position: fixed;
top: 100px;
left: 100px;
width: 400px;
min-height: 200px;
max-height: 80vh;
z-index: 1000;
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
background: var(--bg-card);
overflow: auto;
resize: both;
}
.ralph-panel.detached .ralph-summary {
cursor: move;
background: linear-gradient(180deg, var(--bg-hover) 0%, var(--bg-card) 100%);
border-bottom: 1px solid var(--border);
border-radius: 8px 8px 0 0;
}
.ralph-panel.detached .ralph-summary-content {
cursor: move;
}
.ralph-panel.detached .ralph-summary-content:hover {
background: transparent;
}
.ralph-panel.detached .ralph-detail {
max-height: none;
overflow: auto;
}
.ralph-panel.detached.collapsed {
min-height: auto;
height: auto;
}
/* Main - Terminal Area */
.main {
flex: 1;