diff --git a/notes/host-context-implementation-checklist.md b/notes/host-context-implementation-checklist.md index dfe31feba0c..d10ac563da8 100644 --- a/notes/host-context-implementation-checklist.md +++ b/notes/host-context-implementation-checklist.md @@ -270,4 +270,4 @@ Done means: reviewers and future agents can understand the vision, implementatio - [x] 2026-06-12: Aligned Automations manual-run disabled states with the backend run-target resolver so saved run contexts now disable Run Now when the project-host setup is missing or not ready, instead of failing after dispatch. Verified with focused automation availability tests, targeted oxlint, full `pnpm run typecheck`, and `git diff --check`. - [x] 2026-06-12: Routed GitHub drawer label/assignee/reviewer metadata reads through the same task source context as issue/PR mutations, including slug-addressed Project view rows and reviewer request/remove actions, so same-repo multi-host drawers do not fall back to the repo owner or focused runtime. Verified with a focused source-boundary test, targeted oxlint, full `pnpm run typecheck`, and `git diff --check`. - [x] 2026-06-13: Tightened runtime project-host setup mutations so older remote servers that advertise `project-host-setup.v1` but not `workspace-run-context.v1` are blocked before setup/clone/create/update/delete RPCs mutate server state; read-only hydration still degrades to repo-derived compatibility rows. Verified with focused repo capability tests, targeted oxlint, full `pnpm run typecheck`, and `git diff --check`. -- [x] 2026-06-13: Routed the full-page Pull Request metadata popovers through the PR repo owner host instead of ambient focused runtime state, so reviewer, label, and assignee reads align with the existing repo-owned mutation routing. Verified with a focused PR host-boundary test, targeted oxlint, full `pnpm run typecheck`, and `git diff --check`. +- [x] 2026-06-13: Routed the full-page Pull Request metadata popovers and mention suggestions through the PR repo owner host instead of ambient focused runtime state, so reviewer, label, assignee, and comment-composer reads align with the existing repo-owned mutation routing. Verified with a focused PR host-boundary test, targeted oxlint, full `pnpm run typecheck`, and `git diff --check`. diff --git a/src/renderer/src/components/PullRequestPage.tsx b/src/renderer/src/components/PullRequestPage.tsx index 6d0e75e378d..159e9148b5d 100644 --- a/src/renderer/src/components/PullRequestPage.tsx +++ b/src/renderer/src/components/PullRequestPage.tsx @@ -2682,6 +2682,7 @@ function CommentCodeContext({ function ConversationTab({ item, repoPath, + repoId, body, comments, files, @@ -2729,7 +2730,10 @@ function ConversationTab({ const [bodySaving, setBodySaving] = useState(false) const bodyTextareaRef = useRef(null) const bodyTextareaFocusFrameRef = useRef(null) - const repoAssignees = useRepoAssignees(repoPath, item.repoId) + const repoOwnerSettings = useAppStore( + useShallow((s) => getSettingsForRepoRuntimeOwner(s, item.repoId ?? repoId ?? null)) + ) + const repoAssignees = useRepoAssignees(repoPath, item.repoId, repoOwnerSettings) const commentCounts = useMemo(() => getPRCommentAudienceCounts(comments), [comments]) const visibleComments = useMemo( () => filterPRCommentsByAudience(comments, commentFilter), diff --git a/src/renderer/src/components/pull-request-page-host-boundary.test.ts b/src/renderer/src/components/pull-request-page-host-boundary.test.ts index b0321dadf16..9c1148a51d8 100644 --- a/src/renderer/src/components/pull-request-page-host-boundary.test.ts +++ b/src/renderer/src/components/pull-request-page-host-boundary.test.ts @@ -40,4 +40,12 @@ describe('PullRequestPage host boundaries', () => { expect(section).toContain('useRepoAssigneesBySlug(') expect(section).toContain('repoOwnerSettings') }) + + it('routes PR mention metadata through the PR repo owner host', () => { + const source = componentSource('PullRequestPage.tsx') + const section = sourceBetween(source, 'function ConversationTab', 'const mentionOptions') + + expect(section).toContain('getSettingsForRepoRuntimeOwner(s, item.repoId ?? repoId ?? null)') + expect(section).toContain('useRepoAssignees(repoPath, item.repoId, repoOwnerSettings)') + }) })