feat(github): pull request tool window, timeline and review flow (#477)

Replaces the Pull Requests tool window with a full review workflow on top of gh's authentication.

- List with search, quick filters and paging; a tab per pull request and a New Pull Request tab.
- Details: commit picker, changes tree with viewed state, CI and reviewer status, merge, close and reopen.
- Timeline editor: comments, review threads, reactions and suggested changes.
- Review in the diff viewer and, for the checked-out branch, in the editor (review mode).
- New generic vcs extension points: registerDiffViewerProvider, lineInlays, reviewGutter, branch widget extensions; new vcs_merge_base and gh_api commands.
- CSP: img-src allows https://avatars.githubusercontent.com for avatars.

Fixed while testing against a real repository: remotes behind an SSH host alias, mergeability stuck on UNKNOWN, Apply Locally staying disabled after a checkout, relative links navigating the app's page, and review inlays wider than the pane.

Co-authored-by: imacross <[email protected]>
Цей коміт міститься в:
imacross authored and GitHub committed 2026-10-31 07:50:43 +08:00
1 джерело 696377acc2
коміт 059fd8a69b
192 files changed
+23668 -2076

No files matched your search

+14 -2
Переглянути файл
@@ -56,8 +56,20 @@ const shared = [
["refactor.move", "project.move"],
["editor.closeTab", "toolwindow.closeContent"],
["run.rerun", "debug.rerun", "find.rerun", "usages.rerun"],
["debug.smartStepInto", "db.refresh"],
["debug.runToCursor", "db.refresh"],
[
"debug.smartStepInto",
"db.refresh",
"github.refresh",
"github.pullRequest.refresh",
"github.pullRequest.timeline.refresh",
],
[
"debug.runToCursor",
"db.refresh",
"github.refresh",
"github.pullRequest.refresh",
"github.pullRequest.timeline.refresh",
],
["editor.increaseFontSize", "image.zoomIn"],
["editor.decreaseFontSize", "image.zoomOut"],
];
+6
Переглянути файл
@@ -357,6 +357,12 @@ export const intellijMacos: Record<string, string[]> = {
"db.newDataSource": [],
"db.new": ["Meta+N"],
"services.addService": ["Meta+N"],
// Pull Requests tool window (Create in its title bar, Refresh per tab) and the review's viewed toggle.
"github.createPullRequest": ["Meta+N"],
"github.refresh": ["Meta+R"],
"github.pullRequest.refresh": ["Meta+R"],
"github.pullRequest.timeline.refresh": ["Meta+R"],
"github.pullRequest.toggleViewed": ["Meta+Shift+S"],
"db.properties": ["Shift+Enter"],
"db.refresh": ["Meta+R"],
"db.disconnect": ["Meta+F2"],
+6
Переглянути файл
@@ -355,6 +355,12 @@ export const intellijWindows: Record<string, string[]> = {
"db.newDataSource": [],
"db.new": ["Alt+Insert"],
"services.addService": ["Alt+Insert"],
// Pull Requests tool window (Create in its title bar, Refresh per tab) and the review's viewed toggle.
"github.createPullRequest": ["Alt+Insert"],
"github.refresh": ["Ctrl+F5"],
"github.pullRequest.refresh": ["Ctrl+F5"],
"github.pullRequest.timeline.refresh": ["Ctrl+F5"],
"github.pullRequest.toggleViewed": ["Ctrl+Shift+S"],
"db.properties": ["Shift+Enter"],
"db.refresh": ["Ctrl+F5"],
"db.disconnect": ["Ctrl+F2"],
+5
Переглянути файл
@@ -347,6 +347,11 @@ export const vscodeMacos: Record<string, string[]> = {
"db.newDataSource": [],
"db.new": [],
"services.addService": [],
"github.createPullRequest": [],
"github.refresh": [],
"github.pullRequest.refresh": [],
"github.pullRequest.timeline.refresh": [],
"github.pullRequest.toggleViewed": [],
"db.properties": [],
"db.refresh": [],
"db.disconnect": [],