From 361121c7f621e7c70333daf32ecbd9629a7b70bd Mon Sep 17 00:00:00 2001 From: damocles Date: Mon, 31 Aug 2026 21:33:46 +0200 Subject: [PATCH] issue-report: add transitively-blocks count alongside direct depended-on-by count --- .../swarm-ui/src/pages/IssueReportPage.tsx | 32 +++++++- swarm-controller/src/forge.rs | 77 ++++++++++++++++++- 2 files changed, 101 insertions(+), 8 deletions(-) diff --git a/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx b/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx index dc7a352c..0f9b8d33 100644 --- a/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx +++ b/frontend/packages/swarm-ui/src/pages/IssueReportPage.tsx @@ -5,9 +5,9 @@ // swarm-controller's `GET /api/repos` (dropdown source, only repos with // an open issue), `GET /api/issue-report` (default — every repo // combined) and `GET /api/repos/{org}/{repo}/issue-report` (once a -// specific repo is picked) — `blocked` and `depended_on_by_count` both -// arrive pre-resolved per row, so nothing here does its own -// dependency-graph walk. +// specific repo is picked) — `blocked`, `depended_on_by_count` and +// `transitively_blocks_count` all arrive pre-resolved per row, so +// nothing here does its own dependency-graph walk. // // Sorting and the label/hide-blocked filters are client-side over // whatever's currently loaded — only the repo selection re-fetches. @@ -42,9 +42,17 @@ interface IssueReportRow { html_url: string | null; blocked: boolean; depended_on_by_count: number; + transitively_blocks_count: number; } -type SortKey = 'repo' | 'number' | 'title' | 'assignees' | 'blocked' | 'depended_on_by_count'; +type SortKey = + | 'repo' + | 'number' + | 'title' + | 'assignees' + | 'blocked' + | 'depended_on_by_count' + | 'transitively_blocks_count'; type SortDir = 'asc' | 'desc'; // Sentinel `