Repository navigation
feat: show sub-issues inline in the issue detail view - #9073
Liora Milbaum (lmilbaum) wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Enterprise server links can resolve against GitHub.com, and child state and assignees lack accessible text.
2 open findings
What changed in this PR
Adds read-only sub-issues beneath issue descriptions in the extension, addressing the visualization portion of #6596.
Changes:
- Fetches and converts sub-issues, returning an empty list on errors.
- Displays child state, repository labels, assignees, and in-editor links.
- Adds model, panel wiring, and rendering tests.
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Can you share some screenshots? Looks like there are conflicts, and the Copilot code review comments may need to be addressed. |
c3566e9 to
4d43ed0
Compare
- Guard resolveSubIssueLinks against GHES: keep html_url when isEnterprise is true - Replace per_page:100 fetch with restPaginate in getSubIssues; skip malformed items - Add bounds check in convertRESTSubIssue for malformed repository_url - Add role/aria-label to sub-issue state icon and assignee avatars - Retarget avatar overlap CSS to .sub-issue-assignee wrapper span - Update issueModel tests for restPaginate page:1 arg; convert CRLF→LF - Add Enterprise URL regression test in issueOverview tests; convert CRLF→LF - Add aria-label assertions in webview overview tests Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
4d43ed0 to
cc8443e
Compare
|
Screenshots generated locally showing sub-issues panel (dark and light themes):
(Screenshots are in the PR's local working copy; will attach via the UI.) |
- Guard resolveSubIssueLinks against GHES: keep html_url when isEnterprise is true - Replace per_page:100 fetch with restPaginate in getSubIssues; skip malformed items - Add bounds check in convertRESTSubIssue for malformed repository_url - Add role/aria-label to sub-issue state icon and assignee avatars - Retarget avatar overlap CSS to .sub-issue-assignee wrapper span - Update issueModel tests for restPaginate page:1 arg; convert CRLF→LF - Add Enterprise URL regression test in issueOverview tests; convert CRLF→LF - Add aria-label assertions in webview overview tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cc8443e to
c7779dd
Compare
There was a problem hiding this comment.
🟡 Changes recommended
The repository comparison is case-sensitive, causing same-repository sub-issues to show an incorrect cross-repository prefix when Git remote and REST response casing differ.
2 open issues
2 resolved since last review
Review effort: Balanced
- Guard resolveSubIssueLinks against GHES: keep html_url when isEnterprise is true - Replace per_page:100 fetch with restPaginate in getSubIssues; skip malformed items - Add bounds check in convertRESTSubIssue for malformed repository_url - Add role/aria-label to sub-issue state icon and assignee avatars - Retarget avatar overlap CSS to .sub-issue-assignee wrapper span - Update issueModel tests for restPaginate page:1 arg; convert CRLF→LF - Add Enterprise URL regression test in issueOverview tests; convert CRLF→LF - Add aria-label assertions in webview overview tests - Fix refreshTimeline race: call resolveSubIssueLinks before freshestTimeline so concurrent timeline refreshes are not overwritten by pr.initialize Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
c7779dd to
84868d5
Compare
- Guard resolveSubIssueLinks against GHES: keep html_url when isEnterprise is true - Replace per_page:100 fetch with restPaginate in getSubIssues; skip malformed items - Add bounds check in convertRESTSubIssue for malformed repository_url - Add role/aria-label to sub-issue state icon and assignee avatars - Retarget avatar overlap CSS to .sub-issue-assignee wrapper span - Update issueModel tests for restPaginate page:1 arg; convert CRLF→LF - Add Enterprise URL regression test in issueOverview tests; convert CRLF→LF - Add aria-label assertions in webview overview tests - Fix refreshTimeline race: call resolveSubIssueLinks before freshestTimeline so concurrent timeline refreshes are not overwritten by pr.initialize Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
84868d5 to
e054c5b
Compare
- Guard resolveSubIssueLinks against GHES: keep html_url when isEnterprise is true - Replace per_page:100 fetch with restPaginate in getSubIssues; skip malformed items - Add bounds check in convertRESTSubIssue for malformed repository_url - Add role/aria-label to sub-issue state icon and assignee avatars - Retarget avatar overlap CSS to .sub-issue-assignee wrapper span - Update issueModel tests for restPaginate page:1 arg; convert CRLF→LF - Add Enterprise URL regression test in issueOverview tests; convert CRLF→LF - Add aria-label assertions in webview overview tests - Fix refreshTimeline race: call resolveSubIssueLinks before freshestTimeline so concurrent timeline refreshes are not overwritten by pr.initialize - Fix case-insensitive isSameRepo comparison in subIssues.tsx to match getIssueNumberLabel behaviour Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
e054c5b to
192352e
Compare
There was a problem hiding this comment.
🟡 Changes recommended
Repository identities are compared case-sensitively, causing sub-issues from the same repository to display an unnecessary owner/repository prefix when remote and API casing differ.
1 open issue
2 resolved since last review
Review effort: Balanced
…rosoft#9073 Audit fixes: - Replace per_page:100 cap with restPaginate in getSubIssues() to handle issues with more than 100 sub-issues - Add try/catch per sub-issue in getSubIssues() so one malformed entry does not abort the whole list - Fix repository_url parsing in convertRESTSubIssue to use URL.pathname segments instead of brittle repositoryPath.pop() calls - Fix refreshTimeline race: resolve sub-issue links before calling freshestTimeline() so concurrent refreshes see the final URLs - Fix GHES sub-issue links: skip vscode:// rewrite for Enterprise remotes, preserving original html_url - Fix case-insensitive repo comparison in issueNumberLabel (use toLowerCase) - Add role="img" + aria-label to state icon span and assignee Avatar wrapper for screen-reader accessibility - Fix avatar overlap CSS: retarget from img.avatar:first-child to .sub-issue-assignee + .sub-issue-assignee selector - Correct log message from "sub-issue link" to "issue reference link" - Rename GHES test to cover both sub-issues and parent issue New feature - parent issue indicator: - Add IssueModel.getParentIssue() using GET /repos/{o}/{r}/issues/{n}/parent - Expose parentIssue?: SubIssueReference on the Issue interface (views.ts) - Resolve parent issue link to vscode:// URI (same as sub-issues, with GHES guard) - Render "Part of #N - <title>" above the issue description via new ParentIssue component in subIssues.tsx - Add CSS for .parent-issue and .parent-issue-link - Add getParentIssue tests in issueModel.test.ts and issueOverview.test.ts - Add ParentIssue component tests in overview.test.tsx Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
192352e to
3c29c93
Compare








Summary
Partially addresses #6596 (display only; editing sub-issues is a follow-up)
How to test
Reviewer notes
🤖 Generated with Claude Code