feat: server-side GitHub search for issue/PR pickers (#1352)

Replace local-only filtering in GitHub issue/PR picker dialogs with
server-side GitHub Search API queries. Search text is sent as a query
parameter to the server, which uses the GitHub Search API
(issuesAndPullRequests endpoint) with repo: qualifiers including fork
network support. Results are debounced at 350ms to respect API rate
limits.

- Add query parameter to GitHubAPI issuesList/prsList interface
- Server routes use Search API when query is present, standard list
  endpoint when absent
- Fork networks handled via repo:owner/repo OR repo:owner/upstream
- PR search fetches full PR details after Search API for head/base/draft
  fields
- Remove local filter memos from all three picker dialogs
- Add debounced search effect with abort controller cleanup
- Update VS Code backend and webview API for parity
- Update search placeholders in all locales

Closes #1350

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Tom Rochette
2026-06-08 15:37:42 +03:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent 5589ca991a
commit 7b1b3167a4
16 changed files with 457 additions and 149 deletions
+4 -4
View File
@@ -513,8 +513,8 @@ export const dict: Record<I18nKey, string> = {
'session.githubIntegration.connect.title': 'Połącz z GitHub',
'session.githubIntegration.connect.description': 'Połącz zagadnienia lub pull requesty aby auto-wypełnić szczegóły drzewa pracy',
'session.githubIntegration.connect.action': 'Połącz GitHub',
'session.githubIntegration.search.issuesPlaceholder': 'Szukaj zagadnień lub wpisz #123...',
'session.githubIntegration.search.prsPlaceholder': 'Szukaj PR lub wpisz #456...',
'session.githubIntegration.search.issuesPlaceholder': 'Szukaj używając składni wyszukiwania kodu GitHub',
'session.githubIntegration.search.prsPlaceholder': 'Szukaj używając składni wyszukiwania kodu GitHub',
'session.githubIntegration.empty.noIssuesFound': 'Nie znaleziono zagadnień',
'session.githubIntegration.empty.noPullRequestsFound': 'Nie znaleziono pull requestów',
'session.githubIntegration.actions.loadMore': 'Załaduj więcej',
@@ -2227,7 +2227,7 @@ export const dict: Record<I18nKey, string> = {
'session.githubIssuePicker.error.runtimeUnavailable': 'API środowiska GitHub jest niedostępne',
'session.githubIssuePicker.loading.issues': 'Ładowanie zgłoszeń...',
'session.githubIssuePicker.loading.more': 'Ładowanie...',
'session.githubIssuePicker.searchPlaceholder': 'Szukaj po tytule lub #123, albo wklej URL zgłoszenia',
'session.githubIssuePicker.searchPlaceholder': 'Szukaj używając składni wyszukiwania kodu GitHub',
'session.githubIssuePicker.title.createSession': 'Nowa sesja ze zgłoszenia GitHub',
'session.githubIssuePicker.title.select': 'Połącz zgłoszenie GitHub',
'session.githubIssuePicker.toast.loadIssueDetailsFailed': 'Nie udało się załadować szczegółów zgłoszenia',
@@ -2255,7 +2255,7 @@ export const dict: Record<I18nKey, string> = {
'session.githubPrPicker.includeDiffAria': 'Dołącz diff PR do załączonego kontekstu',
'session.githubPrPicker.loading.more': 'Ładowanie...',
'session.githubPrPicker.loading.pullRequests': 'Ładowanie pull requestów...',
'session.githubPrPicker.searchPlaceholder': 'Szukaj po tytule lub #123, albo wklej URL pull requesta',
'session.githubPrPicker.searchPlaceholder': 'Szukaj używając składni wyszukiwania kodu GitHub',
'session.githubPrPicker.title': 'Połącz pull request GitHub',
'session.githubPrPicker.toast.loadDetailsFailed': 'Nie udało się załadować szczegółów pull requesta',
'session.githubPrPicker.toast.loadMoreFailed': 'Nie udało się załadować kolejnych pull requestów',