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