feat: add task queue sidebar and resume functionality for CLI sessions

- Implemented task queue sidebar for managing active tasks with filtering options.
- Added functionality to close notification sidebar when opening task queue.
- Enhanced CLI history view to support resuming previous sessions with optional prompts.
- Updated CLI executor to handle resuming sessions for Codex, Gemini, and Qwen tools.
- Introduced utility functions for finding CLI history directories recursively.
- Improved task queue data management and rendering logic.
This commit is contained in:
catlog22
2025-12-13 11:51:53 +08:00
parent 335f5e9ec6
commit 93d3df1e08
14 changed files with 2000 additions and 128 deletions

View File

@@ -469,6 +469,22 @@
border-radius: 0.25rem;
}
.history-source-dir {
font-size: 0.625rem;
font-weight: 500;
padding: 0.1875rem 0.5rem;
background: hsl(var(--accent));
color: hsl(var(--accent-foreground));
border-radius: 0.25rem;
display: inline-flex;
align-items: center;
gap: 0.25rem;
max-width: 120px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.history-status {
display: flex;
align-items: center;
@@ -2028,3 +2044,85 @@
color: hsl(var(--foreground));
border-color: hsl(var(--primary) / 0.3);
}
/* ========================================
* Resume Session Styles
* ======================================== */
/* Resume Badge */
.history-resume-badge {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.1875rem 0.375rem;
background: hsl(var(--primary) / 0.12);
color: hsl(var(--primary));
border-radius: 0.25rem;
font-size: 0.625rem;
}
/* Resume Item Highlight */
.history-item-resume {
border-left: 3px solid hsl(var(--primary) / 0.5);
}
.history-item-resume:hover {
border-left-color: hsl(var(--primary));
}
/* History ID Display */
.history-id {
font-family: 'SF Mono', 'Consolas', 'Liberation Mono', monospace;
font-size: 0.625rem;
color: hsl(var(--muted-foreground) / 0.7);
}
/* Resume Button */
.btn-resume {
color: hsl(var(--primary));
}
.btn-resume:hover {
background: hsl(var(--primary) / 0.1);
color: hsl(var(--primary));
}
/* Resume Modal */
.resume-modal p {
font-size: 0.875rem;
color: hsl(var(--muted-foreground));
margin-bottom: 1rem;
}
.resume-prompt-input {
width: 100%;
padding: 0.75rem;
border: 1px solid hsl(var(--border));
border-radius: 0.5rem;
background: hsl(var(--background));
color: hsl(var(--foreground));
font-size: 0.875rem;
font-family: inherit;
resize: vertical;
min-height: 80px;
transition: all 0.2s ease;
}
.resume-prompt-input:focus {
outline: none;
border-color: hsl(var(--primary));
box-shadow: 0 0 0 2px hsl(var(--primary) / 0.15);
}
.resume-prompt-input::placeholder {
color: hsl(var(--muted-foreground) / 0.7);
}
.resume-modal-actions {
display: flex;
justify-content: flex-end;
gap: 0.5rem;
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid hsl(var(--border));
}