Keep opened issue details and edits in the selected repository (#24729)

Keeps a fork issue’s details, metadata and edits bound to the repository the user opened, including same-number issues in fork and upstream. Repairs selected-assignee leakage and delayed failed edits repainting another issue.

Fixes #24378

Incorporates and cross-reviews contributor PR #24379, including its source-resolver correction and regression material. Covers the contributor PR’s Project-row identity and retained-dialog mutation findings. The final published head passes focused tests, hidden macOS rendering and current CI; the callback-timing bot thread has an evidence-based response.

Co-authored-by: Katsuma Takehisa <k.takehisa@nissogr.com>
This commit is contained in:
Neil
2026-10-03 23:19:55 -07:00
committed by GitHub
co-authored by Katsuma Takehisa
parent 8267b578b2
commit ce07786266
58 changed files with 3045 additions and 372 deletions
@@ -11,8 +11,21 @@ export type GitHubApiRepositoryResolution =
const OWNER_SLUG_RE = GITHUB_OWNER_SLUG_RE
const REPOSITORY_SLUG_RE = /^[A-Za-z0-9._-]+$/
export function isValidGitHubApiRepository(repository: GitHubOwnerRepo): boolean {
export function isValidGitHubApiRepository(repository: unknown): repository is GitHubOwnerRepo {
if (
!repository ||
typeof repository !== 'object' ||
!('owner' in repository) ||
!('repo' in repository)
) {
return false
}
return (
typeof repository.owner === 'string' &&
typeof repository.repo === 'string' &&
(!('host' in repository) ||
repository.host === undefined ||
typeof repository.host === 'string') &&
OWNER_SLUG_RE.test(repository.owner) &&
REPOSITORY_SLUG_RE.test(repository.repo) &&
repository.repo !== '.' &&