diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts b/packages/kilo-vscode/tests/visual-regression.spec.ts index c797701f261..7b2aeccbf13 100644 --- a/packages/kilo-vscode/tests/visual-regression.spec.ts +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts @@ -50,6 +50,7 @@ async function disableAnimations(page: Page) { // Permission dock config-preloaded has non-deterministic toggle rendering. const SKIP = new Set([ "agentmanager--worktree-item-busy", + "agentmanager--pr-badge-checks-pending", "composite-webview--permission-dock-config-preloaded", ]) diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-approved-checks-failing-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-approved-checks-failing-chromium-linux.png new file mode 100644 index 00000000000..5b2f303660f --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-approved-checks-failing-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:facae793453671cf34b950352dc19041d420d096fac2a7358d1a4550e05a8033 +size 3383 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-approved-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-approved-chromium-linux.png new file mode 100644 index 00000000000..784bf935344 --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-approved-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc81d91792781a9784775db3af44ea8058e87df9e029c2d7fc5acf1548fa7ec7 +size 3423 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-changes-requested-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-changes-requested-chromium-linux.png new file mode 100644 index 00000000000..ebf4954c6bf --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-changes-requested-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2923838fbc9ce24851e2b8ed6c5d4c2a098db9667fc528d1c00162595640bc05 +size 3550 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-checks-failing-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-checks-failing-chromium-linux.png new file mode 100644 index 00000000000..fdd58cf7fc4 --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-checks-failing-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c087f8e2b50bf43f9ca03ab31e8955e995304473688bf8db88fb6901d743a1d4 +size 3541 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-closed-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-closed-chromium-linux.png new file mode 100644 index 00000000000..05c387099b1 --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-closed-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c13cc44cec6092d8294a535a3e6057d6e3a2b2d59cb18e09b0a073576972f80 +size 3582 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-draft-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-draft-chromium-linux.png new file mode 100644 index 00000000000..fc5b1dc4911 --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-draft-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79f5495b171fc9de3d04b7e15cc30ac2f5082c6d7db3818b3e288ce9c3ba41f3 +size 3461 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-merged-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-merged-chromium-linux.png new file mode 100644 index 00000000000..e819a16198a --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-merged-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda50cfb4ebebd29e6f0791ec13ee9e16e48c9fa6f6d6be03c78b1d900516427 +size 3604 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-no-review-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-no-review-chromium-linux.png new file mode 100644 index 00000000000..8858ea455c7 --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-no-review-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2680e8f97baee13ab92ac6fb3bcce56eb9cbb7e0c5fb0f76a76251abc016eac3 +size 3567 diff --git a/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-pending-chromium-linux.png b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-pending-chromium-linux.png new file mode 100644 index 00000000000..8858ea455c7 --- /dev/null +++ b/packages/kilo-vscode/tests/visual-regression.spec.ts-snapshots/agentmanager/pr-badge-pending-chromium-linux.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2680e8f97baee13ab92ac6fb3bcce56eb9cbb7e0c5fb0f76a76251abc016eac3 +size 3567 diff --git a/packages/kilo-vscode/webview-ui/agent-manager/WorktreeItem.tsx b/packages/kilo-vscode/webview-ui/agent-manager/WorktreeItem.tsx index 693710eaf28..39a0f09bc93 100644 --- a/packages/kilo-vscode/webview-ui/agent-manager/WorktreeItem.tsx +++ b/packages/kilo-vscode/webview-ui/agent-manager/WorktreeItem.tsx @@ -297,7 +297,7 @@ export const WorktreeItem: Component = (props) => { data-pending={pr().state === "open" && pr().checks.status === "pending" ? "" : undefined} onClick={handleOpenPR} > - + #{pr().number} ) diff --git a/packages/kilo-vscode/webview-ui/src/stories/agent-manager.stories.tsx b/packages/kilo-vscode/webview-ui/src/stories/agent-manager.stories.tsx index 61fa53e7a21..4134b90beeb 100644 --- a/packages/kilo-vscode/webview-ui/src/stories/agent-manager.stories.tsx +++ b/packages/kilo-vscode/webview-ui/src/stories/agent-manager.stories.tsx @@ -10,7 +10,7 @@ import { FileTree } from "../../agent-manager/FileTree" import { DiffPanel } from "../../agent-manager/DiffPanel" import { FullScreenDiffView } from "../../agent-manager/FullScreenDiffView" import { WorktreeItem } from "../../agent-manager/WorktreeItem" -import type { WorktreeFileDiff, WorktreeState, WorktreeGitStats } from "../types/messages" +import type { WorktreeFileDiff, WorktreeState, WorktreeGitStats, PRStatus } from "../types/messages" import "../../agent-manager/agent-manager.css" import "../../agent-manager/agent-manager-review.css" @@ -252,6 +252,152 @@ export const WorktreeItemWithStats: Story = { ), } +// --------------------------------------------------------------------------- +// PR badge mock helpers +// --------------------------------------------------------------------------- + +const basePR: PRStatus = { + number: 8594, + title: "feat: add inline delete", + url: "https://github.com/org/repo/pull/8594", + state: "open", + review: null, + checks: { status: "success", total: 5, passed: 5, failed: 0, pending: 0, items: [] }, + additions: 978, + deletions: 202, + files: 12, +} + +// --------------------------------------------------------------------------- +// WorktreeItem — PR badge stories +// --------------------------------------------------------------------------- + +export const PRBadgeApproved: Story = { + name: "PR Badge — approved + checks pass", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgePending: Story = { + name: "PR Badge — pending review", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeChangesRequested: Story = { + name: "PR Badge — changes requested", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeChecksFailing: Story = { + name: "PR Badge — checks failing", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeChecksPending: Story = { + name: "PR Badge — checks pending", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeDraft: Story = { + name: "PR Badge — draft", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeMerged: Story = { + name: "PR Badge — merged", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeClosed: Story = { + name: "PR Badge — closed", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeNoReview: Story = { + name: "PR Badge — open, no review decision", + render: () => ( + +
+ +
+
+ ), +} + +export const PRBadgeApprovedChecksFailing: Story = { + name: "PR Badge — approved but checks failing", + render: () => ( + +
+ +
+
+ ), +} + +// --------------------------------------------------------------------------- +// WorktreeItem — grouped +// --------------------------------------------------------------------------- + export const WorktreeItemGrouped: Story = { name: "WorktreeItem — grouped (3 versions)", render: () => {