Fix the following React Review diagnostics in my codebase.
## Warnings (501)
1. [warning] no-many-boolean-props — src/app/components/sidebar/chat/chat-group-row.tsx:157
Component "ChatGroupRow" takes 4 boolean-like props (isActive, isDragging, isExpanded…) — consider compound components or explicit variants instead of stacking flags
2. [warning] exhaustive-deps — src/app/components/sidebar/chat/chat-group-row.tsx:186
The ref value `clickTimeoutRef.current` will likely have changed by the time this effect cleanup function runs. Copy it to a variable inside the hook callback and use that variable in cleanup.
3. [warning] control-has-associated-label — src/app/components/sidebar/chat/sidebar-chat-section.tsx:125
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
4. [warning] design-no-redundant-size-axes — src/app/app-shell/app-shell-overlays.tsx:54
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
5. [warning] design-no-redundant-size-axes — src/app/components/sidebar/inbox/inbox-thread-row.tsx:38
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
6. [warning] design-no-redundant-size-axes — src/app/components/sidebar/inbox/inbox-thread-row.tsx:40
w-2 h-2 → use the shorthand size-2 (Tailwind v3.4+)
7. [warning] prefer-useReducer — src/app/components/sidebar/inbox/sidebar-inbox-section.tsx:175
Component "SidebarInboxSection" has 5 useState calls — consider useReducer for related state
8. [warning] no-many-boolean-props — src/app/components/sidebar/project-tree/project-row.tsx:182
Component "ProjectRow" takes 8 boolean-like props (canEdit, canToggleExpanded, isActive…) — consider compound components or explicit variants instead of stacking flags
9. [warning] no-react19-deprecated-apis — src/app/components/sidebar/project-work/project-work-actions-menu.tsx:2
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly
10. [warning] no-chain-state-updates — src/app/components/sidebar/project-work/project-work-actions-menu.tsx:33
Avoid chaining state changes. When possible, update all relevant state simultaneously.
11. [warning] design-no-redundant-size-axes — src/app/components/sidebar/project-work/project-scope-selector.tsx:149
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
12. [warning] no-cascading-set-state — src/app/components/sidebar/project-work/project-work-content.tsx:42
4 setState calls in a single useEffect — consider using useReducer or deriving state
13. [warning] design-no-redundant-size-axes — src/app/components/sidebar/project-work/project-work-content.tsx:64
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
14. [warning] no-effect-chain — src/app/components/sidebar/project-work/project-work-section.tsx:108
useEffect reacts to "storedVisibleProjectIds" which is set by another useEffect — chains of effects add an extra render per link and become rigid as code evolves. Compute what you can during render and write all related state inside the event handler that originally fires the chain
15. [warning] no-giant-component — src/app/components/sidebar/project-work/project-work-section.tsx:54
Component "ProjectWorkSection" is 309 lines — consider breaking it into smaller focused components
16. [warning] prefer-useReducer — src/app/components/sidebar/project-work/project-work-section.tsx:75
Component "ProjectWorkSection" has 7 useState calls — consider useReducer for related state
17. [warning] no-derived-state — src/app/components/sidebar/project-work/project-work-section.tsx:105
Avoid storing derived state. Compute "storedVisibleProjectIds" directly during render, optionally with `useMemo` if it's expensive.
18. [warning] no-chain-state-updates — src/app/components/sidebar/project-work/project-work-section.tsx:110
Avoid chaining state changes. When possible, update all relevant state simultaneously.
19. [warning] no-derived-state — src/app/components/sidebar/project-work/project-work-section.tsx:110
Avoid storing derived state. Compute "storedVisibleProjectIds" directly during render, optionally with `useMemo` if it's expensive.
20. [warning] no-prop-callback-in-effect — src/app/components/sidebar/project-work/project-work-section.tsx:170
useEffect calls prop callback "onLoadProjectThreads" with local state in deps — this is the "lift state via callback" anti-pattern; lift state into a shared Provider so both sides read the same source
21. [warning] no-event-handler — src/app/components/sidebar/projects/sidebar-projects-create-popover.tsx:47
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
22. [warning] no-multi-comp — src/app/components/sidebar/sidebar-skeletons.tsx:43
Declare only one React component per file. Found extra component: SidebarChatSkeleton.
23. [warning] no-multi-comp — src/app/components/sidebar/sidebar-skeletons.tsx:70
Declare only one React component per file. Found extra component: SidebarInboxSkeleton.
24. [warning] prefer-tag-over-role — src/app/components/sidebar/sidebar-skeletons.tsx:18
Prefer the semantic `<output>` element over `role="status"` on a generic tag.
25. [warning] design-no-redundant-size-axes — src/app/components/sidebar/sidebar-skeletons.tsx:26
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
26. [warning] prefer-tag-over-role — src/app/components/sidebar/sidebar-skeletons.tsx:47
Prefer the semantic `<output>` element over `role="status"` on a generic tag.
27. [warning] design-no-redundant-size-axes — src/app/components/sidebar/sidebar-skeletons.tsx:55
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
28. [warning] prefer-tag-over-role — src/app/components/sidebar/sidebar-skeletons.tsx:74
Prefer the semantic `<output>` element over `role="status"` on a generic tag.
29. [warning] no-adjust-state-on-prop-change — src/app/composer/composer-context-meter.tsx:279
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
30. [warning] no-adjust-state-on-prop-change — src/app/composer/composer-context-meter.tsx:280
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
31. [warning] no-chain-state-updates — src/app/composer/composer-context-meter.tsx:285
Avoid chaining state changes. When possible, update all relevant state simultaneously.
32. [warning] no-derived-state — src/app/composer/composer-context-meter.tsx:285
Avoid storing derived state. Compute "usageTotals" directly during render, optionally with `useMemo` if it's expensive.
33. [warning] no-event-handler — src/app/composer/composer-context-meter.tsx:212
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
34. [warning] no-event-handler — src/app/composer/composer-context-meter.tsx:212
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
35. [warning] design-no-redundant-size-axes — src/app/composer/composer-context-meter.tsx:299
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
36. [warning] design-no-redundant-size-axes — src/app/composer/composer-file-picker-attachments-panel.tsx:78
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)
37. [warning] design-no-redundant-size-axes — src/app/composer/composer-file-picker-attachments-panel.tsx:89
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
38. [warning] design-no-redundant-size-axes — src/app/common/split-button.tsx:27
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
39. [warning] prefer-useReducer — src/app/composer/composer-file-picker.tsx:58
Component "ComposerFilePicker" has 5 useState calls — consider useReducer for related state
40. [warning] no-event-handler — src/app/composer/composer-file-picker.tsx:139
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
41. [warning] design-no-redundant-size-axes — src/app/composer/composer-footer.tsx:110
w-[14px] h-[14px] → use the shorthand size-[14px] (Tailwind v3.4+)
42. [warning] no-multi-comp — src/app/common/thread-message.tsx:130
Declare only one React component per file. Found extra component: SummaryBlock.
43. [warning] no-multi-comp — src/app/common/thread-message.tsx:139
Declare only one React component per file. Found extra component: UserMessageBlock.
44. [warning] no-multi-comp — src/app/common/thread-message.tsx:161
Declare only one React component per file. Found extra component: AssistantMessageBlock.
45. [warning] no-multi-comp — src/app/common/thread-message.tsx:223
Declare only one React component per file. Found extra component: CustomMessageBlock.
46. [warning] no-multi-comp — src/app/common/thread-message.tsx:234
Declare only one React component per file. Found extra component: SystemMessageBlock.
47. [warning] no-multi-comp — src/app/common/thread-message.tsx:273
Declare only one React component per file. Found extra component: ThreadMessageComponent.
48. [warning] no-derived-useState — src/app/common/thread-message.tsx:65
useState initialized from prop "autoExpandThinking" — if this value should stay in sync with the prop, derive it during render instead
49. [warning] no-derived-state — src/app/common/thread-message.tsx:71
Avoid storing derived state. Compute "expanded" directly during render, optionally with `useMemo` if it's expensive.
50. [warning] no-derived-state — src/app/common/thread-message.tsx:73
Avoid storing derived state. Compute "expanded" directly during render, optionally with `useMemo` if it's expensive.
51. [warning] design-no-em-dash-in-jsx-text — src/app/common/thread-message.tsx:110
Em dash (—) in JSX text reads as model output — replace with comma, colon, semicolon, or parentheses
52. [warning] no-render-in-render — src/app/common/thread-message.tsx:120
Inline render function "renderThinking()" — extract to a separate component for proper reconciliation
53. [warning] no-render-in-render — src/app/common/thread-message.tsx:134
Inline render function "renderThinking()" — extract to a separate component for proper reconciliation
54. [warning] no-render-in-render — src/app/common/thread-message.tsx:190
Inline render function "renderProse()" — extract to a separate component for proper reconciliation
55. [warning] no-render-in-render — src/app/common/thread-message.tsx:229
Inline render function "renderProse()" — extract to a separate component for proper reconciliation
56. [warning] no-render-in-render — src/app/common/thread-message.tsx:251
Inline render function "renderProse()" — extract to a separate component for proper reconciliation
57. [warning] no-render-in-render — src/app/common/thread-message.tsx:281
Inline render function "renderThreadMessageContent()" — extract to a separate component for proper reconciliation
58. [warning] jsx-no-jsx-as-prop — src/app/composer/composer-prompt-input-panel.tsx:218
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
59. [warning] design-no-redundant-size-axes — src/app/composer/composer-side-controls.tsx:57
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
60. [warning] no-barrel-import — src/app/composer/composer-prompt-surface.tsx:7
Import from barrel/index file — import directly from source modules: "../features/native-extensions/ask-questions-card", "../features/native-extensions/useComposerAskQuestionsActions"
61. [warning] no-giant-component — src/app/composer/composer-prompt-surface.tsx:36
Component "ComposerPromptSurface" is 447 lines — consider breaking it into smaller focused components
62. [warning] no-many-boolean-props — src/app/composer/composer-prompt-surface.tsx:36
Component "ComposerPromptSurface" takes 5 boolean-like props (isStreaming, isCompacting, isExtensionCommandRunning…) — consider compound components or explicit variants instead of stacking flags
63. [warning] design-no-redundant-size-axes — src/app/composer/file-entry-button.tsx:86
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
64. [warning] design-no-redundant-size-axes — src/app/composer/composer-file-picker-header.tsx:39
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)
65. [warning] design-no-redundant-size-axes — src/app/composer/composer-file-picker-header.tsx:98
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)
66. [warning] rendering-svg-precision — src/app/common/github-invertocat-mark.tsx:17
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
67. [warning] jsx-no-target-blank — src/app/common/markdown-content.tsx:81
`target="_blank"` without `rel="noreferrer"` is a security risk — add `rel="noreferrer"`.
68. [warning] no-prevent-default — src/app/common/markdown-content.tsx:67
preventDefault() on <a> onClick — use a <button> or routing component instead
69. [warning] no-derived-state — src/app/composer/composer-model-popover.tsx:66
Avoid storing derived state. Compute "selectedProvider" directly during render, optionally with `useMemo` if it's expensive.
70. [warning] no-derived-state — src/app/composer/composer-model-popover.tsx:70
Avoid storing derived state. Compute "selectedProvider" directly during render, optionally with `useMemo` if it's expensive.
71. [warning] no-event-handler — src/app/composer/composer-model-popover.tsx:159
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
72. [warning] no-event-handler — src/app/composer/composer-model-popover.tsx:74
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
73. [warning] no-event-handler — src/app/composer/composer-model-popover.tsx:74
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
74. [warning] no-event-handler — src/app/composer/composer-model-popover.tsx:59
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
75. [warning] no-multi-comp — pages/src/main.tsx:179
Declare only one React component per file. Found extra component: DependencyTable.
76. [warning] no-multi-comp — pages/src/main.tsx:202
Declare only one React component per file. Found extra component: DependenciesPage.
77. [warning] no-multi-comp — pages/src/main.tsx:231
Declare only one React component per file. Found extra component: GitHubInvertocatMark.
78. [warning] no-multi-comp — pages/src/main.tsx:274
Declare only one React component per file. Found extra component: HomePage.
79. [warning] no-multi-comp — pages/src/main.tsx:556
Declare only one React component per file. Found extra component: BlogIndexPage.
80. [warning] no-multi-comp — pages/src/main.tsx:721
Declare only one React component per file. Found extra component: WorktreesBlogPage.
81. [warning] no-multi-comp — pages/src/main.tsx:870
Declare only one React component per file. Found extra component: App.
82. [warning] rendering-svg-precision — pages/src/main.tsx:234
SVG d attribute uses 4+ decimal precision — truncate to 1–2 decimals to shrink markup with no visible difference
83. [warning] js-combine-iterations — pages/src/main.tsx:247
.map().filter() iterates the array twice — combine into a single loop with .reduce() or for...of
84. [warning] no-cascading-set-state — pages/src/main.tsx:294
3 setState calls in a single useEffect — consider using useReducer or deriving state
85. [warning] no-fetch-in-effect — pages/src/main.tsx:727
fetch() inside useEffect — use a data fetching library (react-query, SWR) or server component
86. [warning] no-cascading-set-state — src/app/common/popover.tsx:170
3 setState calls in a single useEffect — consider using useReducer or deriving state
87. [warning] control-has-associated-label — src/app/common/segmented-toggle.tsx:51
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
88. [warning] prefer-useReducer — src/app/components/sidebar/project-work/new-thread-menu.tsx:146
Component "NewThreadMenu" has 7 useState calls — consider useReducer for related state
89. [warning] no-cascading-set-state — src/app/components/sidebar/project-work/new-thread-menu.tsx:180
4 setState calls in a single useEffect — consider using useReducer or deriving state
90. [warning] design-no-redundant-size-axes — src/app/components/sidebar/project-work/new-thread-menu.tsx:254
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
91. [warning] exhaustive-deps — src/app/common/tooltip.tsx:75
The ref value `openTimerRef.current` will likely have changed by the time this effect cleanup function runs. Copy it to a variable inside the hook callback and use that variable in cleanup.
92. [warning] no-cascading-set-state — src/app/common/tooltip.tsx:83
3 setState calls in a single useEffect — consider using useReducer or deriving state
93. [warning] design-no-redundant-size-axes — src/app/chat-workspace/chat-workspace-composer.tsx:108
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
94. [warning] jsx-no-jsx-as-prop — src/app/chat-workspace/chat-workspace-composer.tsx:272
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
95. [warning] prefer-useReducer — src/app/components/sidebar/project-work/project-work-block.tsx:38
Component "ProjectWorkBlockHeader" has 5 useState calls — consider useReducer for related state
96. [warning] no-derived-useState — src/app/components/sidebar/project-work/project-work-block.tsx:40
useState initialized from prop "project" — if this value should stay in sync with the prop, derive it during render instead
97. [warning] no-chain-state-updates — src/app/components/sidebar/project-work/project-work-block.tsx:52
Avoid chaining state changes. When possible, update all relevant state simultaneously.
98. [warning] no-derived-state — src/app/components/sidebar/project-work/project-work-block.tsx:52
Avoid storing derived state. Compute "renameDraft" directly during render, optionally with `useMemo` if it's expensive.
99. [warning] no-event-handler — src/app/components/sidebar/project-work/project-work-block.tsx:52
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
100. [warning] no-cascading-set-state — src/app/components/sidebar/project-work/project-work-block.tsx:54
4 setState calls in a single useEffect — consider using useReducer or deriving state
101. [warning] design-no-redundant-size-axes — src/app/components/sidebar/project-work/project-work-block.tsx:121
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
102. [warning] design-no-redundant-size-axes — src/app/code-workspace/code-workspace-footer.tsx:27
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
103. [warning] design-no-redundant-size-axes — src/app/code-workspace/code-workspace-footer.tsx:43
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
104. [warning] jsx-no-jsx-as-prop — src/app/code-workspace/code-workspace-footer.tsx:317
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
105. [warning] design-no-redundant-size-axes — src/app/components/sidebar/sidebar.tsx:344
w-[34px] h-[34px] → use the shorthand size-[34px] (Tailwind v3.4+)
106. [warning] no-adjust-state-on-prop-change — src/app/composer/composer-dictation-controls.tsx:165
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
107. [warning] no-event-handler — src/app/composer/composer-dictation-controls.tsx:164
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
108. [warning] no-event-handler — src/app/composer/composer-dictation-controls.tsx:164
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
109. [warning] no-reset-all-state-on-prop-change — src/app/composer/composer-dictation-controls.tsx:163
Avoid resetting all state when a prop changes. Instead, if "dictationMissingModel" is a key, pass it as `key` so React will reset the component's state.
110. [warning] prefer-useReducer — src/app/app-shell/app-shell-layout.tsx:105
Component "AppShellLayout" has 6 useState calls — consider useReducer for related state
111. [warning] no-adjust-state-on-prop-change — src/app/app-shell/app-shell-layout.tsx:211
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
112. [warning] no-adjust-state-on-prop-change — src/app/app-shell/app-shell-layout.tsx:212
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
113. [warning] no-event-handler — src/app/app-shell/app-shell-layout.tsx:134
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
114. [warning] no-chain-state-updates — src/app/app-shell/app-shell-layout.tsx:236
Avoid chaining state changes. When possible, update all relevant state simultaneously.
115. [warning] no-event-handler — src/app/app-shell/app-shell-layout.tsx:236
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
116. [warning] no-adjust-state-on-prop-change — src/app/app-shell/app-shell-layout.tsx:240
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
117. [warning] prefer-useReducer — src/app/code-workspace/code-workspace-view.tsx:170
Component "CodeWorkspaceView" has 6 useState calls — consider useReducer for related state
118. [warning] no-giant-component — src/app/archive/archived-threads-view.tsx:48
Component "ArchivedThreadsView" is 349 lines — consider breaking it into smaller focused components
119. [warning] no-derived-state — src/app/archive/archived-threads-view.tsx:91
Avoid storing derived state. Compute "optimisticallyHiddenThreadIds" directly during render, optionally with `useMemo` if it's expensive.
120. [warning] no-derived-state — src/app/archive/archived-threads-view.tsx:99
Avoid storing derived state. Compute "selectedThreadIds" directly during render, optionally with `useMemo` if it's expensive.
121. [warning] no-chain-state-updates — src/app/archive/archived-threads-view.tsx:106
Avoid chaining state changes. When possible, update all relevant state simultaneously.
122. [warning] no-event-handler — src/app/archive/archived-threads-view.tsx:105
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
123. [warning] design-no-redundant-size-axes — src/app/archive/archived-threads-view.tsx:280
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
124. [warning] design-no-redundant-size-axes — src/app/archive/archived-threads-view.tsx:341
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
125. [warning] no-adjust-state-on-prop-change — src/app/common/confirm-popover.tsx:32
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
126. [warning] no-event-handler — src/app/common/confirm-popover.tsx:32
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
127. [warning] no-reset-all-state-on-prop-change — src/app/common/confirm-popover.tsx:31
Avoid resetting all state when a prop changes. Instead, if "open" is a key, pass it as `key` so React will reset the component's state.
128. [warning] design-no-redundant-size-axes — src/app/common/confirm-popover.tsx:75
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
129. [warning] design-no-redundant-size-axes — src/app/app-shell/app-shell-layout-view.tsx:206
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
130. [warning] no-render-in-render — src/app/thread/tool-calls-card.tsx:199
Inline render function "renderToolCallBody()" — extract to a separate component for proper reconciliation
131. [warning] no-many-boolean-props — src/app/extensions/components/search-extensions-section.tsx:117
Component "SearchExtensionsSection" takes 5 boolean-like props (hasSelectedCatalogSources, hasPendingInstall, hasNextCatalogPage…) — consider compound components or explicit variants instead of stacking flags
132. [warning] no-render-in-render — src/app/settings/settings/settingsDescriptorModels.tsx:192
Inline render function "renderThinkingSelector()" — extract to a separate component for proper reconciliation
133. [warning] no-giant-component — src/app/inbox/components/inbox-composer.tsx:68
Component "InboxComposer" is 361 lines — consider breaking it into smaller focused components
134. [warning] no-many-boolean-props — src/app/inbox/components/inbox-composer.tsx:68
Component "InboxComposer" takes 4 boolean-like props (isCompacting, isStreaming, isSending…) — consider compound components or explicit variants instead of stacking flags
135. [warning] design-no-redundant-size-axes — src/app/extensions/components/install-extensions-section.tsx:106
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
136. [warning] no-multi-comp — src/app/settings/settings/settingsUi.tsx:49
Declare only one React component per file. Found extra component: SettingRow.
137. [warning] no-multi-comp — src/app/settings/settings/settingsUi.tsx:82
Declare only one React component per file. Found extra component: InlineSelect.
138. [warning] no-adjust-state-on-prop-change — src/app/settings/settings/settingsUi.tsx:124
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
139. [warning] no-event-handler — src/app/settings/settings/settingsUi.tsx:104
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
140. [warning] no-reset-all-state-on-prop-change — src/app/settings/settings/settingsUi.tsx:122
Avoid resetting all state when a prop changes. Instead, if "open" is a key, pass it as `key` so React will reset the component's state.
141. [warning] control-has-associated-label — src/app/native/gitops/branch-switch-popover.tsx:105
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
142. [warning] no-pass-live-state-to-parent — src/app/features/native-extensions/ask-questions-card.tsx:144
Avoid passing live state to parents in an effect. Instead, lift the state to the parent and pass it down to the child as a prop.
143. [warning] no-prop-callback-in-effect — src/app/features/native-extensions/ask-questions-card.tsx:149
useEffect calls prop callback "registerArrowNavigation" with local state in deps — this is the "lift state via callback" anti-pattern; lift state into a shared Provider so both sides read the same source
144. [warning] no-adjust-state-on-prop-change — src/app/features/native-extensions/ask-questions-card.tsx:160
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
145. [warning] no-adjust-state-on-prop-change — src/app/features/native-extensions/ask-questions-card.tsx:163
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
146. [warning] no-cascading-set-state — src/app/features/native-extensions/ask-questions-card.tsx:159
4 setState calls in a single useEffect — consider using useReducer or deriving state
147. [warning] no-derived-state — src/app/features/native-extensions/ask-questions-card.tsx:161
Avoid storing derived state. Compute "answers" directly during render, optionally with `useMemo` if it's expensive.
148. [warning] no-derived-state — src/app/features/native-extensions/ask-questions-card.tsx:162
Avoid storing derived state. Compute "customAnswers" directly during render, optionally with `useMemo` if it's expensive.
149. [warning] no-derived-state-effect — src/app/features/native-extensions/ask-questions-card.tsx:159
Derived state in useEffect — wrap the calculation in useMemo([deps]) (or compute it directly during render if it isn't expensive)
150. [warning] design-no-redundant-size-axes — src/app/features/native-extensions/ask-questions-card.tsx:188
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)
151. [warning] design-no-redundant-size-axes — src/app/features/native-extensions/ask-questions-card.tsx:199
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)
152. [warning] design-no-redundant-size-axes — src/app/features/native-extensions/ask-questions-card.tsx:262
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)
153. [warning] design-no-redundant-size-axes — src/app/features/native-extensions/ask-questions-card.tsx:274
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)
154. [warning] design-no-redundant-size-axes — src/app/features/native-extensions/ask-questions-card.tsx:311
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)
155. [warning] jsx-no-jsx-as-prop — src/app/skills/skills-view.tsx:87
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
156. [warning] jsx-no-jsx-as-prop — src/app/skills/skills-view.tsx:118
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
157. [warning] design-no-redundant-padding-axes — src/app/inbox/inbox-view.tsx:242
px-6 py-6 → use the shorthand p-6
158. [warning] design-no-redundant-size-axes — src/app/inbox/inbox-view.tsx:321
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)
159. [warning] jsx-no-jsx-as-prop — src/app/inbox/inbox-view.tsx:331
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
160. [warning] design-no-redundant-padding-axes — src/app/projects/project-overview/top-sessions-section.tsx:21
px-2 py-2 → use the shorthand p-2
161. [warning] no-derived-useState — src/app/native/gitops/diff/diff-panel-content.tsx:54
useState initialized from prop "showFileTree" — if this value should stay in sync with the prop, derive it during render instead
162. [warning] no-pass-data-to-parent — src/app/native/gitops/diff/diff-panel-content.tsx:66
Avoid passing data to parents in an effect. Instead, fetch the data in the parent and pass it down to the child as a prop.
163. [warning] no-prop-callback-in-effect — src/app/native/gitops/diff/diff-panel-content.tsx:66
useEffect calls prop callback "onLoadErrorChange" with local state in deps — this is the "lift state via callback" anti-pattern; lift state into a shared Provider so both sides read the same source
164. [warning] no-adjust-state-on-prop-change — src/app/native/gitops/diff/diff-panel-content.tsx:159
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
165. [warning] no-cascading-set-state — src/app/native/gitops/diff/diff-panel-content.tsx:153
3 setState calls in a single useEffect — consider using useReducer or deriving state
166. [warning] no-event-handler — src/app/native/gitops/diff/diff-panel-content.tsx:140
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
167. [warning] no-event-handler — src/app/native/gitops/diff/diff-panel-content.tsx:140
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
168. [warning] no-event-handler — src/app/native/gitops/diff/diff-panel-content.tsx:140
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
169. [warning] no-pass-data-to-parent — src/app/native/gitops/diff/diff-panel-content.tsx:166
Avoid passing data to parents in an effect. Instead, fetch the data in the parent and pass it down to the child as a prop.
170. [warning] no-pass-data-to-parent — src/app/native/gitops/composer-git-ops-surface.tsx:246
Avoid passing data to parents in an effect. Instead, fetch the data in the parent and pass it down to the child as a prop.
171. [warning] no-prop-callback-in-effect — src/app/native/gitops/composer-git-ops-surface.tsx:246
useEffect calls prop callback "onActionErrorMessageChange" with local state in deps — this is the "lift state via callback" anti-pattern; lift state into a shared Provider so both sides read the same source
172. [warning] jsx-no-jsx-as-prop — src/app/native/gitops/composer-git-ops-surface.tsx:358
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
173. [warning] jsx-no-jsx-as-prop — src/app/native/gitops/composer-git-ops-surface.tsx:391
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
174. [warning] no-many-boolean-props — src/app/native/gitops/diff/diff-panel-content-body.tsx:155
Component "DiffPanelContentBody" takes 4 boolean-like props (isGitRepo, isLoading, hasNoNetChanges…) — consider compound components or explicit variants instead of stacking flags
175. [warning] design-no-redundant-size-axes — src/app/native/gitops/git-ops-composer-panel.tsx:102
w-2 h-2 → use the shorthand size-2 (Tailwind v3.4+)
176. [warning] no-event-handler — src/app/native/gitops/diff/diff-changed-files-tree.tsx:97
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
177. [warning] no-event-handler — src/app/native/gitops/diff/diff-changed-files-tree.tsx:126
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
178. [warning] no-event-handler — src/app/native/gitops/diff/diff-changed-files-tree.tsx:127
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
179. [warning] no-multi-comp — src/app/projects/landing-empty-overview.tsx:71
Declare only one React component per file. Found extra component: LandingUpdateCard.
180. [warning] no-multi-comp — src/app/projects/landing-empty-overview.tsx:104
Declare only one React component per file. Found extra component: EmptyLandingOverview.
181. [warning] design-no-redundant-size-axes — src/app/native/gitops/diff/diff-panel-file-list.tsx:212
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)
182. [warning] js-length-check-first — src/app/native/gitops/diff/diff-panel-file-list.tsx:265
.every() over an array compared to another array — short-circuit with `a.length === b.length && a.every(...)` so unequal-length arrays exit immediately
183. [warning] rerender-state-only-in-handlers — src/app/native/gitops/diff/diff-panel-file-list.tsx:336
useState "codeViewHandle" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
184. [warning] no-render-prop-children — src/app/native/gitops/diff/diff-panel-file-list.tsx:535
3 render-prop slots on the same element (renderCustomHeader, renderAnnotation, renderGutterUtility…) — collapse into compound subcomponents or `children` so consumers don't need to know about every customization point
185. [warning] control-has-associated-label — src/app/settings/settings/settingsDescriptorPiRuntime.tsx:271
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
186. [warning] jsx-no-target-blank — src/app/native/markdown-artifacts/artifact-markdown-preview.tsx:41
`target="_blank"` without `rel="noreferrer"` is a security risk — add `rel="noreferrer"`.
187. [warning] no-prevent-default — src/app/native/markdown-artifacts/artifact-markdown-preview.tsx:38
preventDefault() on <a> onClick — use a <button> or routing component instead
188. [warning] design-no-redundant-size-axes — src/app/sessions/sessions-view.tsx:79
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
189. [warning] design-no-redundant-size-axes — src/app/sessions/sessions-view.tsx:180
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
190. [warning] no-derived-state — src/app/sessions/sessions-view.tsx:270
Avoid storing derived state. Compute "selectedThreadIds" directly during render, optionally with `useMemo` if it's expensive.
191. [warning] design-no-redundant-size-axes — src/app/skills/components/browse-skills-section.tsx:147
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
192. [warning] prefer-tag-over-role — src/app/skills/components/browse-skills-section.tsx:158
Prefer the semantic `<img>` element over `role="img"` on a generic tag.
193. [warning] design-no-redundant-size-axes — src/app/skills/components/browse-skills-section.tsx:157
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
194. [warning] exhaustive-deps — src/app/skills/components/browse-skills-section.tsx:288
The `catalogItems` value makes the dependencies of `useEffect` change on every render. Move it inside the hook callback or wrap it in its own memoization hook.
195. [warning] no-derived-state — src/app/skills/components/browse-skills-section.tsx:282
Avoid storing derived state. Compute "selectedCatalogSources" directly during render, optionally with `useMemo` if it's expensive.
196. [warning] design-no-redundant-size-axes — src/app/skills/components/browse-skills-section.tsx:373
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
197. [warning] design-no-redundant-size-axes — src/app/settings/settings/settings-dictation-model-row.tsx:49
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)
198. [warning] prefer-use-effect-event — src/app/thread/thread-find-bar.tsx:90
"close" is read only inside `addEventListener` — wrap it with useEffectEvent and remove it from the dep array so the effect doesn't re-synchronize on every parent render
199. [warning] prefer-useReducer — src/app/thread/thread-find-bar.tsx:41
Component "ThreadFindBar" has 5 useState calls — consider useReducer for related state
200. [warning] no-adjust-state-on-prop-change — src/app/thread/thread-find-bar.tsx:100
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
201. [warning] no-adjust-state-on-prop-change — src/app/thread/thread-find-bar.tsx:101
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
202. [warning] no-adjust-state-on-prop-change — src/app/thread/thread-find-bar.tsx:108
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
203. [warning] no-cascading-set-state — src/app/thread/thread-find-bar.tsx:97
9 setState calls in a single useEffect — consider using useReducer or deriving state
204. [warning] no-pass-live-state-to-parent — src/app/thread/thread-find-bar.tsx:98
Avoid passing live state to parents in an effect. Instead, lift the state to the parent and pass it down to the child as a prop.
205. [warning] no-prop-callback-in-effect — src/app/thread/thread-find-bar.tsx:98
useEffect calls prop callback "onQueryChange" with local state in deps — this is the "lift state via callback" anti-pattern; lift state into a shared Provider so both sides read the same source
206. [warning] no-prop-callback-in-effect — src/app/thread/thread-find-bar.tsx:102
useEffect calls prop callback "onActiveMatchChange" with local state in deps — this is the "lift state via callback" anti-pattern; lift state into a shared Provider so both sides read the same source
207. [warning] design-no-redundant-size-axes — src/app/thread/thread-find-bar.tsx:203
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
208. [warning] exhaustive-deps — src/app/native/gitops/composer-diff-baseline-selector.tsx:120
The `commits` value makes the dependencies of `useMemo` change on every render. Move it inside the hook callback or wrap it in its own memoization hook.
209. [warning] exhaustive-deps — src/app/native/gitops/composer-diff-baseline-selector.tsx:124
The `commits` value makes the dependencies of `useMemo` change on every render. Move it inside the hook callback or wrap it in its own memoization hook.
210. [warning] no-chain-state-updates — src/app/native/gitops/composer-diff-baseline-selector.tsx:316
Avoid chaining state changes. When possible, update all relevant state simultaneously.
211. [warning] no-event-handler — src/app/native/gitops/composer-diff-baseline-selector.tsx:315
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
212. [warning] no-giant-component — src/app/thread/thread-timeline.tsx:32
Component "ThreadTimeline" is 364 lines — consider breaking it into smaller focused components
213. [warning] no-derived-state — src/app/thread/thread-timeline.tsx:97
Avoid storing derived state. Compute "collapsedRowIds" directly during render, optionally with `useMemo` if it's expensive.
214. [warning] no-event-handler — src/app/thread/thread-timeline.tsx:89
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
215. [warning] no-event-handler — src/app/thread/thread-timeline.tsx:90
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
216. [warning] no-event-handler — src/app/thread/thread-timeline.tsx:53
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
217. [warning] no-event-handler — src/app/thread/thread-timeline.tsx:53
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
218. [warning] no-event-handler — src/app/thread/thread-timeline.tsx:88
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
219. [warning] no-event-handler — src/app/thread/thread-timeline.tsx:65
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
220. [warning] design-no-redundant-size-axes — src/app/thread/thread-timeline.tsx:365
w-2 h-2 → use the shorthand size-2 (Tailwind v3.4+)
221. [warning] design-no-redundant-size-axes — src/app/settings/settings/settingsDescriptorDictation.tsx:77
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)
222. [warning] design-no-redundant-size-axes — src/app/settings/settings/settingsDescriptorDictation.tsx:95
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)
223. [warning] design-no-redundant-size-axes — src/app/workspace-shell/terminal-panel.tsx:85
w-[14px] h-[14px] → use the shorthand size-[14px] (Tailwind v3.4+)
224. [warning] no-adjust-state-on-prop-change — src/app/native/artifact-shell/artifact-panel-body.tsx:46
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
225. [warning] control-has-associated-label — src/app/native/artifact-shell/artifact-panel-body.tsx:160
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
226. [warning] design-no-redundant-size-axes — src/app/settings/settings/settingsDescriptorProjects.tsx:378
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)
227. [warning] no-giant-component — src/app/native/terminal/terminal-viewport.tsx:47
Component "TerminalViewport" is 379 lines — consider breaking it into smaller focused components
228. [warning] exhaustive-deps — src/app/native/terminal/terminal-viewport.tsx:301
The ref value `terminalResizeFrameRef.current` will likely have changed by the time this effect cleanup function runs. Copy it to a variable inside the hook callback and use that variable in cleanup.
229. [warning] no-derived-state — src/app/settings/settings/settingsDescriptorKeybindings.tsx:165
Avoid storing derived state. Compute "draft" directly during render, optionally with `useMemo` if it's expensive.
230. [warning] no-derived-state-effect — src/app/settings/settings/settingsDescriptorKeybindings.tsx:164
Derived state in useEffect — compute during render instead
231. [warning] design-no-redundant-size-axes — src/app/extensions/components/catalog-item-row.tsx:113
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
232. [warning] prefer-tag-over-role — src/app/extensions/components/catalog-item-row.tsx:124
Prefer the semantic `<img>` element over `role="img"` on a generic tag.
233. [warning] design-no-redundant-size-axes — src/app/extensions/components/catalog-item-row.tsx:123
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
234. [warning] no-multi-comp — src/app/thread/thread-timeline-row-chrome.tsx:102
Declare only one React component per file. Found extra component: RowLeadToggleSurface.
235. [warning] no-multi-comp — src/app/thread/thread-timeline-row-chrome.tsx:153
Declare only one React component per file. Found extra component: TimelineRowShell.
236. [warning] jsx-no-jsx-as-prop — src/app/extensions/extensions-view.tsx:86
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
237. [warning] jsx-no-jsx-as-prop — src/app/extensions/extensions-view.tsx:108
JSX prop receives JSX created on every render — extract it or memoize to avoid re-renders.
238. [warning] control-has-associated-label — src/app/native/gitops/diff-baseline-selector/baseline-selector-popover.tsx:98
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
239. [warning] prefer-useReducer — src/app/skills/components/skill-creator-section.tsx:61
Component "SkillCreatorSection" has 6 useState calls — consider useReducer for related state
240. [warning] design-no-redundant-size-axes — src/app/skills/components/skill-creator-section.tsx:212
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
241. [warning] design-no-redundant-size-axes — src/app/inbox/components/inbox-composer-rails.tsx:48
w-7 h-7 → use the shorthand size-7 (Tailwind v3.4+)
242. [warning] no-giant-component — src/app/settings/settings-view.tsx:46
Component "SettingsView" is 330 lines — consider breaking it into smaller focused components
243. [warning] prefer-useReducer — src/app/settings/settings-view.tsx:58
Component "SettingsView" has 10 useState calls — consider useReducer for related state
244. [warning] rerender-state-only-in-handlers — src/app/settings/settings-view.tsx:72
useState "highlightedSettingId" is updated but never read in the component's return — use useRef so updates don't trigger re-renders
245. [warning] no-derived-useState — src/app/settings/settings-view.tsx:60
useState initialized from prop "piSettings" — if this value should stay in sync with the prop, derive it during render instead
246. [warning] no-adjust-state-on-prop-change — src/app/settings/settings-view.tsx:82
Avoid adjusting state when a prop changes. Instead, adjust the state directly during render, or refactor your state to avoid this need entirely.
247. [warning] no-cascading-set-state — src/app/settings/settings-view.tsx:80
4 setState calls in a single useEffect — consider using useReducer or deriving state
248. [warning] no-derived-state — src/app/settings/settings-view.tsx:83
Avoid storing derived state. Compute "activeCategory" directly during render, optionally with `useMemo` if it's expensive.
249. [warning] no-derived-state — src/app/settings/settings-view.tsx:84
Avoid storing derived state. Compute "highlightedSettingId" directly during render, optionally with `useMemo` if it's expensive.
250. [warning] no-derived-state — src/app/settings/settings-view.tsx:85
Avoid storing derived state. Compute "highlightedCategoryId" directly during render, optionally with `useMemo` if it's expensive.
251. [warning] no-initialize-state — src/app/settings/settings-view.tsx:97
Avoid initializing state in an effect. Instead, initialize "helpColumnAvailable"'s `useState()` with "undefined". For SSR hydration, prefer `useSyncExternalStore()`.
252. [warning] no-derived-state — src/app/settings/settings-view.tsx:122
Avoid storing derived state. Compute "draftPiSettings" directly during render, optionally with `useMemo` if it's expensive.
253. [warning] async-await-in-loop — src/app/settings/settings-view.tsx:171
await inside a for…of loop runs the calls sequentially — for independent operations, collect them and use `await Promise.all(items.map(...))` to run them concurrently
254. [warning] no-derived-state — src/app/settings/settings-view.tsx:222
Avoid storing derived state. Compute "dictationModelDraft" directly during render, optionally with `useMemo` if it's expensive.
255. [warning] no-derived-state-effect — src/app/settings/settings-view.tsx:221
Derived state in useEffect — compute during render instead
256. [warning] no-render-in-render — src/app/thread/thread-timeline-row.tsx:243
Inline render function "renderTurnItem()" — extract to a separate component for proper reconciliation
257. [warning] no-giant-component — src/app/native/gitops/composer-git-ops-footer.tsx:62
Component "ComposerGitOpsFooter" is 310 lines — consider breaking it into smaller focused components
258. [warning] no-event-handler — src/app/native/gitops/composer-git-ops-footer.tsx:120
Avoid using state and effects as an event handler. Instead, call the event handling code directly when the event occurs.
259. [warning] no-event-handler — src/app/native/gitops/composer-git-ops-footer.tsx:120
Avoid using props and effects as an event handler. Instead, move the handler to the parent component.
260. [warning] control-has-associated-label — src/app/settings/settings/settings-view-parts.tsx:34
A control must be associated with a text label — add visible text, `aria-label`, or `aria-labelledby`.
261. [warning] design-no-redundant-size-axes — src/app/settings/settings/settings-view-parts.tsx:38
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)
262. [warning] unused-file — desktop/app-settings/path-normalization.ts:0
Unused file — not reachable from any entry point
263. [warning] unused-file — desktop/app-settings/writers.ts:0
Unused file — not reachable from any entry point
264. [warning] unused-file — desktop/bundled-themes.ts:0
Unused file — not reachable from any entry point
265. [warning] unused-file — desktop/dictation/model-download.ts:0
Unused file — not reachable from any entry point
266. [warning] unused-file — desktop/dictation/model-management.ts:0
Unused file — not reachable from any entry point
267. [warning] unused-file — desktop/dictation/model-resolution.ts:0
Unused file — not reachable from any entry point
268. [warning] unused-file — desktop/dictation/sherpa-onnx.ts:0
Unused file — not reachable from any entry point
269. [warning] unused-file — desktop/dictation/sherpa-runtime.ts:0
Unused file — not reachable from any entry point
270. [warning] unused-file — desktop/git-commit-message.ts:0
Unused file — not reachable from any entry point
271. [warning] unused-file — desktop/native-extensions/ask-questions-extension-path.ts:0
Unused file — not reachable from any entry point
272. [warning] unused-file — desktop/native-extensions/howcode-native-ask-questions.mjs:0
Unused file — not reachable from any entry point
273. [warning] unused-file — desktop/pi-module.ts:0
Unused file — not reachable from any entry point
274. [warning] unused-file — desktop/pi-packages/catalog.ts:0
Unused file — not reachable from any entry point
275. [warning] unused-file — desktop/pi-packages/configured.ts:0
Unused file — not reachable from any entry point
276. [warning] unused-file — desktop/pi-packages/helpers.ts:0
Unused file — not reachable from any entry point
277. [warning] unused-file — desktop/pi-packages/index.ts:0
Unused file — not reachable from any entry point
278. [warning] unused-file — desktop/pi-packages/mutations.ts:0
Unused file — not reachable from any entry point
279. [warning] unused-file — desktop/pi-packages/runtime-host-bridge.ts:0
Unused file — not reachable from any entry point
280. [warning] unused-file — desktop/pi-packages/services.ts:0
Unused file — not reachable from any entry point
281. [warning] unused-file — desktop/pi-packages/types.ts:0
Unused file — not reachable from any entry point
282. [warning] unused-file — desktop/pi-settings.ts:0
Unused file — not reachable from any entry point
283. [warning] unused-file — desktop/pi-skills.ts:0
Unused file — not reachable from any entry point
284. [warning] unused-file — desktop/pi-threads.ts:0
Unused file — not reachable from any entry point
285. [warning] unused-file — desktop/pi-threads/action-router-result.ts:0
Unused file — not reachable from any entry point
286. [warning] unused-file — desktop/pi-threads/action-router.ts:0
Unused file — not reachable from any entry point
287. [warning] unused-file — desktop/pi-threads/chat-actions.ts:0
Unused file — not reachable from any entry point
288. [warning] unused-file — desktop/pi-threads/composer-actions.ts:0
Unused file — not reachable from any entry point
289. [warning] unused-file — desktop/pi-threads/composer-attachment-payload.ts:0
Unused file — not reachable from any entry point
290. [warning] unused-file — desktop/pi-threads/external-thread-publisher.ts:0
Unused file — not reachable from any entry point
291. [warning] unused-file — desktop/pi-threads/map-with-concurrency.ts:0
Unused file — not reachable from any entry point
292. [warning] unused-file — desktop/pi-threads/pi-settings-actions.ts:0
Unused file — not reachable from any entry point
293. [warning] unused-file — desktop/pi-threads/project-actions.ts:0
Unused file — not reachable from any entry point
294. [warning] unused-file — desktop/pi-threads/project-import-action.ts:0
Unused file — not reachable from any entry point
295. [warning] unused-file — desktop/pi-threads/project-import-refresh.ts:0
Unused file — not reachable from any entry point
296. [warning] unused-file — desktop/pi-threads/project-paths.ts:0
Unused file — not reachable from any entry point
297. [warning] unused-file — desktop/pi-threads/project-usage-summary.ts:0
Unused file — not reachable from any entry point
298. [warning] unused-file — desktop/pi-threads/session-index.ts:0
Unused file — not reachable from any entry point
299. [warning] unused-file — desktop/pi-threads/session-watch.ts:0
Unused file — not reachable from any entry point
300. [warning] unused-file — desktop/pi-threads/settings-actions.ts:0
Unused file — not reachable from any entry point
301. [warning] unused-file — desktop/pi-threads/shell-index.ts:0
Unused file — not reachable from any entry point
302. [warning] unused-file — desktop/pi-threads/shell-loader.ts:0
Unused file — not reachable from any entry point
303. [warning] unused-file — desktop/pi-threads/shell-state.ts:0
Unused file — not reachable from any entry point
304. [warning] unused-file — desktop/pi-threads/thread-actions.ts:0
Unused file — not reachable from any entry point
305. [warning] unused-file — desktop/pi-threads/thread-loader.ts:0
Unused file — not reachable from any entry point
306. [warning] unused-file — desktop/pi-threads/workspace-actions.ts:0
Unused file — not reachable from any entry point
307. [warning] unused-file — desktop/project-import.ts:0
Unused file — not reachable from any entry point
308. [warning] unused-file — desktop/runtime-host/composer-resource-service.ts:0
Unused file — not reachable from any entry point
309. [warning] unused-file — desktop/runtime-host/git-commit-message-service.ts:0
Unused file — not reachable from any entry point
310. [warning] unused-file — desktop/runtime-host/host-service.ts:0
Unused file — not reachable from any entry point
311. [warning] unused-file — desktop/runtime-host/live-runtime-factory.ts:0
Unused file — not reachable from any entry point
312. [warning] unused-file — desktop/runtime-host/live-runtime-registry.ts:0
Unused file — not reachable from any entry point
313. [warning] unused-file — desktop/runtime-host/live-runtime-service.ts:0
Unused file — not reachable from any entry point
314. [warning] unused-file — desktop/runtime-host/live-thread-publisher.ts:0
Unused file — not reachable from any entry point
315. [warning] unused-file — desktop/runtime-host/live-tool-progress.ts:0
Unused file — not reachable from any entry point
316. [warning] unused-file — desktop/runtime-host/main-request-client.ts:0
Unused file — not reachable from any entry point
317. [warning] unused-file — desktop/runtime-host/main-request-handlers.ts:0
Unused file — not reachable from any entry point
318. [warning] unused-file — desktop/runtime-host/native-ask-questions-tool.ts:0
Unused file — not reachable from any entry point
319. [warning] unused-file — desktop/runtime-host/request-handlers.ts:0
Unused file — not reachable from any entry point
320. [warning] unused-file — desktop/runtime-host/runtime-extension-bindings.ts:0
Unused file — not reachable from any entry point
321. [warning] unused-file — desktop/runtime-host/runtime-session-events.ts:0
Unused file — not reachable from any entry point
322. [warning] unused-file — desktop/runtime-host/settings-service.ts:0
Unused file — not reachable from any entry point
323. [warning] unused-file — desktop/runtime-host/skill-creator-service.ts:0
Unused file — not reachable from any entry point
324. [warning] unused-file — desktop/runtime-host/slash-command-service.ts:0
Unused file — not reachable from any entry point
325. [warning] unused-file — desktop/runtime-host/theme-service.ts:0
Unused file — not reachable from any entry point
326. [warning] unused-file — desktop/runtime-host/thread-snapshot-service.ts:0
Unused file — not reachable from any entry point
327. [warning] unused-file — desktop/runtime-host/worker.ts:0
Unused file — not reachable from any entry point
328. [warning] unused-file — desktop/runtime/agent-session-extensions.ts:0
Unused file — not reachable from any entry point
329. [warning] unused-file — desktop/runtime/artifact-tools.ts:0
Unused file — not reachable from any entry point
330. [warning] unused-file — desktop/runtime/chat-system-prompt.ts:0
Unused file — not reachable from any entry point
331. [warning] unused-file — desktop/runtime/composer-dequeue.ts:0
Unused file — not reachable from any entry point
332. [warning] unused-file — desktop/runtime/composer-mode-settings.ts:0
Unused file — not reachable from any entry point
333. [warning] unused-file — desktop/runtime/composer-queue.ts:0
Unused file — not reachable from any entry point
334. [warning] unused-file — desktop/runtime/composer-service.ts:0
Unused file — not reachable from any entry point
335. [warning] unused-file — desktop/runtime/composer-state.ts:0
Unused file — not reachable from any entry point
336. [warning] unused-file — desktop/runtime/composer-stop.ts:0
Unused file — not reachable from any entry point
337. [warning] unused-file — desktop/runtime/headless-pi-theme.ts:0
Unused file — not reachable from any entry point
338. [warning] unused-file — desktop/runtime/native-ask-questions-state.ts:0
Unused file — not reachable from any entry point
339. [warning] unused-file — desktop/runtime/registry/runtime-registry-state.ts:0
Unused file — not reachable from any entry point
340. [warning] unused-file — desktop/runtime/runtime-registry.ts:0
Unused file — not reachable from any entry point
341. [warning] unused-file — desktop/runtime/runtime-session-events.ts:0
Unused file — not reachable from any entry point
342. [warning] unused-file — desktop/runtime/runtime-settings-cwd.ts:0
Unused file — not reachable from any entry point
343. [warning] unused-file — desktop/runtime/session-path-index.ts:0
Unused file — not reachable from any entry point
344. [warning] unused-file — desktop/runtime/settings-refresh.ts:0
Unused file — not reachable from any entry point
345. [warning] unused-file — desktop/runtime/slash-commands.ts:0
Unused file — not reachable from any entry point
346. [warning] unused-file — desktop/runtime/thread-publisher.ts:0
Unused file — not reachable from any entry point
347. [warning] unused-file — desktop/service-host-runtime.ts:0
Unused file — not reachable from any entry point
348. [warning] unused-file — desktop/service-host.ts:0
Unused file — not reachable from any entry point
349. [warning] unused-file — desktop/skill-creator-session.ts:0
Unused file — not reachable from any entry point
350. [warning] unused-file — desktop/skills/api.ts:0
Unused file — not reachable from any entry point
351. [warning] unused-file — desktop/skills/catalog.ts:0
Unused file — not reachable from any entry point
352. [warning] unused-file — desktop/skills/configured-skills.ts:0
Unused file — not reachable from any entry point
353. [warning] unused-file — desktop/skills/frontmatter.ts:0
Unused file — not reachable from any entry point
354. [warning] unused-file — desktop/skills/mutations.ts:0
Unused file — not reachable from any entry point
355. [warning] unused-file — desktop/skills/paths.ts:0
Unused file — not reachable from any entry point
356. [warning] unused-file — desktop/skills/runtime-host-bridge.ts:0
Unused file — not reachable from any entry point
357. [warning] unused-file — desktop/skills/source.ts:0
Unused file — not reachable from any entry point
358. [warning] unused-file — desktop/system-open-path.ts:0
Unused file — not reachable from any entry point
359. [warning] unused-file — desktop/terminal/manager.ts:0
Unused file — not reachable from any entry point
360. [warning] unused-file — desktop/terminal/node-pty.ts:0
Unused file — not reachable from any entry point
361. [warning] unused-file — desktop/terminal/session-history.helpers.ts:0
Unused file — not reachable from any entry point
362. [warning] unused-file — desktop/terminal/session-history.ts:0
Unused file — not reachable from any entry point
363. [warning] unused-file — desktop/terminal/session-id.ts:0
Unused file — not reachable from any entry point
364. [warning] unused-file — desktop/terminal/session-record.ts:0
Unused file — not reachable from any entry point
365. [warning] unused-file — desktop/terminal/session-store.ts:0
Unused file — not reachable from any entry point
366. [warning] unused-file — desktop/terminal/terminal-command.helpers.ts:0
Unused file — not reachable from any entry point
367. [warning] unused-file — desktop/terminal/terminal-command.ts:0
Unused file — not reachable from any entry point
368. [warning] unused-file — desktop/terminal/terminal-process.ts:0
Unused file — not reachable from any entry point
369. [warning] unused-file — desktop/terminal/terminal-visibility.ts:0
Unused file — not reachable from any entry point
370. [warning] unused-file — desktop/terminal/types.ts:0
Unused file — not reachable from any entry point
371. [warning] unused-file — pages/src/main.tsx:0
Unused file — not reachable from any entry point
372. [warning] unused-file — shared/dictation-helpers.ts:0
Unused file — not reachable from any entry point
373. [warning] unused-file — shared/dictation-models.ts:0
Unused file — not reachable from any entry point
374. [wa
---
_Issue body truncated. See the full report at [react.review/dashboard](https://react.review/dashboard)._
Copy as prompt