GitHub check

256 KB of 597 KB loaded Download the full log (597 KB)
341 KB of earlier output not loaded
     );
2026-10-24T05:20:08.8661449Z  241 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T05:20:08.8661585Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8661839Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-24T05:20:08.8661956Z  242 โ”‚   const acceptNativeEvent = useCallback(
2026-10-24T05:20:08.8662006Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8662417Z   help: Missing dependencies can cause an effect to fire less often than it should. Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8662722Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8662725Z
2026-10-24T05:20:08.8662869Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8663010Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T05:20:08.8663135Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T05:20:08.8663247Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T05:20:08.8663364Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8663527Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8663582Z  163 โ”‚     });
2026-10-24T05:20:08.8663634Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8664089Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8664375Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8664380Z
2026-10-24T05:20:08.8664522Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8664661Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T05:20:08.8664783Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T05:20:08.8664892Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T05:20:08.8665005Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8665207Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8665262Z  163 โ”‚     });
2026-10-24T05:20:08.8665313Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8665810Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8666128Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8666132Z
2026-10-24T05:20:08.8666273Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8666413Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:164:23]
2026-10-24T05:20:08.8666469Z  163 โ”‚     });
2026-10-24T05:20:08.8666556Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T05:20:08.8666680Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8666869Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:20:08.8666985Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:20:08.8667056Z  165 โ”‚     return JSON.stringify(
2026-10-24T05:20:08.8667107Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8667559Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8667843Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8667846Z
2026-10-24T05:20:08.8667991Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8668135Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:206:5]
2026-10-24T05:20:08.8668208Z  205 โ”‚     mostRecentEventCount,
2026-10-24T05:20:08.8668294Z  206 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T05:20:08.8668400Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8668583Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8668640Z  207 โ”‚   );
2026-10-24T05:20:08.8668690Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8669138Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8669423Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8669428Z
2026-10-24T05:20:08.8669596Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8669734Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:212:5]
2026-10-24T05:20:08.8669804Z  211 โ”‚     mostRecentEventCount,
2026-10-24T05:20:08.8669890Z  212 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T05:20:08.8669990Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8670174Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8670230Z  213 โ”‚   );
2026-10-24T05:20:08.8670283Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8670777Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8671148Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8671151Z
2026-10-24T05:20:08.8671335Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T05:20:08.8671473Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:197:6]
2026-10-24T05:20:08.8671592Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T05:20:08.8671699Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T05:20:08.8671809Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8672270Z      ยท                                      โ•ฐโ”€โ”€ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8672329Z  163 โ”‚     });
2026-10-24T05:20:08.8672417Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T05:20:08.8672486Z  165 โ”‚     return JSON.stringify(
2026-10-24T05:20:08.8672648Z  166 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T05:20:08.8672714Z  167 โ”‚         const record =
2026-10-24T05:20:08.8672791Z  168 โ”‚           token.type === "context"
2026-10-24T05:20:08.8672952Z  169 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T05:20:08.8673017Z  170 โ”‚             : undefined;
2026-10-24T05:20:08.8673130Z  171 โ”‚         const presentation = contextChipPresentation(
2026-10-24T05:20:08.8673240Z  172 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-24T05:20:08.8673304Z  173 โ”‚           record,
2026-10-24T05:20:08.8673362Z  174 โ”‚         );
2026-10-24T05:20:08.8673444Z  175 โ”‚         const icon = contextChipIcon(
2026-10-24T05:20:08.8673510Z  176 โ”‚           presentation,
2026-10-24T05:20:08.8673651Z  177 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T05:20:08.8673708Z  178 โ”‚         );
2026-10-24T05:20:08.8673770Z  179 โ”‚         return {
2026-10-24T05:20:08.8673839Z  180 โ”‚           type: token.type,
2026-10-24T05:20:08.8673912Z  181 โ”‚           source: token.source,
2026-10-24T05:20:08.8673984Z  182 โ”‚           start: token.start,
2026-10-24T05:20:08.8674049Z  183 โ”‚           end: token.end,
2026-10-24T05:20:08.8674199Z  184 โ”‚           accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T05:20:08.8674264Z  185 โ”‚           label:
2026-10-24T05:20:08.8674340Z  186 โ”‚             token.type === "skill"
2026-10-24T05:20:08.8674447Z  187 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T05:20:08.8674527Z  188 โ”‚               : token.type === "context"
2026-10-24T05:20:08.8674762Z  189 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-24T05:20:08.8674848Z  190 โ”‚                 : basename(token.value),
2026-10-24T05:20:08.8674990Z  191 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T05:20:08.8675080Z  192 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-24T05:20:08.8675166Z  193 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-24T05:20:08.8675224Z  194 โ”‚         };
2026-10-24T05:20:08.8675348Z  195 โ”‚       }),
2026-10-24T05:20:08.8675441Z  196 โ”‚     );
2026-10-24T05:20:08.8675571Z  197 โ”‚   }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T05:20:08.8675724Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8675928Z      ยท                                     โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8676063Z  198 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-24T05:20:08.8676115Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8676317Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T05:20:08.8676624Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8676632Z
2026-10-24T05:20:08.8676817Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T05:20:08.8676956Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:259:5]
2026-10-24T05:20:08.8677085Z  251 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T05:20:08.8677185Z  252 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-24T05:20:08.8677275Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8677723Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8677812Z  253 โ”‚         eventCount: acknowledgedEventCount,
2026-10-24T05:20:08.8677878Z  254 โ”‚         value,
2026-10-24T05:20:08.8677959Z  255 โ”‚         selection: nextSelection,
2026-10-24T05:20:08.8678015Z  256 โ”‚       });
2026-10-24T05:20:08.8678097Z  257 โ”‚       return acknowledgedEventCount;
2026-10-24T05:20:08.8678152Z  258 โ”‚     },
2026-10-24T05:20:08.8678206Z  259 โ”‚     [],
2026-10-24T05:20:08.8678274Z      ยท     โ”€โ”ฌ
2026-10-24T05:20:08.8678452Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8678506Z  260 โ”‚   );
2026-10-24T05:20:08.8678556Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8678758Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T05:20:08.8679062Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8679070Z
2026-10-24T05:20:08.8679326Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8679489Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:215:7]
2026-10-24T05:20:08.8679542Z  211 โ”‚   };
2026-10-24T05:20:08.8679644Z  212 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8679715Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8679844Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8680015Z  213 โ”‚     const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-24T05:20:08.8680078Z  214 โ”‚     if (inserted) {
2026-10-24T05:20:08.8680153Z  215 โ”‚       setSelection((current) =>
2026-10-24T05:20:08.8680232Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8680450Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8680646Z  216 โ”‚         current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-24T05:20:08.8680696Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8681281Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8681595Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8681599Z
2026-10-24T05:20:08.8681854Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8682016Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:296:7]
2026-10-24T05:20:08.8682091Z  284 โ”‚   }, [hasWorkspaceSnapshot]);
2026-10-24T05:20:08.8682156Z  285 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8682224Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8682351Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8682496Z  286 โ”‚     if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-24T05:20:08.8682642Z  287 โ”‚     const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-24T05:20:08.8682711Z  288 โ”‚     const now = Date.now();
2026-10-24T05:20:08.8682825Z  289 โ”‚     const lastRequest = workspaceRefreshKeyRef.current;
2026-10-24T05:20:08.8682887Z  290 โ”‚     if (
2026-10-24T05:20:08.8682966Z  291 โ”‚       lastRequest?.key === key &&
2026-10-24T05:20:08.8683101Z  292 โ”‚       now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-24T05:20:08.8683155Z  293 โ”‚     )
2026-10-24T05:20:08.8683215Z  294 โ”‚       return;
2026-10-24T05:20:08.8683388Z  295 โ”‚     if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-24T05:20:08.8683472Z  296 โ”‚       setWorkspaceRefreshRetry(null);
2026-10-24T05:20:08.8683566Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8683739Z      ยท                   โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8683799Z  297 โ”‚       return;
2026-10-24T05:20:08.8683849Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8684438Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8684753Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8684756Z
2026-10-24T05:20:08.8684953Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8685113Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:326:5]
2026-10-24T05:20:08.8685167Z  325 โ”‚   }, [
2026-10-24T05:20:08.8685236Z  326 โ”‚     draftMessage,
2026-10-24T05:20:08.8685312Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8685503Z      ยท           โ•ฐโ”€โ”€ Unnecessary dependency `draftMessage`
2026-10-24T05:20:08.8685602Z  327 โ”‚     environmentId,
2026-10-24T05:20:08.8685654Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8685940Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8686241Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8686244Z
2026-10-24T05:20:08.8686497Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8686667Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-24T05:20:08.8686721Z  118 โ”‚
2026-10-24T05:20:08.8686790Z  119 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8686860Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8686988Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8687070Z  120 โ”‚     if (orientationSettled) return;
2026-10-24T05:20:08.8687180Z  121 โ”‚     const orientation = getNativeShowcaseOrientation();
2026-10-24T05:20:08.8687252Z  122 โ”‚     if (orientation === null) {
2026-10-24T05:20:08.8687333Z  123 โ”‚       setOrientationSettled(true);
2026-10-24T05:20:08.8687421Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8687590Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8687647Z  124 โ”‚       return;
2026-10-24T05:20:08.8687700Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8688296Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8688612Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8688615Z
2026-10-24T05:20:08.8688867Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8689033Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:304:7]
2026-10-24T05:20:08.8689088Z  292 โ”‚
2026-10-24T05:20:08.8689151Z  293 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8689221Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8689395Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8689482Z  294 โ”‚     if (
2026-10-24T05:20:08.8689548Z  295 โ”‚       scene === null ||
2026-10-24T05:20:08.8689636Z  296 โ”‚       requestedScene === null ||
2026-10-24T05:20:08.8689739Z  297 โ”‚       scene !== requestedScene ||
2026-10-24T05:20:08.8689803Z  298 โ”‚       !hasFixture ||
2026-10-24T05:20:08.8689875Z  299 โ”‚       !orientationSettled ||
2026-10-24T05:20:08.8689941Z  300 โ”‚       !themeApplied ||
2026-10-24T05:20:08.8690055Z  301 โ”‚       (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-24T05:20:08.8690187Z  302 โ”‚       !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-24T05:20:08.8690242Z  303 โ”‚     ) {
2026-10-24T05:20:08.8690309Z  304 โ”‚       setReadyScene(null);
2026-10-24T05:20:08.8690388Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8690561Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8690623Z  305 โ”‚       return;
2026-10-24T05:20:08.8690673Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8691252Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8691568Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8691570Z
2026-10-24T05:20:08.8691839Z   โš  eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8692008Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-24T05:20:08.8692075Z  127 โ”‚     let cancelled = false;
2026-10-24T05:20:08.8692166Z  128 โ”‚     let lastOutcome: string | null = null;
2026-10-24T05:20:08.8692245Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8692378Z      ยท              โ•ฐโ”€โ”€ 'lastOutcome' is declared here
2026-10-24T05:20:08.8692551Z  129 โ”‚     void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-24T05:20:08.8692601Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8692705Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8692708Z
2026-10-24T05:20:08.8692959Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8693134Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:329:7]
2026-10-24T05:20:08.8693189Z  324 โ”‚   };
2026-10-24T05:20:08.8693253Z  325 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8693323Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8693449Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8693545Z  326 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-24T05:20:08.8693638Z  327 โ”‚       requestedSection.current = "overview";
2026-10-24T05:20:08.8693801Z  328 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T05:20:08.8693873Z  329 โ”‚       setSection("overview");
2026-10-24T05:20:08.8693945Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8694162Z      ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8694249Z  330 โ”‚     }
2026-10-24T05:20:08.8694299Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8694885Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8695200Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8695202Z
2026-10-24T05:20:08.8695402Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T05:20:08.8695570Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:331:6]
2026-10-24T05:20:08.8695670Z  326 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-24T05:20:08.8695765Z  327 โ”‚       requestedSection.current = "overview";
2026-10-24T05:20:08.8695845Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8696284Z      ยท               โ•ฐโ”€โ”€ Missing dependency `requestedSection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8696445Z  328 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T05:20:08.8696591Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8697080Z      ยท                โ”‚                          โ•ฐโ”€โ”€ Missing dependency `scrollOffsets`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8697517Z      ยท                โ•ฐโ”€โ”€ Missing dependency `currentScrollOffset`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8697590Z  329 โ”‚       setSection("overview");
2026-10-24T05:20:08.8697644Z  330 โ”‚     }
2026-10-24T05:20:08.8697738Z  331 โ”‚   }, [guidesEnabled, section, insets.top]);
2026-10-24T05:20:08.8697850Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8698038Z      ยท                        โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8698128Z  332 โ”‚   const tabContent = activityContent;
2026-10-24T05:20:08.8698182Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8698345Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T05:20:08.8698651Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8698653Z
2026-10-24T05:20:08.8698853Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T05:20:08.8699020Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:868:6]
2026-10-24T05:20:08.8699079Z  851 โ”‚     if (
2026-10-24T05:20:08.8699195Z  852 โ”‚       lastSelection.current.path === route.params.path &&
2026-10-24T05:20:08.8699273Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8699833Z      ยท             โ•ฐโ”€โ”€ Missing dependency `lastSelection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8699987Z  853 โ”‚       lastSelection.current.id === route.params.fileSelectionId
2026-10-24T05:20:08.8700041Z  854 โ”‚     )
2026-10-24T05:20:08.8700101Z  855 โ”‚       return;
2026-10-24T05:20:08.8700271Z  856 โ”‚     lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
2026-10-24T05:20:08.8700403Z  857 โ”‚     if (route.params.focus) navigation.setParams({ focus: undefined });
2026-10-24T05:20:08.8700489Z  858 โ”‚     setJumpPath(route.params.path);
2026-10-24T05:20:08.8700559Z  859 โ”‚     setSelectedRowId(null);
2026-10-24T05:20:08.8700636Z  860 โ”‚     jumpStarted.current = false;
2026-10-24T05:20:08.8700783Z  861 โ”‚     const file = data.files.find((entry) => entry.path === route.params.path);
2026-10-24T05:20:08.8700880Z  862 โ”‚     if (!file || !nativeView.current) return;
2026-10-24T05:20:08.8700967Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8701393Z      ยท                        โ•ฐโ”€โ”€ Missing dependency `nativeView`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8701515Z  863 โ”‚     setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
2026-10-24T05:20:08.8701593Z  864 โ”‚     jumpStarted.current = true;
2026-10-24T05:20:08.8701727Z  865 โ”‚     void nativeView.current.scrollToFile(file.id, false).catch(() => {
2026-10-24T05:20:08.8701807Z  866 โ”‚       jumpStarted.current = false;
2026-10-24T05:20:08.8701861Z  867 โ”‚     });
2026-10-24T05:20:08.8702061Z  868 โ”‚   }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
2026-10-24T05:20:08.8702268Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8702485Z      ยท                                                    โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8702593Z  869 โ”‚   const appliedFilter = useRef(filter.hideTestFiles);
2026-10-24T05:20:08.8702645Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8702809Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T05:20:08.8703112Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8703115Z
2026-10-24T05:20:08.8703318Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T05:20:08.8703454Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:231:6]
2026-10-24T05:20:08.8703614Z  227 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T05:20:08.8703702Z  228 โ”‚       nativeEventSnapshotsRef.current,
2026-10-24T05:20:08.8703791Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8704241Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8704314Z  229 โ”‚       mostRecentEventCount,
2026-10-24T05:20:08.8704369Z  230 โ”‚     );
2026-10-24T05:20:08.8704548Z  231 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T05:20:08.8704712Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8704907Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8704988Z  232 โ”‚   const assumedValue = props.value;
2026-10-24T05:20:08.8705038Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8705201Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T05:20:08.8705502Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8705505Z
2026-10-24T05:20:08.8705712Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T05:20:08.8705850Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:239:7]
2026-10-24T05:20:08.8705994Z  238 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T05:20:08.8706080Z  239 โ”‚       nativeEventSnapshotsRef.current,
2026-10-24T05:20:08.8706170Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8706617Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8706689Z  240 โ”‚       controlledEventCount,
2026-10-24T05:20:08.8706751Z  241 โ”‚       assumedValue,
2026-10-24T05:20:08.8706804Z  242 โ”‚     );
2026-10-24T05:20:08.8706959Z  243 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T05:20:08.8707100Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8707304Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-24T05:20:08.8707391Z  244 โ”‚   const acceptNativeEvent = useCallback(
2026-10-24T05:20:08.8707443Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8707854Z   help: Missing dependencies can cause an effect to fire less often than it should. Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8708161Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8708163Z
2026-10-24T05:20:08.8708353Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8708518Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T05:20:08.8708640Z  163 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T05:20:08.8708749Z  164 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T05:20:08.8708863Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8709025Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8709080Z  165 โ”‚     });
2026-10-24T05:20:08.8709131Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8709600Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8709911Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8709913Z
2026-10-24T05:20:08.8710057Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8710190Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T05:20:08.8710309Z  163 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T05:20:08.8710417Z  164 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T05:20:08.8710531Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8710732Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8710791Z  165 โ”‚     });
2026-10-24T05:20:08.8710843Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8711339Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8711628Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8711631Z
2026-10-24T05:20:08.8711773Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8711904Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:166:23]
2026-10-24T05:20:08.8711957Z  165 โ”‚     });
2026-10-24T05:20:08.8712045Z  166 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T05:20:08.8712171Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8712356Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:20:08.8712473Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:20:08.8712573Z  167 โ”‚     return JSON.stringify(
2026-10-24T05:20:08.8712633Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8713088Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8713368Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8713439Z
2026-10-24T05:20:08.8713617Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8713749Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:208:5]
2026-10-24T05:20:08.8713818Z  207 โ”‚     mostRecentEventCount,
2026-10-24T05:20:08.8713905Z  208 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T05:20:08.8714008Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8714191Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8714245Z  209 โ”‚   );
2026-10-24T05:20:08.8714296Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8714754Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8715039Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8715042Z
2026-10-24T05:20:08.8715180Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8715311Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:214:5]
2026-10-24T05:20:08.8715379Z  213 โ”‚     mostRecentEventCount,
2026-10-24T05:20:08.8715464Z  214 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T05:20:08.8715568Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8715750Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8715803Z  215 โ”‚   );
2026-10-24T05:20:08.8715858Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8716310Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8716592Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8716594Z
2026-10-24T05:20:08.8716777Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T05:20:08.8716908Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:199:6]
2026-10-24T05:20:08.8717030Z  163 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T05:20:08.8717139Z  164 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T05:20:08.8717253Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8717705Z      ยท                                      โ•ฐโ”€โ”€ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8717761Z  165 โ”‚     });
2026-10-24T05:20:08.8717849Z  166 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T05:20:08.8717917Z  167 โ”‚     return JSON.stringify(
2026-10-24T05:20:08.8718076Z  168 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T05:20:08.8718143Z  169 โ”‚         const record =
2026-10-24T05:20:08.8718223Z  170 โ”‚           token.type === "context"
2026-10-24T05:20:08.8718433Z  171 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T05:20:08.8718526Z  172 โ”‚             : undefined;
2026-10-24T05:20:08.8718632Z  173 โ”‚         const presentation = contextChipPresentation(
2026-10-24T05:20:08.8718741Z  174 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-24T05:20:08.8718804Z  175 โ”‚           record,
2026-10-24T05:20:08.8718862Z  176 โ”‚         );
2026-10-24T05:20:08.8718943Z  177 โ”‚         const icon = contextChipIcon(
2026-10-24T05:20:08.8719009Z  178 โ”‚           presentation,
2026-10-24T05:20:08.8719149Z  179 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T05:20:08.8719206Z  180 โ”‚         );
2026-10-24T05:20:08.8719267Z  181 โ”‚         return {
2026-10-24T05:20:08.8719336Z  182 โ”‚           type: token.type,
2026-10-24T05:20:08.8719409Z  183 โ”‚           source: token.source,
2026-10-24T05:20:08.8719486Z  184 โ”‚           start: token.start,
2026-10-24T05:20:08.8719599Z  185 โ”‚           end: token.end,
2026-10-24T05:20:08.8719759Z  186 โ”‚           accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T05:20:08.8719819Z  187 โ”‚           label:
2026-10-24T05:20:08.8719894Z  188 โ”‚             token.type === "skill"
2026-10-24T05:20:08.8719999Z  189 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T05:20:08.8720080Z  190 โ”‚               : token.type === "context"
2026-10-24T05:20:08.8720309Z  191 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-24T05:20:08.8720389Z  192 โ”‚                 : basename(token.value),
2026-10-24T05:20:08.8720529Z  193 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T05:20:08.8720620Z  194 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-24T05:20:08.8720712Z  195 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-24T05:20:08.8720771Z  196 โ”‚         };
2026-10-24T05:20:08.8720829Z  197 โ”‚       }),
2026-10-24T05:20:08.8720884Z  198 โ”‚     );
2026-10-24T05:20:08.8721014Z  199 โ”‚   }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T05:20:08.8721165Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8721366Z      ยท                                     โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8721504Z  200 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-24T05:20:08.8721555Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8721756Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T05:20:08.8722068Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8722073Z
2026-10-24T05:20:08.8722256Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T05:20:08.8722390Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:261:5]
2026-10-24T05:20:08.8722520Z  253 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T05:20:08.8722619Z  254 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-24T05:20:08.8722709Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8723211Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T05:20:08.8723331Z  255 โ”‚         eventCount: acknowledgedEventCount,
2026-10-24T05:20:08.8723391Z  256 โ”‚         value,
2026-10-24T05:20:08.8723468Z  257 โ”‚         selection: nextSelection,
2026-10-24T05:20:08.8723525Z  258 โ”‚       });
2026-10-24T05:20:08.8723608Z  259 โ”‚       return acknowledgedEventCount;
2026-10-24T05:20:08.8723661Z  260 โ”‚     },
2026-10-24T05:20:08.8723716Z  261 โ”‚     [],
2026-10-24T05:20:08.8723784Z      ยท     โ”€โ”ฌ
2026-10-24T05:20:08.8723961Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:20:08.8724015Z  262 โ”‚   );
2026-10-24T05:20:08.8724067Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8724271Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T05:20:08.8724582Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8724587Z
2026-10-24T05:20:08.8724781Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8724911Z     โ•ญโ”€[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T05:20:08.8724967Z  81 โ”‚     },
2026-10-24T05:20:08.8725029Z  82 โ”‚     [draftKey],
2026-10-24T05:20:08.8725099Z     ยท      โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8725235Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `draftKey`
2026-10-24T05:20:08.8725290Z  83 โ”‚   );
2026-10-24T05:20:08.8725342Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8725634Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8725937Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8725940Z
2026-10-24T05:20:08.8726120Z   โš  react(static-components): Cannot create components during render
2026-10-24T05:20:08.8726280Z      โ•ญโ”€[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
2026-10-24T05:20:08.8726366Z  196 โ”‚   const { onInput, onResize } = props;
2026-10-24T05:20:08.8726510Z  197 โ”‚   const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
2026-10-24T05:20:08.8726640Z      ยท                                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8726872Z      ยท                                                     โ•ฐโ”€โ”€ The component is created during render here
2026-10-24T05:20:08.8727028Z  198 โ”‚   const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
2026-10-24T05:20:08.8727081Z  199 โ”‚
2026-10-24T05:20:08.8727147Z  200 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8727232Z  201 โ”‚     terminalDebugLog("native:surface", {
2026-10-24T05:20:08.8727314Z  202 โ”‚       terminalKey: props.terminalKey,
2026-10-24T05:20:08.8727390Z  203 โ”‚       native: hasNativeSurface,
2026-10-24T05:20:08.8727522Z  204 โ”‚       hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
2026-10-24T05:20:08.8727604Z  205 โ”‚       bufferLen: props.buffer.length,
2026-10-24T05:20:08.8727681Z  206 โ”‚       isRunning: props.isRunning,
2026-10-24T05:20:08.8727737Z  207 โ”‚     });
2026-10-24T05:20:08.8727895Z  208 โ”‚   }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
2026-10-24T05:20:08.8727985Z  209 โ”‚   const handleNativeInput = useCallback(
2026-10-24T05:20:08.8728099Z  210 โ”‚     (event: NativeSyntheticEvent<TerminalInputEvent>) => {
2026-10-24T05:20:08.8728196Z  211 โ”‚       if (!props.isRunning || props.readOnly) {
2026-10-24T05:20:08.8728258Z  212 โ”‚         return;
2026-10-24T05:20:08.8728313Z  213 โ”‚       }
2026-10-24T05:20:08.8728400Z  214 โ”‚       terminalDebugLog("native:onInput", {
2026-10-24T05:20:08.8728547Z  215 โ”‚         codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
2026-10-24T05:20:08.8728604Z  216 โ”‚       });
2026-10-24T05:20:08.8728689Z  217 โ”‚       onInput(event.nativeEvent.data);
2026-10-24T05:20:08.8728742Z  218 โ”‚     },
2026-10-24T05:20:08.8728840Z  219 โ”‚     [onInput, props.isRunning, props.readOnly],
2026-10-24T05:20:08.8728893Z  220 โ”‚   );
2026-10-24T05:20:08.8728980Z  221 โ”‚   const handleNativeResize = useCallback(
2026-10-24T05:20:08.8729099Z  222 โ”‚     (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
2026-10-24T05:20:08.8729162Z  223 โ”‚       onResize({
2026-10-24T05:20:08.8729244Z  224 โ”‚         cols: event.nativeEvent.cols,
2026-10-24T05:20:08.8729325Z  225 โ”‚         rows: event.nativeEvent.rows,
2026-10-24T05:20:08.8729380Z  226 โ”‚       });
2026-10-24T05:20:08.8729437Z  227 โ”‚     },
2026-10-24T05:20:08.8729499Z  228 โ”‚     [onResize],
2026-10-24T05:20:08.8729562Z  229 โ”‚   );
2026-10-24T05:20:08.8729613Z  230 โ”‚
2026-10-24T05:20:08.8729723Z  231 โ”‚   if (NativeTerminalSurfaceView) {
2026-10-24T05:20:08.8729781Z  232 โ”‚     return (
2026-10-24T05:20:08.8729856Z  233 โ”‚       <View style={props.style}>
2026-10-24T05:20:08.8729937Z  234 โ”‚         <NativeTerminalSurfaceView
2026-10-24T05:20:08.8730043Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8730204Z      ยท                      โ•ฐโ”€โ”€ This component is created during render
2026-10-24T05:20:08.8730298Z  235 โ”‚           appearanceScheme={themeAppearance}
2026-10-24T05:20:08.8730351Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8730597Z   help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-24T05:20:08.8730907Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T05:20:08.8730909Z
2026-10-24T05:20:08.8731163Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8731318Z      โ•ญโ”€[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-24T05:20:08.8731484Z  112 โ”‚   const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-24T05:20:08.8731600Z  113 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8731700Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8731827Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8731988Z  114 โ”‚     if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-24T05:20:08.8732048Z  115 โ”‚       return;
2026-10-24T05:20:08.8732102Z  116 โ”‚     }
2026-10-24T05:20:08.8732216Z  117 โ”‚     setEntry({ key: input.targetKey, location: candidate });
2026-10-24T05:20:08.8732291Z      ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8732457Z      ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8732578Z  118 โ”‚   }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-24T05:20:08.8732627Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8733221Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8733539Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8733542Z
2026-10-24T05:20:08.8733733Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:20:08.8733889Z     โ•ญโ”€[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-24T05:20:08.8733953Z  71 โ”‚             <Pressable
2026-10-24T05:20:08.8734019Z  72 โ”‚               key={index}
2026-10-24T05:20:08.8734107Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8734192Z  73 โ”‚               accessibilityRole="button"
2026-10-24T05:20:08.8734242Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8734387Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:20:08.8734390Z
2026-10-24T05:20:08.8734642Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8734772Z      โ•ญโ”€[apps/mobile/src/components/ProjectFavicon.tsx:172:5]
2026-10-24T05:20:08.8734956Z  167 โ”‚   const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-24T05:20:08.8735026Z  168 โ”‚   useLayoutEffect(() => {
2026-10-24T05:20:08.8735103Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8735239Z      ยท          โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8735325Z  169 โ”‚     if (faviconRequest === null) return;
2026-10-24T05:20:08.8735378Z  170 โ”‚
2026-10-24T05:20:08.8735509Z  171 โ”‚     const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-24T05:20:08.8735605Z  172 โ”‚     setActiveFaviconRequest(faviconRequest);
2026-10-24T05:20:08.8735693Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8735861Z      ยท                โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8735929Z  173 โ”‚     return endRequest;
2026-10-24T05:20:08.8735981Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8736610Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8736958Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8736960Z
2026-10-24T05:20:08.8737211Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8737343Z     โ•ญโ”€[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T05:20:08.8737396Z  57 โ”‚
2026-10-24T05:20:08.8737458Z  58 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8737529Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8737657Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8737751Z  59 โ”‚     const controller = new AbortController();
2026-10-24T05:20:08.8737826Z  60 โ”‚     setLoadState("pending");
2026-10-24T05:20:08.8737903Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8738067Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8738224Z  61 โ”‚     // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T05:20:08.8738274Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8738861Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8739178Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8739183Z
2026-10-24T05:20:08.8739383Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8739517Z     โ•ญโ”€[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T05:20:08.8739606Z  70 โ”‚     return () => controller.abort();
2026-10-24T05:20:08.8739727Z  71 โ”‚   }, [player, props.playRequested, attempt]);
2026-10-24T05:20:08.8739897Z     ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8742181Z     ยท          โ”‚             โ”‚              โ•ฐโ”€โ”€ Unnecessary dependency `attempt`
2026-10-24T05:20:08.8742397Z     ยท          โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `props.playRequested`
2026-10-24T05:20:08.8742544Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `player_0`
2026-10-24T05:20:08.8742597Z  72 โ”‚
2026-10-24T05:20:08.8742647Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8742935Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8743240Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8743243Z
2026-10-24T05:20:08.8743497Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8743642Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-24T05:20:08.8743700Z  61 โ”‚   }, []);
2026-10-24T05:20:08.8743831Z  62 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8743937Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8744062Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8744208Z  63 โ”‚     if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-24T05:20:08.8744328Z     ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8744529Z     ยท                                                              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8744608Z  64 โ”‚   }, [playbackUrl, resolvedUrl]);
2026-10-24T05:20:08.8744659Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8745243Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8745561Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8745563Z
2026-10-24T05:20:08.8745778Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:20:08.8745906Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:114:11]
2026-10-24T05:20:08.8745975Z  113 โ”‚         const declared = {
2026-10-24T05:20:08.8746066Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-24T05:20:08.8746176Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8746283Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-24T05:20:08.8746337Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8746595Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:20:08.8746597Z
2026-10-24T05:20:08.8746812Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:20:08.8746937Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:115:11]
2026-10-24T05:20:08.8747028Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-24T05:20:08.8747129Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-24T05:20:08.8747249Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8747343Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-24T05:20:08.8747394Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8747657Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:20:08.8747661Z
2026-10-24T05:20:08.8747872Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:20:08.8747997Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:116:11]
2026-10-24T05:20:08.8748096Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-24T05:20:08.8748190Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-24T05:20:08.8748302Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8748363Z  117 โ”‚         };
2026-10-24T05:20:08.8748413Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8748718Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:20:08.8748753Z
2026-10-24T05:20:08.8748983Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T05:20:08.8749143Z      โ•ญโ”€[apps/web/src/components/pullRequest/pullRequestList.logic.ts:265:9]
2026-10-24T05:20:08.8749203Z  264 โ”‚ ): boolean {
2026-10-24T05:20:08.8749354Z  265 โ”‚   const labels = entry.labels.map((label) => label.name.trim().toLowerCase());
2026-10-24T05:20:08.8749516Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8749728Z  266 โ”‚   const holds = (label: string) => labels.includes(label.trim().toLowerCase());
2026-10-24T05:20:08.8749802Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8749879Z   help: Switch to `Set`
2026-10-24T05:20:08.8749881Z
2026-10-24T05:20:08.8750086Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8750219Z      โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:533:25]
2026-10-24T05:20:08.8750347Z  532 โ”‚     // range) the boundary string is identical and the chain would die.
2026-10-24T05:20:08.8750437Z  533 โ”‚   }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-24T05:20:08.8750535Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8750699Z      ยท                                โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-24T05:20:08.8750833Z  534 โ”‚   const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-24T05:20:08.8750937Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8751225Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8751534Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8751539Z
2026-10-24T05:20:08.8751703Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8751828Z      โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:524:53]
2026-10-24T05:20:08.8751914Z  523 โ”‚     if (Number.isNaN(wakeAtMs)) return;
2026-10-24T05:20:08.8752069Z  524 โ”‚     const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-24T05:20:08.8752187Z      ยท                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8752349Z      ยท                                                          โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8752492Z  525 โ”‚     const id = setTimeout(() => {
2026-10-24T05:20:08.8752580Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8752859Z   help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8753145Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8753151Z
2026-10-24T05:20:08.8753426Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T05:20:08.8753582Z      โ•ญโ”€[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T05:20:08.8753639Z  162 โ”‚   keys,
2026-10-24T05:20:08.8753710Z  163 โ”‚   overridingProjects = [],
2026-10-24T05:20:08.8753793Z      ยท                        โ”€โ”€
2026-10-24T05:20:08.8753863Z  164 โ”‚   onClearOverrides,
2026-10-24T05:20:08.8753914Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8754225Z   help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T05:20:08.8754227Z
2026-10-24T05:20:08.8754478Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8754648Z        โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:10578:7]
2026-10-24T05:20:08.8754702Z  10577 โ”‚
2026-10-24T05:20:08.8754774Z  10578 โ”‚ const layer: Layer.Layer<
2026-10-24T05:20:08.8754844Z        ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8754970Z        ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T05:20:08.8755069Z  10579 โ”‚   ProviderAdapter.ProviderAdapterV2,
2026-10-24T05:20:08.8755123Z        โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8755226Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8755228Z
2026-10-24T05:20:08.8755451Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T05:20:08.8755620Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:1998:15]
2026-10-24T05:20:08.8755688Z  1997 โ”‚       assert.equal(
2026-10-24T05:20:08.8755832Z  1998 โ”‚         items.filter((item) => item.type === "assistant_message").at(-1)?.text,
2026-10-24T05:20:08.8755910Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8755986Z  1999 โ”‚         "authoritative answer",
2026-10-24T05:20:08.8756037Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8756207Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T05:20:08.8756211Z
2026-10-24T05:20:08.8756671Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8756837Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:3951:7]
2026-10-24T05:20:08.8757016Z  3950 โ”‚           const closeFiber = yield* Scope.close(sessionScope, Exit.void).pipe(Effect.forkScoped);
2026-10-24T05:20:08.8757221Z  3951 โ”‚ โ•ญโ”€โ–ถ       while (!responseLifecycle.includes("failed")) {
2026-10-24T05:20:08.8757328Z  3952 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-24T05:20:08.8757519Z  3953 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-24T05:20:08.8757677Z  3954 โ”‚           const responseExit = yield* Fiber.join(responseFiber);
2026-10-24T05:20:08.8757728Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8757731Z
2026-10-24T05:20:08.8758183Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8758348Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6062:9]
2026-10-24T05:20:08.8758435Z  6061 โ”‚               .pipe(Effect.forkScoped);
2026-10-24T05:20:08.8758613Z  6062 โ”‚ โ•ญโ”€โ–ถ         while (promptGates.length < 1) {
2026-10-24T05:20:08.8758723Z  6063 โ”‚ โ”‚             yield* Effect.yieldNow;
2026-10-24T05:20:08.8758859Z  6064 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-24T05:20:08.8759028Z  6065 โ”‚             assert.isDefined(sessionUpdateHandler, "session update handler must be wired");
2026-10-24T05:20:08.8759079Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8759082Z
2026-10-24T05:20:08.8759528Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8759746Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6197:9]
2026-10-24T05:20:08.8759835Z  6196 โ”‚               .pipe(Effect.forkScoped);
2026-10-24T05:20:08.8760013Z  6197 โ”‚ โ•ญโ”€โ–ถ         while (promptGates.length < 2) {
2026-10-24T05:20:08.8760126Z  6198 โ”‚ โ”‚             yield* Effect.yieldNow;
2026-10-24T05:20:08.8760260Z  6199 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-24T05:20:08.8760422Z  6200 โ”‚             if (sessionUpdateHandler === undefined || capturedMutation.current === null) {
2026-10-24T05:20:08.8760471Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8760473Z
2026-10-24T05:20:08.8760638Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T05:20:08.8760782Z      โ•ญโ”€[apps/server/src/provider/Drivers/CodexDriver.test.ts:466:14]
2026-10-24T05:20:08.8760833Z  465 โ”‚
2026-10-24T05:20:08.8760937Z  466 โ”‚   for (const {} of ["direct", "wrapper"] as const) {
2026-10-24T05:20:08.8761008Z      ยท              โ”€โ”€
2026-10-24T05:20:08.8761062Z  467 โ”‚   }
2026-10-24T05:20:08.8761112Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8761343Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T05:20:08.8761348Z
2026-10-24T05:20:08.8761595Z   โš  eslint(no-unused-vars): Function 'layerClaudeAgentSdkReplayQueryRunner' is declared but never used.
2026-10-24T05:20:08.8761772Z      โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts:960:10]
2026-10-24T05:20:08.8761823Z  959 โ”‚
2026-10-24T05:20:08.8761931Z  960 โ”‚ function layerClaudeAgentSdkReplayQueryRunner(
2026-10-24T05:20:08.8762046Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8762241Z      ยท                            โ•ฐโ”€โ”€ 'layerClaudeAgentSdkReplayQueryRunner' is declared here
2026-10-24T05:20:08.8762342Z  961 โ”‚   transcript: ClaudeAgentSdkReplayTranscript,
2026-10-24T05:20:08.8762441Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8762573Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8762575Z
2026-10-24T05:20:08.8762757Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8762922Z      โ•ญโ”€[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-24T05:20:08.8763002Z  554 โ”‚           assert.deepStrictEqual(
2026-10-24T05:20:08.8763162Z  555 โ”‚             (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T05:20:08.8763280Z      ยท                                                                      โ”ฌ
2026-10-24T05:20:08.8763437Z      ยท                                                                      โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8763501Z  556 โ”‚             [
2026-10-24T05:20:08.8763557Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8763660Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8763662Z
2026-10-24T05:20:08.8763842Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8764013Z       โ•ญโ”€[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-24T05:20:08.8764096Z  1154 โ”‚           assert.deepStrictEqual(
2026-10-24T05:20:08.8764257Z  1155 โ”‚             (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T05:20:08.8764377Z       ยท                                                                      โ”ฌ
2026-10-24T05:20:08.8764534Z       ยท                                                                      โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8764596Z  1156 โ”‚             [
2026-10-24T05:20:08.8764655Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8764756Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8764758Z
2026-10-24T05:20:08.8765083Z   โš  eslint(no-unused-vars): Variable 'layerCodexAppServerClientFactoryCommand' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8765241Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1444:7]
2026-10-24T05:20:08.8765294Z  1443 โ”‚
2026-10-24T05:20:08.8765408Z  1444 โ”‚ const layerCodexAppServerClientFactoryCommand = (
2026-10-24T05:20:08.8765523Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8765726Z       ยท                          โ•ฐโ”€โ”€ 'layerCodexAppServerClientFactoryCommand' is declared here
2026-10-24T05:20:08.8765845Z  1445 โ”‚   options: CodexClient.CodexAppServerClientOptions & {
2026-10-24T05:20:08.8765901Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8766002Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8766005Z
2026-10-24T05:20:08.8766255Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8766411Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1680:7]
2026-10-24T05:20:08.8766463Z  1679 โ”‚
2026-10-24T05:20:08.8766531Z  1680 โ”‚ const layer: Layer.Layer<
2026-10-24T05:20:08.8766601Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8766724Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T05:20:08.8766817Z  1681 โ”‚   ProviderAdapter.ProviderAdapterV2,
2026-10-24T05:20:08.8766867Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8766965Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8767017Z
2026-10-24T05:20:08.8767333Z   โš  eslint(no-unused-vars): Variable 'layerFromProviderAdapter' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8767492Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts:346:7]
2026-10-24T05:20:08.8767545Z  345 โ”‚
2026-10-24T05:20:08.8767642Z  346 โ”‚ const layerFromProviderAdapter: Layer.Layer<
2026-10-24T05:20:08.8767735Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8767899Z      ยท                   โ•ฐโ”€โ”€ 'layerFromProviderAdapter' is declared here
2026-10-24T05:20:08.8767974Z  347 โ”‚   ProviderAdapterRegistryV2,
2026-10-24T05:20:08.8768024Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8768123Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8768125Z
2026-10-24T05:20:08.8768326Z   โš  eslint(no-unsafe-optional-chaining): Unsafe usage of optional chaining
2026-10-24T05:20:08.8768489Z       โ•ญโ”€[apps/server/src/orchestration-v2/ThreadLaunchService.test.ts:1783:8]
2026-10-24T05:20:08.8768552Z  1782 โ”‚     assert.equal(
2026-10-24T05:20:08.8768697Z  1783 โ”‚       (stored.context?.records[0] as { attachmentId: string }).attachmentId,
2026-10-24T05:20:08.8768797Z       ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8768877Z  1784 โ”‚       stored.attachments[0]?.id,
2026-10-24T05:20:08.8768926Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8769092Z   help: If this short-circuits with 'undefined' the evaluation will throw TypeError
2026-10-24T05:20:08.8769095Z
2026-10-24T05:20:08.8769237Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8769391Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T05:20:08.8769608Z  151 โ”‚         <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T05:20:08.8769699Z  152 โ”‚           {props.children(open)}
2026-10-24T05:20:08.8769786Z      ยท                           โ”€โ”€โ”ฌโ”€
2026-10-24T05:20:08.8769942Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8770003Z  153 โ”‚         </View>
2026-10-24T05:20:08.8770053Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8770509Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8770844Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8770929Z
2026-10-24T05:20:08.8771123Z   โš  react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T05:20:08.8771266Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T05:20:08.8771346Z  139 โ”‚       if (action.id !== undefined) {
2026-10-24T05:20:08.8771423Z  140 โ”‚         props.onPressAction?.({
2026-10-24T05:20:08.8771492Z      ยท         โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8771618Z      ยท           โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-24T05:20:08.8771708Z  141 โ”‚           nativeEvent: { event: action.id },
2026-10-24T05:20:08.8771852Z  142 โ”‚         } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T05:20:08.8771906Z  143 โ”‚       }
2026-10-24T05:20:08.8771966Z  144 โ”‚     },
2026-10-24T05:20:08.8772047Z  145 โ”‚     [close, props.onPressAction],
2026-10-24T05:20:08.8772139Z      ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8772347Z      ยท                      โ•ฐโ”€โ”€ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T05:20:08.8772400Z  146 โ”‚   );
2026-10-24T05:20:08.8772456Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8772922Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI. Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T05:20:08.8773228Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8773231Z
2026-10-24T05:20:08.8773414Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8773552Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-24T05:20:08.8773712Z  120 โ”‚   const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-24T05:20:08.8773798Z  121 โ”‚   const dispatch = vi.fn((_: unknown) =>
2026-10-24T05:20:08.8773880Z      ยท                           โ”ฌ
2026-10-24T05:20:08.8774006Z      ยท                           โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8774106Z  122 โ”‚     (options.dispatchGate ?? Effect.void).pipe(
2026-10-24T05:20:08.8774158Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8774255Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8774259Z
2026-10-24T05:20:08.8774442Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8774577Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-24T05:20:08.8774630Z  133 โ”‚   );
2026-10-24T05:20:08.8774734Z  134 โ”‚   const listLocalBranchNames = vi.fn((_: string) =>
2026-10-24T05:20:08.8774828Z      ยท                                       โ”ฌ
2026-10-24T05:20:08.8774966Z      ยท                                       โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8775031Z  135 โ”‚     Effect.succeed(
2026-10-24T05:20:08.8775082Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8775178Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8775181Z
2026-10-24T05:20:08.8775357Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8775545Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-24T05:20:08.8775627Z  177 โ”‚   });
2026-10-24T05:20:08.8775723Z  178 โ”‚   const sendToThread = vi.fn((_: unknown) => {
2026-10-24T05:20:08.8775807Z      ยท                               โ”ฌ
2026-10-24T05:20:08.8775939Z      ยท                               โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8776036Z  179 โ”‚     switch (options.continuation ?? "queued") {
2026-10-24T05:20:08.8776084Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8776182Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8776185Z
2026-10-24T05:20:08.8776364Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8776494Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-24T05:20:08.8776546Z  202 โ”‚   );
2026-10-24T05:20:08.8776646Z  203 โ”‚   const removeWorktree = vi.fn((_: unknown) =>
2026-10-24T05:20:08.8776737Z      ยท                                 โ”ฌ
2026-10-24T05:20:08.8776870Z      ยท                                 โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8776948Z  204 โ”‚     options.removeWorktreeFails
2026-10-24T05:20:08.8777000Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8777098Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8777100Z
2026-10-24T05:20:08.8777275Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8777405Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-24T05:20:08.8777456Z  207 โ”‚   );
2026-10-24T05:20:08.8777556Z  208 โ”‚   const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-24T05:20:08.8777647Z      ยท                                    โ”ฌ
2026-10-24T05:20:08.8777788Z      ยท                                    โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8777873Z  209 โ”‚     options.deleteLocalBranchFails
2026-10-24T05:20:08.8777923Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8778020Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8778022Z
2026-10-24T05:20:08.8778197Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8778328Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-24T05:20:08.8778381Z  212 โ”‚   );
2026-10-24T05:20:08.8778493Z  213 โ”‚   const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-24T05:20:08.8778586Z      ยท                                          โ”ฌ
2026-10-24T05:20:08.8778730Z      ยท                                          โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8778816Z  214 โ”‚     options.fetchWorktreeBaseFails
2026-10-24T05:20:08.8778865Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8778960Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8778962Z
2026-10-24T05:20:08.8779138Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8779269Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-24T05:20:08.8779321Z  253 โ”‚   );
2026-10-24T05:20:08.8779408Z  254 โ”‚   const localStatus = vi.fn((_: unknown) =>
2026-10-24T05:20:08.8779492Z      ยท                              โ”ฌ
2026-10-24T05:20:08.8779663Z      ยท                              โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8779732Z  255 โ”‚     Effect.succeed({
2026-10-24T05:20:08.8779781Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8779928Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8779960Z
2026-10-24T05:20:08.8780139Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:20:08.8780269Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-24T05:20:08.8780320Z  263 โ”‚   );
2026-10-24T05:20:08.8780469Z  264 โ”‚   const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-24T05:20:08.8780557Z      ยท                                โ”ฌ
2026-10-24T05:20:08.8780692Z      ยท                                โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:20:08.8780834Z  265 โ”‚   const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-24T05:20:08.8780883Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8780979Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8780987Z
2026-10-24T05:20:08.8781444Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8781609Z      โ•ญโ”€[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:566:7]
2026-10-24T05:20:08.8781707Z  565 โ”‚           let afterSequence = created[0]!.sequence;
2026-10-24T05:20:08.8781900Z  566 โ”‚ โ•ญโ”€โ–ถ       for (let index = 1; index <= 32; index += 1) {
2026-10-24T05:20:08.8782002Z  567 โ”‚ โ”‚           const nextEvent = {
2026-10-24T05:20:08.8782158Z  568 โ”‚ โ”‚             id: EventId.make(`event:foundation-stream-race:${index}`),
2026-10-24T05:20:08.8782293Z  569 โ”‚ โ”‚             type: "thread.metadata-updated" as const,
2026-10-24T05:20:08.8782385Z  570 โ”‚ โ”‚             threadId,
2026-10-24T05:20:08.8782496Z  571 โ”‚ โ”‚             providerInstanceId,
2026-10-24T05:20:08.8782686Z  572 โ”‚ โ”‚             occurredAt: now,
2026-10-24T05:20:08.8782831Z  573 โ”‚ โ”‚             payload: { ...thread, title: `Race update ${index}` },
2026-10-24T05:20:08.8782957Z  574 โ”‚ โ”‚           } satisfies OrchestrationV2DomainEvent;
2026-10-24T05:20:08.8783068Z  575 โ”‚ โ”‚           const reader = yield* eventSink
2026-10-24T05:20:08.8783187Z  576 โ”‚ โ”‚             .stream({ threadId, afterSequence })
2026-10-24T05:20:08.8783316Z  577 โ”‚ โ”‚             .pipe(Stream.runHead, Effect.forkChild);
2026-10-24T05:20:08.8783426Z  578 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-24T05:20:08.8783585Z  579 โ”‚ โ”‚           const written = yield* eventSink.write({ events: [nextEvent] });
2026-10-24T05:20:08.8783715Z  580 โ”‚ โ”‚           const received = yield* Fiber.join(reader);
2026-10-24T05:20:08.8783829Z  581 โ”‚ โ”‚           if (Option.isNone(received)) {
2026-10-24T05:20:08.8784024Z  582 โ”‚ โ”‚             return yield* Effect.die("The event stream ended before delivering the live event.");
2026-10-24T05:20:08.8784101Z  583 โ”‚ โ”‚           }
2026-10-24T05:20:08.8784257Z  584 โ”‚ โ”‚           assert.equal(received.value.sequence, written[0]?.sequence);
2026-10-24T05:20:08.8784398Z  585 โ”‚ โ”‚           assert.equal(received.value.event.id, nextEvent.id);
2026-10-24T05:20:08.8784524Z  586 โ”‚ โ”‚           afterSequence = received.value.sequence;
2026-10-24T05:20:08.8784700Z  587 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-24T05:20:08.8784786Z  588 โ”‚         }),
2026-10-24T05:20:08.8784835Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8784838Z
2026-10-24T05:20:08.8785289Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8785459Z       โ•ญโ”€[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:2327:9]
2026-10-24T05:20:08.8785533Z  2326 โ”‚             let settled = false;
2026-10-24T05:20:08.8785690Z  2327 โ”‚ โ•ญโ”€โ–ถ         while (!settled) {
2026-10-24T05:20:08.8785851Z  2328 โ”‚ โ”‚             settled = (yield* outbox.listByCommandId(commandId)).every(
2026-10-24T05:20:08.8785983Z  2329 โ”‚ โ”‚               (effect) => effect.status === "succeeded",
2026-10-24T05:20:08.8786063Z  2330 โ”‚ โ”‚             );
2026-10-24T05:20:08.8786184Z  2331 โ”‚ โ”‚             if (!settled) yield* Effect.yieldNow;
2026-10-24T05:20:08.8786317Z  2332 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-24T05:20:08.8786432Z  2333 โ”‚           }).pipe(Effect.provide(layerWorker), Effect.scoped);
2026-10-24T05:20:08.8786483Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8786486Z
2026-10-24T05:20:08.8786773Z   โš  eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8786895Z      โ•ญโ”€[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-24T05:20:08.8786951Z  217 โ”‚
2026-10-24T05:20:08.8787096Z  218 โ”‚ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-24T05:20:08.8787183Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8787341Z      ยท                 โ•ฐโ”€โ”€ 'revokeActiveMcpThread' is declared here
2026-10-24T05:20:08.8787524Z  219 โ”‚   activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-24T05:20:08.8787574Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8787674Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8787677Z
2026-10-24T05:20:08.8787978Z   โš  eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8788097Z      โ•ญโ”€[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-24T05:20:08.8788148Z  220 โ”‚
2026-10-24T05:20:08.8788282Z  221 โ”‚ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-24T05:20:08.8788385Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8788560Z      ยท                     โ•ฐโ”€โ”€ 'revokeAllActiveMcpCredentials' is declared here
2026-10-24T05:20:08.8788719Z  222 โ”‚   activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-24T05:20:08.8788768Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8788869Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8788871Z
2026-10-24T05:20:08.8789132Z   โš  eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8789265Z      โ•ญโ”€[apps/server/src/orchestration-v2/EffectWorker.ts:914:7]
2026-10-24T05:20:08.8789315Z  913 โ”‚
2026-10-24T05:20:08.8789548Z  914 โ”‚ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
2026-10-24T05:20:08.8789695Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8789902Z      ยท            โ•ฐโ”€โ”€ 'layerDaemon' is declared here
2026-10-24T05:20:08.8789987Z  915 โ”‚   runDaemon.pipe(Effect.forkScoped),
2026-10-24T05:20:08.8790036Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8790134Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8790137Z
2026-10-24T05:20:08.8790407Z   โš  eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8790548Z        โ•ญโ”€[apps/server/src/orchestration-v2/Orchestrator.ts:12366:7]
2026-10-24T05:20:08.8790600Z  12365 โ”‚
2026-10-24T05:20:08.8790743Z  12366 โ”‚ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-24T05:20:08.8790829Z        ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8791015Z        ยท               โ•ฐโ”€โ”€ 'layerUnavailable' is declared here
2026-10-24T05:20:08.8791080Z  12367 โ”‚   OrchestratorV2,
2026-10-24T05:20:08.8791131Z        โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8791229Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8791232Z
2026-10-24T05:20:08.8791372Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8791486Z     โ•ญโ”€[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-24T05:20:08.8791658Z  53 โ”‚         const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-24T05:20:08.8791827Z  54 โ”‚ โ•ญโ”€โ–ถ     children = cloneElement(child, {
2026-10-24T05:20:08.8791935Z  55 โ”‚ โ”‚         onTouchStart: (event) => {
2026-10-24T05:20:08.8792091Z  56 โ”‚ โ”‚           // Reset for a new touch, not onPressIn, which also fires when a
2026-10-24T05:20:08.8792244Z  57 โ”‚ โ”‚           // finger moves out of the row and back during the same gesture.
2026-10-24T05:20:08.8792368Z  58 โ”‚ โ”‚           menuPress.current.isPreparing = false;
2026-10-24T05:20:08.8792530Z  59 โ”‚ โ”‚           menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-24T05:20:08.8792638Z  60 โ”‚ โ”‚           pendingPress.current = null;
2026-10-24T05:20:08.8792755Z  61 โ”‚ โ”‚           child.props.onTouchStart?.(event);
2026-10-24T05:20:08.8792829Z  62 โ”‚ โ”‚         },
2026-10-24T05:20:08.8792925Z  63 โ”‚ โ”‚         onPress: (event) => {
2026-10-24T05:20:08.8793095Z  64 โ”‚ โ”‚           // Accessibility clicks have no touch identifier and must not inherit
2026-10-24T05:20:08.8793230Z  65 โ”‚ โ”‚           // cancellation from a previous physical gesture.
2026-10-24T05:20:08.8793394Z  66 โ”‚ โ”‚           const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-24T05:20:08.8793577Z  67 โ”‚ โ”‚           if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-24T05:20:08.8793663Z  68 โ”‚ โ”‚             return;
2026-10-24T05:20:08.8793737Z  69 โ”‚ โ”‚           }
2026-10-24T05:20:08.8793873Z  70 โ”‚ โ”‚           if (isTouch && menuPress.current.isPreparing) {
2026-10-24T05:20:08.8794039Z  71 โ”‚ โ”‚             // A release can arrive between native menu preparation and display.
2026-10-24T05:20:08.8794272Z  72 โ”‚ โ”‚             // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-24T05:20:08.8794409Z  73 โ”‚ โ”‚             event.persist();
2026-10-24T05:20:08.8794565Z  74 โ”‚ โ”‚             pendingPress.current = () => child.props.onPress?.(event);
2026-10-24T05:20:08.8794649Z  75 โ”‚ โ”‚             return;
2026-10-24T05:20:08.8794723Z  76 โ”‚ โ”‚           }
2026-10-24T05:20:08.8794833Z  77 โ”‚ โ”‚           child.props.onPress?.(event);
2026-10-24T05:20:08.8794907Z  78 โ”‚ โ”‚         },
2026-10-24T05:20:08.8795033Z  79 โ”‚ โ”œโ”€โ–ถ     });
2026-10-24T05:20:08.8795267Z     ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8795368Z  80 โ”‚         menuProps.onMenuInteractionStart = () => {
2026-10-24T05:20:08.8795418Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8795874Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8796163Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8796165Z
2026-10-24T05:20:08.8796388Z   โš  eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-24T05:20:08.8796547Z       โ•ญโ”€[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1398:10]
2026-10-24T05:20:08.8796603Z  1397 โ”‚
2026-10-24T05:20:08.8796691Z  1398 โ”‚ function assertUserMessagesExclude(
2026-10-24T05:20:08.8796792Z       ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8796956Z       ยท                      โ•ฐโ”€โ”€ 'assertUserMessagesExclude' is declared here
2026-10-24T05:20:08.8797062Z  1399 โ”‚   projection: OrchestrationV2ThreadProjection,
2026-10-24T05:20:08.8797113Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8797213Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8797215Z
2026-10-24T05:20:08.8797412Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8797572Z      โ•ญโ”€[apps/mobile/src/features/workspace/WorkspaceToolbar.ios.tsx:114:33]
2026-10-24T05:20:08.8797667Z  113 โ”‚     return () => cancelAnimationFrame(frame);
2026-10-24T05:20:08.8797810Z  114 โ”‚   }, [restoreSearch, tabActive, bottomSearch]);
2026-10-24T05:20:08.8797952Z      ยท                                 โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8798115Z      ยท                                       โ•ฐโ”€โ”€ Unnecessary dependency `bottomSearch`
2026-10-24T05:20:08.8798217Z  115 โ”‚   const composeButton = nativeToolbarCompose ? (
2026-10-24T05:20:08.8798267Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8798552Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8798857Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8798860Z
2026-10-24T05:20:08.8799031Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8799161Z       โ•ญโ”€[apps/web/src/components/CommandPalette.tsx:1996:20]
2026-10-24T05:20:08.8799275Z  1995 โ”‚         title: inferProjectTitleFromPath(destinationPath),
2026-10-24T05:20:08.8799365Z  1996 โ”‚         createdAt: new Date().toISOString(),
2026-10-24T05:20:08.8799452Z       ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8799626Z       ยท                         โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8799731Z  1997 โ”‚         remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-24T05:20:08.8799781Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8800052Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8800343Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8800348Z
2026-10-24T05:20:08.8800538Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:20:08.8800681Z      โ•ญโ”€[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-24T05:20:08.8800786Z  266 โ”‚                 {record.elements?.map((element, index) => (
2026-10-24T05:20:08.8800949Z  267 โ”‚                   <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T05:20:08.8801102Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8801176Z  268 โ”‚                     <ContextField
2026-10-24T05:20:08.8801225Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8801371Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:20:08.8801373Z
2026-10-24T05:20:08.8801540Z   โš  eslint(no-control-regex): Unexpected control character
2026-10-24T05:20:08.8801728Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-24T05:20:08.8801861Z  219 โ”‚               <Text selectable className="font-mono text-sm text-foreground">
2026-10-24T05:20:08.8801995Z  220 โ”‚                 {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-24T05:20:08.8802101Z      ยท                                              โ”€โ”€โ”ฌโ”€
2026-10-24T05:20:08.8802262Z      ยท                                                โ•ฐโ”€โ”€ 'U+001B' is a control character.
2026-10-24T05:20:08.8802325Z  221 โ”‚               </Text>
2026-10-24T05:20:08.8802376Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8802652Z   help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-24T05:20:08.8802682Z
2026-10-24T05:20:08.8803136Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8803280Z      โ•ญโ”€[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-24T05:20:08.8803405Z  132 โ”‚               const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-24T05:20:08.8803544Z  133 โ”‚ โ•ญโ”€โ–ถ           for (
2026-10-24T05:20:08.8803644Z  134 โ”‚ โ”‚               let attempt = 0;
2026-10-24T05:20:08.8803807Z  135 โ”‚ โ”‚               attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-24T05:20:08.8803905Z  136 โ”‚ โ”‚               attempt += 1
2026-10-24T05:20:08.8803987Z  137 โ”‚ โ”‚             ) {
2026-10-24T05:20:08.8804097Z  138 โ”‚ โ”‚               yield* Effect.yieldNow;
2026-10-24T05:20:08.8804228Z  139 โ”‚ โ•ฐโ”€โ–ถ           }
2026-10-24T05:20:08.8804348Z  140 โ”‚               expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-24T05:20:08.8804399Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8804402Z
2026-10-24T05:20:08.8804658Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8804789Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-24T05:20:08.8804886Z  66 โ”‚   const { id: attachmentId, fileUri } = attachment;
2026-10-24T05:20:08.8804955Z  67 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8805034Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8805161Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8805223Z  68 โ”‚     setUri(null);
2026-10-24T05:20:08.8805291Z     ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8805453Z     ยท        โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8805515Z  69 โ”‚     setError(null);
2026-10-24T05:20:08.8805563Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8806151Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8806472Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8806477Z
2026-10-24T05:20:08.8806673Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8806803Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-24T05:20:08.8806856Z  90 โ”‚     };
2026-10-24T05:20:08.8806930Z  91 โ”‚   }, [attachmentId, fileUri]);
2026-10-24T05:20:08.8807053Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8807229Z     ยท             โ”‚          โ•ฐโ”€โ”€ Unnecessary dependency `fileUri`
2026-10-24T05:20:08.8807373Z     ยท             โ•ฐโ”€โ”€ Unnecessary dependency `attachmentId`
2026-10-24T05:20:08.8807558Z  92 โ”‚   const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-24T05:20:08.8807644Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8807929Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8808229Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8808234Z
2026-10-24T05:20:08.8808440Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T05:20:08.8808575Z      โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-24T05:20:08.8808640Z  212 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8808751Z  213 โ”‚     if (!isFocused && hasSource) props.onRequestClose();
2026-10-24T05:20:08.8808850Z      ยท                                  โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8808998Z      ยท                                    โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-24T05:20:08.8809102Z  214 โ”‚   }, [isFocused, hasSource, props.onRequestClose]);
2026-10-24T05:20:08.8809214Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8809435Z      ยท                                       โ•ฐโ”€โ”€ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-24T05:20:08.8809506Z  215 โ”‚   const { source } = props;
2026-10-24T05:20:08.8809567Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8810010Z   help: Missing dependencies can cause an effect to fire less often than it should. Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8810316Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8810323Z
2026-10-24T05:20:08.8810529Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-24T05:20:08.8810630Z       โ•ญโ”€[apps/mobile/src/Stack.tsx:1079:21]
2026-10-24T05:20:08.8810693Z  1078 โ”‚     <Navigator
2026-10-24T05:20:08.8810822Z  1079 โ”‚       screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-24T05:20:08.8810957Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8811039Z  1080 โ”‚       screenOptions={({ route }) =>
2026-10-24T05:20:08.8811088Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8811446Z   help: Move this component definition out of the parent component `AdaptiveRootStack` and pass data as props. If you want to allow component creation in props, set `allowAsProps` option to true.
2026-10-24T05:20:08.8811450Z
2026-10-24T05:20:08.8811613Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T05:20:08.8811749Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:186:12]
2026-10-24T05:20:08.8811801Z  185 โ”‚
2026-10-24T05:20:08.8811900Z  186 โ”‚ for (const {} of ["darwin", "linux"] as const) {
2026-10-24T05:20:08.8811969Z      ยท            โ”€โ”€
2026-10-24T05:20:08.8812023Z  187 โ”‚ }
2026-10-24T05:20:08.8812073Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8812295Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T05:20:08.8812298Z
2026-10-24T05:20:08.8812504Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T05:20:08.8812666Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:189:12]
2026-10-24T05:20:08.8812718Z  188 โ”‚
2026-10-24T05:20:08.8812781Z  189 โ”‚ for (const {} of [
2026-10-24T05:20:08.8812847Z      ยท            โ”€โ”€
2026-10-24T05:20:08.8812937Z  190 โ”‚   { kind: "browser", folderVerb: "none" },
2026-10-24T05:20:08.8812986Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8813205Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T05:20:08.8813207Z
2026-10-24T05:20:08.8813366Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T05:20:08.8813501Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:311:12]
2026-10-24T05:20:08.8813552Z  310 โ”‚
2026-10-24T05:20:08.8813682Z  311 โ”‚ for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
2026-10-24T05:20:08.8813749Z      ยท            โ”€โ”€
2026-10-24T05:20:08.8813801Z  312 โ”‚ }
2026-10-24T05:20:08.8813851Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8814069Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T05:20:08.8814071Z
2026-10-24T05:20:08.8814231Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T05:20:08.8814364Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:314:12]
2026-10-24T05:20:08.8814415Z  313 โ”‚
2026-10-24T05:20:08.8814477Z  314 โ”‚ for (const {} of [
2026-10-24T05:20:08.8814542Z      ยท            โ”€โ”€
2026-10-24T05:20:08.8814595Z  315 โ”‚   {
2026-10-24T05:20:08.8814644Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8814867Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T05:20:08.8814872Z
2026-10-24T05:20:08.8815031Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T05:20:08.8815146Z      โ•ญโ”€[apps/server/src/processRunner.test.ts:266:14]
2026-10-24T05:20:08.8815198Z  265 โ”‚
2026-10-24T05:20:08.8815300Z  266 โ”‚   for (const {} of ["timeout", "success"] as const) {
2026-10-24T05:20:08.8815369Z      ยท              โ”€โ”€
2026-10-24T05:20:08.8815422Z  267 โ”‚   }
2026-10-24T05:20:08.8815470Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8815690Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T05:20:08.8815692Z
2026-10-24T05:20:08.8815950Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8816134Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-24T05:20:08.8816185Z  117 โ”‚
2026-10-24T05:20:08.8816250Z  118 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8816317Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8816447Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8816525Z  119 โ”‚     void refreshNotifications();
2026-10-24T05:20:08.8816615Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8816784Z      ยท                    โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8816922Z  120 โ”‚     const subscription = AppState.addEventListener("change", (state) => {
2026-10-24T05:20:08.8816971Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8817607Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8817959Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8817962Z
2026-10-24T05:20:08.8818211Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8818390Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-24T05:20:08.8818441Z  125 โ”‚
2026-10-24T05:20:08.8818504Z  126 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8818577Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8818706Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8818771Z  127 โ”‚     if (!isLoaded) {
2026-10-24T05:20:08.8818859Z  128 โ”‚       setLiveActivityStatus("checking");
2026-10-24T05:20:08.8818945Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8819114Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8819175Z  129 โ”‚       return;
2026-10-24T05:20:08.8819225Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8819866Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8820183Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8820186Z
2026-10-24T05:20:08.8820642Z   โš  t3code(no-polling-loop-in-tests): Polling loop in a test. Spinning on `yieldNow`/`sleep` is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-24T05:20:08.8820821Z      โ•ญโ”€[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T05:20:08.8820891Z  520 โ”‚                 })).delivery;
2026-10-24T05:20:08.8821083Z  521 โ”‚ โ•ญโ”€โ–ถ             while (delivery.outcome === "accepted") {
2026-10-24T05:20:08.8821242Z  522 โ”‚ โ”‚                 yield* Effect.yieldNow;
2026-10-24T05:20:08.8821412Z  523 โ”‚ โ”‚                 delivery = (yield* service.getWebhookDelivery({
2026-10-24T05:20:08.8821509Z  524 โ”‚ โ”‚                   id: task.id,
2026-10-24T05:20:08.8821624Z  525 โ”‚ โ”‚                   deliveryId: deliveryId!,
2026-10-24T05:20:08.8821718Z  526 โ”‚ โ”‚                 })).delivery;
2026-10-24T05:20:08.8821853Z  527 โ”‚ โ•ฐโ”€โ–ถ             }
2026-10-24T05:20:08.8821968Z  528 โ”‚                 assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T05:20:08.8822018Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8822020Z
2026-10-24T05:20:08.8822223Z   โš  eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-24T05:20:08.8822351Z     โ•ญโ”€[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-24T05:20:08.8822405Z  78 โ”‚
2026-10-24T05:20:08.8822538Z  79 โ”‚ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-24T05:20:08.8822622Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8822766Z     ยท                  โ•ฐโ”€โ”€ 'describeSchedule' is declared here
2026-10-24T05:20:08.8822870Z  80 โ”‚   if (schedule.type === "webhook") return "On webhook";
2026-10-24T05:20:08.8822921Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8823021Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8823024Z
2026-10-24T05:20:08.8823275Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8823434Z      โ•ญโ”€[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:413:7]
2026-10-24T05:20:08.8823492Z  412 โ”‚
2026-10-24T05:20:08.8823616Z  413 โ”‚ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-24T05:20:08.8823687Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8823808Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T05:20:08.8823858Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8823956Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8823960Z
2026-10-24T05:20:08.8824317Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T05:20:08.8824439Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:237:17]
2026-10-24T05:20:08.8824570Z  236 โ”‚ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-24T05:20:08.8824703Z  237 โ”‚   const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-24T05:20:08.8824807Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8824942Z  238 โ”‚   const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-24T05:20:08.8824994Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8824997Z
2026-10-24T05:20:08.8825348Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T05:20:08.8825468Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:256:26]
2026-10-24T05:20:08.8825566Z  255 โ”‚   if (method === WS_METHODS.assetsCreateUrl) {
2026-10-24T05:20:08.8825718Z  256 โ”‚     const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-24T05:20:08.8825829Z      ยท                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8825939Z  257 โ”‚     return [
2026-10-24T05:20:08.8826024Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8826027Z
2026-10-24T05:20:08.8826210Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-24T05:20:08.8826324Z    โ•ญโ”€[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T05:20:08.8826380Z  7 โ”‚     () =>
2026-10-24T05:20:08.8826445Z  8 โ”‚       Gesture.Hover()
2026-10-24T05:20:08.8826520Z    ยท               โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8826650Z    ยท                 โ•ฐโ”€โ”€ `Hover` may be a component
2026-10-24T05:20:08.8826723Z  9 โ”‚         .manualActivation(true)
2026-10-24T05:20:08.8826773Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8827050Z   help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T05:20:08.8827495Z   note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T05:20:08.8827500Z
2026-10-24T05:20:08.8827763Z   โš  eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8827892Z      โ•ญโ”€[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-24T05:20:08.8827944Z  339 โ”‚
2026-10-24T05:20:08.8828045Z  340 โ”‚ const layerTest = AnalyticsService.layerTest;
2026-10-24T05:20:08.8828117Z      ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8828246Z      ยท           โ•ฐโ”€โ”€ 'layerTest' is declared here
2026-10-24T05:20:08.8828296Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8828403Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8828408Z
2026-10-24T05:20:08.8828601Z   โš  eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-24T05:20:08.8828700Z     โ•ญโ”€[apps/server/src/auth/http.ts:28:10]
2026-10-24T05:20:08.8828786Z  27 โ”‚ import * as Schema from "effect/Schema";
2026-10-24T05:20:08.8828877Z  28 โ”‚ import { identity } from "effect/Function";
2026-10-24T05:20:08.8828950Z     ยท          โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8829080Z     ยท              โ•ฐโ”€โ”€ 'identity' is imported here
2026-10-24T05:20:08.8829163Z  29 โ”‚ import * as Layer from "effect/Layer";
2026-10-24T05:20:08.8829212Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8829310Z   help: Consider removing this import.
2026-10-24T05:20:08.8829313Z
2026-10-24T05:20:08.8829514Z   โš  eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-24T05:20:08.8829715Z     โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-24T05:20:08.8829799Z  24 โ”‚ import * as Schema from "effect/Schema";
2026-10-24T05:20:08.8829913Z  25 โ”‚ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-24T05:20:08.8829991Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8830127Z     ยท                  โ•ฐโ”€โ”€ 'HostProcess' is imported here
2026-10-24T05:20:08.8830178Z  26 โ”‚
2026-10-24T05:20:08.8830227Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8830320Z   help: Consider removing this import.
2026-10-24T05:20:08.8830323Z
2026-10-24T05:20:08.8830587Z   โš  eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8830798Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-24T05:20:08.8830949Z  123 โ”‚     const path = yield* Path.Path;
2026-10-24T05:20:08.8831063Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T05:20:08.8831143Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8831277Z      ยท                 โ•ฐโ”€โ”€ 'serverConfig' is declared here
2026-10-24T05:20:08.8831416Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T05:20:08.8831465Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8831564Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8831566Z
2026-10-24T05:20:08.8831834Z   โš  eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:20:08.8831999Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-24T05:20:08.8832114Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T05:20:08.8832249Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T05:20:08.8832334Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8832475Z      ยท                  โ•ฐโ”€โ”€ 'serverSettings' is declared here
2026-10-24T05:20:08.8832608Z  126 โ”‚     const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-24T05:20:08.8832657Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8832758Z   help: Consider removing this declaration.
2026-10-24T05:20:08.8832760Z
2026-10-24T05:20:08.8832941Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:20:08.8833104Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-24T05:20:08.8833204Z   99 โ”‚   const startEditor = startScheduledTaskEditor;
2026-10-24T05:20:08.8833383Z  100 โ”‚   const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-24T05:20:08.8833526Z      ยท                                                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8833725Z      ยท                                                                                          โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-24T05:20:08.8833803Z  101 โ”‚   const readEditor = useCallback(
2026-10-24T05:20:08.8833851Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8834159Z   help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T05:20:08.8834474Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8834479Z
2026-10-24T05:20:08.8834655Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:20:08.8834810Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-24T05:20:08.8834873Z  120 โ”‚       setEditor,
2026-10-24T05:20:08.8834938Z  121 โ”‚       startEditor,
2026-10-24T05:20:08.8835013Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8835150Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-24T05:20:08.8835215Z  122 โ”‚       hasChanges,
2026-10-24T05:20:08.8835266Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8835634Z   help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T05:20:08.8835980Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8835984Z
2026-10-24T05:20:08.8836418Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T05:20:08.8836541Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-24T05:20:08.8836707Z  1740 โ”‚       const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-24T05:20:08.8836891Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T05:20:08.8837002Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8837110Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T05:20:08.8837162Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8837165Z
2026-10-24T05:20:08.8837594Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T05:20:08.8837713Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-24T05:20:08.8837891Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T05:20:08.8837995Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T05:20:08.8838112Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8838230Z  1743 โ”‚         Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-24T05:20:08.8838282Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8838284Z
2026-10-24T05:20:08.8838491Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:20:08.8838611Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:259:28]
2026-10-24T05:20:08.8838709Z  258 โ”‚   visit(parser.parse(markdown), false, false);
2026-10-24T05:20:08.8838791Z  259 โ”‚   for (const edit of edits.reverse())
2026-10-24T05:20:08.8838885Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8839046Z  260 โ”‚     markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T05:20:08.8839097Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8839357Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:20:08.8839362Z
2026-10-24T05:20:08.8839591Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:20:08.8839709Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:290:28]
2026-10-24T05:20:08.8839787Z  289 โ”‚   visit(parser.parse(markdown));
2026-10-24T05:20:08.8839868Z  290 โ”‚   for (const edit of edits.reverse())
2026-10-24T05:20:08.8839960Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8840117Z  291 โ”‚     markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T05:20:08.8840167Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8840564Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:20:08.8840597Z
2026-10-24T05:20:08.8840800Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:20:08.8840918Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:344:38]
2026-10-24T05:20:08.8840994Z  343 โ”‚   visit(parser.parse(markdown));
2026-10-24T05:20:08.8841097Z  344 โ”‚   for (const lineStart of lineStarts.reverse()) {
2026-10-24T05:20:08.8841196Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8841357Z  345 โ”‚     // The header row may be a lazy line without its container markers (`>` or list indent),
2026-10-24T05:20:08.8841407Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8841656Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:20:08.8841659Z
2026-10-24T05:20:08.8841812Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8841981Z     โ•ญโ”€[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-24T05:20:08.8842082Z  65 โ”‚   const [expanded, setExpanded] = useState(false);
2026-10-24T05:20:08.8842163Z  66 โ”‚   const progress = useSharedValue(0);
2026-10-24T05:20:08.8842235Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8842364Z     ยท             โ•ฐโ”€โ”€ `progress` originates here
2026-10-24T05:20:08.8842430Z  67 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8842552Z  68 โ”‚     progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-24T05:20:08.8842619Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8842750Z     ยท         โ•ฐโ”€โ”€ `progress` cannot be modified
2026-10-24T05:20:08.8842826Z  69 โ”‚   }, [expanded, progress]);
2026-10-24T05:20:08.8842878Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8843136Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8843436Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8843438Z
2026-10-24T05:20:08.8843856Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T05:20:08.8843999Z      โ•ญโ”€[apps/server/src/provider/acp/AntigravityProtocol.ts:263:20]
2026-10-24T05:20:08.8844077Z  262 โ”‚       ...(update._meta !== undefined
2026-10-24T05:20:08.8844242Z  263 โ”‚         ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
2026-10-24T05:20:08.8844332Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8844392Z  264 โ”‚         : {}),
2026-10-24T05:20:08.8844441Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8844443Z
2026-10-24T05:20:08.8844584Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8844738Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-24T05:20:08.8844893Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T05:20:08.8845014Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T05:20:08.8845130Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8845356Z      ยท                                                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8845567Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T05:20:08.8845617Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8846071Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8846360Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8846362Z
2026-10-24T05:20:08.8846502Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8846660Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-24T05:20:08.8846713Z  125 โ”‚
2026-10-24T05:20:08.8846819Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:20:08.8846904Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8847051Z      ยท                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8847150Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:20:08.8847198Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8847656Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8847946Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8847951Z
2026-10-24T05:20:08.8848090Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8848242Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-24T05:20:08.8848296Z  125 โ”‚
2026-10-24T05:20:08.8848401Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:20:08.8848487Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8848632Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8848729Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:20:08.8848779Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8849277Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8849617Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8849619Z
2026-10-24T05:20:08.8849758Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8849911Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-24T05:20:08.8849962Z  125 โ”‚
2026-10-24T05:20:08.8850065Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:20:08.8850175Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8850340Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8850442Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:20:08.8850495Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8850944Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8851224Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8851227Z
2026-10-24T05:20:08.8851367Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8851520Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-24T05:20:08.8851571Z  125 โ”‚
2026-10-24T05:20:08.8851677Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:20:08.8851789Z      ยท                              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8851952Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8852052Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:20:08.8852102Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8852552Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8852834Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8852836Z
2026-10-24T05:20:08.8852980Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8853135Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T05:20:08.8853243Z  126 โ”‚       if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:20:08.8853433Z  127 โ”‚ โ•ญโ”€โ–ถ     const recorder = createLazyVoiceRecorder({
2026-10-24T05:20:08.8853603Z  128 โ”‚ โ”‚         create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T05:20:08.8853725Z  129 โ”‚ โ”‚         onStatus: (status: RecordingStatus) => {
2026-10-24T05:20:08.8853872Z  130 โ”‚ โ”‚           sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T05:20:08.8853989Z  131 โ”‚ โ”‚             isFinished: status.isFinished,
2026-10-24T05:20:08.8854209Z  132 โ”‚ โ”‚             hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T05:20:08.8854338Z  133 โ”‚ โ”‚             error: status.error,
2026-10-24T05:20:08.8854433Z  134 โ”‚ โ”‚             url: status.url,
2026-10-24T05:20:08.8854510Z  135 โ”‚ โ”‚           });
2026-10-24T05:20:08.8854586Z  136 โ”‚ โ”‚         },
2026-10-24T05:20:08.8854780Z  137 โ”‚ โ”‚         // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T05:20:08.8854885Z  138 โ”‚ โ”‚         selectInput: (inputs) => {
2026-10-24T05:20:08.8855037Z  139 โ”‚ โ”‚           const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T05:20:08.8855179Z  140 โ”‚ โ”‚           if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T05:20:08.8855347Z  141 โ”‚ โ”‚           const known = microphoneOrder(preferences.value.microphones);
2026-10-24T05:20:08.8855488Z  142 โ”‚ โ”‚           const order = rememberMicrophones(known, inputs);
2026-10-24T05:20:08.8855586Z  143 โ”‚ โ”‚           if (order !== known) {
2026-10-24T05:20:08.8855720Z  144 โ”‚ โ”‚             registry.set(updateMobilePreferencesAtom, {
2026-10-24T05:20:08.8855834Z  145 โ”‚ โ”‚               transform: (current) => ({
2026-10-24T05:20:08.8856035Z  146 โ”‚ โ”‚                 microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T05:20:08.8856117Z  147 โ”‚ โ”‚               }),
2026-10-24T05:20:08.8856197Z  148 โ”‚ โ”‚             });
2026-10-24T05:20:08.8856274Z  149 โ”‚ โ”‚           }
2026-10-24T05:20:08.8856416Z  150 โ”‚ โ”‚           return preferredMicrophoneInput(inputs, order);
2026-10-24T05:20:08.8856492Z  151 โ”‚ โ”‚         },
2026-10-24T05:20:08.8856620Z  152 โ”‚ โ”œโ”€โ–ถ     });
2026-10-24T05:20:08.8856852Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8856934Z  153 โ”‚         recorderRef.current = recorder;
2026-10-24T05:20:08.8856983Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8857438Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8857727Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8857732Z
2026-10-24T05:20:08.8857872Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8858025Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T05:20:08.8858080Z  152 โ”‚     });
2026-10-24T05:20:08.8858160Z  153 โ”‚     recorderRef.current = recorder;
2026-10-24T05:20:08.8858271Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8858450Z      ยท          โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:20:08.8858562Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:20:08.8858665Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-24T05:20:08.8858715Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8859216Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8859531Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8859534Z
2026-10-24T05:20:08.8859703Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8859857Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T05:20:08.8859944Z  153 โ”‚         recorderRef.current = recorder;
2026-10-24T05:20:08.8860138Z  154 โ”‚ โ•ญโ”€โ–ถ     sessionRef.current = new VoiceInputSession({
2026-10-24T05:20:08.8860223Z  155 โ”‚ โ”‚         recorder,
2026-10-24T05:20:08.8860349Z  156 โ”‚ โ”‚         getTranscriber: getLocalVoiceTranscriber,
2026-10-24T05:20:08.8860465Z  157 โ”‚ โ”‚         requestPermission: async () => {
2026-10-24T05:20:08.8860626Z  158 โ”‚ โ”‚           const permission = await requestRecordingPermissionsAsync();
2026-10-24T05:20:08.8860812Z  159 โ”‚ โ”‚           return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T05:20:08.8860889Z  160 โ”‚ โ”‚         },
2026-10-24T05:20:08.8861027Z  161 โ”‚ โ”‚         configureRecording: configureVoiceRecordingAudio,
2026-10-24T05:20:08.8861158Z  162 โ”‚ โ”‚         releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T05:20:08.8861293Z  163 โ”‚ โ”‚         deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T05:20:08.8861404Z  164 โ”‚ โ”‚         onStateChange: (nextState) =>
2026-10-24T05:20:08.8861492Z  165 โ”‚ โ”‚           setState({
2026-10-24T05:20:08.8861589Z  166 โ”‚ โ”‚             state: nextState,
2026-10-24T05:20:08.8861723Z  167 โ”‚ โ”‚             ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T05:20:08.8861850Z  168 โ”‚ โ”‚             label: sessionRef.current?.label ?? null,
2026-10-24T05:20:08.8861927Z  169 โ”‚ โ”‚           }),
2026-10-24T05:20:08.8862053Z  170 โ”‚ โ”œโ”€โ–ถ     });
2026-10-24T05:20:08.8862246Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8862300Z  171 โ”‚       }
2026-10-24T05:20:08.8862356Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8862811Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8863095Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8863098Z
2026-10-24T05:20:08.8863238Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8863392Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T05:20:08.8863471Z  153 โ”‚     recorderRef.current = recorder;
2026-10-24T05:20:08.8863572Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-24T05:20:08.8863737Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8863949Z      ยท          โ”‚        โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:20:08.8864062Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:20:08.8864126Z  155 โ”‚       recorder,
2026-10-24T05:20:08.8864175Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8864626Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8864908Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8864910Z
2026-10-24T05:20:08.8865058Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8865212Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T05:20:08.8865295Z  184 โ”‚     return () => subscription.remove();
2026-10-24T05:20:08.8865360Z  185 โ”‚   }, [controller]);
2026-10-24T05:20:08.8865434Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8865575Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8865626Z  186 โ”‚
2026-10-24T05:20:08.8865676Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8866127Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8866417Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8866422Z
2026-10-24T05:20:08.8866561Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8866711Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T05:20:08.8866796Z  184 โ”‚     return () => subscription.remove();
2026-10-24T05:20:08.8866860Z  185 โ”‚   }, [controller]);
2026-10-24T05:20:08.8866935Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8867073Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8867124Z  186 โ”‚
2026-10-24T05:20:08.8867175Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8867628Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8867910Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8867912Z
2026-10-24T05:20:08.8868053Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8868206Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T05:20:08.8868261Z  191 โ”‚     },
2026-10-24T05:20:08.8868329Z  192 โ”‚     [controller, recorder],
2026-10-24T05:20:08.8868402Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8868591Z      ยท           โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8868675Z  193 โ”‚   );
2026-10-24T05:20:08.8868724Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8869175Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8869456Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8869458Z
2026-10-24T05:20:08.8869614Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8869843Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T05:20:08.8869931Z  174 โ”‚   const controller = session.controller;
2026-10-24T05:20:08.8870020Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-24T05:20:08.8870125Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8870280Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8870330Z  176 โ”‚
2026-10-24T05:20:08.8870380Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8870831Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8871152Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8871155Z
2026-10-24T05:20:08.8871298Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8871451Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T05:20:08.8871506Z  191 โ”‚     },
2026-10-24T05:20:08.8871576Z  192 โ”‚     [controller, recorder],
2026-10-24T05:20:08.8871663Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8871806Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8871860Z  193 โ”‚   );
2026-10-24T05:20:08.8871910Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8872360Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8872708Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8872748Z
2026-10-24T05:20:08.8872887Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8873039Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T05:20:08.8873131Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-24T05:20:08.8873237Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T05:20:08.8873322Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8873472Z      ยท                         โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8873524Z  247 โ”‚
2026-10-24T05:20:08.8873572Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8874030Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8874314Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8874316Z
2026-10-24T05:20:08.8874455Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8874608Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T05:20:08.8874694Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-24T05:20:08.8874800Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T05:20:08.8874927Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8875091Z      ยท                              โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8875144Z  247 โ”‚
2026-10-24T05:20:08.8875194Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8875645Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8875926Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8875929Z
2026-10-24T05:20:08.8876067Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8876217Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T05:20:08.8876287Z  260 โ”‚     setOwnerFocused,
2026-10-24T05:20:08.8876348Z  261 โ”‚     session,
2026-10-24T05:20:08.8876419Z      ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8876552Z      ยท        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8876610Z  262 โ”‚     stop,
2026-10-24T05:20:08.8876660Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8877107Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8877386Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8877390Z
2026-10-24T05:20:08.8877575Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8877762Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T05:20:08.8877814Z  250 โ”‚
2026-10-24T05:20:08.8877951Z  251 โ”‚ โ•ญโ”€โ–ถ   return {
2026-10-24T05:20:08.8878158Z  252 โ”‚ โ”‚       isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T05:20:08.8878236Z  253 โ”‚ โ”‚       state,
2026-10-24T05:20:08.8878322Z  254 โ”‚ โ”‚       audioLevels,
2026-10-24T05:20:08.8878415Z  255 โ”‚ โ”‚       elapsedSeconds,
2026-10-24T05:20:08.8878540Z  256 โ”‚ โ”‚       isBusy: voiceInputBlocksSubmission(state),
2026-10-24T05:20:08.8878619Z  257 โ”‚ โ”‚       ownerKey,
2026-10-24T05:20:08.8878701Z  258 โ”‚ โ”‚       label,
2026-10-24T05:20:08.8878792Z  259 โ”‚ โ”‚       focusedOwners,
2026-10-24T05:20:08.8878882Z  260 โ”‚ โ”‚       setOwnerFocused,
2026-10-24T05:20:08.8878961Z  261 โ”‚ โ”‚       session,
2026-10-24T05:20:08.8879037Z  262 โ”‚ โ”‚       stop,
2026-10-24T05:20:08.8879115Z  263 โ”‚ โ”‚       cancel,
2026-10-24T05:20:08.8879240Z  264 โ”‚ โ”œโ”€โ–ถ   };
2026-10-24T05:20:08.8879434Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8879489Z  265 โ”‚     }
2026-10-24T05:20:08.8879540Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8880043Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8880332Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8880334Z
2026-10-24T05:20:08.8880489Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8880645Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T05:20:08.8880798Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T05:20:08.8880918Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T05:20:08.8880995Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8881132Z      ยท              โ•ฐโ”€โ”€ `audioLevels` originates here
2026-10-24T05:20:08.8881252Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T05:20:08.8881395Z  124 โ”‚   const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T05:20:08.8881448Z  125 โ”‚
2026-10-24T05:20:08.8881551Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:20:08.8881650Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:20:08.8881786Z  128 โ”‚       create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T05:20:08.8881877Z  129 โ”‚       onStatus: (status: RecordingStatus) => {
2026-10-24T05:20:08.8881994Z  130 โ”‚         sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T05:20:08.8882076Z  131 โ”‚           isFinished: status.isFinished,
2026-10-24T05:20:08.8882216Z  132 โ”‚           hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T05:20:08.8882338Z  133 โ”‚           error: status.error,
2026-10-24T05:20:08.8882433Z  134 โ”‚           url: status.url,
2026-10-24T05:20:08.8882490Z  135 โ”‚         });
2026-10-24T05:20:08.8882545Z  136 โ”‚       },
2026-10-24T05:20:08.8882705Z  137 โ”‚       // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T05:20:08.8882781Z  138 โ”‚       selectInput: (inputs) => {
2026-10-24T05:20:08.8882900Z  139 โ”‚         const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T05:20:08.8883010Z  140 โ”‚         if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T05:20:08.8883139Z  141 โ”‚         const known = microphoneOrder(preferences.value.microphones);
2026-10-24T05:20:08.8883245Z  142 โ”‚         const order = rememberMicrophones(known, inputs);
2026-10-24T05:20:08.8883315Z  143 โ”‚         if (order !== known) {
2026-10-24T05:20:08.8883425Z  144 โ”‚           registry.set(updateMobilePreferencesAtom, {
2026-10-24T05:20:08.8883508Z  145 โ”‚             transform: (current) => ({
2026-10-24T05:20:08.8883676Z  146 โ”‚               microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T05:20:08.8883736Z  147 โ”‚             }),
2026-10-24T05:20:08.8883795Z  148 โ”‚           });
2026-10-24T05:20:08.8883852Z  149 โ”‚         }
2026-10-24T05:20:08.8883959Z  150 โ”‚         return preferredMicrophoneInput(inputs, order);
2026-10-24T05:20:08.8884012Z  151 โ”‚       },
2026-10-24T05:20:08.8884067Z  152 โ”‚     });
2026-10-24T05:20:08.8884147Z  153 โ”‚     recorderRef.current = recorder;
2026-10-24T05:20:08.8884245Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-24T05:20:08.8884304Z  155 โ”‚       recorder,
2026-10-24T05:20:08.8884400Z  156 โ”‚       getTranscriber: getLocalVoiceTranscriber,
2026-10-24T05:20:08.8884489Z  157 โ”‚       requestPermission: async () => {
2026-10-24T05:20:08.8884620Z  158 โ”‚         const permission = await requestRecordingPermissionsAsync();
2026-10-24T05:20:08.8884770Z  159 โ”‚         return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T05:20:08.8884827Z  160 โ”‚       },
2026-10-24T05:20:08.8884934Z  161 โ”‚       configureRecording: configureVoiceRecordingAudio,
2026-10-24T05:20:08.8885038Z  162 โ”‚       releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T05:20:08.8885137Z  163 โ”‚       deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T05:20:08.8885215Z  164 โ”‚       onStateChange: (nextState) =>
2026-10-24T05:20:08.8885280Z  165 โ”‚         setState({
2026-10-24T05:20:08.8885348Z  166 โ”‚           state: nextState,
2026-10-24T05:20:08.8885449Z  167 โ”‚           ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T05:20:08.8885546Z  168 โ”‚           label: sessionRef.current?.label ?? null,
2026-10-24T05:20:08.8885607Z  169 โ”‚         }),
2026-10-24T05:20:08.8885663Z  170 โ”‚     });
2026-10-24T05:20:08.8885715Z  171 โ”‚   }
2026-10-24T05:20:08.8885767Z  172 โ”‚
2026-10-24T05:20:08.8885850Z  173 โ”‚   const session = sessionRef.current;
2026-10-24T05:20:08.8885934Z  174 โ”‚   const controller = session.controller;
2026-10-24T05:20:08.8886018Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-24T05:20:08.8886069Z  176 โ”‚
2026-10-24T05:20:08.8886133Z  177 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8886278Z  178 โ”‚     const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T05:20:08.8886415Z  179 โ”‚       // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T05:20:08.8886551Z  180 โ”‚       // real background state cancels preparation; recorder status handles
2026-10-24T05:20:08.8886657Z  181 โ”‚       // calls and route interruptions during capture.
2026-10-24T05:20:08.8886841Z  182 โ”‚       if (nextState === "background") controller.appMovedToBackground();
2026-10-24T05:20:08.8886934Z  183 โ”‚     });
2026-10-24T05:20:08.8887016Z  184 โ”‚     return () => subscription.remove();
2026-10-24T05:20:08.8887079Z  185 โ”‚   }, [controller]);
2026-10-24T05:20:08.8887128Z  186 โ”‚
2026-10-24T05:20:08.8887188Z  187 โ”‚   useEffect(
2026-10-24T05:20:08.8887248Z  188 โ”‚     () => () => {
2026-10-24T05:20:08.8887318Z  189 โ”‚       controller.dispose();
2026-10-24T05:20:08.8887383Z  190 โ”‚       recorder.release();
2026-10-24T05:20:08.8887436Z  191 โ”‚     },
2026-10-24T05:20:08.8887503Z  192 โ”‚     [controller, recorder],
2026-10-24T05:20:08.8887554Z  193 โ”‚   );
2026-10-24T05:20:08.8887605Z  194 โ”‚
2026-10-24T05:20:08.8887666Z  195 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8887756Z  196 โ”‚     if (state.phase !== "recording") return;
2026-10-24T05:20:08.8887805Z  197 โ”‚
2026-10-24T05:20:08.8887956Z  198 โ”‚     const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T05:20:08.8888060Z  199 โ”‚     const activation = activateKeepAwakeAsync(tag);
2026-10-24T05:20:08.8888138Z  200 โ”‚     void activation.catch(() => {});
2026-10-24T05:20:08.8888199Z  201 โ”‚     return () => {
2026-10-24T05:20:08.8888347Z  202 โ”‚       // Release after activation settles, even if the recording ends immediately.
2026-10-24T05:20:08.8888482Z  203 โ”‚       void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T05:20:08.8888535Z  204 โ”‚     };
2026-10-24T05:20:08.8888610Z  205 โ”‚   }, [keepAwakeId, state.phase]);
2026-10-24T05:20:08.8888661Z  206 โ”‚
2026-10-24T05:20:08.8888723Z  207 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8888853Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T05:20:08.8888902Z  209 โ”‚
2026-10-24T05:20:08.8889024Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T05:20:08.8889180Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T05:20:08.8889280Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-24T05:20:08.8889354Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8889490Z      ยท            โ•ฐโ”€โ”€ `audioLevels` cannot be modified
2026-10-24T05:20:08.8889543Z  213 โ”‚     }
2026-10-24T05:20:08.8889604Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8889894Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8890194Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8890202Z
2026-10-24T05:20:08.8890400Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:20:08.8890555Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T05:20:08.8890606Z  206 โ”‚
2026-10-24T05:20:08.8890669Z  207 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8890744Z      ยท             โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8890957Z      ยท                โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T05:20:08.8891089Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T05:20:08.8891139Z  209 โ”‚
2026-10-24T05:20:08.8891258Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T05:20:08.8891460Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T05:20:08.8891590Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-24T05:20:08.8891666Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8891795Z      ยท            โ•ฐโ”€โ”€ This modifies `audioLevels`
2026-10-24T05:20:08.8891850Z  213 โ”‚     }
2026-10-24T05:20:08.8891899Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8892232Z   help: This argument is a function which may reassign or mutate `audioLevels` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T05:20:08.8892530Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8892532Z
2026-10-24T05:20:08.8892688Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8892855Z     โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-24T05:20:08.8892908Z  90 โ”‚ }) {
2026-10-24T05:20:08.8893016Z  91 โ”‚   const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-24T05:20:08.8893089Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8893216Z     ยท             โ•ฐโ”€โ”€ `rotation` originates here
2026-10-24T05:20:08.8893283Z  92 โ”‚   useLayoutEffect(() => {
2026-10-24T05:20:08.8893420Z  93 โ”‚     rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-24T05:20:08.8893489Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8893617Z     ยท         โ•ฐโ”€โ”€ `rotation` cannot be modified
2026-10-24T05:20:08.8893689Z  94 โ”‚   }, [props.hidden, rotation]);
2026-10-24T05:20:08.8893739Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8894002Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8894298Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8894301Z
2026-10-24T05:20:08.8894452Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8894619Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-24T05:20:08.8894710Z  266 โ”‚   const variant = props.variant ?? "plain";
2026-10-24T05:20:08.8894840Z  267 โ”‚   const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-24T05:20:08.8894923Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8895074Z      ยท                 โ•ฐโ”€โ”€ `loadingVisibility` originates here
2026-10-24T05:20:08.8895146Z  268 โ”‚   useLayoutEffect(() => {
2026-10-24T05:20:08.8895298Z  269 โ”‚     loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-24T05:20:08.8895377Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8895522Z      ยท             โ•ฐโ”€โ”€ `loadingVisibility` cannot be modified
2026-10-24T05:20:08.8895610Z  270 โ”‚   }, [loadingVisibility, props.loading]);
2026-10-24T05:20:08.8895667Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8895921Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8896220Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8896272Z
2026-10-24T05:20:08.8896456Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8896621Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-24T05:20:08.8896673Z  325 โ”‚ }) {
2026-10-24T05:20:08.8896828Z  326 โ”‚   const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-24T05:20:08.8896915Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8897063Z      ยท                  โ•ฐโ”€โ”€ `recordingVisibility` originates here
2026-10-24T05:20:08.8897132Z  327 โ”‚   useLayoutEffect(() => {
2026-10-24T05:20:08.8897314Z  328 โ”‚     recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-24T05:20:08.8897398Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8897553Z      ยท              โ•ฐโ”€โ”€ `recordingVisibility` cannot be modified
2026-10-24T05:20:08.8897645Z  329 โ”‚   }, [props.phase, recordingVisibility]);
2026-10-24T05:20:08.8897694Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8897951Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8898245Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8898248Z
2026-10-24T05:20:08.8898390Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8898551Z     โ•ญโ”€[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-24T05:20:08.8898630Z  26 โ”‚   const latestInput = useRef(input);
2026-10-24T05:20:08.8898709Z  27 โ”‚   latestInput.current = input;
2026-10-24T05:20:08.8898820Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8898999Z     ยท        โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:20:08.8899111Z     ยท        โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:20:08.8899186Z  28 โ”‚   const mounted = useRef(true);
2026-10-24T05:20:08.8899236Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8899731Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8900070Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8900103Z
2026-10-24T05:20:08.8900282Z   โš  eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-24T05:20:08.8900416Z     โ•ญโ”€[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-24T05:20:08.8900501Z  14 โ”‚ import * as Layer from "effect/Layer";
2026-10-24T05:20:08.8900592Z  15 โ”‚ import type * as Scope from "effect/Scope";
2026-10-24T05:20:08.8900668Z     ยท                  โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:20:08.8900799Z     ยท                    โ•ฐโ”€โ”€ 'Scope' is imported here
2026-10-24T05:20:08.8900883Z  16 โ”‚ import * as Stream from "effect/Stream";
2026-10-24T05:20:08.8900933Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8903074Z   help: Consider removing this import.
2026-10-24T05:20:08.8903078Z
2026-10-24T05:20:08.8903257Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8903420Z     โ•ญโ”€[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-24T05:20:08.8903472Z  35 โ”‚
2026-10-24T05:20:08.8903609Z  36 โ”‚   const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-24T05:20:08.8903695Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8903839Z     ยท                 โ•ฐโ”€โ”€ `inspectorProgress` originates here
2026-10-24T05:20:08.8903930Z  37 โ”‚   const { renderedInspectorWidth } = props;
2026-10-24T05:20:08.8904060Z  38 โ”‚   const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T05:20:08.8904111Z  39 โ”‚
2026-10-24T05:20:08.8904189Z  40 โ”‚   const onClosed = props.onClosed;
2026-10-24T05:20:08.8904253Z  41 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8904340Z  42 โ”‚     inspectorProgress.value = withTiming(
2026-10-24T05:20:08.8904425Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8904572Z     ยท             โ•ฐโ”€โ”€ `inspectorProgress` cannot be modified
2026-10-24T05:20:08.8904646Z  43 โ”‚       inspectorVisible ? 1 : 0,
2026-10-24T05:20:08.8904696Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8904952Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8905250Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8905252Z
2026-10-24T05:20:08.8905403Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8905559Z     โ•ญโ”€[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-24T05:20:08.8905654Z  37 โ”‚   const { renderedInspectorWidth } = props;
2026-10-24T05:20:08.8905783Z  38 โ”‚   const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T05:20:08.8905871Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8906021Z     ยท                   โ•ฐโ”€โ”€ `renderedContentWidth` originates here
2026-10-24T05:20:08.8906074Z  39 โ”‚
2026-10-24T05:20:08.8906151Z  40 โ”‚   const onClosed = props.onClosed;
2026-10-24T05:20:08.8906215Z  41 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8906302Z  42 โ”‚     inspectorProgress.value = withTiming(
2026-10-24T05:20:08.8906375Z  43 โ”‚       inspectorVisible ? 1 : 0,
2026-10-24T05:20:08.8906443Z  44 โ”‚       WORKSPACE_PANE_TIMING,
2026-10-24T05:20:08.8906508Z  45 โ”‚       (finished) => {
2026-10-24T05:20:08.8906646Z  46 โ”‚         if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-24T05:20:08.8906786Z  47 โ”‚           runOnJS(onClosed)();
2026-10-24T05:20:08.8906874Z  48 โ”‚         }
2026-10-24T05:20:08.8906928Z  49 โ”‚       },
2026-10-24T05:20:08.8906982Z  50 โ”‚     );
2026-10-24T05:20:08.8907111Z  51 โ”‚     const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-24T05:20:08.8907188Z  52 โ”‚     renderedInspectorWidth.set(
2026-10-24T05:20:08.8907328Z  53 โ”‚       resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-24T05:20:08.8907382Z  54 โ”‚     );
2026-10-24T05:20:08.8907433Z  55 โ”‚   }, [
2026-10-24T05:20:08.8907500Z  56 โ”‚     inspectorProgress,
2026-10-24T05:20:08.8907564Z  57 โ”‚     inspectorVisible,
2026-10-24T05:20:08.8907626Z  58 โ”‚     inspectorWidth,
2026-10-24T05:20:08.8907683Z  59 โ”‚     onClosed,
2026-10-24T05:20:08.8907753Z  60 โ”‚     renderedInspectorWidth,
2026-10-24T05:20:08.8907811Z  61 โ”‚     resizing,
2026-10-24T05:20:08.8907869Z  62 โ”‚   ]);
2026-10-24T05:20:08.8907920Z  63 โ”‚
2026-10-24T05:20:08.8907983Z  64 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8908073Z  65 โ”‚     const targetWidth = inspectorWidth ?? 0;
2026-10-24T05:20:08.8908156Z  66 โ”‚     if (!inspectorVisible || resizing) {
2026-10-24T05:20:08.8908250Z  67 โ”‚       renderedContentWidth.value = targetWidth;
2026-10-24T05:20:08.8908336Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8908494Z     ยท                 โ•ฐโ”€โ”€ `renderedContentWidth` cannot be modified
2026-10-24T05:20:08.8908552Z  68 โ”‚       return;
2026-10-24T05:20:08.8908602Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8908860Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8909166Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8909171Z
2026-10-24T05:20:08.8909335Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8909478Z      โ•ญโ”€[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-24T05:20:08.8909600Z  177 โ”‚   if (snoozeClockState.shell !== activeThreadShell) {
2026-10-24T05:20:08.8909787Z  178 โ”‚     setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-24T05:20:08.8909910Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8910075Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8910128Z  179 โ”‚   }
2026-10-24T05:20:08.8910179Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8910456Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8910746Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8910750Z
2026-10-24T05:20:08.8910986Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8911144Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:155:7]
2026-10-24T05:20:08.8911197Z  154 โ”‚     }
2026-10-24T05:20:08.8911266Z  155 โ”‚   }, [wrappedRender]);
2026-10-24T05:20:08.8911343Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8911566Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `wrappedRender`
2026-10-24T05:20:08.8911656Z  156 โ”‚
2026-10-24T05:20:08.8911706Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8911990Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8912294Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8912297Z
2026-10-24T05:20:08.8912531Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T05:20:08.8912688Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:800:42]
2026-10-24T05:20:08.8912741Z  799 โ”‚     >
2026-10-24T05:20:08.8912869Z  800 โ”‚       <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-24T05:20:08.8912994Z      ยท                                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8913096Z  801 โ”‚         <WindowHingeContext value={windowHinge}>
2026-10-24T05:20:08.8913147Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8913368Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T05:20:08.8913505Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T05:20:08.8913507Z
2026-10-24T05:20:08.8913783Z   โš  eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-24T05:20:08.8913910Z      โ•ญโ”€[apps/server/src/provider/AntigravityAuth.ts:285:20]
2026-10-24T05:20:08.8913964Z  284 โ”‚     },
2026-10-24T05:20:08.8914050Z  285 โ”‚     (effect, flow, stopSessions) =>
2026-10-24T05:20:08.8914142Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8914286Z      ยท                          โ•ฐโ”€โ”€ 'stopSessions' is declared here
2026-10-24T05:20:08.8914348Z  286 โ”‚       effect.pipe(
2026-10-24T05:20:08.8914398Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8914497Z   help: Consider removing this parameter.
2026-10-24T05:20:08.8914500Z
2026-10-24T05:20:08.8914754Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8914921Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-24T05:20:08.8914974Z  638 โ”‚
2026-10-24T05:20:08.8915039Z  639 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8915109Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8915241Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8915351Z  640 โ”‚     if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-24T05:20:08.8915411Z  641 โ”‚       return;
2026-10-24T05:20:08.8915464Z  642 โ”‚     }
2026-10-24T05:20:08.8915536Z  643 โ”‚     setPendingLaunchEntry({
2026-10-24T05:20:08.8915621Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8915788Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8915858Z  644 โ”‚       key: launchTargetKey,
2026-10-24T05:20:08.8915907Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8916551Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8916898Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8916900Z
2026-10-24T05:20:08.8917155Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8917320Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-24T05:20:08.8917371Z  648 โ”‚
2026-10-24T05:20:08.8917435Z  649 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8917504Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8917630Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8917742Z  650 โ”‚     if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-24T05:20:08.8917806Z  651 โ”‚       return;
2026-10-24T05:20:08.8917861Z  652 โ”‚     }
2026-10-24T05:20:08.8917938Z  653 โ”‚     setInitialAttachGridEntry({
2026-10-24T05:20:08.8918030Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8918199Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8918268Z  654 โ”‚       key: launchTargetKey,
2026-10-24T05:20:08.8918318Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8918901Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8919218Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8919223Z
2026-10-24T05:20:08.8919472Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:20:08.8919669Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-24T05:20:08.8919720Z  743 โ”‚
2026-10-24T05:20:08.8919784Z  744 โ”‚   useEffect(() => {
2026-10-24T05:20:08.8919852Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8919975Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:20:08.8920074Z  745 โ”‚     if (!routeEnvironmentId || !routeThreadId) {
2026-10-24T05:20:08.8920142Z  746 โ”‚       setLastGridSize({
2026-10-24T05:20:08.8920222Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8920393Z      ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:20:08.8920475Z  747 โ”‚         cols: DEFAULT_TERMINAL_COLS,
2026-10-24T05:20:08.8920526Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8921106Z   help: Effects should synchronize React with external systems. Calling setState synchronously inside an effect starts another render and is usually unnecessary. Derive the value during render, initialize state directly, or update it from the event that caused the change. Use an effect only when synchronizing with an external system.
2026-10-24T05:20:08.8921420Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
2026-10-24T05:20:08.8921422Z
2026-10-24T05:20:08.8921728Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8921922Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-24T05:20:08.8921979Z  537 โ”‚     });
2026-10-24T05:20:08.8922105Z  538 โ”‚   }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-24T05:20:08.8922214Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8922451Z      ยท                                   โ•ฐโ”€โ”€ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-24T05:20:08.8922612Z  539 โ”‚   const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-24T05:20:08.8922664Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8922952Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8923261Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8923266Z
2026-10-24T05:20:08.8923460Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8923624Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-24T05:20:08.8923718Z  708 โ”‚     sentInitialInputKeyRef.current = null;
2026-10-24T05:20:08.8923784Z  709 โ”‚   }, [terminalKey]);
2026-10-24T05:20:08.8923858Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8923998Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-24T05:20:08.8924051Z  710 โ”‚
2026-10-24T05:20:08.8924101Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8924388Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8924691Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8924694Z
2026-10-24T05:20:08.8924889Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:20:08.8925053Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-24T05:20:08.8925107Z  799 โ”‚     };
2026-10-24T05:20:08.8925280Z  800 โ”‚   }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-24T05:20:08.8925454Z      ยท                                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8925728Z      ยท                                                                โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-24T05:20:08.8925963Z      ยท                                                                โ•ฐโ”€โ”€ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-24T05:20:08.8926014Z  801 โ”‚
2026-10-24T05:20:08.8926064Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8926347Z   help: Extra dependencies can cause an effect to fire more often than it should, resulting in performance problems such as excessive renders and side effects
2026-10-24T05:20:08.8926647Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8926650Z
2026-10-24T05:20:08.8926796Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8926960Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-24T05:20:08.8927015Z  792 โ”‚   }
2026-10-24T05:20:08.8927120Z  793 โ”‚   const pasteSession = pasteSessionRef.current;
2026-10-24T05:20:08.8927231Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8927388Z      ยท                                   โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:20:08.8927439Z  794 โ”‚
2026-10-24T05:20:08.8927493Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8927951Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8928243Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8928248Z
2026-10-24T05:20:08.8928412Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8928567Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:697:76]
2026-10-24T05:20:08.8928745Z  696 โ”‚   const [snoozeGateClock, setSnoozeGateClock] = useState(() => ({ thread, now: Date.now() }));
2026-10-24T05:20:08.8928909Z  697 โ”‚   if (snoozeGateClock.thread !== thread) setSnoozeGateClock({ thread, now: Date.now() });
2026-10-24T05:20:08.8929042Z      ยท                                                                            โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8929224Z      ยท                                                                                 โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8929359Z  698 โ”‚   const snoozeGateNow = new Date(snoozeGateClock.now).toISOString();
2026-10-24T05:20:08.8929409Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8929717Z   help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8930004Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8930007Z
2026-10-24T05:20:08.8930168Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8930320Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:718:71]
2026-10-24T05:20:08.8930399Z  717 โ”‚   const snoozePresets = useMemo(
2026-10-24T05:20:08.8930616Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-24T05:20:08.8930771Z      ยท                                                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8930946Z      ยท                                                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8931061Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-24T05:20:08.8931110Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8931381Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8931668Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8931671Z
2026-10-24T05:20:08.8931851Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:20:08.8932005Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:719:6]
2026-10-24T05:20:08.8932173Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-24T05:20:08.8932285Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-24T05:20:08.8932377Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8932548Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.snoozePresetMinute`
2026-10-24T05:20:08.8932601Z  720 โ”‚   );
2026-10-24T05:20:08.8932651Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8932962Z   help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T05:20:08.8933267Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8933269Z
2026-10-24T05:20:08.8933444Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:20:08.8933596Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:765:7]
2026-10-24T05:20:08.8933665Z  764 โ”‚       thread.pinnedAt,
2026-10-24T05:20:08.8933727Z  765 โ”‚       variant,
2026-10-24T05:20:08.8933796Z      ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8933930Z      ยท          โ•ฐโ”€โ”€ Unnecessary dependency `variant`
2026-10-24T05:20:08.8933984Z  766 โ”‚     ],
2026-10-24T05:20:08.8934034Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8934346Z   help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T05:20:08.8934652Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:20:08.8934654Z
2026-10-24T05:20:08.8934843Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:20:08.8935000Z       โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:1215:21]
2026-10-24T05:20:08.8935126Z  1214 โ”‚             {providerDrivers.slice(0, -1).map((driver, index) => (
2026-10-24T05:20:08.8935256Z  1215 โ”‚               <View key={`${driver}:${index}`} className="-mr-1 opacity-30">
2026-10-24T05:20:08.8935425Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8935561Z  1216 โ”‚                 <ProviderIcon provider={driver} size={12} />
2026-10-24T05:20:08.8935614Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8935758Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:20:08.8935761Z
2026-10-24T05:20:08.8935945Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-24T05:20:08.8936095Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-24T05:20:08.8936261Z  601 โ”‚   const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-24T05:20:08.8936337Z  602 โ”‚   const gesture = Gesture.Pan()
2026-10-24T05:20:08.8936421Z      ยท                           โ”€โ”ฌโ”€
2026-10-24T05:20:08.8936559Z      ยท                            โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-24T05:20:08.8936638Z  603 โ”‚     .enabled(!props.disabled)
2026-10-24T05:20:08.8936690Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8936958Z   help: Render `Pan` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T05:20:08.8937394Z   note: `Pan` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T05:20:08.8937396Z
2026-10-24T05:20:08.8937626Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T05:20:08.8937760Z      โ•ญโ”€[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-24T05:20:08.8937883Z  984 โ”‚           const changedBeforeDecline = draftChangedSinceSend();
2026-10-24T05:20:08.8938122Z  985 โ”‚ โ•ญโ”€โ–ถ       const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-24T05:20:08.8938240Z  986 โ”‚ โ”‚           (approval) => approval.requestId,
2026-10-24T05:20:08.8938369Z  987 โ”‚ โ•ฐโ”€โ–ถ       );
2026-10-24T05:20:08.8938503Z  988 โ”‚           const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-24T05:20:08.8938554Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8938628Z   help: Switch to `Set`
2026-10-24T05:20:08.8938632Z
2026-10-24T05:20:08.8938785Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8938935Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T05:20:08.8938987Z   86 โ”‚
2026-10-24T05:20:08.8939082Z   87 โ”‚   const cardCoverage = props.cardCoverage;
2026-10-24T05:20:08.8939163Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8939296Z      ยท               โ•ฐโ”€โ”€ `cardCoverage` originates here
2026-10-24T05:20:08.8939375Z   88 โ”‚   const barHeightRef = useRef(0);
2026-10-24T05:20:08.8939453Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-24T05:20:08.8939536Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-24T05:20:08.8939636Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-24T05:20:08.8939729Z   92 โ”‚     if (!cardCoverage) {
2026-10-24T05:20:08.8939789Z   93 โ”‚       return;
2026-10-24T05:20:08.8939842Z   94 โ”‚     }
2026-10-24T05:20:08.8939988Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T05:20:08.8940075Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-24T05:20:08.8940184Z   97 โ”‚       return;
2026-10-24T05:20:08.8940267Z   98 โ”‚     }
2026-10-24T05:20:08.8940344Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:20:08.8940423Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:20:08.8940500Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8940640Z      ยท             โ•ฐโ”€โ”€ `cardCoverage` cannot be modified
2026-10-24T05:20:08.8940699Z  101 โ”‚       return;
2026-10-24T05:20:08.8940750Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8941037Z   help: Do not mutate component props or hook arguments. If the value should change, update it where it is owned and pass an update callback, or use local state
2026-10-24T05:20:08.8941334Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8941337Z
2026-10-24T05:20:08.8941492Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:20:08.8941644Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T05:20:08.8941722Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-24T05:20:08.8941805Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-24T05:20:08.8941880Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8942011Z      ยท              โ•ฐโ”€โ”€ `cardHeight` originates here
2026-10-24T05:20:08.8942102Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-24T05:20:08.8942168Z   92 โ”‚     if (!cardCoverage) {
2026-10-24T05:20:08.8942225Z   93 โ”‚       return;
2026-10-24T05:20:08.8942280Z   94 โ”‚     }
2026-10-24T05:20:08.8942423Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T05:20:08.8942512Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-24T05:20:08.8942570Z   97 โ”‚       return;
2026-10-24T05:20:08.8942622Z   98 โ”‚     }
2026-10-24T05:20:08.8942697Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:20:08.8942777Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:20:08.8942836Z  101 โ”‚       return;
2026-10-24T05:20:08.8942888Z  102 โ”‚     }
2026-10-24T05:20:08.8942985Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-24T05:20:08.8943079Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T05:20:08.8943164Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-24T05:20:08.8943219Z  106 โ”‚     });
2026-10-24T05:20:08.8943284Z  107 โ”‚   }, [cardCoverage]);
2026-10-24T05:20:08.8943365Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-24T05:20:08.8943443Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:20:08.8943569Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:20:08.8943638Z  111 โ”‚       notifyCoverage();
2026-10-24T05:20:08.8943691Z  112 โ”‚     },
2026-10-24T05:20:08.8943754Z  113 โ”‚     [notifyCoverage],
2026-10-24T05:20:08.8943805Z  114 โ”‚   );
2026-10-24T05:20:08.8943888Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-24T05:20:08.8943965Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:20:08.8944089Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:20:08.8944197Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T05:20:08.8944272Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8944406Z      ยท            โ•ฐโ”€โ”€ `cardHeight` cannot be modified
2026-10-24T05:20:08.8944472Z  119 โ”‚       notifyCoverage();
2026-10-24T05:20:08.8944521Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8944835Z   help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
2026-10-24T05:20:08.8945165Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8945167Z
2026-10-24T05:20:08.8945363Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:20:08.8945515Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T05:20:08.8945597Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-24T05:20:08.8945687Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-24T05:20:08.8945789Z      ยท                                      โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:20:08.8946027Z      ยท                                         โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T05:20:08.8946094Z   92 โ”‚     if (!cardCoverage) {
2026-10-24T05:20:08.8946153Z   93 โ”‚       return;
2026-10-24T05:20:08.8946204Z   94 โ”‚     }
2026-10-24T05:20:08.8946349Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T05:20:08.8946432Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-24T05:20:08.8946488Z   97 โ”‚       return;
2026-10-24T05:20:08.8946540Z   98 โ”‚     }
2026-10-24T05:20:08.8946617Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:20:08.8946696Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:20:08.8946771Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8946905Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-24T05:20:08.8946967Z  101 โ”‚       return;
2026-10-24T05:20:08.8947020Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8947353Z   help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T05:20:08.8947649Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8947651Z
2026-10-24T05:20:08.8947845Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:20:08.8947994Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T05:20:08.8948072Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:20:08.8948153Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:20:08.8948231Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8948360Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-24T05:20:08.8948419Z  101 โ”‚       return;
2026-10-24T05:20:08.8948471Z  102 โ”‚     }
2026-10-24T05:20:08.8948570Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-24T05:20:08.8948663Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T05:20:08.8948745Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-24T05:20:08.8948799Z  106 โ”‚     });
2026-10-24T05:20:08.8948863Z  107 โ”‚   }, [cardCoverage]);
2026-10-24T05:20:08.8948944Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-24T05:20:08.8949021Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:20:08.8949124Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8949400Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T05:20:08.8949566Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:20:08.8949618Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8949971Z   help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T05:20:08.8950267Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8950269Z
2026-10-24T05:20:08.8950465Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:20:08.8950615Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T05:20:08.8950702Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-24T05:20:08.8950783Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:20:08.8950940Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8951156Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-24T05:20:08.8951280Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:20:08.8951392Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T05:20:08.8951464Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8951592Z      ยท            โ•ฐโ”€โ”€ This modifies `cardHeight`
2026-10-24T05:20:08.8951658Z  119 โ”‚       notifyCoverage();
2026-10-24T05:20:08.8951708Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8952039Z   help: This argument is a function which may reassign or mutate `cardHeight` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T05:20:08.8952338Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:20:08.8952341Z
2026-10-24T05:20:08.8952483Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:20:08.8952637Z      โ•ญโ”€[apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts:277:39]
2026-10-24T05:20:08.8952691Z  276 โ”‚
2026-10-24T05:20:08.8952867Z  277 โ”‚ โ•ญโ”€โ–ถ   return createElement(RawNativeView, {
2026-10-24T05:20:08.8952958Z  278 โ”‚ โ”‚       ...nativeProps,
2026-10-24T05:20:08.8953167Z  279 โ”‚ โ”‚       refreshEnabled: props.onPullToRefresh !== undefined,
2026-10-24T05:20:08.8953294Z  280 โ”‚ โ”‚       ref: nativeRef,
2026-10-24T05:20:08.8953419Z  281 โ”‚ โ”œโ”€โ–ถ   });
2026-10-24T05:20:08.8953649Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:20:08.8953703Z  282 โ”‚     }
2026-10-24T05:20:08.8953754Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8954211Z   help: React refs are values that are not needed for rendering. Refs should only be accessed outside of render, such as in event handlers or effects. Accessing a ref value (the `current` property) during render can cause your component not to update as expected
2026-10-24T05:20:08.8954500Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:20:08.8954507Z
2026-10-24T05:20:08.8954687Z   โš  unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-24T05:20:08.8954805Z      โ•ญโ”€[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-24T05:20:08.8954926Z  193 โ”‚     const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-24T05:20:08.8955014Z  194 โ”‚     const codes = new Array<number>(count);
2026-10-24T05:20:08.8955119Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8955220Z  195 โ”‚     for (let index = 0; index < count; index += 1) {
2026-10-24T05:20:08.8955271Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8955679Z   help: It's not clear whether the argument is meant to be the length of the array or the only element. If the argument is the array's length, consider using `Array.from({ length: n })`. If the argument is the only element, use `[element]`.
2026-10-24T05:20:08.8955688Z
2026-10-24T05:20:08.8955854Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8955972Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-24T05:20:08.8956072Z  820 โ”‚     const resolved = resolveThreadTarget(target);
2026-10-24T05:20:08.8956225Z  821 โ”‚     if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-24T05:20:08.8956341Z      ยท                                                        โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8956506Z      ยท                                                             โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8956588Z  822 โ”‚       return AsyncResult.failure(
2026-10-24T05:20:08.8956639Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8956915Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8957203Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8957206Z
2026-10-24T05:20:08.8957368Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:20:08.8957484Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-24T05:20:08.8957553Z  708 โ”‚     const wokeAt = resolved
2026-10-24T05:20:08.8957685Z  709 โ”‚       ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-24T05:20:08.8957795Z      ยท                                              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8958001Z      ยท                                                   โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:20:08.8958089Z  710 โ”‚       : null;
2026-10-24T05:20:08.8958140Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:20:08.8958408Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:20:08.8958690Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:20:08.8958692Z
2026-10-24T05:20:08.8958773Z Found 0 errors and 362 warnings in 5420 files (4.9s, 8 threads)
2026-10-24T05:20:08.9367222Z Post job cleanup.
2026-10-24T05:20:08.9951021Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T05:20:09.0011287Z Post job cleanup.
2026-10-24T05:20:09.0933581Z ##[start-action display=Cache full pnpm store;id=__147d3655-218b-44a6-9660-f2c83d79c994.__actions_cache]
2026-10-24T05:20:09.1224788Z Post job cleanup.
2026-10-24T05:20:09.1858173Z [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /home/runner/_work/t3code/t3code --files-from manifest.txt --use-compress-program zstdmt
2026-10-24T05:20:12.7490450Z Failed to save: Unable to reserve cache with key pnpm-full-v1-Linux-X64-8600a8d4a7fcc9519d421cef0c77201c793c5d8afbbef2897636b5b9305a9b7d, another job may be creating this cache.
2026-10-24T05:20:12.7950274Z ##[end-action id=__147d3655-218b-44a6-9660-f2c83d79c994.__actions_cache;outcome=success;conclusion=success;duration_ms=3701]
2026-10-24T05:20:12.7951980Z ##[start-action display=Cache Vite+;id=__147d3655-218b-44a6-9660-f2c83d79c994.vp_cache]
2026-10-24T05:20:12.7982658Z Post job cleanup.
2026-10-24T05:20:12.8601984Z Cache hit occurred on the primary key vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0, not saving cache.
2026-10-24T05:20:12.8630219Z ##[end-action id=__147d3655-218b-44a6-9660-f2c83d79c994.vp_cache;outcome=success;conclusion=success;duration_ms=67]
2026-10-24T05:20:12.8664057Z Post job cleanup.
2026-10-24T05:20:12.9035731Z [command]/usr/local/bin/git version
2026-10-24T05:20:12.9061319Z git version 2.55.0
2026-10-24T05:20:12.9077885Z Temporarily overriding HOME='/home/runner/_work/_temp/fb0d8d89-3aa5-4ce1-8c2c-bdec9e0cdeae' before making global git config changes
2026-10-24T05:20:12.9078237Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T05:20:12.9080756Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T05:20:12.9100672Z Removing SSH command configuration
2026-10-24T05:20:12.9103470Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T05:20:12.9124302Z [command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-10-24T05:20:12.9233610Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T05:20:12.9254172Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T05:20:12.9287418Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T05:20:12.9301332Z ##[group]Run '/job_completed.sh'
2026-10-24T05:20:12.9307104Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T05:20:12.9307277Z env:
2026-10-24T05:20:12.9307391Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 135
2026-10-24T05:20:12.9307539Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 395
2026-10-24T05:20:12.9307680Z   BLACKSMITH_CHECK_RUN_ID: 120788669600
2026-10-24T05:20:12.9307820Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T05:20:12.9307962Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T05:20:12.9308097Z ##[endgroup]
2026-10-24T05:20:12.9375584Z Docker container cache not activated, skipping hash computation.
2026-10-24T05:20:12.9621235Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T05:20:12.9662097Z Cleaning up orphan processes