huskies: merge 964

This commit is contained in:
dave
2026-05-13 14:51:39 +00:00
parent c811672e18
commit dcb43c465a
24 changed files with 234 additions and 188 deletions
+7 -7
View File
@@ -53,7 +53,7 @@ export interface AgentAssignment {
/** A single item in any pipeline stage (backlog, current, QA, merge, or done). */
export interface PipelineStageItem {
story_id: string;
name: string | null;
name: string;
error: string | null;
merge_failure: string | null;
agent: AgentAssignment | null;
@@ -142,32 +142,32 @@ export type StatusEvent =
| {
type: "stage_transition";
story_id: string;
story_name: string | null;
story_name: string;
from_stage: string;
to_stage: string;
}
| {
type: "merge_failure";
story_id: string;
story_name: string | null;
story_name: string;
reason: string;
}
| {
type: "story_blocked";
story_id: string;
story_name: string | null;
story_name: string;
reason: string;
}
| {
type: "rate_limit_warning";
story_id: string;
story_name: string | null;
story_name: string;
agent_name: string;
}
| {
type: "rate_limit_hard_block";
story_id: string;
story_name: string | null;
story_name: string;
agent_name: string;
reset_at: string;
};
@@ -212,7 +212,7 @@ export interface AnthropicModelInfo {
export interface WorkItemContent {
content: string;
stage: string;
name: string | null;
name: string;
agent: string | null;
}
@@ -15,7 +15,7 @@ import { WorkItemDetailPanel } from "./WorkItemDetailPanel";
* This conversion happens at render time, not at the WebSocket boundary,
* so the original StatusEvent structure is preserved in state. */
function formatStatusEventMessage(event: StatusEvent): string {
const name = event.story_name ?? event.story_id;
const name = event.story_name || event.story_id;
switch (event.type) {
case "stage_transition":
return `${name}${event.from_stage}${event.to_stage}`;
+1 -1
View File
@@ -113,7 +113,7 @@ describe("StagePanel", () => {
const items: PipelineStageItem[] = [
{
story_id: "1_story_bad",
name: null,
name: "",
error: "Missing front matter",
merge_failure: null,
agent: null,
+3 -3
View File
@@ -526,7 +526,7 @@ export function StagePanel({
${costs.get(item.story_id)?.toFixed(2)}
</span>
)}
{item.name ?? item.story_id}
{item.name || item.story_id}
</div>
{item.error && (
<div
@@ -616,10 +616,10 @@ export function StagePanel({
<button
type="button"
data-testid={`delete-btn-${item.story_id}`}
title={`Delete ${item.name ?? item.story_id}`}
title={`Delete ${item.name || item.story_id}`}
onClick={(e) => {
e.stopPropagation();
const label = item.name ?? item.story_id;
const label = item.name || item.story_id;
if (
window.confirm(
`Delete "${label}"? This cannot be undone.`,