GitHub check

256 KB of 597 KB loaded Download the full log (597 KB)
341 KB of earlier output not loaded
is scheduler- and load-dependent. Await the `Deferred`, `Queue.take`, `Stream` element, `drain()`, or `expect.poll` that marks the milestone.
2026-10-23T11:12:18.2744581Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6197:9]
2026-10-23T11:12:18.2744668Z  6196 โ”‚               .pipe(Effect.forkScoped);
2026-10-23T11:12:18.2744850Z  6197 โ”‚ โ•ญโ”€โ–ถ         while (promptGates.length < 2) {
2026-10-23T11:12:18.2744961Z  6198 โ”‚ โ”‚             yield* Effect.yieldNow;
2026-10-23T11:12:18.2745096Z  6199 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-23T11:12:18.2745257Z  6200 โ”‚             if (sessionUpdateHandler === undefined || capturedMutation.current === null) {
2026-10-23T11:12:18.2745313Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2745315Z
2026-10-23T11:12:18.2745572Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2745790Z        โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:10578:7]
2026-10-23T11:12:18.2745877Z  10577 โ”‚
2026-10-23T11:12:18.2745953Z  10578 โ”‚ const layer: Layer.Layer<
2026-10-23T11:12:18.2746028Z        ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.2746158Z        ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T11:12:18.2746250Z  10579 โ”‚   ProviderAdapter.ProviderAdapterV2,
2026-10-23T11:12:18.2746305Z        โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2746410Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2746412Z
2026-10-23T11:12:18.2746567Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2746722Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-23T11:12:18.2746776Z   86 โ”‚
2026-10-23T11:12:18.2746870Z   87 โ”‚   const cardCoverage = props.cardCoverage;
2026-10-23T11:12:18.2746958Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2747096Z      ยท               โ•ฐโ”€โ”€ `cardCoverage` originates here
2026-10-23T11:12:18.2747177Z   88 โ”‚   const barHeightRef = useRef(0);
2026-10-23T11:12:18.2747258Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-23T11:12:18.2747344Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-23T11:12:18.2747435Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-23T11:12:18.2747504Z   92 โ”‚     if (!cardCoverage) {
2026-10-23T11:12:18.2747566Z   93 โ”‚       return;
2026-10-23T11:12:18.2747635Z   94 โ”‚     }
2026-10-23T11:12:18.2747821Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-23T11:12:18.2747912Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-23T11:12:18.2747974Z   97 โ”‚       return;
2026-10-23T11:12:18.2748031Z   98 โ”‚     }
2026-10-23T11:12:18.2748114Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T11:12:18.2748200Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T11:12:18.2748281Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2748424Z      ยท             โ•ฐโ”€โ”€ `cardCoverage` cannot be modified
2026-10-23T11:12:18.2748482Z  101 โ”‚       return;
2026-10-23T11:12:18.2748538Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2748834Z   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-23T11:12:18.2749140Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2749142Z
2026-10-23T11:12:18.2749345Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2749538Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-23T11:12:18.2749621Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-23T11:12:18.2749706Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-23T11:12:18.2749781Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2749918Z      ยท              โ•ฐโ”€โ”€ `cardHeight` originates here
2026-10-23T11:12:18.2750013Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-23T11:12:18.2750082Z   92 โ”‚     if (!cardCoverage) {
2026-10-23T11:12:18.2750141Z   93 โ”‚       return;
2026-10-23T11:12:18.2750196Z   94 โ”‚     }
2026-10-23T11:12:18.2750344Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-23T11:12:18.2750432Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-23T11:12:18.2750494Z   97 โ”‚       return;
2026-10-23T11:12:18.2750553Z   98 โ”‚     }
2026-10-23T11:12:18.2750635Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T11:12:18.2750719Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T11:12:18.2750776Z  101 โ”‚       return;
2026-10-23T11:12:18.2750831Z  102 โ”‚     }
2026-10-23T11:12:18.2750932Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-23T11:12:18.2751030Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-23T11:12:18.2751113Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-23T11:12:18.2751171Z  106 โ”‚     });
2026-10-23T11:12:18.2751238Z  107 โ”‚   }, [cardCoverage]);
2026-10-23T11:12:18.2751320Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-23T11:12:18.2751401Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T11:12:18.2751529Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T11:12:18.2751603Z  111 โ”‚       notifyCoverage();
2026-10-23T11:12:18.2751659Z  112 โ”‚     },
2026-10-23T11:12:18.2751727Z  113 โ”‚     [notifyCoverage],
2026-10-23T11:12:18.2751783Z  114 โ”‚   );
2026-10-23T11:12:18.2751869Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-23T11:12:18.2751947Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T11:12:18.2752075Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T11:12:18.2752190Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-23T11:12:18.2752269Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2752404Z      ยท            โ•ฐโ”€โ”€ `cardHeight` cannot be modified
2026-10-23T11:12:18.2752473Z  119 โ”‚       notifyCoverage();
2026-10-23T11:12:18.2752527Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2752796Z   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-23T11:12:18.2753100Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2753104Z
2026-10-23T11:12:18.2753300Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T11:12:18.2753455Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-23T11:12:18.2753547Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-23T11:12:18.2753645Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-23T11:12:18.2753750Z      ยท                                      โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2754040Z      ยท                                         โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-23T11:12:18.2754145Z   92 โ”‚     if (!cardCoverage) {
2026-10-23T11:12:18.2754206Z   93 โ”‚       return;
2026-10-23T11:12:18.2754258Z   94 โ”‚     }
2026-10-23T11:12:18.2754407Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-23T11:12:18.2754495Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-23T11:12:18.2754554Z   97 โ”‚       return;
2026-10-23T11:12:18.2754606Z   98 โ”‚     }
2026-10-23T11:12:18.2754687Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T11:12:18.2754769Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T11:12:18.2754847Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2754986Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-23T11:12:18.2755048Z  101 โ”‚       return;
2026-10-23T11:12:18.2755101Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2755444Z   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-23T11:12:18.2755804Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2755806Z
2026-10-23T11:12:18.2756005Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T11:12:18.2756160Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-23T11:12:18.2756242Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T11:12:18.2756323Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T11:12:18.2756401Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2756541Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-23T11:12:18.2756604Z  101 โ”‚       return;
2026-10-23T11:12:18.2756657Z  102 โ”‚     }
2026-10-23T11:12:18.2756759Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-23T11:12:18.2756858Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-23T11:12:18.2756945Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-23T11:12:18.2756999Z  106 โ”‚     });
2026-10-23T11:12:18.2757068Z  107 โ”‚   }, [cardCoverage]);
2026-10-23T11:12:18.2757153Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-23T11:12:18.2757235Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T11:12:18.2757340Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2757564Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-23T11:12:18.2757746Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T11:12:18.2757808Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2758143Z   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-23T11:12:18.2758449Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2758452Z
2026-10-23T11:12:18.2758649Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T11:12:18.2758806Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-23T11:12:18.2758890Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-23T11:12:18.2759041Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T11:12:18.2759188Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2759404Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-23T11:12:18.2759530Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T11:12:18.2759644Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-23T11:12:18.2759722Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2759854Z      ยท            โ•ฐโ”€โ”€ This modifies `cardHeight`
2026-10-23T11:12:18.2759924Z  119 โ”‚       notifyCoverage();
2026-10-23T11:12:18.2759974Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2760309Z   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-23T11:12:18.2760615Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2760617Z
2026-10-23T11:12:18.2760819Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-23T11:12:18.2760954Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:229:6]
2026-10-23T11:12:18.2761118Z  225 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-23T11:12:18.2761208Z  226 โ”‚       nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2761302Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2761761Z      ยท                  โ•ฐโ”€โ”€ 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-23T11:12:18.2761840Z  227 โ”‚       mostRecentEventCount,
2026-10-23T11:12:18.2761898Z  228 โ”‚     );
2026-10-23T11:12:18.2762022Z  229 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-23T11:12:18.2762156Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2762356Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2762440Z  230 โ”‚   const assumedValue = props.value;
2026-10-23T11:12:18.2762494Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2762663Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-23T11:12:18.2762975Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2762981Z
2026-10-23T11:12:18.2763195Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T11:12:18.2763332Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:237:7]
2026-10-23T11:12:18.2763476Z  236 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-23T11:12:18.2763563Z  237 โ”‚       nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2763656Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2764104Z      ยท                  โ•ฐโ”€โ”€ 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-23T11:12:18.2764228Z  238 โ”‚       controlledEventCount,
2026-10-23T11:12:18.2764323Z  239 โ”‚       assumedValue,
2026-10-23T11:12:18.2764378Z  240 โ”‚     );
2026-10-23T11:12:18.2764537Z  241 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-23T11:12:18.2764678Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2764886Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-23T11:12:18.2764974Z  242 โ”‚   const acceptNativeEvent = useCallback(
2026-10-23T11:12:18.2765028Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2765450Z   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-23T11:12:18.2765765Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2765768Z
2026-10-23T11:12:18.2765909Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2766045Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:162:29]
2026-10-23T11:12:18.2766171Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-23T11:12:18.2766285Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-23T11:12:18.2766402Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2766574Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2766637Z  163 โ”‚     });
2026-10-23T11:12:18.2766695Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2767154Z   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-23T11:12:18.2767439Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2767442Z
2026-10-23T11:12:18.2767587Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2767744Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:162:29]
2026-10-23T11:12:18.2767867Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-23T11:12:18.2767981Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-23T11:12:18.2768102Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2768308Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2768366Z  163 โ”‚     });
2026-10-23T11:12:18.2768415Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2768870Z   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-23T11:12:18.2769158Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2769160Z
2026-10-23T11:12:18.2769360Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2769529Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:23]
2026-10-23T11:12:18.2769583Z  163 โ”‚     });
2026-10-23T11:12:18.2769678Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-23T11:12:18.2769805Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2769994Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2770110Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2770185Z  165 โ”‚     return JSON.stringify(
2026-10-23T11:12:18.2770238Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2770710Z   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-23T11:12:18.2771000Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2771002Z
2026-10-23T11:12:18.2771142Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2771277Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:206:5]
2026-10-23T11:12:18.2771348Z  205 โ”‚     mostRecentEventCount,
2026-10-23T11:12:18.2771437Z  206 โ”‚     nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2771539Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2771726Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2771787Z  207 โ”‚   );
2026-10-23T11:12:18.2771843Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2772298Z   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-23T11:12:18.2772585Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2772588Z
2026-10-23T11:12:18.2772732Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2772868Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:212:5]
2026-10-23T11:12:18.2772941Z  211 โ”‚     mostRecentEventCount,
2026-10-23T11:12:18.2773075Z  212 โ”‚     nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2773214Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2773400Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2773458Z  213 โ”‚   );
2026-10-23T11:12:18.2773508Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2773968Z   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-23T11:12:18.2774256Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2774258Z
2026-10-23T11:12:18.2774451Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-23T11:12:18.2774586Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:197:6]
2026-10-23T11:12:18.2774710Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-23T11:12:18.2774823Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-23T11:12:18.2774933Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2775390Z      ยท                                      โ•ฐโ”€โ”€ 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-23T11:12:18.2775446Z  163 โ”‚     });
2026-10-23T11:12:18.2775539Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-23T11:12:18.2775612Z  165 โ”‚     return JSON.stringify(
2026-10-23T11:12:18.2775781Z  166 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-23T11:12:18.2775852Z  167 โ”‚         const record =
2026-10-23T11:12:18.2775933Z  168 โ”‚           token.type === "context"
2026-10-23T11:12:18.2776098Z  169 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-23T11:12:18.2776167Z  170 โ”‚             : undefined;
2026-10-23T11:12:18.2776275Z  171 โ”‚         const presentation = contextChipPresentation(
2026-10-23T11:12:18.2776387Z  172 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-23T11:12:18.2776451Z  173 โ”‚           record,
2026-10-23T11:12:18.2776514Z  174 โ”‚         );
2026-10-23T11:12:18.2776598Z  175 โ”‚         const icon = contextChipIcon(
2026-10-23T11:12:18.2776667Z  176 โ”‚           presentation,
2026-10-23T11:12:18.2776815Z  177 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-23T11:12:18.2776878Z  178 โ”‚         );
2026-10-23T11:12:18.2776939Z  179 โ”‚         return {
2026-10-23T11:12:18.2777010Z  180 โ”‚           type: token.type,
2026-10-23T11:12:18.2777087Z  181 โ”‚           source: token.source,
2026-10-23T11:12:18.2777156Z  182 โ”‚           start: token.start,
2026-10-23T11:12:18.2777224Z  183 โ”‚           end: token.end,
2026-10-23T11:12:18.2777309Z  184 โ”‚           accent: presentation.accent,
2026-10-23T11:12:18.2777374Z  185 โ”‚           label:
2026-10-23T11:12:18.2777450Z  186 โ”‚             token.type === "skill"
2026-10-23T11:12:18.2777559Z  187 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-23T11:12:18.2777656Z  188 โ”‚               : token.type === "context"
2026-10-23T11:12:18.2777967Z  189 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-23T11:12:18.2778082Z  190 โ”‚                 : basename(token.value),
2026-10-23T11:12:18.2778228Z  191 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-23T11:12:18.2778322Z  192 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-23T11:12:18.2778413Z  193 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-23T11:12:18.2778469Z  194 โ”‚         };
2026-10-23T11:12:18.2778528Z  195 โ”‚       }),
2026-10-23T11:12:18.2778586Z  196 โ”‚     );
2026-10-23T11:12:18.2778686Z  197 โ”‚   }, [props.value, props.context, skillLabels]);
2026-10-23T11:12:18.2778804Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2779004Z      ยท                          โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2779152Z  198 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-23T11:12:18.2779211Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2779413Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T11:12:18.2779724Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2779726Z
2026-10-23T11:12:18.2779913Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-23T11:12:18.2780049Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:259:5]
2026-10-23T11:12:18.2780180Z  251 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-23T11:12:18.2780280Z  252 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-23T11:12:18.2780373Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2780828Z      ยท                  โ•ฐโ”€โ”€ 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-23T11:12:18.2780925Z  253 โ”‚         eventCount: acknowledgedEventCount,
2026-10-23T11:12:18.2780985Z  254 โ”‚         value,
2026-10-23T11:12:18.2781066Z  255 โ”‚         selection: nextSelection,
2026-10-23T11:12:18.2781126Z  256 โ”‚       });
2026-10-23T11:12:18.2781211Z  257 โ”‚       return acknowledgedEventCount;
2026-10-23T11:12:18.2781272Z  258 โ”‚     },
2026-10-23T11:12:18.2781328Z  259 โ”‚     [],
2026-10-23T11:12:18.2781398Z      ยท     โ”€โ”ฌ
2026-10-23T11:12:18.2781580Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2781639Z  260 โ”‚   );
2026-10-23T11:12:18.2781695Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2781895Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T11:12:18.2782202Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2782205Z
2026-10-23T11:12:18.2782457Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2782617Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-23T11:12:18.2782681Z  259 โ”‚     .join("|");
2026-10-23T11:12:18.2782745Z  260 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2782815Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2782997Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2783095Z  261 โ”‚     stop();
2026-10-23T11:12:18.2783166Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-23T11:12:18.2783328Z      ยท       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2783396Z  262 โ”‚   }, [orderVersion]);
2026-10-23T11:12:18.2783449Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2784049Z   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-23T11:12:18.2784373Z   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-23T11:12:18.2784378Z
2026-10-23T11:12:18.2784588Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T11:12:18.2784747Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-23T11:12:18.2784814Z  260 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2784873Z  261 โ”‚     stop();
2026-10-23T11:12:18.2784938Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-23T11:12:18.2785065Z      ยท       โ•ฐโ”€โ”€ Missing dependency `stop`
2026-10-23T11:12:18.2785131Z  262 โ”‚   }, [orderVersion]);
2026-10-23T11:12:18.2785211Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2785355Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `orderVersion`
2026-10-23T11:12:18.2785416Z  263 โ”‚   useEffect(
2026-10-23T11:12:18.2785467Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2785886Z   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-23T11:12:18.2786192Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2786197Z
2026-10-23T11:12:18.2786340Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2786500Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-23T11:12:18.2786580Z  95 โ”‚   const latest = useRef(props);
2026-10-23T11:12:18.2786650Z  96 โ”‚   latest.current = props;
2026-10-23T11:12:18.2786758Z     ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2786943Z     ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2787060Z     ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2787129Z  97 โ”‚   const gesture = useMemo(
2026-10-23T11:12:18.2787179Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2787650Z   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-23T11:12:18.2787964Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2787967Z
2026-10-23T11:12:18.2788164Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2788358Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-23T11:12:18.2788424Z  103 โ”‚         .runOnJS(true)
2026-10-23T11:12:18.2788523Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-23T11:12:18.2788641Z      ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2788837Z      ยท                                 โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2788971Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2789024Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2789483Z   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-23T11:12:18.2789773Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2789775Z
2026-10-23T11:12:18.2789917Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2790076Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-23T11:12:18.2790172Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-23T11:12:18.2790306Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2790448Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2790663Z      ยท                                             โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2790795Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2790848Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2791303Z   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-23T11:12:18.2791586Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2791588Z
2026-10-23T11:12:18.2791729Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2791886Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-23T11:12:18.2792068Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2792294Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2792439Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2792644Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2792768Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T11:12:18.2792821Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2793273Z   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-23T11:12:18.2793567Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2793573Z
2026-10-23T11:12:18.2793716Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2793872Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-23T11:12:18.2793994Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2794120Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T11:12:18.2794259Z      ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2794466Z      ยท                                            โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2794542Z  108 โ”‚     [props.disabled],
2026-10-23T11:12:18.2794595Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2795052Z   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-23T11:12:18.2795336Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2795338Z
2026-10-23T11:12:18.2795488Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2795689Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-23T11:12:18.2795804Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-23T11:12:18.2795915Z  249 โ”‚   latest.current = { rows, planners, moveThread };
2026-10-23T11:12:18.2796024Z      ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2796205Z      ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2796318Z      ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2796373Z  250 โ”‚
2026-10-23T11:12:18.2796426Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2796885Z   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-23T11:12:18.2797167Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2797231Z
2026-10-23T11:12:18.2797411Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2797569Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-23T11:12:18.2797702Z  246 โ”‚   const [preview, setPreview] = useState<Drag | null>(null);
2026-10-23T11:12:18.2797816Z  247 โ”‚   const translateY = useRef(new Animated.Value(0)).current;
2026-10-23T11:12:18.2797941Z      ยท                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2798109Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2798219Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-23T11:12:18.2798271Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2798729Z   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-23T11:12:18.2799020Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2799022Z
2026-10-23T11:12:18.2799188Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.2799345Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-23T11:12:18.2799407Z  323 โ”‚     update(0);
2026-10-23T11:12:18.2799490Z  324 โ”‚     let last = performance.now();
2026-10-23T11:12:18.2799587Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2799733Z      ยท                        โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.2799802Z  325 โ”‚     const tick = () => {
2026-10-23T11:12:18.2799855Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2800152Z   help: `performance.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.2800441Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.2800444Z
2026-10-23T11:12:18.2800629Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-23T11:12:18.2800785Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-23T11:12:18.2800846Z   98 โ”‚     () =>
2026-10-23T11:12:18.2800913Z   99 โ”‚       Gesture.Pan()
2026-10-23T11:12:18.2800993Z      ยท               โ”€โ”ฌโ”€
2026-10-23T11:12:18.2801124Z      ยท                โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-23T11:12:18.2801203Z  100 โ”‚         .enabled(!props.disabled)
2026-10-23T11:12:18.2801255Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2801528Z   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-23T11:12:18.2801964Z   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-23T11:12:18.2801967Z
2026-10-23T11:12:18.2802151Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-23T11:12:18.2802360Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-23T11:12:18.2802468Z  103 โ”‚         .runOnJS(true)
2026-10-23T11:12:18.2802565Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-23T11:12:18.2802659Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.2803086Z      ยท                           โ•ฐโ”€โ”€ Missing dependency `latest`. 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-23T11:12:18.2803217Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2803341Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T11:12:18.2803460Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T11:12:18.2803530Z  108 โ”‚     [props.disabled],
2026-10-23T11:12:18.2803618Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2803806Z      ยท             โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2803860Z  109 โ”‚   );
2026-10-23T11:12:18.2803912Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2804114Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T11:12:18.2804420Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2804423Z
2026-10-23T11:12:18.2804751Z   โš  eslint(no-unused-vars): Variable 'layerCodexAppServerClientFactoryCommand' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2804921Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1444:7]
2026-10-23T11:12:18.2804979Z  1443 โ”‚
2026-10-23T11:12:18.2805095Z  1444 โ”‚ const layerCodexAppServerClientFactoryCommand = (
2026-10-23T11:12:18.2805212Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2805415Z       ยท                          โ•ฐโ”€โ”€ 'layerCodexAppServerClientFactoryCommand' is declared here
2026-10-23T11:12:18.2805536Z  1445 โ”‚   options: CodexClient.CodexAppServerClientOptions & {
2026-10-23T11:12:18.2805589Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2805693Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2805696Z
2026-10-23T11:12:18.2805947Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2806114Z       โ•ญโ”€[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1680:7]
2026-10-23T11:12:18.2806171Z  1679 โ”‚
2026-10-23T11:12:18.2806243Z  1680 โ”‚ const layer: Layer.Layer<
2026-10-23T11:12:18.2806313Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.2806445Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T11:12:18.2806540Z  1681 โ”‚   ProviderAdapter.ProviderAdapterV2,
2026-10-23T11:12:18.2806593Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2806693Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2806696Z
2026-10-23T11:12:18.2806987Z   โš  eslint(no-unused-vars): Variable 'layerFromProviderAdapter' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2807146Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts:346:7]
2026-10-23T11:12:18.2807201Z  345 โ”‚
2026-10-23T11:12:18.2807350Z  346 โ”‚ const layerFromProviderAdapter: Layer.Layer<
2026-10-23T11:12:18.2807479Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2807660Z      ยท                   โ•ฐโ”€โ”€ 'layerFromProviderAdapter' is declared here
2026-10-23T11:12:18.2807738Z  347 โ”‚   ProviderAdapterRegistryV2,
2026-10-23T11:12:18.2807800Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2807902Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2807904Z
2026-10-23T11:12:18.2808159Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2808311Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:512:5]
2026-10-23T11:12:18.2808369Z  510 โ”‚   }, []);
2026-10-23T11:12:18.2808436Z  511 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2808509Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2808647Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2808734Z  512 โ”‚     setKeyboardStateSuspect(false);
2026-10-23T11:12:18.2808826Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2808995Z      ยท                โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2809096Z  513 โ”‚   }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-23T11:12:18.2809146Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2809747Z   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-23T11:12:18.2810071Z   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-23T11:12:18.2810076Z
2026-10-23T11:12:18.2810329Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2810479Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:872:7]
2026-10-23T11:12:18.2810631Z  869 โ”‚   const [lastKnownKeyboardHeight, setLastKnownKeyboardHeight] = useState(0);
2026-10-23T11:12:18.2810697Z  870 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2810770Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2810898Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2811053Z  871 โ”‚     if (liveKeyboardHeight > 0 && liveKeyboardHeight !== lastKnownKeyboardHeight) {
2026-10-23T11:12:18.2811172Z  872 โ”‚       setLastKnownKeyboardHeight(liveKeyboardHeight);
2026-10-23T11:12:18.2811272Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2811447Z      ยท                    โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2811501Z  873 โ”‚     }
2026-10-23T11:12:18.2811553Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2812142Z   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-23T11:12:18.2812460Z   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-23T11:12:18.2812516Z
2026-10-23T11:12:18.2812799Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2812951Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1119:5]
2026-10-23T11:12:18.2813006Z  1117 โ”‚
2026-10-23T11:12:18.2813073Z  1118 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2813146Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2813273Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2813352Z  1119 โ”‚     setAnchorMessageId(null);
2026-10-23T11:12:18.2813439Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2813609Z       ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2813690Z  1120 โ”‚     setSubmittedMessageId(null);
2026-10-23T11:12:18.2813752Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2814339Z   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-23T11:12:18.2814655Z   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-23T11:12:18.2814658Z
2026-10-23T11:12:18.2814854Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2815001Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:513:7]
2026-10-23T11:12:18.2815088Z  512 โ”‚     setKeyboardStateSuspect(false);
2026-10-23T11:12:18.2815189Z  513 โ”‚   }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-23T11:12:18.2815333Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2815537Z      ยท               โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `liveKeyboardHeight`
2026-10-23T11:12:18.2815695Z      ยท               โ•ฐโ”€โ”€ Unnecessary dependency `isKeyboardVisible`
2026-10-23T11:12:18.2815822Z  514 โ”‚   const handleOwnedInputFocusChange = (focused: boolean) => {
2026-10-23T11:12:18.2815875Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2816162Z   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-23T11:12:18.2816522Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2816558Z
2026-10-23T11:12:18.2816757Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2816912Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1067:7]
2026-10-23T11:12:18.2817000Z  1066 โ”‚     userInputInsetProgress.set(1);
2026-10-23T11:12:18.2817159Z  1067 โ”‚   }, [activeUserInputRequestId, userInputCardProgress, userInputInsetProgress]);
2026-10-23T11:12:18.2817255Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2817435Z       ยท                   โ•ฐโ”€โ”€ Unnecessary dependency `activeUserInputRequestId`
2026-10-23T11:12:18.2817543Z  1068 โ”‚   const showContent = props.showContent ?? true;
2026-10-23T11:12:18.2817594Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2817926Z   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-23T11:12:18.2818236Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2818238Z
2026-10-23T11:12:18.2818436Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2818592Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1125:15]
2026-10-23T11:12:18.2818660Z  1124 โ”‚     freeze.set(false);
2026-10-23T11:12:18.2818745Z  1125 โ”‚   }, [freeze, selectedThreadKey]);
2026-10-23T11:12:18.2818840Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2819007Z       ยท                       โ•ฐโ”€โ”€ Unnecessary dependency `selectedThreadKey`
2026-10-23T11:12:18.2819063Z  1126 โ”‚
2026-10-23T11:12:18.2819119Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2819406Z   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-23T11:12:18.2819713Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2819715Z
2026-10-23T11:12:18.2819869Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2820022Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:955:5]
2026-10-23T11:12:18.2820133Z  950 โ”‚   const composerPopoverHeight = useSharedValue(0);
2026-10-23T11:12:18.2820243Z  951 โ”‚   const floatingControlCoverage = useSharedValue(
2026-10-23T11:12:18.2820339Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2820501Z      ยท                    โ•ฐโ”€โ”€ `floatingControlCoverage` originates here
2026-10-23T11:12:18.2820629Z  952 โ”‚     showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-23T11:12:18.2820685Z  953 โ”‚   );
2026-10-23T11:12:18.2820749Z  954 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2820853Z  955 โ”‚     floatingControlCoverage.value = withTiming(
2026-10-23T11:12:18.2820947Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2821107Z      ยท                โ•ฐโ”€โ”€ `floatingControlCoverage` cannot be modified
2026-10-23T11:12:18.2821232Z  956 โ”‚       showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-23T11:12:18.2821286Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2821603Z   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-23T11:12:18.2821944Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2821946Z
2026-10-23T11:12:18.2822101Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2822250Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:973:7]
2026-10-23T11:12:18.2822435Z  963 โ”‚   const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
2026-10-23T11:12:18.2822560Z  964 โ”‚   const combinedContentInsetEndAdjustment = useSharedValue(
2026-10-23T11:12:18.2822670Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2822855Z      ยท                         โ•ฐโ”€โ”€ `combinedContentInsetEndAdjustment` originates here
2026-10-23T11:12:18.2822988Z  965 โ”‚     Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
2026-10-23T11:12:18.2823044Z  966 โ”‚   );
2026-10-23T11:12:18.2823118Z  967 โ”‚   useAnimatedReaction(
2026-10-23T11:12:18.2825670Z  968 โ”‚     () =>
2026-10-23T11:12:18.2825775Z  969 โ”‚       contentInsetEndAdjustment.value +
2026-10-23T11:12:18.2825867Z  970 โ”‚       floatingControlCoverage.value +
2026-10-23T11:12:18.2826062Z  971 โ”‚       (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
2026-10-23T11:12:18.2826124Z  972 โ”‚     (value) => {
2026-10-23T11:12:18.2826235Z  973 โ”‚       combinedContentInsetEndAdjustment.value = value;
2026-10-23T11:12:18.2826346Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2826547Z      ยท                       โ•ฐโ”€โ”€ `combinedContentInsetEndAdjustment` cannot be modified
2026-10-23T11:12:18.2826608Z  974 โ”‚     },
2026-10-23T11:12:18.2826657Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2826921Z   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-23T11:12:18.2827223Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2827226Z
2026-10-23T11:12:18.2827480Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2827673Z      โ•ญโ”€[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:408:7]
2026-10-23T11:12:18.2827726Z  407 โ”‚
2026-10-23T11:12:18.2827863Z  408 โ”‚ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-23T11:12:18.2827937Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.2828062Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T11:12:18.2828112Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2828216Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2828218Z
2026-10-23T11:12:18.2828473Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2828624Z     โ•ญโ”€[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-23T11:12:18.2828782Z  28 โ”‚   const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-23T11:12:18.2828851Z  29 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2828923Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2829117Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2829270Z  30 โ”‚     if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-23T11:12:18.2829377Z     ยท                                        โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2829568Z     ยท                                           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2829640Z  31 โ”‚   }, [key, live, snapshot]);
2026-10-23T11:12:18.2829690Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2830282Z   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-23T11:12:18.2830611Z   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-23T11:12:18.2830616Z
2026-10-23T11:12:18.2830895Z   โš  eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2831041Z        โ•ญโ”€[apps/server/src/orchestration-v2/Orchestrator.ts:12322:7]
2026-10-23T11:12:18.2831095Z  12321 โ”‚
2026-10-23T11:12:18.2831237Z  12322 โ”‚ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-23T11:12:18.2831324Z        ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2831475Z        ยท               โ•ฐโ”€โ”€ 'layerUnavailable' is declared here
2026-10-23T11:12:18.2831542Z  12323 โ”‚   OrchestratorV2,
2026-10-23T11:12:18.2831598Z        โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2831708Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2831714Z
2026-10-23T11:12:18.2831906Z   โš  eslint(no-unused-vars): Identifier 'Image' is imported but never used.
2026-10-23T11:12:18.2832045Z     โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
2026-10-23T11:12:18.2832180Z  16 โ”‚ import type { NativeSyntheticEvent, ViewProps } from "react-native";
2026-10-23T11:12:18.2832297Z  17 โ”‚ import { Image, Platform, StyleSheet } from "react-native";
2026-10-23T11:12:18.2832371Z     ยท          โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.2832496Z     ยท            โ•ฐโ”€โ”€ 'Image' is imported here
2026-10-23T11:12:18.2832551Z  18 โ”‚
2026-10-23T11:12:18.2832604Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2832703Z   help: Consider removing this import.
2026-10-23T11:12:18.2832705Z
2026-10-23T11:12:18.2832912Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-23T11:12:18.2833058Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:227:6]
2026-10-23T11:12:18.2833222Z  223 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-23T11:12:18.2833315Z  224 โ”‚       nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2833409Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2833867Z      ยท                  โ•ฐโ”€โ”€ 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-23T11:12:18.2833943Z  225 โ”‚       mostRecentEventCount,
2026-10-23T11:12:18.2834002Z  226 โ”‚     );
2026-10-23T11:12:18.2834180Z  227 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-23T11:12:18.2834347Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2834550Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2834636Z  228 โ”‚   const assumedValue = props.value;
2026-10-23T11:12:18.2834690Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2834855Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-23T11:12:18.2835167Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2835169Z
2026-10-23T11:12:18.2835382Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T11:12:18.2835541Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:235:7]
2026-10-23T11:12:18.2835744Z  234 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-23T11:12:18.2835831Z  235 โ”‚       nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2835923Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2836372Z      ยท                  โ•ฐโ”€โ”€ 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-23T11:12:18.2836445Z  236 โ”‚       controlledEventCount,
2026-10-23T11:12:18.2836509Z  237 โ”‚       assumedValue,
2026-10-23T11:12:18.2836565Z  238 โ”‚     );
2026-10-23T11:12:18.2836722Z  239 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-23T11:12:18.2836865Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2837072Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-23T11:12:18.2837165Z  240 โ”‚   const acceptNativeEvent = useCallback(
2026-10-23T11:12:18.2837219Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2837654Z   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-23T11:12:18.2837970Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2837975Z
2026-10-23T11:12:18.2838188Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2838376Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:160:29]
2026-10-23T11:12:18.2838501Z  159 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-23T11:12:18.2838614Z  160 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-23T11:12:18.2838731Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2838900Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2838959Z  161 โ”‚     });
2026-10-23T11:12:18.2839013Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2839479Z   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-23T11:12:18.2839772Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2839775Z
2026-10-23T11:12:18.2839918Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2840064Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:160:29]
2026-10-23T11:12:18.2840186Z  159 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-23T11:12:18.2840295Z  160 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-23T11:12:18.2840414Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2840627Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2840689Z  161 โ”‚     });
2026-10-23T11:12:18.2840740Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2841202Z   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-23T11:12:18.2841490Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2841492Z
2026-10-23T11:12:18.2841636Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2841778Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:23]
2026-10-23T11:12:18.2841834Z  161 โ”‚     });
2026-10-23T11:12:18.2841930Z  162 โ”‚     confirmedTokensRef.current = tokens;
2026-10-23T11:12:18.2842058Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2842245Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2842361Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2842434Z  163 โ”‚     return JSON.stringify(
2026-10-23T11:12:18.2842486Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2842944Z   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-23T11:12:18.2843285Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2843321Z
2026-10-23T11:12:18.2843464Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2843607Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:204:5]
2026-10-23T11:12:18.2843681Z  203 โ”‚     mostRecentEventCount,
2026-10-23T11:12:18.2843768Z  204 โ”‚     nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2843875Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2844064Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2844120Z  205 โ”‚   );
2026-10-23T11:12:18.2844170Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2844633Z   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-23T11:12:18.2844928Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2844931Z
2026-10-23T11:12:18.2845074Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2845216Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:210:5]
2026-10-23T11:12:18.2845285Z  209 โ”‚     mostRecentEventCount,
2026-10-23T11:12:18.2845377Z  210 โ”‚     nativeEventSnapshotsRef.current,
2026-10-23T11:12:18.2845483Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2845669Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2845728Z  211 โ”‚   );
2026-10-23T11:12:18.2845785Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2846241Z   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-23T11:12:18.2846530Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2846532Z
2026-10-23T11:12:18.2846719Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-23T11:12:18.2846858Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:195:6]
2026-10-23T11:12:18.2846982Z  159 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-23T11:12:18.2847099Z  160 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-23T11:12:18.2847211Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2847683Z      ยท                                      โ•ฐโ”€โ”€ 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-23T11:12:18.2847742Z  161 โ”‚     });
2026-10-23T11:12:18.2847834Z  162 โ”‚     confirmedTokensRef.current = tokens;
2026-10-23T11:12:18.2847907Z  163 โ”‚     return JSON.stringify(
2026-10-23T11:12:18.2848068Z  164 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-23T11:12:18.2848138Z  165 โ”‚         const record =
2026-10-23T11:12:18.2848220Z  166 โ”‚           token.type === "context"
2026-10-23T11:12:18.2848438Z  167 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-23T11:12:18.2848538Z  168 โ”‚             : undefined;
2026-10-23T11:12:18.2848650Z  169 โ”‚         const presentation = contextChipPresentation(
2026-10-23T11:12:18.2848761Z  170 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-23T11:12:18.2848825Z  171 โ”‚           record,
2026-10-23T11:12:18.2848884Z  172 โ”‚         );
2026-10-23T11:12:18.2848969Z  173 โ”‚         const icon = contextChipIcon(
2026-10-23T11:12:18.2849038Z  174 โ”‚           presentation,
2026-10-23T11:12:18.2849181Z  175 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-23T11:12:18.2849237Z  176 โ”‚         );
2026-10-23T11:12:18.2849300Z  177 โ”‚         return {
2026-10-23T11:12:18.2849373Z  178 โ”‚           type: token.type,
2026-10-23T11:12:18.2849455Z  179 โ”‚           source: token.source,
2026-10-23T11:12:18.2849529Z  180 โ”‚           start: token.start,
2026-10-23T11:12:18.2849597Z  181 โ”‚           end: token.end,
2026-10-23T11:12:18.2849684Z  182 โ”‚           accent: presentation.accent,
2026-10-23T11:12:18.2849745Z  183 โ”‚           label:
2026-10-23T11:12:18.2849821Z  184 โ”‚             token.type === "skill"
2026-10-23T11:12:18.2849930Z  185 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-23T11:12:18.2850017Z  186 โ”‚               : token.type === "context"
2026-10-23T11:12:18.2850249Z  187 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-23T11:12:18.2850331Z  188 โ”‚                 : basename(token.value),
2026-10-23T11:12:18.2850476Z  189 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-23T11:12:18.2850576Z  190 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-23T11:12:18.2850669Z  191 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-23T11:12:18.2850725Z  192 โ”‚         };
2026-10-23T11:12:18.2850785Z  193 โ”‚       }),
2026-10-23T11:12:18.2850842Z  194 โ”‚     );
2026-10-23T11:12:18.2850940Z  195 โ”‚   }, [props.value, props.context, skillLabels]);
2026-10-23T11:12:18.2851060Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2851258Z      ยท                          โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2851396Z  196 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-23T11:12:18.2851450Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2851651Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T11:12:18.2851967Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2851973Z
2026-10-23T11:12:18.2852158Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-23T11:12:18.2852299Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:257:5]
2026-10-23T11:12:18.2852427Z  249 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-23T11:12:18.2852531Z  250 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-23T11:12:18.2852623Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2853130Z      ยท                  โ•ฐโ”€โ”€ 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-23T11:12:18.2853259Z  251 โ”‚         eventCount: acknowledgedEventCount,
2026-10-23T11:12:18.2853320Z  252 โ”‚         value,
2026-10-23T11:12:18.2853400Z  253 โ”‚         selection: nextSelection,
2026-10-23T11:12:18.2853459Z  254 โ”‚       });
2026-10-23T11:12:18.2853543Z  255 โ”‚       return acknowledgedEventCount;
2026-10-23T11:12:18.2853601Z  256 โ”‚     },
2026-10-23T11:12:18.2853657Z  257 โ”‚     [],
2026-10-23T11:12:18.2853726Z      ยท     โ”€โ”ฌ
2026-10-23T11:12:18.2853903Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T11:12:18.2853960Z  258 โ”‚   );
2026-10-23T11:12:18.2854013Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2854217Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T11:12:18.2854529Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2854539Z
2026-10-23T11:12:18.2854704Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.2854837Z       โ•ญโ”€[apps/web/src/components/CommandPalette.tsx:1996:20]
2026-10-23T11:12:18.2854957Z  1995 โ”‚         title: inferProjectTitleFromPath(destinationPath),
2026-10-23T11:12:18.2855053Z  1996 โ”‚         createdAt: new Date().toISOString(),
2026-10-23T11:12:18.2855144Z       ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2855291Z       ยท                         โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.2855400Z  1997 โ”‚         remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-23T11:12:18.2855458Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2855740Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.2856036Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.2856038Z
2026-10-23T11:12:18.2856237Z   โš  eslint(no-unsafe-optional-chaining): Unsafe usage of optional chaining
2026-10-23T11:12:18.2856406Z       โ•ญโ”€[apps/server/src/orchestration-v2/ThreadLaunchService.test.ts:1783:8]
2026-10-23T11:12:18.2856470Z  1782 โ”‚     assert.equal(
2026-10-23T11:12:18.2856616Z  1783 โ”‚       (stored.context?.records[0] as { attachmentId: string }).attachmentId,
2026-10-23T11:12:18.2856719Z       ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2856850Z  1784 โ”‚       stored.attachments[0]?.id,
2026-10-23T11:12:18.2856947Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2857118Z   help: If this short-circuits with 'undefined' the evaluation will throw TypeError
2026-10-23T11:12:18.2857120Z
2026-10-23T11:12:18.2857325Z   โš  eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-23T11:12:18.2857489Z     โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-23T11:12:18.2857575Z  24 โ”‚ import * as Schema from "effect/Schema";
2026-10-23T11:12:18.2857745Z  25 โ”‚ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-23T11:12:18.2857830Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2857971Z     ยท                  โ•ฐโ”€โ”€ 'HostProcess' is imported here
2026-10-23T11:12:18.2858023Z  26 โ”‚
2026-10-23T11:12:18.2858077Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2858182Z   help: Consider removing this import.
2026-10-23T11:12:18.2858188Z
2026-10-23T11:12:18.2858458Z   โš  eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2858625Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-23T11:12:18.2858706Z  123 โ”‚     const path = yield* Path.Path;
2026-10-23T11:12:18.2858830Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T11:12:18.2858914Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2859054Z      ยท                 โ•ฐโ”€โ”€ 'serverConfig' is declared here
2026-10-23T11:12:18.2859195Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T11:12:18.2859249Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2859359Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2859364Z
2026-10-23T11:12:18.2859634Z   โš  eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2859793Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-23T11:12:18.2859910Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T11:12:18.2860048Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T11:12:18.2860136Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2860278Z      ยท                  โ•ฐโ”€โ”€ 'serverSettings' is declared here
2026-10-23T11:12:18.2860415Z  126 โ”‚     const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-23T11:12:18.2860469Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2860579Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2860585Z
2026-10-23T11:12:18.2860790Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T11:12:18.2860924Z     โ•ญโ”€[apps/web/src/lib/composerContextReferences.ts:90:40]
2026-10-23T11:12:18.2861001Z  89 โ”‚   let cursor = prompt.length;
2026-10-23T11:12:18.2861109Z  90 โ”‚   for (const occurrence of occurrences.reverse()) {
2026-10-23T11:12:18.2861213Z     ยท                                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2861298Z  91 โ”‚     let { start, end } = occurrence;
2026-10-23T11:12:18.2861353Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2861614Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T11:12:18.2861616Z
2026-10-23T11:12:18.2861889Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T11:12:18.2862097Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:370:7]
2026-10-23T11:12:18.2862180Z  369 โ”‚       mountedRef.current = false;
2026-10-23T11:12:18.2862258Z  370 โ”‚       flow.setBranchQuery("");
2026-10-23T11:12:18.2862331Z      ยท       โ”€โ”€โ”ฌโ”€
2026-10-23T11:12:18.2862455Z      ยท         โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-23T11:12:18.2862514Z  371 โ”‚     };
2026-10-23T11:12:18.2862589Z  372 โ”‚   }, [flow.setBranchQuery]);
2026-10-23T11:12:18.2862674Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2862877Z      ยท                โ•ฐโ”€โ”€ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-23T11:12:18.2862935Z  373 โ”‚
2026-10-23T11:12:18.2862995Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2863414Z   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-23T11:12:18.2863725Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2863728Z
2026-10-23T11:12:18.2863985Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2864148Z     โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-23T11:12:18.2864264Z  37 โ”‚   const [initialized, setInitialized] = useState(false);
2026-10-23T11:12:18.2864335Z  38 โ”‚   useLayoutEffect(() => {
2026-10-23T11:12:18.2864417Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2864549Z     ยท          โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2864612Z  39 โ”‚     reset();
2026-10-23T11:12:18.2864678Z  40 โ”‚     setInitialized(true);
2026-10-23T11:12:18.2864757Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2864926Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2864991Z  41 โ”‚   }, [reset]);
2026-10-23T11:12:18.2865042Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2865643Z   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-23T11:12:18.2865967Z   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-23T11:12:18.2865969Z
2026-10-23T11:12:18.2866225Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2866386Z     โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-23T11:12:18.2866438Z  88 โ”‚
2026-10-23T11:12:18.2866511Z  89 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2866585Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2866710Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2866870Z  90 โ”‚     if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-23T11:12:18.2867033Z  91 โ”‚     const branchName = initialProjectRef.branch;
2026-10-23T11:12:18.2867135Z  92 โ”‚     let active = true;
2026-10-23T11:12:18.2867230Z  93 โ”‚     setPendingCheckouts((count) => count + 1);
2026-10-23T11:12:18.2867316Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2867487Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2867653Z  94 โ”‚     // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-23T11:12:18.2867729Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2868321Z   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-23T11:12:18.2868646Z   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-23T11:12:18.2868653Z
2026-10-23T11:12:18.2868908Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2869074Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:215:7]
2026-10-23T11:12:18.2869128Z  211 โ”‚   };
2026-10-23T11:12:18.2869196Z  212 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2869270Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2869400Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2869574Z  213 โ”‚     const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-23T11:12:18.2869646Z  214 โ”‚     if (inserted) {
2026-10-23T11:12:18.2869726Z  215 โ”‚       setSelection((current) =>
2026-10-23T11:12:18.2869808Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2869973Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2870145Z  216 โ”‚         current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-23T11:12:18.2870199Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2870792Z   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-23T11:12:18.2871113Z   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-23T11:12:18.2871118Z
2026-10-23T11:12:18.2871368Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2871532Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:296:7]
2026-10-23T11:12:18.2871611Z  284 โ”‚   }, [hasWorkspaceSnapshot]);
2026-10-23T11:12:18.2871676Z  285 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2871746Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2871875Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2872021Z  286 โ”‚     if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-23T11:12:18.2872217Z  287 โ”‚     const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-23T11:12:18.2872421Z  288 โ”‚     const now = Date.now();
2026-10-23T11:12:18.2872535Z  289 โ”‚     const lastRequest = workspaceRefreshKeyRef.current;
2026-10-23T11:12:18.2872594Z  290 โ”‚     if (
2026-10-23T11:12:18.2872673Z  291 โ”‚       lastRequest?.key === key &&
2026-10-23T11:12:18.2872811Z  292 โ”‚       now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-23T11:12:18.2872866Z  293 โ”‚     )
2026-10-23T11:12:18.2872926Z  294 โ”‚       return;
2026-10-23T11:12:18.2873100Z  295 โ”‚     if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-23T11:12:18.2873186Z  296 โ”‚       setWorkspaceRefreshRetry(null);
2026-10-23T11:12:18.2873283Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2873461Z      ยท                   โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2873531Z  297 โ”‚       return;
2026-10-23T11:12:18.2873586Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2874175Z   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-23T11:12:18.2874494Z   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-23T11:12:18.2874496Z
2026-10-23T11:12:18.2874694Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2874856Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:326:5]
2026-10-23T11:12:18.2874914Z  325 โ”‚   }, [
2026-10-23T11:12:18.2874982Z  326 โ”‚     draftMessage,
2026-10-23T11:12:18.2875058Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2875202Z      ยท           โ•ฐโ”€โ”€ Unnecessary dependency `draftMessage`
2026-10-23T11:12:18.2875265Z  327 โ”‚     environmentId,
2026-10-23T11:12:18.2875318Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2875678Z   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-23T11:12:18.2875984Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2875987Z
2026-10-23T11:12:18.2876260Z   โš  eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2876408Z     โ•ญโ”€[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-23T11:12:18.2876466Z  60 โ”‚ ) {
2026-10-23T11:12:18.2876635Z  61 โ”‚   const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-23T11:12:18.2876715Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2876855Z     ยท               โ•ฐโ”€โ”€ 'useDragRegion' is declared here
2026-10-23T11:12:18.2876948Z  62 โ”‚   const isInline = props.mode === "inline";
2026-10-23T11:12:18.2877000Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2877102Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2877105Z
2026-10-23T11:12:18.2877358Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2877569Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:400:5]
2026-10-23T11:12:18.2877686Z  398 โ”‚
2026-10-23T11:12:18.2877751Z  399 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2877829Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2877959Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2878051Z  400 โ”‚     setInspectorSelection((current) => {
2026-10-23T11:12:18.2878136Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2878306Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2878409Z  401 โ”‚       if (props.renderInspector === undefined) {
2026-10-23T11:12:18.2878460Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2879055Z   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-23T11:12:18.2879376Z   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-23T11:12:18.2879378Z
2026-10-23T11:12:18.2879592Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-23T11:12:18.2879745Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:528:24]
2026-10-23T11:12:18.2879903Z  527 โ”‚       const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-23T11:12:18.2880075Z  528 โ”‚ โ•ญโ”€โ–ถ   const GitInspector = () => (
2026-10-23T11:12:18.2880174Z  529 โ”‚ โ”‚       <GitOverviewSheet
2026-10-23T11:12:18.2880298Z  530 โ”‚ โ”‚         headerInset={inspectorHeaderInset}
2026-10-23T11:12:18.2880407Z  531 โ”‚ โ”‚         presentation="inspector"
2026-10-23T11:12:18.2880586Z  532 โ”‚ โ”‚         route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-23T11:12:18.2880661Z  533 โ”‚ โ”‚       />
2026-10-23T11:12:18.2880791Z  534 โ”‚ โ•ฐโ”€โ–ถ   );
2026-10-23T11:12:18.2880874Z  535 โ”‚       const FilesInspector = () =>
2026-10-23T11:12:18.2880925Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2881141Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T11:12:18.2881144Z
2026-10-23T11:12:18.2881401Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-23T11:12:18.2881586Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:535:26]
2026-10-23T11:12:18.2881644Z  534 โ”‚       );
2026-10-23T11:12:18.2881806Z  535 โ”‚ โ•ญโ”€โ–ถ   const FilesInspector = () =>
2026-10-23T11:12:18.2881954Z  536 โ”‚ โ”‚       selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-23T11:12:18.2882062Z  537 โ”‚ โ”‚         <ThreadFileNavigatorPane
2026-10-23T11:12:18.2882168Z  538 โ”‚ โ”‚           cwd={selectedThreadCwd}
2026-10-23T11:12:18.2882305Z  539 โ”‚ โ”‚           environmentId={selectedThread.environmentId}
2026-10-23T11:12:18.2882427Z  540 โ”‚ โ”‚           headerInset={inspectorHeaderInset}
2026-10-23T11:12:18.2882579Z  541 โ”‚ โ”‚           projectName={selectedThreadProject?.title ?? "Files"}
2026-10-23T11:12:18.2882684Z  542 โ”‚ โ”‚           selectedPath={null}
2026-10-23T11:12:18.2882811Z  543 โ”‚ โ”‚           onSelectFile={handleSelectInspectorFile}
2026-10-23T11:12:18.2882892Z  544 โ”‚ โ”‚         />
2026-10-23T11:12:18.2883030Z  545 โ”‚ โ•ฐโ”€โ–ถ     ) : null;
2026-10-23T11:12:18.2883182Z  546 โ”‚       const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-23T11:12:18.2883232Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2883449Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T11:12:18.2883451Z
2026-10-23T11:12:18.2883791Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T11:12:18.2883937Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:50:18]
2026-10-23T11:12:18.2884095Z  49 โ”‚   for (const tool of ["sendMessage", "followupTask", "interruptAgent", "listAgents"]) {
2026-10-23T11:12:18.2884262Z  50 โ”‚     assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-23T11:12:18.2884346Z     ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2884526Z  51 โ”‚     assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-23T11:12:18.2884578Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2884581Z
2026-10-23T11:12:18.2884904Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T11:12:18.2885052Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:51:18]
2026-10-23T11:12:18.2885222Z  50 โ”‚     assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-23T11:12:18.2885398Z  51 โ”‚     assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-23T11:12:18.2885481Z     ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2885534Z  52 โ”‚   }
2026-10-23T11:12:18.2885587Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2885590Z
2026-10-23T11:12:18.2885919Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T11:12:18.2886058Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:55:5]
2026-10-23T11:12:18.2886122Z  54 โ”‚   assert.equal(
2026-10-23T11:12:18.2886339Z  55 โ”‚     Schema.is(CodexSchema.ServerNotification__CollabAgentToolCallStatus)("interrupted"),
2026-10-23T11:12:18.2886443Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2886503Z  56 โ”‚     true,
2026-10-23T11:12:18.2886553Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2886555Z
2026-10-23T11:12:18.2886878Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T11:12:18.2887017Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:59:5]
2026-10-23T11:12:18.2887081Z  58 โ”‚   assert.equal(
2026-10-23T11:12:18.2887257Z  59 โ”‚     Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentToolCallStatus)("interrupted"),
2026-10-23T11:12:18.2887330Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2887386Z  60 โ”‚     true,
2026-10-23T11:12:18.2887439Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2887441Z
2026-10-23T11:12:18.2887807Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T11:12:18.2887958Z      โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:103:16]
2026-10-23T11:12:18.2888011Z  102 โ”‚
2026-10-23T11:12:18.2888180Z  103 โ”‚   assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse)(resumeResponse), true);
2026-10-23T11:12:18.2888264Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2888320Z  104 โ”‚ });
2026-10-23T11:12:18.2888372Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2888375Z
2026-10-23T11:12:18.2888519Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2888674Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-23T11:12:18.2888837Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T11:12:18.2888962Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T11:12:18.2889084Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2889258Z      ยท                                                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2889377Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T11:12:18.2889427Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2889895Z   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-23T11:12:18.2890194Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2890199Z
2026-10-23T11:12:18.2890339Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2890498Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-23T11:12:18.2890553Z  125 โ”‚
2026-10-23T11:12:18.2890664Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T11:12:18.2890749Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2890900Z      ยท                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2891002Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T11:12:18.2891053Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2891564Z   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-23T11:12:18.2891885Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2891887Z
2026-10-23T11:12:18.2892028Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2892183Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-23T11:12:18.2892236Z  125 โ”‚
2026-10-23T11:12:18.2892341Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T11:12:18.2892427Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2892574Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2892679Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T11:12:18.2892733Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2893190Z   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-23T11:12:18.2893476Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2893478Z
2026-10-23T11:12:18.2893619Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2893775Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-23T11:12:18.2893827Z  125 โ”‚
2026-10-23T11:12:18.2893940Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T11:12:18.2894059Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2894225Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2894324Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T11:12:18.2894379Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2894836Z   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-23T11:12:18.2895125Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2895127Z
2026-10-23T11:12:18.2895272Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2895428Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-23T11:12:18.2895481Z  125 โ”‚
2026-10-23T11:12:18.2895586Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T11:12:18.2895701Z      ยท                              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2895863Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2895964Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T11:12:18.2896014Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2896519Z   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-23T11:12:18.2896842Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2896844Z
2026-10-23T11:12:18.2896985Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2897139Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-23T11:12:18.2897250Z  126 โ”‚       if (!sessionRef.current || !recorderRef.current) {
2026-10-23T11:12:18.2897440Z  127 โ”‚ โ•ญโ”€โ–ถ     const recorder = createLazyVoiceRecorder({
2026-10-23T11:12:18.2897626Z  128 โ”‚ โ”‚         create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T11:12:18.2897758Z  129 โ”‚ โ”‚         onStatus: (status: RecordingStatus) => {
2026-10-23T11:12:18.2897918Z  130 โ”‚ โ”‚           sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T11:12:18.2898038Z  131 โ”‚ โ”‚             isFinished: status.isFinished,
2026-10-23T11:12:18.2898211Z  132 โ”‚ โ”‚             hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T11:12:18.2898316Z  133 โ”‚ โ”‚             error: status.error,
2026-10-23T11:12:18.2898415Z  134 โ”‚ โ”‚             url: status.url,
2026-10-23T11:12:18.2898497Z  135 โ”‚ โ”‚           });
2026-10-23T11:12:18.2898573Z  136 โ”‚ โ”‚         },
2026-10-23T11:12:18.2898770Z  137 โ”‚ โ”‚         // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T11:12:18.2898883Z  138 โ”‚ โ”‚         selectInput: (inputs) => {
2026-10-23T11:12:18.2899039Z  139 โ”‚ โ”‚           const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T11:12:18.2899181Z  140 โ”‚ โ”‚           if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T11:12:18.2899345Z  141 โ”‚ โ”‚           const known = microphoneOrder(preferences.value.microphones);
2026-10-23T11:12:18.2899483Z  142 โ”‚ โ”‚           const order = rememberMicrophones(known, inputs);
2026-10-23T11:12:18.2899586Z  143 โ”‚ โ”‚           if (order !== known) {
2026-10-23T11:12:18.2899722Z  144 โ”‚ โ”‚             registry.set(updateMobilePreferencesAtom, {
2026-10-23T11:12:18.2899837Z  145 โ”‚ โ”‚               transform: (current) => ({
2026-10-23T11:12:18.2900045Z  146 โ”‚ โ”‚                 microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T11:12:18.2900135Z  147 โ”‚ โ”‚               }),
2026-10-23T11:12:18.2900214Z  148 โ”‚ โ”‚             });
2026-10-23T11:12:18.2900294Z  149 โ”‚ โ”‚           }
2026-10-23T11:12:18.2900432Z  150 โ”‚ โ”‚           return preferredMicrophoneInput(inputs, order);
2026-10-23T11:12:18.2900509Z  151 โ”‚ โ”‚         },
2026-10-23T11:12:18.2900638Z  152 โ”‚ โ”œโ”€โ–ถ     });
2026-10-23T11:12:18.2900873Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.2900960Z  153 โ”‚         recorderRef.current = recorder;
2026-10-23T11:12:18.2901013Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2901519Z   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-23T11:12:18.2901836Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2901838Z
2026-10-23T11:12:18.2901980Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2902139Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-23T11:12:18.2902196Z  152 โ”‚     });
2026-10-23T11:12:18.2902276Z  153 โ”‚     recorderRef.current = recorder;
2026-10-23T11:12:18.2902391Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2902581Z      ยท          โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2902702Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2902807Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-23T11:12:18.2902858Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2903318Z   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-23T11:12:18.2903604Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2903606Z
2026-10-23T11:12:18.2903753Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2903909Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-23T11:12:18.2903995Z  153 โ”‚         recorderRef.current = recorder;
2026-10-23T11:12:18.2904188Z  154 โ”‚ โ•ญโ”€โ–ถ     sessionRef.current = new VoiceInputSession({
2026-10-23T11:12:18.2904276Z  155 โ”‚ โ”‚         recorder,
2026-10-23T11:12:18.2904405Z  156 โ”‚ โ”‚         getTranscriber: getLocalVoiceTranscriber,
2026-10-23T11:12:18.2904522Z  157 โ”‚ โ”‚         requestPermission: async () => {
2026-10-23T11:12:18.2904687Z  158 โ”‚ โ”‚           const permission = await requestRecordingPermissionsAsync();
2026-10-23T11:12:18.2904878Z  159 โ”‚ โ”‚           return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T11:12:18.2904962Z  160 โ”‚ โ”‚         },
2026-10-23T11:12:18.2905104Z  161 โ”‚ โ”‚         configureRecording: configureVoiceRecordingAudio,
2026-10-23T11:12:18.2905240Z  162 โ”‚ โ”‚         releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T11:12:18.2905375Z  163 โ”‚ โ”‚         deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T11:12:18.2905487Z  164 โ”‚ โ”‚         onStateChange: (nextState) =>
2026-10-23T11:12:18.2905577Z  165 โ”‚ โ”‚           setState({
2026-10-23T11:12:18.2905682Z  166 โ”‚ โ”‚             state: nextState,
2026-10-23T11:12:18.2905820Z  167 โ”‚ โ”‚             ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T11:12:18.2905949Z  168 โ”‚ โ”‚             label: sessionRef.current?.label ?? null,
2026-10-23T11:12:18.2906084Z  169 โ”‚ โ”‚           }),
2026-10-23T11:12:18.2906247Z  170 โ”‚ โ”œโ”€โ–ถ     });
2026-10-23T11:12:18.2906459Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2906517Z  171 โ”‚       }
2026-10-23T11:12:18.2906568Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2907031Z   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-23T11:12:18.2907317Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2907320Z
2026-10-23T11:12:18.2907467Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2907657Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-23T11:12:18.2907738Z  153 โ”‚     recorderRef.current = recorder;
2026-10-23T11:12:18.2907845Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-23T11:12:18.2907958Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2908140Z      ยท          โ”‚        โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2908255Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2908320Z  155 โ”‚       recorder,
2026-10-23T11:12:18.2908373Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2908836Z   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-23T11:12:18.2909124Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2909129Z
2026-10-23T11:12:18.2909269Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2909426Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-23T11:12:18.2909513Z  184 โ”‚     return () => subscription.remove();
2026-10-23T11:12:18.2909578Z  185 โ”‚   }, [controller]);
2026-10-23T11:12:18.2909654Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2909799Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2909906Z  186 โ”‚
2026-10-23T11:12:18.2909989Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2910447Z   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-23T11:12:18.2910732Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2910734Z
2026-10-23T11:12:18.2910877Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2911033Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-23T11:12:18.2911118Z  184 โ”‚     return () => subscription.remove();
2026-10-23T11:12:18.2911185Z  185 โ”‚   }, [controller]);
2026-10-23T11:12:18.2911268Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2911412Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2911463Z  186 โ”‚
2026-10-23T11:12:18.2911516Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2911972Z   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-23T11:12:18.2912263Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2912265Z
2026-10-23T11:12:18.2912406Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2912562Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-23T11:12:18.2912625Z  191 โ”‚     },
2026-10-23T11:12:18.2912699Z  192 โ”‚     [controller, recorder],
2026-10-23T11:12:18.2912776Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2912915Z      ยท           โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2912973Z  193 โ”‚   );
2026-10-23T11:12:18.2913026Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2913478Z   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-23T11:12:18.2913761Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2913764Z
2026-10-23T11:12:18.2913909Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2914068Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-23T11:12:18.2914160Z  174 โ”‚   const controller = session.controller;
2026-10-23T11:12:18.2914245Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-23T11:12:18.2914351Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2914506Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2914560Z  176 โ”‚
2026-10-23T11:12:18.2914610Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2915118Z   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-23T11:12:18.2915438Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2915440Z
2026-10-23T11:12:18.2915640Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2915797Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-23T11:12:18.2915852Z  191 โ”‚     },
2026-10-23T11:12:18.2915925Z  192 โ”‚     [controller, recorder],
2026-10-23T11:12:18.2916017Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2916164Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2916217Z  193 โ”‚   );
2026-10-23T11:12:18.2916271Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2916735Z   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-23T11:12:18.2917026Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2917028Z
2026-10-23T11:12:18.2917169Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2917321Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-23T11:12:18.2917413Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-23T11:12:18.2917526Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T11:12:18.2917643Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2917804Z      ยท                         โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2917861Z  247 โ”‚
2026-10-23T11:12:18.2917913Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2918373Z   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-23T11:12:18.2918657Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2918662Z
2026-10-23T11:12:18.2918801Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2918961Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-23T11:12:18.2919055Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-23T11:12:18.2919164Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T11:12:18.2919291Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2919451Z      ยท                              โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2919505Z  247 โ”‚
2026-10-23T11:12:18.2919557Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2920010Z   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-23T11:12:18.2920360Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2920406Z
2026-10-23T11:12:18.2920546Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2920702Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-23T11:12:18.2920768Z  260 โ”‚     setOwnerFocused,
2026-10-23T11:12:18.2920832Z  261 โ”‚     session,
2026-10-23T11:12:18.2920904Z      ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2921043Z      ยท        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2921101Z  262 โ”‚     stop,
2026-10-23T11:12:18.2921155Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2921616Z   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-23T11:12:18.2921905Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2921907Z
2026-10-23T11:12:18.2922048Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2922201Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-23T11:12:18.2922258Z  250 โ”‚
2026-10-23T11:12:18.2922399Z  251 โ”‚ โ•ญโ”€โ–ถ   return {
2026-10-23T11:12:18.2922609Z  252 โ”‚ โ”‚       isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-23T11:12:18.2922690Z  253 โ”‚ โ”‚       state,
2026-10-23T11:12:18.2922786Z  254 โ”‚ โ”‚       audioLevels,
2026-10-23T11:12:18.2922886Z  255 โ”‚ โ”‚       elapsedSeconds,
2026-10-23T11:12:18.2923017Z  256 โ”‚ โ”‚       isBusy: voiceInputBlocksSubmission(state),
2026-10-23T11:12:18.2923097Z  257 โ”‚ โ”‚       ownerKey,
2026-10-23T11:12:18.2923178Z  258 โ”‚ โ”‚       label,
2026-10-23T11:12:18.2923270Z  259 โ”‚ โ”‚       focusedOwners,
2026-10-23T11:12:18.2923366Z  260 โ”‚ โ”‚       setOwnerFocused,
2026-10-23T11:12:18.2923444Z  261 โ”‚ โ”‚       session,
2026-10-23T11:12:18.2923526Z  262 โ”‚ โ”‚       stop,
2026-10-23T11:12:18.2923607Z  263 โ”‚ โ”‚       cancel,
2026-10-23T11:12:18.2923737Z  264 โ”‚ โ”œโ”€โ–ถ   };
2026-10-23T11:12:18.2923938Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2924001Z  265 โ”‚     }
2026-10-23T11:12:18.2924054Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2924517Z   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-23T11:12:18.2924800Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2924806Z
2026-10-23T11:12:18.2924964Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2925125Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T11:12:18.2925336Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T11:12:18.2925492Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T11:12:18.2925571Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2925707Z      ยท              โ•ฐโ”€โ”€ `audioLevels` originates here
2026-10-23T11:12:18.2925830Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T11:12:18.2925978Z  124 โ”‚   const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-23T11:12:18.2926029Z  125 โ”‚
2026-10-23T11:12:18.2926137Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T11:12:18.2926238Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T11:12:18.2926380Z  128 โ”‚       create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T11:12:18.2926480Z  129 โ”‚       onStatus: (status: RecordingStatus) => {
2026-10-23T11:12:18.2926606Z  130 โ”‚         sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T11:12:18.2926694Z  131 โ”‚           isFinished: status.isFinished,
2026-10-23T11:12:18.2926837Z  132 โ”‚           hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T11:12:18.2926909Z  133 โ”‚           error: status.error,
2026-10-23T11:12:18.2926979Z  134 โ”‚           url: status.url,
2026-10-23T11:12:18.2927041Z  135 โ”‚         });
2026-10-23T11:12:18.2927099Z  136 โ”‚       },
2026-10-23T11:12:18.2927260Z  137 โ”‚       // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T11:12:18.2927341Z  138 โ”‚       selectInput: (inputs) => {
2026-10-23T11:12:18.2927465Z  139 โ”‚         const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T11:12:18.2927585Z  140 โ”‚         if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T11:12:18.2927758Z  141 โ”‚         const known = microphoneOrder(preferences.value.microphones);
2026-10-23T11:12:18.2927867Z  142 โ”‚         const order = rememberMicrophones(known, inputs);
2026-10-23T11:12:18.2927944Z  143 โ”‚         if (order !== known) {
2026-10-23T11:12:18.2928053Z  144 โ”‚           registry.set(updateMobilePreferencesAtom, {
2026-10-23T11:12:18.2928134Z  145 โ”‚             transform: (current) => ({
2026-10-23T11:12:18.2928305Z  146 โ”‚               microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T11:12:18.2928370Z  147 โ”‚             }),
2026-10-23T11:12:18.2928434Z  148 โ”‚           });
2026-10-23T11:12:18.2928490Z  149 โ”‚         }
2026-10-23T11:12:18.2928601Z  150 โ”‚         return preferredMicrophoneInput(inputs, order);
2026-10-23T11:12:18.2928660Z  151 โ”‚       },
2026-10-23T11:12:18.2928715Z  152 โ”‚     });
2026-10-23T11:12:18.2928806Z  153 โ”‚     recorderRef.current = recorder;
2026-10-23T11:12:18.2928917Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-23T11:12:18.2928979Z  155 โ”‚       recorder,
2026-10-23T11:12:18.2929078Z  156 โ”‚       getTranscriber: getLocalVoiceTranscriber,
2026-10-23T11:12:18.2929165Z  157 โ”‚       requestPermission: async () => {
2026-10-23T11:12:18.2929296Z  158 โ”‚         const permission = await requestRecordingPermissionsAsync();
2026-10-23T11:12:18.2929454Z  159 โ”‚         return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T11:12:18.2929509Z  160 โ”‚       },
2026-10-23T11:12:18.2929620Z  161 โ”‚       configureRecording: configureVoiceRecordingAudio,
2026-10-23T11:12:18.2929727Z  162 โ”‚       releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T11:12:18.2929830Z  163 โ”‚       deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T11:12:18.2929964Z  164 โ”‚       onStateChange: (nextState) =>
2026-10-23T11:12:18.2930062Z  165 โ”‚         setState({
2026-10-23T11:12:18.2930132Z  166 โ”‚           state: nextState,
2026-10-23T11:12:18.2930239Z  167 โ”‚           ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T11:12:18.2930336Z  168 โ”‚           label: sessionRef.current?.label ?? null,
2026-10-23T11:12:18.2930398Z  169 โ”‚         }),
2026-10-23T11:12:18.2930454Z  170 โ”‚     });
2026-10-23T11:12:18.2930509Z  171 โ”‚   }
2026-10-23T11:12:18.2930560Z  172 โ”‚
2026-10-23T11:12:18.2930647Z  173 โ”‚   const session = sessionRef.current;
2026-10-23T11:12:18.2930736Z  174 โ”‚   const controller = session.controller;
2026-10-23T11:12:18.2930820Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-23T11:12:18.2930878Z  176 โ”‚
2026-10-23T11:12:18.2930946Z  177 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2931103Z  178 โ”‚     const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-23T11:12:18.2931244Z  179 โ”‚       // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-23T11:12:18.2931381Z  180 โ”‚       // real background state cancels preparation; recorder status handles
2026-10-23T11:12:18.2931490Z  181 โ”‚       // calls and route interruptions during capture.
2026-10-23T11:12:18.2931627Z  182 โ”‚       if (nextState === "background") controller.appMovedToBackground();
2026-10-23T11:12:18.2931682Z  183 โ”‚     });
2026-10-23T11:12:18.2931769Z  184 โ”‚     return () => subscription.remove();
2026-10-23T11:12:18.2931836Z  185 โ”‚   }, [controller]);
2026-10-23T11:12:18.2931891Z  186 โ”‚
2026-10-23T11:12:18.2931951Z  187 โ”‚   useEffect(
2026-10-23T11:12:18.2932016Z  188 โ”‚     () => () => {
2026-10-23T11:12:18.2932090Z  189 โ”‚       controller.dispose();
2026-10-23T11:12:18.2932161Z  190 โ”‚       recorder.release();
2026-10-23T11:12:18.2932220Z  191 โ”‚     },
2026-10-23T11:12:18.2932295Z  192 โ”‚     [controller, recorder],
2026-10-23T11:12:18.2932353Z  193 โ”‚   );
2026-10-23T11:12:18.2932406Z  194 โ”‚
2026-10-23T11:12:18.2932468Z  195 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2932563Z  196 โ”‚     if (state.phase !== "recording") return;
2026-10-23T11:12:18.2932617Z  197 โ”‚
2026-10-23T11:12:18.2932765Z  198 โ”‚     const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-23T11:12:18.2932870Z  199 โ”‚     const activation = activateKeepAwakeAsync(tag);
2026-10-23T11:12:18.2932951Z  200 โ”‚     void activation.catch(() => {});
2026-10-23T11:12:18.2933014Z  201 โ”‚     return () => {
2026-10-23T11:12:18.2933162Z  202 โ”‚       // Release after activation settles, even if the recording ends immediately.
2026-10-23T11:12:18.2933300Z  203 โ”‚       void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-23T11:12:18.2933361Z  204 โ”‚     };
2026-10-23T11:12:18.2933445Z  205 โ”‚   }, [keepAwakeId, state.phase]);
2026-10-23T11:12:18.2933496Z  206 โ”‚
2026-10-23T11:12:18.2933562Z  207 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2933695Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T11:12:18.2933749Z  209 โ”‚
2026-10-23T11:12:18.2933868Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T11:12:18.2934022Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T11:12:18.2934129Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-23T11:12:18.2934207Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2934345Z      ยท            โ•ฐโ”€โ”€ `audioLevels` cannot be modified
2026-10-23T11:12:18.2934402Z  213 โ”‚     }
2026-10-23T11:12:18.2934456Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2934785Z   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-23T11:12:18.2935122Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2935128Z
2026-10-23T11:12:18.2935326Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T11:12:18.2935484Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T11:12:18.2935540Z  206 โ”‚
2026-10-23T11:12:18.2935606Z  207 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2935684Z      ยท             โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2935907Z      ยท                โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-23T11:12:18.2936047Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T11:12:18.2936102Z  209 โ”‚
2026-10-23T11:12:18.2936219Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T11:12:18.2936376Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T11:12:18.2936481Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-23T11:12:18.2936559Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2936691Z      ยท            โ•ฐโ”€โ”€ This modifies `audioLevels`
2026-10-23T11:12:18.2936749Z  213 โ”‚     }
2026-10-23T11:12:18.2936803Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2937143Z   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-23T11:12:18.2937447Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2937450Z
2026-10-23T11:12:18.2937596Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2937796Z     โ•ญโ”€[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-23T11:12:18.2937882Z  26 โ”‚   const latestInput = useRef(input);
2026-10-23T11:12:18.2937957Z  27 โ”‚   latestInput.current = input;
2026-10-23T11:12:18.2938071Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2938255Z     ยท        โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T11:12:18.2938425Z     ยท        โ•ฐโ”€โ”€ This value is a ref
2026-10-23T11:12:18.2938534Z  28 โ”‚   const mounted = useRef(true);
2026-10-23T11:12:18.2938589Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2939053Z   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-23T11:12:18.2939342Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2939345Z
2026-10-23T11:12:18.2939500Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2939665Z     โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-23T11:12:18.2939722Z  90 โ”‚ }) {
2026-10-23T11:12:18.2939841Z  91 โ”‚   const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-23T11:12:18.2939919Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2940048Z     ยท             โ•ฐโ”€โ”€ `rotation` originates here
2026-10-23T11:12:18.2940118Z  92 โ”‚   useLayoutEffect(() => {
2026-10-23T11:12:18.2940262Z  93 โ”‚     rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-23T11:12:18.2940335Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2940464Z     ยท         โ•ฐโ”€โ”€ `rotation` cannot be modified
2026-10-23T11:12:18.2940542Z  94 โ”‚   }, [props.hidden, rotation]);
2026-10-23T11:12:18.2940596Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2940861Z   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-23T11:12:18.2941164Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2941171Z
2026-10-23T11:12:18.2941328Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2941498Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-23T11:12:18.2941594Z  266 โ”‚   const variant = props.variant ?? "plain";
2026-10-23T11:12:18.2941728Z  267 โ”‚   const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-23T11:12:18.2941813Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2941963Z      ยท                 โ•ฐโ”€โ”€ `loadingVisibility` originates here
2026-10-23T11:12:18.2942033Z  268 โ”‚   useLayoutEffect(() => {
2026-10-23T11:12:18.2942197Z  269 โ”‚     loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-23T11:12:18.2942280Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2942427Z      ยท             โ•ฐโ”€โ”€ `loadingVisibility` cannot be modified
2026-10-23T11:12:18.2942520Z  270 โ”‚   }, [loadingVisibility, props.loading]);
2026-10-23T11:12:18.2942572Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2942831Z   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-23T11:12:18.2943137Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2943140Z
2026-10-23T11:12:18.2943295Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2943516Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-23T11:12:18.2943601Z  325 โ”‚ }) {
2026-10-23T11:12:18.2943761Z  326 โ”‚   const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-23T11:12:18.2943851Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2944003Z      ยท                  โ•ฐโ”€โ”€ `recordingVisibility` originates here
2026-10-23T11:12:18.2944071Z  327 โ”‚   useLayoutEffect(() => {
2026-10-23T11:12:18.2944259Z  328 โ”‚     recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-23T11:12:18.2944348Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2944501Z      ยท              โ•ฐโ”€โ”€ `recordingVisibility` cannot be modified
2026-10-23T11:12:18.2944591Z  329 โ”‚   }, [props.phase, recordingVisibility]);
2026-10-23T11:12:18.2944645Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2944912Z   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-23T11:12:18.2945218Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2945220Z
2026-10-23T11:12:18.2945373Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2945535Z     โ•ญโ”€[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-23T11:12:18.2945640Z  65 โ”‚   const [expanded, setExpanded] = useState(false);
2026-10-23T11:12:18.2945726Z  66 โ”‚   const progress = useSharedValue(0);
2026-10-23T11:12:18.2945803Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2945934Z     ยท             โ•ฐโ”€โ”€ `progress` originates here
2026-10-23T11:12:18.2946007Z  67 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2946131Z  68 โ”‚     progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-23T11:12:18.2946203Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2946330Z     ยท         โ•ฐโ”€โ”€ `progress` cannot be modified
2026-10-23T11:12:18.2946403Z  69 โ”‚   }, [expanded, progress]);
2026-10-23T11:12:18.2946456Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2946713Z   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-23T11:12:18.2947013Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2947015Z
2026-10-23T11:12:18.2947214Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T11:12:18.2947375Z     โ•ญโ”€[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-23T11:12:18.2947442Z  71 โ”‚             <Pressable
2026-10-23T11:12:18.2947505Z  72 โ”‚               key={index}
2026-10-23T11:12:18.2947592Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2947690Z  73 โ”‚               accessibilityRole="button"
2026-10-23T11:12:18.2947773Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2947916Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T11:12:18.2947919Z
2026-10-23T11:12:18.2948175Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2948335Z      โ•ญโ”€[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-23T11:12:18.2948662Z  112 โ”‚   const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-23T11:12:18.2948785Z  113 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2948855Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2948988Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2949153Z  114 โ”‚     if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-23T11:12:18.2949215Z  115 โ”‚       return;
2026-10-23T11:12:18.2949269Z  116 โ”‚     }
2026-10-23T11:12:18.2949391Z  117 โ”‚     setEntry({ key: input.targetKey, location: candidate });
2026-10-23T11:12:18.2949465Z      ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.2949630Z      ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2949758Z  118 โ”‚   }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-23T11:12:18.2949814Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2950411Z   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-23T11:12:18.2950733Z   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-23T11:12:18.2950735Z
2026-10-23T11:12:18.2950991Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2951163Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-23T11:12:18.2951223Z  638 โ”‚
2026-10-23T11:12:18.2951293Z  639 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2951363Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2951493Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2951605Z  640 โ”‚     if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-23T11:12:18.2951669Z  641 โ”‚       return;
2026-10-23T11:12:18.2951722Z  642 โ”‚     }
2026-10-23T11:12:18.2951799Z  643 โ”‚     setPendingLaunchEntry({
2026-10-23T11:12:18.2951889Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2952086Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2952157Z  644 โ”‚       key: launchTargetKey,
2026-10-23T11:12:18.2952211Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2952811Z   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-23T11:12:18.2953131Z   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-23T11:12:18.2953134Z
2026-10-23T11:12:18.2953387Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2953554Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-23T11:12:18.2953608Z  648 โ”‚
2026-10-23T11:12:18.2953678Z  649 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2953751Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2953929Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2954087Z  650 โ”‚     if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-23T11:12:18.2954149Z  651 โ”‚       return;
2026-10-23T11:12:18.2954205Z  652 โ”‚     }
2026-10-23T11:12:18.2954286Z  653 โ”‚     setInitialAttachGridEntry({
2026-10-23T11:12:18.2954381Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2954553Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2954625Z  654 โ”‚       key: launchTargetKey,
2026-10-23T11:12:18.2954676Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2955273Z   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-23T11:12:18.2955649Z   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-23T11:12:18.2955651Z
2026-10-23T11:12:18.2955906Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2956076Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-23T11:12:18.2956128Z  743 โ”‚
2026-10-23T11:12:18.2956193Z  744 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2956263Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2956393Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2956496Z  745 โ”‚     if (!routeEnvironmentId || !routeThreadId) {
2026-10-23T11:12:18.2956571Z  746 โ”‚       setLastGridSize({
2026-10-23T11:12:18.2956655Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2956822Z      ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2956918Z  747 โ”‚         cols: DEFAULT_TERMINAL_COLS,
2026-10-23T11:12:18.2956973Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2957561Z   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-23T11:12:18.2957911Z   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-23T11:12:18.2957917Z
2026-10-23T11:12:18.2958118Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2958285Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-23T11:12:18.2958344Z  537 โ”‚     });
2026-10-23T11:12:18.2958481Z  538 โ”‚   }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-23T11:12:18.2958593Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2958834Z      ยท                                   โ•ฐโ”€โ”€ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-23T11:12:18.2958997Z  539 โ”‚   const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-23T11:12:18.2959050Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2959405Z   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-23T11:12:18.2959751Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2959756Z
2026-10-23T11:12:18.2959952Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2960119Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-23T11:12:18.2960217Z  708 โ”‚     sentInitialInputKeyRef.current = null;
2026-10-23T11:12:18.2960286Z  709 โ”‚   }, [terminalKey]);
2026-10-23T11:12:18.2960362Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2960515Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-23T11:12:18.2960573Z  710 โ”‚
2026-10-23T11:12:18.2960625Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2960909Z   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-23T11:12:18.2961217Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2961219Z
2026-10-23T11:12:18.2961417Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.2961585Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-23T11:12:18.2961642Z  799 โ”‚     };
2026-10-23T11:12:18.2961825Z  800 โ”‚   }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-23T11:12:18.2962007Z      ยท                                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2962239Z      ยท                                                                โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-23T11:12:18.2962448Z      ยท                                                                โ•ฐโ”€โ”€ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-23T11:12:18.2962499Z  801 โ”‚
2026-10-23T11:12:18.2962554Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2962843Z   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-23T11:12:18.2963198Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.2963238Z
2026-10-23T11:12:18.2963379Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.2963548Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-23T11:12:18.2963604Z  792 โ”‚   }
2026-10-23T11:12:18.2963712Z  793 โ”‚   const pasteSession = pasteSessionRef.current;
2026-10-23T11:12:18.2963823Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2963986Z      ยท                                   โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.2964041Z  794 โ”‚
2026-10-23T11:12:18.2964093Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2964563Z   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-23T11:12:18.2964858Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.2964860Z
2026-10-23T11:12:18.2965045Z   โš  react(static-components): Cannot create components during render
2026-10-23T11:12:18.2965205Z      โ•ญโ”€[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
2026-10-23T11:12:18.2965293Z  196 โ”‚   const { onInput, onResize } = props;
2026-10-23T11:12:18.2965440Z  197 โ”‚   const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
2026-10-23T11:12:18.2965576Z      ยท                                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2965765Z      ยท                                                     โ•ฐโ”€โ”€ The component is created during render here
2026-10-23T11:12:18.2965894Z  198 โ”‚   const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
2026-10-23T11:12:18.2965945Z  199 โ”‚
2026-10-23T11:12:18.2966014Z  200 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2966106Z  201 โ”‚     terminalDebugLog("native:surface", {
2026-10-23T11:12:18.2966193Z  202 โ”‚       terminalKey: props.terminalKey,
2026-10-23T11:12:18.2966268Z  203 โ”‚       native: hasNativeSurface,
2026-10-23T11:12:18.2966404Z  204 โ”‚       hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
2026-10-23T11:12:18.2966491Z  205 โ”‚       bufferLen: props.buffer.length,
2026-10-23T11:12:18.2966572Z  206 โ”‚       isRunning: props.isRunning,
2026-10-23T11:12:18.2966627Z  207 โ”‚     });
2026-10-23T11:12:18.2966793Z  208 โ”‚   }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
2026-10-23T11:12:18.2966884Z  209 โ”‚   const handleNativeInput = useCallback(
2026-10-23T11:12:18.2967002Z  210 โ”‚     (event: NativeSyntheticEvent<TerminalInputEvent>) => {
2026-10-23T11:12:18.2967098Z  211 โ”‚       if (!props.isRunning || props.readOnly) {
2026-10-23T11:12:18.2967162Z  212 โ”‚         return;
2026-10-23T11:12:18.2967220Z  213 โ”‚       }
2026-10-23T11:12:18.2967312Z  214 โ”‚       terminalDebugLog("native:onInput", {
2026-10-23T11:12:18.2967460Z  215 โ”‚         codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
2026-10-23T11:12:18.2967521Z  216 โ”‚       });
2026-10-23T11:12:18.2967621Z  217 โ”‚       onInput(event.nativeEvent.data);
2026-10-23T11:12:18.2967679Z  218 โ”‚     },
2026-10-23T11:12:18.2967810Z  219 โ”‚     [onInput, props.isRunning, props.readOnly],
2026-10-23T11:12:18.2967868Z  220 โ”‚   );
2026-10-23T11:12:18.2968016Z  221 โ”‚   const handleNativeResize = useCallback(
2026-10-23T11:12:18.2968173Z  222 โ”‚     (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
2026-10-23T11:12:18.2968235Z  223 โ”‚       onResize({
2026-10-23T11:12:18.2968320Z  224 โ”‚         cols: event.nativeEvent.cols,
2026-10-23T11:12:18.2968404Z  225 โ”‚         rows: event.nativeEvent.rows,
2026-10-23T11:12:18.2968459Z  226 โ”‚       });
2026-10-23T11:12:18.2968516Z  227 โ”‚     },
2026-10-23T11:12:18.2968579Z  228 โ”‚     [onResize],
2026-10-23T11:12:18.2968633Z  229 โ”‚   );
2026-10-23T11:12:18.2968684Z  230 โ”‚
2026-10-23T11:12:18.2968769Z  231 โ”‚   if (NativeTerminalSurfaceView) {
2026-10-23T11:12:18.2968830Z  232 โ”‚     return (
2026-10-23T11:12:18.2968910Z  233 โ”‚       <View style={props.style}>
2026-10-23T11:12:18.2968989Z  234 โ”‚         <NativeTerminalSurfaceView
2026-10-23T11:12:18.2969099Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2969263Z      ยท                      โ•ฐโ”€โ”€ This component is created during render
2026-10-23T11:12:18.2969360Z  235 โ”‚           appearanceScheme={themeAppearance}
2026-10-23T11:12:18.2969410Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2969657Z   help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-23T11:12:18.2969972Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-23T11:12:18.2969974Z
2026-10-23T11:12:18.2970421Z   โš  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-23T11:12:18.2970552Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-23T11:12:18.2970721Z  1740 โ”‚       const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-23T11:12:18.2970906Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-23T11:12:18.2971022Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2971134Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-23T11:12:18.2971187Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2971189Z
2026-10-23T11:12:18.2971644Z   โš  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-23T11:12:18.2971774Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-23T11:12:18.2971960Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-23T11:12:18.2972078Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-23T11:12:18.2972195Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2972313Z  1743 โ”‚         Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-23T11:12:18.2972368Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2972370Z
2026-10-23T11:12:18.2972529Z   โš  react(immutability): This value cannot be modified
2026-10-23T11:12:18.2972699Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-23T11:12:18.2972802Z  53 โ”‚ function usePulseAnimation(pulse: boolean) {
2026-10-23T11:12:18.2972895Z  54 โ”‚   const pulseProgress = useSharedValue(0);
2026-10-23T11:12:18.2973028Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2973218Z     ยท               โ•ฐโ”€โ”€ `pulseProgress` originates here
2026-10-23T11:12:18.2973272Z  55 โ”‚
2026-10-23T11:12:18.2973338Z  56 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2973398Z  57 โ”‚     if (pulse) {
2026-10-23T11:12:18.2973488Z  58 โ”‚       pulseProgress.value = withRepeat(
2026-10-23T11:12:18.2973570Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2973726Z     ยท             โ•ฐโ”€โ”€ `pulseProgress` cannot be modified
2026-10-23T11:12:18.2973793Z  59 โ”‚         withTiming(1, {
2026-10-23T11:12:18.2973846Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2974111Z   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-23T11:12:18.2974423Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T11:12:18.2974430Z
2026-10-23T11:12:18.2974868Z   โš  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-23T11:12:18.2974997Z       โ•ญโ”€[apps/server/src/assets/AssetAccess.test.ts:1043:32]
2026-10-23T11:12:18.2975137Z  1042 โ”‚         expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-23T11:12:18.2975323Z  1043 โ”‚         const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-23T11:12:18.2975438Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2975537Z  1044 โ”‚         expect(encoded).not.toContain(url);
2026-10-23T11:12:18.2975594Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2975597Z
2026-10-23T11:12:18.2975822Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-23T11:12:18.2975946Z      โ•ญโ”€[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-23T11:12:18.2976007Z  730 โ”‚       );
2026-10-23T11:12:18.2976178Z  731 โ”‚       const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-23T11:12:18.2976278Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2976400Z  732 โ”‚       expect(snapshot?.history).toBe("aa๐Ÿ˜€\rEND");
2026-10-23T11:12:18.2976452Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2976622Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-23T11:12:18.2976624Z
2026-10-23T11:12:18.2977093Z   โš  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-23T11:12:18.2977277Z      โ•ญโ”€[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
2026-10-23T11:12:18.2977351Z  222 โ”‚         let idlePasses = 0;
2026-10-23T11:12:18.2977494Z  223 โ”‚ โ•ญโ”€โ–ถ     for (;;) {
2026-10-23T11:12:18.2977645Z  224 โ”‚ โ”‚         yield* Effect.promise(() => Promise.resolve());
2026-10-23T11:12:18.2977823Z  225 โ”‚ โ”‚         const pending = backgroundRuntime.pending.shift();
2026-10-23T11:12:18.2977923Z  226 โ”‚ โ”‚         if (!pending) {
2026-10-23T11:12:18.2978076Z  227 โ”‚ โ”‚           idlePasses++;
2026-10-23T11:12:18.2978218Z  228 โ”‚ โ”‚           if (idlePasses >= 3) {
2026-10-23T11:12:18.2978305Z  229 โ”‚ โ”‚             return;
2026-10-23T11:12:18.2978386Z  230 โ”‚ โ”‚           }
2026-10-23T11:12:18.2978471Z  231 โ”‚ โ”‚           continue;
2026-10-23T11:12:18.2978550Z  232 โ”‚ โ”‚         }
2026-10-23T11:12:18.2978644Z  233 โ”‚ โ”‚         idlePasses = 0;
2026-10-23T11:12:18.2978762Z  234 โ”‚ โ”‚         const exit = yield* Effect.exit(
2026-10-23T11:12:18.2978973Z  235 โ”‚ โ”‚           pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-23T11:12:18.2979053Z  236 โ”‚ โ”‚         );
2026-10-23T11:12:18.2979160Z  237 โ”‚ โ”‚         yield* Effect.sync(() => {
2026-10-23T11:12:18.2979275Z  238 โ”‚ โ”‚           pending.resolve(exit);
2026-10-23T11:12:18.2979355Z  239 โ”‚ โ”‚         });
2026-10-23T11:12:18.2979487Z  240 โ”‚ โ•ฐโ”€โ–ถ     }
2026-10-23T11:12:18.2979547Z  241 โ”‚       },
2026-10-23T11:12:18.2979601Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2979605Z
2026-10-23T11:12:18.2979769Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T11:12:18.2979909Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:186:12]
2026-10-23T11:12:18.2979965Z  185 โ”‚
2026-10-23T11:12:18.2980067Z  186 โ”‚ for (const {} of ["darwin", "linux"] as const) {
2026-10-23T11:12:18.2980137Z      ยท            โ”€โ”€
2026-10-23T11:12:18.2980192Z  187 โ”‚ }
2026-10-23T11:12:18.2980246Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2980483Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T11:12:18.2980488Z
2026-10-23T11:12:18.2980650Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T11:12:18.2980788Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:189:12]
2026-10-23T11:12:18.2980842Z  188 โ”‚
2026-10-23T11:12:18.2980910Z  189 โ”‚ for (const {} of [
2026-10-23T11:12:18.2980979Z      ยท            โ”€โ”€
2026-10-23T11:12:18.2981072Z  190 โ”‚   { kind: "browser", folderVerb: "none" },
2026-10-23T11:12:18.2981127Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2981354Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T11:12:18.2981357Z
2026-10-23T11:12:18.2981519Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T11:12:18.2981659Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:311:12]
2026-10-23T11:12:18.2981717Z  310 โ”‚
2026-10-23T11:12:18.2981847Z  311 โ”‚ for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
2026-10-23T11:12:18.2981916Z      ยท            โ”€โ”€
2026-10-23T11:12:18.2981971Z  312 โ”‚ }
2026-10-23T11:12:18.2982024Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2982252Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T11:12:18.2982254Z
2026-10-23T11:12:18.2982417Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T11:12:18.2982550Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:314:12]
2026-10-23T11:12:18.2982605Z  313 โ”‚
2026-10-23T11:12:18.2982671Z  314 โ”‚ for (const {} of [
2026-10-23T11:12:18.2982791Z      ยท            โ”€โ”€
2026-10-23T11:12:18.2982881Z  315 โ”‚   {
2026-10-23T11:12:18.2982934Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2983157Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T11:12:18.2983159Z
2026-10-23T11:12:18.2983618Z   โš  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-23T11:12:18.2983751Z     โ•ญโ”€[apps/server/src/project/ProjectService.test.ts:94:3]
2026-10-23T11:12:18.2983808Z  93 โ”‚     ) {
2026-10-23T11:12:18.2984010Z  94 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T11:12:18.2984188Z  95 โ”‚ โ”‚       const project = Option.getOrThrow(yield* service.getById(projectId));
2026-10-23T11:12:18.2984309Z  96 โ”‚ โ”‚       if (predicate(project)) return project;
2026-10-23T11:12:18.2984413Z  97 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T11:12:18.2984537Z  98 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T11:12:18.2984689Z  99 โ”‚       return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
2026-10-23T11:12:18.2984739Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2984742Z
2026-10-23T11:12:18.2985197Z   โš  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-23T11:12:18.2985362Z     โ•ญโ”€[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
2026-10-23T11:12:18.2985423Z  27 โ”‚     ) {
2026-10-23T11:12:18.2985620Z  28 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T11:12:18.2985761Z  29 โ”‚ โ”‚       const available = yield* service.peek(workspaceRoot);
2026-10-23T11:12:18.2985887Z  30 โ”‚ โ”‚       if (predicate(available)) return available;
2026-10-23T11:12:18.2985988Z  31 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T11:12:18.2986111Z  32 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T11:12:18.2986287Z  33 โ”‚       return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
2026-10-23T11:12:18.2986340Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2986342Z
2026-10-23T11:12:18.2986670Z   โš  eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.2986836Z      โ•ญโ”€[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-23T11:12:18.2986888Z  339 โ”‚
2026-10-23T11:12:18.2986994Z  340 โ”‚ const layerTest = AnalyticsService.layerTest;
2026-10-23T11:12:18.2987072Z      ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2987207Z      ยท           โ•ฐโ”€โ”€ 'layerTest' is declared here
2026-10-23T11:12:18.2987257Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2987364Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2987367Z
2026-10-23T11:12:18.2987573Z   โš  eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-23T11:12:18.2987739Z     โ•ญโ”€[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-23T11:12:18.2987797Z  78 โ”‚
2026-10-23T11:12:18.2987938Z  79 โ”‚ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-23T11:12:18.2988027Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2988176Z     ยท                  โ•ฐโ”€โ”€ 'describeSchedule' is declared here
2026-10-23T11:12:18.2988280Z  80 โ”‚   if (schedule.type === "webhook") return "On webhook";
2026-10-23T11:12:18.2988335Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2988438Z   help: Consider removing this declaration.
2026-10-23T11:12:18.2988441Z
2026-10-23T11:12:18.2988697Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2988883Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-23T11:12:18.2988935Z  117 โ”‚
2026-10-23T11:12:18.2989010Z  118 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2989088Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2989217Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2989303Z  119 โ”‚     void refreshNotifications();
2026-10-23T11:12:18.2989396Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2989571Z      ยท                    โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2989715Z  120 โ”‚     const subscription = AppState.addEventListener("change", (state) => {
2026-10-23T11:12:18.2989767Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2990371Z   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-23T11:12:18.2993164Z   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-23T11:12:18.2993168Z
2026-10-23T11:12:18.2993440Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T11:12:18.2993627Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-23T11:12:18.2993680Z  125 โ”‚
2026-10-23T11:12:18.2993744Z  126 โ”‚   useEffect(() => {
2026-10-23T11:12:18.2993815Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2993944Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T11:12:18.2994010Z  127 โ”‚     if (!isLoaded) {
2026-10-23T11:12:18.2994179Z  128 โ”‚       setLiveActivityStatus("checking");
2026-10-23T11:12:18.2994309Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2994481Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T11:12:18.2994543Z  129 โ”‚       return;
2026-10-23T11:12:18.2994594Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2995185Z   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-23T11:12:18.2995589Z   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-23T11:12:18.2995592Z
2026-10-23T11:12:18.2995799Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T11:12:18.2995967Z    โ•ญโ”€[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-23T11:12:18.2996039Z  3 โ”‚   AuthProvidersManageScope,
2026-10-23T11:12:18.2996109Z  4 โ”‚   type AuthSessionState,
2026-10-23T11:12:18.2996192Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2996337Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-23T11:12:18.2996401Z  5 โ”‚   type EnvironmentId,
2026-10-23T11:12:18.2996454Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2996553Z   help: Consider removing this import.
2026-10-23T11:12:18.2996555Z
2026-10-23T11:12:18.2997026Z   โš  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-23T11:12:18.2997214Z      โ•ญโ”€[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-23T11:12:18.2997287Z  520 โ”‚                 })).delivery;
2026-10-23T11:12:18.2997485Z  521 โ”‚ โ•ญโ”€โ–ถ             while (delivery.outcome === "accepted") {
2026-10-23T11:12:18.2997600Z  522 โ”‚ โ”‚                 yield* Effect.yieldNow;
2026-10-23T11:12:18.2997764Z  523 โ”‚ โ”‚                 delivery = (yield* service.getWebhookDelivery({
2026-10-23T11:12:18.2997869Z  524 โ”‚ โ”‚                   id: task.id,
2026-10-23T11:12:18.2997988Z  525 โ”‚ โ”‚                   deliveryId: deliveryId!,
2026-10-23T11:12:18.2998093Z  526 โ”‚ โ”‚                 })).delivery;
2026-10-23T11:12:18.2998233Z  527 โ”‚ โ•ฐโ”€โ–ถ             }
2026-10-23T11:12:18.2998351Z  528 โ”‚                 assert.equal(delivery.outcome, "dispatch_failed");
2026-10-23T11:12:18.2998405Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2998407Z
2026-10-23T11:12:18.2998575Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.2998693Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-23T11:12:18.2998798Z  820 โ”‚     const resolved = resolveThreadTarget(target);
2026-10-23T11:12:18.2998955Z  821 โ”‚     if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-23T11:12:18.2999079Z      ยท                                                        โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2999324Z      ยท                                                             โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.2999446Z  822 โ”‚       return AsyncResult.failure(
2026-10-23T11:12:18.2999500Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.2999779Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.3000072Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.3000074Z
2026-10-23T11:12:18.3000238Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.3000358Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-23T11:12:18.3000432Z  708 โ”‚     const wokeAt = resolved
2026-10-23T11:12:18.3000572Z  709 โ”‚       ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-23T11:12:18.3000687Z      ยท                                              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3000850Z      ยท                                                   โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.3000914Z  710 โ”‚       : null;
2026-10-23T11:12:18.3000966Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3001235Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.3001525Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.3001527Z
2026-10-23T11:12:18.3001693Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.3001846Z      โ•ญโ”€[apps/web/src/components/sidebar/SidebarThreadRow.tsx:372:47]
2026-10-23T11:12:18.3001983Z  371 โ”‚   const { open, onOpenChange, onSnooze, timestampFormat } = props;
2026-10-23T11:12:18.3002135Z  372 โ”‚   const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
2026-10-23T11:12:18.3002252Z      ยท                                               โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3002413Z      ยท                                                    โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.3002474Z  373 โ”‚   return (
2026-10-23T11:12:18.3002524Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3002797Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.3003091Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.3003097Z
2026-10-23T11:12:18.3003260Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.3003406Z      โ•ญโ”€[apps/web/src/components/sidebar/SidebarThreadRow.tsx:853:39]
2026-10-23T11:12:18.3003499Z  852 โ”‚   if (snoozeGateClock.thread !== thread) {
2026-10-23T11:12:18.3003629Z  853 โ”‚     setSnoozeGateClock({ thread, now: new Date().toISOString() });
2026-10-23T11:12:18.3003740Z      ยท                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3003893Z      ยท                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.3003947Z  854 โ”‚   }
2026-10-23T11:12:18.3004001Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3004322Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.3004643Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.3004645Z
2026-10-23T11:12:18.3004823Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T11:12:18.3004983Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-23T11:12:18.3005088Z   99 โ”‚   const startEditor = startScheduledTaskEditor;
2026-10-23T11:12:18.3005273Z  100 โ”‚   const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-23T11:12:18.3005424Z      ยท                                                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3005633Z      ยท                                                                                          โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-23T11:12:18.3005717Z  101 โ”‚   const readEditor = useCallback(
2026-10-23T11:12:18.3005770Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3006082Z   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-23T11:12:18.3006388Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.3006391Z
2026-10-23T11:12:18.3006572Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T11:12:18.3006736Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-23T11:12:18.3006803Z  120 โ”‚       setEditor,
2026-10-23T11:12:18.3006868Z  121 โ”‚       startEditor,
2026-10-23T11:12:18.3006947Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3007093Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-23T11:12:18.3007158Z  122 โ”‚       hasChanges,
2026-10-23T11:12:18.3007208Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3007518Z   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-23T11:12:18.3007844Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.3007847Z
2026-10-23T11:12:18.3008054Z   โš  eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-23T11:12:18.3008153Z     โ•ญโ”€[apps/web/src/types.ts:22:3]
2026-10-23T11:12:18.3008224Z  21 โ”‚   EnvironmentThreadShell,
2026-10-23T11:12:18.3008292Z  22 โ”‚   ThreadRunSummary,
2026-10-23T11:12:18.3008372Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3008515Z     ยท           โ•ฐโ”€โ”€ 'ThreadRunSummary' is imported here
2026-10-23T11:12:18.3008583Z  23 โ”‚   ThreadRuntimeSummary,
2026-10-23T11:12:18.3008638Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3008736Z   help: Consider removing this import.
2026-10-23T11:12:18.3008738Z
2026-10-23T11:12:18.3009017Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T11:12:18.3009226Z      โ•ญโ”€[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-23T11:12:18.3009317Z  162 โ”‚   keys,
2026-10-23T11:12:18.3009390Z  163 โ”‚   overridingProjects = [],
2026-10-23T11:12:18.3009474Z      ยท                        โ”€โ”€
2026-10-23T11:12:18.3009539Z  164 โ”‚   onClearOverrides,
2026-10-23T11:12:18.3009594Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3009912Z   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-23T11:12:18.3009915Z
2026-10-23T11:12:18.3010172Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.3010294Z      โ•ญโ”€[apps/server/src/serverRuntimeStartup.ts:728:7]
2026-10-23T11:12:18.3010350Z  727 โ”‚
2026-10-23T11:12:18.3010437Z  728 โ”‚ const layer = layerWithOptions();
2026-10-23T11:12:18.3010511Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.3010633Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T11:12:18.3010686Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3010791Z   help: Consider removing this declaration.
2026-10-23T11:12:18.3010793Z
2026-10-23T11:12:18.3011045Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.3011173Z       โ•ญโ”€[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-23T11:12:18.3011230Z  3404 โ”‚
2026-10-23T11:12:18.3011421Z  3405 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-23T11:12:18.3011496Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.3011626Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T11:12:18.3011696Z  3406 โ”‚   Layer.effect(
2026-10-23T11:12:18.3011751Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3011853Z   help: Consider removing this declaration.
2026-10-23T11:12:18.3011856Z
2026-10-23T11:12:18.3012315Z   โš  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-23T11:12:18.3012463Z      โ•ญโ”€[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-23T11:12:18.3012597Z  132 โ”‚               const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-23T11:12:18.3012744Z  133 โ”‚ โ•ญโ”€โ–ถ           for (
2026-10-23T11:12:18.3012852Z  134 โ”‚ โ”‚               let attempt = 0;
2026-10-23T11:12:18.3013019Z  135 โ”‚ โ”‚               attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-23T11:12:18.3013120Z  136 โ”‚ โ”‚               attempt += 1
2026-10-23T11:12:18.3013202Z  137 โ”‚ โ”‚             ) {
2026-10-23T11:12:18.3013314Z  138 โ”‚ โ”‚               yield* Effect.yieldNow;
2026-10-23T11:12:18.3013445Z  139 โ”‚ โ•ฐโ”€โ–ถ           }
2026-10-23T11:12:18.3013570Z  140 โ”‚               expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-23T11:12:18.3013622Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3013625Z
2026-10-23T11:12:18.3013902Z   โš  eslint(no-unused-vars): Variable 'legacyCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.3014109Z     โ•ญโ”€[packages/provider-cursor/src/server/credentialStore.test.ts:15:7]
2026-10-23T11:12:18.3014198Z  14 โ”‚
2026-10-23T11:12:18.3014270Z  15 โ”‚ const legacyCredentials = {
2026-10-23T11:12:18.3014378Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3014531Z     ยท               โ•ฐโ”€โ”€ 'legacyCredentials' is declared here
2026-10-23T11:12:18.3014600Z  16 โ”‚   version: 1 as const,
2026-10-23T11:12:18.3014657Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3014761Z   help: Consider removing this declaration.
2026-10-23T11:12:18.3014763Z
2026-10-23T11:12:18.3014958Z   โš  eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-23T11:12:18.3015094Z     โ•ญโ”€[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-23T11:12:18.3015190Z  23 โ”‚ import * as Deferred from "effect/Deferred";
2026-10-23T11:12:18.3015290Z  24 โ”‚ import * as Duration from "effect/Duration";
2026-10-23T11:12:18.3015370Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.3015505Z     ยท                 โ•ฐโ”€โ”€ 'Duration' is imported here
2026-10-23T11:12:18.3015593Z  25 โ”‚ import * as Effect from "effect/Effect";
2026-10-23T11:12:18.3015646Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3015740Z   help: Consider removing this import.
2026-10-23T11:12:18.3015743Z
2026-10-23T11:12:18.3015938Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T11:12:18.3016082Z     โ•ญโ”€[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-23T11:12:18.3016170Z  35 โ”‚       <T3SourceTextRunNativeComponent
2026-10-23T11:12:18.3016233Z  36 โ”‚         key={index}
2026-10-23T11:12:18.3016314Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3016394Z  37 โ”‚         style={flattenedStyle}
2026-10-23T11:12:18.3016451Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3016596Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T11:12:18.3016598Z
2026-10-23T11:12:18.3016798Z   โš  eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-23T11:12:18.3016903Z     โ•ญโ”€[apps/server/src/auth/http.ts:28:10]
2026-10-23T11:12:18.3017000Z  27 โ”‚ import * as Schema from "effect/Schema";
2026-10-23T11:12:18.3017091Z  28 โ”‚ import { identity } from "effect/Function";
2026-10-23T11:12:18.3017168Z     ยท          โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.3017302Z     ยท              โ•ฐโ”€โ”€ 'identity' is imported here
2026-10-23T11:12:18.3017389Z  29 โ”‚ import * as Layer from "effect/Layer";
2026-10-23T11:12:18.3017439Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3017592Z   help: Consider removing this import.
2026-10-23T11:12:18.3017638Z
2026-10-23T11:12:18.3018019Z   โš  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-23T11:12:18.3018147Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:236:17]
2026-10-23T11:12:18.3018286Z  235 โ”‚ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-23T11:12:18.3018413Z  236 โ”‚   const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-23T11:12:18.3018522Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3018661Z  237 โ”‚   const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-23T11:12:18.3018715Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3018718Z
2026-10-23T11:12:18.3019080Z   โš  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-23T11:12:18.3019206Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:255:26]
2026-10-23T11:12:18.3019308Z  254 โ”‚   if (method === WS_METHODS.assetsCreateUrl) {
2026-10-23T11:12:18.3019465Z  255 โ”‚     const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-23T11:12:18.3019577Z      ยท                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3019640Z  256 โ”‚     return [
2026-10-23T11:12:18.3019694Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3019696Z
2026-10-23T11:12:18.3019971Z   โš  eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-23T11:12:18.3020105Z      โ•ญโ”€[packages/provider-cursor/src/server/auth.ts:249:20]
2026-10-23T11:12:18.3020164Z  248 โ”‚     },
2026-10-23T11:12:18.3020246Z  249 โ”‚     (effect, flow, stopSessions) =>
2026-10-23T11:12:18.3020339Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3020486Z      ยท                          โ•ฐโ”€โ”€ 'stopSessions' is declared here
2026-10-23T11:12:18.3020553Z  250 โ”‚       effect.pipe(
2026-10-23T11:12:18.3020607Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3020711Z   help: Consider removing this parameter.
2026-10-23T11:12:18.3020714Z
2026-10-23T11:12:18.3020965Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.3021103Z       โ•ญโ”€[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-23T11:12:18.3021158Z  3754 โ”‚
2026-10-23T11:12:18.3021363Z  3755 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-23T11:12:18.3021440Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.3021563Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T11:12:18.3021631Z  3756 โ”‚   Layer.effect(
2026-10-23T11:12:18.3021684Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3021787Z   help: Consider removing this declaration.
2026-10-23T11:12:18.3021792Z
2026-10-23T11:12:18.3021955Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T11:12:18.3022144Z     โ•ญโ”€[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-23T11:12:18.3022200Z  52 โ”‚
2026-10-23T11:12:18.3022267Z  53 โ”‚   for (const {} of [
2026-10-23T11:12:18.3022337Z     ยท              โ”€โ”€
2026-10-23T11:12:18.3022405Z  54 โ”‚     { healthy: true },
2026-10-23T11:12:18.3022515Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3022780Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T11:12:18.3022786Z
2026-10-23T11:12:18.3022988Z   โš  unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-23T11:12:18.3023157Z     โ•ญโ”€[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-23T11:12:18.3023232Z  14 โ”‚ } from "@t3tools/contracts";
2026-10-23T11:12:18.3023323Z  15 โ”‚ import type {} from "@t3tools/contracts";
2026-10-23T11:12:18.3023392Z     ยท             โ”€โ”€
2026-10-23T11:12:18.3023576Z  16 โ”‚ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-23T11:12:18.3023630Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3023713Z   help: Remove empty braces
2026-10-23T11:12:18.3023722Z
2026-10-23T11:12:18.3023919Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T11:12:18.3024050Z     โ•ญโ”€[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-23T11:12:18.3024108Z  81 โ”‚     },
2026-10-23T11:12:18.3024174Z  82 โ”‚     [draftKey],
2026-10-23T11:12:18.3024243Z     ยท      โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T11:12:18.3024383Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `draftKey`
2026-10-23T11:12:18.3024439Z  83 โ”‚   );
2026-10-23T11:12:18.3024492Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3024781Z   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-23T11:12:18.3025098Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.3025104Z
2026-10-23T11:12:18.3025332Z   โš  eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
2026-10-23T11:12:18.3025451Z     โ•ญโ”€[apps/server/src/checkpointing/Utils.ts:12:10]
2026-10-23T11:12:18.3025502Z  11 โ”‚
2026-10-23T11:12:18.3025600Z  12 โ”‚ function resolveThreadWorkspaceCwd(input: {
2026-10-23T11:12:18.3025702Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3025871Z     ยท                      โ•ฐโ”€โ”€ 'resolveThreadWorkspaceCwd' is declared here
2026-10-23T11:12:18.3025937Z  13 โ”‚   readonly thread: {
2026-10-23T11:12:18.3025990Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3026094Z   help: Consider removing this declaration.
2026-10-23T11:12:18.3026097Z
2026-10-23T11:12:18.3026366Z   โš  eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-23T11:12:18.3026487Z      โ•ญโ”€[apps/server/src/usage/UsageService.ts:169:7]
2026-10-23T11:12:18.3026540Z  168 โ”‚
2026-10-23T11:12:18.3026623Z  169 โ”‚ const layerTest = Layer.succeed(
2026-10-23T11:12:18.3026699Z      ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3026831Z      ยท           โ•ฐโ”€โ”€ 'layerTest' is declared here
2026-10-23T11:12:18.3026898Z  170 โ”‚   UsageService,
2026-10-23T11:12:18.3026951Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3027053Z   help: Consider removing this declaration.
2026-10-23T11:12:18.3027055Z
2026-10-23T11:12:18.3027694Z   โš  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-23T11:12:18.3027856Z       โ•ญโ”€[apps/server/src/usage/UsageService.test.ts:2383:7]
2026-10-23T11:12:18.3027954Z  2382 โ”‚           let orphanedAt: number | undefined;
2026-10-23T11:12:18.3028184Z  2383 โ”‚ โ•ญโ”€โ–ถ       for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-23T11:12:18.3028307Z  2384 โ”‚ โ”‚           const tasks: Array<() => void> = [];
2026-10-23T11:12:18.3028456Z  2385 โ”‚ โ”‚           const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-23T11:12:18.3028592Z  2386 โ”‚ โ”‚             scheduleTask: (task) => tasks.push(task),
2026-10-23T11:12:18.3028694Z  2387 โ”‚ โ”‚             flush: () => {
2026-10-23T11:12:18.3028827Z  2388 โ”‚ โ”‚               let task: (() => void) | undefined;
2026-10-23T11:12:18.3028977Z  2389 โ”‚ โ”‚               while ((task = tasks.shift()) !== undefined) task();
2026-10-23T11:12:18.3029062Z  2390 โ”‚ โ”‚             },
2026-10-23T11:12:18.3029146Z  2391 โ”‚ โ”‚           };
2026-10-23T11:12:18.3029219Z  2392 โ”‚ โ”‚
2026-10-23T11:12:18.3029377Z  2393 โ”‚ โ”‚           let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-23T11:12:18.3029486Z  2394 โ”‚ โ”‚           let requestChecks = 0;
2026-10-23T11:12:18.3029617Z  2395 โ”‚ โ”‚           const scheduler: Scheduler.Scheduler = {
2026-10-23T11:12:18.3029730Z  2396 โ”‚ โ”‚             executionMode: "async",
2026-10-23T11:12:18.3029849Z  2397 โ”‚ โ”‚             makeDispatcher: () => dispatcher,
2026-10-23T11:12:18.3029968Z  2398 โ”‚ โ”‚             shouldYield: (fiber) => {
2026-10-23T11:12:18.3030107Z  2399 โ”‚ โ”‚               if (fiber !== requestFiber) return false;
2026-10-23T11:12:18.3030213Z  2400 โ”‚ โ”‚               requestChecks += 1;
2026-10-23T11:12:18.3030353Z  2401 โ”‚ โ”‚               if (requestChecks !== interruptAt) return false;
2026-10-23T11:12:18.3030470Z  2402 โ”‚ โ”‚               fiber.interruptUnsafe();
2026-10-23T11:12:18.3030570Z  2403 โ”‚ โ”‚               return true;
2026-10-23T11:12:18.3030654Z  2404 โ”‚ โ”‚             },
2026-10-23T11:12:18.3030734Z  2405 โ”‚ โ”‚           };
2026-10-23T11:12:18.3030807Z  2406 โ”‚ โ”‚
2026-10-23T11:12:18.3030937Z  2407 โ”‚ โ”‚           const input: UsageSummaryInput = {
2026-10-23T11:12:18.3031038Z  2408 โ”‚ โ”‚             ...WINDOW,
2026-10-23T11:12:18.3031168Z  2409 โ”‚ โ”‚             sinceDay: UsageDay.make("2026-09-01"),
2026-10-23T11:12:18.3031365Z  2410 โ”‚ โ”‚             untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-23T11:12:18.3031448Z  2411 โ”‚ โ”‚           };
2026-10-23T11:12:18.3031559Z  2412 โ”‚ โ”‚           const first = yield* service
2026-10-23T11:12:18.3031668Z  2413 โ”‚ โ”‚             .readSummary(input)
2026-10-23T11:12:18.3031759Z  2414 โ”‚ โ”‚             .pipe(
2026-10-23T11:12:18.3031857Z  2415 โ”‚ โ”‚               Effect.exit,
2026-10-23T11:12:18.3032014Z  2416 โ”‚ โ”‚               Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-23T11:12:18.3032169Z  2417 โ”‚ โ”‚               Effect.forkChild,
2026-10-23T11:12:18.3032283Z  2418 โ”‚ โ”‚             );
2026-10-23T11:12:18.3032387Z  2419 โ”‚ โ”‚           requestFiber = first;
2026-10-23T11:12:18.3032492Z  2420 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T11:12:18.3032596Z  2421 โ”‚ โ”‚           dispatcher.flush();
2026-10-23T11:12:18.3032669Z  2422 โ”‚ โ”‚
2026-10-23T11:12:18.3032822Z  2423 โ”‚ โ”‚           const second = yield* service.readSummary(input).pipe(
2026-10-23T11:12:18.3032918Z  2424 โ”‚ โ”‚             Effect.match({
2026-10-23T11:12:18.3033044Z  2425 โ”‚ โ”‚               onFailure: (error) => error.reason,
2026-10-23T11:12:18.3033169Z  2426 โ”‚ โ”‚               onSuccess: () => "success" as const,
2026-10-23T11:12:18.3033262Z  2427 โ”‚ โ”‚             }),
2026-10-23T11:12:18.3033416Z  2428 โ”‚ โ”‚             Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-23T11:12:18.3033520Z  2429 โ”‚ โ”‚             Effect.forkChild,
2026-10-23T11:12:18.3033603Z  2430 โ”‚ โ”‚           );
2026-10-23T11:12:18.3033709Z  2431 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T11:12:18.3033808Z  2432 โ”‚ โ”‚           dispatcher.flush();
2026-10-23T11:12:18.3033938Z  2433 โ”‚ โ”‚           const secondExit = second.pollUnsafe();
2026-10-23T11:12:18.3034057Z  2434 โ”‚ โ”‚           if (secondExit === undefined) {
2026-10-23T11:12:18.3034171Z  2435 โ”‚ โ”‚             second.interruptUnsafe();
2026-10-23T11:12:18.3034282Z  2436 โ”‚ โ”‚             orphanedAt = interruptAt;
2026-10-23T11:12:18.3034375Z  2437 โ”‚ โ”‚             break;
2026-10-23T11:12:18.3034457Z  2438 โ”‚ โ”‚           }
2026-10-23T11:12:18.3034576Z  2439 โ”‚ โ”‚           if (Exit.isFailure(secondExit)) {
2026-10-23T11:12:18.3034734Z  2440 โ”‚ โ”‚             assert.fail("the matching request fiber was interrupted");
2026-10-23T11:12:18.3034811Z  2441 โ”‚ โ”‚           }
2026-10-23T11:12:18.3034962Z  2442 โ”‚ โ”‚           assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-23T11:12:18.3035095Z  2443 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T11:12:18.3035154Z  2444 โ”‚
2026-10-23T11:12:18.3035205Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3035207Z
2026-10-23T11:12:18.3035352Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.3035521Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-23T11:12:18.3035748Z  151 โ”‚         <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-23T11:12:18.3035827Z  152 โ”‚           {props.children(open)}
2026-10-23T11:12:18.3035918Z      ยท                           โ”€โ”€โ”ฌโ”€
2026-10-23T11:12:18.3036078Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T11:12:18.3036142Z  153 โ”‚         </View>
2026-10-23T11:12:18.3036193Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3036660Z   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-23T11:12:18.3037019Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.3037061Z
2026-10-23T11:12:18.3037258Z   โš  react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-23T11:12:18.3037407Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-23T11:12:18.3037488Z  139 โ”‚       if (action.id !== undefined) {
2026-10-23T11:12:18.3037568Z  140 โ”‚         props.onPressAction?.({
2026-10-23T11:12:18.3037660Z      ยท         โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T11:12:18.3037798Z      ยท           โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-23T11:12:18.3037891Z  141 โ”‚           nativeEvent: { event: action.id },
2026-10-23T11:12:18.3038038Z  142 โ”‚         } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-23T11:12:18.3038101Z  143 โ”‚       }
2026-10-23T11:12:18.3038160Z  144 โ”‚     },
2026-10-23T11:12:18.3038243Z  145 โ”‚     [close, props.onPressAction],
2026-10-23T11:12:18.3038338Z      ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3038551Z      ยท                      โ•ฐโ”€โ”€ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-23T11:12:18.3038604Z  146 โ”‚   );
2026-10-23T11:12:18.3038658Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3039130Z   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-23T11:12:18.3039446Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T11:12:18.3039451Z
2026-10-23T11:12:18.3039618Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.3039751Z      โ•ญโ”€[apps/web/src/components/CustomSnoozeDialog.tsx:140:58]
2026-10-23T11:12:18.3039886Z  139 โ”‚                             {...(weekStartsOn === undefined ? {} : { weekStartsOn })}
2026-10-23T11:12:18.3040034Z  140 โ”‚                             disabled={{ before: new Date(new Date().setHours(0, 0, 0, 0)) }}
2026-10-23T11:12:18.3040160Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3040330Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.3040425Z  141 โ”‚                             onSelect={(selected) => {
2026-10-23T11:12:18.3040479Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3040807Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.3041140Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.3041142Z
2026-10-23T11:12:18.3041284Z   โš  react(refs): Cannot access refs during render
2026-10-23T11:12:18.3041403Z     โ•ญโ”€[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-23T11:12:18.3041581Z  53 โ”‚         const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-23T11:12:18.3041752Z  54 โ”‚ โ•ญโ”€โ–ถ     children = cloneElement(child, {
2026-10-23T11:12:18.3041862Z  55 โ”‚ โ”‚         onTouchStart: (event) => {
2026-10-23T11:12:18.3042023Z  56 โ”‚ โ”‚           // Reset for a new touch, not onPressIn, which also fires when a
2026-10-23T11:12:18.3042179Z  57 โ”‚ โ”‚           // finger moves out of the row and back during the same gesture.
2026-10-23T11:12:18.3042306Z  58 โ”‚ โ”‚           menuPress.current.isPreparing = false;
2026-10-23T11:12:18.3042472Z  59 โ”‚ โ”‚           menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-23T11:12:18.3042583Z  60 โ”‚ โ”‚           pendingPress.current = null;
2026-10-23T11:12:18.3042705Z  61 โ”‚ โ”‚           child.props.onTouchStart?.(event);
2026-10-23T11:12:18.3042782Z  62 โ”‚ โ”‚         },
2026-10-23T11:12:18.3042884Z  63 โ”‚ โ”‚         onPress: (event) => {
2026-10-23T11:12:18.3043055Z  64 โ”‚ โ”‚           // Accessibility clicks have no touch identifier and must not inherit
2026-10-23T11:12:18.3043195Z  65 โ”‚ โ”‚           // cancellation from a previous physical gesture.
2026-10-23T11:12:18.3043362Z  66 โ”‚ โ”‚           const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-23T11:12:18.3043551Z  67 โ”‚ โ”‚           if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-23T11:12:18.3043635Z  68 โ”‚ โ”‚             return;
2026-10-23T11:12:18.3043716Z  69 โ”‚ โ”‚           }
2026-10-23T11:12:18.3043855Z  70 โ”‚ โ”‚           if (isTouch && menuPress.current.isPreparing) {
2026-10-23T11:12:18.3044026Z  71 โ”‚ โ”‚             // A release can arrive between native menu preparation and display.
2026-10-23T11:12:18.3044193Z  72 โ”‚ โ”‚             // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-23T11:12:18.3044295Z  73 โ”‚ โ”‚             event.persist();
2026-10-23T11:12:18.3044454Z  74 โ”‚ โ”‚             pendingPress.current = () => child.props.onPress?.(event);
2026-10-23T11:12:18.3044540Z  75 โ”‚ โ”‚             return;
2026-10-23T11:12:18.3044616Z  76 โ”‚ โ”‚           }
2026-10-23T11:12:18.3044730Z  77 โ”‚ โ”‚           child.props.onPress?.(event);
2026-10-23T11:12:18.3044809Z  78 โ”‚ โ”‚         },
2026-10-23T11:12:18.3044940Z  79 โ”‚ โ”œโ”€โ–ถ     });
2026-10-23T11:12:18.3045171Z     ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T11:12:18.3045327Z  80 โ”‚         menuProps.onMenuInteractionStart = () => {
2026-10-23T11:12:18.3045415Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3045876Z   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-23T11:12:18.3046163Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T11:12:18.3046165Z
2026-10-23T11:12:18.3046326Z   โš  eslint(no-control-regex): Unexpected control character
2026-10-23T11:12:18.3046517Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-23T11:12:18.3046658Z  219 โ”‚               <Text selectable className="font-mono text-sm text-foreground">
2026-10-23T11:12:18.3046803Z  220 โ”‚                 {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-23T11:12:18.3046914Z      ยท                                              โ”€โ”€โ”ฌโ”€
2026-10-23T11:12:18.3047081Z      ยท                                                โ•ฐโ”€โ”€ 'U+001B' is a control character.
2026-10-23T11:12:18.3047148Z  221 โ”‚               </Text>
2026-10-23T11:12:18.3047201Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3047426Z   help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-23T11:12:18.3047431Z
2026-10-23T11:12:18.3047671Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-23T11:12:18.3047858Z      โ•ญโ”€[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-23T11:12:18.3047985Z  984 โ”‚           const changedBeforeDecline = draftChangedSinceSend();
2026-10-23T11:12:18.3048228Z  985 โ”‚ โ•ญโ”€โ–ถ       const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-23T11:12:18.3048348Z  986 โ”‚ โ”‚           (approval) => approval.requestId,
2026-10-23T11:12:18.3048483Z  987 โ”‚ โ•ฐโ”€โ–ถ       );
2026-10-23T11:12:18.3048622Z  988 โ”‚           const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-23T11:12:18.3048677Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3048752Z   help: Switch to `Set`
2026-10-23T11:12:18.3048755Z
2026-10-23T11:12:18.3048922Z   โš  react(purity): Cannot call impure function during render
2026-10-23T11:12:18.3049072Z      โ•ญโ”€[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-23T11:12:18.3049184Z  177 โ”‚   if (snoozeClockState.shell !== activeThreadShell) {
2026-10-23T11:12:18.3049344Z  178 โ”‚     setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-23T11:12:18.3049470Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3049641Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T11:12:18.3049695Z  179 โ”‚   }
2026-10-23T11:12:18.3049746Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T11:12:18.3050022Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T11:12:18.3050360Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T11:12:18.3050396Z
2026-10-23T11:12:18.3050480Z Found 0 errors and 362 warnings in 5395 files (5.1s, 8 threads)
2026-10-23T11:12:18.3495504Z Post job cleanup.
2026-10-23T11:12:18.4086762Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T11:12:18.4151265Z Post job cleanup.
2026-10-23T11:12:18.4166995Z ##[start-action display=Cache full pnpm store;id=__7beabdaf-339a-4ade-923e-25fbec62ce93.__actions_cache]
2026-10-23T11:12:18.4490567Z Post job cleanup.
2026-10-23T11:12:18.5131453Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-2baa264059789b1dde4bbc8fdc5b8342f31f2fc8e6176e5c5e486efdd242b36c, not saving cache.
2026-10-23T11:12:18.5160544Z ##[end-action id=__7beabdaf-339a-4ade-923e-25fbec62ce93.__actions_cache;outcome=success;conclusion=success;duration_ms=99]
2026-10-23T11:12:18.5161996Z ##[start-action display=Cache Vite+;id=__7beabdaf-339a-4ade-923e-25fbec62ce93.vp_cache]
2026-10-23T11:12:18.5183742Z Post job cleanup.
2026-10-23T11:12:18.5774103Z 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-23T11:12:18.5804864Z ##[end-action id=__7beabdaf-339a-4ade-923e-25fbec62ce93.vp_cache;outcome=success;conclusion=success;duration_ms=64]
2026-10-23T11:12:18.5838254Z Post job cleanup.
2026-10-23T11:12:18.6230480Z [command]/usr/local/bin/git version
2026-10-23T11:12:18.6260097Z git version 2.55.0
2026-10-23T11:12:18.6279195Z Temporarily overriding HOME='/home/runner/_work/_temp/3bfa222a-ca38-428a-879b-7f97339dc00c' before making global git config changes
2026-10-23T11:12:18.6279542Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T11:12:18.6282585Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T11:12:18.6304116Z Removing SSH command configuration
2026-10-23T11:12:18.6307193Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T11:12:18.6330522Z [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-23T11:12:18.6446041Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T11:12:18.6468899Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T11:12:18.6501251Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T11:12:18.6512652Z ##[group]Run '/job_completed.sh'
2026-10-23T11:12:18.6517795Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T11:12:18.6517962Z env:
2026-10-23T11:12:18.6518070Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 278
2026-10-23T11:12:18.6518216Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 438
2026-10-23T11:12:18.6518353Z   BLACKSMITH_CHECK_RUN_ID: 120383083005
2026-10-23T11:12:18.6518493Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-23T11:12:18.6518640Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T11:12:18.6518770Z ##[endgroup]
2026-10-23T11:12:18.6589254Z Docker container cache not activated, skipping hash computation.
2026-10-23T11:12:18.6806188Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T11:12:18.6844841Z Cleaning up orphan processes