diff --git a/docs/reference/react-performance-audit.md b/docs/reference/react-performance-audit.md index 50c9c0545..b366040a1 100644 --- a/docs/reference/react-performance-audit.md +++ b/docs/reference/react-performance-audit.md @@ -49,7 +49,7 @@ Initial inventory: Current count after low-risk PRs #3038, #3041, #3042, #3044, #3051, #3052, #3053, #3054, #3055, #3056, #3058, #3059, #3060, #3062, #3063, #3064, #3065, #3066, #3067, #3068, #3069, #3083, #3087, #3091, #3100, #3104, #3122, #3160, #3164, #3166, #3223, #3244, #3271, #3273, #3294, #3296, #3298, #3300, and #3330, plus upstream tab-entry changes #3011 and #3026: 911 Effect hook call sites. -Open medium-risk PRs #3070, #3073, #3077, #3089, #3093, #3102, #3108, #3110, #3112, #3118, #3124, #3126, #3128, #3130, #3132, #3134, #3142, #3144, #3146, #3148, #3150, #3152, #3154, #3170, #3176, #3184, #3186, #3188, #3192, #3195, #3198, #3200, #3202, #3206, #3218, #3220, #3226, #3228, #3234, #3240, #3242, #3247, #3257, #3269, #3275, #3277, #3283, #3289, #3292, #3303, #3311, #3314, #3316, #3318, #3322, #3328, #3333, #3338, #3340, #3344, #3347, and #3349 each project to 910 Effect hook call sites on the current merged baseline; open medium-risk PRs #3097, #3106, #3116, #3120, #3136, #3138, #3180, #3210, #3214, #3238, #3255, #3261, #3281, #3285, and #3287 each project to 909; open medium-risk PRs #3114, #3168, and #3259 each project to 908; open medium-risk PRs #3095, #3140, and #3230 each project to 907; open medium-risk PR #3326 projects to 902; open medium-risk PR #3079 projects to 901; open high-risk PRs #3157, #3212, #3253, and #3351 each project to 910; open high-risk PR #3267 projects to 909; open high-risk PR #3075 projects to 907; open high-risk PR #3250 projects to 906; and open high-risk PR #3081 projects to 903. These are not counted in the merged baseline until reviewed and merged. +Open medium-risk PRs #3070, #3073, #3077, #3089, #3093, #3102, #3108, #3110, #3112, #3118, #3124, #3126, #3128, #3130, #3132, #3134, #3142, #3144, #3146, #3148, #3150, #3152, #3154, #3170, #3176, #3184, #3186, #3188, #3192, #3195, #3198, #3200, #3202, #3206, #3218, #3220, #3226, #3228, #3234, #3240, #3242, #3247, #3257, #3269, #3275, #3277, #3283, #3289, #3292, #3303, #3311, #3314, #3316, #3318, #3322, #3328, #3333, #3338, #3340, #3344, #3347, #3349, and #3354 each project to 910 Effect hook call sites on the current merged baseline; open medium-risk PRs #3097, #3106, #3116, #3120, #3136, #3138, #3180, #3210, #3214, #3238, #3255, #3261, #3281, #3285, and #3287 each project to 909; open medium-risk PRs #3114, #3168, and #3259 each project to 908; open medium-risk PRs #3095, #3140, and #3230 each project to 907; open medium-risk PR #3326 projects to 902; open medium-risk PR #3079 projects to 901; open high-risk PRs #3157, #3212, #3253, and #3351 each project to 910; open high-risk PR #3267 projects to 909; open high-risk PR #3075 projects to 907; open high-risk PR #3250 projects to 906; and open high-risk PR #3081 projects to 903. These are not counted in the merged baseline until reviewed and merged. | Area | Files / signal | Scan status | Notes | | ------------------------------ | -------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | @@ -57,7 +57,7 @@ Open medium-risk PRs #3070, #3073, #3077, #3089, #3093, #3102, #3108, #3110, #31 | Terminal / PTY | `components/Terminal.tsx`, `components/terminal-pane/**`, `components/terminal/**` | Inventory complete, manual review pending | Mobile driver overlay collapse repair covered by #3170; floating workspace first-open bounds normalization covered by #3269; unused legacy terminal shell/shortcut/hook files deleted by #3271; terminal tab rename focus covered by #3314 without PTY protocol changes; terminal search focus covered by #3344. High-risk area: xterm lifecycle, scrollback, remote/mobile parity, focus, WebGL, resize. | | Renderer mobile page | `components/mobile/**` | Inventory complete, manual review in progress | Mobile pairing page stage repair covered by #3180. Continue checking QR generation, mobile-page IPC, and paired-device polling. | | Browser pane | `components/browser-pane/**` | Inventory complete, manual review in progress | Highest Effect density: 62 sites in `BrowserPane.tsx`. Browser ref mirrors covered by #3081; BrowserFind debounced-query state covered by #3275. Continue with driver sync, address bar derived state, remaining find state, webview lifetime. | -| Editor / markdown / Monaco | `components/editor/**` | Inventory complete, manual review in progress | Untitled rename reset covered by #3083; copy feedback timers covered by #3097; combined diff local state repairs covered by #3120; combined diff note-copy timer covered by #3218; DiffViewer first-diff auto-scroll reset covered by #3257; editor path-copy timer covered by #3277; PDF find open/reset Effect covered by #3289; editor tab rename focus covered by #3303; rich markdown link bubble focus covered by #3316; image preview source derivation covered by #3318; markdown preview search focus covered by #3322; rich markdown menu selection repair covered by #3326; editor header rename focus covered by #3328; diff-comment popover focus covered by #3333; markdown annotation composer focus covered by #3338. Check editor model cleanup, preview scroll restore, search debounce, generated decorations. | +| Editor / markdown / Monaco | `components/editor/**` | Inventory complete, manual review in progress | Untitled rename reset covered by #3083; copy feedback timers covered by #3097; combined diff local state repairs covered by #3120; combined diff note-copy timer covered by #3218; DiffViewer first-diff auto-scroll reset covered by #3257; editor path-copy timer covered by #3277; PDF find open/reset Effect covered by #3289; editor tab rename focus covered by #3303; rich markdown link bubble focus covered by #3316; image preview source derivation covered by #3318; markdown preview search focus covered by #3322; rich markdown menu selection repair covered by #3326; editor header rename focus covered by #3328; diff-comment popover focus covered by #3333; markdown annotation composer focus covered by #3338; diff-comment card resize covered by #3354. Check editor model cleanup, preview scroll restore, search debounce, generated decorations. | | Sidebar / worktrees | `components/sidebar/**` | Inventory complete, manual review in progress | Orca hook trust checkbox reset covered by #3089; delete dialog one-shot checkbox reset covered by #3134; Add Repo clone destination auto-fill covered by #3150; sidebar live-width mirror covered by #3160; worktree selection pruning covered by #3166; SSH reconnect prompts covered by #3267; nested repo indeterminate checkbox covered by #3294; workspace title rename focus covered by #3296; workspace title editing notification covered by #3298; worktree metadata notes resize covered by #3300. Continue with drag/drop global listeners and kanban pointer flows. | | Workspace cleanup | `components/workspace-cleanup/**` | Inventory complete, manual review in progress | Active cleanup-view repair covered by #3195. Continue checking destructive removal, repo filtering, scan refresh, and SSH/disconnected blockers. | | Right sidebar / source control | `components/right-sidebar/**` | Inventory complete, manual review in progress | Source-control selection ref mirrors covered by #3075; Create PR dialog submit reset covered by #3184; commit-failure dialog identity repair covered by #3202; diff-comments clear confirmation repair covered by #3206; diff-notes copy feedback timers covered by #3210; selection stale-key pruning covered by #3212; file-search input focus covered by #3330; file explorer inline create/rename focus covered by #3347. Continue checking polling, PR checks, file explorer watch/reveal, and source-control local resets. Git provider compatibility required. | @@ -217,6 +217,7 @@ These are candidate batches, not final conclusions. Each item needs code inspect | PR EH | File explorer inline input focus | File Explorer create/rename inputs used a passive Effect to focus/select and start the blur grace-window timer after the inline row mounted. | `FileExplorerRow.tsx` covered by #3347 | Medium | | PR EI | Font autocomplete highlighted-option scroll | Settings font autocomplete scrolled the highlighted option from a passive Effect after each keyboard or pointer highlight change. | `SettingsFormControls.tsx` covered by #3349 | Medium | | PR EJ | SSH passphrase prompt focus | New SSH password/passphrase requests focused the credential input from a passive Effect keyed by request id. | `SshPassphraseDialog.tsx` covered by #3351 | High | +| PR EK | Diff comment card resize | Diff comment cards remeasured Monaco view-zone content from a passive editing-state Effect after save or cancel closed edit mode. | `DiffCommentCard.tsx` covered by #3354 | Medium | ## Merge Risk Scale @@ -362,6 +363,7 @@ These are candidate batches, not final conclusions. Each item needs code inspect | #3347 | `nwparker/react-perf-file-explorer-inline-focus-ref` | File Explorer inline create/rename input focus moves to a keyed callback ref | Medium | Open | `pnpm exec oxfmt --write src/renderer/src/components/right-sidebar/FileExplorerRow.tsx`; `pnpm exec oxlint src/renderer/src/components/right-sidebar/FileExplorerRow.tsx`; `pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/right-sidebar/FileExplorer.test.tsx src/renderer/src/components/right-sidebar/useFileExplorerHandlers.test.ts src/renderer/src/components/right-sidebar/useFileExplorerRowDrag.test.ts`; `pnpm run typecheck:web`; `git diff --check`; AST Effect count 911 -> 910. | | #3349 | `nwparker/react-perf-font-autocomplete-scroll-ref` | Settings font autocomplete highlighted-option scroll moves to the option ref callback | Medium | Open | `pnpm exec oxfmt --write src/renderer/src/components/settings/SettingsFormControls.tsx`; `pnpm exec oxlint src/renderer/src/components/settings/SettingsFormControls.tsx`; `pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/settings/TerminalSettingsPreview.lifecycle.test.tsx src/renderer/src/components/settings/TerminalPane.pwsh.test.ts src/renderer/src/components/settings/TerminalPane.ghostty.test.ts`; `pnpm run typecheck:web`; `git diff --check`; AST Effect count 911 -> 910. | | #3351 | `nwparker/react-perf-ssh-passphrase-focus-ref` | SSH credential dialog input focus moves to callback ref | High | Open | `pnpm exec oxfmt --write src/renderer/src/components/settings/SshPassphraseDialog.tsx`; `pnpm exec oxlint src/renderer/src/components/settings/SshPassphraseDialog.tsx`; `pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/store/slices/ssh.test.ts src/renderer/src/hooks/useIpcEvents.test.ts`; `pnpm run typecheck:web`; `git diff --check`; AST Effect count 911 -> 910. | +| #3354 | `nwparker/react-perf-diff-comment-card-resize` | Diff comment card close-after-edit resize moves to save/cancel handlers | Medium | Open | `pnpm exec oxfmt --write src/renderer/src/components/diff-comments/DiffCommentCard.tsx`; `pnpm exec oxlint src/renderer/src/components/diff-comments/DiffCommentCard.tsx`; `pnpm exec vitest run --config config/vitest.config.ts src/renderer/src/components/diff-comments/diff-comment-popover-position.test.ts`; `pnpm run typecheck:web`; `git diff --check`; AST Effect count 911 -> 910. | ## Reproduction Commands