From 4a3bc23670e0324d71fa7b855ea91ae408a8fb2c Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Mon, 31 Aug 2026 00:20:19 -0700 Subject: [PATCH] fix(lint): preserve TaskPage effect suppressions after split --- config/scripts/check-changed-code-quality.mjs | 7 +++++++ package.json | 9 +++++++++ .../src/components/use-task-page-github-issue-draft.ts | 1 - .../src/components/use-task-page-jira-creation-state.ts | 2 +- .../components/use-task-page-linear-creation-state.ts | 1 - 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/config/scripts/check-changed-code-quality.mjs b/config/scripts/check-changed-code-quality.mjs index c7d07a927e6..66d2549ea4d 100644 --- a/config/scripts/check-changed-code-quality.mjs +++ b/config/scripts/check-changed-code-quality.mjs @@ -24,6 +24,13 @@ export const OXLINT_SCANS = [ ] const SUPPRESSED_REACT_DOCTOR_DIAGNOSTICS = new Map([ + [ + 'react-doctor(no-adjust-state-on-prop-change)', + new Set([ + 'src/renderer/src/components/use-task-page-github-issue-draft.ts', + 'src/renderer/src/components/use-task-page-jira-creation-state.ts' + ]) + ], [ 'react-doctor(no-derived-state-effect)', new Set([ diff --git a/package.json b/package.json index 04623e54b33..2c053820a9d 100644 --- a/package.json +++ b/package.json @@ -310,6 +310,15 @@ "react-doctor/no-derived-state-effect" ] }, + { + "files": [ + "src/renderer/src/components/use-task-page-github-issue-draft.ts", + "src/renderer/src/components/use-task-page-jira-creation-state.ts" + ], + "rules": [ + "react-doctor/no-adjust-state-on-prop-change" + ] + }, { "files": [ "src/renderer/src/components/editor/combined-diff/browse-files/use-combined-diff-tree-navigation.ts", diff --git a/src/renderer/src/components/use-task-page-github-issue-draft.ts b/src/renderer/src/components/use-task-page-github-issue-draft.ts index 2cfdba9bbab..02037238234 100644 --- a/src/renderer/src/components/use-task-page-github-issue-draft.ts +++ b/src/renderer/src/components/use-task-page-github-issue-draft.ts @@ -1,4 +1,3 @@ -/* oxlint-disable react-doctor/no-adjust-state-on-prop-change -- Why: repo selection and session-only draft persistence intentionally synchronize dialog state from external cache/session state. */ import type { TaskPageGitHubCacheReconciliationModel } from './use-task-page-github-cache-reconciliation' import { useState, useMemo, useEffect } from 'react' import type { GitHubAssignableUser } from '../../../shared/github/pull-request-types' diff --git a/src/renderer/src/components/use-task-page-jira-creation-state.ts b/src/renderer/src/components/use-task-page-jira-creation-state.ts index 42975aeea0b..542ceffd4f9 100644 --- a/src/renderer/src/components/use-task-page-jira-creation-state.ts +++ b/src/renderer/src/components/use-task-page-jira-creation-state.ts @@ -1,4 +1,3 @@ -/* oxlint-disable react-doctor/no-adjust-state-on-prop-change -- Why: provider runtime changes intentionally clear stale Jira/Linear composer state. */ import type { TaskPageGitHubMutationStateModel } from './use-task-page-github-mutation-state' import { useState, useRef, useEffect } from 'react' import type { JiraIssueType, JiraCreateField } from '../../../shared/jira-types' @@ -49,6 +48,7 @@ export function useTaskPageJiraCreationStatePrelude(model: TaskPageGitHubMutatio writeDraft: writeNewJiraIssueDraft }) const previousProviderRuntimeContextKeyRef = useRef(providerRuntimeContextKey) + // Why: provider changes must clear dependent composer state before stale values can be submitted. useEffect(() => { if (previousProviderRuntimeContextKeyRef.current === providerRuntimeContextKey) { return diff --git a/src/renderer/src/components/use-task-page-linear-creation-state.ts b/src/renderer/src/components/use-task-page-linear-creation-state.ts index af25fc8663f..f7aef435c0e 100644 --- a/src/renderer/src/components/use-task-page-linear-creation-state.ts +++ b/src/renderer/src/components/use-task-page-linear-creation-state.ts @@ -1,4 +1,3 @@ -/* oxlint-disable react-doctor/no-adjust-state-on-prop-change, react-doctor/no-derived-state-effect -- Why: provider metadata and runtime IPC intentionally reset and hydrate dependent composer state. */ import type { TaskPageJiraListProjectionModel } from './use-task-page-jira-list-projection' import { useState, useMemo, useEffect, type SetStateAction } from 'react' import { useTeamMembers, useTeamLabels, useTeamStates } from '@/hooks/useIssueMetadata'