GitHub check

256 KB of 597 KB loaded Download the full log (597 KB)
341 KB of earlier output not loaded
6-10-23T23:34:25.9056199Z
2026-10-23T23:34:25.9056438Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9056615Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-23T23:34:25.9056840Z  120 โ”‚   const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-23T23:34:25.9056972Z  121 โ”‚   const dispatch = vi.fn((_: unknown) =>
2026-10-23T23:34:25.9057099Z      ยท                           โ”ฌ
2026-10-23T23:34:25.9057249Z      ยท                           โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9057420Z  122 โ”‚     (options.dispatchGate ?? Effect.void).pipe(
2026-10-23T23:34:25.9057512Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9057654Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9057658Z
2026-10-23T23:34:25.9058003Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9058239Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-23T23:34:25.9058341Z  133 โ”‚   );
2026-10-23T23:34:25.9058490Z  134 โ”‚   const listLocalBranchNames = vi.fn((_: string) =>
2026-10-23T23:34:25.9058637Z      ยท                                       โ”ฌ
2026-10-23T23:34:25.9058797Z      ยท                                       โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9058925Z  135 โ”‚     Effect.succeed(
2026-10-23T23:34:25.9059014Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9059168Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9059171Z
2026-10-23T23:34:25.9059380Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9059566Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-23T23:34:25.9059675Z  177 โ”‚   });
2026-10-23T23:34:25.9059826Z  178 โ”‚   const sendToThread = vi.fn((_: unknown) => {
2026-10-23T23:34:25.9059936Z      ยท                               โ”ฌ
2026-10-23T23:34:25.9060111Z      ยท                               โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9060276Z  179 โ”‚     switch (options.continuation ?? "queued") {
2026-10-23T23:34:25.9060372Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9060494Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9060497Z
2026-10-23T23:34:25.9060729Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9060915Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-23T23:34:25.9061018Z  202 โ”‚   );
2026-10-23T23:34:25.9061143Z  203 โ”‚   const removeWorktree = vi.fn((_: unknown) =>
2026-10-23T23:34:25.9061285Z      ยท                                 โ”ฌ
2026-10-23T23:34:25.9061461Z      ยท                                 โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9061607Z  204 โ”‚     options.removeWorktreeFails
2026-10-23T23:34:25.9061683Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9061826Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9061829Z
2026-10-23T23:34:25.9062057Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9062239Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-23T23:34:25.9062348Z  207 โ”‚   );
2026-10-23T23:34:25.9062470Z  208 โ”‚   const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-23T23:34:25.9062608Z      ยท                                    โ”ฌ
2026-10-23T23:34:25.9062791Z      ยท                                    โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9062944Z  209 โ”‚     options.deleteLocalBranchFails
2026-10-23T23:34:25.9063015Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9063156Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9063159Z
2026-10-23T23:34:25.9063386Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9063571Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-23T23:34:25.9063659Z  212 โ”‚   );
2026-10-23T23:34:25.9063815Z  213 โ”‚   const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-23T23:34:25.9063955Z      ยท                                          โ”ฌ
2026-10-23T23:34:25.9064185Z      ยท                                          โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9064379Z  214 โ”‚     options.fetchWorktreeBaseFails
2026-10-23T23:34:25.9064512Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9064652Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9064655Z
2026-10-23T23:34:25.9064889Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9065040Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-23T23:34:25.9065155Z  253 โ”‚   );
2026-10-23T23:34:25.9065293Z  254 โ”‚   const localStatus = vi.fn((_: unknown) =>
2026-10-23T23:34:25.9065425Z      ยท                              โ”ฌ
2026-10-23T23:34:25.9065583Z      ยท                              โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9065689Z  255 โ”‚     Effect.succeed({
2026-10-23T23:34:25.9065789Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9065933Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9065941Z
2026-10-23T23:34:25.9066183Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9066336Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-23T23:34:25.9066447Z  263 โ”‚   );
2026-10-23T23:34:25.9066637Z  264 โ”‚   const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-23T23:34:25.9066770Z      ยท                                โ”ฌ
2026-10-23T23:34:25.9066931Z      ยท                                โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9067125Z  265 โ”‚   const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-23T23:34:25.9067226Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9067375Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9067378Z
2026-10-23T23:34:25.9067715Z   โš  eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:25.9067880Z      โ•ญโ”€[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-23T23:34:25.9067995Z  217 โ”‚
2026-10-23T23:34:25.9068195Z  218 โ”‚ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-23T23:34:25.9068307Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9068512Z      ยท                 โ•ฐโ”€โ”€ 'revokeActiveMcpThread' is declared here
2026-10-23T23:34:25.9068797Z  219 โ”‚   activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-23T23:34:25.9068896Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9069031Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9069055Z
2026-10-23T23:34:25.9069477Z   โš  eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:25.9069680Z      โ•ญโ”€[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-23T23:34:25.9069798Z  220 โ”‚
2026-10-23T23:34:25.9069973Z  221 โ”‚ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-23T23:34:25.9070101Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9070329Z      ยท                     โ•ฐโ”€โ”€ 'revokeAllActiveMcpCredentials' is declared here
2026-10-23T23:34:25.9070553Z  222 โ”‚   activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-23T23:34:25.9070653Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9070778Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9070781Z
2026-10-23T23:34:25.9070988Z   โš  eslint(no-new): Do not use 'new' for side effects.
2026-10-23T23:34:25.9071148Z      โ•ญโ”€[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-23T23:34:25.9071329Z  167 โ”‚   // @ts-expect-error a declaration constructed directly
2026-10-23T23:34:25.9071444Z  168 โ”‚   new McpToolAccess.Declaration(unchecked);
2026-10-23T23:34:25.9071586Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9071758Z  169 โ”‚   // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-23T23:34:25.9071859Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9072070Z   help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-23T23:34:25.9072073Z
2026-10-23T23:34:25.9072271Z   โš  react(purity): Cannot call impure function during render
2026-10-23T23:34:25.9072486Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:697:76]
2026-10-23T23:34:25.9072711Z  696 โ”‚   const [snoozeGateClock, setSnoozeGateClock] = useState(() => ({ thread, now: Date.now() }));
2026-10-23T23:34:25.9072942Z  697 โ”‚   if (snoozeGateClock.thread !== thread) setSnoozeGateClock({ thread, now: Date.now() });
2026-10-23T23:34:25.9073107Z      ยท                                                                            โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9073348Z      ยท                                                                                 โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T23:34:25.9073532Z  698 โ”‚   const snoozeGateNow = new Date(snoozeGateClock.now).toISOString();
2026-10-23T23:34:25.9073621Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9073974Z   help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:25.9074360Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:25.9074366Z
2026-10-23T23:34:25.9074587Z   โš  react(purity): Cannot call impure function during render
2026-10-23T23:34:25.9074780Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:718:71]
2026-10-23T23:34:25.9074917Z  717 โ”‚   const snoozePresets = useMemo(
2026-10-23T23:34:25.9075124Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-23T23:34:25.9075298Z      ยท                                                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9075538Z      ยท                                                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T23:34:25.9075773Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-23T23:34:25.9075906Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9076218Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:25.9076571Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:25.9076574Z
2026-10-23T23:34:25.9076796Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T23:34:25.9077025Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:719:6]
2026-10-23T23:34:25.9077253Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-23T23:34:25.9077400Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-23T23:34:25.9077536Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9077767Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.snoozePresetMinute`
2026-10-23T23:34:25.9077869Z  720 โ”‚   );
2026-10-23T23:34:25.9077937Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9078318Z   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-23T23:34:25.9078683Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9078686Z
2026-10-23T23:34:25.9078942Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T23:34:25.9079133Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:765:7]
2026-10-23T23:34:25.9079250Z  764 โ”‚       thread.pinnedAt,
2026-10-23T23:34:25.9079353Z  765 โ”‚       variant,
2026-10-23T23:34:25.9079471Z      ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9079648Z      ยท          โ•ฐโ”€โ”€ Unnecessary dependency `variant`
2026-10-23T23:34:25.9079748Z  766 โ”‚     ],
2026-10-23T23:34:25.9079839Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9080203Z   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-23T23:34:25.9080605Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9080609Z
2026-10-23T23:34:25.9080842Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:25.9081054Z       โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:1215:21]
2026-10-23T23:34:25.9081238Z  1214 โ”‚             {providerDrivers.slice(0, -1).map((driver, index) => (
2026-10-23T23:34:25.9081436Z  1215 โ”‚               <View key={`${driver}:${index}`} className="-mr-1 opacity-30">
2026-10-23T23:34:25.9081588Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9081744Z  1216 โ”‚                 <ProviderIcon provider={driver} size={12} />
2026-10-23T23:34:25.9081838Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9082027Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:25.9082031Z
2026-10-23T23:34:25.9082259Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9082517Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-23T23:34:25.9082805Z  151 โ”‚         <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-23T23:34:25.9082925Z  152 โ”‚           {props.children(open)}
2026-10-23T23:34:25.9083069Z      ยท                           โ”€โ”€โ”ฌโ”€
2026-10-23T23:34:25.9083287Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9083388Z  153 โ”‚         </View>
2026-10-23T23:34:25.9083485Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9084090Z   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-23T23:34:25.9084447Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9084481Z
2026-10-23T23:34:25.9084714Z   โš  react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-23T23:34:25.9084922Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-23T23:34:25.9085050Z  139 โ”‚       if (action.id !== undefined) {
2026-10-23T23:34:25.9085173Z  140 โ”‚         props.onPressAction?.({
2026-10-23T23:34:25.9085275Z      ยท         โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9085458Z      ยท           โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-23T23:34:25.9085598Z  141 โ”‚           nativeEvent: { event: action.id },
2026-10-23T23:34:25.9085784Z  142 โ”‚         } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-23T23:34:25.9085880Z  143 โ”‚       }
2026-10-23T23:34:25.9085988Z  144 โ”‚     },
2026-10-23T23:34:25.9086110Z  145 โ”‚     [close, props.onPressAction],
2026-10-23T23:34:25.9086246Z      ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9086489Z      ยท                      โ•ฐโ”€โ”€ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-23T23:34:25.9086600Z  146 โ”‚   );
2026-10-23T23:34:25.9086693Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9087264Z   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-23T23:34:25.9087633Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9087651Z
2026-10-23T23:34:25.9087900Z   โš  eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-23T23:34:25.9088258Z     โ•ญโ”€[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-23T23:34:25.9088397Z  23 โ”‚ import * as Deferred from "effect/Deferred";
2026-10-23T23:34:25.9088534Z  24 โ”‚ import * as Duration from "effect/Duration";
2026-10-23T23:34:25.9088627Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9088842Z     ยท                 โ•ฐโ”€โ”€ 'Duration' is imported here
2026-10-23T23:34:25.9088972Z  25 โ”‚ import * as Effect from "effect/Effect";
2026-10-23T23:34:25.9089064Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9089186Z   help: Consider removing this import.
2026-10-23T23:34:25.9089189Z
2026-10-23T23:34:25.9089493Z   โš  react(purity): Cannot call impure function during render
2026-10-23T23:34:25.9089767Z      โ•ญโ”€[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-23T23:34:25.9089934Z  177 โ”‚   if (snoozeClockState.shell !== activeThreadShell) {
2026-10-23T23:34:25.9090133Z  178 โ”‚     setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-23T23:34:25.9090303Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9090560Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T23:34:25.9090656Z  179 โ”‚   }
2026-10-23T23:34:25.9090750Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9091095Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:25.9091611Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:25.9091617Z
2026-10-23T23:34:25.9091953Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9092156Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:361:7]
2026-10-23T23:34:25.9092349Z  355 โ”‚   }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
2026-10-23T23:34:25.9092428Z  356 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9092572Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9092749Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9092888Z  357 โ”‚     if (!isReturningToProjectPicker) {
2026-10-23T23:34:25.9092975Z  358 โ”‚       return;
2026-10-23T23:34:25.9093077Z  359 โ”‚     }
2026-10-23T23:34:25.9093241Z  360 โ”‚     if (requestedInitialProjectAvailable) {
2026-10-23T23:34:25.9093359Z  361 โ”‚       setIsReturningToProjectPicker(false);
2026-10-23T23:34:25.9093514Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9093739Z      ยท                     โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9093860Z  362 โ”‚       return;
2026-10-23T23:34:25.9093958Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9094689Z   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-23T23:34:25.9095089Z   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-23T23:34:25.9095095Z
2026-10-23T23:34:25.9095551Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9095771Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:504:9]
2026-10-23T23:34:25.9095871Z  447 โ”‚
2026-10-23T23:34:25.9096264Z  448 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9096369Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9096566Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9096717Z  449 โ”‚     if (props.pendingTaskId || props.draftId) {
2026-10-23T23:34:25.9096798Z  450 โ”‚       return;
2026-10-23T23:34:25.9097015Z  451 โ”‚     }
2026-10-23T23:34:25.9097274Z  452 โ”‚     if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
2026-10-23T23:34:25.9097460Z  453 โ”‚       lastInitialProjectRefRef.current = props.initialProjectRef;
2026-10-23T23:34:25.9097593Z  454 โ”‚       appliedInitialProjectKeyRef.current = null;
2026-10-23T23:34:25.9097685Z  455 โ”‚     }
2026-10-23T23:34:25.9097855Z  456 โ”‚     const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-23T23:34:25.9106075Z  457 โ”‚     const initialProjectId = props.initialProjectRef?.projectId;
2026-10-23T23:34:25.9106253Z  458 โ”‚     if (initialEnvironmentId && initialProjectId) {
2026-10-23T23:34:25.9106334Z  459 โ”‚       const directProject =
2026-10-23T23:34:25.9106406Z  460 โ”‚         projects.find(
2026-10-23T23:34:25.9106477Z  461 โ”‚           (project) =>
2026-10-23T23:34:25.9106684Z  462 โ”‚             project.environmentId === initialEnvironmentId && project.id === initialProjectId,
2026-10-23T23:34:25.9106765Z  463 โ”‚         ) ?? null;
2026-10-23T23:34:25.9106823Z  464 โ”‚
2026-10-23T23:34:25.9106901Z  465 โ”‚       if (directProject) {
2026-10-23T23:34:25.9107055Z  466 โ”‚         // Apply the route's project once. Re-applying on every change would
2026-10-23T23:34:25.9107205Z  467 โ”‚         // instantly revert environment/project switches made in the picker.
2026-10-23T23:34:25.9107384Z  468 โ”‚         const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
2026-10-23T23:34:25.9107533Z  469 โ”‚         if (appliedInitialProjectKeyRef.current === directProjectKey) {
2026-10-23T23:34:25.9107603Z  470 โ”‚           return;
2026-10-23T23:34:25.9107664Z  471 โ”‚         }
2026-10-23T23:34:25.9107774Z  472 โ”‚         if (props.initialProjectRef?.branch) {
2026-10-23T23:34:25.9107843Z  473 โ”‚           if (
2026-10-23T23:34:25.9108008Z  474 โ”‚             selectedProject?.environmentId !== directProject.environmentId ||
2026-10-23T23:34:25.9108120Z  475 โ”‚             selectedProject.id !== directProject.id
2026-10-23T23:34:25.9108187Z  476 โ”‚           ) {
2026-10-23T23:34:25.9108279Z  477 โ”‚             setProject(directProject);
2026-10-23T23:34:25.9108351Z  478 โ”‚             return;
2026-10-23T23:34:25.9108416Z  479 โ”‚           }
2026-10-23T23:34:25.9108507Z  480 โ”‚           if (!flow.draftKey) return;
2026-10-23T23:34:25.9108663Z  481 โ”‚           // The route completes checkout before mounting this composer. Local
2026-10-23T23:34:25.9108818Z  482 โ”‚           // mode reuses an existing worktree; worktree mode would create another.
2026-10-23T23:34:25.9108937Z  483 โ”‚           updateComposerDraftSettings(flow.draftKey, {
2026-10-23T23:34:25.9109026Z  484 โ”‚             workspaceSelection: {
2026-10-23T23:34:25.9109105Z  485 โ”‚               mode: "local",
2026-10-23T23:34:25.9109341Z  486 โ”‚               branch: props.initialProjectRef.branch,
2026-10-23T23:34:25.9109546Z  487 โ”‚               worktreePath: props.initialProjectRef.worktreePath ?? null,
2026-10-23T23:34:25.9109635Z  488 โ”‚               startFromOrigin: false,
2026-10-23T23:34:25.9109701Z  489 โ”‚             },
2026-10-23T23:34:25.9109766Z  490 โ”‚           });
2026-10-23T23:34:25.9109825Z  491 โ”‚         }
2026-10-23T23:34:25.9109965Z  492 โ”‚         appliedInitialProjectKeyRef.current = directProjectKey;
2026-10-23T23:34:25.9110032Z  493 โ”‚         if (
2026-10-23T23:34:25.9110186Z  494 โ”‚           selectedProject?.environmentId === directProject.environmentId &&
2026-10-23T23:34:25.9110291Z  495 โ”‚           selectedProject.id === directProject.id
2026-10-23T23:34:25.9110356Z  496 โ”‚         ) {
2026-10-23T23:34:25.9110424Z  497 โ”‚           return;
2026-10-23T23:34:25.9110486Z  498 โ”‚         }
2026-10-23T23:34:25.9110576Z  499 โ”‚         setProject(directProject);
2026-10-23T23:34:25.9110646Z  500 โ”‚         return;
2026-10-23T23:34:25.9110707Z  501 โ”‚       }
2026-10-23T23:34:25.9110763Z  502 โ”‚
2026-10-23T23:34:25.9110847Z  503 โ”‚       if (projects.length > 0) {
2026-10-23T23:34:25.9110955Z  504 โ”‚         setIsReturningToProjectPicker(true);
2026-10-23T23:34:25.9111077Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9111281Z      ยท                       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9111342Z  505 โ”‚       }
2026-10-23T23:34:25.9111399Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9112057Z   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-23T23:34:25.9112415Z   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-23T23:34:25.9112419Z
2026-10-23T23:34:25.9112694Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9112862Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:604:5]
2026-10-23T23:34:25.9112920Z  545 โ”‚
2026-10-23T23:34:25.9112990Z  546 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9113064Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9113204Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9113306Z  547 โ”‚     const shareId = props.incomingShareId;
2026-10-23T23:34:25.9113400Z  548 โ”‚     const draftKey = flow.draftKey;
2026-10-23T23:34:25.9113505Z  549 โ”‚     const destinationProject = selectedProject;
2026-10-23T23:34:25.9113655Z  550 โ”‚     const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-23T23:34:25.9113790Z  551 โ”‚     const initialProjectId = props.initialProjectRef?.projectId;
2026-10-23T23:34:25.9113886Z  552 โ”‚     const selectedProjectMatchesRoute =
2026-10-23T23:34:25.9113964Z  553 โ”‚       !initialEnvironmentId ||
2026-10-23T23:34:25.9114077Z  554 โ”‚       !initialProjectId ||
2026-10-23T23:34:25.9114218Z  555 โ”‚       (destinationProject?.environmentId === initialEnvironmentId &&
2026-10-23T23:34:25.9114328Z  556 โ”‚         destinationProject.id === initialProjectId);
2026-10-23T23:34:25.9114388Z  557 โ”‚     if (
2026-10-23T23:34:25.9114456Z  558 โ”‚       !shareId ||
2026-10-23T23:34:25.9114524Z  559 โ”‚       !draftKey ||
2026-10-23T23:34:25.9114661Z  560 โ”‚       !destinationProject ||
2026-10-23T23:34:25.9114792Z  561 โ”‚       !selectedProjectMatchesRoute ||
2026-10-23T23:34:25.9114891Z  562 โ”‚       cancelledIncomingShareId === shareId
2026-10-23T23:34:25.9114954Z  563 โ”‚     ) {
2026-10-23T23:34:25.9115020Z  564 โ”‚       return;
2026-10-23T23:34:25.9115078Z  565 โ”‚     }
2026-10-23T23:34:25.9115182Z  566 โ”‚     const importKey = `${shareId}:${draftKey}`;
2026-10-23T23:34:25.9115244Z  567 โ”‚     if (
2026-10-23T23:34:25.9115361Z  568 โ”‚       startedShareImportKeyRef.current === importKey ||
2026-10-23T23:34:25.9115479Z  569 โ”‚       cancellingShareImportKeyRef.current === importKey
2026-10-23T23:34:25.9115538Z  570 โ”‚     ) {
2026-10-23T23:34:25.9115603Z  571 โ”‚       return;
2026-10-23T23:34:25.9115659Z  572 โ”‚     }
2026-10-23T23:34:25.9115715Z  573 โ”‚
2026-10-23T23:34:25.9115789Z  574 โ”‚     if (!incomingShare) {
2026-10-23T23:34:25.9116003Z  575 โ”‚       if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
2026-10-23T23:34:25.9116139Z  576 โ”‚         alertedUnavailableIncomingShareIdRef.current = shareId;
2026-10-23T23:34:25.9116211Z  577 โ”‚         Dialog.alert(
2026-10-23T23:34:25.9116303Z  578 โ”‚           "Shared content unavailable",
2026-10-23T23:34:25.9116489Z  579 โ”‚           "The shared content is no longer in the inbox. You can continue editing this task draft.",
2026-10-23T23:34:25.9116550Z  580 โ”‚         );
2026-10-23T23:34:25.9116610Z  581 โ”‚       }
2026-10-23T23:34:25.9116675Z  582 โ”‚       return;
2026-10-23T23:34:25.9116734Z  583 โ”‚     }
2026-10-23T23:34:25.9116786Z  584 โ”‚
2026-10-23T23:34:25.9116849Z  585 โ”‚     if (
2026-10-23T23:34:25.9117022Z  586 โ”‚       incomingShare.attachments.some((attachment) => attachment.type === "file") &&
2026-10-23T23:34:25.9117138Z  587 โ”‚       selectedEnvironmentServerConfig === null
2026-10-23T23:34:25.9117198Z  588 โ”‚     ) {
2026-10-23T23:34:25.9117260Z  589 โ”‚       return;
2026-10-23T23:34:25.9117319Z  590 โ”‚     }
2026-10-23T23:34:25.9117372Z  591 โ”‚
2026-10-23T23:34:25.9117524Z  592 โ”‚     if (alertedUnavailableIncomingShareIdRef.current === shareId) {
2026-10-23T23:34:25.9117655Z  593 โ”‚       alertedUnavailableIncomingShareIdRef.current = null;
2026-10-23T23:34:25.9117714Z  594 โ”‚     }
2026-10-23T23:34:25.9117825Z  595 โ”‚     startedShareImportKeyRef.current = importKey;
2026-10-23T23:34:25.9117901Z  596 โ”‚     const draftBackup =
2026-10-23T23:34:25.9118102Z  597 โ”‚       shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
2026-10-23T23:34:25.9118248Z  598 โ”‚     shareImportDraftBackupRef.current.set(importKey, draftBackup);
2026-10-23T23:34:25.9118341Z  599 โ”‚     const importToken = Symbol(importKey);
2026-10-23T23:34:25.9118432Z  600 โ”‚     let didReserveShare = false;
2026-10-23T23:34:25.9118517Z  601 โ”‚     let didConsumeShare = false;
2026-10-23T23:34:25.9118604Z  602 โ”‚     let needsDraftRestore = false;
2026-10-23T23:34:25.9118721Z  603 โ”‚     activeShareImportTokenRef.current = importToken;
2026-10-23T23:34:25.9118812Z  604 โ”‚     setImportingShareKey(importKey);
2026-10-23T23:34:25.9118906Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9119092Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9119165Z  605 โ”‚     void (async () => {
2026-10-23T23:34:25.9119223Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9119935Z   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-23T23:34:25.9120474Z   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-23T23:34:25.9120477Z
2026-10-23T23:34:25.9120696Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9120857Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:524:5]
2026-10-23T23:34:25.9120941Z  523 โ”‚     props.initialProjectRef,
2026-10-23T23:34:25.9121019Z  524 โ”‚     props.incomingShareId,
2026-10-23T23:34:25.9121115Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9121293Z      ยท               โ•ฐโ”€โ”€ Unnecessary dependency `props.incomingShareId`
2026-10-23T23:34:25.9121378Z  525 โ”‚     props.pendingTaskId,
2026-10-23T23:34:25.9121439Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9121750Z   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-23T23:34:25.9122080Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9122086Z
2026-10-23T23:34:25.9122313Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:25.9122476Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:543:5]
2026-10-23T23:34:25.9122600Z  542 โ”‚     loadedBranchesProjectKeyRef.current = projectKey;
2026-10-23T23:34:25.9122674Z  543 โ”‚     flow.loadBranches();
2026-10-23T23:34:25.9122749Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-23T23:34:25.9122888Z      ยท       โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-23T23:34:25.9122990Z  544 โ”‚   }, [flow.loadBranches, selectedProject]);
2026-10-23T23:34:25.9123081Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9123293Z      ยท               โ•ฐโ”€โ”€ Overly precise dependency `flow.loadBranches`, use `flow` instead
2026-10-23T23:34:25.9123351Z  545 โ”‚
2026-10-23T23:34:25.9123407Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9123884Z   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-23T23:34:25.9124267Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9124272Z
2026-10-23T23:34:25.9124490Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9124652Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:766:5]
2026-10-23T23:34:25.9124724Z  765 โ”‚     flow.draftKey,
2026-10-23T23:34:25.9124804Z  766 โ”‚     hasImportedIncomingShare,
2026-10-23T23:34:25.9124904Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9125091Z      ยท                 โ•ฐโ”€โ”€ Unnecessary dependency `hasImportedIncomingShare`
2026-10-23T23:34:25.9125167Z  767 โ”‚     incomingShare,
2026-10-23T23:34:25.9125251Z  768 โ”‚     isIncomingShareInboxLoading,
2026-10-23T23:34:25.9125356Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9125615Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `isIncomingShareInboxLoading`
2026-10-23T23:34:25.9125760Z  769 โ”‚     isIncomingShareUnavailable,
2026-10-23T23:34:25.9125845Z  770 โ”‚     props.incomingShareId,
2026-10-23T23:34:25.9125951Z  771 โ”‚     props.initialProjectRef?.environmentId,
2026-10-23T23:34:25.9126047Z  772 โ”‚     props.initialProjectRef?.projectId,
2026-10-23T23:34:25.9126127Z  773 โ”‚     releaseShareReservation,
2026-10-23T23:34:25.9126193Z  774 โ”‚     reserveShare,
2026-10-23T23:34:25.9126289Z  775 โ”‚     selectedEnvironmentServerConfig,
2026-10-23T23:34:25.9126366Z  776 โ”‚     selectedProject,
2026-10-23T23:34:25.9126440Z  777 โ”‚     shareImportAttempt,
2026-10-23T23:34:25.9126530Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9126709Z      ยท              โ•ฐโ”€โ”€ Unnecessary dependency `shareImportAttempt`
2026-10-23T23:34:25.9126774Z  778 โ”‚   ]);
2026-10-23T23:34:25.9126837Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9127145Z   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-23T23:34:25.9127481Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9127484Z
2026-10-23T23:34:25.9127759Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:25.9127901Z       โ•ญโ”€[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-23T23:34:25.9127959Z  3404 โ”‚
2026-10-23T23:34:25.9128158Z  3405 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-23T23:34:25.9128240Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9128377Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T23:34:25.9128443Z  3406 โ”‚   Layer.effect(
2026-10-23T23:34:25.9128500Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9128611Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9128614Z
2026-10-23T23:34:25.9128933Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9129115Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:285:5]
2026-10-23T23:34:25.9129241Z  283 โ”‚   const [snoozeWakeTick, bumpSnoozeWakeTick] = useState(0);
2026-10-23T23:34:25.9129310Z  284 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9129388Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9129531Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9129621Z  285 โ”‚     setNow(new Date().toISOString());
2026-10-23T23:34:25.9129695Z      ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9129868Z      ยท        โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9130015Z  286 โ”‚     const id = setInterval(() => setNow(new Date().toISOString()), 60_000);
2026-10-23T23:34:25.9130068Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9130709Z   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-23T23:34:25.9131120Z   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-23T23:34:25.9131160Z
2026-10-23T23:34:25.9131386Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9131562Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:365:25]
2026-10-23T23:34:25.9131700Z  364 โ”‚     // range) the boundary string is identical and the chain would die.
2026-10-23T23:34:25.9131796Z  365 โ”‚   }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-23T23:34:25.9131905Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9132083Z      ยท                                โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-23T23:34:25.9132201Z  366 โ”‚   const listItems = ((): readonly SidebarListItem[] => {
2026-10-23T23:34:25.9132260Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9132576Z   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-23T23:34:25.9132908Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9132911Z
2026-10-23T23:34:25.9133086Z   โš  react(purity): Cannot call impure function during render
2026-10-23T23:34:25.9133263Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:356:53]
2026-10-23T23:34:25.9133355Z  355 โ”‚     if (Number.isNaN(wakeAtMs)) return;
2026-10-23T23:34:25.9133528Z  356 โ”‚     const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-23T23:34:25.9133658Z      ยท                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9133842Z      ยท                                                          โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T23:34:25.9133928Z  357 โ”‚     const id = setTimeout(() => {
2026-10-23T23:34:25.9133983Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9134535Z   help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:25.9134846Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:25.9134849Z
2026-10-23T23:34:25.9135331Z   โš  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-23T23:34:25.9135472Z       โ•ญโ”€[apps/server/src/assets/AssetAccess.test.ts:1043:32]
2026-10-23T23:34:25.9135619Z  1042 โ”‚         expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-23T23:34:25.9135820Z  1043 โ”‚         const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-23T23:34:25.9136035Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9136150Z  1044 โ”‚         expect(encoded).not.toContain(url);
2026-10-23T23:34:25.9136208Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9136211Z
2026-10-23T23:34:25.9136379Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9136549Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:111:5]
2026-10-23T23:34:25.9136608Z  107 โ”‚   );
2026-10-23T23:34:25.9136902Z  108 โ”‚   const separationProgress = useSharedValue(props.showScrollToEnd ? 1 : 0);
2026-10-23T23:34:25.9137065Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9137231Z      ยท                  โ•ฐโ”€โ”€ `separationProgress` originates here
2026-10-23T23:34:25.9137293Z  109 โ”‚
2026-10-23T23:34:25.9137363Z  110 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9137552Z  111 โ”‚     separationProgress.value = withTiming(props.showScrollToEnd ? 1 : 0, CONTROL_TIMING);
2026-10-23T23:34:25.9137638Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9137804Z      ยท              โ•ฐโ”€โ”€ `separationProgress` cannot be modified
2026-10-23T23:34:25.9137922Z  112 โ”‚   }, [props.showScrollToEnd, separationProgress]);
2026-10-23T23:34:25.9137983Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9138270Z   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-23T23:34:25.9138602Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9138605Z
2026-10-23T23:34:25.9138769Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9138942Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-23T23:34:25.9139056Z  128 โ”‚   // and repeatedly retargets the animation as it grows.
2026-10-23T23:34:25.9139180Z  129 โ”‚   const capsuleWidth = useSharedValue<number | null>(null);
2026-10-23T23:34:25.9139270Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9139421Z      ยท               โ•ฐโ”€โ”€ `capsuleWidth` originates here
2026-10-23T23:34:25.9139546Z  130 โ”‚   const measuredWidthRef = useRef<number | null>(null);
2026-10-23T23:34:25.9139677Z  131 โ”‚   const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9139789Z  132 โ”‚     const width = event.nativeEvent.layout.width;
2026-10-23T23:34:25.9139892Z  133 โ”‚     if (width === measuredWidthRef.current) {
2026-10-23T23:34:25.9139956Z  134 โ”‚       return;
2026-10-23T23:34:25.9140015Z  135 โ”‚     }
2026-10-23T23:34:25.9140128Z  136 โ”‚     const first = measuredWidthRef.current === null;
2026-10-23T23:34:25.9140221Z  137 โ”‚     measuredWidthRef.current = width;
2026-10-23T23:34:25.9140372Z  138 โ”‚     capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-23T23:34:25.9140457Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9140607Z      ยท           โ•ฐโ”€โ”€ `capsuleWidth` cannot be modified
2026-10-23T23:34:25.9140667Z  139 โ”‚   };
2026-10-23T23:34:25.9140785Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9141106Z   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-23T23:34:25.9141430Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9141433Z
2026-10-23T23:34:25.9141601Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9141778Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-23T23:34:25.9141894Z  128 โ”‚   // and repeatedly retargets the animation as it grows.
2026-10-23T23:34:25.9142017Z  129 โ”‚   const capsuleWidth = useSharedValue<number | null>(null);
2026-10-23T23:34:25.9142106Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9142260Z      ยท               โ•ฐโ”€โ”€ `capsuleWidth` originates here
2026-10-23T23:34:25.9142379Z  130 โ”‚   const measuredWidthRef = useRef<number | null>(null);
2026-10-23T23:34:25.9142504Z  131 โ”‚   const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9142618Z  132 โ”‚     const width = event.nativeEvent.layout.width;
2026-10-23T23:34:25.9142723Z  133 โ”‚     if (width === measuredWidthRef.current) {
2026-10-23T23:34:25.9142787Z  134 โ”‚       return;
2026-10-23T23:34:25.9142847Z  135 โ”‚     }
2026-10-23T23:34:25.9142962Z  136 โ”‚     const first = measuredWidthRef.current === null;
2026-10-23T23:34:25.9143057Z  137 โ”‚     measuredWidthRef.current = width;
2026-10-23T23:34:25.9143206Z  138 โ”‚     capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-23T23:34:25.9143265Z  139 โ”‚   };
2026-10-23T23:34:25.9143370Z  140 โ”‚   const hasStatus = props.status !== null;
2026-10-23T23:34:25.9143515Z  141 โ”‚   const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-23T23:34:25.9143582Z  142 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9143654Z  143 โ”‚     if (!hasStatus) {
2026-10-23T23:34:25.9143750Z  144 โ”‚       measuredWidthRef.current = null;
2026-10-23T23:34:25.9143831Z  145 โ”‚       capsuleWidth.value = null;
2026-10-23T23:34:25.9143917Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9144133Z      ยท             โ•ฐโ”€โ”€ `capsuleWidth` cannot be modified
2026-10-23T23:34:25.9144193Z  146 โ”‚     }
2026-10-23T23:34:25.9144246Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9144527Z   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-23T23:34:25.9144858Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9144864Z
2026-10-23T23:34:25.9145077Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:25.9145251Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-23T23:34:25.9145392Z  141 โ”‚   const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-23T23:34:25.9145462Z  142 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9145544Z      ยท             โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9145790Z      ยท                โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-23T23:34:25.9145859Z  143 โ”‚     if (!hasStatus) {
2026-10-23T23:34:25.9145953Z  144 โ”‚       measuredWidthRef.current = null;
2026-10-23T23:34:25.9146097Z  145 โ”‚       capsuleWidth.value = null;
2026-10-23T23:34:25.9146233Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9146383Z      ยท             โ•ฐโ”€โ”€ This modifies `capsuleWidth`
2026-10-23T23:34:25.9146444Z  146 โ”‚     }
2026-10-23T23:34:25.9146504Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9146871Z   help: This argument is a function which may reassign or mutate `capsuleWidth` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-23T23:34:25.9147194Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9147197Z
2026-10-23T23:34:25.9147407Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:25.9147587Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-23T23:34:25.9147709Z  130 โ”‚   const measuredWidthRef = useRef<number | null>(null);
2026-10-23T23:34:25.9147833Z  131 โ”‚   const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9147963Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9148220Z      ยท                                            โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-23T23:34:25.9148332Z  132 โ”‚     const width = event.nativeEvent.layout.width;
2026-10-23T23:34:25.9148436Z  133 โ”‚     if (width === measuredWidthRef.current) {
2026-10-23T23:34:25.9148499Z  134 โ”‚       return;
2026-10-23T23:34:25.9148558Z  135 โ”‚     }
2026-10-23T23:34:25.9148670Z  136 โ”‚     const first = measuredWidthRef.current === null;
2026-10-23T23:34:25.9148768Z  137 โ”‚     measuredWidthRef.current = width;
2026-10-23T23:34:25.9148920Z  138 โ”‚     capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-23T23:34:25.9149005Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9149155Z      ยท           โ•ฐโ”€โ”€ This modifies `capsuleWidth`
2026-10-23T23:34:25.9149215Z  139 โ”‚   };
2026-10-23T23:34:25.9149269Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9149637Z   help: This argument is a function which may reassign or mutate `capsuleWidth` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-23T23:34:25.9149967Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9149970Z
2026-10-23T23:34:25.9150135Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9150308Z      โ•ญโ”€[apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts:277:39]
2026-10-23T23:34:25.9150368Z  276 โ”‚
2026-10-23T23:34:25.9150564Z  277 โ”‚ โ•ญโ”€โ–ถ   return createElement(RawNativeView, {
2026-10-23T23:34:25.9150666Z  278 โ”‚ โ”‚       ...nativeProps,
2026-10-23T23:34:25.9150818Z  279 โ”‚ โ”‚       refreshEnabled: props.onPullToRefresh !== undefined,
2026-10-23T23:34:25.9150916Z  280 โ”‚ โ”‚       ref: nativeRef,
2026-10-23T23:34:25.9151052Z  281 โ”‚ โ”œโ”€โ–ถ   });
2026-10-23T23:34:25.9151304Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T23:34:25.9151423Z  282 โ”‚     }
2026-10-23T23:34:25.9151524Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9152026Z   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-23T23:34:25.9152336Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9152339Z
2026-10-23T23:34:25.9152615Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9152777Z     โ•ญโ”€[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-23T23:34:25.9152957Z  28 โ”‚   const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-23T23:34:25.9153031Z  29 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9153108Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9153245Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9153377Z  30 โ”‚     if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-23T23:34:25.9153488Z     ยท                                        โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9153693Z     ยท                                           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9153768Z  31 โ”‚   }, [key, live, snapshot]);
2026-10-23T23:34:25.9153826Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9154516Z   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-23T23:34:25.9154865Z   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-23T23:34:25.9154868Z
2026-10-23T23:34:25.9155130Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:25.9155296Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-23T23:34:25.9155360Z  289 โ”‚   return (
2026-10-23T23:34:25.9155509Z  290 โ”‚     <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-23T23:34:25.9155638Z      ยท                                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9155716Z  291 โ”‚       {props.children}
2026-10-23T23:34:25.9155775Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9156016Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:25.9156171Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:25.9156174Z
2026-10-23T23:34:25.9156434Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:25.9156607Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-23T23:34:25.9156673Z  653 โ”‚   return (
2026-10-23T23:34:25.9156811Z  654 โ”‚     <ThreadSettingsSessionContext.Provider value={value}>
2026-10-23T23:34:25.9156936Z      ยท                                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9157007Z  655 โ”‚       {props.children}
2026-10-23T23:34:25.9157127Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9157440Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:25.9157593Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:25.9157596Z
2026-10-23T23:34:25.9157850Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:25.9158035Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-23T23:34:25.9158106Z  1461 โ”‚   return (
2026-10-23T23:34:25.9158304Z  1462 โ”‚     <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-23T23:34:25.9158456Z       ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9158576Z  1463 โ”‚       <ThreadSettingsPickerStack.Navigator
2026-10-23T23:34:25.9158638Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9158880Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:25.9159036Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:25.9159041Z
2026-10-23T23:34:25.9159325Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9159514Z     โ•ญโ”€[apps/mobile/src/features/threads/thread-inspector-content-stack.tsx:60:5]
2026-10-23T23:34:25.9159577Z  58 โ”‚
2026-10-23T23:34:25.9159651Z  59 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9159727Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9159880Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9159978Z  60 โ”‚     setMountedModes((current) => {
2026-10-23T23:34:25.9160066Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9160249Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9160343Z  61 โ”‚       if (current.has(props.mode)) {
2026-10-23T23:34:25.9160401Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9161081Z   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-23T23:34:25.9161456Z   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-23T23:34:25.9161462Z
2026-10-23T23:34:25.9161717Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T23:34:25.9161865Z       โ•ญโ”€[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-23T23:34:25.9161938Z  1021 โ”‚             instanceId,
2026-10-23T23:34:25.9162093Z  1022 โ”‚             { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-23T23:34:25.9162249Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9162322Z  1023 โ”‚           ]),
2026-10-23T23:34:25.9162381Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9162676Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-23T23:34:25.9162679Z
2026-10-23T23:34:25.9163027Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:25.9163258Z       โ•ญโ”€[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-23T23:34:25.9163318Z  3754 โ”‚
2026-10-23T23:34:25.9163537Z  3755 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-23T23:34:25.9163613Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9163750Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T23:34:25.9163824Z  3756 โ”‚   Layer.effect(
2026-10-23T23:34:25.9163880Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9163993Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9163997Z
2026-10-23T23:34:25.9164205Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9164373Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-work-log.tsx:174:5]
2026-10-23T23:34:25.9164536Z  170 โ”‚   const expandedAngle = props.collapsedDirection === "right" ? 90 : 180;
2026-10-23T23:34:25.9164691Z  171 โ”‚   const rotation = useSharedValue(props.expanded ? expandedAngle : 0);
2026-10-23T23:34:25.9164778Z      ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9164929Z      ยท             โ•ฐโ”€โ”€ `rotation` originates here
2026-10-23T23:34:25.9164988Z  172 โ”‚
2026-10-23T23:34:25.9165063Z  173 โ”‚   useLayoutEffect(() => {
2026-10-23T23:34:25.9165224Z  174 โ”‚     rotation.value = withTiming(props.expanded ? expandedAngle : 0, {
2026-10-23T23:34:25.9165304Z      ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9165458Z      ยท         โ•ฐโ”€โ”€ `rotation` cannot be modified
2026-10-23T23:34:25.9165575Z  175 โ”‚       duration: THREAD_DISCLOSURE_TRANSITION_MS,
2026-10-23T23:34:25.9165637Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9165939Z   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-23T23:34:25.9166280Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9166283Z
2026-10-23T23:34:25.9166509Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:25.9166673Z       โ•ญโ”€[apps/mobile/src/features/threads/thread-work-log.tsx:1246:23]
2026-10-23T23:34:25.9166752Z  1245 โ”‚                     <Text
2026-10-23T23:34:25.9166856Z  1246 โ”‚                       key={`${index}:${line}`}
2026-10-23T23:34:25.9167057Z       ยท                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9167185Z  1247 โ”‚                       selectable
2026-10-23T23:34:25.9167256Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9167431Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:25.9167434Z
2026-10-23T23:34:25.9167715Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9167854Z     โ•ญโ”€[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-23T23:34:25.9167982Z  83 โ”‚   const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-23T23:34:25.9168057Z  84 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9168136Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9168270Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9168371Z  85 โ”‚     if (!actionState.isRunning) return;
2026-10-23T23:34:25.9168448Z  86 โ”‚     setNowMs(Date.now());
2026-10-23T23:34:25.9168524Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9168707Z     ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9168848Z  87 โ”‚     const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-23T23:34:25.9168909Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9169608Z   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-23T23:34:25.9169968Z   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-23T23:34:25.9169975Z
2026-10-23T23:34:25.9170184Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-23T23:34:25.9170360Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-23T23:34:25.9170557Z  601 โ”‚   const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-23T23:34:25.9170643Z  602 โ”‚   const gesture = Gesture.Pan()
2026-10-23T23:34:25.9170737Z      ยท                           โ”€โ”ฌโ”€
2026-10-23T23:34:25.9170894Z      ยท                            โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-23T23:34:25.9170977Z  603 โ”‚     .enabled(!props.disabled)
2026-10-23T23:34:25.9171033Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9171348Z   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-23T23:34:25.9171850Z   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-23T23:34:25.9171853Z
2026-10-23T23:34:25.9172134Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9172325Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-23T23:34:25.9172386Z  76 โ”‚
2026-10-23T23:34:25.9172454Z  77 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9172529Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9172668Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9172871Z  78 โ”‚     const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-23T23:34:25.9172989Z  79 โ”‚     setHostInput(host);
2026-10-23T23:34:25.9173074Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9173259Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9173330Z  80 โ”‚     setCodeInput(code);
2026-10-23T23:34:25.9173389Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9174082Z   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-23T23:34:25.9174446Z   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-23T23:34:25.9174451Z
2026-10-23T23:34:25.9174731Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9174917Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-23T23:34:25.9174973Z  82 โ”‚
2026-10-23T23:34:25.9175043Z  83 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9175119Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9175256Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9175354Z  84 โ”‚     if (routePairingUrl.length === 0) {
2026-10-23T23:34:25.9175420Z  85 โ”‚       return;
2026-10-23T23:34:25.9175483Z  86 โ”‚     }
2026-10-23T23:34:25.9175538Z  87 โ”‚
2026-10-23T23:34:25.9175670Z  88 โ”‚     const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-23T23:34:25.9175746Z  89 โ”‚     setHostInput(host);
2026-10-23T23:34:25.9175830Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9176107Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9176180Z  90 โ”‚     setCodeInput(code);
2026-10-23T23:34:25.9176237Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9176888Z   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-23T23:34:25.9177238Z   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-23T23:34:25.9177246Z
2026-10-23T23:34:25.9177526Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9177711Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-23T23:34:25.9177771Z  92 โ”‚
2026-10-23T23:34:25.9177841Z  93 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9177914Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9178054Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9178147Z  94 โ”‚     if (pairingConnectionError) {
2026-10-23T23:34:25.9178227Z  95 โ”‚       setIsSubmitting(false);
2026-10-23T23:34:25.9178314Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9178500Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9178665Z  96 โ”‚     }
2026-10-23T23:34:25.9178780Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9179428Z   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-23T23:34:25.9179779Z   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-23T23:34:25.9179782Z
2026-10-23T23:34:25.9180060Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9180225Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-23T23:34:25.9180288Z  55 โ”‚
2026-10-23T23:34:25.9180356Z  56 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9180435Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9180573Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9180646Z  57 โ”‚     setDecodedSize(null);
2026-10-23T23:34:25.9180731Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9180913Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9180990Z  58 โ”‚   }, [props.sourceKey]);
2026-10-23T23:34:25.9181046Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9181710Z   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-23T23:34:25.9182067Z   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-23T23:34:25.9182070Z
2026-10-23T23:34:25.9182352Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9182518Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-23T23:34:25.9182577Z  59 โ”‚
2026-10-23T23:34:25.9182644Z  60 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9182720Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9182858Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9182931Z  61 โ”‚     setFailedUri(null);
2026-10-23T23:34:25.9183016Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9183202Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9183275Z  62 โ”‚   }, [props.uri]);
2026-10-23T23:34:25.9183330Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9183989Z   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-23T23:34:25.9184389Z   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-23T23:34:25.9184392Z
2026-10-23T23:34:25.9184701Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-23T23:34:25.9184905Z    โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-23T23:34:25.9185044Z  6 โ”‚ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-23T23:34:25.9185239Z  7 โ”‚ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-23T23:34:25.9185338Z    ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9185504Z    ยท                  โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-23T23:34:25.9185564Z  8 โ”‚
2026-10-23T23:34:25.9185618Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9185728Z   help: Consider removing this import.
2026-10-23T23:34:25.9185731Z
2026-10-23T23:34:25.9185955Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9186127Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-23T23:34:25.9186203Z  57 โ”‚     setDecodedSize(null);
2026-10-23T23:34:25.9186282Z  58 โ”‚   }, [props.sourceKey]);
2026-10-23T23:34:25.9186372Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9186542Z     ยท              โ•ฐโ”€โ”€ Unnecessary dependency `props.sourceKey`
2026-10-23T23:34:25.9186597Z  59 โ”‚
2026-10-23T23:34:25.9186655Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9186979Z   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-23T23:34:25.9187324Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9187327Z
2026-10-23T23:34:25.9187551Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9187719Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-23T23:34:25.9187794Z  61 โ”‚     setFailedUri(null);
2026-10-23T23:34:25.9187865Z  62 โ”‚   }, [props.uri]);
2026-10-23T23:34:25.9187943Z     ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9188100Z     ยท           โ•ฐโ”€โ”€ Unnecessary dependency `props.uri`
2026-10-23T23:34:25.9188158Z  63 โ”‚
2026-10-23T23:34:25.9188215Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9188534Z   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-23T23:34:25.9188880Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9188886Z
2026-10-23T23:34:25.9189168Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9189333Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:400:5]
2026-10-23T23:34:25.9189394Z  398 โ”‚
2026-10-23T23:34:25.9189463Z  399 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9189544Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9189687Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9189791Z  400 โ”‚     setInspectorSelection((current) => {
2026-10-23T23:34:25.9189887Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9190076Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9190268Z  401 โ”‚       if (props.renderInspector === undefined) {
2026-10-23T23:34:25.9190368Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9191030Z   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-23T23:34:25.9191384Z   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-23T23:34:25.9191387Z
2026-10-23T23:34:25.9191623Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-23T23:34:25.9191795Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:528:24]
2026-10-23T23:34:25.9191976Z  527 โ”‚       const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-23T23:34:25.9192163Z  528 โ”‚ โ•ญโ”€โ–ถ   const GitInspector = () => (
2026-10-23T23:34:25.9192271Z  529 โ”‚ โ”‚       <GitOverviewSheet
2026-10-23T23:34:25.9192405Z  530 โ”‚ โ”‚         headerInset={inspectorHeaderInset}
2026-10-23T23:34:25.9192522Z  531 โ”‚ โ”‚         presentation="inspector"
2026-10-23T23:34:25.9192716Z  532 โ”‚ โ”‚         route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-23T23:34:25.9192800Z  533 โ”‚ โ”‚       />
2026-10-23T23:34:25.9192941Z  534 โ”‚ โ•ฐโ”€โ–ถ   );
2026-10-23T23:34:25.9193029Z  535 โ”‚       const FilesInspector = () =>
2026-10-23T23:34:25.9193091Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9193335Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T23:34:25.9193338Z
2026-10-23T23:34:25.9193569Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-23T23:34:25.9193732Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:535:26]
2026-10-23T23:34:25.9193793Z  534 โ”‚       );
2026-10-23T23:34:25.9193976Z  535 โ”‚ โ•ญโ”€โ–ถ   const FilesInspector = () =>
2026-10-23T23:34:25.9194203Z  536 โ”‚ โ”‚       selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-23T23:34:25.9194322Z  537 โ”‚ โ”‚         <ThreadFileNavigatorPane
2026-10-23T23:34:25.9194497Z  538 โ”‚ โ”‚           cwd={selectedThreadCwd}
2026-10-23T23:34:25.9194688Z  539 โ”‚ โ”‚           environmentId={selectedThread.environmentId}
2026-10-23T23:34:25.9194823Z  540 โ”‚ โ”‚           headerInset={inspectorHeaderInset}
2026-10-23T23:34:25.9194986Z  541 โ”‚ โ”‚           projectName={selectedThreadProject?.title ?? "Files"}
2026-10-23T23:34:25.9195097Z  542 โ”‚ โ”‚           selectedPath={null}
2026-10-23T23:34:25.9195238Z  543 โ”‚ โ”‚           onSelectFile={handleSelectInspectorFile}
2026-10-23T23:34:25.9195325Z  544 โ”‚ โ”‚         />
2026-10-23T23:34:25.9195476Z  545 โ”‚ โ•ฐโ”€โ–ถ     ) : null;
2026-10-23T23:34:25.9195643Z  546 โ”‚       const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-23T23:34:25.9195697Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9195940Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T23:34:25.9195946Z
2026-10-23T23:34:25.9196116Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9196285Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-23T23:34:25.9196390Z  53 โ”‚ function usePulseAnimation(pulse: boolean) {
2026-10-23T23:34:25.9196490Z  54 โ”‚   const pulseProgress = useSharedValue(0);
2026-10-23T23:34:25.9196581Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9196735Z     ยท               โ•ฐโ”€โ”€ `pulseProgress` originates here
2026-10-23T23:34:25.9196790Z  55 โ”‚
2026-10-23T23:34:25.9196861Z  56 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9196931Z  57 โ”‚     if (pulse) {
2026-10-23T23:34:25.9197033Z  58 โ”‚       pulseProgress.value = withRepeat(
2026-10-23T23:34:25.9197120Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9197276Z     ยท             โ•ฐโ”€โ”€ `pulseProgress` cannot be modified
2026-10-23T23:34:25.9197349Z  59 โ”‚         withTiming(1, {
2026-10-23T23:34:25.9197402Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9197693Z   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-23T23:34:25.9198027Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9198030Z
2026-10-23T23:34:25.9198215Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:25.9198428Z     โ•ญโ”€[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-23T23:34:25.9198486Z  52 โ”‚
2026-10-23T23:34:25.9198555Z  53 โ”‚   for (const {} of [
2026-10-23T23:34:25.9198635Z     ยท              โ”€โ”€
2026-10-23T23:34:25.9198706Z  54 โ”‚     { healthy: true },
2026-10-23T23:34:25.9198760Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9199008Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:25.9199011Z
2026-10-23T23:34:25.9199290Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9199466Z      โ•ญโ”€[apps/mobile/src/features/threads/new-task-flow-provider.tsx:444:5]
2026-10-23T23:34:25.9199531Z  434 โ”‚       : null;
2026-10-23T23:34:25.9199602Z  435 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9199681Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9199891Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9200197Z  436 โ”‚     if (
2026-10-23T23:34:25.9200283Z  437 โ”‚       props.active === false ||
2026-10-23T23:34:25.9200370Z  438 โ”‚       activeDraftKey !== null ||
2026-10-23T23:34:25.9200462Z  439 โ”‚       editingPendingTask !== null ||
2026-10-23T23:34:25.9200542Z  440 โ”‚       selectedProject === null
2026-10-23T23:34:25.9200605Z  441 โ”‚     ) {
2026-10-23T23:34:25.9200672Z  442 โ”‚       return;
2026-10-23T23:34:25.9200731Z  443 โ”‚     }
2026-10-23T23:34:25.9200804Z  444 โ”‚     setActiveDraftKey(
2026-10-23T23:34:25.9200895Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9201079Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9201157Z  445 โ”‚       createNewTaskDraft({
2026-10-23T23:34:25.9201218Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9201871Z   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-23T23:34:25.9202221Z   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-23T23:34:25.9202223Z
2026-10-23T23:34:25.9202485Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:25.9202661Z       โ•ญโ”€[apps/mobile/src/features/threads/new-task-flow-provider.tsx:1244:36]
2026-10-23T23:34:25.9202776Z  1243 โ”‚     <ActiveNewTaskContext value={activeNewTask}>
2026-10-23T23:34:25.9202985Z  1244 โ”‚       <NewTaskFlowContext.Provider value={value}>{props.children}</NewTaskFlowContext.Provider>
2026-10-23T23:34:25.9203106Z       ยท                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9203186Z  1245 โ”‚     </ActiveNewTaskContext>
2026-10-23T23:34:25.9203239Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9203516Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:25.9203664Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:25.9203667Z
2026-10-23T23:34:25.9203832Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9203996Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-23T23:34:25.9204098Z   86 โ”‚
2026-10-23T23:34:25.9204201Z   87 โ”‚   const cardCoverage = props.cardCoverage;
2026-10-23T23:34:25.9204288Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9204431Z      ยท               โ•ฐโ”€โ”€ `cardCoverage` originates here
2026-10-23T23:34:25.9204517Z   88 โ”‚   const barHeightRef = useRef(0);
2026-10-23T23:34:25.9204602Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-23T23:34:25.9204694Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-23T23:34:25.9204790Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-23T23:34:25.9204862Z   92 โ”‚     if (!cardCoverage) {
2026-10-23T23:34:25.9204927Z   93 โ”‚       return;
2026-10-23T23:34:25.9204985Z   94 โ”‚     }
2026-10-23T23:34:25.9205142Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-23T23:34:25.9205304Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-23T23:34:25.9205570Z   97 โ”‚       return;
2026-10-23T23:34:25.9205629Z   98 โ”‚     }
2026-10-23T23:34:25.9205712Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T23:34:25.9205800Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T23:34:25.9205886Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9206035Z      ยท             โ•ฐโ”€โ”€ `cardCoverage` cannot be modified
2026-10-23T23:34:25.9206099Z  101 โ”‚       return;
2026-10-23T23:34:25.9206155Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9206471Z   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-23T23:34:25.9206797Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9206806Z
2026-10-23T23:34:25.9206972Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9207140Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-23T23:34:25.9207227Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-23T23:34:25.9207320Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-23T23:34:25.9207401Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9207545Z      ยท              โ•ฐโ”€โ”€ `cardHeight` originates here
2026-10-23T23:34:25.9207645Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-23T23:34:25.9207719Z   92 โ”‚     if (!cardCoverage) {
2026-10-23T23:34:25.9207780Z   93 โ”‚       return;
2026-10-23T23:34:25.9207839Z   94 โ”‚     }
2026-10-23T23:34:25.9207999Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-23T23:34:25.9208098Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-23T23:34:25.9208162Z   97 โ”‚       return;
2026-10-23T23:34:25.9208220Z   98 โ”‚     }
2026-10-23T23:34:25.9208306Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T23:34:25.9208393Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T23:34:25.9208453Z  101 โ”‚       return;
2026-10-23T23:34:25.9208511Z  102 โ”‚     }
2026-10-23T23:34:25.9208617Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-23T23:34:25.9208718Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-23T23:34:25.9208809Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-23T23:34:25.9208869Z  106 โ”‚     });
2026-10-23T23:34:25.9208940Z  107 โ”‚   }, [cardCoverage]);
2026-10-23T23:34:25.9209028Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-23T23:34:25.9209114Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9209255Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T23:34:25.9209331Z  111 โ”‚       notifyCoverage();
2026-10-23T23:34:25.9209389Z  112 โ”‚     },
2026-10-23T23:34:25.9209459Z  113 โ”‚     [notifyCoverage],
2026-10-23T23:34:25.9209516Z  114 โ”‚   );
2026-10-23T23:34:25.9209608Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-23T23:34:25.9209691Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9209825Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T23:34:25.9209946Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-23T23:34:25.9210029Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9210174Z      ยท            โ•ฐโ”€โ”€ `cardHeight` cannot be modified
2026-10-23T23:34:25.9210247Z  119 โ”‚       notifyCoverage();
2026-10-23T23:34:25.9210302Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9210652Z   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-23T23:34:25.9211015Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9211018Z
2026-10-23T23:34:25.9211232Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:25.9211397Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-23T23:34:25.9211491Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-23T23:34:25.9211587Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-23T23:34:25.9211700Z      ยท                                      โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9211967Z      ยท                                         โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-23T23:34:25.9212043Z   92 โ”‚     if (!cardCoverage) {
2026-10-23T23:34:25.9212103Z   93 โ”‚       return;
2026-10-23T23:34:25.9212161Z   94 โ”‚     }
2026-10-23T23:34:25.9212319Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-23T23:34:25.9212411Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-23T23:34:25.9212471Z   97 โ”‚       return;
2026-10-23T23:34:25.9212529Z   98 โ”‚     }
2026-10-23T23:34:25.9212614Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T23:34:25.9212701Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T23:34:25.9212782Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9212925Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-23T23:34:25.9212994Z  101 โ”‚       return;
2026-10-23T23:34:25.9213054Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9213416Z   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-23T23:34:25.9213740Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9213743Z
2026-10-23T23:34:25.9213952Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:25.9214165Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-23T23:34:25.9214252Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-23T23:34:25.9214336Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-23T23:34:25.9214425Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9214567Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-23T23:34:25.9214630Z  101 โ”‚       return;
2026-10-23T23:34:25.9214685Z  102 โ”‚     }
2026-10-23T23:34:25.9214794Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-23T23:34:25.9214896Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-23T23:34:25.9214983Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-23T23:34:25.9215043Z  106 โ”‚     });
2026-10-23T23:34:25.9215113Z  107 โ”‚   }, [cardCoverage]);
2026-10-23T23:34:25.9215203Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-23T23:34:25.9215285Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9215399Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9215724Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-23T23:34:25.9215909Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T23:34:25.9216033Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9216393Z   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-23T23:34:25.9216714Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9216716Z
2026-10-23T23:34:25.9216925Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:25.9217088Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-23T23:34:25.9217182Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-23T23:34:25.9217272Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-23T23:34:25.9217383Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9217618Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-23T23:34:25.9217751Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T23:34:25.9217874Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-23T23:34:25.9217954Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9218092Z      ยท            โ•ฐโ”€โ”€ This modifies `cardHeight`
2026-10-23T23:34:25.9218162Z  119 โ”‚       notifyCoverage();
2026-10-23T23:34:25.9218219Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9218583Z   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-23T23:34:25.9218907Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9218910Z
2026-10-23T23:34:25.9219184Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9219331Z      โ•ญโ”€[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-23T23:34:25.9219390Z  150 โ”‚
2026-10-23T23:34:25.9219460Z  151 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9219537Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9219670Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9219764Z  152 โ”‚     if (!controlledSelectedPath) {
2026-10-23T23:34:25.9219830Z  153 โ”‚       return;
2026-10-23T23:34:25.9219886Z  154 โ”‚     }
2026-10-23T23:34:25.9219972Z  155 โ”‚     setExpandedPaths((current) => {
2026-10-23T23:34:25.9220058Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9220238Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9220368Z  156 โ”‚       const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-23T23:34:25.9220420Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9221059Z   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-23T23:34:25.9221513Z   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-23T23:34:25.9221567Z
2026-10-23T23:34:25.9221923Z   โš  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-23T23:34:25.9222076Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:50:18]
2026-10-23T23:34:25.9222246Z  49 โ”‚   for (const tool of ["sendMessage", "followupTask", "interruptAgent", "listAgents"]) {
2026-10-23T23:34:25.9222429Z  50 โ”‚     assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-23T23:34:25.9222520Z     ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9222719Z  51 โ”‚     assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-23T23:34:25.9222775Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9222778Z
2026-10-23T23:34:25.9223133Z   โš  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-23T23:34:25.9223284Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:51:18]
2026-10-23T23:34:25.9223463Z  50 โ”‚     assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-23T23:34:25.9223651Z  51 โ”‚     assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-23T23:34:25.9223740Z     ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9223798Z  52 โ”‚   }
2026-10-23T23:34:25.9223853Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9223856Z
2026-10-23T23:34:25.9224250Z   โš  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-23T23:34:25.9224404Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:55:5]
2026-10-23T23:34:25.9224473Z  54 โ”‚   assert.equal(
2026-10-23T23:34:25.9224656Z  55 โ”‚     Schema.is(CodexSchema.ServerNotification__CollabAgentToolCallStatus)("interrupted"),
2026-10-23T23:34:25.9224733Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9224792Z  56 โ”‚     true,
2026-10-23T23:34:25.9224847Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9224849Z
2026-10-23T23:34:25.9225199Z   โš  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-23T23:34:25.9225348Z     โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:59:5]
2026-10-23T23:34:25.9225473Z  58 โ”‚   assert.equal(
2026-10-23T23:34:25.9225718Z  59 โ”‚     Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentToolCallStatus)("interrupted"),
2026-10-23T23:34:25.9225796Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9225857Z  60 โ”‚     true,
2026-10-23T23:34:25.9225909Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9225911Z
2026-10-23T23:34:25.9226262Z   โš  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-23T23:34:25.9226421Z      โ•ญโ”€[packages/effect-codex-app-server/src/schema.test.ts:103:16]
2026-10-23T23:34:25.9226477Z  102 โ”‚
2026-10-23T23:34:25.9226655Z  103 โ”‚   assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse)(resumeResponse), true);
2026-10-23T23:34:25.9226744Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9226808Z  104 โ”‚ });
2026-10-23T23:34:25.9226867Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9226869Z
2026-10-23T23:34:25.9227083Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9227206Z     โ•ญโ”€[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-23T23:34:25.9227286Z  28 โ”‚     getPendingThreadOrder();
2026-10-23T23:34:25.9227371Z  29 โ”‚   }, [nowMinute, snoozeWakeTick]);
2026-10-23T23:34:25.9227501Z     ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9227707Z     ยท           โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-23T23:34:25.9227856Z     ยท           โ•ฐโ”€โ”€ Unnecessary dependency `nowMinute`
2026-10-23T23:34:25.9227925Z  30 โ”‚   return pending;
2026-10-23T23:34:25.9227977Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9228300Z   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-23T23:34:25.9228635Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9228637Z
2026-10-23T23:34:25.9228791Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9228953Z      โ•ญโ”€[apps/mobile/src/features/home/thread-swipe-actions.tsx:494:27]
2026-10-23T23:34:25.9229012Z  493 โ”‚         >
2026-10-23T23:34:25.9229096Z  494 โ”‚           {props.children(close)}
2026-10-23T23:34:25.9229193Z      ยท                           โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9229367Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9229452Z  495 โ”‚         </ReanimatedSwipeable>
2026-10-23T23:34:25.9229508Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9230007Z   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-23T23:34:25.9230316Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9230318Z
2026-10-23T23:34:25.9230482Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9230664Z     โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-23T23:34:25.9230722Z  90 โ”‚ }) {
2026-10-23T23:34:25.9230904Z  91 โ”‚   const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-23T23:34:25.9231019Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9231159Z     ยท             โ•ฐโ”€โ”€ `rotation` originates here
2026-10-23T23:34:25.9231234Z  92 โ”‚   useLayoutEffect(() => {
2026-10-23T23:34:25.9231383Z  93 โ”‚     rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-23T23:34:25.9231456Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9231596Z     ยท         โ•ฐโ”€โ”€ `rotation` cannot be modified
2026-10-23T23:34:25.9231677Z  94 โ”‚   }, [props.hidden, rotation]);
2026-10-23T23:34:25.9231732Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9232012Z   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-23T23:34:25.9232344Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9232350Z
2026-10-23T23:34:25.9232516Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9232697Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-23T23:34:25.9232799Z  266 โ”‚   const variant = props.variant ?? "plain";
2026-10-23T23:34:25.9232938Z  267 โ”‚   const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-23T23:34:25.9233030Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9233191Z      ยท                 โ•ฐโ”€โ”€ `loadingVisibility` originates here
2026-10-23T23:34:25.9233265Z  268 โ”‚   useLayoutEffect(() => {
2026-10-23T23:34:25.9233440Z  269 โ”‚     loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-23T23:34:25.9233531Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9233689Z      ยท             โ•ฐโ”€โ”€ `loadingVisibility` cannot be modified
2026-10-23T23:34:25.9233787Z  270 โ”‚   }, [loadingVisibility, props.loading]);
2026-10-23T23:34:25.9233840Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9234168Z   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-23T23:34:25.9234492Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9234495Z
2026-10-23T23:34:25.9234657Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9234873Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-23T23:34:25.9234934Z  325 โ”‚ }) {
2026-10-23T23:34:25.9235106Z  326 โ”‚   const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-23T23:34:25.9235202Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9235363Z      ยท                  โ•ฐโ”€โ”€ `recordingVisibility` originates here
2026-10-23T23:34:25.9235435Z  327 โ”‚   useLayoutEffect(() => {
2026-10-23T23:34:25.9235636Z  328 โ”‚     recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-23T23:34:25.9235731Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9235895Z      ยท              โ•ฐโ”€โ”€ `recordingVisibility` cannot be modified
2026-10-23T23:34:25.9235989Z  329 โ”‚   }, [props.phase, recordingVisibility]);
2026-10-23T23:34:25.9236045Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9236394Z   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-23T23:34:25.9236767Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9236770Z
2026-10-23T23:34:25.9236920Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9237091Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-23T23:34:25.9237260Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T23:34:25.9237393Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T23:34:25.9237524Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9237713Z      ยท                                                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9237840Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T23:34:25.9237896Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9238394Z   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-23T23:34:25.9238702Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9238704Z
2026-10-23T23:34:25.9238860Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9239031Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-23T23:34:25.9239092Z  125 โ”‚
2026-10-23T23:34:25.9239207Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:25.9239299Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9239458Z      ยท                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9239568Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:25.9239620Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9240115Z   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-23T23:34:25.9240427Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9240432Z
2026-10-23T23:34:25.9240583Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9240752Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-23T23:34:25.9240806Z  125 โ”‚
2026-10-23T23:34:25.9240920Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:25.9241013Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9241169Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9241274Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:25.9241330Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9241882Z   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-23T23:34:25.9242245Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9242248Z
2026-10-23T23:34:25.9242401Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9242567Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-23T23:34:25.9242624Z  125 โ”‚
2026-10-23T23:34:25.9242738Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:25.9242863Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9243046Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9243157Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:25.9243212Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9243719Z   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-23T23:34:25.9244073Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9244080Z
2026-10-23T23:34:25.9244229Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9244398Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-23T23:34:25.9244462Z  125 โ”‚
2026-10-23T23:34:25.9244578Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:25.9244697Z      ยท                              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9244874Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9244982Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:25.9245036Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9245525Z   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-23T23:34:25.9245906Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9245959Z
2026-10-23T23:34:25.9246118Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9246286Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-23T23:34:25.9246405Z  126 โ”‚       if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:25.9246609Z  127 โ”‚ โ•ญโ”€โ–ถ     const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:25.9246797Z  128 โ”‚ โ”‚         create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T23:34:25.9246931Z  129 โ”‚ โ”‚         onStatus: (status: RecordingStatus) => {
2026-10-23T23:34:25.9247095Z  130 โ”‚ โ”‚           sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T23:34:25.9247224Z  131 โ”‚ โ”‚             isFinished: status.isFinished,
2026-10-23T23:34:25.9247416Z  132 โ”‚ โ”‚             hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T23:34:25.9247525Z  133 โ”‚ โ”‚             error: status.error,
2026-10-23T23:34:25.9247630Z  134 โ”‚ โ”‚             url: status.url,
2026-10-23T23:34:25.9247714Z  135 โ”‚ โ”‚           });
2026-10-23T23:34:25.9247798Z  136 โ”‚ โ”‚         },
2026-10-23T23:34:25.9248006Z  137 โ”‚ โ”‚         // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T23:34:25.9248123Z  138 โ”‚ โ”‚         selectInput: (inputs) => {
2026-10-23T23:34:25.9248285Z  139 โ”‚ โ”‚           const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T23:34:25.9248447Z  140 โ”‚ โ”‚           if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T23:34:25.9248625Z  141 โ”‚ โ”‚           const known = microphoneOrder(preferences.value.microphones);
2026-10-23T23:34:25.9248772Z  142 โ”‚ โ”‚           const order = rememberMicrophones(known, inputs);
2026-10-23T23:34:25.9248878Z  143 โ”‚ โ”‚           if (order !== known) {
2026-10-23T23:34:25.9249024Z  144 โ”‚ โ”‚             registry.set(updateMobilePreferencesAtom, {
2026-10-23T23:34:25.9249146Z  145 โ”‚ โ”‚               transform: (current) => ({
2026-10-23T23:34:25.9249364Z  146 โ”‚ โ”‚                 microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T23:34:25.9249452Z  147 โ”‚ โ”‚               }),
2026-10-23T23:34:25.9249539Z  148 โ”‚ โ”‚             });
2026-10-23T23:34:25.9249628Z  149 โ”‚ โ”‚           }
2026-10-23T23:34:25.9249780Z  150 โ”‚ โ”‚           return preferredMicrophoneInput(inputs, order);
2026-10-23T23:34:25.9249860Z  151 โ”‚ โ”‚         },
2026-10-23T23:34:25.9250000Z  152 โ”‚ โ”œโ”€โ–ถ     });
2026-10-23T23:34:25.9250251Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T23:34:25.9250342Z  153 โ”‚         recorderRef.current = recorder;
2026-10-23T23:34:25.9250398Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9250887Z   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-23T23:34:25.9251258Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9251300Z
2026-10-23T23:34:25.9251456Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9251624Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-23T23:34:25.9251683Z  152 โ”‚     });
2026-10-23T23:34:25.9251771Z  153 โ”‚     recorderRef.current = recorder;
2026-10-23T23:34:25.9251891Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9252085Z      ยท          โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T23:34:25.9252206Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-23T23:34:25.9252323Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:25.9252382Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9252872Z   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-23T23:34:25.9253179Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9253181Z
2026-10-23T23:34:25.9253332Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9253498Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-23T23:34:25.9253590Z  153 โ”‚         recorderRef.current = recorder;
2026-10-23T23:34:25.9253800Z  154 โ”‚ โ•ญโ”€โ–ถ     sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:25.9253891Z  155 โ”‚ โ”‚         recorder,
2026-10-23T23:34:25.9254027Z  156 โ”‚ โ”‚         getTranscriber: getLocalVoiceTranscriber,
2026-10-23T23:34:25.9254323Z  157 โ”‚ โ”‚         requestPermission: async () => {
2026-10-23T23:34:25.9254497Z  158 โ”‚ โ”‚           const permission = await requestRecordingPermissionsAsync();
2026-10-23T23:34:25.9254702Z  159 โ”‚ โ”‚           return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T23:34:25.9254783Z  160 โ”‚ โ”‚         },
2026-10-23T23:34:25.9254934Z  161 โ”‚ โ”‚         configureRecording: configureVoiceRecordingAudio,
2026-10-23T23:34:25.9255085Z  162 โ”‚ โ”‚         releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T23:34:25.9255234Z  163 โ”‚ โ”‚         deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T23:34:25.9255349Z  164 โ”‚ โ”‚         onStateChange: (nextState) =>
2026-10-23T23:34:25.9255445Z  165 โ”‚ โ”‚           setState({
2026-10-23T23:34:25.9255552Z  166 โ”‚ โ”‚             state: nextState,
2026-10-23T23:34:25.9255700Z  167 โ”‚ โ”‚             ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T23:34:25.9255834Z  168 โ”‚ โ”‚             label: sessionRef.current?.label ?? null,
2026-10-23T23:34:25.9255920Z  169 โ”‚ โ”‚           }),
2026-10-23T23:34:25.9256626Z  170 โ”‚ โ”œโ”€โ–ถ     });
2026-10-23T23:34:25.9256950Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9257065Z  171 โ”‚       }
2026-10-23T23:34:25.9257121Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9257629Z   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-23T23:34:25.9257935Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9257938Z
2026-10-23T23:34:25.9258091Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9258256Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-23T23:34:25.9258343Z  153 โ”‚     recorderRef.current = recorder;
2026-10-23T23:34:25.9258459Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:25.9258581Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9258771Z      ยท          โ”‚        โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T23:34:25.9258894Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-23T23:34:25.9258963Z  155 โ”‚       recorder,
2026-10-23T23:34:25.9259018Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9259508Z   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-23T23:34:25.9259822Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9259828Z
2026-10-23T23:34:25.9259980Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9260147Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-23T23:34:25.9260240Z  184 โ”‚     return () => subscription.remove();
2026-10-23T23:34:25.9260308Z  185 โ”‚   }, [controller]);
2026-10-23T23:34:25.9260389Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9260542Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9260596Z  186 โ”‚
2026-10-23T23:34:25.9260651Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9261155Z   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-23T23:34:25.9261462Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9261464Z
2026-10-23T23:34:25.9261615Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9261779Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-23T23:34:25.9261872Z  184 โ”‚     return () => subscription.remove();
2026-10-23T23:34:25.9261942Z  185 โ”‚   }, [controller]);
2026-10-23T23:34:25.9262024Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9262171Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9262229Z  186 โ”‚
2026-10-23T23:34:25.9262283Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9262842Z   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-23T23:34:25.9263212Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9263218Z
2026-10-23T23:34:25.9263366Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9263533Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-23T23:34:25.9263593Z  191 โ”‚     },
2026-10-23T23:34:25.9263670Z  192 โ”‚     [controller, recorder],
2026-10-23T23:34:25.9263750Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9263905Z      ยท           โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9263968Z  193 โ”‚   );
2026-10-23T23:34:25.9264022Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9264548Z   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-23T23:34:25.9264854Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9264856Z
2026-10-23T23:34:25.9265008Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9265176Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-23T23:34:25.9265275Z  174 โ”‚   const controller = session.controller;
2026-10-23T23:34:25.9265371Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-23T23:34:25.9265484Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9265654Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9265707Z  176 โ”‚
2026-10-23T23:34:25.9265764Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9266259Z   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-23T23:34:25.9266564Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9266567Z
2026-10-23T23:34:25.9266723Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9266892Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-23T23:34:25.9266954Z  191 โ”‚     },
2026-10-23T23:34:25.9267030Z  192 โ”‚     [controller, recorder],
2026-10-23T23:34:25.9267126Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9267280Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9267340Z  193 โ”‚   );
2026-10-23T23:34:25.9267396Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9267891Z   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-23T23:34:25.9268276Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9268320Z
2026-10-23T23:34:25.9268491Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9268659Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-23T23:34:25.9268759Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-23T23:34:25.9268878Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T23:34:25.9268969Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9269134Z      ยท                         โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9269191Z  247 โ”‚
2026-10-23T23:34:25.9269247Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9269746Z   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-23T23:34:25.9270056Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9270058Z
2026-10-23T23:34:25.9270211Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9270377Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-23T23:34:25.9270473Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-23T23:34:25.9270586Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T23:34:25.9270728Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9270900Z      ยท                              โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9270958Z  247 โ”‚
2026-10-23T23:34:25.9271009Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9271503Z   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-23T23:34:25.9271813Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9271816Z
2026-10-23T23:34:25.9271971Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9272141Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-23T23:34:25.9272216Z  260 โ”‚     setOwnerFocused,
2026-10-23T23:34:25.9272282Z  261 โ”‚     session,
2026-10-23T23:34:25.9272358Z      ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9272503Z      ยท        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9272568Z  262 โ”‚     stop,
2026-10-23T23:34:25.9272624Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9273119Z   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-23T23:34:25.9273425Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9273428Z
2026-10-23T23:34:25.9273644Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9273864Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-23T23:34:25.9273925Z  250 โ”‚
2026-10-23T23:34:25.9274111Z  251 โ”‚ โ•ญโ”€โ–ถ   return {
2026-10-23T23:34:25.9274335Z  252 โ”‚ โ”‚       isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-23T23:34:25.9274421Z  253 โ”‚ โ”‚       state,
2026-10-23T23:34:25.9274517Z  254 โ”‚ โ”‚       audioLevels,
2026-10-23T23:34:25.9274617Z  255 โ”‚ โ”‚       elapsedSeconds,
2026-10-23T23:34:25.9274754Z  256 โ”‚ โ”‚       isBusy: voiceInputBlocksSubmission(state),
2026-10-23T23:34:25.9274848Z  257 โ”‚ โ”‚       ownerKey,
2026-10-23T23:34:25.9274936Z  258 โ”‚ โ”‚       label,
2026-10-23T23:34:25.9275032Z  259 โ”‚ โ”‚       focusedOwners,
2026-10-23T23:34:25.9275130Z  260 โ”‚ โ”‚       setOwnerFocused,
2026-10-23T23:34:25.9275216Z  261 โ”‚ โ”‚       session,
2026-10-23T23:34:25.9275300Z  262 โ”‚ โ”‚       stop,
2026-10-23T23:34:25.9275386Z  263 โ”‚ โ”‚       cancel,
2026-10-23T23:34:25.9275520Z  264 โ”‚ โ”œโ”€โ–ถ   };
2026-10-23T23:34:25.9275738Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9275801Z  265 โ”‚     }
2026-10-23T23:34:25.9275859Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9276358Z   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-23T23:34:25.9276670Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9276673Z
2026-10-23T23:34:25.9276845Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9277015Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T23:34:25.9277188Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T23:34:25.9277318Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T23:34:25.9277403Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9277608Z      ยท              โ•ฐโ”€โ”€ `audioLevels` originates here
2026-10-23T23:34:25.9277782Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T23:34:25.9277937Z  124 โ”‚   const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-23T23:34:25.9277996Z  125 โ”‚
2026-10-23T23:34:25.9278113Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:25.9278221Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:25.9278368Z  128 โ”‚       create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T23:34:25.9278475Z  129 โ”‚       onStatus: (status: RecordingStatus) => {
2026-10-23T23:34:25.9278609Z  130 โ”‚         sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T23:34:25.9278704Z  131 โ”‚           isFinished: status.isFinished,
2026-10-23T23:34:25.9278864Z  132 โ”‚           hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T23:34:25.9278948Z  133 โ”‚           error: status.error,
2026-10-23T23:34:25.9279024Z  134 โ”‚           url: status.url,
2026-10-23T23:34:25.9279091Z  135 โ”‚         });
2026-10-23T23:34:25.9279152Z  136 โ”‚       },
2026-10-23T23:34:25.9279329Z  137 โ”‚       // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T23:34:25.9279415Z  138 โ”‚       selectInput: (inputs) => {
2026-10-23T23:34:25.9279548Z  139 โ”‚         const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T23:34:25.9279673Z  140 โ”‚         if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T23:34:25.9279818Z  141 โ”‚         const known = microphoneOrder(preferences.value.microphones);
2026-10-23T23:34:25.9279936Z  142 โ”‚         const order = rememberMicrophones(known, inputs);
2026-10-23T23:34:25.9280026Z  143 โ”‚         if (order !== known) {
2026-10-23T23:34:25.9280141Z  144 โ”‚           registry.set(updateMobilePreferencesAtom, {
2026-10-23T23:34:25.9280230Z  145 โ”‚             transform: (current) => ({
2026-10-23T23:34:25.9280414Z  146 โ”‚               microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T23:34:25.9280482Z  147 โ”‚             }),
2026-10-23T23:34:25.9280545Z  148 โ”‚           });
2026-10-23T23:34:25.9280607Z  149 โ”‚         }
2026-10-23T23:34:25.9280723Z  150 โ”‚         return preferredMicrophoneInput(inputs, order);
2026-10-23T23:34:25.9280783Z  151 โ”‚       },
2026-10-23T23:34:25.9280843Z  152 โ”‚     });
2026-10-23T23:34:25.9280930Z  153 โ”‚     recorderRef.current = recorder;
2026-10-23T23:34:25.9281038Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:25.9281102Z  155 โ”‚       recorder,
2026-10-23T23:34:25.9281215Z  156 โ”‚       getTranscriber: getLocalVoiceTranscriber,
2026-10-23T23:34:25.9281308Z  157 โ”‚       requestPermission: async () => {
2026-10-23T23:34:25.9281449Z  158 โ”‚         const permission = await requestRecordingPermissionsAsync();
2026-10-23T23:34:25.9281613Z  159 โ”‚         return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T23:34:25.9281673Z  160 โ”‚       },
2026-10-23T23:34:25.9284813Z  161 โ”‚       configureRecording: configureVoiceRecordingAudio,
2026-10-23T23:34:25.9284966Z  162 โ”‚       releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T23:34:25.9285079Z  163 โ”‚       deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T23:34:25.9285166Z  164 โ”‚       onStateChange: (nextState) =>
2026-10-23T23:34:25.9285237Z  165 โ”‚         setState({
2026-10-23T23:34:25.9285312Z  166 โ”‚           state: nextState,
2026-10-23T23:34:25.9285426Z  167 โ”‚           ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T23:34:25.9285623Z  168 โ”‚           label: sessionRef.current?.label ?? null,
2026-10-23T23:34:25.9285750Z  169 โ”‚         }),
2026-10-23T23:34:25.9285812Z  170 โ”‚     });
2026-10-23T23:34:25.9285867Z  171 โ”‚   }
2026-10-23T23:34:25.9285922Z  172 โ”‚
2026-10-23T23:34:25.9286013Z  173 โ”‚   const session = sessionRef.current;
2026-10-23T23:34:25.9286106Z  174 โ”‚   const controller = session.controller;
2026-10-23T23:34:25.9286197Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-23T23:34:25.9286253Z  176 โ”‚
2026-10-23T23:34:25.9286324Z  177 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9286484Z  178 โ”‚     const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-23T23:34:25.9286634Z  179 โ”‚       // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-23T23:34:25.9286782Z  180 โ”‚       // real background state cancels preparation; recorder status handles
2026-10-23T23:34:25.9286899Z  181 โ”‚       // calls and route interruptions during capture.
2026-10-23T23:34:25.9287042Z  182 โ”‚       if (nextState === "background") controller.appMovedToBackground();
2026-10-23T23:34:25.9287103Z  183 โ”‚     });
2026-10-23T23:34:25.9287194Z  184 โ”‚     return () => subscription.remove();
2026-10-23T23:34:25.9287263Z  185 โ”‚   }, [controller]);
2026-10-23T23:34:25.9287316Z  186 โ”‚
2026-10-23T23:34:25.9287382Z  187 โ”‚   useEffect(
2026-10-23T23:34:25.9287447Z  188 โ”‚     () => () => {
2026-10-23T23:34:25.9287525Z  189 โ”‚       controller.dispose();
2026-10-23T23:34:25.9287596Z  190 โ”‚       recorder.release();
2026-10-23T23:34:25.9287656Z  191 โ”‚     },
2026-10-23T23:34:25.9287730Z  192 โ”‚     [controller, recorder],
2026-10-23T23:34:25.9287788Z  193 โ”‚   );
2026-10-23T23:34:25.9287841Z  194 โ”‚
2026-10-23T23:34:25.9287910Z  195 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9288016Z  196 โ”‚     if (state.phase !== "recording") return;
2026-10-23T23:34:25.9288070Z  197 โ”‚
2026-10-23T23:34:25.9288228Z  198 โ”‚     const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-23T23:34:25.9288341Z  199 โ”‚     const activation = activateKeepAwakeAsync(tag);
2026-10-23T23:34:25.9288428Z  200 โ”‚     void activation.catch(() => {});
2026-10-23T23:34:25.9288493Z  201 โ”‚     return () => {
2026-10-23T23:34:25.9288652Z  202 โ”‚       // Release after activation settles, even if the recording ends immediately.
2026-10-23T23:34:25.9288799Z  203 โ”‚       void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-23T23:34:25.9288859Z  204 โ”‚     };
2026-10-23T23:34:25.9288941Z  205 โ”‚   }, [keepAwakeId, state.phase]);
2026-10-23T23:34:25.9288996Z  206 โ”‚
2026-10-23T23:34:25.9289064Z  207 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9289213Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T23:34:25.9289269Z  209 โ”‚
2026-10-23T23:34:25.9289398Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T23:34:25.9289563Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T23:34:25.9289672Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-23T23:34:25.9289754Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9289909Z      ยท            โ•ฐโ”€โ”€ `audioLevels` cannot be modified
2026-10-23T23:34:25.9289968Z  213 โ”‚     }
2026-10-23T23:34:25.9290023Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9290307Z   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-23T23:34:25.9290851Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9290888Z
2026-10-23T23:34:25.9291108Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:25.9291279Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T23:34:25.9291335Z  206 โ”‚
2026-10-23T23:34:25.9291400Z  207 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9291484Z      ยท             โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9291718Z      ยท                โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-23T23:34:25.9291865Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T23:34:25.9291919Z  209 โ”‚
2026-10-23T23:34:25.9292055Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T23:34:25.9292225Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T23:34:25.9292334Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-23T23:34:25.9292414Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9292557Z      ยท            โ•ฐโ”€โ”€ This modifies `audioLevels`
2026-10-23T23:34:25.9292616Z  213 โ”‚     }
2026-10-23T23:34:25.9292668Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9293031Z   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-23T23:34:25.9293355Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9293358Z
2026-10-23T23:34:25.9293576Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9293736Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-23T23:34:25.9293836Z  256 โ”‚     return () => cancelAnimationFrame(frame);
2026-10-23T23:34:25.9293922Z  257 โ”‚   }, [props.path, targetIndex]);
2026-10-23T23:34:25.9294002Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9294198Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `props.path`
2026-10-23T23:34:25.9294251Z  258 โ”‚
2026-10-23T23:34:25.9294306Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9294624Z   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-23T23:34:25.9294961Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9294966Z
2026-10-23T23:34:25.9295172Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:25.9295330Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-23T23:34:25.9295409Z  292 โ”‚                     <SourceText
2026-10-23T23:34:25.9295515Z  293 โ”‚                       key={`${index}:${tokenIndex}`}
2026-10-23T23:34:25.9295642Z      ยท                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9295715Z  294 โ”‚                       style={{
2026-10-23T23:34:25.9295770Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9295926Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:25.9296028Z
2026-10-23T23:34:25.9296355Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:25.9296556Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-23T23:34:25.9296625Z  308 โ”‚             return (
2026-10-23T23:34:25.9296714Z  309 โ”‚               <SourceText key={index}>
2026-10-23T23:34:25.9296821Z      ยท                           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9296891Z  310 โ”‚                 {body}
2026-10-23T23:34:25.9296949Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9297101Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:25.9297104Z
2026-10-23T23:34:25.9297271Z   โš  react(immutability): This value cannot be modified
2026-10-23T23:34:25.9297447Z     โ•ญโ”€[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-23T23:34:25.9297562Z  65 โ”‚   const [expanded, setExpanded] = useState(false);
2026-10-23T23:34:25.9297654Z  66 โ”‚   const progress = useSharedValue(0);
2026-10-23T23:34:25.9297734Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9297871Z     ยท             โ•ฐโ”€โ”€ `progress` originates here
2026-10-23T23:34:25.9297939Z  67 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9298073Z  68 โ”‚     progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-23T23:34:25.9298148Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9298286Z     ยท         โ•ฐโ”€โ”€ `progress` cannot be modified
2026-10-23T23:34:25.9298362Z  69 โ”‚   }, [expanded, progress]);
2026-10-23T23:34:25.9298416Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9298697Z   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-23T23:34:25.9299027Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:25.9299032Z
2026-10-23T23:34:25.9299273Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-23T23:34:25.9299427Z      โ•ญโ”€[packages/client-runtime/src/operations/projects.ts:228:51]
2026-10-23T23:34:25.9299492Z  227 โ”‚ ): string {
2026-10-23T23:34:25.9299654Z  228 โ”‚   const folderName = workspaceRoot.split(/[\\/]/).filter(Boolean).at(-1) ?? "";
2026-10-23T23:34:25.9299775Z      ยท                                                   โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9299914Z  229 โ”‚   return target.owner ? `${target.owner}/${folderName}` : folderName;
2026-10-23T23:34:25.9299970Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9300155Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-23T23:34:25.9300163Z
2026-10-23T23:34:25.9300365Z   โš  eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-23T23:34:25.9300507Z    โ•ญโ”€[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-23T23:34:25.9300632Z  3 โ”‚ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-23T23:34:25.9300719Z  4 โ”‚ import * as Arr from "effect/Array";
2026-10-23T23:34:25.9300793Z    ยท             โ”€โ”ฌโ”€
2026-10-23T23:34:25.9300924Z    ยท              โ•ฐโ”€โ”€ 'Arr' is imported here
2026-10-23T23:34:25.9301012Z  5 โ”‚ import * as Order from "effect/Order";
2026-10-23T23:34:25.9301067Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9301169Z   help: Consider removing this import.
2026-10-23T23:34:25.9301172Z
2026-10-23T23:34:25.9301439Z   โš  eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-23T23:34:25.9301634Z    โ•ญโ”€[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-23T23:34:25.9301722Z  4 โ”‚ import * as Arr from "effect/Array";
2026-10-23T23:34:25.9301806Z  5 โ”‚ import * as Order from "effect/Order";
2026-10-23T23:34:25.9301886Z    ยท             โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9302026Z    ยท               โ•ฐโ”€โ”€ 'Order' is imported here
2026-10-23T23:34:25.9302084Z  6 โ”‚
2026-10-23T23:34:25.9302137Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9302241Z   help: Consider removing this import.
2026-10-23T23:34:25.9302244Z
2026-10-23T23:34:25.9302457Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9302618Z       โ•ญโ”€[apps/mobile/src/state/use-thread-outbox-drain.ts:1315:5]
2026-10-23T23:34:25.9302705Z  1314 โ”‚     queuedMessagesByThreadKey,
2026-10-23T23:34:25.9302772Z  1315 โ”‚     retryTick,
2026-10-23T23:34:25.9302852Z       ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9303002Z       ยท         โ•ฐโ”€โ”€ Unnecessary dependency `retryTick`
2026-10-23T23:34:25.9303076Z  1316 โ”‚     restoreQueuedMessage,
2026-10-23T23:34:25.9303133Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9303449Z   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-23T23:34:25.9303784Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9303786Z
2026-10-23T23:34:25.9304062Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T23:34:25.9304210Z     โ•ญโ”€[apps/mobile/src/state/use-model-option-memory.ts:21:7]
2026-10-23T23:34:25.9304280Z  20 โ”‚     [instanceId]: {
2026-10-23T23:34:25.9304368Z  21 โ”‚       ...(state[instanceId] ?? {}),
2026-10-23T23:34:25.9304474Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9304546Z  22 โ”‚       [model]: options,
2026-10-23T23:34:25.9304602Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9304887Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-23T23:34:25.9304890Z
2026-10-23T23:34:25.9305397Z   โš  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-23T23:34:25.9305541Z      โ•ญโ”€[packages/client-runtime/src/rpc/session.test.ts:226:3]
2026-10-23T23:34:25.9305601Z  225 โ”‚     ) {
2026-10-23T23:34:25.9305821Z  226 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T23:34:25.9305940Z  227 โ”‚ โ”‚       const socket = sockets[index];
2026-10-23T23:34:25.9306032Z  228 โ”‚ โ”‚       if (socket) {
2026-10-23T23:34:25.9306131Z  229 โ”‚ โ”‚         return socket;
2026-10-23T23:34:25.9306210Z  230 โ”‚ โ”‚       }
2026-10-23T23:34:25.9306320Z  231 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T23:34:25.9306451Z  232 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T23:34:25.9306715Z  233 โ”‚       return yield* Effect.die(new Error("Expected the RPC protocol to create a websocket."));
2026-10-23T23:34:25.9306812Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9306814Z
2026-10-23T23:34:25.9307312Z   โš  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-23T23:34:25.9307456Z      โ•ญโ”€[packages/client-runtime/src/rpc/session.test.ts:240:3]
2026-10-23T23:34:25.9307514Z  239 โ”‚     ) {
2026-10-23T23:34:25.9307729Z  240 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T23:34:25.9307959Z  241 โ”‚ โ”‚       const request = socket.sent.map((message) => decodeJson(message)).filter(isRpcRequest)[index];
2026-10-23T23:34:25.9308063Z  242 โ”‚ โ”‚       if (request) {
2026-10-23T23:34:25.9308165Z  243 โ”‚ โ”‚         return request;
2026-10-23T23:34:25.9308244Z  244 โ”‚ โ”‚       }
2026-10-23T23:34:25.9308352Z  245 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T23:34:25.9308486Z  246 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T23:34:25.9308662Z  247 โ”‚       return yield* Effect.die(new Error("Expected the RPC protocol to send a request."));
2026-10-23T23:34:25.9308718Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9308720Z
2026-10-23T23:34:25.9309209Z   โš  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-23T23:34:25.9309355Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:131:9]
2026-10-23T23:34:25.9309421Z  130 โ”‚           ) {
2026-10-23T23:34:25.9309642Z  131 โ”‚ โ•ญโ”€โ–ถ         for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T23:34:25.9309774Z  132 โ”‚ โ”‚             if (subscriptions.length >= count) {
2026-10-23T23:34:25.9309871Z  133 โ”‚ โ”‚               return;
2026-10-23T23:34:25.9309957Z  134 โ”‚ โ”‚             }
2026-10-23T23:34:25.9310071Z  135 โ”‚ โ”‚             yield* Effect.yieldNow;
2026-10-23T23:34:25.9310213Z  136 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-23T23:34:25.9310389Z  137 โ”‚             return yield* Effect.die(new Error(`Expected ${count} durable subscriptions.`));
2026-10-23T23:34:25.9310442Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9310448Z
2026-10-23T23:34:25.9310942Z   โš  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-23T23:34:25.9311086Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:252:7]
2026-10-23T23:34:25.9311259Z  251 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(firstClient)));
2026-10-23T23:34:25.9311532Z  252 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 1; attempt += 1) {
2026-10-23T23:34:25.9311643Z  253 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T23:34:25.9311782Z  254 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T23:34:25.9311973Z  255 โ”‚           yield* SubscriptionRef.set(activeSession, Option.none());
2026-10-23T23:34:25.9312070Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9312073Z
2026-10-23T23:34:25.9312563Z   โš  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-23T23:34:25.9312698Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:258:7]
2026-10-23T23:34:25.9312757Z  257 โ”‚
2026-10-23T23:34:25.9313023Z  258 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-23T23:34:25.9313134Z  259 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T23:34:25.9313270Z  260 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T23:34:25.9313390Z  261 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-23T23:34:25.9313449Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9313451Z
2026-10-23T23:34:25.9313941Z   โš  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-23T23:34:25.9314114Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:322:7]
2026-10-23T23:34:25.9314179Z  321 โ”‚           );
2026-10-23T23:34:25.9314451Z  322 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && observedFailures.length < 1; attempt += 1) {
2026-10-23T23:34:25.9314560Z  323 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T23:34:25.9314702Z  324 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T23:34:25.9314760Z  325 โ”‚
2026-10-23T23:34:25.9314816Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9314818Z
2026-10-23T23:34:25.9315304Z   โš  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-23T23:34:25.9315441Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:330:7]
2026-10-23T23:34:25.9315613Z  329 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(secondClient)));
2026-10-23T23:34:25.9315879Z  330 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-23T23:34:25.9315989Z  331 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T23:34:25.9316193Z  332 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T23:34:25.9316336Z  333 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-23T23:34:25.9316393Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9316396Z
2026-10-23T23:34:25.9316673Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9316820Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2121:5]
2026-10-23T23:34:25.9316880Z  2119 โ”‚   );
2026-10-23T23:34:25.9316950Z  2120 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9317032Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9317172Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9317249Z  2121 โ”‚     setExpandedVideo(null);
2026-10-23T23:34:25.9317344Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9317533Z       ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9317613Z  2122 โ”‚     setExpandedFile(null);
2026-10-23T23:34:25.9317666Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9318339Z   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-23T23:34:25.9318701Z   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-23T23:34:25.9318704Z
2026-10-23T23:34:25.9318962Z   โš  eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-23T23:34:25.9319105Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:62:10]
2026-10-23T23:34:25.9319249Z  61 โ”‚ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-23T23:34:25.9319395Z  62 โ”‚ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-23T23:34:25.9319501Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9319679Z     ยท                     โ•ฐโ”€โ”€ 'isMarkdownFileLinkLabel' is imported here
2026-10-23T23:34:25.9319846Z  63 โ”‚ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-23T23:34:25.9319900Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9320005Z   help: Consider removing this import.
2026-10-23T23:34:25.9320008Z
2026-10-23T23:34:25.9320237Z   โš  eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-23T23:34:25.9320380Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:88:3]
2026-10-23T23:34:25.9320439Z  87 โ”‚ import {
2026-10-23T23:34:25.9320509Z  88 โ”‚   createContext,
2026-10-23T23:34:25.9320590Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9320735Z     ยท         โ•ฐโ”€โ”€ 'createContext' is imported here
2026-10-23T23:34:25.9320792Z  89 โ”‚   memo,
2026-10-23T23:34:25.9320848Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9320952Z   help: Consider removing this import.
2026-10-23T23:34:25.9320955Z
2026-10-23T23:34:25.9321183Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-23T23:34:25.9321321Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:104:3]
2026-10-23T23:34:25.9321445Z  103 โ”‚ import {
2026-10-23T23:34:25.9321576Z  104 โ”‚   ActivityIndicator,
2026-10-23T23:34:25.9321674Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9321827Z      ยท           โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-23T23:34:25.9321892Z  105 โ”‚   Image,
2026-10-23T23:34:25.9321948Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9322051Z   help: Consider removing this import.
2026-10-23T23:34:25.9322054Z
2026-10-23T23:34:25.9322265Z   โš  eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-23T23:34:25.9322413Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:111:3]
2026-10-23T23:34:25.9322481Z  110 โ”‚   Pressable,
2026-10-23T23:34:25.9322549Z  111 โ”‚   ScrollView,
2026-10-23T23:34:25.9322625Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9322773Z      ยท        โ•ฐโ”€โ”€ 'ScrollView' is imported here
2026-10-23T23:34:25.9322843Z  112 โ”‚   StyleSheet,
2026-10-23T23:34:25.9322902Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9323001Z   help: Consider removing this import.
2026-10-23T23:34:25.9323004Z
2026-10-23T23:34:25.9323216Z   โš  eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-23T23:34:25.9323360Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:113:11]
2026-10-23T23:34:25.9323425Z  112 โ”‚   StyleSheet,
2026-10-23T23:34:25.9323494Z  113 โ”‚   Text as NativeText,
2026-10-23T23:34:25.9323580Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9323728Z      ยท                โ•ฐโ”€โ”€ 'NativeText' is imported here
2026-10-23T23:34:25.9323798Z  114 โ”‚   type ColorValue,
2026-10-23T23:34:25.9323853Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9323962Z   help: Consider removing this import.
2026-10-23T23:34:25.9323967Z
2026-10-23T23:34:25.9324235Z   โš  eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-23T23:34:25.9324378Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:136:10]
2026-10-23T23:34:25.9324520Z  135 โ”‚ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-23T23:34:25.9324656Z  136 โ”‚ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-23T23:34:25.9324752Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9324919Z      ยท                   โ•ฐโ”€โ”€ 'tryOpenExternalUrl' is imported here
2026-10-23T23:34:25.9325079Z  137 โ”‚ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-23T23:34:25.9325141Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9325251Z   help: Consider removing this import.
2026-10-23T23:34:25.9325259Z
2026-10-23T23:34:25.9325493Z   โš  eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-23T23:34:25.9325632Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:139:10]
2026-10-23T23:34:25.9325776Z  138 โ”‚ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-23T23:34:25.9325909Z  139 โ”‚ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-23T23:34:25.9326009Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9326172Z      ยท                   โ•ฐโ”€โ”€ 'faviconUrlForOrigin' is imported here
2026-10-23T23:34:25.9326237Z  140 โ”‚ import {
2026-10-23T23:34:25.9326291Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9326394Z   help: Consider removing this import.
2026-10-23T23:34:25.9326479Z
2026-10-23T23:34:25.9326758Z   โš  eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-23T23:34:25.9326899Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:153:10]
2026-10-23T23:34:25.9327068Z  152 โ”‚ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-23T23:34:25.9327237Z  153 โ”‚ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-23T23:34:25.9327354Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9327527Z      ยท                  โ•ฐโ”€โ”€ 'MediaVideoPlayer' is imported here
2026-10-23T23:34:25.9327677Z  154 โ”‚ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-23T23:34:25.9327735Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9327846Z   help: Consider removing this import.
2026-10-23T23:34:25.9327849Z
2026-10-23T23:34:25.9328136Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-23T23:34:25.9328281Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:157:3]
2026-10-23T23:34:25.9328376Z  156 โ”‚   attachmentVideoPreviewSource,
2026-10-23T23:34:25.9328455Z  157 โ”‚   mediaVideoPreviewUri,
2026-10-23T23:34:25.9328544Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9328705Z      ยท             โ•ฐโ”€โ”€ 'mediaVideoPreviewUri' is imported here
2026-10-23T23:34:25.9328783Z  158 โ”‚   mediaVideoThumbnailKey,
2026-10-23T23:34:25.9328838Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9328936Z   help: Consider removing this import.
2026-10-23T23:34:25.9328939Z
2026-10-23T23:34:25.9329182Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-23T23:34:25.9329326Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:158:3]
2026-10-23T23:34:25.9329401Z  157 โ”‚   mediaVideoPreviewUri,
2026-10-23T23:34:25.9329474Z  158 โ”‚   mediaVideoThumbnailKey,
2026-10-23T23:34:25.9329568Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9329733Z      ยท              โ•ฐโ”€โ”€ 'mediaVideoThumbnailKey' is imported here
2026-10-23T23:34:25.9329819Z  159 โ”‚   type MediaVideoPreviewSource,
2026-10-23T23:34:25.9329870Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9329972Z   help: Consider removing this import.
2026-10-23T23:34:25.9329975Z
2026-10-23T23:34:25.9330201Z   โš  eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-23T23:34:25.9330339Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:159:8]
2026-10-23T23:34:25.9330418Z  158 โ”‚   mediaVideoThumbnailKey,
2026-10-23T23:34:25.9330506Z  159 โ”‚   type MediaVideoPreviewSource,
2026-10-23T23:34:25.9330607Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9330780Z      ยท                   โ•ฐโ”€โ”€ 'MediaVideoPreviewSource' is imported here
2026-10-23T23:34:25.9330870Z  160 โ”‚ } from "../../lib/videoPreviewSource";
2026-10-23T23:34:25.9330925Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9331025Z   help: Consider removing this import.
2026-10-23T23:34:25.9331027Z
2026-10-23T23:34:25.9331237Z   โš  eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-23T23:34:25.9331376Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:167:15]
2026-10-23T23:34:25.9331565Z  166 โ”‚ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-23T23:34:25.9331786Z  167 โ”‚ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-23T23:34:25.9331956Z      ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9332121Z      ยท                      โ•ฐโ”€โ”€ 'ReviewDiffTheme' is imported here
2026-10-23T23:34:25.9332183Z  168 โ”‚ import {
2026-10-23T23:34:25.9332238Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9332338Z   help: Consider removing this import.
2026-10-23T23:34:25.9332340Z
2026-10-23T23:34:25.9332587Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-23T23:34:25.9332740Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:182:3]
2026-10-23T23:34:25.9332812Z  181 โ”‚ import {
2026-10-23T23:34:25.9332895Z  182 โ”‚   resolveMarkdownFontSizes,
2026-10-23T23:34:25.9333004Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9333179Z      ยท               โ•ฐโ”€โ”€ 'resolveMarkdownFontSizes' is imported here
2026-10-23T23:34:25.9333272Z  183 โ”‚   resolveNativeMarkdownTypography,
2026-10-23T23:34:25.9333326Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9333425Z   help: Consider removing this import.
2026-10-23T23:34:25.9333427Z
2026-10-23T23:34:25.9333668Z   โš  eslint(no-unused-vars): Identifier 'markdownLinkIconSource' is imported but never used.
2026-10-23T23:34:25.9333810Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:187:10]
2026-10-23T23:34:25.9333953Z  186 โ”‚ import { PierreEntryIcon } from "../../components/PierreEntryIcon";
2026-10-23T23:34:25.9334165Z  187 โ”‚ import { markdownLinkIconSource } from "../../lib/markdownLinkIcons";
2026-10-23T23:34:25.9334264Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9334445Z      ยท                     โ•ฐโ”€โ”€ 'markdownLinkIconSource' is imported here
2026-10-23T23:34:25.9334511Z  188 โ”‚ import {
2026-10-23T23:34:25.9334566Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9334666Z   help: Consider removing this import.
2026-10-23T23:34:25.9334669Z
2026-10-23T23:34:25.9334951Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-23T23:34:25.9335093Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:190:3]
2026-10-23T23:34:25.9335178Z  189 โ”‚   normalizeNativeMarkdownUrl,
2026-10-23T23:34:25.9335278Z  190 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-23T23:34:25.9335398Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9335676Z      ยท                     โ•ฐโ”€โ”€ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-23T23:34:25.9335811Z  191 โ”‚   resolveMarkdownLinkIcon,
2026-10-23T23:34:25.9335864Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9336056Z   help: Consider removing this import.
2026-10-23T23:34:25.9336060Z
2026-10-23T23:34:25.9336338Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownLinkIcon' is imported but never used.
2026-10-23T23:34:25.9336479Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:191:3]
2026-10-23T23:34:25.9336587Z  190 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-23T23:34:25.9336680Z  191 โ”‚   resolveMarkdownLinkIcon,
2026-10-23T23:34:25.9336787Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9336959Z      ยท              โ•ฐโ”€โ”€ 'resolveMarkdownLinkIcon' is imported here
2026-10-23T23:34:25.9337048Z  192 โ”‚   resolveMarkdownLinkPresentation,
2026-10-23T23:34:25.9337110Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9337212Z   help: Consider removing this import.
2026-10-23T23:34:25.9337215Z
2026-10-23T23:34:25.9337456Z   โš  eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-23T23:34:25.9337594Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:230:10]
2026-10-23T23:34:25.9337702Z  229 โ”‚ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-23T23:34:25.9337857Z  230 โ”‚ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-23T23:34:25.9337963Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9338138Z      ยท                      โ•ฐโ”€โ”€ 'useMarkdownCodeHighlight' is imported here
2026-10-23T23:34:25.9338200Z  231 โ”‚ import {
2026-10-23T23:34:25.9338255Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9338360Z   help: Consider removing this import.
2026-10-23T23:34:25.9338366Z
2026-10-23T23:34:25.9338586Z   โš  eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-23T23:34:25.9338724Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:234:3]
2026-10-23T23:34:25.9338792Z  233 โ”‚   useAssetUrl,
2026-10-23T23:34:25.9338865Z  234 โ”‚   useAssetUrlState,
2026-10-23T23:34:25.9338950Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9339102Z      ยท           โ•ฐโ”€โ”€ 'useAssetUrlState' is imported here
2026-10-23T23:34:25.9339176Z  235 โ”‚   useRefreshAssetUrl,
2026-10-23T23:34:25.9339230Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9339328Z   help: Consider removing this import.
2026-10-23T23:34:25.9339331Z
2026-10-23T23:34:25.9339553Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9339702Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2123:7]
2026-10-23T23:34:25.9339783Z  2122 โ”‚     setExpandedFile(null);
2026-10-23T23:34:25.9339951Z  2123 โ”‚   }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-23T23:34:25.9340188Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9340505Z       ยท                โ”‚                  โ”‚                       โ•ฐโ”€โ”€ Unnecessary dependency `props.contentPresentation.kind`
2026-10-23T23:34:25.9340718Z       ยท                โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `props.threadId`
2026-10-23T23:34:25.9341027Z       ยท                โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-23T23:34:25.9341290Z  2124 โ”‚   const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-23T23:34:25.9341355Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9341679Z   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-23T23:34:25.9342013Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9342016Z
2026-10-23T23:34:25.9342229Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9342372Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2590:7]
2026-10-23T23:34:25.9342481Z  2589 โ”‚     reportHeaderMaterialVisibility(false);
2026-10-23T23:34:25.9342606Z  2590 โ”‚   }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-23T23:34:25.9342693Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9342850Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `feedThreadKey`
2026-10-23T23:34:25.9342911Z  2591 โ”‚
2026-10-23T23:34:25.9342966Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9343279Z   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-23T23:34:25.9343607Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9343609Z
2026-10-23T23:34:25.9343826Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9343972Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2606:7]
2026-10-23T23:34:25.9344072Z  2605 โ”‚     }
2026-10-23T23:34:25.9344208Z  2606 โ”‚   }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-23T23:34:25.9344293Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9344450Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `listMountKey`
2026-10-23T23:34:25.9344507Z  2607 โ”‚
2026-10-23T23:34:25.9344559Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9344875Z   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-23T23:34:25.9345216Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9345221Z
2026-10-23T23:34:25.9345434Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9345577Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2763:7]
2026-10-23T23:34:25.9345635Z  2762 โ”‚     }
2026-10-23T23:34:25.9345829Z  2763 โ”‚   }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-23T23:34:25.9346047Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9346322Z       ยท              โ”‚                  โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkRows`
2026-10-23T23:34:25.9346608Z       ยท              โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkGroups`
2026-10-23T23:34:25.9346811Z       ยท              โ•ฐโ”€โ”€ Unnecessary dependency `expandedTurnIds`
2026-10-23T23:34:25.9346869Z  2764 โ”‚
2026-10-23T23:34:25.9346925Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9347239Z   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-23T23:34:25.9347574Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9347577Z
2026-10-23T23:34:25.9347775Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T23:34:25.9347918Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:605:9]
2026-10-23T23:34:25.9347987Z  604 โ”‚       };
2026-10-23T23:34:25.9348111Z  605 โ”‚     }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-23T23:34:25.9348316Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9348572Z      ยท                  โ”‚                 โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `httpBaseUrl`
2026-10-23T23:34:25.9348781Z      ยท                  โ”‚                 โ•ฐโ”€โ”€ Unnecessary dependency `attachment.id`
2026-10-23T23:34:25.9348955Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-23T23:34:25.9349011Z  606 โ”‚   );
2026-10-23T23:34:25.9349066Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9349409Z   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-23T23:34:25.9349748Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9349751Z
2026-10-23T23:34:25.9349976Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:25.9350161Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:249:7]
2026-10-23T23:34:25.9350248Z  248 โ”‚       mountedRef.current = false;
2026-10-23T23:34:25.9350331Z  249 โ”‚       flow.setBranchQuery("");
2026-10-23T23:34:25.9350404Z      ยท       โ”€โ”€โ”ฌโ”€
2026-10-23T23:34:25.9350539Z      ยท         โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-23T23:34:25.9350663Z  250 โ”‚     };
2026-10-23T23:34:25.9350795Z  251 โ”‚   }, [flow.setBranchQuery]);
2026-10-23T23:34:25.9350904Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9351129Z      ยท                โ•ฐโ”€โ”€ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-23T23:34:25.9351189Z  252 โ”‚
2026-10-23T23:34:25.9351245Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9351698Z   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-23T23:34:25.9352030Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9352032Z
2026-10-23T23:34:25.9352260Z   โš  eslint(no-unused-vars): Function 'nonEmptyString' is declared but never used.
2026-10-23T23:34:25.9352421Z      โ•ญโ”€[packages/client-runtime/src/work-log/presentation.ts:234:10]
2026-10-23T23:34:25.9352479Z  233 โ”‚
2026-10-23T23:34:25.9352600Z  234 โ”‚ function nonEmptyString(value: unknown): string | null {
2026-10-23T23:34:25.9352693Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9352849Z      ยท                 โ•ฐโ”€โ”€ 'nonEmptyString' is declared here
2026-10-23T23:34:25.9353003Z  235 โ”‚   return typeof value === "string" && value.trim().length > 0 ? value : null;
2026-10-23T23:34:25.9353056Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9353172Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9353175Z
2026-10-23T23:34:25.9353461Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9353637Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-23T23:34:25.9353702Z  259 โ”‚     .join("|");
2026-10-23T23:34:25.9353774Z  260 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9353852Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9353989Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9354088Z  261 โ”‚     stop();
2026-10-23T23:34:25.9354165Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-23T23:34:25.9354340Z      ยท       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9354410Z  262 โ”‚   }, [orderVersion]);
2026-10-23T23:34:25.9354464Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9355112Z   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-23T23:34:25.9355459Z   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-23T23:34:25.9355461Z
2026-10-23T23:34:25.9355690Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:25.9355863Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-23T23:34:25.9355930Z  260 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9355995Z  261 โ”‚     stop();
2026-10-23T23:34:25.9356070Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-23T23:34:25.9356267Z      ยท       โ•ฐโ”€โ”€ Missing dependency `stop`
2026-10-23T23:34:25.9356383Z  262 โ”‚   }, [orderVersion]);
2026-10-23T23:34:25.9356471Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9356634Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `orderVersion`
2026-10-23T23:34:25.9356700Z  263 โ”‚   useEffect(
2026-10-23T23:34:25.9356753Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9357203Z   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-23T23:34:25.9357536Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9357538Z
2026-10-23T23:34:25.9357700Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9357869Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-23T23:34:25.9357953Z  95 โ”‚   const latest = useRef(props);
2026-10-23T23:34:25.9358028Z  96 โ”‚   latest.current = props;
2026-10-23T23:34:25.9358142Z     ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9358331Z     ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T23:34:25.9358453Z     ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-23T23:34:25.9358526Z  97 โ”‚   const gesture = useMemo(
2026-10-23T23:34:25.9358584Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9359089Z   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-23T23:34:25.9359405Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9359407Z
2026-10-23T23:34:25.9359563Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9359735Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-23T23:34:25.9359807Z  103 โ”‚         .runOnJS(true)
2026-10-23T23:34:25.9359912Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-23T23:34:25.9360037Z      ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9360256Z      ยท                                 โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T23:34:25.9360407Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9360463Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9360969Z   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-23T23:34:25.9361279Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9361282Z
2026-10-23T23:34:25.9361437Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9361609Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-23T23:34:25.9361773Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-23T23:34:25.9361990Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9362153Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9362380Z      ยท                                             โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T23:34:25.9362511Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9362566Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9363108Z   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-23T23:34:25.9363442Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9363449Z
2026-10-23T23:34:25.9363605Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9363773Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-23T23:34:25.9363911Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9364077Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9364231Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9364452Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T23:34:25.9364593Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T23:34:25.9364652Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9365161Z   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-23T23:34:25.9365473Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9365476Z
2026-10-23T23:34:25.9365627Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9365800Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-23T23:34:25.9365932Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9366074Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T23:34:25.9366228Z      ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9366463Z      ยท                                            โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T23:34:25.9366540Z  108 โ”‚     [props.disabled],
2026-10-23T23:34:25.9366597Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9367096Z   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-23T23:34:25.9367407Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9367473Z
2026-10-23T23:34:25.9367823Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9367992Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-23T23:34:25.9368113Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-23T23:34:25.9368224Z  249 โ”‚   latest.current = { rows, planners, moveThread };
2026-10-23T23:34:25.9368337Z      ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9368533Z      ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-23T23:34:25.9368655Z      ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-23T23:34:25.9368710Z  250 โ”‚
2026-10-23T23:34:25.9368765Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9369269Z   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-23T23:34:25.9369584Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9369587Z
2026-10-23T23:34:25.9369744Z   โš  react(refs): Cannot access refs during render
2026-10-23T23:34:25.9369917Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-23T23:34:25.9370045Z  246 โ”‚   const [preview, setPreview] = useState<Drag | null>(null);
2026-10-23T23:34:25.9370171Z  247 โ”‚   const translateY = useRef(new Animated.Value(0)).current;
2026-10-23T23:34:25.9370307Z      ยท                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9370495Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T23:34:25.9370617Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-23T23:34:25.9370672Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9371176Z   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-23T23:34:25.9371487Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:25.9371490Z
2026-10-23T23:34:25.9371673Z   โš  react(purity): Cannot call impure function during render
2026-10-23T23:34:25.9371851Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-23T23:34:25.9371928Z  323 โ”‚     update(0);
2026-10-23T23:34:25.9372015Z  324 โ”‚     let last = performance.now();
2026-10-23T23:34:25.9372117Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9372269Z      ยท                        โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T23:34:25.9372343Z  325 โ”‚     const tick = () => {
2026-10-23T23:34:25.9372399Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9372717Z   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-23T23:34:25.9373033Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:25.9373036Z
2026-10-23T23:34:25.9373305Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-23T23:34:25.9373519Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-23T23:34:25.9373615Z   98 โ”‚     () =>
2026-10-23T23:34:25.9373718Z   99 โ”‚       Gesture.Pan()
2026-10-23T23:34:25.9373837Z      ยท               โ”€โ”ฌโ”€
2026-10-23T23:34:25.9374229Z      ยท                โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-23T23:34:25.9374322Z  100 โ”‚         .enabled(!props.disabled)
2026-10-23T23:34:25.9374375Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9374669Z   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-23T23:34:25.9375156Z   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-23T23:34:25.9375162Z
2026-10-23T23:34:25.9375364Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-23T23:34:25.9375530Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-23T23:34:25.9375604Z  103 โ”‚         .runOnJS(true)
2026-10-23T23:34:25.9375710Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-23T23:34:25.9375804Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9376446Z      ยท                           โ•ฐโ”€โ”€ 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-23T23:34:25.9376596Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9376729Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T23:34:25.9376864Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T23:34:25.9376936Z  108 โ”‚     [props.disabled],
2026-10-23T23:34:25.9377022Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9377226Z      ยท             โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T23:34:25.9377287Z  109 โ”‚   );
2026-10-23T23:34:25.9377343Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9377559Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T23:34:25.9378030Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9378091Z
2026-10-23T23:34:25.9378312Z   โš  eslint(no-unused-vars): Type 'EnvironmentId' is imported but never used.
2026-10-23T23:34:25.9378462Z    โ•ญโ”€[packages/client-runtime/src/state/sharedSettings.ts:2:3]
2026-10-23T23:34:25.9378528Z  1 โ”‚ import type {
2026-10-23T23:34:25.9378598Z  2 โ”‚   EnvironmentId,
2026-10-23T23:34:25.9378682Z    ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9378827Z    ยท         โ•ฐโ”€โ”€ 'EnvironmentId' is imported here
2026-10-23T23:34:25.9378917Z  3 โ”‚   ExecutionEnvironmentCapabilities,
2026-10-23T23:34:25.9378974Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9379079Z   help: Consider removing this import.
2026-10-23T23:34:25.9379081Z
2026-10-23T23:34:25.9379503Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownOption(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T23:34:25.9379639Z      โ•ญโ”€[packages/shared/src/otelEnvironment.ts:146:14]
2026-10-23T23:34:25.9379704Z  145 โ”‚     name,
2026-10-23T23:34:25.9379856Z  146 โ”‚     (raw) => Schema.decodeUnknownOption(OtlpProtocol)(raw.toLowerCase()),
2026-10-23T23:34:25.9379972Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9380105Z  147 โ”‚     `${name} is not http/protobuf or http/json, ${NOT_EXPORTED}`,
2026-10-23T23:34:25.9380163Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9380165Z
2026-10-23T23:34:25.9380367Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:25.9380481Z      โ•ญโ”€[packages/shared/src/qrCode.ts:458:44]
2026-10-23T23:34:25.9380559Z  457 โ”‚   ): Array<byte> {
2026-10-23T23:34:25.9380675Z  458 โ”‚     let result: Array<byte> = divisor.map((_) => 0);
2026-10-23T23:34:25.9380784Z      ยท                                            โ”ฌ
2026-10-23T23:34:25.9380941Z      ยท                                            โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T23:34:25.9381018Z  459 โ”‚     for (const b of data) {
2026-10-23T23:34:25.9381073Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9381185Z   help: Consider removing this parameter.
2026-10-23T23:34:25.9381187Z
2026-10-23T23:34:25.9381412Z   โš  typescript(no-extraneous-class): Unexpected class with only a constructor.
2026-10-23T23:34:25.9381548Z      โ•ญโ”€[apps/desktop/src/preview/Manager.test.ts:158:18]
2026-10-23T23:34:25.9381653Z  157 โ”‚       BrowserWindow: browserWindowConstructor,
2026-10-23T23:34:25.9381835Z  158 โ”‚ โ•ญโ”€โ–ถ   ClipboardItem: class {
2026-10-23T23:34:25.9381981Z  159 โ”‚ โ”‚       constructor(data: Record<string, unknown>) {
2026-10-23T23:34:25.9382106Z  160 โ”‚ โ”‚         clipboardItemConstructor(data);
2026-10-23T23:34:25.9382185Z  161 โ”‚ โ”‚       }
2026-10-23T23:34:25.9382321Z  162 โ”‚ โ•ฐโ”€โ–ถ   },
2026-10-23T23:34:25.9382389Z  163 โ”‚       clipboard: {
2026-10-23T23:34:25.9382445Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9382625Z   help: Try replacing this class with a standalone function or deleting it entirely
2026-10-23T23:34:25.9382628Z
2026-10-23T23:34:25.9382848Z   โš  eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-23T23:34:25.9383100Z     โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-23T23:34:25.9383243Z  24 โ”‚ import * as Schema from "effect/Schema";
2026-10-23T23:34:25.9383374Z  25 โ”‚ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-23T23:34:25.9383466Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9383617Z     ยท                  โ•ฐโ”€โ”€ 'HostProcess' is imported here
2026-10-23T23:34:25.9383676Z  26 โ”‚
2026-10-23T23:34:25.9383729Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9383834Z   help: Consider removing this import.
2026-10-23T23:34:25.9383836Z
2026-10-23T23:34:25.9385174Z   โš  eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:25.9385445Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-23T23:34:25.9385590Z  123 โ”‚     const path = yield* Path.Path;
2026-10-23T23:34:25.9385786Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T23:34:25.9385917Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9386143Z      ยท                 โ•ฐโ”€โ”€ 'serverConfig' is declared here
2026-10-23T23:34:25.9386361Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T23:34:25.9386449Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9386617Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9386622Z
2026-10-23T23:34:25.9387104Z   โš  eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:25.9387387Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-23T23:34:25.9387590Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T23:34:25.9387852Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T23:34:25.9388003Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9388238Z      ยท                  โ•ฐโ”€โ”€ 'serverSettings' is declared here
2026-10-23T23:34:25.9388421Z  126 โ”‚     const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-23T23:34:25.9388479Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9388594Z   help: Consider removing this declaration.
2026-10-23T23:34:25.9388597Z
2026-10-23T23:34:25.9388809Z   โš  eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-23T23:34:25.9388918Z     โ•ญโ”€[apps/server/src/auth/http.ts:28:10]
2026-10-23T23:34:25.9389014Z  27 โ”‚ import * as Schema from "effect/Schema";
2026-10-23T23:34:25.9389119Z  28 โ”‚ import { identity } from "effect/Function";
2026-10-23T23:34:25.9389206Z     ยท          โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9389345Z     ยท              โ•ฐโ”€โ”€ 'identity' is imported here
2026-10-23T23:34:25.9389434Z  29 โ”‚ import * as Layer from "effect/Layer";
2026-10-23T23:34:25.9389491Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9389595Z   help: Consider removing this import.
2026-10-23T23:34:25.9389598Z
2026-10-23T23:34:25.9389989Z   โš  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-23T23:34:25.9390124Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:237:17]
2026-10-23T23:34:25.9390269Z  236 โ”‚ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-23T23:34:25.9390541Z  237 โ”‚   const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-23T23:34:25.9390704Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9390854Z  238 โ”‚   const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-23T23:34:25.9390909Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9390911Z
2026-10-23T23:34:25.9391308Z   โš  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-23T23:34:25.9391441Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:256:26]
2026-10-23T23:34:25.9391550Z  255 โ”‚   if (method === WS_METHODS.assetsCreateUrl) {
2026-10-23T23:34:25.9391720Z  256 โ”‚     const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-23T23:34:25.9391843Z      ยท                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9391918Z  257 โ”‚     return [
2026-10-23T23:34:25.9391976Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9391978Z
2026-10-23T23:34:25.9392287Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T23:34:25.9392451Z      โ•ญโ”€[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-23T23:34:25.9392515Z  162 โ”‚   keys,
2026-10-23T23:34:25.9392591Z  163 โ”‚   overridingProjects = [],
2026-10-23T23:34:25.9392679Z      ยท                        โ”€โ”€
2026-10-23T23:34:25.9392752Z  164 โ”‚   onClearOverrides,
2026-10-23T23:34:25.9392807Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9393148Z   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-23T23:34:25.9393151Z
2026-10-23T23:34:25.9393374Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T23:34:25.9393550Z    โ•ญโ”€[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-23T23:34:25.9393630Z  3 โ”‚   AuthProvidersManageScope,
2026-10-23T23:34:25.9393704Z  4 โ”‚   type AuthSessionState,
2026-10-23T23:34:25.9393793Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9393948Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-23T23:34:25.9394019Z  5 โ”‚   type EnvironmentId,
2026-10-23T23:34:25.9394113Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9394218Z   help: Consider removing this import.
2026-10-23T23:34:25.9394221Z
2026-10-23T23:34:25.9394497Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:25.9394649Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-23T23:34:25.9394760Z  66 โ”‚   const { id: attachmentId, fileUri } = attachment;
2026-10-23T23:34:25.9394829Z  67 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9394906Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9395046Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T23:34:25.9395112Z  68 โ”‚     setUri(null);
2026-10-23T23:34:25.9395188Z     ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9395366Z     ยท        โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T23:34:25.9395436Z  69 โ”‚     setError(null);
2026-10-23T23:34:25.9395490Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9396207Z   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-23T23:34:25.9396606Z   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-23T23:34:25.9396608Z
2026-10-23T23:34:25.9396827Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:25.9396973Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-23T23:34:25.9397030Z  90 โ”‚     };
2026-10-23T23:34:25.9397113Z  91 โ”‚   }, [attachmentId, fileUri]);
2026-10-23T23:34:25.9397241Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T23:34:25.9397443Z     ยท             โ”‚          โ•ฐโ”€โ”€ Unnecessary dependency `fileUri`
2026-10-23T23:34:25.9397597Z     ยท             โ•ฐโ”€โ”€ Unnecessary dependency `attachmentId`
2026-10-23T23:34:25.9397742Z  92 โ”‚   const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-23T23:34:25.9397796Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9398110Z   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-23T23:34:25.9398444Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9398447Z
2026-10-23T23:34:25.9398672Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:25.9398827Z      โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-23T23:34:25.9398900Z  212 โ”‚   useEffect(() => {
2026-10-23T23:34:25.9399021Z  213 โ”‚     if (!isFocused && hasSource) props.onRequestClose();
2026-10-23T23:34:25.9399124Z      ยท                                  โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T23:34:25.9399284Z      ยท                                    โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-23T23:34:25.9399399Z  214 โ”‚   }, [isFocused, hasSource, props.onRequestClose]);
2026-10-23T23:34:25.9399520Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9399763Z      ยท                                       โ•ฐโ”€โ”€ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-23T23:34:25.9399843Z  215 โ”‚   const { source } = props;
2026-10-23T23:34:25.9399902Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9400419Z   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-23T23:34:25.9400793Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:25.9400796Z
2026-10-23T23:34:25.9401011Z   โš  unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-23T23:34:25.9401191Z     โ•ญโ”€[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-23T23:34:25.9401271Z  14 โ”‚ } from "@t3tools/contracts";
2026-10-23T23:34:25.9401372Z  15 โ”‚ import type {} from "@t3tools/contracts";
2026-10-23T23:34:25.9401446Z     ยท             โ”€โ”€
2026-10-23T23:34:25.9401645Z  16 โ”‚ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-23T23:34:25.9401705Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9401795Z   help: Remove empty braces
2026-10-23T23:34:25.9401798Z
2026-10-23T23:34:25.9402273Z   โš  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-23T23:34:25.9402408Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-23T23:34:25.9402592Z  1740 โ”‚       const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-23T23:34:25.9402790Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-23T23:34:25.9402919Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9403036Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-23T23:34:25.9403093Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9403095Z
2026-10-23T23:34:25.9403573Z   โš  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-23T23:34:25.9403702Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-23T23:34:25.9403897Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-23T23:34:25.9404010Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-23T23:34:25.9404185Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9404319Z  1743 โ”‚         Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-23T23:34:25.9404376Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9404379Z
2026-10-23T23:34:25.9404589Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:25.9404748Z      โ•ญโ”€[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-23T23:34:25.9404863Z  266 โ”‚                 {record.elements?.map((element, index) => (
2026-10-23T23:34:25.9405040Z  267 โ”‚                   <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-23T23:34:25.9405207Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9405289Z  268 โ”‚                     <ContextField
2026-10-23T23:34:25.9405346Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T23:34:25.9405581Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:25.9405625Z
2026-10-23T23:34:25.9405720Z Found 0 errors and 362 warnings in 5402 files (7.4s, 8 threads)
2026-10-23T23:34:26.0054887Z Post job cleanup.
2026-10-23T23:34:26.0954683Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T23:34:26.1064930Z Post job cleanup.
2026-10-23T23:34:26.1087095Z ##[start-action display=Cache full pnpm store;id=__c7e34815-00b4-4158-81de-5273b9b34a83.__actions_cache]
2026-10-23T23:34:26.1582620Z Post job cleanup.
2026-10-23T23:34:26.2377515Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-23T23:34:26.2423642Z ##[end-action id=__c7e34815-00b4-4158-81de-5273b9b34a83.__actions_cache;outcome=success;conclusion=success;duration_ms=133]
2026-10-23T23:34:26.2426313Z ##[start-action display=Cache Vite+;id=__c7e34815-00b4-4158-81de-5273b9b34a83.vp_cache]
2026-10-23T23:34:26.2457511Z Post job cleanup.
2026-10-23T23:34:26.3179526Z 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-23T23:34:26.3222540Z ##[end-action id=__c7e34815-00b4-4158-81de-5273b9b34a83.vp_cache;outcome=success;conclusion=success;duration_ms=79]
2026-10-23T23:34:26.3261862Z Post job cleanup.
2026-10-23T23:34:26.3888431Z [command]/usr/local/bin/git version
2026-10-23T23:34:26.3928285Z git version 2.55.0
2026-10-23T23:34:26.3951569Z Temporarily overriding HOME='/home/runner/_work/_temp/d0ea9ec8-eb23-461a-ac91-8a8ce12e05e5' before making global git config changes
2026-10-23T23:34:26.3951975Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T23:34:26.3955609Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T23:34:26.3986712Z Removing SSH command configuration
2026-10-23T23:34:26.3991956Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T23:34:26.4023865Z [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-23T23:34:26.4193234Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T23:34:26.4228964Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T23:34:26.4276605Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T23:34:26.4292374Z ##[group]Run '/job_completed.sh'
2026-10-23T23:34:26.4300313Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T23:34:26.4300490Z env:
2026-10-23T23:34:26.4300610Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 169
2026-10-23T23:34:26.4300765Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 369
2026-10-23T23:34:26.4300911Z   BLACKSMITH_CHECK_RUN_ID: 120709689062
2026-10-23T23:34:26.4301057Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-23T23:34:26.4301217Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T23:34:26.4301356Z ##[endgroup]
2026-10-23T23:34:26.4396449Z Docker container cache not activated, skipping hash computation.
2026-10-23T23:34:26.4783584Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T23:34:26.4864201Z Cleaning up orphan processes