feat(KB-088): clear failed status when moving tasks and improve error display

- Fix moveTask to clear status/error/worktree/blockedBy when moving from in-progress to todo/triage
- Add error message display in TaskCard for failed tasks with truncation
- Add prominent error alert in TaskDetailModal for failed tasks
- Refactor usage tracking: move from app/components to dashboard/src/
- Add usage.ts and usage.test.ts for centralized usage tracking
- Remove UsageIndicator and useUsageData from app/ directory
- Update styles.css for error display components
- Update executor tests for error handling
- Add changeset for patch release
This commit is contained in:
gsxdsm
2026-03-29 21:48:26 -07:00
parent fc3742582d
commit 49f290da3c
16 changed files with 1186 additions and 1233 deletions

View File

@@ -512,6 +512,54 @@ body {
border-left: 3px solid #da3633;
}
/* Error display on failed task cards */
.card-error {
display: flex;
align-items: flex-start;
gap: 6px;
margin: 6px 0;
padding: 6px 8px;
background: rgba(218, 54, 51, 0.1);
border: 1px solid rgba(218, 54, 51, 0.3);
border-radius: var(--radius);
font-size: 11px;
color: #da3633;
line-height: 1.4;
}
.card-error-icon {
flex-shrink: 0;
font-size: 12px;
}
.card-error-text {
word-break: break-word;
}
/* Error display on failed task cards */
.card-error {
display: flex;
align-items: flex-start;
gap: 6px;
margin: 6px 0;
padding: 6px 8px;
background: rgba(218, 54, 51, 0.1);
border: 1px solid rgba(218, 54, 51, 0.3);
border-radius: var(--radius);
font-size: 11px;
color: #da3633;
line-height: 1.4;
}
.card-error-icon {
flex-shrink: 0;
font-size: 12px;
}
.card-error-text {
word-break: break-word;
}
.card.paused {
opacity: 0.55;
border-left: 3px solid var(--text-secondary, #888);
@@ -1080,6 +1128,43 @@ body {
margin-bottom: 16px;
}
/* Error alert in task detail modal */
.detail-error-alert {
display: flex;
align-items: flex-start;
gap: 12px;
margin: 12px 0 16px;
padding: 12px 14px;
background: rgba(218, 54, 51, 0.1);
border: 1px solid rgba(218, 54, 51, 0.3);
border-radius: var(--radius);
}
.detail-error-icon {
flex-shrink: 0;
font-size: 18px;
line-height: 1;
}
.detail-error-content {
flex: 1;
min-width: 0;
}
.detail-error-title {
font-size: 13px;
font-weight: 600;
color: #da3633;
margin-bottom: 4px;
}
.detail-error-message {
font-size: 12px;
color: var(--text-muted);
line-height: 1.5;
word-break: break-word;
}
.detail-section {
margin-top: 16px;
}