From 45209a54cd46bcf88a3a700bbfe5bba3eae4483e Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Fri, 29 May 2026 02:14:15 -0700 Subject: [PATCH] Remove static feature tour step repair effects (#3054) * Remove static feature tour step repair effects * Record feature tour effect cleanup audit --- docs/reference/react-performance-audit.md | 6 ++++-- .../feature-wall/FeatureWallTourSurface.tsx | 16 ---------------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/docs/reference/react-performance-audit.md b/docs/reference/react-performance-audit.md index be55d58d5..0658e6132 100644 --- a/docs/reference/react-performance-audit.md +++ b/docs/reference/react-performance-audit.md @@ -47,7 +47,7 @@ Initial inventory: ## Coverage Ledger -Current count after low-risk PRs #3038, #3041, #3042, #3044, #3051, #3052, and #3053: 962 Effect hook call sites. +Current count after low-risk PRs #3038, #3041, #3042, #3044, #3051, #3052, #3053, and #3054: 959 Effect hook call sites. | Area | Files / signal | Scan status | Notes | | ------------------------------ | -------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | @@ -87,6 +87,7 @@ These are candidate batches, not final conclusions. Each item needs code inspect | PR M | Status-bar account menus | Extra render pass from closing Claude/Codex account submenus in Effects after the provider menu closes. | `StatusBar.tsx` covered by #3051 | Low | | PR N | Browser tab favicon fallback | Extra render pass from resetting failed favicon state in an Effect after tab favicon identity changes. | `BrowserTab.tsx` covered by #3052 | Low | | PR O | Workspace title rename draft | Redundant draft sync Effect runs while the inline title rename input is not mounted. | `WorktreeTitleInlineRename.tsx` covered by #3053 | Low | +| PR P | Feature-wall tour static substep repair | Three no-op Effects scan static step arrays and repair ids that are only written from those arrays. | `FeatureWallTourSurface.tsx` covered by #3054 | Low | ## Merge Risk Scale @@ -106,7 +107,8 @@ These are candidate batches, not final conclusions. Each item needs code inspect | #3044 | `nwparker/react-perf-low-risk-2` | Diff note card removes saved-body-to-draft mirror Effect | Low | Merged | `pnpm exec oxlint src/renderer/src/components/diff-comments/DiffCommentCard.tsx`; `pnpm run typecheck:web`. | | #3051 | `nwparker/react-perf-low-risk-3` | Status-bar account submenus collapse in provider menu open-change handlers | Low | Merged | `pnpm exec oxlint src/renderer/src/components/status-bar/StatusBar.tsx`; `pnpm run typecheck:web`. | | #3052 | `nwparker/react-perf-low-risk-4` | Browser tab favicon failure reset happens during render for new favicon IDs | Low | Merged | `pnpm exec oxlint src/renderer/src/components/tab-bar/BrowserTab.tsx`; `pnpm run typecheck:web`. | -| #3053 | `nwparker/react-perf-low-risk-5` | Inline workspace-title rename removes inactive draft sync Effect | Low | Open | `pnpm exec oxlint src/renderer/src/components/sidebar/WorktreeTitleInlineRename.tsx`; `pnpm run typecheck:web`. | +| #3053 | `nwparker/react-perf-low-risk-5` | Inline workspace-title rename removes inactive draft sync Effect | Low | Merged | `pnpm exec oxlint src/renderer/src/components/sidebar/WorktreeTitleInlineRename.tsx`; `pnpm run typecheck:web`. | +| #3054 | `nwparker/react-perf-low-risk-6` | Feature-wall tour removes static substep id repair Effects | Low | Open | `pnpm exec oxlint src/renderer/src/components/feature-wall/FeatureWallTourSurface.tsx`; `pnpm run typecheck:web`. | ## Reproduction Commands diff --git a/src/renderer/src/components/feature-wall/FeatureWallTourSurface.tsx b/src/renderer/src/components/feature-wall/FeatureWallTourSurface.tsx index 3d0b91da8..9363415fd 100644 --- a/src/renderer/src/components/feature-wall/FeatureWallTourSurface.tsx +++ b/src/renderer/src/components/feature-wall/FeatureWallTourSurface.tsx @@ -110,22 +110,6 @@ export function FeatureWallTourSurface({ getDepthSummary: completion.getTourDepthSummary }) - useEffect(() => { - if (!agentsSteps.some((s) => s.id === agentsStepId)) { - setAgentsStepId(agentsSteps[0]?.id ?? 'statuses') - } - }, [agentsSteps, agentsStepId]) - useEffect(() => { - if (!workbenchSteps.some((s) => s.id === workbenchStepId)) { - setWorkbenchStepId(workbenchSteps[0]?.id ?? 'terminal') - } - }, [workbenchSteps, workbenchStepId]) - useEffect(() => { - if (!reviewSteps.some((s) => s.id === reviewStepId)) { - setReviewStepId(reviewSteps[0]?.id ?? 'notes') - } - }, [reviewSteps, reviewStepId]) - const agentsActiveStep = selected.id === 'agents-orchestration' ? (agentsSteps.find((s) => s.id === agentsStepId) ?? agentsSteps[0] ?? null)