GitHub check
256 KB of 597 KB loaded Download the full log (597 KB)
341 KB of earlier output not loaded
s:340:7]
2026-10-24T03:20:26.0428312Z 339 โ
2026-10-24T03:20:26.0428416Z 340 โ const layerTest = AnalyticsService.layerTest;
2026-10-24T03:20:26.0428491Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0428625Z ยท โฐโโ 'layerTest' is declared here
2026-10-24T03:20:26.0428677Z โฐโโโโ
2026-10-24T03:20:26.0428784Z help: Consider removing this declaration.
2026-10-24T03:20:26.0428857Z
2026-10-24T03:20:26.0429053Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T03:20:26.0429176Z โญโ[apps/server/src/processRunner.test.ts:266:14]
2026-10-24T03:20:26.0429230Z 265 โ
2026-10-24T03:20:26.0429337Z 266 โ for (const {} of ["timeout", "success"] as const) {
2026-10-24T03:20:26.0429408Z ยท โโ
2026-10-24T03:20:26.0429465Z 267 โ }
2026-10-24T03:20:26.0429518Z โฐโโโโ
2026-10-24T03:20:26.0429753Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T03:20:26.0429756Z
2026-10-24T03:20:26.0430014Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0430183Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-24T03:20:26.0430300Z 37 โ const [initialized, setInitialized] = useState(false);
2026-10-24T03:20:26.0430371Z 38 โ useLayoutEffect(() => {
2026-10-24T03:20:26.0430448Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0430583Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0430645Z 39 โ reset();
2026-10-24T03:20:26.0430714Z 40 โ setInitialized(true);
2026-10-24T03:20:26.0430792Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0430964Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0431027Z 41 โ }, [reset]);
2026-10-24T03:20:26.0431080Z โฐโโโโ
2026-10-24T03:20:26.0431693Z 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-24T03:20:26.0432021Z 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-24T03:20:26.0432024Z
2026-10-24T03:20:26.0432282Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0432444Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-24T03:20:26.0432558Z 88 โ
2026-10-24T03:20:26.0432624Z 89 โ useEffect(() => {
2026-10-24T03:20:26.0432697Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0432837Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0432999Z 90 โ if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-24T03:20:26.0433102Z 91 โ const branchName = initialProjectRef.branch;
2026-10-24T03:20:26.0433169Z 92 โ let active = true;
2026-10-24T03:20:26.0433267Z 93 โ setPendingCheckouts((count) => count + 1);
2026-10-24T03:20:26.0433354Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0433525Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0433682Z 94 โ // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-24T03:20:26.0433736Z โฐโโโโ
2026-10-24T03:20:26.0434406Z 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-24T03:20:26.0434756Z 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-24T03:20:26.0434759Z
2026-10-24T03:20:26.0435234Z โ 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-24T03:20:26.0435387Z โญโ[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-24T03:20:26.0435522Z 132 โ const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-24T03:20:26.0435673Z 133 โ โญโโถ for (
2026-10-24T03:20:26.0435782Z 134 โ โ let attempt = 0;
2026-10-24T03:20:26.0435950Z 135 โ โ attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-24T03:20:26.0436053Z 136 โ โ attempt += 1
2026-10-24T03:20:26.0436136Z 137 โ โ ) {
2026-10-24T03:20:26.0436249Z 138 โ โ yield* Effect.yieldNow;
2026-10-24T03:20:26.0436385Z 139 โ โฐโโถ }
2026-10-24T03:20:26.0436513Z 140 โ expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-24T03:20:26.0436569Z โฐโโโโ
2026-10-24T03:20:26.0436571Z
2026-10-24T03:20:26.0436841Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0436995Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-24T03:20:26.0437050Z 55 โ
2026-10-24T03:20:26.0437116Z 56 โ useEffect(() => {
2026-10-24T03:20:26.0437188Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0437318Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0437387Z 57 โ setDecodedSize(null);
2026-10-24T03:20:26.0437467Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0437637Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0437707Z 58 โ }, [props.sourceKey]);
2026-10-24T03:20:26.0437759Z โฐโโโโ
2026-10-24T03:20:26.0438367Z 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-24T03:20:26.0438694Z 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-24T03:20:26.0438697Z
2026-10-24T03:20:26.0438955Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0439110Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-24T03:20:26.0439167Z 59 โ
2026-10-24T03:20:26.0439231Z 60 โ useEffect(() => {
2026-10-24T03:20:26.0439364Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0439525Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0439595Z 61 โ setFailedUri(null);
2026-10-24T03:20:26.0439670Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0439838Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0439902Z 62 โ }, [props.uri]);
2026-10-24T03:20:26.0439956Z โฐโโโโ
2026-10-24T03:20:26.0440559Z 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-24T03:20:26.0440887Z 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-24T03:20:26.0440893Z
2026-10-24T03:20:26.0441110Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T03:20:26.0441262Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-24T03:20:26.0441389Z 6 โ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-24T03:20:26.0441568Z 7 โ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-24T03:20:26.0441656Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0441807Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-24T03:20:26.0441861Z 8 โ
2026-10-24T03:20:26.0441913Z โฐโโโโ
2026-10-24T03:20:26.0442019Z help: Consider removing this import.
2026-10-24T03:20:26.0442026Z
2026-10-24T03:20:26.0442228Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0442382Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-24T03:20:26.0442451Z 57 โ setDecodedSize(null);
2026-10-24T03:20:26.0442546Z 58 โ }, [props.sourceKey]);
2026-10-24T03:20:26.0442628Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0442785Z ยท โฐโโ Unnecessary dependency `props.sourceKey`
2026-10-24T03:20:26.0442838Z 59 โ
2026-10-24T03:20:26.0442892Z โฐโโโโ
2026-10-24T03:20:26.0443187Z 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-24T03:20:26.0443568Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0443598Z
2026-10-24T03:20:26.0443801Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0443952Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-24T03:20:26.0444019Z 61 โ setFailedUri(null);
2026-10-24T03:20:26.0444085Z 62 โ }, [props.uri]);
2026-10-24T03:20:26.0444161Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0444304Z ยท โฐโโ Unnecessary dependency `props.uri`
2026-10-24T03:20:26.0444356Z 63 โ
2026-10-24T03:20:26.0444409Z โฐโโโโ
2026-10-24T03:20:26.0444707Z 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-24T03:20:26.0445022Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0445025Z
2026-10-24T03:20:26.0445282Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0445430Z โญโ[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-24T03:20:26.0445593Z 28 โ const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-24T03:20:26.0445658Z 29 โ useEffect(() => {
2026-10-24T03:20:26.0445728Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0445856Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0445987Z 30 โ if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-24T03:20:26.0446098Z ยท โโโโฌโโโ
2026-10-24T03:20:26.0446291Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0446363Z 31 โ }, [key, live, snapshot]);
2026-10-24T03:20:26.0446416Z โฐโโโโ
2026-10-24T03:20:26.0447017Z 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-24T03:20:26.0447344Z 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-24T03:20:26.0447348Z
2026-10-24T03:20:26.0447605Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0447742Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2139:5]
2026-10-24T03:20:26.0447802Z 2137 โ );
2026-10-24T03:20:26.0447871Z 2138 โ useEffect(() => {
2026-10-24T03:20:26.0447945Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0448077Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0448153Z 2139 โ setExpandedVideo(null);
2026-10-24T03:20:26.0448235Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0448406Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0448546Z 2140 โ setExpandedFile(null);
2026-10-24T03:20:26.0448627Z โฐโโโโ
2026-10-24T03:20:26.0449228Z 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-24T03:20:26.0449554Z 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-24T03:20:26.0449557Z
2026-10-24T03:20:26.0449788Z โ eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-24T03:20:26.0449922Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:66:10]
2026-10-24T03:20:26.0450065Z 65 โ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-24T03:20:26.0450208Z 66 โ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-24T03:20:26.0450307Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0450474Z ยท โฐโโ 'isMarkdownFileLinkLabel' is imported here
2026-10-24T03:20:26.0450632Z 67 โ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-24T03:20:26.0450684Z โฐโโโโ
2026-10-24T03:20:26.0450785Z help: Consider removing this import.
2026-10-24T03:20:26.0450788Z
2026-10-24T03:20:26.0450995Z โ eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-24T03:20:26.0451135Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:92:3]
2026-10-24T03:20:26.0451197Z 91 โ import {
2026-10-24T03:20:26.0451263Z 92 โ createContext,
2026-10-24T03:20:26.0451337Z ยท โโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0451476Z ยท โฐโโ 'createContext' is imported here
2026-10-24T03:20:26.0451534Z 93 โ memo,
2026-10-24T03:20:26.0451586Z โฐโโโโ
2026-10-24T03:20:26.0451683Z help: Consider removing this import.
2026-10-24T03:20:26.0451686Z
2026-10-24T03:20:26.0451900Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T03:20:26.0452037Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:108:3]
2026-10-24T03:20:26.0452098Z 107 โ import {
2026-10-24T03:20:26.0452165Z 108 โ ActivityIndicator,
2026-10-24T03:20:26.0452249Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0452403Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-24T03:20:26.0452485Z 109 โ Image,
2026-10-24T03:20:26.0452536Z โฐโโโโ
2026-10-24T03:20:26.0452635Z help: Consider removing this import.
2026-10-24T03:20:26.0452638Z
2026-10-24T03:20:26.0452839Z โ eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-24T03:20:26.0452973Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:115:3]
2026-10-24T03:20:26.0453034Z 114 โ Pressable,
2026-10-24T03:20:26.0453097Z 115 โ ScrollView,
2026-10-24T03:20:26.0453171Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0453305Z ยท โฐโโ 'ScrollView' is imported here
2026-10-24T03:20:26.0453366Z 116 โ StyleSheet,
2026-10-24T03:20:26.0453417Z โฐโโโโ
2026-10-24T03:20:26.0453582Z help: Consider removing this import.
2026-10-24T03:20:26.0453613Z
2026-10-24T03:20:26.0453814Z โ eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-24T03:20:26.0453948Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:117:11]
2026-10-24T03:20:26.0454009Z 116 โ StyleSheet,
2026-10-24T03:20:26.0454076Z 117 โ Text as NativeText,
2026-10-24T03:20:26.0454156Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0454295Z ยท โฐโโ 'NativeText' is imported here
2026-10-24T03:20:26.0454362Z 118 โ type ColorValue,
2026-10-24T03:20:26.0454414Z โฐโโโโ
2026-10-24T03:20:26.0454511Z help: Consider removing this import.
2026-10-24T03:20:26.0454513Z
2026-10-24T03:20:26.0454737Z โ eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-24T03:20:26.0454875Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:140:10]
2026-10-24T03:20:26.0455016Z 139 โ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-24T03:20:26.0455144Z 140 โ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-24T03:20:26.0455233Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0455389Z ยท โฐโโ 'tryOpenExternalUrl' is imported here
2026-10-24T03:20:26.0455539Z 141 โ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-24T03:20:26.0455590Z โฐโโโโ
2026-10-24T03:20:26.0455685Z help: Consider removing this import.
2026-10-24T03:20:26.0455688Z
2026-10-24T03:20:26.0455917Z โ eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-24T03:20:26.0456054Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:143:10]
2026-10-24T03:20:26.0456190Z 142 โ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-24T03:20:26.0456316Z 143 โ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-24T03:20:26.0456405Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0456564Z ยท โฐโโ 'faviconUrlForOrigin' is imported here
2026-10-24T03:20:26.0456623Z 144 โ import {
2026-10-24T03:20:26.0456675Z โฐโโโโ
2026-10-24T03:20:26.0456770Z help: Consider removing this import.
2026-10-24T03:20:26.0456772Z
2026-10-24T03:20:26.0456988Z โ eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-24T03:20:26.0457126Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:157:10]
2026-10-24T03:20:26.0457279Z 156 โ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-24T03:20:26.0457411Z 157 โ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-24T03:20:26.0457501Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0457652Z ยท โฐโโ 'MediaVideoPlayer' is imported here
2026-10-24T03:20:26.0457794Z 158 โ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-24T03:20:26.0457844Z โฐโโโโ
2026-10-24T03:20:26.0457940Z help: Consider removing this import.
2026-10-24T03:20:26.0457943Z
2026-10-24T03:20:26.0458166Z โ eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-24T03:20:26.0458374Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:161:3]
2026-10-24T03:20:26.0458491Z 160 โ attachmentVideoPreviewSource,
2026-10-24T03:20:26.0458564Z 161 โ mediaVideoPreviewUri,
2026-10-24T03:20:26.0458744Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0458901Z ยท โฐโโ 'mediaVideoPreviewUri' is imported here
2026-10-24T03:20:26.0458974Z 162 โ mediaVideoThumbnailKey,
2026-10-24T03:20:26.0459030Z โฐโโโโ
2026-10-24T03:20:26.0459126Z help: Consider removing this import.
2026-10-24T03:20:26.0459128Z
2026-10-24T03:20:26.0459354Z โ eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-24T03:20:26.0459485Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:162:3]
2026-10-24T03:20:26.0459562Z 161 โ mediaVideoPreviewUri,
2026-10-24T03:20:26.0459636Z 162 โ mediaVideoThumbnailKey,
2026-10-24T03:20:26.0459726Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T03:20:26.0459884Z ยท โฐโโ 'mediaVideoThumbnailKey' is imported here
2026-10-24T03:20:26.0459965Z 163 โ type MediaVideoPreviewSource,
2026-10-24T03:20:26.0460019Z โฐโโโโ
2026-10-24T03:20:26.0460116Z help: Consider removing this import.
2026-10-24T03:20:26.0460119Z
2026-10-24T03:20:26.0460334Z โ eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-24T03:20:26.0460466Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:163:8]
2026-10-24T03:20:26.0460538Z 162 โ mediaVideoThumbnailKey,
2026-10-24T03:20:26.0460618Z 163 โ type MediaVideoPreviewSource,
2026-10-24T03:20:26.0460720Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0460888Z ยท โฐโโ 'MediaVideoPreviewSource' is imported here
2026-10-24T03:20:26.0460974Z 164 โ } from "../../lib/videoPreviewSource";
2026-10-24T03:20:26.0461025Z โฐโโโโ
2026-10-24T03:20:26.0461120Z help: Consider removing this import.
2026-10-24T03:20:26.0461122Z
2026-10-24T03:20:26.0461324Z โ eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-24T03:20:26.0461459Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:171:15]
2026-10-24T03:20:26.0461635Z 170 โ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-24T03:20:26.0461775Z 171 โ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-24T03:20:26.0461870Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0462023Z ยท โฐโโ 'ReviewDiffTheme' is imported here
2026-10-24T03:20:26.0462084Z 172 โ import {
2026-10-24T03:20:26.0462136Z โฐโโโโ
2026-10-24T03:20:26.0462228Z help: Consider removing this import.
2026-10-24T03:20:26.0462231Z
2026-10-24T03:20:26.0462461Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-24T03:20:26.0462638Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:186:3]
2026-10-24T03:20:26.0462697Z 185 โ import {
2026-10-24T03:20:26.0462771Z 186 โ resolveMarkdownFontSizes,
2026-10-24T03:20:26.0462863Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0463026Z ยท โฐโโ 'resolveMarkdownFontSizes' is imported here
2026-10-24T03:20:26.0463204Z 187 โ resolveNativeMarkdownTypography,
2026-10-24T03:20:26.0463294Z โฐโโโโ
2026-10-24T03:20:26.0463390Z help: Consider removing this import.
2026-10-24T03:20:26.0463392Z
2026-10-24T03:20:26.0463618Z โ eslint(no-unused-vars): Identifier 'markdownLinkIconSource' is imported but never used.
2026-10-24T03:20:26.0463753Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:191:10]
2026-10-24T03:20:26.0463886Z 190 โ import { PierreEntryIcon } from "../../components/PierreEntryIcon";
2026-10-24T03:20:26.0464024Z 191 โ import { markdownLinkIconSource } from "../../lib/markdownLinkIcons";
2026-10-24T03:20:26.0464120Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T03:20:26.0464284Z ยท โฐโโ 'markdownLinkIconSource' is imported here
2026-10-24T03:20:26.0464341Z 192 โ import {
2026-10-24T03:20:26.0464399Z โฐโโโโ
2026-10-24T03:20:26.0464498Z help: Consider removing this import.
2026-10-24T03:20:26.0464500Z
2026-10-24T03:20:26.0464764Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-24T03:20:26.0464898Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:194:3]
2026-10-24T03:20:26.0464977Z 193 โ normalizeNativeMarkdownUrl,
2026-10-24T03:20:26.0465074Z 194 โ resolveMarkdownInlineCodePresentation,
2026-10-24T03:20:26.0465186Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0465383Z ยท โฐโโ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-24T03:20:26.0465457Z 195 โ resolveMarkdownLinkIcon,
2026-10-24T03:20:26.0465510Z โฐโโโโ
2026-10-24T03:20:26.0465612Z help: Consider removing this import.
2026-10-24T03:20:26.0465617Z
2026-10-24T03:20:26.0465843Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownLinkIcon' is imported but never used.
2026-10-24T03:20:26.0465976Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:195:3]
2026-10-24T03:20:26.0466071Z 194 โ resolveMarkdownInlineCodePresentation,
2026-10-24T03:20:26.0466146Z 195 โ resolveMarkdownLinkIcon,
2026-10-24T03:20:26.0466235Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0466397Z ยท โฐโโ 'resolveMarkdownLinkIcon' is imported here
2026-10-24T03:20:26.0466484Z 196 โ resolveMarkdownLinkPresentation,
2026-10-24T03:20:26.0466535Z โฐโโโโ
2026-10-24T03:20:26.0466631Z help: Consider removing this import.
2026-10-24T03:20:26.0466635Z
2026-10-24T03:20:26.0466936Z โ eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-24T03:20:26.0467100Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:234:10]
2026-10-24T03:20:26.0467204Z 233 โ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-24T03:20:26.0467352Z 234 โ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-24T03:20:26.0467452Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0467624Z ยท โฐโโ 'useMarkdownCodeHighlight' is imported here
2026-10-24T03:20:26.0467686Z 235 โ import {
2026-10-24T03:20:26.0467741Z โฐโโโโ
2026-10-24T03:20:26.0467838Z help: Consider removing this import.
2026-10-24T03:20:26.0467840Z
2026-10-24T03:20:26.0468063Z โ eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-24T03:20:26.0468203Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:238:3]
2026-10-24T03:20:26.0468270Z 237 โ useAssetUrl,
2026-10-24T03:20:26.0468338Z 238 โ useAssetUrlState,
2026-10-24T03:20:26.0468423Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0468573Z ยท โฐโโ 'useAssetUrlState' is imported here
2026-10-24T03:20:26.0468647Z 239 โ useRefreshAssetUrl,
2026-10-24T03:20:26.0468699Z โฐโโโโ
2026-10-24T03:20:26.0468798Z help: Consider removing this import.
2026-10-24T03:20:26.0468801Z
2026-10-24T03:20:26.0469007Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0469149Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2141:7]
2026-10-24T03:20:26.0469230Z 2140 โ setExpandedFile(null);
2026-10-24T03:20:26.0469397Z 2141 โ }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-24T03:20:26.0469630Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโฌโโโโโโ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0469931Z ยท โ โ โฐโโ Unnecessary dependency `props.contentPresentation.kind`
2026-10-24T03:20:26.0470133Z ยท โ โฐโโ Unnecessary dependency `props.threadId`
2026-10-24T03:20:26.0470306Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-24T03:20:26.0470460Z 2142 โ const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-24T03:20:26.0470520Z โฐโโโโ
2026-10-24T03:20:26.0470822Z 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-24T03:20:26.0471140Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0471143Z
2026-10-24T03:20:26.0471352Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0471494Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2609:7]
2026-10-24T03:20:26.0471597Z 2608 โ reportHeaderMaterialVisibility(false);
2026-10-24T03:20:26.0471714Z 2609 โ }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-24T03:20:26.0471873Z ยท โโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0472065Z ยท โฐโโ Unnecessary dependency `feedThreadKey`
2026-10-24T03:20:26.0472125Z 2610 โ
2026-10-24T03:20:26.0472180Z โฐโโโโ
2026-10-24T03:20:26.0472510Z 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-24T03:20:26.0472829Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0472831Z
2026-10-24T03:20:26.0473036Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0473176Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2625:7]
2026-10-24T03:20:26.0473238Z 2624 โ }
2026-10-24T03:20:26.0473376Z 2625 โ }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-24T03:20:26.0473464Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0473619Z ยท โฐโโ Unnecessary dependency `listMountKey`
2026-10-24T03:20:26.0473677Z 2626 โ
2026-10-24T03:20:26.0473735Z โฐโโโโ
2026-10-24T03:20:26.0474059Z 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-24T03:20:26.0474437Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0474468Z
2026-10-24T03:20:26.0474692Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0474867Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2782:7]
2026-10-24T03:20:26.0474966Z 2781 โ }
2026-10-24T03:20:26.0475191Z 2782 โ }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-24T03:20:26.0475417Z ยท โโโโโโโโฌโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0475709Z ยท โ โ โฐโโ Unnecessary dependency `expandedWorkRows`
2026-10-24T03:20:26.0475951Z ยท โ โฐโโ Unnecessary dependency `expandedWorkGroups`
2026-10-24T03:20:26.0476145Z ยท โฐโโ Unnecessary dependency `expandedTurnIds`
2026-10-24T03:20:26.0476361Z 2783 โ
2026-10-24T03:20:26.0476429Z โฐโโโโ
2026-10-24T03:20:26.0476758Z 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-24T03:20:26.0477107Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0477110Z
2026-10-24T03:20:26.0477332Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T03:20:26.0477492Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:613:9]
2026-10-24T03:20:26.0477585Z 612 โ };
2026-10-24T03:20:26.0477741Z 613 โ }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-24T03:20:26.0478030Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโฌโโโโโโ โโโโโโฌโโโโโ
2026-10-24T03:20:26.0478358Z ยท โ โ โฐโโ Unnecessary dependency `httpBaseUrl`
2026-10-24T03:20:26.0478577Z ยท โ โฐโโ Unnecessary dependency `attachment.id`
2026-10-24T03:20:26.0478776Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-24T03:20:26.0478866Z 614 โ );
2026-10-24T03:20:26.0478957Z โฐโโโโ
2026-10-24T03:20:26.0479300Z 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-24T03:20:26.0479660Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0479666Z
2026-10-24T03:20:26.0479994Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T03:20:26.0480140Z โญโ[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T03:20:26.0480273Z 7 โ () =>
2026-10-24T03:20:26.0480357Z 8 โ Gesture.Hover()
2026-10-24T03:20:26.0480469Z ยท โโโฌโโ
2026-10-24T03:20:26.0480638Z ยท โฐโโ `Hover` may be a component
2026-10-24T03:20:26.0480758Z 9 โ .manualActivation(true)
2026-10-24T03:20:26.0480839Z โฐโโโโ
2026-10-24T03:20:26.0481162Z help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T03:20:26.0481649Z note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T03:20:26.0481652Z
2026-10-24T03:20:26.0481881Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T03:20:26.0482108Z โญโ[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-24T03:20:26.0482200Z 3 โ AuthProvidersManageScope,
2026-10-24T03:20:26.0482306Z 4 โ type AuthSessionState,
2026-10-24T03:20:26.0482423Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0482647Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T03:20:26.0482809Z 5 โ type EnvironmentId,
2026-10-24T03:20:26.0483030Z โฐโโโโ
2026-10-24T03:20:26.0483169Z help: Consider removing this import.
2026-10-24T03:20:26.0483172Z
2026-10-24T03:20:26.0483459Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0483641Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:512:5]
2026-10-24T03:20:26.0483742Z 510 โ }, []);
2026-10-24T03:20:26.0483840Z 511 โ useEffect(() => {
2026-10-24T03:20:26.0483954Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0484094Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0484238Z 512 โ setKeyboardStateSuspect(false);
2026-10-24T03:20:26.0484365Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0484582Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0484703Z 513 โ }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-24T03:20:26.0484792Z โฐโโโโ
2026-10-24T03:20:26.0485435Z 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-24T03:20:26.0485797Z 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-24T03:20:26.0485800Z
2026-10-24T03:20:26.0486097Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0486260Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:872:7]
2026-10-24T03:20:26.0486471Z 869 โ const [lastKnownKeyboardHeight, setLastKnownKeyboardHeight] = useState(0);
2026-10-24T03:20:26.0486664Z 870 โ useEffect(() => {
2026-10-24T03:20:26.0486773Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0486919Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0487118Z 871 โ if (liveKeyboardHeight > 0 && liveKeyboardHeight !== lastKnownKeyboardHeight) {
2026-10-24T03:20:26.0487274Z 872 โ setLastKnownKeyboardHeight(liveKeyboardHeight);
2026-10-24T03:20:26.0487411Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T03:20:26.0487605Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0487694Z 873 โ }
2026-10-24T03:20:26.0487803Z โฐโโโโ
2026-10-24T03:20:26.0488445Z 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-24T03:20:26.0488802Z 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-24T03:20:26.0488804Z
2026-10-24T03:20:26.0489089Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0489345Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1119:5]
2026-10-24T03:20:26.0489479Z 1117 โ
2026-10-24T03:20:26.0489578Z 1118 โ useEffect(() => {
2026-10-24T03:20:26.0489684Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0489825Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0490055Z 1119 โ setAnchorMessageId(null);
2026-10-24T03:20:26.0490176Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0490383Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0490481Z 1120 โ setSubmittedMessageId(null);
2026-10-24T03:20:26.0490579Z โฐโโโโ
2026-10-24T03:20:26.0491230Z 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-24T03:20:26.0491588Z 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-24T03:20:26.0491591Z
2026-10-24T03:20:26.0491829Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0491990Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:513:7]
2026-10-24T03:20:26.0492136Z 512 โ setKeyboardStateSuspect(false);
2026-10-24T03:20:26.0492269Z 513 โ }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-24T03:20:26.0492446Z ยท โโโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0492721Z ยท โ โฐโโ Unnecessary dependency `liveKeyboardHeight`
2026-10-24T03:20:26.0492929Z ยท โฐโโ Unnecessary dependency `isKeyboardVisible`
2026-10-24T03:20:26.0493097Z 514 โ const handleOwnedInputFocusChange = (focused: boolean) => {
2026-10-24T03:20:26.0493181Z โฐโโโโ
2026-10-24T03:20:26.0493498Z 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-24T03:20:26.0493852Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0493854Z
2026-10-24T03:20:26.0494215Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0494409Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1067:7]
2026-10-24T03:20:26.0494534Z 1066 โ userInputInsetProgress.set(1);
2026-10-24T03:20:26.0494714Z 1067 โ }, [activeUserInputRequestId, userInputCardProgress, userInputInsetProgress]);
2026-10-24T03:20:26.0494851Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0495073Z ยท โฐโโ Unnecessary dependency `activeUserInputRequestId`
2026-10-24T03:20:26.0495219Z 1068 โ const showContent = props.showContent ?? true;
2026-10-24T03:20:26.0495286Z โฐโโโโ
2026-10-24T03:20:26.0495611Z 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-24T03:20:26.0496051Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0496089Z
2026-10-24T03:20:26.0496330Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0496521Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1125:15]
2026-10-24T03:20:26.0496607Z 1124 โ freeze.set(false);
2026-10-24T03:20:26.0496733Z 1125 โ }, [freeze, selectedThreadKey]);
2026-10-24T03:20:26.0496877Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0497077Z ยท โฐโโ Unnecessary dependency `selectedThreadKey`
2026-10-24T03:20:26.0497255Z 1126 โ
2026-10-24T03:20:26.0497336Z โฐโโโโ
2026-10-24T03:20:26.0497701Z 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-24T03:20:26.0498052Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0498055Z
2026-10-24T03:20:26.0498248Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0498416Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:955:5]
2026-10-24T03:20:26.0498565Z 950 โ const composerPopoverHeight = useSharedValue(0);
2026-10-24T03:20:26.0498834Z 951 โ const floatingControlCoverage = useSharedValue(
2026-10-24T03:20:26.0498969Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0499146Z ยท โฐโโ `floatingControlCoverage` originates here
2026-10-24T03:20:26.0499305Z 952 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-24T03:20:26.0499422Z 953 โ );
2026-10-24T03:20:26.0499521Z 954 โ useEffect(() => {
2026-10-24T03:20:26.0499645Z 955 โ floatingControlCoverage.value = withTiming(
2026-10-24T03:20:26.0499770Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0499978Z ยท โฐโโ `floatingControlCoverage` cannot be modified
2026-10-24T03:20:26.0500145Z 956 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-24T03:20:26.0500213Z โฐโโโโ
2026-10-24T03:20:26.0500613Z 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-24T03:20:26.0500958Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0500964Z
2026-10-24T03:20:26.0501172Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0501356Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:973:7]
2026-10-24T03:20:26.0501558Z 963 โ const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
2026-10-24T03:20:26.0501720Z 964 โ const combinedContentInsetEndAdjustment = useSharedValue(
2026-10-24T03:20:26.0501871Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0502100Z ยท โฐโโ `combinedContentInsetEndAdjustment` originates here
2026-10-24T03:20:26.0502244Z 965 โ Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
2026-10-24T03:20:26.0502334Z 966 โ );
2026-10-24T03:20:26.0502562Z 967 โ useAnimatedReaction(
2026-10-24T03:20:26.0502719Z 968 โ () =>
2026-10-24T03:20:26.0502828Z 969 โ contentInsetEndAdjustment.value +
2026-10-24T03:20:26.0502956Z 970 โ floatingControlCoverage.value +
2026-10-24T03:20:26.0503187Z 971 โ (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
2026-10-24T03:20:26.0503294Z 972 โ (value) => {
2026-10-24T03:20:26.0503433Z 973 โ combinedContentInsetEndAdjustment.value = value;
2026-10-24T03:20:26.0503682Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0503911Z ยท โฐโโ `combinedContentInsetEndAdjustment` cannot be modified
2026-10-24T03:20:26.0503993Z 974 โ },
2026-10-24T03:20:26.0504076Z โฐโโโโ
2026-10-24T03:20:26.0504487Z 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-24T03:20:26.0504836Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0504839Z
2026-10-24T03:20:26.0505088Z โ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-24T03:20:26.0505263Z โญโ[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-24T03:20:26.0505342Z 78 โ
2026-10-24T03:20:26.0505519Z 79 โ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-24T03:20:26.0505639Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0505815Z ยท โฐโโ 'describeSchedule' is declared here
2026-10-24T03:20:26.0505959Z 80 โ if (schedule.type === "webhook") return "On webhook";
2026-10-24T03:20:26.0506063Z โฐโโโโ
2026-10-24T03:20:26.0506201Z help: Consider removing this declaration.
2026-10-24T03:20:26.0506204Z
2026-10-24T03:20:26.0506453Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T03:20:26.0506669Z โญโ[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:249:7]
2026-10-24T03:20:26.0506884Z 248 โ mountedRef.current = false;
2026-10-24T03:20:26.0506996Z 249 โ flow.setBranchQuery("");
2026-10-24T03:20:26.0507100Z ยท โโโฌโ
2026-10-24T03:20:26.0507253Z ยท โฐโโ Missing dependency `flow`
2026-10-24T03:20:26.0507346Z 250 โ };
2026-10-24T03:20:26.0507467Z 251 โ }, [flow.setBranchQuery]);
2026-10-24T03:20:26.0507588Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0507904Z ยท โฐโโ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-24T03:20:26.0508005Z 252 โ
2026-10-24T03:20:26.0508114Z โฐโโโโ
2026-10-24T03:20:26.0508573Z 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-24T03:20:26.0508924Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0508927Z
2026-10-24T03:20:26.0509429Z โ 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-24T03:20:26.0509653Z โญโ[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T03:20:26.0509769Z 520 โ })).delivery;
2026-10-24T03:20:26.0510005Z 521 โ โญโโถ while (delivery.outcome === "accepted") {
2026-10-24T03:20:26.0510160Z 522 โ โ yield* Effect.yieldNow;
2026-10-24T03:20:26.0510408Z 523 โ โ delivery = (yield* service.getWebhookDelivery({
2026-10-24T03:20:26.0510569Z 524 โ โ id: task.id,
2026-10-24T03:20:26.0510721Z 525 โ โ deliveryId: deliveryId!,
2026-10-24T03:20:26.0510863Z 526 โ โ })).delivery;
2026-10-24T03:20:26.0511025Z 527 โ โฐโโถ }
2026-10-24T03:20:26.0511183Z 528 โ assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T03:20:26.0511279Z โฐโโโโ
2026-10-24T03:20:26.0511281Z
2026-10-24T03:20:26.0511581Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0511779Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:215:7]
2026-10-24T03:20:26.0511843Z 211 โ };
2026-10-24T03:20:26.0511971Z 212 โ useEffect(() => {
2026-10-24T03:20:26.0512079Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0512245Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0512442Z 213 โ const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-24T03:20:26.0512585Z 214 โ if (inserted) {
2026-10-24T03:20:26.0512703Z 215 โ setSelection((current) =>
2026-10-24T03:20:26.0512822Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0513009Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0513299Z 216 โ current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-24T03:20:26.0513402Z โฐโโโโ
2026-10-24T03:20:26.0514044Z 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-24T03:20:26.0514480Z 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-24T03:20:26.0514514Z
2026-10-24T03:20:26.0514790Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0514997Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:296:7]
2026-10-24T03:20:26.0515115Z 284 โ }, [hasWorkspaceSnapshot]);
2026-10-24T03:20:26.0515216Z 285 โ useEffect(() => {
2026-10-24T03:20:26.0515304Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0515461Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0515670Z 286 โ if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-24T03:20:26.0515859Z 287 โ const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-24T03:20:26.0515947Z 288 โ const now = Date.now();
2026-10-24T03:20:26.0516095Z 289 โ const lastRequest = workspaceRefreshKeyRef.current;
2026-10-24T03:20:26.0516193Z 290 โ if (
2026-10-24T03:20:26.0516311Z 291 โ lastRequest?.key === key &&
2026-10-24T03:20:26.0516464Z 292 โ now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-24T03:20:26.0516652Z 293 โ )
2026-10-24T03:20:26.0516745Z 294 โ return;
2026-10-24T03:20:26.0516980Z 295 โ if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-24T03:20:26.0517083Z 296 โ setWorkspaceRefreshRetry(null);
2026-10-24T03:20:26.0517215Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0517436Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0517537Z 297 โ return;
2026-10-24T03:20:26.0517632Z โฐโโโโ
2026-10-24T03:20:26.0518246Z 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-24T03:20:26.0518606Z 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-24T03:20:26.0518609Z
2026-10-24T03:20:26.0518838Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0519056Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:326:5]
2026-10-24T03:20:26.0519148Z 325 โ }, [
2026-10-24T03:20:26.0519232Z 326 โ draftMessage,
2026-10-24T03:20:26.0519347Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0519529Z ยท โฐโโ Unnecessary dependency `draftMessage`
2026-10-24T03:20:26.0519636Z 327 โ environmentId,
2026-10-24T03:20:26.0519806Z โฐโโโโ
2026-10-24T03:20:26.0520137Z 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-24T03:20:26.0520475Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0520478Z
2026-10-24T03:20:26.0520899Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0521131Z โญโ[apps/mobile/src/features/threads/thread-inspector-content-stack.tsx:60:5]
2026-10-24T03:20:26.0521220Z 58 โ
2026-10-24T03:20:26.0521315Z 59 โ useEffect(() => {
2026-10-24T03:20:26.0525423Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0525589Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0525673Z 60 โ setMountedModes((current) => {
2026-10-24T03:20:26.0525755Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0525928Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0526014Z 61 โ if (current.has(props.mode)) {
2026-10-24T03:20:26.0526069Z โฐโโโโ
2026-10-24T03:20:26.0526682Z 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-24T03:20:26.0527014Z 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-24T03:20:26.0527017Z
2026-10-24T03:20:26.0527283Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0527449Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T03:20:26.0527516Z 259 โ .join("|");
2026-10-24T03:20:26.0527582Z 260 โ useEffect(() => {
2026-10-24T03:20:26.0527657Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0527797Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0527862Z 261 โ stop();
2026-10-24T03:20:26.0527932Z ยท โโโฌโ
2026-10-24T03:20:26.0528099Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0528167Z 262 โ }, [orderVersion]);
2026-10-24T03:20:26.0528221Z โฐโโโโ
2026-10-24T03:20:26.0528822Z 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-24T03:20:26.0529153Z 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-24T03:20:26.0529158Z
2026-10-24T03:20:26.0529379Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T03:20:26.0529543Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T03:20:26.0529610Z 260 โ useEffect(() => {
2026-10-24T03:20:26.0529670Z 261 โ stop();
2026-10-24T03:20:26.0529739Z ยท โโโฌโ
2026-10-24T03:20:26.0529869Z ยท โฐโโ Missing dependency `stop`
2026-10-24T03:20:26.0529935Z 262 โ }, [orderVersion]);
2026-10-24T03:20:26.0530015Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0530167Z ยท โฐโโ Unnecessary dependency `orderVersion`
2026-10-24T03:20:26.0530230Z 263 โ useEffect(
2026-10-24T03:20:26.0530384Z โฐโโโโ
2026-10-24T03:20:26.0530846Z 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-24T03:20:26.0531161Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0531164Z
2026-10-24T03:20:26.0531313Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0531474Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-24T03:20:26.0531554Z 95 โ const latest = useRef(props);
2026-10-24T03:20:26.0531623Z 96 โ latest.current = props;
2026-10-24T03:20:26.0531738Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T03:20:26.0531924Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T03:20:26.0532043Z ยท โฐโโ This value is a ref
2026-10-24T03:20:26.0532114Z 97 โ const gesture = useMemo(
2026-10-24T03:20:26.0532166Z โฐโโโโ
2026-10-24T03:20:26.0532664Z 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-24T03:20:26.0532960Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0532963Z
2026-10-24T03:20:26.0533116Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0533283Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-24T03:20:26.0533349Z 103 โ .runOnJS(true)
2026-10-24T03:20:26.0533453Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T03:20:26.0533572Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0533781Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T03:20:26.0533919Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0533972Z โฐโโโโ
2026-10-24T03:20:26.0534449Z 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-24T03:20:26.0534743Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0534745Z
2026-10-24T03:20:26.0534892Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0535055Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-24T03:20:26.0535158Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T03:20:26.0535290Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0535436Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0535730Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T03:20:26.0535889Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0535943Z โฐโโโโ
2026-10-24T03:20:26.0536412Z 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-24T03:20:26.0536708Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0536711Z
2026-10-24T03:20:26.0536857Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0537024Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-24T03:20:26.0537156Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0537280Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0537426Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0537634Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T03:20:26.0537760Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T03:20:26.0537811Z โฐโโโโ
2026-10-24T03:20:26.0538278Z 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-24T03:20:26.0538578Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0538583Z
2026-10-24T03:20:26.0538855Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0539018Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-24T03:20:26.0539142Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0539265Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T03:20:26.0539409Z ยท โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0539720Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T03:20:26.0539828Z 108 โ [props.disabled],
2026-10-24T03:20:26.0539882Z โฐโโโโ
2026-10-24T03:20:26.0540350Z 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-24T03:20:26.0540643Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0540646Z
2026-10-24T03:20:26.0540793Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0540955Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-24T03:20:26.0541073Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T03:20:26.0541185Z 249 โ latest.current = { rows, planners, moveThread };
2026-10-24T03:20:26.0541293Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T03:20:26.0541476Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T03:20:26.0541595Z ยท โฐโโ This value is a ref
2026-10-24T03:20:26.0541654Z 250 โ
2026-10-24T03:20:26.0541708Z โฐโโโโ
2026-10-24T03:20:26.0542172Z 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-24T03:20:26.0542503Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0542508Z
2026-10-24T03:20:26.0542656Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0542818Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-24T03:20:26.0542937Z 246 โ const [preview, setPreview] = useState<Drag | null>(null);
2026-10-24T03:20:26.0543055Z 247 โ const translateY = useRef(new Animated.Value(0)).current;
2026-10-24T03:20:26.0543183Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0543352Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0543464Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T03:20:26.0543516Z โฐโโโโ
2026-10-24T03:20:26.0543990Z 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-24T03:20:26.0544286Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0544288Z
2026-10-24T03:20:26.0544460Z โ react(purity): Cannot call impure function during render
2026-10-24T03:20:26.0544621Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-24T03:20:26.0544687Z 323 โ update(0);
2026-10-24T03:20:26.0544772Z 324 โ let last = performance.now();
2026-10-24T03:20:26.0544870Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0545082Z ยท โฐโโ Cannot call impure function
2026-10-24T03:20:26.0545183Z 325 โ const tick = () => {
2026-10-24T03:20:26.0545237Z โฐโโโโ
2026-10-24T03:20:26.0545541Z 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-24T03:20:26.0545843Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T03:20:26.0545846Z
2026-10-24T03:20:26.0546038Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T03:20:26.0546199Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-24T03:20:26.0546260Z 98 โ () =>
2026-10-24T03:20:26.0546333Z 99 โ Gesture.Pan()
2026-10-24T03:20:26.0546411Z ยท โโฌโ
2026-10-24T03:20:26.0546544Z ยท โฐโโ `Pan` may be a component
2026-10-24T03:20:26.0546626Z 100 โ .enabled(!props.disabled)
2026-10-24T03:20:26.0546679Z โฐโโโโ
2026-10-24T03:20:26.0546956Z 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-24T03:20:26.0547405Z 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-24T03:20:26.0547408Z
2026-10-24T03:20:26.0547600Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T03:20:26.0547767Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-24T03:20:26.0547838Z 103 โ .runOnJS(true)
2026-10-24T03:20:26.0547938Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T03:20:26.0548028Z ยท โโโโฌโโ
2026-10-24T03:20:26.0548465Z ยท โฐโโ 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-24T03:20:26.0548599Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0548723Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T03:20:26.0548848Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T03:20:26.0548923Z 108 โ [props.disabled],
2026-10-24T03:20:26.0549009Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0549199Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T03:20:26.0549256Z 109 โ );
2026-10-24T03:20:26.0549308Z โฐโโโโ
2026-10-24T03:20:26.0549516Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T03:20:26.0549828Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0549831Z
2026-10-24T03:20:26.0549989Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0550228Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:111:5]
2026-10-24T03:20:26.0550320Z 107 โ );
2026-10-24T03:20:26.0550475Z 108 โ const separationProgress = useSharedValue(props.showScrollToEnd ? 1 : 0);
2026-10-24T03:20:26.0550566Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0550721Z ยท โฐโโ `separationProgress` originates here
2026-10-24T03:20:26.0550776Z 109 โ
2026-10-24T03:20:26.0550841Z 110 โ useEffect(() => {
2026-10-24T03:20:26.0551017Z 111 โ separationProgress.value = withTiming(props.showScrollToEnd ? 1 : 0, CONTROL_TIMING);
2026-10-24T03:20:26.0551103Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0551256Z ยท โฐโโ `separationProgress` cannot be modified
2026-10-24T03:20:26.0551369Z 112 โ }, [props.showScrollToEnd, separationProgress]);
2026-10-24T03:20:26.0551422Z โฐโโโโ
2026-10-24T03:20:26.0551697Z 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-24T03:20:26.0552010Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0552012Z
2026-10-24T03:20:26.0552169Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0552334Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-24T03:20:26.0552448Z 128 โ // and repeatedly retargets the animation as it grows.
2026-10-24T03:20:26.0552596Z 129 โ const capsuleWidth = useSharedValue<number | null>(null);
2026-10-24T03:20:26.0552679Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0552821Z ยท โฐโโ `capsuleWidth` originates here
2026-10-24T03:20:26.0552937Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-24T03:20:26.0553055Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T03:20:26.0553163Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-24T03:20:26.0553260Z 133 โ if (width === measuredWidthRef.current) {
2026-10-24T03:20:26.0553324Z 134 โ return;
2026-10-24T03:20:26.0553380Z 135 โ }
2026-10-24T03:20:26.0553489Z 136 โ const first = measuredWidthRef.current === null;
2026-10-24T03:20:26.0553576Z 137 โ measuredWidthRef.current = width;
2026-10-24T03:20:26.0553721Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T03:20:26.0553801Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0553948Z ยท โฐโโ `capsuleWidth` cannot be modified
2026-10-24T03:20:26.0554005Z 139 โ };
2026-10-24T03:20:26.0554058Z โฐโโโโ
2026-10-24T03:20:26.0554325Z 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-24T03:20:26.0554632Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0554635Z
2026-10-24T03:20:26.0554792Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0554958Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-24T03:20:26.0555070Z 128 โ // and repeatedly retargets the animation as it grows.
2026-10-24T03:20:26.0555261Z 129 โ const capsuleWidth = useSharedValue<number | null>(null);
2026-10-24T03:20:26.0555374Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0555513Z ยท โฐโโ `capsuleWidth` originates here
2026-10-24T03:20:26.0555624Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-24T03:20:26.0555741Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T03:20:26.0555845Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-24T03:20:26.0555943Z 133 โ if (width === measuredWidthRef.current) {
2026-10-24T03:20:26.0556004Z 134 โ return;
2026-10-24T03:20:26.0556059Z 135 โ }
2026-10-24T03:20:26.0556164Z 136 โ const first = measuredWidthRef.current === null;
2026-10-24T03:20:26.0556253Z 137 โ measuredWidthRef.current = width;
2026-10-24T03:20:26.0556396Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T03:20:26.0556455Z 139 โ };
2026-10-24T03:20:26.0556547Z 140 โ const hasStatus = props.status !== null;
2026-10-24T03:20:26.0556681Z 141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-24T03:20:26.0556748Z 142 โ useEffect(() => {
2026-10-24T03:20:26.0556816Z 143 โ if (!hasStatus) {
2026-10-24T03:20:26.0556903Z 144 โ measuredWidthRef.current = null;
2026-10-24T03:20:26.0556983Z 145 โ capsuleWidth.value = null;
2026-10-24T03:20:26.0557062Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0557203Z ยท โฐโโ `capsuleWidth` cannot be modified
2026-10-24T03:20:26.0557258Z 146 โ }
2026-10-24T03:20:26.0557311Z โฐโโโโ
2026-10-24T03:20:26.0557574Z 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-24T03:20:26.0557887Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0557892Z
2026-10-24T03:20:26.0558096Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T03:20:26.0558264Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-24T03:20:26.0558401Z 141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-24T03:20:26.0558467Z 142 โ useEffect(() => {
2026-10-24T03:20:26.0558545Z ยท โโโโฌโโโ
2026-10-24T03:20:26.0558768Z ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-24T03:20:26.0558835Z 143 โ if (!hasStatus) {
2026-10-24T03:20:26.0558928Z 144 โ measuredWidthRef.current = null;
2026-10-24T03:20:26.0559008Z 145 โ capsuleWidth.value = null;
2026-10-24T03:20:26.0559086Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0559222Z ยท โฐโโ This modifies `capsuleWidth`
2026-10-24T03:20:26.0559278Z 146 โ }
2026-10-24T03:20:26.0559328Z โฐโโโโ
2026-10-24T03:20:26.0559675Z 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-24T03:20:26.0559982Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0559985Z
2026-10-24T03:20:26.0560259Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T03:20:26.0560459Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-24T03:20:26.0560571Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-24T03:20:26.0560690Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T03:20:26.0560816Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0561059Z ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-24T03:20:26.0561164Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-24T03:20:26.0561264Z 133 โ if (width === measuredWidthRef.current) {
2026-10-24T03:20:26.0561325Z 134 โ return;
2026-10-24T03:20:26.0561381Z 135 โ }
2026-10-24T03:20:26.0561493Z 136 โ const first = measuredWidthRef.current === null;
2026-10-24T03:20:26.0561582Z 137 โ measuredWidthRef.current = width;
2026-10-24T03:20:26.0561725Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T03:20:26.0561803Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0561937Z ยท โฐโโ This modifies `capsuleWidth`
2026-10-24T03:20:26.0561994Z 139 โ };
2026-10-24T03:20:26.0562046Z โฐโโโโ
2026-10-24T03:20:26.0562387Z 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-24T03:20:26.0562726Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0562735Z
2026-10-24T03:20:26.0562999Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0563195Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-24T03:20:26.0563248Z 104 โ
2026-10-24T03:20:26.0563314Z 105 โ useEffect(() => {
2026-10-24T03:20:26.0563386Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0563516Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0563597Z 106 โ clearReviewCommentTarget();
2026-10-24T03:20:26.0563696Z 107 โ setPendingNativeCommentSelection(null);
2026-10-24T03:20:26.0563804Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0564055Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0564163Z 108 โ }, [selectedSection?.id]);
2026-10-24T03:20:26.0564217Z โฐโโโโ
2026-10-24T03:20:26.0564827Z 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-24T03:20:26.0565154Z 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-24T03:20:26.0565157Z
2026-10-24T03:20:26.0565416Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0565609Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-24T03:20:26.0565665Z 109 โ
2026-10-24T03:20:26.0565728Z 110 โ useEffect(() => {
2026-10-24T03:20:26.0565802Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0565932Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0566022Z 111 โ if (activeCommentTarget === null) {
2026-10-24T03:20:26.0566122Z 112 โ setPendingNativeCommentSelection(null);
2026-10-24T03:20:26.0566232Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0566411Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0566469Z 113 โ }
2026-10-24T03:20:26.0566521Z โฐโโโโ
2026-10-24T03:20:26.0567127Z 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-24T03:20:26.0567456Z 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-24T03:20:26.0567458Z
2026-10-24T03:20:26.0567661Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0567849Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-24T03:20:26.0567946Z 107 โ setPendingNativeCommentSelection(null);
2026-10-24T03:20:26.0568020Z 108 โ }, [selectedSection?.id]);
2026-10-24T03:20:26.0568116Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0568280Z ยท โฐโโ Unnecessary dependency `selectedSection?.id`
2026-10-24T03:20:26.0568332Z 109 โ
2026-10-24T03:20:26.0568385Z โฐโโโโ
2026-10-24T03:20:26.0568680Z 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-24T03:20:26.0568993Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0568996Z
2026-10-24T03:20:26.0569194Z โ eslint(no-unused-vars): Type 'EnvironmentId' is imported but never used.
2026-10-24T03:20:26.0569337Z โญโ[packages/client-runtime/src/state/sharedSettings.ts:2:3]
2026-10-24T03:20:26.0569470Z 1 โ import type {
2026-10-24T03:20:26.0569666Z 2 โ EnvironmentId,
2026-10-24T03:20:26.0569741Z ยท โโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0569880Z ยท โฐโโ 'EnvironmentId' is imported here
2026-10-24T03:20:26.0569967Z 3 โ ExecutionEnvironmentCapabilities,
2026-10-24T03:20:26.0570019Z โฐโโโโ
2026-10-24T03:20:26.0570117Z help: Consider removing this import.
2026-10-24T03:20:26.0570120Z
2026-10-24T03:20:26.0570325Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T03:20:26.0570460Z โญโ[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-24T03:20:26.0570533Z 2 โ AuthDiagnosticsReadScope,
2026-10-24T03:20:26.0570601Z 3 โ type AuthSessionState,
2026-10-24T03:20:26.0570686Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0570841Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T03:20:26.0570911Z 4 โ sessionGrantsScope,
2026-10-24T03:20:26.0570961Z โฐโโโโ
2026-10-24T03:20:26.0571060Z help: Consider removing this import.
2026-10-24T03:20:26.0571063Z
2026-10-24T03:20:26.0571323Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0571493Z โญโ[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
2026-10-24T03:20:26.0571546Z 100 โ
2026-10-24T03:20:26.0571612Z 101 โ useEffect(() => {
2026-10-24T03:20:26.0571685Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0571816Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0571924Z 102 โ if (!target || selectedLines.length === 0) {
2026-10-24T03:20:26.0572011Z 103 โ setHighlightedLinesById({});
2026-10-24T03:20:26.0572105Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0572281Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0572343Z 104 โ return;
2026-10-24T03:20:26.0572395Z โฐโโโโ
2026-10-24T03:20:26.0573029Z 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-24T03:20:26.0573359Z 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-24T03:20:26.0573365Z
2026-10-24T03:20:26.0573563Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T03:20:26.0573714Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
2026-10-24T03:20:26.0573824Z 222 โ ? snippetTokens.map((line, lineIndex) => (
2026-10-24T03:20:26.0573919Z 223 โ <NativeText key={lineIndex}>
2026-10-24T03:20:26.0574028Z ยท โโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0574122Z 224 โ {lineIndex > 0 ? "\n" : ""}
2026-10-24T03:20:26.0574174Z โฐโโโโ
2026-10-24T03:20:26.0574323Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T03:20:26.0574326Z
2026-10-24T03:20:26.0574602Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T03:20:26.0574780Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
2026-10-24T03:20:26.0574857Z 226 โ <NativeText
2026-10-24T03:20:26.0574942Z 227 โ key={tokenIndex}
2026-10-24T03:20:26.0575046Z ยท โโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0575119Z 228 โ style={{
2026-10-24T03:20:26.0575171Z โฐโโโโ
2026-10-24T03:20:26.0575317Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T03:20:26.0575320Z
2026-10-24T03:20:26.0575577Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0575761Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:60:5]
2026-10-24T03:20:26.0575816Z 55 โ
2026-10-24T03:20:26.0575884Z 56 โ useEffect(() => {
2026-10-24T03:20:26.0575956Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0576086Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0576155Z 57 โ scheduler.reset();
2026-10-24T03:20:26.0576252Z 58 โ highlightedRowIdsRef.current = new Set();
2026-10-24T03:20:26.0576338Z 59 โ visibleChunkIndexRef.current = 0;
2026-10-24T03:20:26.0576454Z 60 โ setVisibleRange({ firstRowIndex: 0, lastRowIndex: 80 });
2026-10-24T03:20:26.0576536Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0576709Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0576837Z 61 โ setTokensPatchJson(createEmptyTokenPatch(resetKey));
2026-10-24T03:20:26.0576888Z โฐโโโโ
2026-10-24T03:20:26.0577500Z 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-24T03:20:26.0577826Z 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-24T03:20:26.0577828Z
2026-10-24T03:20:26.0578033Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0578209Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
2026-10-24T03:20:26.0578289Z 62 โ return () => scheduler.cancel();
2026-10-24T03:20:26.0578395Z 63 โ }, [enabled, resetKey, rows.length, scheduler]);
2026-10-24T03:20:26.0578524Z ยท โโโโฌโโโ โโโโโโฌโโโโโ
2026-10-24T03:20:26.0578836Z ยท โ โฐโโ Unnecessary dependency `rows.length`
2026-10-24T03:20:26.0578976Z ยท โฐโโ Unnecessary dependency `enabled`
2026-10-24T03:20:26.0579029Z 64 โ
2026-10-24T03:20:26.0579081Z โฐโโโโ
2026-10-24T03:20:26.0579376Z 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-24T03:20:26.0579691Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0579694Z
2026-10-24T03:20:26.0579984Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T03:20:26.0580258Z โญโ[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-24T03:20:26.0580331Z 2 โ AuthFilesystemReadScope,
2026-10-24T03:20:26.0580403Z 3 โ type AuthSessionState,
2026-10-24T03:20:26.0580486Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0580632Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T03:20:26.0580708Z 4 โ type FilesystemBrowseEntry,
2026-10-24T03:20:26.0580760Z โฐโโโโ
2026-10-24T03:20:26.0580859Z help: Consider removing this import.
2026-10-24T03:20:26.0580861Z
2026-10-24T03:20:26.0581054Z โ eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-24T03:20:26.0581194Z โญโ[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-24T03:20:26.0581315Z 3 โ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-24T03:20:26.0581394Z 4 โ import * as Arr from "effect/Array";
2026-10-24T03:20:26.0581468Z ยท โโฌโ
2026-10-24T03:20:26.0581594Z ยท โฐโโ 'Arr' is imported here
2026-10-24T03:20:26.0581679Z 5 โ import * as Order from "effect/Order";
2026-10-24T03:20:26.0581730Z โฐโโโโ
2026-10-24T03:20:26.0581829Z help: Consider removing this import.
2026-10-24T03:20:26.0581831Z
2026-10-24T03:20:26.0582025Z โ eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-24T03:20:26.0582158Z โญโ[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-24T03:20:26.0582242Z 4 โ import * as Arr from "effect/Array";
2026-10-24T03:20:26.0582327Z 5 โ import * as Order from "effect/Order";
2026-10-24T03:20:26.0582402Z ยท โโโฌโโ
2026-10-24T03:20:26.0582565Z ยท โฐโโ 'Order' is imported here
2026-10-24T03:20:26.0582618Z 6 โ
2026-10-24T03:20:26.0582669Z โฐโโโโ
2026-10-24T03:20:26.0582767Z help: Consider removing this import.
2026-10-24T03:20:26.0582770Z
2026-10-24T03:20:26.0583245Z โ 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-24T03:20:26.0583406Z โญโ[packages/client-runtime/src/state/threads-sync.test.ts:1680:7]
2026-10-24T03:20:26.0583499Z 1679 โ yield* harness.replaceSession;
2026-10-24T03:20:26.0583793Z 1680 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T03:20:26.0583980Z 1681 โ โ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) {
2026-10-24T03:20:26.0584070Z 1682 โ โ break;
2026-10-24T03:20:26.0584148Z 1683 โ โ }
2026-10-24T03:20:26.0584259Z 1684 โ โ yield* Effect.yieldNow;
2026-10-24T03:20:26.0584394Z 1685 โ โฐโโถ }
2026-10-24T03:20:26.0584468Z 1686 โ yield* Queue.offer(
2026-10-24T03:20:26.0584521Z โฐโโโโ
2026-10-24T03:20:26.0584524Z
2026-10-24T03:20:26.0585002Z โ 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-24T03:20:26.0585164Z โญโ[packages/client-runtime/src/state/threads-sync.test.ts:1789:7]
2026-10-24T03:20:26.0585258Z 1788 โ yield* harness.replaceSession;
2026-10-24T03:20:26.0585464Z 1789 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T03:20:26.0585627Z 1790 โ โ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) break;
2026-10-24T03:20:26.0585735Z 1791 โ โ yield* Effect.yieldNow;
2026-10-24T03:20:26.0585870Z 1792 โ โฐโโถ }
2026-10-24T03:20:26.0586002Z 1793 โ expect(yield* Ref.get(harness.subscriptionCount)).toBe(2);
2026-10-24T03:20:26.0586059Z โฐโโโโ
2026-10-24T03:20:26.0586065Z
2026-10-24T03:20:26.0586271Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0586408Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
2026-10-24T03:20:26.0586492Z 453 โ showAuxiliaryPane("inspector");
2026-10-24T03:20:26.0586600Z 454 โ }, [environmentId, showAuxiliaryPane, threadId]);
2026-10-24T03:20:26.0586746Z ยท โโโโโโโฌโโโโโโ โโโโโฌโโโ
2026-10-24T03:20:26.0586947Z ยท โ โฐโโ Unnecessary dependency `threadId`
2026-10-24T03:20:26.0587098Z ยท โฐโโ Unnecessary dependency `environmentId`
2026-10-24T03:20:26.0587158Z 455 โ const {
2026-10-24T03:20:26.0587211Z โฐโโโโ
2026-10-24T03:20:26.0587519Z 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-24T03:20:26.0587836Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0587839Z
2026-10-24T03:20:26.0588026Z โ react(static-components): Cannot create components during render
2026-10-24T03:20:26.0588161Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:725:20]
2026-10-24T03:20:26.0588226Z 492 โ // same check.
2026-10-24T03:20:26.0588354Z 493 โ const NativeReviewDiffView = resolveNativeReviewDiffView();
2026-10-24T03:20:26.0588477Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-24T03:20:26.0588733Z ยท โฐโโ The component is created during render here
2026-10-24T03:20:26.0588919Z 494 โ const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
2026-10-24T03:20:26.0589041Z 495 โ const showcasedReviewDrawRef = useRef<string | null>(null);
2026-10-24T03:20:26.0589175Z 496 โ const [isPullRefreshing, setIsPullRefreshing] = useState(false);
2026-10-24T03:20:26.0589268Z 497 โ const handlePullToRefresh = async () => {
2026-10-24T03:20:26.0589346Z 498 โ setIsPullRefreshing(true);
2026-10-24T03:20:26.0589430Z 499 โ await refreshSelectedSection();
2026-10-24T03:20:26.0589507Z 500 โ setIsPullRefreshing(false);
2026-10-24T03:20:26.0589561Z 501 โ };
2026-10-24T03:20:26.0589705Z 502 โ const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
2026-10-24T03:20:26.0589855Z 503 โ const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
2026-10-24T03:20:26.0589966Z 504 โ const fileVisibility = useReviewFileVisibility({
2026-10-24T03:20:26.0590051Z 505 โ threadKey: reviewCache.threadKey,
2026-10-24T03:20:26.0590142Z 506 โ sectionId: selectedSection?.id ?? null,
2026-10-24T03:20:26.0590210Z 507 โ files: reviewFiles,
2026-10-24T03:20:26.0590310Z 508 โ cachedExpandedFileIds: selectedSection?.id
2026-10-24T03:20:26.0590443Z 509 โ ? reviewCache.expandedFileIdsBySection[selectedSection.id]
2026-10-24T03:20:26.0590507Z 510 โ : undefined,
2026-10-24T03:20:26.0590604Z 511 โ cachedViewedFileIds: selectedSection?.id
2026-10-24T03:20:26.0590729Z 512 โ ? reviewCache.viewedFileIdsBySection[selectedSection.id]
2026-10-24T03:20:26.0590792Z 513 โ : undefined,
2026-10-24T03:20:26.0590847Z 514 โ });
2026-10-24T03:20:26.0591046Z 515 โ const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
2026-10-24T03:20:26.0591181Z 516 โ const commentSelection = useReviewCommentSelectionController({
2026-10-24T03:20:26.0591243Z 517 โ environmentId,
2026-10-24T03:20:26.0591306Z 518 โ threadId,
2026-10-24T03:20:26.0591373Z 519 โ selectedSection,
2026-10-24T03:20:26.0591443Z 520 โ nativeReviewDiffData,
2026-10-24T03:20:26.0591500Z 521 โ });
2026-10-24T03:20:26.0591607Z 522 โ const nativeBridge = useNativeReviewDiffBridge({
2026-10-24T03:20:26.0591693Z 523 โ threadKey: reviewCache.threadKey,
2026-10-24T03:20:26.0591783Z 524 โ sectionId: selectedSection?.id ?? null,
2026-10-24T03:20:26.0591862Z 525 โ diff: selectedSection?.diff,
2026-10-24T03:20:26.0591940Z 526 โ data: nativeReviewDiffData,
2026-10-24T03:20:26.0592008Z 527 โ collapsedFileIds,
2026-10-24T03:20:26.0592076Z 528 โ viewedFileIds,
2026-10-24T03:20:26.0592190Z 529 โ selectedRowIds: commentSelection.selectedRowIds,
2026-10-24T03:20:26.0592287Z 530 โ canHighlight: parsedDiff.kind === "files",
2026-10-24T03:20:26.0592343Z 531 โ });
2026-10-24T03:20:26.0592415Z 532 โ const showcaseReviewKey =
2026-10-24T03:20:26.0592579Z 533 โ SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
2026-10-24T03:20:26.0592790Z 534 โ ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
2026-10-24T03:20:26.0592852Z 535 โ : null;
2026-10-24T03:20:26.0593019Z 536 โ const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
2026-10-24T03:20:26.0593097Z 537 โ nativeBridge.onDebug(event);
2026-10-24T03:20:26.0593155Z 538 โ if (
2026-10-24T03:20:26.0593236Z 539 โ showcaseReviewKey === null ||
2026-10-24T03:20:26.0593434Z 540 โ showcasedReviewDrawRef.current === showcaseReviewKey ||
2026-10-24T03:20:26.0593576Z 541 โ !isNativeReviewDiffDrawEvent(event.nativeEvent)
2026-10-24T03:20:26.0593633Z 542 โ ) {
2026-10-24T03:20:26.0593694Z 543 โ return;
2026-10-24T03:20:26.0593747Z 544 โ }
2026-10-24T03:20:26.0593860Z 545 โ showcasedReviewDrawRef.current = showcaseReviewKey;
2026-10-24T03:20:26.0594023Z 546 โ reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
2026-10-24T03:20:26.0594076Z 547 โ };
2026-10-24T03:20:26.0594130Z 548 โ
2026-10-24T03:20:26.0594250Z 549 โ const handleSelectFile = async (fileId: string | null) => {
2026-10-24T03:20:26.0594331Z 550 โ loadVisibleFile(fileId, true);
2026-10-24T03:20:26.0594419Z 551 โ commentSelection.clearSelection();
2026-10-24T03:20:26.0594548Z 552 โ if (fileId !== null && collapsedFileIds.includes(fileId)) {
2026-10-24T03:20:26.0594630Z 553 โ toggleExpandedFile(fileId);
2026-10-24T03:20:26.0594684Z 554 โ }
2026-10-24T03:20:26.0594796Z 555 โ const nativeView = nativeReviewDiffViewRef.current;
2026-10-24T03:20:26.0594868Z 556 โ if (!nativeView) return;
2026-10-24T03:20:26.0594963Z 557 โ const result = await settlePromise(() =>
2026-10-24T03:20:26.0595139Z 558 โ fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
2026-10-24T03:20:26.0595194Z 559 โ );
2026-10-24T03:20:26.0595284Z 560 โ if (AsyncResult.isFailure(result)) {
2026-10-24T03:20:26.0595468Z 561 โ console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
2026-10-24T03:20:26.0595523Z 562 โ }
2026-10-24T03:20:26.0595576Z 563 โ };
2026-10-24T03:20:26.0595660Z 564 โ const handleVisibleFileChange = (
2026-10-24T03:20:26.0595799Z 565 โ event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
2026-10-24T03:20:26.0595860Z 566 โ ) => {
2026-10-24T03:20:26.0595969Z 567 โ loadVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-24T03:20:26.0596138Z 568 โ reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-24T03:20:26.0596193Z 569 โ };
2026-10-24T03:20:26.0596272Z 570 โ const renderInspector = () => (
2026-10-24T03:20:26.0596340Z 571 โ <ReviewFileNavigator
2026-10-24T03:20:26.0596423Z 572 โ ref={reviewFileNavigatorRef}
2026-10-24T03:20:26.0596515Z 573 โ files={nativeReviewDiffData.files}
2026-10-24T03:20:26.0596590Z 574 โ headerInset={insets.top}
2026-10-24T03:20:26.0596682Z 575 โ sectionId={selectedSection?.id ?? null}
2026-10-24T03:20:26.0596799Z 576 โ onSelectFile={(fileId) => void handleSelectFile(fileId)}
2026-10-24T03:20:26.0596860Z 577 โ />
2026-10-24T03:20:26.0596916Z 578 โ );
2026-10-24T03:20:26.0596969Z 579 โ
2026-10-24T03:20:26.0597156Z 580 โ const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
2026-10-24T03:20:26.0597245Z 581 โ const { fileId } = event.nativeEvent;
2026-10-24T03:20:26.0597308Z 582 โ if (fileId) {
2026-10-24T03:20:26.0597390Z 583 โ loadVisibleFile(fileId, true);
2026-10-24T03:20:26.0597469Z 584 โ toggleExpandedFile(fileId);
2026-10-24T03:20:26.0597523Z 585 โ }
2026-10-24T03:20:26.0597576Z 586 โ };
2026-10-24T03:20:26.0597630Z 587 โ
2026-10-24T03:20:26.0597720Z 588 โ const handleNativeToggleViewedFile = (
2026-10-24T03:20:26.0597839Z 589 โ event: NativeSyntheticEvent<{ readonly fileId?: string }>,
2026-10-24T03:20:26.0597896Z 590 โ ) => {
2026-10-24T03:20:26.0598058Z 591 โ const { fileId } = event.nativeEvent;
2026-10-24T03:20:26.0598153Z 592 โ if (fileId) {
2026-10-24T03:20:26.0598230Z 593 โ toggleViewedFile(fileId);
2026-10-24T03:20:26.0598283Z 594 โ }
2026-10-24T03:20:26.0598338Z 595 โ };
2026-10-24T03:20:26.0598390Z 596 โ
2026-10-24T03:20:26.0598461Z 597 โ const parsedDiffNotice =
2026-10-24T03:20:26.0598624Z 598 โ parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
2026-10-24T03:20:26.0598747Z 599 โ const hasCachedSelectedDiff = selectedSection?.diff != null;
2026-10-24T03:20:26.0598904Z 600 โ const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
2026-10-24T03:20:26.0599024Z 601 โ const sectionMenu = buildReviewSectionMenu(reviewSections);
2026-10-24T03:20:26.0599185Z 602 โ const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
2026-10-24T03:20:26.0599302Z 603 โ hasEnvironmentPresentation: environment.isReady,
2026-10-24T03:20:26.0599407Z 604 โ isEnvironmentConnected: isEnvironmentReady,
2026-10-24T03:20:26.0599479Z 605 โ hasCachedSelectedDiff,
2026-10-24T03:20:26.0599545Z 606 โ hasAnyCachedDiff,
2026-10-24T03:20:26.0599600Z 607 โ });
2026-10-24T03:20:26.0599688Z 608 โ const handleRetryEnvironment = () => {
2026-10-24T03:20:26.0599775Z 609 โ void retryEnvironment(environmentId);
2026-10-24T03:20:26.0599829Z 610 โ };
2026-10-24T03:20:26.0599915Z 611 โ const handleReturnToThread = () => {
2026-10-24T03:20:26.0599994Z 612 โ if (navigation.canGoBack()) {
2026-10-24T03:20:26.0600063Z 613 โ navigation.goBack();
2026-10-24T03:20:26.0600125Z 614 โ return;
2026-10-24T03:20:26.0600178Z 615 โ }
2026-10-24T03:20:26.0600259Z 616 โ navigation.navigate("Thread", {
2026-10-24T03:20:26.0600354Z 617 โ environmentId: String(environmentId),
2026-10-24T03:20:26.0600434Z 618 โ threadId: String(threadId),
2026-10-24T03:20:26.0600492Z 619 โ });
2026-10-24T03:20:26.0600545Z 620 โ };
2026-10-24T03:20:26.0600622Z 621 โ const androidHeaderSubtitle = [
2026-10-24T03:20:26.0600695Z 622 โ selectedSection?.title,
2026-10-24T03:20:26.0600776Z 623 โ headerDiffSummary.additions,
2026-10-24T03:20:26.0600854Z 624 โ headerDiffSummary.deletions,
2026-10-24T03:20:26.0600909Z 625 โ ]
2026-10-24T03:20:26.0601017Z 626 โ .filter((part): part is string => Boolean(part))
2026-10-24T03:20:26.0601083Z 627 โ .join(" ยท ");
2026-10-24T03:20:26.0601136Z 628 โ
2026-10-24T03:20:26.0601214Z 629 โ const showChangedFilesPane =
2026-10-24T03:20:26.0601286Z 630 โ !showConnectionNotice &&
2026-10-24T03:20:26.0601361Z 631 โ selectedSection !== null &&
2026-10-24T03:20:26.0601447Z 632 โ parsedDiff.kind === "files" &&
2026-10-24T03:20:26.0601529Z 633 โ NativeReviewDiffView !== null;
2026-10-24T03:20:26.0601701Z 634 โ useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
2026-10-24T03:20:26.0601875Z 635 โ const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
2026-10-24T03:20:26.0601926Z 636 โ
2026-10-24T03:20:26.0601999Z 637 โ const listHeader = (() => {
2026-10-24T03:20:26.0602086Z 638 โ const children: ReactElement[] = [];
2026-10-24T03:20:26.0602140Z 639 โ
2026-10-24T03:20:26.0602203Z 640 โ if (error) {
2026-10-24T03:20:26.0602270Z 641 โ children.push(
2026-10-24T03:20:26.0602332Z 642 โ <View
2026-10-24T03:20:26.0602403Z 643 โ key="review-error"
2026-10-24T03:20:26.0602505Z 644 โ className={cn(
2026-10-24T03:20:26.0602661Z 645 โ "bg-card px-4 py-3",
2026-10-24T03:20:26.0602845Z 646 โ Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
2026-10-24T03:20:26.0602905Z 647 โ )}
2026-10-24T03:20:26.0602962Z 648 โ >
2026-10-24T03:20:26.0603127Z 649 โ <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
2026-10-24T03:20:26.0603287Z 650 โ <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
2026-10-24T03:20:26.0603347Z 651 โ </View>,
2026-10-24T03:20:26.0603404Z 652 โ );
2026-10-24T03:20:26.0603459Z 653 โ }
2026-10-24T03:20:26.0603511Z 654 โ
2026-10-24T03:20:26.0603582Z 655 โ if (parsedDiffNotice) {
2026-10-24T03:20:26.0603743Z 656 โ children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
2026-10-24T03:20:26.0603799Z 657 โ }
2026-10-24T03:20:26.0603858Z 658 โ
2026-10-24T03:20:26.0603936Z 659 โ if (children.length === 0) {
2026-10-24T03:20:26.0604003Z 660 โ return null;
2026-10-24T03:20:26.0604058Z 661 โ }
2026-10-24T03:20:26.0604111Z 662 โ
2026-10-24T03:20:26.0604182Z 663 โ return <>{children}</>;
2026-10-24T03:20:26.0604239Z 664 โ })();
2026-10-24T03:20:26.0604311Z 665 โ const headerSubtitle = [
2026-10-24T03:20:26.0604390Z 666 โ headerDiffSummary.additions,
2026-10-24T03:20:26.0604469Z 667 โ headerDiffSummary.deletions,
2026-10-24T03:20:26.0604550Z 668 โ pendingReviewCommentCount > 0
2026-10-24T03:20:26.0604725Z 669 โ ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
2026-10-24T03:20:26.0604786Z 670 โ : null,
2026-10-24T03:20:26.0604840Z 671 โ ]
2026-10-24T03:20:26.0604906Z 672 โ .filter(Boolean)
2026-10-24T03:20:26.0604975Z 673 โ .join(" ยท ");
2026-10-24T03:20:26.0605113Z 674 โ const headerTitleText = selectedSection?.title ?? "Review changes";
2026-10-24T03:20:26.0605168Z 675 โ
2026-10-24T03:20:26.0605228Z 676 โ return (
2026-10-24T03:20:26.0605287Z 677 โ <>
2026-10-24T03:20:26.0605350Z 678 โ <ReviewHeader
2026-10-24T03:20:26.0605434Z 679 โ environmentId={environmentId}
2026-10-24T03:20:26.0605504Z 680 โ threadId={threadId}
2026-10-24T03:20:26.0605579Z 681 โ title={headerTitleText}
2026-10-24T03:20:26.0605655Z 682 โ subtitle={headerSubtitle}
2026-10-24T03:20:26.0605755Z 683 โ androidSubtitle={androidHeaderSubtitle}
2026-10-24T03:20:26.0605829Z 684 โ iconColor={headerIcon}
2026-10-24T03:20:26.0605925Z 685 โ selectedThreadCwd={selectedThreadCwd}
2026-10-24T03:20:26.0606000Z 686 โ sectionMenu={sectionMenu}
2026-10-24T03:20:26.0606094Z 687 โ selectedSection={selectedSection}
2026-10-24T03:20:26.0606195Z 688 โ showSectionToolbar={showSectionToolbar}
2026-10-24T03:20:26.0606304Z 689 โ showChangedFilesToggle={showChangedFilesToggle}
2026-10-24T03:20:26.0606391Z 690 โ onRefresh={handlePullToRefresh}
2026-10-24T03:20:26.0606475Z 691 โ onSelectSection={selectSection}
2026-10-24T03:20:26.0606572Z 692 โ onReturnToThread={handleReturnToThread}
2026-10-24T03:20:26.0606628Z 693 โ />
2026-10-24T03:20:26.0606682Z 694 โ
2026-10-24T03:20:26.0606750Z 695 โ <ScreenContent>
2026-10-24T03:20:26.0606872Z 696 โ <View className="flex-1 bg-sheet android:bg-sheet-solid">
2026-10-24T03:20:26.0606953Z 697 โ {showConnectionNotice ? (
2026-10-24T03:20:26.0607094Z 698 โ <View className="flex-1" style={{ paddingTop: topContentInset }}>
2026-10-24T03:20:26.0607266Z 699 โ <EnvironmentConnectionNotice
2026-10-24T03:20:26.0607474Z 700 โ environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
2026-10-24T03:20:26.0607544Z 701 โ connection={
2026-10-24T03:20:26.0607652Z 702 โ environment.presentation?.connection ?? {
2026-10-24T03:20:26.0607734Z 703 โ phase: "available",
2026-10-24T03:20:26.0607808Z 704 โ error: null,
2026-10-24T03:20:26.0607883Z 705 โ traceId: null,
2026-10-24T03:20:26.0607947Z 706 โ }
2026-10-24T03:20:26.0608009Z 707 โ }
2026-10-24T03:20:26.0608090Z 708 โ resourceName="review"
2026-10-24T03:20:26.0608187Z 709 โ onRetry={handleRetryEnvironment}
2026-10-24T03:20:26.0608249Z 710 โ />
2026-10-24T03:20:26.0608318Z 711 โ </View>
2026-10-24T03:20:26.0608479Z 712 โ ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
2026-10-24T03:20:26.0608540Z 713 โ <View
2026-10-24T03:20:26.0608615Z 714 โ className="flex-1"
2026-10-24T03:20:26.0608680Z 715 โ style={{
2026-10-24T03:20:26.0608798Z 716 โ backgroundColor: nativeBridge.theme.background,
2026-10-24T03:20:26.0608858Z 717 โ }}
2026-10-24T03:20:26.0608918Z 718 โ >
2026-10-24T03:20:26.0608981Z 719 โ <View
2026-10-24T03:20:26.0609068Z 720 โ className="min-w-0 flex-1"
2026-10-24T03:20:26.0609207Z 721 โ style={listHeader ? { paddingTop: topContentInset } : undefined}
2026-10-24T03:20:26.0609268Z 722 โ >
2026-10-24T03:20:26.0609338Z 723 โ {listHeader}
2026-10-24T03:20:26.0609464Z 724 โ <View className="min-w-0 flex-1" collapsable={false}>
2026-10-24T03:20:26.0609550Z 725 โ <NativeReviewDiffView
2026-10-24T03:20:26.0609658Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0609829Z ยท โฐโโ This component is created during render
2026-10-24T03:20:26.0609910Z 726 โ collapsable={false}
2026-10-24T03:20:26.0609963Z โฐโโโโ
2026-10-24T03:20:26.0610217Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-24T03:20:26.0610539Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T03:20:26.0610542Z
2026-10-24T03:20:26.0610719Z โ react(purity): Cannot call impure function during render
2026-10-24T03:20:26.0610872Z โญโ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:372:47]
2026-10-24T03:20:26.0611004Z 371 โ const { open, onOpenChange, onSnooze, timestampFormat } = props;
2026-10-24T03:20:26.0611159Z 372 โ const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
2026-10-24T03:20:26.0611276Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0611439Z ยท โฐโโ Cannot call impure function
2026-10-24T03:20:26.0611502Z 373 โ return (
2026-10-24T03:20:26.0611558Z โฐโโโโ
2026-10-24T03:20:26.0611840Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T03:20:26.0612206Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T03:20:26.0612241Z
2026-10-24T03:20:26.0612407Z โ react(purity): Cannot call impure function during render
2026-10-24T03:20:26.0612592Z โญโ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:853:39]
2026-10-24T03:20:26.0612687Z 852 โ if (snoozeGateClock.thread !== thread) {
2026-10-24T03:20:26.0612818Z 853 โ setSnoozeGateClock({ thread, now: new Date().toISOString() });
2026-10-24T03:20:26.0612928Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0613088Z ยท โฐโโ Cannot call impure function
2026-10-24T03:20:26.0613143Z 854 โ }
2026-10-24T03:20:26.0613202Z โฐโโโโ
2026-10-24T03:20:26.0613483Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T03:20:26.0613781Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T03:20:26.0613783Z
2026-10-24T03:20:26.0613978Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T03:20:26.0614152Z โญโ[apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx:88:15]
2026-10-24T03:20:26.0614214Z 87 โ <li
2026-10-24T03:20:26.0614302Z 88 โ key={`${index}:${check.name}`}
2026-10-24T03:20:26.0614417Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0614573Z 89 โ className="col-span-full grid grid-cols-subgrid items-center text-xs"
2026-10-24T03:20:26.0614627Z โฐโโโโ
2026-10-24T03:20:26.0614776Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T03:20:26.0614778Z
2026-10-24T03:20:26.0615055Z โ eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-24T03:20:26.0615205Z โญโ[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-24T03:20:26.0615264Z 60 โ ) {
2026-10-24T03:20:26.0615432Z 61 โ const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-24T03:20:26.0615513Z ยท โโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0615656Z ยท โฐโโ 'useDragRegion' is declared here
2026-10-24T03:20:26.0615816Z 62 โ const isInline = props.mode === "inline";
2026-10-24T03:20:26.0615899Z โฐโโโโ
2026-10-24T03:20:26.0616006Z help: Consider removing this declaration.
2026-10-24T03:20:26.0616009Z
2026-10-24T03:20:26.0616155Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0616316Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-24T03:20:26.0616474Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T03:20:26.0616601Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T03:20:26.0616724Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T03:20:26.0616902Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0617027Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T03:20:26.0617082Z โฐโโโโ
2026-10-24T03:20:26.0617557Z 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-24T03:20:26.0617852Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0617855Z
2026-10-24T03:20:26.0618001Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0618159Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-24T03:20:26.0618214Z 125 โ
2026-10-24T03:20:26.0618328Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T03:20:26.0618418Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0618570Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0618859Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T03:20:26.0618913Z โฐโโโโ
2026-10-24T03:20:26.0619384Z 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-24T03:20:26.0619677Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0619681Z
2026-10-24T03:20:26.0619831Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0619993Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-24T03:20:26.0620047Z 125 โ
2026-10-24T03:20:26.0620155Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T03:20:26.0620242Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0620392Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0620493Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T03:20:26.0620546Z โฐโโโโ
2026-10-24T03:20:26.0621010Z 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-24T03:20:26.0621394Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0621441Z
2026-10-24T03:20:26.0621585Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0621745Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-24T03:20:26.0621797Z 125 โ
2026-10-24T03:20:26.0621905Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T03:20:26.0622021Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0622192Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0622292Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T03:20:26.0622345Z โฐโโโโ
2026-10-24T03:20:26.0622855Z 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-24T03:20:26.0623148Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0623151Z
2026-10-24T03:20:26.0623295Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0623454Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-24T03:20:26.0623507Z 125 โ
2026-10-24T03:20:26.0623615Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T03:20:26.0623734Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0623901Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0624002Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T03:20:26.0624054Z โฐโโโโ
2026-10-24T03:20:26.0624521Z 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-24T03:20:26.0624812Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0624815Z
2026-10-24T03:20:26.0624958Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0625121Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T03:20:26.0625237Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T03:20:26.0625433Z 127 โ โญโโถ const recorder = createLazyVoiceRecorder({
2026-10-24T03:20:26.0625608Z 128 โ โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T03:20:26.0625736Z 129 โ โ onStatus: (status: RecordingStatus) => {
2026-10-24T03:20:26.0625892Z 130 โ โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T03:20:26.0626012Z 131 โ โ isFinished: status.isFinished,
2026-10-24T03:20:26.0626191Z 132 โ โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T03:20:26.0626364Z 133 โ โ error: status.error,
2026-10-24T03:20:26.0626642Z 134 โ โ url: status.url,
2026-10-24T03:20:26.0626724Z 135 โ โ });
2026-10-24T03:20:26.0626803Z 136 โ โ },
2026-10-24T03:20:26.0627000Z 137 โ โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T03:20:26.0627110Z 138 โ โ selectInput: (inputs) => {
2026-10-24T03:20:26.0627267Z 139 โ โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T03:20:26.0627416Z 140 โ โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T03:20:26.0627582Z 141 โ โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T03:20:26.0627728Z 142 โ โ const order = rememberMicrophones(known, inputs);
2026-10-24T03:20:26.0627834Z 143 โ โ if (order !== known) {
2026-10-24T03:20:26.0627975Z 144 โ โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T03:20:26.0628090Z 145 โ โ transform: (current) => ({
2026-10-24T03:20:26.0628299Z 146 โ โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T03:20:26.0628388Z 147 โ โ }),
2026-10-24T03:20:26.0628471Z 148 โ โ });
2026-10-24T03:20:26.0628548Z 149 โ โ }
2026-10-24T03:20:26.0628689Z 150 โ โ return preferredMicrophoneInput(inputs, order);
2026-10-24T03:20:26.0628774Z 151 โ โ },
2026-10-24T03:20:26.0628909Z 152 โ โโโถ });
2026-10-24T03:20:26.0629148Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T03:20:26.0629235Z 153 โ recorderRef.current = recorder;
2026-10-24T03:20:26.0629288Z โฐโโโโ
2026-10-24T03:20:26.0629757Z 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-24T03:20:26.0630051Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0630054Z
2026-10-24T03:20:26.0630204Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0630367Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T03:20:26.0630426Z 152 โ });
2026-10-24T03:20:26.0630509Z 153 โ recorderRef.current = recorder;
2026-10-24T03:20:26.0630623Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T03:20:26.0630810Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T03:20:26.0630928Z ยท โฐโโ This value is a ref
2026-10-24T03:20:26.0631035Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T03:20:26.0631086Z โฐโโโโ
2026-10-24T03:20:26.0631626Z 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-24T03:20:26.0631946Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0631948Z
2026-10-24T03:20:26.0632093Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0632253Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T03:20:26.0632338Z 153 โ recorderRef.current = recorder;
2026-10-24T03:20:26.0632565Z 154 โ โญโโถ sessionRef.current = new VoiceInputSession({
2026-10-24T03:20:26.0632653Z 155 โ โ recorder,
2026-10-24T03:20:26.0632789Z 156 โ โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T03:20:26.0632908Z 157 โ โ requestPermission: async () => {
2026-10-24T03:20:26.0633072Z 158 โ โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T03:20:26.0633265Z 159 โ โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T03:20:26.0633344Z 160 โ โ },
2026-10-24T03:20:26.0633485Z 161 โ โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T03:20:26.0633622Z 162 โ โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T03:20:26.0633760Z 163 โ โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T03:20:26.0633880Z 164 โ โ onStateChange: (nextState) =>
2026-10-24T03:20:26.0633974Z 165 โ โ setState({
2026-10-24T03:20:26.0634076Z 166 โ โ state: nextState,
2026-10-24T03:20:26.0634216Z 167 โ โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T03:20:26.0634346Z 168 โ โ label: sessionRef.current?.label ?? null,
2026-10-24T03:20:26.0634426Z 169 โ โ }),
2026-10-24T03:20:26.0634556Z 170 โ โโโถ });
2026-10-24T03:20:26.0634756Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T03:20:26.0634814Z 171 โ }
2026-10-24T03:20:26.0634866Z โฐโโโโ
2026-10-24T03:20:26.0635341Z 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-24T03:20:26.0635634Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0635636Z
2026-10-24T03:20:26.0635782Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0635940Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T03:20:26.0636021Z 153 โ recorderRef.current = recorder;
2026-10-24T03:20:26.0636124Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T03:20:26.0636237Z ยท โโโโโโฌโโโโโโโโโฌโโโ
2026-10-24T03:20:26.0636493Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T03:20:26.0636639Z ยท โฐโโ This value is a ref
2026-10-24T03:20:26.0636703Z 155 โ recorder,
2026-10-24T03:20:26.0636757Z โฐโโโโ
2026-10-24T03:20:26.0637222Z 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-24T03:20:26.0637513Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0637515Z
2026-10-24T03:20:26.0637663Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0637825Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T03:20:26.0637914Z 184 โ return () => subscription.remove();
2026-10-24T03:20:26.0637981Z 185 โ }, [controller]);
2026-10-24T03:20:26.0638056Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0638202Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0638256Z 186 โ
2026-10-24T03:20:26.0638307Z โฐโโโโ
2026-10-24T03:20:26.0638773Z 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-24T03:20:26.0639071Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0639076Z
2026-10-24T03:20:26.0639221Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0639378Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T03:20:26.0639465Z 184 โ return () => subscription.remove();
2026-10-24T03:20:26.0639530Z 185 โ }, [controller]);
2026-10-24T03:20:26.0639608Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0639751Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0639804Z 186 โ
2026-10-24T03:20:26.0639855Z โฐโโโโ
2026-10-24T03:20:26.0640327Z 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-24T03:20:26.0640622Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0640624Z
2026-10-24T03:20:26.0640767Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0640923Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T03:20:26.0640981Z 191 โ },
2026-10-24T03:20:26.0641053Z 192 โ [controller, recorder],
2026-10-24T03:20:26.0641131Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0641275Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0641330Z 193 โ );
2026-10-24T03:20:26.0641382Z โฐโโโโ
2026-10-24T03:20:26.0641924Z 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-24T03:20:26.0642251Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0642254Z
2026-10-24T03:20:26.0642396Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0642593Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T03:20:26.0642684Z 174 โ const controller = session.controller;
2026-10-24T03:20:26.0642772Z 175 โ const recorder = recorderRef.current;
2026-10-24T03:20:26.0642880Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0643043Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0643096Z 176 โ
2026-10-24T03:20:26.0643147Z โฐโโโโ
2026-10-24T03:20:26.0643611Z 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-24T03:20:26.0643903Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0643906Z
2026-10-24T03:20:26.0644050Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0644213Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T03:20:26.0644271Z 191 โ },
2026-10-24T03:20:26.0644342Z 192 โ [controller, recorder],
2026-10-24T03:20:26.0644433Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T03:20:26.0644580Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0644636Z 193 โ );
2026-10-24T03:20:26.0644686Z โฐโโโโ
2026-10-24T03:20:26.0645155Z 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-24T03:20:26.0645443Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0645511Z
2026-10-24T03:20:26.0645823Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0645981Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T03:20:26.0646076Z 245 โ return () => clearInterval(intervalId);
2026-10-24T03:20:26.0646189Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T03:20:26.0646277Z ยท โโโโโโฌโโโโ
2026-10-24T03:20:26.0646431Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0646486Z 247 โ
2026-10-24T03:20:26.0646538Z โฐโโโโ
2026-10-24T03:20:26.0647011Z 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-24T03:20:26.0647306Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0647308Z
2026-10-24T03:20:26.0647451Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0647611Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T03:20:26.0647702Z 245 โ return () => clearInterval(intervalId);
2026-10-24T03:20:26.0647813Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T03:20:26.0647943Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0648105Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0648164Z 247 โ
2026-10-24T03:20:26.0648219Z โฐโโโโ
2026-10-24T03:20:26.0648685Z 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-24T03:20:26.0648977Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0648980Z
2026-10-24T03:20:26.0649124Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0649283Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T03:20:26.0649351Z 260 โ setOwnerFocused,
2026-10-24T03:20:26.0649412Z 261 โ session,
2026-10-24T03:20:26.0649489Z ยท โโโโฌโโโ
2026-10-24T03:20:26.0649630Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0649691Z 262 โ stop,
2026-10-24T03:20:26.0649743Z โฐโโโโ
2026-10-24T03:20:26.0650211Z 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-24T03:20:26.0650501Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0650503Z
2026-10-24T03:20:26.0650647Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0650876Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T03:20:26.0650973Z 250 โ
2026-10-24T03:20:26.0651115Z 251 โ โญโโถ return {
2026-10-24T03:20:26.0651328Z 252 โ โ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T03:20:26.0651410Z 253 โ โ state,
2026-10-24T03:20:26.0651498Z 254 โ โ audioLevels,
2026-10-24T03:20:26.0651592Z 255 โ โ elapsedSeconds,
2026-10-24T03:20:26.0651723Z 256 โ โ isBusy: voiceInputBlocksSubmission(state),
2026-10-24T03:20:26.0651808Z 257 โ โ ownerKey,
2026-10-24T03:20:26.0651886Z 258 โ โ label,
2026-10-24T03:20:26.0651978Z 259 โ โ focusedOwners,
2026-10-24T03:20:26.0652079Z 260 โ โ setOwnerFocused,
2026-10-24T03:20:26.0652165Z 261 โ โ session,
2026-10-24T03:20:26.0652241Z 262 โ โ stop,
2026-10-24T03:20:26.0652323Z 263 โ โ cancel,
2026-10-24T03:20:26.0652453Z 264 โ โโโถ };
2026-10-24T03:20:26.0652692Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T03:20:26.0652748Z 265 โ }
2026-10-24T03:20:26.0652801Z โฐโโโโ
2026-10-24T03:20:26.0653268Z 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-24T03:20:26.0653564Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0653570Z
2026-10-24T03:20:26.0653728Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0653887Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T03:20:26.0654049Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T03:20:26.0654174Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T03:20:26.0654253Z ยท โโโโโโฌโโโโโ
2026-10-24T03:20:26.0654390Z ยท โฐโโ `audioLevels` originates here
2026-10-24T03:20:26.0654515Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T03:20:26.0654664Z 124 โ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T03:20:26.0654716Z 125 โ
2026-10-24T03:20:26.0654824Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T03:20:26.0654925Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T03:20:26.0655064Z 128 โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T03:20:26.0655159Z 129 โ onStatus: (status: RecordingStatus) => {
2026-10-24T03:20:26.0655281Z 130 โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T03:20:26.0655368Z 131 โ isFinished: status.isFinished,
2026-10-24T03:20:26.0655513Z 132 โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T03:20:26.0655587Z 133 โ error: status.error,
2026-10-24T03:20:26.0655727Z 134 โ url: status.url,
2026-10-24T03:20:26.0655818Z 135 โ });
2026-10-24T03:20:26.0655878Z 136 โ },
2026-10-24T03:20:26.0656042Z 137 โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T03:20:26.0656121Z 138 โ selectInput: (inputs) => {
2026-10-24T03:20:26.0656248Z 139 โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T03:20:26.0656362Z 140 โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T03:20:26.0656495Z 141 โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T03:20:26.0656605Z 142 โ const order = rememberMicrophones(known, inputs);
2026-10-24T03:20:26.0656679Z 143 โ if (order !== known) {
2026-10-24T03:20:26.0656788Z 144 โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T03:20:26.0656872Z 145 โ transform: (current) => ({
2026-10-24T03:20:26.0657054Z 146 โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T03:20:26.0657120Z 147 โ }),
2026-10-24T03:20:26.0657182Z 148 โ });
2026-10-24T03:20:26.0657238Z 149 โ }
2026-10-24T03:20:26.0657348Z 150 โ return preferredMicrophoneInput(inputs, order);
2026-10-24T03:20:26.0657405Z 151 โ },
2026-10-24T03:20:26.0657463Z 152 โ });
2026-10-24T03:20:26.0657544Z 153 โ recorderRef.current = recorder;
2026-10-24T03:20:26.0657646Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T03:20:26.0657710Z 155 โ recorder,
2026-10-24T03:20:26.0657811Z 156 โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T03:20:26.0657895Z 157 โ requestPermission: async () => {
2026-10-24T03:20:26.0658034Z 158 โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T03:20:26.0658194Z 159 โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T03:20:26.0658252Z 160 โ },
2026-10-24T03:20:26.0658362Z 161 โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T03:20:26.0658470Z 162 โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T03:20:26.0658574Z 163 โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T03:20:26.0658763Z 164 โ onStateChange: (nextState) =>
2026-10-24T03:20:26.0658828Z 165 โ setState({
2026-10-24T03:20:26.0658901Z 166 โ state: nextState,
2026-10-24T03:20:26.0659012Z 167 โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T03:20:26.0659112Z 168 โ label: sessionRef.current?.label ?? null,
2026-10-24T03:20:26.0659170Z 169 โ }),
2026-10-24T03:20:26.0659225Z 170 โ });
2026-10-24T03:20:26.0659287Z 171 โ }
2026-10-24T03:20:26.0659341Z 172 โ
2026-10-24T03:20:26.0659428Z 173 โ const session = sessionRef.current;
2026-10-24T03:20:26.0659517Z 174 โ const controller = session.controller;
2026-10-24T03:20:26.0659606Z 175 โ const recorder = recorderRef.current;
2026-10-24T03:20:26.0659658Z 176 โ
2026-10-24T03:20:26.0659724Z 177 โ useEffect(() => {
2026-10-24T03:20:26.0659876Z 178 โ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T03:20:26.0660017Z 179 โ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T03:20:26.0660156Z 180 โ // real background state cancels preparation; recorder status handles
2026-10-24T03:20:26.0660263Z 181 โ // calls and route interruptions during capture.
2026-10-24T03:20:26.0660400Z 182 โ if (nextState === "background") controller.appMovedToBackground();
2026-10-24T03:20:26.0660552Z 183 โ });
2026-10-24T03:20:26.0660680Z 184 โ return () => subscription.remove();
2026-10-24T03:20:26.0660746Z 185 โ }, [controller]);
2026-10-24T03:20:26.0660800Z 186 โ
2026-10-24T03:20:26.0660863Z 187 โ useEffect(
2026-10-24T03:20:26.0660924Z 188 โ () => () => {
2026-10-24T03:20:26.0660998Z 189 โ controller.dispose();
2026-10-24T03:20:26.0661069Z 190 โ recorder.release();
2026-10-24T03:20:26.0661125Z 191 โ },
2026-10-24T03:20:26.0661195Z 192 โ [controller, recorder],
2026-10-24T03:20:26.0661252Z 193 โ );
2026-10-24T03:20:26.0661305Z 194 โ
2026-10-24T03:20:26.0661367Z 195 โ useEffect(() => {
2026-10-24T03:20:26.0661462Z 196 โ if (state.phase !== "recording") return;
2026-10-24T03:20:26.0661515Z 197 โ
2026-10-24T03:20:26.0661671Z 198 โ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T03:20:26.0661779Z 199 โ const activation = activateKeepAwakeAsync(tag);
2026-10-24T03:20:26.0661863Z 200 โ void activation.catch(() => {});
2026-10-24T03:20:26.0661927Z 201 โ return () => {
2026-10-24T03:20:26.0662078Z 202 โ // Release after activation settles, even if the recording ends immediately.
2026-10-24T03:20:26.0662217Z 203 โ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T03:20:26.0662272Z 204 โ };
2026-10-24T03:20:26.0662352Z 205 โ }, [keepAwakeId, state.phase]);
2026-10-24T03:20:26.0662406Z 206 โ
2026-10-24T03:20:26.0662497Z 207 โ useEffect(() => {
2026-10-24T03:20:26.0662634Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T03:20:26.0662686Z 209 โ
2026-10-24T03:20:26.0662808Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T03:20:26.0662969Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T03:20:26.0663076Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T03:20:26.0663157Z ยท โโโโโโฌโโโโโ
2026-10-24T03:20:26.0663301Z ยท โฐโโ `audioLevels` cannot be modified
2026-10-24T03:20:26.0663356Z 213 โ }
2026-10-24T03:20:26.0663409Z โฐโโโโ
2026-10-24T03:20:26.0663681Z 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-24T03:20:26.0663991Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0663994Z
2026-10-24T03:20:26.0664201Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T03:20:26.0664366Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T03:20:26.0664420Z 206 โ
2026-10-24T03:20:26.0664485Z 207 โ useEffect(() => {
2026-10-24T03:20:26.0664563Z ยท โโโโฌโโโ
2026-10-24T03:20:26.0664784Z ยท โฐโโ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T03:20:26.0664923Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T03:20:26.0664977Z 209 โ
2026-10-24T03:20:26.0665097Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T03:20:26.0665254Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T03:20:26.0665430Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T03:20:26.0665540Z ยท โโโโโโฌโโโโโ
2026-10-24T03:20:26.0665675Z ยท โฐโโ This modifies `audioLevels`
2026-10-24T03:20:26.0665733Z 213 โ }
2026-10-24T03:20:26.0665785Z โฐโโโโ
2026-10-24T03:20:26.0666131Z 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-24T03:20:26.0666436Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0666440Z
2026-10-24T03:20:26.0666597Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0666772Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-24T03:20:26.0666831Z 90 โ }) {
2026-10-24T03:20:26.0666944Z 91 โ const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-24T03:20:26.0667019Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0667153Z ยท โฐโโ `rotation` originates here
2026-10-24T03:20:26.0667223Z 92 โ useLayoutEffect(() => {
2026-10-24T03:20:26.0667365Z 93 โ rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-24T03:20:26.0667437Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0667570Z ยท โฐโโ `rotation` cannot be modified
2026-10-24T03:20:26.0667647Z 94 โ }, [props.hidden, rotation]);
2026-10-24T03:20:26.0667699Z โฐโโโโ
2026-10-24T03:20:26.0667972Z 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-24T03:20:26.0668282Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0668285Z
2026-10-24T03:20:26.0668443Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0668616Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-24T03:20:26.0668710Z 266 โ const variant = props.variant ?? "plain";
2026-10-24T03:20:26.0668845Z 267 โ const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-24T03:20:26.0668934Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0669083Z ยท โฐโโ `loadingVisibility` originates here
2026-10-24T03:20:26.0669158Z 268 โ useLayoutEffect(() => {
2026-10-24T03:20:26.0669320Z 269 โ loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-24T03:20:26.0669403Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T03:20:26.0669554Z ยท โฐโโ `loadingVisibility` cannot be modified
2026-10-24T03:20:26.0669645Z 270 โ }, [loadingVisibility, props.loading]);
2026-10-24T03:20:26.0669698Z โฐโโโโ
2026-10-24T03:20:26.0669962Z 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-24T03:20:26.0670268Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0670271Z
2026-10-24T03:20:26.0670499Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0670699Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-24T03:20:26.0670755Z 325 โ }) {
2026-10-24T03:20:26.0670914Z 326 โ const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-24T03:20:26.0671005Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0671158Z ยท โฐโโ `recordingVisibility` originates here
2026-10-24T03:20:26.0671228Z 327 โ useLayoutEffect(() => {
2026-10-24T03:20:26.0671415Z 328 โ recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-24T03:20:26.0671502Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0671655Z ยท โฐโโ `recordingVisibility` cannot be modified
2026-10-24T03:20:26.0671754Z 329 โ }, [props.phase, recordingVisibility]);
2026-10-24T03:20:26.0671810Z โฐโโโโ
2026-10-24T03:20:26.0672073Z 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-24T03:20:26.0672379Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0672383Z
2026-10-24T03:20:26.0672568Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0672739Z โญโ[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-24T03:20:26.0672843Z 65 โ const [expanded, setExpanded] = useState(false);
2026-10-24T03:20:26.0672928Z 66 โ const progress = useSharedValue(0);
2026-10-24T03:20:26.0673008Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0673141Z ยท โฐโโ `progress` originates here
2026-10-24T03:20:26.0673207Z 67 โ useEffect(() => {
2026-10-24T03:20:26.0673334Z 68 โ progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-24T03:20:26.0673404Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0673540Z ยท โฐโโ `progress` cannot be modified
2026-10-24T03:20:26.0673612Z 69 โ }, [expanded, progress]);
2026-10-24T03:20:26.0673663Z โฐโโโโ
2026-10-24T03:20:26.0673926Z 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-24T03:20:26.0674231Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0674318Z
2026-10-24T03:20:26.0674499Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0674670Z โญโ[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-24T03:20:26.0674751Z 26 โ const latestInput = useRef(input);
2026-10-24T03:20:26.0674829Z 27 โ latestInput.current = input;
2026-10-24T03:20:26.0674941Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T03:20:26.0675127Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T03:20:26.0675242Z ยท โฐโโ This value is a ref
2026-10-24T03:20:26.0675318Z 28 โ const mounted = useRef(true);
2026-10-24T03:20:26.0675371Z โฐโโโโ
2026-10-24T03:20:26.0675855Z 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-24T03:20:26.0676151Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0676153Z
2026-10-24T03:20:26.0676338Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T03:20:26.0676529Z โญโ[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-24T03:20:26.0676601Z 115 โ return [...commands];
2026-10-24T03:20:26.0676736Z 116 โ }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-24T03:20:26.0676858Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0677049Z ยท โฐโโ Unnecessary dependency `registrationVersion`
2026-10-24T03:20:26.0677103Z 117 โ
2026-10-24T03:20:26.0677156Z โฐโโโโ
2026-10-24T03:20:26.0677476Z 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-24T03:20:26.0677790Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0677793Z
2026-10-24T03:20:26.0678083Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T03:20:26.0678262Z โญโ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:473:19]
2026-10-24T03:20:26.0678327Z 472 โ onFilters,
2026-10-24T03:20:26.0678395Z 473 โ authorOptions = [],
2026-10-24T03:20:26.0678476Z ยท โโ
2026-10-24T03:20:26.0678543Z 474 โ labelOptions = [],
2026-10-24T03:20:26.0678594Z โฐโโโโ
2026-10-24T03:20:26.0678912Z 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-24T03:20:26.0678915Z
2026-10-24T03:20:26.0679201Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T03:20:26.0679370Z โญโ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:474:18]
2026-10-24T03:20:26.0679438Z 473 โ authorOptions = [],
2026-10-24T03:20:26.0679579Z 474 โ labelOptions = [],
2026-10-24T03:20:26.0679690Z ยท โโ
2026-10-24T03:20:26.0679755Z 475 โ optionScope,
2026-10-24T03:20:26.0679807Z โฐโโโโ
2026-10-24T03:20:26.0680125Z 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-24T03:20:26.0680128Z
2026-10-24T03:20:26.0680365Z โ unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T03:20:26.0680529Z โญโ[apps/web/src/components/pullRequest/pullRequestList.logic.ts:265:9]
2026-10-24T03:20:26.0680590Z 264 โ ): boolean {
2026-10-24T03:20:26.0680743Z 265 โ const labels = entry.labels.map((label) => label.name.trim().toLowerCase());
2026-10-24T03:20:26.0680915Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0681067Z 266 โ const holds = (label: string) => labels.includes(label.trim().toLowerCase());
2026-10-24T03:20:26.0681119Z โฐโโโโ
2026-10-24T03:20:26.0681196Z help: Switch to `Set`
2026-10-24T03:20:26.0681201Z
2026-10-24T03:20:26.0681667Z โ t3code(no-inline-schema-compile): Hoist Schema.encodeUnknownSync(...) 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-24T03:20:26.0681797Z โญโ[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-24T03:20:26.0681865Z 38 โ JSON.stringify(
2026-10-24T03:20:26.0681987Z 39 โ Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-24T03:20:26.0682085Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0682161Z 40 โ { name: "a" },
2026-10-24T03:20:26.0682215Z โฐโโโโ
2026-10-24T03:20:26.0682218Z
2026-10-24T03:20:26.0682501Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T03:20:26.0682631Z โญโ[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-24T03:20:26.0682689Z 3404 โ
2026-10-24T03:20:26.0682880Z 3405 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-24T03:20:26.0682953Z ยท โโโฌโโ
2026-10-24T03:20:26.0683082Z ยท โฐโโ 'layer' is declared here
2026-10-24T03:20:26.0683148Z 3406 โ Layer.effect(
2026-10-24T03:20:26.0683200Z โฐโโโโ
2026-10-24T03:20:26.0684710Z help: Consider removing this declaration.
2026-10-24T03:20:26.0684721Z
2026-10-24T03:20:26.0684934Z โ eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-24T03:20:26.0685072Z โญโ[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-24T03:20:26.0685168Z 23 โ import * as Deferred from "effect/Deferred";
2026-10-24T03:20:26.0685260Z 24 โ import * as Duration from "effect/Duration";
2026-10-24T03:20:26.0685339Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0685478Z ยท โฐโโ 'Duration' is imported here
2026-10-24T03:20:26.0685565Z 25 โ import * as Effect from "effect/Effect";
2026-10-24T03:20:26.0685616Z โฐโโโโ
2026-10-24T03:20:26.0685713Z help: Consider removing this import.
2026-10-24T03:20:26.0685716Z
2026-10-24T03:20:26.0686002Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T03:20:26.0686184Z โญโ[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-24T03:20:26.0686272Z 35 โ <T3SourceTextRunNativeComponent
2026-10-24T03:20:26.0686336Z 36 โ key={index}
2026-10-24T03:20:26.0686416Z ยท โโโโโโโโโโโ
2026-10-24T03:20:26.0686491Z 37 โ style={flattenedStyle}
2026-10-24T03:20:26.0686542Z โฐโโโโ
2026-10-24T03:20:26.0686688Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T03:20:26.0686691Z
2026-10-24T03:20:26.0687066Z โ 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-24T03:20:26.0687181Z โญโ[packages/contracts/src/auth.test.ts:17:12]
2026-10-24T03:20:26.0687346Z 16 โ it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-24T03:20:26.0687521Z 17 โ expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-24T03:20:26.0687622Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0687687Z 18 โ "review:write",
2026-10-24T03:20:26.0687738Z โฐโโโโ
2026-10-24T03:20:26.0687740Z
2026-10-24T03:20:26.0688105Z โ 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-24T03:20:26.0688216Z โญโ[packages/contracts/src/auth.test.ts:20:18]
2026-10-24T03:20:26.0688274Z 19 โ ]);
2026-10-24T03:20:26.0688437Z 20 โ expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-24T03:20:26.0688549Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0688683Z 21 โ expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-24T03:20:26.0688733Z โฐโโโโ
2026-10-24T03:20:26.0688736Z
2026-10-24T03:20:26.0689099Z โ 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-24T03:20:26.0689210Z โญโ[packages/contracts/src/auth.test.ts:58:21]
2026-10-24T03:20:26.0689380Z 57 โ it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-24T03:20:26.0689506Z 58 โ const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-24T03:20:26.0689614Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0689685Z 59 โ authenticated: true,
2026-10-24T03:20:26.0689742Z โฐโโโโ
2026-10-24T03:20:26.0689747Z
2026-10-24T03:20:26.0689942Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T03:20:26.0690111Z โญโ[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:814:17]
2026-10-24T03:20:26.0690174Z 813 โ <div
2026-10-24T03:20:26.0690289Z 814 โ key={`${index}:${check.name}:${check.url ?? ""}`}
2026-10-24T03:20:26.0690430Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0690601Z 815 โ className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
2026-10-24T03:20:26.0690652Z โฐโโโโ
2026-10-24T03:20:26.0690799Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T03:20:26.0690802Z
2026-10-24T03:20:26.0691085Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0691261Z โญโ[apps/mobile/src/state/use-thread-outbox-drain.ts:1315:5]
2026-10-24T03:20:26.0691343Z 1314 โ queuedMessagesByThreadKey,
2026-10-24T03:20:26.0691406Z 1315 โ retryTick,
2026-10-24T03:20:26.0691480Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0691624Z ยท โฐโโ Unnecessary dependency `retryTick`
2026-10-24T03:20:26.0691697Z 1316 โ restoreQueuedMessage,
2026-10-24T03:20:26.0691750Z โฐโโโโ
2026-10-24T03:20:26.0692045Z 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-24T03:20:26.0692363Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0692368Z
2026-10-24T03:20:26.0692661Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0692797Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T03:20:26.0692849Z 57 โ
2026-10-24T03:20:26.0692914Z 58 โ useEffect(() => {
2026-10-24T03:20:26.0692985Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0693115Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0693210Z 59 โ const controller = new AbortController();
2026-10-24T03:20:26.0693283Z 60 โ setLoadState("pending");
2026-10-24T03:20:26.0693359Z ยท โโโโโโโฌโโโโโ
2026-10-24T03:20:26.0693534Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0693696Z 61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T03:20:26.0693748Z โฐโโโโ
2026-10-24T03:20:26.0694357Z 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-24T03:20:26.0694681Z 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-24T03:20:26.0694684Z
2026-10-24T03:20:26.0694959Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0695130Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T03:20:26.0695213Z 70 โ return () => controller.abort();
2026-10-24T03:20:26.0695310Z 71 โ }, [player, props.playRequested, attempt]);
2026-10-24T03:20:26.0695484Z ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
2026-10-24T03:20:26.0695713Z ยท โ โ โฐโโ Unnecessary dependency `attempt`
2026-10-24T03:20:26.0695915Z ยท โ โฐโโ Unnecessary dependency `props.playRequested`
2026-10-24T03:20:26.0696054Z ยท โฐโโ Unnecessary dependency `player_0`
2026-10-24T03:20:26.0696108Z 72 โ
2026-10-24T03:20:26.0696159Z โฐโโโโ
2026-10-24T03:20:26.0696461Z 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-24T03:20:26.0696780Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0696783Z
2026-10-24T03:20:26.0696987Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0697120Z โญโ[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T03:20:26.0697175Z 81 โ },
2026-10-24T03:20:26.0697241Z 82 โ [draftKey],
2026-10-24T03:20:26.0697313Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0697450Z ยท โฐโโ Unnecessary dependency `draftKey`
2026-10-24T03:20:26.0697509Z 83 โ );
2026-10-24T03:20:26.0697563Z โฐโโโโ
2026-10-24T03:20:26.0697857Z 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-24T03:20:26.0698168Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0698171Z
2026-10-24T03:20:26.0698712Z โ t3code(no-inline-schema-compile): Hoist Schema.encodeUnknownSync(...) 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-24T03:20:26.0698874Z โญโ[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-24T03:20:26.0699018Z 180 โ it("sends a message without the records the wire cannot carry", () => {
2026-10-24T03:20:26.0699203Z 181 โ const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-24T03:20:26.0699311Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0699375Z 182 โ version: 1,
2026-10-24T03:20:26.0699428Z โฐโโโโ
2026-10-24T03:20:26.0699430Z
2026-10-24T03:20:26.0699623Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T03:20:26.0699772Z โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-24T03:20:26.0699880Z 266 โ {record.elements?.map((element, index) => (
2026-10-24T03:20:26.0700048Z 267 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T03:20:26.0700294Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0700414Z 268 โ <ContextField
2026-10-24T03:20:26.0700465Z โฐโโโโ
2026-10-24T03:20:26.0700615Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T03:20:26.0700618Z
2026-10-24T03:20:26.0700878Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0701009Z โญโ[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-24T03:20:26.0701119Z 83 โ const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-24T03:20:26.0701182Z 84 โ useEffect(() => {
2026-10-24T03:20:26.0701254Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0701384Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0701477Z 85 โ if (!actionState.isRunning) return;
2026-10-24T03:20:26.0701547Z 86 โ setNowMs(Date.now());
2026-10-24T03:20:26.0701618Z ยท โโโโโฌโโโ
2026-10-24T03:20:26.0701784Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0701910Z 87 โ const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-24T03:20:26.0701961Z โฐโโโโ
2026-10-24T03:20:26.0702603Z 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-24T03:20:26.0702931Z 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-24T03:20:26.0702936Z
2026-10-24T03:20:26.0703107Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T03:20:26.0703300Z โญโ[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-24T03:20:26.0703352Z 52 โ
2026-10-24T03:20:26.0703419Z 53 โ for (const {} of [
2026-10-24T03:20:26.0703492Z ยท โโ
2026-10-24T03:20:26.0703556Z 54 โ { healthy: true },
2026-10-24T03:20:26.0703608Z โฐโโโโ
2026-10-24T03:20:26.0703840Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T03:20:26.0703843Z
2026-10-24T03:20:26.0704106Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0704243Z โญโ[apps/mobile/src/components/ProjectFavicon.tsx:159:5]
2026-10-24T03:20:26.0704433Z 154 โ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-24T03:20:26.0704503Z 155 โ useLayoutEffect(() => {
2026-10-24T03:20:26.0704581Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T03:20:26.0704716Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0704803Z 156 โ if (faviconRequest === null) return;
2026-10-24T03:20:26.0704856Z 157 โ
2026-10-24T03:20:26.0704990Z 158 โ const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-24T03:20:26.0705087Z 159 โ setActiveFaviconRequest(faviconRequest);
2026-10-24T03:20:26.0705178Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T03:20:26.0705427Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0705525Z 160 โ return endRequest;
2026-10-24T03:20:26.0705577Z โฐโโโโ
2026-10-24T03:20:26.0706182Z 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-24T03:20:26.0706506Z 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-24T03:20:26.0706509Z
2026-10-24T03:20:26.0706770Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T03:20:26.0706916Z โญโ[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-24T03:20:26.0706972Z 3754 โ
2026-10-24T03:20:26.0707172Z 3755 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-24T03:20:26.0707243Z ยท โโโฌโโ
2026-10-24T03:20:26.0707368Z ยท โฐโโ 'layer' is declared here
2026-10-24T03:20:26.0707432Z 3756 โ Layer.effect(
2026-10-24T03:20:26.0707483Z โฐโโโโ
2026-10-24T03:20:26.0707589Z help: Consider removing this declaration.
2026-10-24T03:20:26.0707591Z
2026-10-24T03:20:26.0707885Z โ eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-24T03:20:26.0708018Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-24T03:20:26.0708073Z 217 โ
2026-10-24T03:20:26.0708222Z 218 โ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-24T03:20:26.0708312Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T03:20:26.0708469Z ยท โฐโโ 'revokeActiveMcpThread' is declared here
2026-10-24T03:20:26.0708658Z 219 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-24T03:20:26.0708709Z โฐโโโโ
2026-10-24T03:20:26.0708814Z help: Consider removing this declaration.
2026-10-24T03:20:26.0708816Z
2026-10-24T03:20:26.0709129Z โ eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T03:20:26.0709260Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-24T03:20:26.0709318Z 220 โ
2026-10-24T03:20:26.0709453Z 221 โ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-24T03:20:26.0709556Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0709734Z ยท โฐโโ 'revokeAllActiveMcpCredentials' is declared here
2026-10-24T03:20:26.0709898Z 222 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-24T03:20:26.0709949Z โฐโโโโ
2026-10-24T03:20:26.0710052Z help: Consider removing this declaration.
2026-10-24T03:20:26.0710054Z
2026-10-24T03:20:26.0710311Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0710459Z โญโ[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-24T03:20:26.0710586Z 61 โ }, []);
2026-10-24T03:20:26.0710687Z 62 โ useEffect(() => {
2026-10-24T03:20:26.0710757Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0710886Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0711036Z 63 โ if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-24T03:20:26.0711160Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0711364Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0711443Z 64 โ }, [playbackUrl, resolvedUrl]);
2026-10-24T03:20:26.0711494Z โฐโโโโ
2026-10-24T03:20:26.0712105Z 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-24T03:20:26.0712434Z 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-24T03:20:26.0712437Z
2026-10-24T03:20:26.0712614Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0712767Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T03:20:26.0712949Z 151 โ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T03:20:26.0713028Z 152 โ {props.children(open)}
2026-10-24T03:20:26.0713123Z ยท โโโฌโ
2026-10-24T03:20:26.0713283Z ยท โฐโโ Cannot access ref value during render
2026-10-24T03:20:26.0713346Z 153 โ </View>
2026-10-24T03:20:26.0713397Z โฐโโโโ
2026-10-24T03:20:26.0713869Z 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-24T03:20:26.0714162Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0714165Z
2026-10-24T03:20:26.0714365Z โ react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T03:20:26.0714521Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T03:20:26.0714605Z 139 โ if (action.id !== undefined) {
2026-10-24T03:20:26.0714683Z 140 โ props.onPressAction?.({
2026-10-24T03:20:26.0714755Z ยท โโโฌโโ
2026-10-24T03:20:26.0714886Z ยท โฐโโ Missing dependency `props`
2026-10-24T03:20:26.0714979Z 141 โ nativeEvent: { event: action.id },
2026-10-24T03:20:26.0715125Z 142 โ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T03:20:26.0715181Z 143 โ }
2026-10-24T03:20:26.0715238Z 144 โ },
2026-10-24T03:20:26.0715320Z 145 โ [close, props.onPressAction],
2026-10-24T03:20:26.0715413Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0715709Z ยท โฐโโ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T03:20:26.0715793Z 146 โ );
2026-10-24T03:20:26.0715844Z โฐโโโโ
2026-10-24T03:20:26.0716330Z 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-24T03:20:26.0716645Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0716648Z
2026-10-24T03:20:26.0716864Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-24T03:20:26.0716972Z โญโ[apps/mobile/src/Stack.tsx:1074:21]
2026-10-24T03:20:26.0717034Z 1073 โ <Navigator
2026-10-24T03:20:26.0717171Z 1074 โ screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-24T03:20:26.0717313Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0717383Z 1075 โ screenListeners={{
2026-10-24T03:20:26.0717436Z โฐโโโโ
2026-10-24T03:20:26.0717799Z help: Move this component definition out of the parent component `AdaptiveRootStack` and pass data as props. If you want to allow component creation in props, set `allowAsProps` option to true.
2026-10-24T03:20:26.0717804Z
2026-10-24T03:20:26.0717990Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0718130Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-24T03:20:26.0718294Z 120 โ const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-24T03:20:26.0718389Z 121 โ const dispatch = vi.fn((_: unknown) =>
2026-10-24T03:20:26.0718474Z ยท โฌ
2026-10-24T03:20:26.0718609Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0718711Z 122 โ (options.dispatchGate ?? Effect.void).pipe(
2026-10-24T03:20:26.0718762Z โฐโโโโ
2026-10-24T03:20:26.0718864Z help: Consider removing this parameter.
2026-10-24T03:20:26.0718867Z
2026-10-24T03:20:26.0719052Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0719190Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-24T03:20:26.0719244Z 133 โ );
2026-10-24T03:20:26.0719350Z 134 โ const listLocalBranchNames = vi.fn((_: string) =>
2026-10-24T03:20:26.0719520Z ยท โฌ
2026-10-24T03:20:26.0719691Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0719759Z 135 โ Effect.succeed(
2026-10-24T03:20:26.0719809Z โฐโโโโ
2026-10-24T03:20:26.0719910Z help: Consider removing this parameter.
2026-10-24T03:20:26.0719913Z
2026-10-24T03:20:26.0720095Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0720230Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-24T03:20:26.0720285Z 177 โ });
2026-10-24T03:20:26.0720384Z 178 โ const sendToThread = vi.fn((_: unknown) => {
2026-10-24T03:20:26.0720472Z ยท โฌ
2026-10-24T03:20:26.0720614Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0720716Z 179 โ switch (options.continuation ?? "queued") {
2026-10-24T03:20:26.0720768Z โฐโโโโ
2026-10-24T03:20:26.0720868Z help: Consider removing this parameter.
2026-10-24T03:20:26.0720871Z
2026-10-24T03:20:26.0721053Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0721187Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-24T03:20:26.0721242Z 202 โ );
2026-10-24T03:20:26.0721339Z 203 โ const removeWorktree = vi.fn((_: unknown) =>
2026-10-24T03:20:26.0721430Z ยท โฌ
2026-10-24T03:20:26.0721566Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0721647Z 204 โ options.removeWorktreeFails
2026-10-24T03:20:26.0721697Z โฐโโโโ
2026-10-24T03:20:26.0721802Z help: Consider removing this parameter.
2026-10-24T03:20:26.0721807Z
2026-10-24T03:20:26.0721987Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0722122Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-24T03:20:26.0722177Z 207 โ );
2026-10-24T03:20:26.0722279Z 208 โ const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-24T03:20:26.0722371Z ยท โฌ
2026-10-24T03:20:26.0722542Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0722629Z 209 โ options.deleteLocalBranchFails
2026-10-24T03:20:26.0722679Z โฐโโโโ
2026-10-24T03:20:26.0722777Z help: Consider removing this parameter.
2026-10-24T03:20:26.0722779Z
2026-10-24T03:20:26.0722967Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0723105Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-24T03:20:26.0723158Z 212 โ );
2026-10-24T03:20:26.0723271Z 213 โ const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-24T03:20:26.0723370Z ยท โฌ
2026-10-24T03:20:26.0723514Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0723600Z 214 โ options.fetchWorktreeBaseFails
2026-10-24T03:20:26.0723650Z โฐโโโโ
2026-10-24T03:20:26.0723750Z help: Consider removing this parameter.
2026-10-24T03:20:26.0723752Z
2026-10-24T03:20:26.0723932Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0724242Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-24T03:20:26.0724326Z 253 โ );
2026-10-24T03:20:26.0724418Z 254 โ const localStatus = vi.fn((_: unknown) =>
2026-10-24T03:20:26.0724505Z ยท โฌ
2026-10-24T03:20:26.0724640Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0724706Z 255 โ Effect.succeed({
2026-10-24T03:20:26.0724756Z โฐโโโโ
2026-10-24T03:20:26.0724856Z help: Consider removing this parameter.
2026-10-24T03:20:26.0724858Z
2026-10-24T03:20:26.0725038Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T03:20:26.0725170Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-24T03:20:26.0725225Z 263 โ );
2026-10-24T03:20:26.0725382Z 264 โ const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-24T03:20:26.0725475Z ยท โฌ
2026-10-24T03:20:26.0725610Z ยท โฐโโ '_' is declared here
2026-10-24T03:20:26.0725758Z 265 โ const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-24T03:20:26.0725809Z โฐโโโโ
2026-10-24T03:20:26.0725907Z help: Consider removing this parameter.
2026-10-24T03:20:26.0725910Z
2026-10-24T03:20:26.0726054Z โ react(refs): Cannot access refs during render
2026-10-24T03:20:26.0726172Z โญโ[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-24T03:20:26.0726354Z 53 โ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-24T03:20:26.0726535Z 54 โ โญโโถ children = cloneElement(child, {
2026-10-24T03:20:26.0726645Z 55 โ โ onTouchStart: (event) => {
2026-10-24T03:20:26.0726803Z 56 โ โ // Reset for a new touch, not onPressIn, which also fires when a
2026-10-24T03:20:26.0726962Z 57 โ โ // finger moves out of the row and back during the same gesture.
2026-10-24T03:20:26.0727089Z 58 โ โ menuPress.current.isPreparing = false;
2026-10-24T03:20:26.0727257Z 59 โ โ menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-24T03:20:26.0727370Z 60 โ โ pendingPress.current = null;
2026-10-24T03:20:26.0727490Z 61 โ โ child.props.onTouchStart?.(event);
2026-10-24T03:20:26.0727575Z 62 โ โ },
2026-10-24T03:20:26.0727678Z 63 โ โ onPress: (event) => {
2026-10-24T03:20:26.0727849Z 64 โ โ // Accessibility clicks have no touch identifier and must not inherit
2026-10-24T03:20:26.0727989Z 65 โ โ // cancellation from a previous physical gesture.
2026-10-24T03:20:26.0728157Z 66 โ โ const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-24T03:20:26.0728349Z 67 โ โ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-24T03:20:26.0728435Z 68 โ โ return;
2026-10-24T03:20:26.0728513Z 69 โ โ }
2026-10-24T03:20:26.0728652Z 70 โ โ if (isTouch && menuPress.current.isPreparing) {
2026-10-24T03:20:26.0728894Z 71 โ โ // A release can arrive between native menu preparation and display.
2026-10-24T03:20:26.0729092Z 72 โ โ // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-24T03:20:26.0729191Z 73 โ โ event.persist();
2026-10-24T03:20:26.0729351Z 74 โ โ pendingPress.current = () => child.props.onPress?.(event);
2026-10-24T03:20:26.0729437Z 75 โ โ return;
2026-10-24T03:20:26.0729514Z 76 โ โ }
2026-10-24T03:20:26.0729628Z 77 โ โ child.props.onPress?.(event);
2026-10-24T03:20:26.0729704Z 78 โ โ },
2026-10-24T03:20:26.0729835Z 79 โ โโโถ });
2026-10-24T03:20:26.0730079Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T03:20:26.0730183Z 80 โ menuProps.onMenuInteractionStart = () => {
2026-10-24T03:20:26.0730236Z โฐโโโโ
2026-10-24T03:20:26.0730706Z 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-24T03:20:26.0731002Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T03:20:26.0731005Z
2026-10-24T03:20:26.0731265Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T03:20:26.0731407Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-24T03:20:26.0731511Z 66 โ const { id: attachmentId, fileUri } = attachment;
2026-10-24T03:20:26.0731576Z 67 โ useEffect(() => {
2026-10-24T03:20:26.0731648Z ยท โโโโโฌโโโโ
2026-10-24T03:20:26.0731779Z ยท โฐโโ This is the containing effect
2026-10-24T03:20:26.0731844Z 68 โ setUri(null);
2026-10-24T03:20:26.0731914Z ยท โโโโฌโโ
2026-10-24T03:20:26.0732080Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T03:20:26.0732143Z 69 โ setError(null);
2026-10-24T03:20:26.0732195Z โฐโโโโ
2026-10-24T03:20:26.0732843Z 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-24T03:20:26.0733171Z 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-24T03:20:26.0733174Z
2026-10-24T03:20:26.0733377Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0733515Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-24T03:20:26.0733570Z 90 โ };
2026-10-24T03:20:26.0733645Z 91 โ }, [attachmentId, fileUri]);
2026-10-24T03:20:26.0733762Z ยท โโโโโโโฌโโโโโ โโโโฌโโโ
2026-10-24T03:20:26.0734017Z ยท โ โฐโโ Unnecessary dependency `fileUri`
2026-10-24T03:20:26.0734194Z ยท โฐโโ Unnecessary dependency `attachmentId`
2026-10-24T03:20:26.0734328Z 92 โ const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-24T03:20:26.0734380Z โฐโโโโ
2026-10-24T03:20:26.0734674Z 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-24T03:20:26.0734987Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0734990Z
2026-10-24T03:20:26.0735206Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T03:20:26.0735353Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-24T03:20:26.0735420Z 212 โ useEffect(() => {
2026-10-24T03:20:26.0735535Z 213 โ if (!isFocused && hasSource) props.onRequestClose();
2026-10-24T03:20:26.0735634Z ยท โโโฌโโ
2026-10-24T03:20:26.0735785Z ยท โฐโโ Missing dependency `props`
2026-10-24T03:20:26.0735890Z 214 โ }, [isFocused, hasSource, props.onRequestClose]);
2026-10-24T03:20:26.0736004Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0736234Z ยท โฐโโ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-24T03:20:26.0736307Z 215 โ const { source } = props;
2026-10-24T03:20:26.0736358Z โฐโโโโ
2026-10-24T03:20:26.0736786Z 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-24T03:20:26.0737103Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0737106Z
2026-10-24T03:20:26.0737263Z โ eslint(no-new): Do not use 'new' for side effects.
2026-10-24T03:20:26.0737390Z โญโ[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-24T03:20:26.0737501Z 167 โ // @ts-expect-error a declaration constructed directly
2026-10-24T03:20:26.0737599Z 168 โ new McpToolAccess.Declaration(unchecked);
2026-10-24T03:20:26.0737697Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0737831Z 169 โ // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-24T03:20:26.0737885Z โฐโโโโ
2026-10-24T03:20:26.0738046Z help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-24T03:20:26.0738048Z
2026-10-24T03:20:26.0738251Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T03:20:26.0738366Z โญโ[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-24T03:20:26.0738440Z 28 โ getPendingThreadOrder();
2026-10-24T03:20:26.0738521Z 29 โ }, [nowMinute, snoozeWakeTick]);
2026-10-24T03:20:26.0738745Z ยท โโโโโฌโโโโ โโโโโโโโฌโโโโโโ
2026-10-24T03:20:26.0738946Z ยท โ โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-24T03:20:26.0739173Z ยท โฐโโ Unnecessary dependency `nowMinute`
2026-10-24T03:20:26.0739280Z 30 โ return pending;
2026-10-24T03:20:26.0739333Z โฐโโโโ
2026-10-24T03:20:26.0739632Z 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-24T03:20:26.0739942Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0739944Z
2026-10-24T03:20:26.0740159Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T03:20:26.0740305Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:773:7]
2026-10-24T03:20:26.0740414Z 772 โ if (settingsSheetPresentation.isActive) {
2026-10-24T03:20:26.0740545Z 773 โ settingsRoutePresentation.present(settingsRouteSession);
2026-10-24T03:20:26.0740639Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T03:20:26.0740814Z ยท โฐโโ Missing dependency `settingsRoutePresentation`
2026-10-24T03:20:26.0740870Z 774 โ }
2026-10-24T03:20:26.0741077Z 775 โ }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-24T03:20:26.0741186Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0741468Z ยท โฐโโ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-24T03:20:26.0741522Z 776 โ
2026-10-24T03:20:26.0741574Z โฐโโโโ
2026-10-24T03:20:26.0742005Z 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-24T03:20:26.0742322Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T03:20:26.0742325Z
2026-10-24T03:20:26.0742507Z โ react(immutability): This value cannot be modified
2026-10-24T03:20:26.0742652Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:391:5]
2026-10-24T03:20:26.0742812Z 387 โ typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-24T03:20:26.0742946Z 388 โ const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-24T03:20:26.0743037Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0743257Z ยท โฐโโ `animatedBorderRadius` originates here
2026-10-24T03:20:26.0743445Z 389 โ const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-24T03:20:26.0743515Z 390 โ useLayoutEffect(() => {
2026-10-24T03:20:26.0743616Z 391 โ animatedBorderRadius.value = shouldAnimate
2026-10-24T03:20:26.0743704Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T03:20:26.0743863Z ยท โฐโโ `animatedBorderRadius` cannot be modified
2026-10-24T03:20:26.0743951Z 392 โ ? withTiming(targetBorderRadius, {
2026-10-24T03:20:26.0744003Z โฐโโโโ
2026-10-24T03:20:26.0744268Z 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-24T03:20:26.0744580Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T03:20:26.0744586Z
2026-10-24T03:20:26.0744829Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T03:20:26.0744985Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-24T03:20:26.0745047Z 289 โ return (
2026-10-24T03:20:26.0745183Z 290 โ <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-24T03:20:26.0745304Z ยท โโโโโโโโโโโโโ
2026-10-24T03:20:26.0745376Z 291 โ {props.children}
2026-10-24T03:20:26.0745428Z โฐโโโโ
2026-10-24T03:20:26.0745660Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T03:20:26.0745804Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T03:20:26.0745807Z
2026-10-24T03:20:26.0746047Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T03:20:26.0746203Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-24T03:20:26.0746262Z 653 โ return (
2026-10-24T03:20:26.0746383Z 654 โ <ThreadSettingsSessionContext.Provider value={value}>
2026-10-24T03:20:26.0746498Z ยท โโโโโโโโโโโโโ
2026-10-24T03:20:26.0746567Z 655 โ {props.children}
2026-10-24T03:20:26.0746618Z โฐโโโโ
2026-10-24T03:20:26.0746845Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T03:20:26.0746982Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T03:20:26.0746986Z
2026-10-24T03:20:26.0747224Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T03:20:26.0747383Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-24T03:20:26.0747444Z 1461 โ return (
2026-10-24T03:20:26.0747606Z 1462 โ <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-24T03:20:26.0747739Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T03:20:26.0747838Z 1463 โ <ThreadSettingsPickerStack.Navigator
2026-10-24T03:20:26.0747890Z โฐโโโโ
2026-10-24T03:20:26.0748183Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T03:20:26.0748351Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T03:20:26.0748354Z
2026-10-24T03:20:26.0748438Z Found 0 errors and 362 warnings in 5408 files (5.3s, 8 threads)
2026-10-24T03:20:26.1259925Z Post job cleanup.
2026-10-24T03:20:26.1903009Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T03:20:26.1975658Z Post job cleanup.
2026-10-24T03:20:26.1987365Z ##[start-action display=Cache full pnpm store;id=__0a35c83c-85cf-4677-9cbf-74dcfdf3e933.__actions_cache]
2026-10-24T03:20:26.2340646Z Post job cleanup.
2026-10-24T03:20:26.2977832Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-24T03:20:26.3011867Z ##[end-action id=__0a35c83c-85cf-4677-9cbf-74dcfdf3e933.__actions_cache;outcome=success;conclusion=success;duration_ms=102]
2026-10-24T03:20:26.3013503Z ##[start-action display=Cache Vite+;id=__0a35c83c-85cf-4677-9cbf-74dcfdf3e933.vp_cache]
2026-10-24T03:20:26.3039848Z Post job cleanup.
2026-10-24T03:20:26.3666499Z 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-24T03:20:26.3702294Z ##[end-action id=__0a35c83c-85cf-4677-9cbf-74dcfdf3e933.vp_cache;outcome=success;conclusion=success;duration_ms=68]
2026-10-24T03:20:26.3734126Z Post job cleanup.
2026-10-24T03:20:26.4179569Z [command]/usr/local/bin/git version
2026-10-24T03:20:26.4210083Z git version 2.55.0
2026-10-24T03:20:26.4228027Z Temporarily overriding HOME='/home/runner/_work/_temp/f3b897d2-b4ba-4b9d-81ca-0eaa56c7ff9e' before making global git config changes
2026-10-24T03:20:26.4228626Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T03:20:26.4230778Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T03:20:26.4253198Z Removing SSH command configuration
2026-10-24T03:20:26.4256198Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T03:20:26.4279347Z [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-24T03:20:26.4419845Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T03:20:26.4439754Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T03:20:26.4481810Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T03:20:26.4496521Z ##[group]Run '/job_completed.sh'
2026-10-24T03:20:26.4503094Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T03:20:26.4503264Z env:
2026-10-24T03:20:26.4503380Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 137
2026-10-24T03:20:26.4503541Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 392
2026-10-24T03:20:26.4503685Z BLACKSMITH_CHECK_RUN_ID: 120764668263
2026-10-24T03:20:26.4503829Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T03:20:26.4503970Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T03:20:26.4504106Z ##[endgroup]
2026-10-24T03:20:26.4581250Z Docker container cache not activated, skipping hash computation.
2026-10-24T03:20:26.4869628Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T03:20:26.4911415Z Cleaning up orphan processes