From ee24799e7cb54917fc2a847a90d971402518f359 Mon Sep 17 00:00:00 2001 From: Xiangzhe Date: Wed, 26 Aug 2026 09:25:21 -0300 Subject: [PATCH] chore(quality): freeze the 215 pre-existing eslint errors the CI cache was hiding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Lint job restores a persisted .eslintcache whose key hashes config/quality/eslint-suppressions.json. Touching that file to prune a stale entry changed the key, the tree was relinted cold, and 215 errors across 126 tracked files surfaced at once. None of them are new: they reproduce on 091e2ba4da and were simply being served from cache for every file a PR did not happen to touch. See #11600. Freezing them trades an accidental hiding place for an explicit, versioned record: new violations now fail the gate, old ones are listed by file and rule and can be drained deliberately. Fixing 215 react-hooks findings across 126 dashboard components mid-release — none of which have a test pinning their current behaviour — would be a far worse trade than recording them. Scope was filtered on purpose rather than using --suppress-all, which wanted to freeze 846 violations across 246 paths including _artifacts/, .playwright-cli/ and output/ — none of which exist in a CI checkout — and among them 28 no-new-func, the Hard Rule #3 rule. Only git-tracked files are frozen here, and no-eval / no-new-func / no-implied-eval / no-restricted-imports are excluded by construction: had any appeared in a tracked file the script would have reported it instead of suppressing it. None did. Verified over the tracked file set only (the CI checkout's scope): 0 errors. --- config/quality/eslint-suppressions.json | 648 ++++++++++++++++++++++++ 1 file changed, 648 insertions(+) diff --git a/config/quality/eslint-suppressions.json b/config/quality/eslint-suppressions.json index 81dc80bdee..3454e0c72d 100644 --- a/config/quality/eslint-suppressions.json +++ b/config/quality/eslint-suppressions.json @@ -898,11 +898,43 @@ }, "react-hooks/exhaustive-deps": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 2 } }, "src/app/(dashboard)/dashboard/a2a/page.tsx": { "@typescript-eslint/no-unused-vars": { "count": 6 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/acp-agents/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/activity/ActivityFeedClient.tsx": { + "react-hooks/purity": { + "count": 1 + }, + "react-hooks/refs": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/analytics/CacheHealthTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/analytics/ComboHealthTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx": { @@ -910,9 +942,48 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/analytics/ProviderUtilizationTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/analytics/RouteExplainabilityTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, "src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/immutability": { + "count": 4 + }, + "react-hooks/preserve-manual-memoization": { + "count": 2 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/audit/A2aAuditTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/audit/ComplianceTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/audit/McpAuditTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/batch/components/wizard/CostEstimateStep.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/batch/components/wizard/InputStep.tsx": { @@ -920,6 +991,34 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/batch/components/wizard/JsonlValidationStep.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/batch/files/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cache/components/CacheEntriesTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cache/components/ReasoningCacheTab.tsx": { + "react-hooks/purity": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cache/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx": { "no-restricted-syntax": { "count": 4 @@ -931,11 +1030,54 @@ }, "react-hooks/exhaustive-deps": { "count": 1 + }, + "react-hooks/immutability": { + "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/ClaudeClassifierCompatToggle.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/ClaudeToolCard.tsx": { + "react-hooks/immutability": { + "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/CliProfileAutoSyncToggles.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/immutability": { + "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/CliproxyapiToolCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/CodexToolCard.tsx": { + "react-hooks/immutability": { + "count": 4 + }, + "react-hooks/set-state-in-effect": { + "count": 2 } }, "src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx": { @@ -943,14 +1085,55 @@ "count": 3 } }, + "src/app/(dashboard)/dashboard/cli-code/components/DroidToolCard.tsx": { + "react-hooks/immutability": { + "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/GrokBuildToolCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, "src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx": { "@typescript-eslint/no-unused-vars": { "count": 2 + }, + "react-hooks/immutability": { + "count": 1 + }, + "react-hooks/purity": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx": { "@typescript-eslint/no-unused-vars": { "count": 2 + }, + "react-hooks/immutability": { + "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/OpenClawToolCard.tsx": { + "react-hooks/immutability": { + "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/combos/ComboControlCenterClient.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/combos/page.tsx": { @@ -964,11 +1147,31 @@ "count": 7 } }, + "src/app/(dashboard)/dashboard/conductor/ConductorPageClient.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/conductor/FaroChat.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/conversations/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, "src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 } }, + "src/app/(dashboard)/dashboard/costs/components/ApiKeyUsageLimitCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/costs/costExplorerUtils.ts": { "no-restricted-syntax": { "count": 1 @@ -982,11 +1185,77 @@ "src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePoolUsage.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/costs/quota-share/hooks/usePools.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/costs/useApiKeyUsageLimits.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/discovery/DiscoveryPageClient.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.tsx": { + "react-hooks/immutability": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/endpoint/components/A2ADashboard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/endpoint/components/MCPDashboard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/endpoint/components/NotionSourceCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/endpoint/components/ObsidianSourceCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/free-provider-rankings/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/health/ProviderHealthAutopilotCard.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/health/ProviderHealthMatrixCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/health/TelemetryCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/health/page.tsx": { @@ -997,6 +1266,34 @@ "src/app/(dashboard)/dashboard/mcp/page.tsx": { "@typescript-eslint/no-unused-vars": { "count": 2 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/memory/components/EditMemoryModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/memory/components/tabs/MemoriesTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/memory/hooks/useEngineStatus.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/memory/hooks/useMemorySettings.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/onboarding/page.tsx": { @@ -1014,6 +1311,24 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/plugins/[name]/config/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/plugins/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/provider-stats/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + }, + "react-hooks/static-components": { + "count": 7 + } + }, "src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx": { "@typescript-eslint/no-unused-vars": { "count": 2 @@ -1044,21 +1359,64 @@ "count": 3 } }, + "src/app/(dashboard)/dashboard/providers/[id]/components/CustomModelsSection.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/providers/[id]/components/EmptyConnectionsPlaceholder.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 } }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ModelCompatPopover.tsx": { + "react-hooks/refs": { + "count": 4 + }, + "react-hooks/set-state-in-effect": { + "count": 3 + } + }, "src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelsSection.tsx": { "@typescript-eslint/no-unused-vars": { "count": 3 } }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ProviderCcAliasSection.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ProviderInterceptionSection.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ProviderParamFilterSection.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/VolcengineConnectModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/providers/[id]/components/__tests__/CursorAgentNudge.test.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 } }, + "src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditCompatibleNodeModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/modals/EditConnectionModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1077,11 +1435,57 @@ "src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderSettings.ts": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/components/AddCompatibleProviderModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/hooks/useProviderModels.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/hooks/useProviderUrlFilters.ts": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/hooks/useRiskAcknowledged.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/providers/page.tsx": { "@typescript-eslint/no-unused-vars": { "count": 4 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/services/components/CliproxyAccountHealthCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/services/components/DarioAccountPanel.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/services/components/NinerouterModelList.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/providers/utils/buildCurl.ts": { @@ -1089,6 +1493,34 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/radar/RadarCatalogTable.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/radar/intel/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/radar/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/radar/setup/page.tsx": { + "react-hooks/preserve-manual-memoization": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/relay/RelayProxyClient.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/resilience/connections/components/ConnectionDetail.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1099,6 +1531,19 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/resilience/connections/components/ResilienceConnectionsClient.tsx": { + "react-hooks/purity": { + "count": 1 + }, + "react-hooks/refs": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/runtime/components/ModelCooldownsCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1114,6 +1559,11 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/settings/components/AccessTokensTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx": { "@next/next/no-img-element": { "count": 4 @@ -1122,6 +1572,9 @@ "src/app/(dashboard)/dashboard/settings/components/AuthzSection.tsx": { "no-restricted-syntax": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx": { @@ -1139,9 +1592,22 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/settings/components/FallbackChainsEditor.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/IPFilterSection.tsx": { + "react-hooks/immutability": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/settings/components/MitmProxyTab.tsx": { "@next/next/no-html-link-for-pages": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx": { @@ -1152,6 +1618,9 @@ "src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/settings/components/ModelLockoutCard.tsx": { @@ -1159,9 +1628,37 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/settings/components/ModelsDevSyncTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/OneproxyTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/PayloadRulesTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/PoliciesPanel.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, "src/app/(dashboard)/dashboard/settings/components/ProviderAccountRoutingCard.tsx": { "react-hooks/exhaustive-deps": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx": { @@ -1169,11 +1666,21 @@ "count": 3 } }, + "src/app/(dashboard)/dashboard/settings/components/ResilienceTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 7 + } + }, "src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 } }, + "src/app/(dashboard)/dashboard/settings/components/RoutingStrategyCard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1187,6 +1694,19 @@ "src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/proxy/GlobalConfigTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/proxy/SubscriptionTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/settings/components/useProxyPoolModal.ts": { @@ -1199,6 +1719,21 @@ "count": 3 } }, + "src/app/(dashboard)/dashboard/tools/agent-bridge/components/ModelSelectorModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/tools/agent-bridge/components/SetupWizard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/tools/traffic-inspector/components/CustomHostsManager.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestStreamingList.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1209,6 +1744,11 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/translator/components/MonitorTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/translator/components/ResultNarrated.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1224,6 +1764,11 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx": { + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.tsx": { "@typescript-eslint/no-unused-vars": { "count": 3 @@ -1234,6 +1779,11 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/useCodexResetCreditRedemption.ts": { + "react-hooks/immutability": { + "count": 2 + } + }, "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -1242,11 +1792,22 @@ "src/app/(dashboard)/dashboard/usage/components/RateLimitStatus.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/usage/components/SessionsTab.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/webhooks/WebhooksPageClient.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/app/(dashboard)/dashboard/webhooks/__tests__/webhook-wizard.test.tsx": { @@ -1254,6 +1815,27 @@ "count": 1 } }, + "src/app/(dashboard)/dashboard/webhooks/components/AddWebhookWizard.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/webhooks/components/WebhookDeliveriesPanel.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/app/(dashboard)/home/ProviderQuotaWidget.tsx": { + "react-hooks/purity": { + "count": 1 + }, + "react-hooks/refs": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/(dashboard)/home/page.tsx": { "no-restricted-imports": { "count": 1 @@ -2097,11 +2679,21 @@ "count": 1 } }, + "src/app/global-error.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/app/login/page.tsx": { "@typescript-eslint/no-unused-vars": { "count": 3 } }, + "src/app/status/page.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/domain/assessment/assessor.ts": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -2839,6 +3431,9 @@ "src/shared/components/KiroAuthModal.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/shared/components/LanguageSelector.tsx": { @@ -2846,6 +3441,11 @@ "count": 1 } }, + "src/shared/components/ModelSelectModal.tsx": { + "react-hooks/set-state-in-effect": { + "count": 4 + } + }, "src/shared/components/NotificationToast.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -2854,16 +3454,28 @@ "src/shared/components/OAuthModal.tsx": { "@typescript-eslint/no-unused-vars": { "count": 3 + }, + "react-hooks/set-state-in-effect": { + "count": 4 } }, "src/shared/components/PricingModal.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 + }, + "react-hooks/immutability": { + "count": 1 } }, "src/shared/components/ProxyConfigModal.tsx": { "react-hooks/exhaustive-deps": { "count": 1 + }, + "react-hooks/immutability": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/shared/components/ProxyLogDetail.tsx": { @@ -2871,6 +3483,16 @@ "count": 1 } }, + "src/shared/components/ReasoningRoutingRules.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/shared/components/RequestLoggerDetail.sections.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/shared/components/RequestLoggerV2.tsx": { "@typescript-eslint/no-unused-vars": { "count": 3 @@ -2890,6 +3512,17 @@ }, "@typescript-eslint/no-unused-vars": { "count": 2 + }, + "react-hooks/set-state-in-effect": { + "count": 2 + } + }, + "src/shared/components/UsageStats.tsx": { + "react-hooks/preserve-manual-memoization": { + "count": 1 + }, + "react-hooks/set-state-in-effect": { + "count": 1 } }, "src/shared/components/analytics/charts.tsx": { @@ -2902,6 +3535,16 @@ "count": 1 } }, + "src/shared/components/analytics/useProviderDailyUsage.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, + "src/shared/components/compression/ComboCompressionModeSelect.tsx": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/shared/components/docs/CodeBlock.tsx": { "@typescript-eslint/no-unused-vars": { "count": 1 @@ -2937,6 +3580,11 @@ "count": 1 } }, + "src/shared/hooks/cli/useToolBatchStatuses.ts": { + "react-hooks/set-state-in-effect": { + "count": 1 + } + }, "src/shared/hooks/useTheme.ts": { "@typescript-eslint/no-unused-vars": { "count": 1