From 47c8e2d2ca5a218f7b81c236a3597d74e2fb1568 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Fri, 23 Oct 2026 12:58:08 -0700 Subject: [PATCH] refactor(task-page): colocate repository selection modules (#32909) --- config/scripts/ci-shard-timings.json | 4 ++-- src/renderer/src/components/cmd-j/task-search-requests.ts | 2 +- .../src/components/task-page/github/ModeControls.tsx | 2 +- src/renderer/src/components/task-page/gitlab/Filters.tsx | 2 +- .../task-page-default-repo-selection.test.ts | 2 +- .../{ => task-page}/task-page-default-repo-selection.ts | 8 ++++---- .../task-page-initial-selection-scaling.test.tsx | 6 +++--- .../{ => task-page}/task-page-string-set-equality.ts | 0 .../src/components/task-project-source-combobox-model.ts | 2 +- .../src/components/task-project-source-combobox.tsx | 2 +- .../src/components/use-task-page-repo-selection.ts | 4 ++-- 11 files changed, 17 insertions(+), 17 deletions(-) rename src/renderer/src/components/{ => task-page}/task-page-default-repo-selection.test.ts (99%) rename src/renderer/src/components/{ => task-page}/task-page-default-repo-selection.ts (94%) rename src/renderer/src/components/{ => task-page}/task-page-initial-selection-scaling.test.tsx (92%) rename src/renderer/src/components/{ => task-page}/task-page-string-set-equality.ts (100%) diff --git a/config/scripts/ci-shard-timings.json b/config/scripts/ci-shard-timings.json index 20c6b813044..0ddeea0f045 100644 --- a/config/scripts/ci-shard-timings.json +++ b/config/scripts/ci-shard-timings.json @@ -8720,7 +8720,7 @@ "src/renderer/src/components/tab-group/workspace-tab-close-commands.floating-reclaim.test.ts": 1405, "src/renderer/src/components/task-page-cache-selectors.test.ts": 69, "src/renderer/src/components/task-page-checks-pill.test.ts": 39, - "src/renderer/src/components/task-page-default-repo-selection.test.ts": 54, + "src/renderer/src/components/task-page/task-page-default-repo-selection.test.ts": 54, "src/renderer/src/components/task-page-empty-state.test.ts": 62, "src/renderer/src/components/task-page-github-dialog-state-authority.test.ts": 67, "src/renderer/src/components/task-page-github-list-scroll-restore.test.ts": 163, @@ -8735,7 +8735,7 @@ "src/renderer/src/components/task-page-github-work-item-mutations.test.ts": 159, "src/renderer/src/components/task-page-github-work-item-status.test.ts": 37, "src/renderer/src/components/task-page-gitlab-task-filters.test.ts": 1370, - "src/renderer/src/components/task-page-initial-selection-scaling.test.tsx": 1587, + "src/renderer/src/components/task-page/task-page-initial-selection-scaling.test.tsx": 1587, "src/renderer/src/components/task-page-jira-board-detail-integration.test.tsx": 2017, "src/renderer/src/components/task-page-jira-board-sections.test.ts": 1498, "src/renderer/src/components/task-page-jira-board-transitions.test.ts": 49, diff --git a/src/renderer/src/components/cmd-j/task-search-requests.ts b/src/renderer/src/components/cmd-j/task-search-requests.ts index 130c34bc068..dea36f4cec7 100644 --- a/src/renderer/src/components/cmd-j/task-search-requests.ts +++ b/src/renderer/src/components/cmd-j/task-search-requests.ts @@ -19,7 +19,7 @@ import { normalizeVisibleTaskProviders, type TaskProvider } from '../../../../sh import type { Repo } from '../../../../shared/repo-types' import type { GlobalSettings } from '../../../../shared/global-settings-types' import type { PaletteFilterState } from './palette-filter' -import { getTaskEligibleRepos } from '../task-page-default-repo-selection' +import { getTaskEligibleRepos } from '../task-page/task-page-default-repo-selection' import { getRepoBackedProviderAvailability } from '../task-source-provider-availability' import { getTaskPageRepoSourceContext } from '../task-page-source-context' import { searchJiraIssuesByKeyOrText } from '../jira-key-or-text-search' diff --git a/src/renderer/src/components/task-page/github/ModeControls.tsx b/src/renderer/src/components/task-page/github/ModeControls.tsx index 5379b788b40..736db82584f 100644 --- a/src/renderer/src/components/task-page/github/ModeControls.tsx +++ b/src/renderer/src/components/task-page/github/ModeControls.tsx @@ -1,7 +1,7 @@ import type { TaskPageComposerActionsModel } from '../../use-task-page-composer-actions' import { cn } from '@/lib/utils' import TaskProjectSourceCombobox from '@/components/task-project-source-combobox' -import { normalizeTaskRepoSelection } from '@/components/task-page-default-repo-selection' +import { normalizeTaskRepoSelection } from '@/components/task-page/task-page-default-repo-selection' import { toast } from 'sonner' import { translate } from '@/i18n/i18n' import { Tooltip, TooltipTrigger, TooltipContent } from '@/components/ui/tooltip' diff --git a/src/renderer/src/components/task-page/gitlab/Filters.tsx b/src/renderer/src/components/task-page/gitlab/Filters.tsx index dfb186f0e5f..086f91b4505 100644 --- a/src/renderer/src/components/task-page/gitlab/Filters.tsx +++ b/src/renderer/src/components/task-page/gitlab/Filters.tsx @@ -1,7 +1,7 @@ import type { TaskPageComposerActionsModel } from '../../use-task-page-composer-actions' import { cn } from '@/lib/utils' import TaskProjectSourceCombobox from '@/components/task-project-source-combobox' -import { normalizeTaskRepoSelection } from '@/components/task-page-default-repo-selection' +import { normalizeTaskRepoSelection } from '@/components/task-page/task-page-default-repo-selection' import { toast } from 'sonner' import { translate } from '@/i18n/i18n' import { Tooltip, TooltipTrigger, TooltipContent } from '@/components/ui/tooltip' diff --git a/src/renderer/src/components/task-page-default-repo-selection.test.ts b/src/renderer/src/components/task-page/task-page-default-repo-selection.test.ts similarity index 99% rename from src/renderer/src/components/task-page-default-repo-selection.test.ts rename to src/renderer/src/components/task-page/task-page-default-repo-selection.test.ts index e62121d0ff4..8e72b22873c 100644 --- a/src/renderer/src/components/task-page-default-repo-selection.test.ts +++ b/src/renderer/src/components/task-page/task-page-default-repo-selection.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import type { Repo } from '../../../shared/repo-types' +import type { Repo } from '../../../../shared/repo-types' import { getDefaultTaskRepoSelection, getTaskEligibleRepos, diff --git a/src/renderer/src/components/task-page-default-repo-selection.ts b/src/renderer/src/components/task-page/task-page-default-repo-selection.ts similarity index 94% rename from src/renderer/src/components/task-page-default-repo-selection.ts rename to src/renderer/src/components/task-page/task-page-default-repo-selection.ts index 96af4192883..bbadbbb1b64 100644 --- a/src/renderer/src/components/task-page-default-repo-selection.ts +++ b/src/renderer/src/components/task-page/task-page-default-repo-selection.ts @@ -1,11 +1,11 @@ -import { getRepoExecutionHostId, LOCAL_EXECUTION_HOST_ID } from '../../../shared/execution-host' +import { getRepoExecutionHostId, LOCAL_EXECUTION_HOST_ID } from '../../../../shared/execution-host' import { getProjectIdentityKey, hasProjectRemoteIdentity, isProjectRemoteIdentityPending -} from '../../../shared/project-host-setup-projection' -import { isGitRepoKind } from '../../../shared/repo-kind' -import type { Repo } from '../../../shared/repo-types' +} from '../../../../shared/project-host-setup-projection' +import { isGitRepoKind } from '../../../../shared/repo-kind' +import type { Repo } from '../../../../shared/repo-types' export type TaskProjectPickerGroup = { projectKey: string diff --git a/src/renderer/src/components/task-page-initial-selection-scaling.test.tsx b/src/renderer/src/components/task-page/task-page-initial-selection-scaling.test.tsx similarity index 92% rename from src/renderer/src/components/task-page-initial-selection-scaling.test.tsx rename to src/renderer/src/components/task-page/task-page-initial-selection-scaling.test.tsx index 84b8cb044e1..2005be91b13 100644 --- a/src/renderer/src/components/task-page-initial-selection-scaling.test.tsx +++ b/src/renderer/src/components/task-page/task-page-initial-selection-scaling.test.tsx @@ -1,8 +1,8 @@ import { describe, expect, it } from 'vitest' import { renderToString } from 'react-dom/server' -import type { Repo } from '../../../shared/repo-types' -import type { TaskPageStoreBindingsModel } from './use-task-page-store-bindings' -import { useTaskPageRepoSelection } from './use-task-page-repo-selection' +import type { Repo } from '../../../../shared/repo-types' +import type { TaskPageStoreBindingsModel } from '../use-task-page-store-bindings' +import { useTaskPageRepoSelection } from '../use-task-page-repo-selection' function resolveSelection(repos: Repo[], persisted: string[], preferred?: string) { let selected: readonly string[] = [] diff --git a/src/renderer/src/components/task-page-string-set-equality.ts b/src/renderer/src/components/task-page/task-page-string-set-equality.ts similarity index 100% rename from src/renderer/src/components/task-page-string-set-equality.ts rename to src/renderer/src/components/task-page/task-page-string-set-equality.ts diff --git a/src/renderer/src/components/task-project-source-combobox-model.ts b/src/renderer/src/components/task-project-source-combobox-model.ts index 8229014e362..a5913754443 100644 --- a/src/renderer/src/components/task-project-source-combobox-model.ts +++ b/src/renderer/src/components/task-project-source-combobox-model.ts @@ -1,6 +1,6 @@ import { getRepoExecutionHostId } from '../../../shared/execution-host' import type { Repo } from '../../../shared/repo-types' -import type { TaskProjectPickerGroup } from './task-page-default-repo-selection' +import type { TaskProjectPickerGroup } from './task-page/task-page-default-repo-selection' export function selectedTaskProjectGroups( groups: readonly TaskProjectPickerGroup[], diff --git a/src/renderer/src/components/task-project-source-combobox.tsx b/src/renderer/src/components/task-project-source-combobox.tsx index 555089e75f7..82ba3bc7a5c 100644 --- a/src/renderer/src/components/task-project-source-combobox.tsx +++ b/src/renderer/src/components/task-project-source-combobox.tsx @@ -8,7 +8,7 @@ import { isRepoSearchQueryTooLarge, searchRepos } from '@/lib/repo-search' import { cn } from '@/lib/utils' import { translate } from '@/i18n/i18n' import type { Repo } from '../../../shared/repo-types' -import type { TaskProjectPickerGroup } from './task-page-default-repo-selection' +import type { TaskProjectPickerGroup } from './task-page/task-page-default-repo-selection' import { getSelectedTaskProjectSource, hasMultipleTaskProjectHosts, diff --git a/src/renderer/src/components/use-task-page-repo-selection.ts b/src/renderer/src/components/use-task-page-repo-selection.ts index c3895139746..1b792786b52 100644 --- a/src/renderer/src/components/use-task-page-repo-selection.ts +++ b/src/renderer/src/components/use-task-page-repo-selection.ts @@ -5,8 +5,8 @@ import { normalizeTaskRepoSelection, getDefaultTaskRepoSelection, getTaskProjectPickerGroups -} from '@/components/task-page-default-repo-selection' -import { areStringSetsEqual } from '@/components/task-page-string-set-equality' +} from '@/components/task-page/task-page-default-repo-selection' +import { areStringSetsEqual } from '@/components/task-page/task-page-string-set-equality' import { buildSelectedReposKey } from '@/components/task-page-work-item-pagination' import { normalizeVisibleTaskProviders,