GitHub check
256 KB of 593 KB loaded Download the full log (593 KB)
337 KB of earlier output not loaded
5Z ยท โฐโโ This modifies `cardCoverage`
2026-10-23T06:46:06.0944604Z 101 โ return;
2026-10-23T06:46:06.0944660Z 102 โ }
2026-10-23T06:46:06.0944762Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-23T06:46:06.0944859Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-23T06:46:06.0944999Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-23T06:46:06.0945085Z 106 โ });
2026-10-23T06:46:06.0945152Z 107 โ }, [cardCoverage]);
2026-10-23T06:46:06.0945236Z 108 โ const handleBarLayout = useCallback(
2026-10-23T06:46:06.0945315Z 109 โ (event: LayoutChangeEvent) => {
2026-10-23T06:46:06.0945422Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0945647Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-23T06:46:06.0945773Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T06:46:06.0945824Z โฐโโโโ
2026-10-23T06:46:06.0946165Z help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-23T06:46:06.0946477Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.0946482Z
2026-10-23T06:46:06.0946681Z โ react(immutability): Cannot modify local variables after render completes
2026-10-23T06:46:06.0946838Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-23T06:46:06.0946924Z 115 โ const handleCardLayout = useCallback(
2026-10-23T06:46:06.0947004Z 116 โ (event: LayoutChangeEvent) => {
2026-10-23T06:46:06.0947109Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0947328Z ยท โฐโโ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-23T06:46:06.0947455Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-23T06:46:06.0947573Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-23T06:46:06.0947654Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.0947783Z ยท โฐโโ This modifies `cardHeight`
2026-10-23T06:46:06.0947850Z 119 โ notifyCoverage();
2026-10-23T06:46:06.0947901Z โฐโโโโ
2026-10-23T06:46:06.0948241Z help: This argument is a function which may reassign or mutate `cardHeight` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-23T06:46:06.0948583Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.0948586Z
2026-10-23T06:46:06.0948961Z โ 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-23T06:46:06.0949080Z โญโ[packages/contracts/src/auth.test.ts:17:12]
2026-10-23T06:46:06.0949299Z 16 โ it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-23T06:46:06.0949469Z 17 โ expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-23T06:46:06.0949571Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0949636Z 18 โ "review:write",
2026-10-23T06:46:06.0949688Z โฐโโโโ
2026-10-23T06:46:06.0949690Z
2026-10-23T06:46:06.0950057Z โ 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-23T06:46:06.0950236Z โญโ[packages/contracts/src/auth.test.ts:20:18]
2026-10-23T06:46:06.0950333Z 19 โ ]);
2026-10-23T06:46:06.0950496Z 20 โ expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-23T06:46:06.0950603Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0950738Z 21 โ expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-23T06:46:06.0950790Z โฐโโโโ
2026-10-23T06:46:06.0950792Z
2026-10-23T06:46:06.0951156Z โ 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-23T06:46:06.0951268Z โญโ[packages/contracts/src/auth.test.ts:58:21]
2026-10-23T06:46:06.0951439Z 57 โ it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-23T06:46:06.0951571Z 58 โ const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-23T06:46:06.0951681Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0951752Z 59 โ authenticated: true,
2026-10-23T06:46:06.0951803Z โฐโโโโ
2026-10-23T06:46:06.0951806Z
2026-10-23T06:46:06.0952068Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.0952207Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2109:5]
2026-10-23T06:46:06.0952264Z 2107 โ );
2026-10-23T06:46:06.0952332Z 2108 โ useEffect(() => {
2026-10-23T06:46:06.0952406Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.0952538Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.0952612Z 2109 โ setExpandedVideo(null);
2026-10-23T06:46:06.0952702Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0952879Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.0952951Z 2110 โ setExpandedFile(null);
2026-10-23T06:46:06.0953004Z โฐโโโโ
2026-10-23T06:46:06.0953607Z 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-23T06:46:06.0953934Z 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-23T06:46:06.0953937Z
2026-10-23T06:46:06.0954173Z โ eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-23T06:46:06.0954308Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:62:10]
2026-10-23T06:46:06.0954446Z 61 โ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-23T06:46:06.0954586Z 62 โ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-23T06:46:06.0954684Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.0954849Z ยท โฐโโ 'isMarkdownFileLinkLabel' is imported here
2026-10-23T06:46:06.0955008Z 63 โ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-23T06:46:06.0955061Z โฐโโโโ
2026-10-23T06:46:06.0955160Z help: Consider removing this import.
2026-10-23T06:46:06.0955163Z
2026-10-23T06:46:06.0955424Z โ eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-23T06:46:06.0955586Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:88:3]
2026-10-23T06:46:06.0955644Z 87 โ import {
2026-10-23T06:46:06.0955710Z 88 โ createContext,
2026-10-23T06:46:06.0955784Z ยท โโโโโโโฌโโโโโโ
2026-10-23T06:46:06.0955922Z ยท โฐโโ 'createContext' is imported here
2026-10-23T06:46:06.0955979Z 89 โ memo,
2026-10-23T06:46:06.0956030Z โฐโโโโ
2026-10-23T06:46:06.0956126Z help: Consider removing this import.
2026-10-23T06:46:06.0956129Z
2026-10-23T06:46:06.0956345Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-23T06:46:06.0956481Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:103:3]
2026-10-23T06:46:06.0956547Z 102 โ import {
2026-10-23T06:46:06.0956617Z 103 โ ActivityIndicator,
2026-10-23T06:46:06.0956701Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.0956846Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-23T06:46:06.0956905Z 104 โ Image,
2026-10-23T06:46:06.0956955Z โฐโโโโ
2026-10-23T06:46:06.0957051Z help: Consider removing this import.
2026-10-23T06:46:06.0957054Z
2026-10-23T06:46:06.0957255Z โ eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-23T06:46:06.0957388Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:110:3]
2026-10-23T06:46:06.0957449Z 109 โ Pressable,
2026-10-23T06:46:06.0957514Z 110 โ ScrollView,
2026-10-23T06:46:06.0957588Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.0957727Z ยท โฐโโ 'ScrollView' is imported here
2026-10-23T06:46:06.0957790Z 111 โ StyleSheet,
2026-10-23T06:46:06.0957842Z โฐโโโโ
2026-10-23T06:46:06.0957937Z help: Consider removing this import.
2026-10-23T06:46:06.0957939Z
2026-10-23T06:46:06.0958141Z โ eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-23T06:46:06.0958274Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:112:11]
2026-10-23T06:46:06.0958336Z 111 โ StyleSheet,
2026-10-23T06:46:06.0958429Z 112 โ Text as NativeText,
2026-10-23T06:46:06.0958510Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.0958648Z ยท โฐโโ 'NativeText' is imported here
2026-10-23T06:46:06.0958715Z 113 โ type ColorValue,
2026-10-23T06:46:06.0958768Z โฐโโโโ
2026-10-23T06:46:06.0958921Z help: Consider removing this import.
2026-10-23T06:46:06.0958957Z
2026-10-23T06:46:06.0959172Z โ eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-23T06:46:06.0959306Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:134:10]
2026-10-23T06:46:06.0959442Z 133 โ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-23T06:46:06.0959569Z 134 โ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-23T06:46:06.0959658Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.0959812Z ยท โฐโโ 'tryOpenExternalUrl' is imported here
2026-10-23T06:46:06.0959960Z 135 โ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-23T06:46:06.0960011Z โฐโโโโ
2026-10-23T06:46:06.0960110Z help: Consider removing this import.
2026-10-23T06:46:06.0960116Z
2026-10-23T06:46:06.0960335Z โ eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-23T06:46:06.0960468Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:137:10]
2026-10-23T06:46:06.0960604Z 136 โ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-23T06:46:06.0960729Z 137 โ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-23T06:46:06.0960820Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.0960975Z ยท โฐโโ 'faviconUrlForOrigin' is imported here
2026-10-23T06:46:06.0961034Z 138 โ import {
2026-10-23T06:46:06.0961084Z โฐโโโโ
2026-10-23T06:46:06.0961180Z help: Consider removing this import.
2026-10-23T06:46:06.0961188Z
2026-10-23T06:46:06.0961408Z โ eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-23T06:46:06.0961541Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:151:10]
2026-10-23T06:46:06.0961692Z 150 โ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-23T06:46:06.0961826Z 151 โ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-23T06:46:06.0961914Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0962064Z ยท โฐโโ 'MediaVideoPlayer' is imported here
2026-10-23T06:46:06.0962204Z 152 โ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-23T06:46:06.0962254Z โฐโโโโ
2026-10-23T06:46:06.0962350Z help: Consider removing this import.
2026-10-23T06:46:06.0962358Z
2026-10-23T06:46:06.0962585Z โ eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-23T06:46:06.0962717Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:155:3]
2026-10-23T06:46:06.0962798Z 154 โ attachmentVideoPreviewSource,
2026-10-23T06:46:06.0962869Z 155 โ mediaVideoPreviewUri,
2026-10-23T06:46:06.0962954Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.0963107Z ยท โฐโโ 'mediaVideoPreviewUri' is imported here
2026-10-23T06:46:06.0963179Z 156 โ mediaVideoThumbnailKey,
2026-10-23T06:46:06.0963229Z โฐโโโโ
2026-10-23T06:46:06.0963325Z help: Consider removing this import.
2026-10-23T06:46:06.0963327Z
2026-10-23T06:46:06.0963601Z โ eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-23T06:46:06.0963758Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:156:3]
2026-10-23T06:46:06.0963828Z 155 โ mediaVideoPreviewUri,
2026-10-23T06:46:06.0963901Z 156 โ mediaVideoThumbnailKey,
2026-10-23T06:46:06.0963989Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.0964145Z ยท โฐโโ 'mediaVideoThumbnailKey' is imported here
2026-10-23T06:46:06.0964225Z 157 โ type MediaVideoPreviewSource,
2026-10-23T06:46:06.0964276Z โฐโโโโ
2026-10-23T06:46:06.0964371Z help: Consider removing this import.
2026-10-23T06:46:06.0964373Z
2026-10-23T06:46:06.0964586Z โ eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-23T06:46:06.0964718Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:157:8]
2026-10-23T06:46:06.0964795Z 156 โ mediaVideoThumbnailKey,
2026-10-23T06:46:06.0964877Z 157 โ type MediaVideoPreviewSource,
2026-10-23T06:46:06.0964971Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.0965136Z ยท โฐโโ 'MediaVideoPreviewSource' is imported here
2026-10-23T06:46:06.0965223Z 158 โ } from "../../lib/videoPreviewSource";
2026-10-23T06:46:06.0965276Z โฐโโโโ
2026-10-23T06:46:06.0965369Z help: Consider removing this import.
2026-10-23T06:46:06.0965372Z
2026-10-23T06:46:06.0965572Z โ eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-23T06:46:06.0965705Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:165:15]
2026-10-23T06:46:06.0965886Z 164 โ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-23T06:46:06.0966029Z 165 โ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-23T06:46:06.0966120Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0966271Z ยท โฐโโ 'ReviewDiffTheme' is imported here
2026-10-23T06:46:06.0966332Z 166 โ import {
2026-10-23T06:46:06.0966382Z โฐโโโโ
2026-10-23T06:46:06.0966477Z help: Consider removing this import.
2026-10-23T06:46:06.0966480Z
2026-10-23T06:46:06.0966713Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-23T06:46:06.0966843Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:180:3]
2026-10-23T06:46:06.0966901Z 179 โ import {
2026-10-23T06:46:06.0966975Z 180 โ resolveMarkdownFontSizes,
2026-10-23T06:46:06.0967071Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.0967233Z ยท โฐโโ 'resolveMarkdownFontSizes' is imported here
2026-10-23T06:46:06.0967318Z 181 โ resolveNativeMarkdownTypography,
2026-10-23T06:46:06.0967370Z โฐโโโโ
2026-10-23T06:46:06.0967465Z help: Consider removing this import.
2026-10-23T06:46:06.0967468Z
2026-10-23T06:46:06.0967692Z โ eslint(no-unused-vars): Identifier 'markdownLinkIconSource' is imported but never used.
2026-10-23T06:46:06.0967823Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:185:10]
2026-10-23T06:46:06.0967956Z 184 โ import { PierreEntryIcon } from "../../components/PierreEntryIcon";
2026-10-23T06:46:06.0968092Z 185 โ import { markdownLinkIconSource } from "../../lib/markdownLinkIcons";
2026-10-23T06:46:06.0968188Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.0968425Z ยท โฐโโ 'markdownLinkIconSource' is imported here
2026-10-23T06:46:06.0968509Z 186 โ import {
2026-10-23T06:46:06.0968561Z โฐโโโโ
2026-10-23T06:46:06.0968657Z help: Consider removing this import.
2026-10-23T06:46:06.0968659Z
2026-10-23T06:46:06.0968918Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-23T06:46:06.0969049Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:188:3]
2026-10-23T06:46:06.0969127Z 187 โ normalizeNativeMarkdownUrl,
2026-10-23T06:46:06.0969226Z 188 โ resolveMarkdownInlineCodePresentation,
2026-10-23T06:46:06.0969336Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0969539Z ยท โฐโโ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-23T06:46:06.0969616Z 189 โ resolveMarkdownLinkIcon,
2026-10-23T06:46:06.0969668Z โฐโโโโ
2026-10-23T06:46:06.0969763Z help: Consider removing this import.
2026-10-23T06:46:06.0969766Z
2026-10-23T06:46:06.0969992Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownLinkIcon' is imported but never used.
2026-10-23T06:46:06.0970124Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:189:3]
2026-10-23T06:46:06.0970219Z 188 โ resolveMarkdownInlineCodePresentation,
2026-10-23T06:46:06.0970293Z 189 โ resolveMarkdownLinkIcon,
2026-10-23T06:46:06.0970380Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.0970538Z ยท โฐโโ 'resolveMarkdownLinkIcon' is imported here
2026-10-23T06:46:06.0970630Z 190 โ resolveMarkdownLinkPresentation,
2026-10-23T06:46:06.0970685Z โฐโโโโ
2026-10-23T06:46:06.0970778Z help: Consider removing this import.
2026-10-23T06:46:06.0970780Z
2026-10-23T06:46:06.0971010Z โ eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-23T06:46:06.0971144Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:228:10]
2026-10-23T06:46:06.0971249Z 227 โ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-23T06:46:06.0971394Z 228 โ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-23T06:46:06.0971498Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.0971665Z ยท โฐโโ 'useMarkdownCodeHighlight' is imported here
2026-10-23T06:46:06.0971725Z 229 โ import {
2026-10-23T06:46:06.0971775Z โฐโโโโ
2026-10-23T06:46:06.0971928Z help: Consider removing this import.
2026-10-23T06:46:06.0971962Z
2026-10-23T06:46:06.0972174Z โ eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-23T06:46:06.0972306Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:232:3]
2026-10-23T06:46:06.0972371Z 231 โ useAssetUrl,
2026-10-23T06:46:06.0972437Z 232 โ useAssetUrlState,
2026-10-23T06:46:06.0972519Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0972662Z ยท โฐโโ 'useAssetUrlState' is imported here
2026-10-23T06:46:06.0972731Z 233 โ useRefreshAssetUrl,
2026-10-23T06:46:06.0972783Z โฐโโโโ
2026-10-23T06:46:06.0972879Z help: Consider removing this import.
2026-10-23T06:46:06.0972882Z
2026-10-23T06:46:06.0973092Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.0973234Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2111:7]
2026-10-23T06:46:06.0973306Z 2110 โ setExpandedFile(null);
2026-10-23T06:46:06.0973465Z 2111 โ }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-23T06:46:06.0973692Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโฌโโโโโโ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-23T06:46:06.0973990Z ยท โ โ โฐโโ Unnecessary dependency `props.contentPresentation.kind`
2026-10-23T06:46:06.0974190Z ยท โ โฐโโ Unnecessary dependency `props.threadId`
2026-10-23T06:46:06.0974363Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-23T06:46:06.0974512Z 2112 โ const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-23T06:46:06.0974565Z โฐโโโโ
2026-10-23T06:46:06.0974863Z 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-23T06:46:06.0975176Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.0975179Z
2026-10-23T06:46:06.0975382Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.0975520Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2578:7]
2026-10-23T06:46:06.0975622Z 2577 โ reportHeaderMaterialVisibility(false);
2026-10-23T06:46:06.0975739Z 2578 โ }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-23T06:46:06.0975821Z ยท โโโโโโโฌโโโโโโ
2026-10-23T06:46:06.0975972Z ยท โฐโโ Unnecessary dependency `feedThreadKey`
2026-10-23T06:46:06.0976026Z 2579 โ
2026-10-23T06:46:06.0976076Z โฐโโโโ
2026-10-23T06:46:06.0976371Z 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-23T06:46:06.0976685Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.0976687Z
2026-10-23T06:46:06.0976948Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.0977117Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2594:7]
2026-10-23T06:46:06.0977174Z 2593 โ }
2026-10-23T06:46:06.0977306Z 2594 โ }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-23T06:46:06.0977386Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.0977532Z ยท โฐโโ Unnecessary dependency `listMountKey`
2026-10-23T06:46:06.0977585Z 2595 โ
2026-10-23T06:46:06.0977636Z โฐโโโโ
2026-10-23T06:46:06.0977927Z 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-23T06:46:06.0978242Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.0978248Z
2026-10-23T06:46:06.0978476Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.0978612Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2751:7]
2026-10-23T06:46:06.0978670Z 2750 โ }
2026-10-23T06:46:06.0978856Z 2751 โ }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-23T06:46:06.0979060Z ยท โโโโโโโโฌโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0979316Z ยท โ โ โฐโโ Unnecessary dependency `expandedWorkRows`
2026-10-23T06:46:06.0979534Z ยท โ โฐโโ Unnecessary dependency `expandedWorkGroups`
2026-10-23T06:46:06.0979692Z ยท โฐโโ Unnecessary dependency `expandedTurnIds`
2026-10-23T06:46:06.0979746Z 2752 โ
2026-10-23T06:46:06.0979796Z โฐโโโโ
2026-10-23T06:46:06.0980091Z 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-23T06:46:06.0980403Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.0980406Z
2026-10-23T06:46:06.0980593Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-23T06:46:06.0980730Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:603:9]
2026-10-23T06:46:06.0980794Z 602 โ };
2026-10-23T06:46:06.0980914Z 603 โ }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-23T06:46:06.0981108Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโฌโโโโโโ โโโโโโฌโโโโโ
2026-10-23T06:46:06.0981349Z ยท โ โ โฐโโ Unnecessary dependency `httpBaseUrl`
2026-10-23T06:46:06.0981547Z ยท โ โฐโโ Unnecessary dependency `attachment.id`
2026-10-23T06:46:06.0981715Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-23T06:46:06.0981771Z 604 โ );
2026-10-23T06:46:06.0981824Z โฐโโโโ
2026-10-23T06:46:06.0982193Z 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-23T06:46:06.0982540Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.0982542Z
2026-10-23T06:46:06.0982805Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.0982971Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-23T06:46:06.0983083Z 37 โ const [initialized, setInitialized] = useState(false);
2026-10-23T06:46:06.0983155Z 38 โ useLayoutEffect(() => {
2026-10-23T06:46:06.0983236Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0983376Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.0983440Z 39 โ reset();
2026-10-23T06:46:06.0983510Z 40 โ setInitialized(true);
2026-10-23T06:46:06.0983589Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T06:46:06.0983760Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.0983822Z 41 โ }, [reset]);
2026-10-23T06:46:06.0983876Z โฐโโโโ
2026-10-23T06:46:06.0984483Z 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-23T06:46:06.0984812Z 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-23T06:46:06.0984817Z
2026-10-23T06:46:06.0985080Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.0985240Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-23T06:46:06.0985295Z 88 โ
2026-10-23T06:46:06.0985362Z 89 โ useEffect(() => {
2026-10-23T06:46:06.0985433Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.0985562Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.0985724Z 90 โ if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-23T06:46:06.0985827Z 91 โ const branchName = initialProjectRef.branch;
2026-10-23T06:46:06.0985894Z 92 โ let active = true;
2026-10-23T06:46:06.0985994Z 93 โ setPendingCheckouts((count) => count + 1);
2026-10-23T06:46:06.0986086Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.0986259Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.0986418Z 94 โ // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-23T06:46:06.0986468Z โฐโโโโ
2026-10-23T06:46:06.0987069Z 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-23T06:46:06.0987442Z 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-23T06:46:06.0987473Z
2026-10-23T06:46:06.0987678Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T06:46:06.0987814Z โญโ[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-23T06:46:06.0987889Z 2 โ AuthDiagnosticsReadScope,
2026-10-23T06:46:06.0987959Z 3 โ type AuthSessionState,
2026-10-23T06:46:06.0988045Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.0988192Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-23T06:46:06.0988259Z 4 โ sessionGrantsScope,
2026-10-23T06:46:06.0988314Z โฐโโโโ
2026-10-23T06:46:06.0988438Z help: Consider removing this import.
2026-10-23T06:46:06.0988440Z
2026-10-23T06:46:06.0988602Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.0988771Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:111:5]
2026-10-23T06:46:06.0988827Z 107 โ );
2026-10-23T06:46:06.0988985Z 108 โ const separationProgress = useSharedValue(props.showScrollToEnd ? 1 : 0);
2026-10-23T06:46:06.0989075Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.0989276Z ยท โฐโโ `separationProgress` originates here
2026-10-23T06:46:06.0989332Z 109 โ
2026-10-23T06:46:06.0989399Z 110 โ useEffect(() => {
2026-10-23T06:46:06.0989575Z 111 โ separationProgress.value = withTiming(props.showScrollToEnd ? 1 : 0, CONTROL_TIMING);
2026-10-23T06:46:06.0989659Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.0989812Z ยท โฐโโ `separationProgress` cannot be modified
2026-10-23T06:46:06.0989929Z 112 โ }, [props.showScrollToEnd, separationProgress]);
2026-10-23T06:46:06.0989986Z โฐโโโโ
2026-10-23T06:46:06.0990250Z 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-23T06:46:06.0990558Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.0990561Z
2026-10-23T06:46:06.0990719Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.0990886Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-23T06:46:06.0991005Z 128 โ // and repeatedly retargets the animation as it grows.
2026-10-23T06:46:06.0991122Z 129 โ const capsuleWidth = useSharedValue<number | null>(null);
2026-10-23T06:46:06.0991278Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.0991519Z ยท โฐโโ `capsuleWidth` originates here
2026-10-23T06:46:06.0991635Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-23T06:46:06.0991753Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-23T06:46:06.0991867Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-23T06:46:06.0991968Z 133 โ if (width === measuredWidthRef.current) {
2026-10-23T06:46:06.0992034Z 134 โ return;
2026-10-23T06:46:06.0992091Z 135 โ }
2026-10-23T06:46:06.0992201Z 136 โ const first = measuredWidthRef.current === null;
2026-10-23T06:46:06.0992292Z 137 โ measuredWidthRef.current = width;
2026-10-23T06:46:06.0992438Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-23T06:46:06.0992523Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.0992668Z ยท โฐโโ `capsuleWidth` cannot be modified
2026-10-23T06:46:06.0992729Z 139 โ };
2026-10-23T06:46:06.0992782Z โฐโโโโ
2026-10-23T06:46:06.0993050Z 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-23T06:46:06.0993363Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.0993365Z
2026-10-23T06:46:06.0993525Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.0993696Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-23T06:46:06.0993814Z 128 โ // and repeatedly retargets the animation as it grows.
2026-10-23T06:46:06.0993938Z 129 โ const capsuleWidth = useSharedValue<number | null>(null);
2026-10-23T06:46:06.0994024Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.0994166Z ยท โฐโโ `capsuleWidth` originates here
2026-10-23T06:46:06.0994277Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-23T06:46:06.0994397Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-23T06:46:06.0994506Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-23T06:46:06.0994607Z 133 โ if (width === measuredWidthRef.current) {
2026-10-23T06:46:06.0994670Z 134 โ return;
2026-10-23T06:46:06.0994729Z 135 โ }
2026-10-23T06:46:06.0994838Z 136 โ const first = measuredWidthRef.current === null;
2026-10-23T06:46:06.0994928Z 137 โ measuredWidthRef.current = width;
2026-10-23T06:46:06.0995075Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-23T06:46:06.0995136Z 139 โ };
2026-10-23T06:46:06.0995230Z 140 โ const hasStatus = props.status !== null;
2026-10-23T06:46:06.0995367Z 141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-23T06:46:06.0995434Z 142 โ useEffect(() => {
2026-10-23T06:46:06.0995505Z 143 โ if (!hasStatus) {
2026-10-23T06:46:06.0995596Z 144 โ measuredWidthRef.current = null;
2026-10-23T06:46:06.0995682Z 145 โ capsuleWidth.value = null;
2026-10-23T06:46:06.0995760Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.0995966Z ยท โฐโโ `capsuleWidth` cannot be modified
2026-10-23T06:46:06.0996060Z 146 โ }
2026-10-23T06:46:06.0996173Z โฐโโโโ
2026-10-23T06:46:06.0996553Z 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-23T06:46:06.0996926Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.0996929Z
2026-10-23T06:46:06.0997163Z โ react(immutability): Cannot modify local variables after render completes
2026-10-23T06:46:06.0997370Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-23T06:46:06.0997539Z 141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-23T06:46:06.0997644Z 142 โ useEffect(() => {
2026-10-23T06:46:06.0997758Z ยท โโโโฌโโโ
2026-10-23T06:46:06.0998010Z ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-23T06:46:06.0998114Z 143 โ if (!hasStatus) {
2026-10-23T06:46:06.0998250Z 144 โ measuredWidthRef.current = null;
2026-10-23T06:46:06.0998364Z 145 โ capsuleWidth.value = null;
2026-10-23T06:46:06.0998501Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.0998647Z ยท โฐโโ This modifies `capsuleWidth`
2026-10-23T06:46:06.0998840Z 146 โ }
2026-10-23T06:46:06.0998929Z โฐโโโโ
2026-10-23T06:46:06.0999309Z 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-23T06:46:06.0999631Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.0999654Z
2026-10-23T06:46:06.0999882Z โ react(immutability): Cannot modify local variables after render completes
2026-10-23T06:46:06.1000093Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-23T06:46:06.1000245Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-23T06:46:06.1000400Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-23T06:46:06.1000534Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1000834Z ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-23T06:46:06.1000977Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-23T06:46:06.1001117Z 133 โ if (width === measuredWidthRef.current) {
2026-10-23T06:46:06.1001205Z 134 โ return;
2026-10-23T06:46:06.1001298Z 135 โ }
2026-10-23T06:46:06.1001452Z 136 โ const first = measuredWidthRef.current === null;
2026-10-23T06:46:06.1001574Z 137 โ measuredWidthRef.current = width;
2026-10-23T06:46:06.1001737Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-23T06:46:06.1001841Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1002091Z ยท โฐโโ This modifies `capsuleWidth`
2026-10-23T06:46:06.1002182Z 139 โ };
2026-10-23T06:46:06.1002251Z โฐโโโโ
2026-10-23T06:46:06.1002632Z 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-23T06:46:06.1003042Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1003074Z
2026-10-23T06:46:06.1003331Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1003514Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-23T06:46:06.1003628Z 256 โ return () => cancelAnimationFrame(frame);
2026-10-23T06:46:06.1003737Z 257 โ }, [props.path, targetIndex]);
2026-10-23T06:46:06.1003866Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.1004050Z ยท โฐโโ Unnecessary dependency `props.path`
2026-10-23T06:46:06.1004123Z 258 โ
2026-10-23T06:46:06.1004211Z โฐโโโโ
2026-10-23T06:46:06.1004551Z 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-23T06:46:06.1004917Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1004920Z
2026-10-23T06:46:06.1005152Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T06:46:06.1005398Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-23T06:46:06.1005499Z 292 โ <SourceText
2026-10-23T06:46:06.1005660Z 293 โ key={`${index}:${tokenIndex}`}
2026-10-23T06:46:06.1005816Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1005905Z 294 โ style={{
2026-10-23T06:46:06.1005992Z โฐโโโโ
2026-10-23T06:46:06.1006182Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T06:46:06.1006188Z
2026-10-23T06:46:06.1006429Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T06:46:06.1006594Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-23T06:46:06.1006698Z 308 โ return (
2026-10-23T06:46:06.1006808Z 309 โ <SourceText key={index}>
2026-10-23T06:46:06.1006967Z ยท โโโโโโโโโโโ
2026-10-23T06:46:06.1007052Z 310 โ {body}
2026-10-23T06:46:06.1007141Z โฐโโโโ
2026-10-23T06:46:06.1007325Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T06:46:06.1007328Z
2026-10-23T06:46:06.1007594Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T06:46:06.1007814Z โญโ[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:370:7]
2026-10-23T06:46:06.1007911Z 369 โ mountedRef.current = false;
2026-10-23T06:46:06.1008098Z 370 โ flow.setBranchQuery("");
2026-10-23T06:46:06.1008200Z ยท โโโฌโ
2026-10-23T06:46:06.1008383Z ยท โฐโโ Missing dependency `flow`
2026-10-23T06:46:06.1008496Z 371 โ };
2026-10-23T06:46:06.1008606Z 372 โ }, [flow.setBranchQuery]);
2026-10-23T06:46:06.1008736Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1008984Z ยท โฐโโ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-23T06:46:06.1009065Z 373 โ
2026-10-23T06:46:06.1009151Z โฐโโโโ
2026-10-23T06:46:06.1009686Z 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-23T06:46:06.1010061Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1010064Z
2026-10-23T06:46:06.1010297Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T06:46:06.1010474Z โญโ[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-23T06:46:06.1010589Z 2 โ AuthFilesystemReadScope,
2026-10-23T06:46:06.1010696Z 3 โ type AuthSessionState,
2026-10-23T06:46:06.1010788Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1010997Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-23T06:46:06.1011181Z 4 โ type FilesystemBrowseEntry,
2026-10-23T06:46:06.1011269Z โฐโโโโ
2026-10-23T06:46:06.1011385Z help: Consider removing this import.
2026-10-23T06:46:06.1011399Z
2026-10-23T06:46:06.1011688Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T06:46:06.1011899Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-23T06:46:06.1011997Z 289 โ return (
2026-10-23T06:46:06.1012171Z 290 โ <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-23T06:46:06.1012301Z ยท โโโโโโโโโโโโโ
2026-10-23T06:46:06.1012428Z 291 โ {props.children}
2026-10-23T06:46:06.1012521Z โฐโโโโ
2026-10-23T06:46:06.1012788Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T06:46:06.1012948Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T06:46:06.1012951Z
2026-10-23T06:46:06.1013241Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T06:46:06.1013448Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-23T06:46:06.1013548Z 653 โ return (
2026-10-23T06:46:06.1013686Z 654 โ <ThreadSettingsSessionContext.Provider value={value}>
2026-10-23T06:46:06.1013829Z ยท โโโโโโโโโโโโโ
2026-10-23T06:46:06.1013956Z 655 โ {props.children}
2026-10-23T06:46:06.1014107Z โฐโโโโ
2026-10-23T06:46:06.1014370Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T06:46:06.1014526Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T06:46:06.1014529Z
2026-10-23T06:46:06.1014811Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T06:46:06.1015017Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-23T06:46:06.1015114Z 1461 โ return (
2026-10-23T06:46:06.1015295Z 1462 โ <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-23T06:46:06.1015456Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1015611Z 1463 โ <ThreadSettingsPickerStack.Navigator
2026-10-23T06:46:06.1015763Z โฐโโโโ
2026-10-23T06:46:06.1016033Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T06:46:06.1016209Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T06:46:06.1016211Z
2026-10-23T06:46:06.1016513Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1016700Z โญโ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-23T06:46:06.1016790Z 150 โ
2026-10-23T06:46:06.1016877Z 151 โ useEffect(() => {
2026-10-23T06:46:06.1016978Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1017228Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1017356Z 152 โ if (!controlledSelectedPath) {
2026-10-23T06:46:06.1017441Z 153 โ return;
2026-10-23T06:46:06.1017531Z 154 โ }
2026-10-23T06:46:06.1017652Z 155 โ setExpandedPaths((current) => {
2026-10-23T06:46:06.1017779Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1017970Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1018138Z 156 โ const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-23T06:46:06.1018216Z โฐโโโโ
2026-10-23T06:46:06.1018911Z 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-23T06:46:06.1019281Z 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-23T06:46:06.1019286Z
2026-10-23T06:46:06.1019563Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1019766Z โญโ[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
2026-10-23T06:46:06.1019858Z 100 โ
2026-10-23T06:46:06.1019969Z 101 โ useEffect(() => {
2026-10-23T06:46:06.1020062Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1020230Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1020433Z 102 โ if (!target || selectedLines.length === 0) {
2026-10-23T06:46:06.1020575Z 103 โ setHighlightedLinesById({});
2026-10-23T06:46:06.1020745Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.1020989Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1021086Z 104 โ return;
2026-10-23T06:46:06.1021182Z โฐโโโโ
2026-10-23T06:46:06.1021810Z 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-23T06:46:06.1022171Z 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-23T06:46:06.1022174Z
2026-10-23T06:46:06.1022434Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T06:46:06.1022607Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:772:7]
2026-10-23T06:46:06.1022769Z 771 โ if (settingsSheetPresentation.isActive) {
2026-10-23T06:46:06.1022918Z 772 โ settingsRoutePresentation.present(settingsRouteSession);
2026-10-23T06:46:06.1023048Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-23T06:46:06.1023260Z ยท โฐโโ Missing dependency `settingsRoutePresentation`
2026-10-23T06:46:06.1023356Z 773 โ }
2026-10-23T06:46:06.1023605Z 774 โ }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-23T06:46:06.1023732Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1024118Z ยท โฐโโ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-23T06:46:06.1024207Z 775 โ
2026-10-23T06:46:06.1024310Z โฐโโโโ
2026-10-23T06:46:06.1024752Z 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-23T06:46:06.1025100Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1025103Z
2026-10-23T06:46:06.1025299Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1025484Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:390:5]
2026-10-23T06:46:06.1025693Z 386 โ typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-23T06:46:06.1025852Z 387 โ const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-23T06:46:06.1025986Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1026171Z ยท โฐโโ `animatedBorderRadius` originates here
2026-10-23T06:46:06.1026387Z 388 โ const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-23T06:46:06.1026474Z 389 โ useLayoutEffect(() => {
2026-10-23T06:46:06.1026612Z 390 โ animatedBorderRadius.value = shouldAnimate
2026-10-23T06:46:06.1026741Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1026937Z ยท โฐโโ `animatedBorderRadius` cannot be modified
2026-10-23T06:46:06.1027052Z 391 โ ? withTiming(targetBorderRadius, {
2026-10-23T06:46:06.1027246Z โฐโโโโ
2026-10-23T06:46:06.1027580Z 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-23T06:46:06.1027914Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1027917Z
2026-10-23T06:46:06.1028230Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1028458Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:60:5]
2026-10-23T06:46:06.1028548Z 55 โ
2026-10-23T06:46:06.1028649Z 56 โ useEffect(() => {
2026-10-23T06:46:06.1028758Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1028927Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1029036Z 57 โ scheduler.reset();
2026-10-23T06:46:06.1029223Z 58 โ highlightedRowIdsRef.current = new Set();
2026-10-23T06:46:06.1029338Z 59 โ visibleChunkIndexRef.current = 0;
2026-10-23T06:46:06.1029483Z 60 โ setVisibleRange({ firstRowIndex: 0, lastRowIndex: 80 });
2026-10-23T06:46:06.1029614Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1029817Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1029966Z 61 โ setTokensPatchJson(createEmptyTokenPatch(resetKey));
2026-10-23T06:46:06.1030026Z โฐโโโโ
2026-10-23T06:46:06.1030750Z 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-23T06:46:06.1031107Z 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-23T06:46:06.1031110Z
2026-10-23T06:46:06.1031350Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1031550Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
2026-10-23T06:46:06.1031664Z 62 โ return () => scheduler.cancel();
2026-10-23T06:46:06.1031812Z 63 โ }, [enabled, resetKey, rows.length, scheduler]);
2026-10-23T06:46:06.1031974Z ยท โโโโฌโโโ โโโโโโฌโโโโโ
2026-10-23T06:46:06.1032209Z ยท โ โฐโโ Unnecessary dependency `rows.length`
2026-10-23T06:46:06.1032394Z ยท โฐโโ Unnecessary dependency `enabled`
2026-10-23T06:46:06.1032472Z 64 โ
2026-10-23T06:46:06.1032560Z โฐโโโโ
2026-10-23T06:46:06.1032889Z 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-23T06:46:06.1033235Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1033238Z
2026-10-23T06:46:06.1033524Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1033801Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:285:5]
2026-10-23T06:46:06.1034003Z 283 โ const [snoozeWakeTick, bumpSnoozeWakeTick] = useState(0);
2026-10-23T06:46:06.1034107Z 284 โ useEffect(() => {
2026-10-23T06:46:06.1034256Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1034442Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1034564Z 285 โ setNow(new Date().toISOString());
2026-10-23T06:46:06.1034674Z ยท โโโโฌโโ
2026-10-23T06:46:06.1034860Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1035036Z 286 โ const id = setInterval(() => setNow(new Date().toISOString()), 60_000);
2026-10-23T06:46:06.1035133Z โฐโโโโ
2026-10-23T06:46:06.1035787Z 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-23T06:46:06.1036143Z 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-23T06:46:06.1036146Z
2026-10-23T06:46:06.1036388Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1036580Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:365:25]
2026-10-23T06:46:06.1036753Z 364 โ // range) the boundary string is identical and the chain would die.
2026-10-23T06:46:06.1036878Z 365 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-23T06:46:06.1037012Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1037207Z ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-23T06:46:06.1037371Z 366 โ const listItems = ((): readonly SidebarListItem[] => {
2026-10-23T06:46:06.1037457Z โฐโโโโ
2026-10-23T06:46:06.1037841Z 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-23T06:46:06.1038159Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1038201Z
2026-10-23T06:46:06.1038394Z โ react(purity): Cannot call impure function during render
2026-10-23T06:46:06.1038645Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:356:53]
2026-10-23T06:46:06.1038772Z 355 โ if (Number.isNaN(wakeAtMs)) return;
2026-10-23T06:46:06.1038953Z 356 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-23T06:46:06.1039102Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.1039319Z ยท โฐโโ Cannot call impure function
2026-10-23T06:46:06.1039432Z 357 โ const id = setTimeout(() => {
2026-10-23T06:46:06.1039520Z โฐโโโโ
2026-10-23T06:46:06.1039815Z help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T06:46:06.1040222Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T06:46:06.1040262Z
2026-10-23T06:46:06.1040555Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1040742Z โญโ[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-23T06:46:06.1040937Z 28 โ const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-23T06:46:06.1041032Z 29 โ useEffect(() => {
2026-10-23T06:46:06.1041147Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1041375Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1041543Z 30 โ if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-23T06:46:06.1045272Z ยท โโโโฌโโโ
2026-10-23T06:46:06.1045501Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1045581Z 31 โ }, [key, live, snapshot]);
2026-10-23T06:46:06.1045640Z โฐโโโโ
2026-10-23T06:46:06.1046247Z 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-23T06:46:06.1046575Z 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-23T06:46:06.1046578Z
2026-10-23T06:46:06.1046799Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T06:46:06.1046943Z โญโ[packages/shared/src/composerContextLegacySend.ts:19:45]
2026-10-23T06:46:06.1047070Z 18 โ const occurrences = collectComposerContextReferences(text);
2026-10-23T06:46:06.1047181Z 19 โ for (const occurrence of [...occurrences].reverse()) {
2026-10-23T06:46:06.1047294Z ยท โโโโโโโ
2026-10-23T06:46:06.1047406Z 20 โ const record = recordsById.get(occurrence.contextId);
2026-10-23T06:46:06.1047460Z โฐโโโโ
2026-10-23T06:46:06.1047724Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T06:46:06.1047726Z
2026-10-23T06:46:06.1048011Z โ eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1048163Z โญโ[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-23T06:46:06.1048218Z 60 โ ) {
2026-10-23T06:46:06.1048389Z 61 โ const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-23T06:46:06.1048511Z ยท โโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1048654Z ยท โฐโโ 'useDragRegion' is declared here
2026-10-23T06:46:06.1048746Z 62 โ const isInline = props.mode === "inline";
2026-10-23T06:46:06.1048798Z โฐโโโโ
2026-10-23T06:46:06.1048904Z help: Consider removing this declaration.
2026-10-23T06:46:06.1048907Z
2026-10-23T06:46:06.1049113Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1049336Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
2026-10-23T06:46:06.1049457Z 453 โ showAuxiliaryPane("inspector");
2026-10-23T06:46:06.1049566Z 454 โ }, [environmentId, showAuxiliaryPane, threadId]);
2026-10-23T06:46:06.1049712Z ยท โโโโโโโฌโโโโโโ โโโโโฌโโโ
2026-10-23T06:46:06.1049912Z ยท โ โฐโโ Unnecessary dependency `threadId`
2026-10-23T06:46:06.1050064Z ยท โฐโโ Unnecessary dependency `environmentId`
2026-10-23T06:46:06.1050126Z 455 โ const {
2026-10-23T06:46:06.1050179Z โฐโโโโ
2026-10-23T06:46:06.1050475Z 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-23T06:46:06.1050796Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1050802Z
2026-10-23T06:46:06.1050990Z โ react(static-components): Cannot create components during render
2026-10-23T06:46:06.1051130Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:725:20]
2026-10-23T06:46:06.1051196Z 492 โ // same check.
2026-10-23T06:46:06.1051322Z 493 โ const NativeReviewDiffView = resolveNativeReviewDiffView();
2026-10-23T06:46:06.1051445Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-23T06:46:06.1051630Z ยท โฐโโ The component is created during render here
2026-10-23T06:46:06.1051781Z 494 โ const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
2026-10-23T06:46:06.1051906Z 495 โ const showcasedReviewDrawRef = useRef<string | null>(null);
2026-10-23T06:46:06.1052040Z 496 โ const [isPullRefreshing, setIsPullRefreshing] = useState(false);
2026-10-23T06:46:06.1052133Z 497 โ const handlePullToRefresh = async () => {
2026-10-23T06:46:06.1052213Z 498 โ setIsPullRefreshing(true);
2026-10-23T06:46:06.1052295Z 499 โ await refreshSelectedSection();
2026-10-23T06:46:06.1052373Z 500 โ setIsPullRefreshing(false);
2026-10-23T06:46:06.1052429Z 501 โ };
2026-10-23T06:46:06.1052573Z 502 โ const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
2026-10-23T06:46:06.1052715Z 503 โ const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
2026-10-23T06:46:06.1052824Z 504 โ const fileVisibility = useReviewFileVisibility({
2026-10-23T06:46:06.1052910Z 505 โ threadKey: reviewCache.threadKey,
2026-10-23T06:46:06.1053056Z 506 โ sectionId: selectedSection?.id ?? null,
2026-10-23T06:46:06.1053169Z 507 โ files: reviewFiles,
2026-10-23T06:46:06.1053269Z 508 โ cachedExpandedFileIds: selectedSection?.id
2026-10-23T06:46:06.1053404Z 509 โ ? reviewCache.expandedFileIdsBySection[selectedSection.id]
2026-10-23T06:46:06.1053470Z 510 โ : undefined,
2026-10-23T06:46:06.1053566Z 511 โ cachedViewedFileIds: selectedSection?.id
2026-10-23T06:46:06.1053689Z 512 โ ? reviewCache.viewedFileIdsBySection[selectedSection.id]
2026-10-23T06:46:06.1053753Z 513 โ : undefined,
2026-10-23T06:46:06.1053808Z 514 โ });
2026-10-23T06:46:06.1054002Z 515 โ const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
2026-10-23T06:46:06.1054135Z 516 โ const commentSelection = useReviewCommentSelectionController({
2026-10-23T06:46:06.1054200Z 517 โ environmentId,
2026-10-23T06:46:06.1054267Z 518 โ threadId,
2026-10-23T06:46:06.1054337Z 519 โ selectedSection,
2026-10-23T06:46:06.1054407Z 520 โ nativeReviewDiffData,
2026-10-23T06:46:06.1054464Z 521 โ });
2026-10-23T06:46:06.1054568Z 522 โ const nativeBridge = useNativeReviewDiffBridge({
2026-10-23T06:46:06.1054654Z 523 โ threadKey: reviewCache.threadKey,
2026-10-23T06:46:06.1054745Z 524 โ sectionId: selectedSection?.id ?? null,
2026-10-23T06:46:06.1054823Z 525 โ diff: selectedSection?.diff,
2026-10-23T06:46:06.1054899Z 526 โ data: nativeReviewDiffData,
2026-10-23T06:46:06.1054968Z 527 โ collapsedFileIds,
2026-10-23T06:46:06.1055031Z 528 โ viewedFileIds,
2026-10-23T06:46:06.1055143Z 529 โ selectedRowIds: commentSelection.selectedRowIds,
2026-10-23T06:46:06.1055239Z 530 โ canHighlight: parsedDiff.kind === "files",
2026-10-23T06:46:06.1055294Z 531 โ });
2026-10-23T06:46:06.1055373Z 532 โ const showcaseReviewKey =
2026-10-23T06:46:06.1055509Z 533 โ SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
2026-10-23T06:46:06.1055717Z 534 โ ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
2026-10-23T06:46:06.1055781Z 535 โ : null;
2026-10-23T06:46:06.1055949Z 536 โ const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
2026-10-23T06:46:06.1056028Z 537 โ nativeBridge.onDebug(event);
2026-10-23T06:46:06.1056086Z 538 โ if (
2026-10-23T06:46:06.1056168Z 539 โ showcaseReviewKey === null ||
2026-10-23T06:46:06.1056292Z 540 โ showcasedReviewDrawRef.current === showcaseReviewKey ||
2026-10-23T06:46:06.1056404Z 541 โ !isNativeReviewDiffDrawEvent(event.nativeEvent)
2026-10-23T06:46:06.1056460Z 542 โ ) {
2026-10-23T06:46:06.1056525Z 543 โ return;
2026-10-23T06:46:06.1056582Z 544 โ }
2026-10-23T06:46:06.1056694Z 545 โ showcasedReviewDrawRef.current = showcaseReviewKey;
2026-10-23T06:46:06.1056857Z 546 โ reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
2026-10-23T06:46:06.1056912Z 547 โ };
2026-10-23T06:46:06.1056969Z 548 โ
2026-10-23T06:46:06.1057086Z 549 โ const handleSelectFile = async (fileId: string | null) => {
2026-10-23T06:46:06.1057166Z 550 โ loadVisibleFile(fileId, true);
2026-10-23T06:46:06.1057256Z 551 โ commentSelection.clearSelection();
2026-10-23T06:46:06.1057376Z 552 โ if (fileId !== null && collapsedFileIds.includes(fileId)) {
2026-10-23T06:46:06.1057456Z 553 โ toggleExpandedFile(fileId);
2026-10-23T06:46:06.1057511Z 554 โ }
2026-10-23T06:46:06.1057624Z 555 โ const nativeView = nativeReviewDiffViewRef.current;
2026-10-23T06:46:06.1057755Z 556 โ if (!nativeView) return;
2026-10-23T06:46:06.1057878Z 557 โ const result = await settlePromise(() =>
2026-10-23T06:46:06.1058053Z 558 โ fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
2026-10-23T06:46:06.1058109Z 559 โ );
2026-10-23T06:46:06.1058199Z 560 โ if (AsyncResult.isFailure(result)) {
2026-10-23T06:46:06.1058379Z 561 โ console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
2026-10-23T06:46:06.1058468Z 562 โ }
2026-10-23T06:46:06.1058523Z 563 โ };
2026-10-23T06:46:06.1058608Z 564 โ const handleVisibleFileChange = (
2026-10-23T06:46:06.1058740Z 565 โ event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
2026-10-23T06:46:06.1058799Z 566 โ ) => {
2026-10-23T06:46:06.1058910Z 567 โ loadVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-23T06:46:06.1059086Z 568 โ reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-23T06:46:06.1059141Z 569 โ };
2026-10-23T06:46:06.1059221Z 570 โ const renderInspector = () => (
2026-10-23T06:46:06.1059292Z 571 โ <ReviewFileNavigator
2026-10-23T06:46:06.1059375Z 572 โ ref={reviewFileNavigatorRef}
2026-10-23T06:46:06.1059463Z 573 โ files={nativeReviewDiffData.files}
2026-10-23T06:46:06.1059541Z 574 โ headerInset={insets.top}
2026-10-23T06:46:06.1059636Z 575 โ sectionId={selectedSection?.id ?? null}
2026-10-23T06:46:06.1059755Z 576 โ onSelectFile={(fileId) => void handleSelectFile(fileId)}
2026-10-23T06:46:06.1059811Z 577 โ />
2026-10-23T06:46:06.1059867Z 578 โ );
2026-10-23T06:46:06.1059920Z 579 โ
2026-10-23T06:46:06.1060103Z 580 โ const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
2026-10-23T06:46:06.1060196Z 581 โ const { fileId } = event.nativeEvent;
2026-10-23T06:46:06.1060263Z 582 โ if (fileId) {
2026-10-23T06:46:06.1060344Z 583 โ loadVisibleFile(fileId, true);
2026-10-23T06:46:06.1060422Z 584 โ toggleExpandedFile(fileId);
2026-10-23T06:46:06.1060477Z 585 โ }
2026-10-23T06:46:06.1060533Z 586 โ };
2026-10-23T06:46:06.1060585Z 587 โ
2026-10-23T06:46:06.1060674Z 588 โ const handleNativeToggleViewedFile = (
2026-10-23T06:46:06.1060795Z 589 โ event: NativeSyntheticEvent<{ readonly fileId?: string }>,
2026-10-23T06:46:06.1060853Z 590 โ ) => {
2026-10-23T06:46:06.1060939Z 591 โ const { fileId } = event.nativeEvent;
2026-10-23T06:46:06.1061000Z 592 โ if (fileId) {
2026-10-23T06:46:06.1061076Z 593 โ toggleViewedFile(fileId);
2026-10-23T06:46:06.1061132Z 594 โ }
2026-10-23T06:46:06.1061185Z 595 โ };
2026-10-23T06:46:06.1061244Z 596 โ
2026-10-23T06:46:06.1061319Z 597 โ const parsedDiffNotice =
2026-10-23T06:46:06.1061483Z 598 โ parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
2026-10-23T06:46:06.1061604Z 599 โ const hasCachedSelectedDiff = selectedSection?.diff != null;
2026-10-23T06:46:06.1061763Z 600 โ const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
2026-10-23T06:46:06.1061883Z 601 โ const sectionMenu = buildReviewSectionMenu(reviewSections);
2026-10-23T06:46:06.1062043Z 602 โ const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
2026-10-23T06:46:06.1062152Z 603 โ hasEnvironmentPresentation: environment.isReady,
2026-10-23T06:46:06.1062255Z 604 โ isEnvironmentConnected: isEnvironmentReady,
2026-10-23T06:46:06.1062327Z 605 โ hasCachedSelectedDiff,
2026-10-23T06:46:06.1062395Z 606 โ hasAnyCachedDiff,
2026-10-23T06:46:06.1062514Z 607 โ });
2026-10-23T06:46:06.1062631Z 608 โ const handleRetryEnvironment = () => {
2026-10-23T06:46:06.1062719Z 609 โ void retryEnvironment(environmentId);
2026-10-23T06:46:06.1062773Z 610 โ };
2026-10-23T06:46:06.1062858Z 611 โ const handleReturnToThread = () => {
2026-10-23T06:46:06.1062938Z 612 โ if (navigation.canGoBack()) {
2026-10-23T06:46:06.1063009Z 613 โ navigation.goBack();
2026-10-23T06:46:06.1063070Z 614 โ return;
2026-10-23T06:46:06.1063123Z 615 โ }
2026-10-23T06:46:06.1063205Z 616 โ navigation.navigate("Thread", {
2026-10-23T06:46:06.1063294Z 617 โ environmentId: String(environmentId),
2026-10-23T06:46:06.1063372Z 618 โ threadId: String(threadId),
2026-10-23T06:46:06.1063427Z 619 โ });
2026-10-23T06:46:06.1063481Z 620 โ };
2026-10-23T06:46:06.1063565Z 621 โ const androidHeaderSubtitle = [
2026-10-23T06:46:06.1063639Z 622 โ selectedSection?.title,
2026-10-23T06:46:06.1063720Z 623 โ headerDiffSummary.additions,
2026-10-23T06:46:06.1063799Z 624 โ headerDiffSummary.deletions,
2026-10-23T06:46:06.1063853Z 625 โ ]
2026-10-23T06:46:06.1063957Z 626 โ .filter((part): part is string => Boolean(part))
2026-10-23T06:46:06.1064023Z 627 โ .join(" ยท ");
2026-10-23T06:46:06.1064076Z 628 โ
2026-10-23T06:46:06.1064154Z 629 โ const showChangedFilesPane =
2026-10-23T06:46:06.1064225Z 630 โ !showConnectionNotice &&
2026-10-23T06:46:06.1064299Z 631 โ selectedSection !== null &&
2026-10-23T06:46:06.1064379Z 632 โ parsedDiff.kind === "files" &&
2026-10-23T06:46:06.1064459Z 633 โ NativeReviewDiffView !== null;
2026-10-23T06:46:06.1064629Z 634 โ useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
2026-10-23T06:46:06.1064804Z 635 โ const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
2026-10-23T06:46:06.1064859Z 636 โ
2026-10-23T06:46:06.1064932Z 637 โ const listHeader = (() => {
2026-10-23T06:46:06.1065016Z 638 โ const children: ReactElement[] = [];
2026-10-23T06:46:06.1065069Z 639 โ
2026-10-23T06:46:06.1065131Z 640 โ if (error) {
2026-10-23T06:46:06.1065199Z 641 โ children.push(
2026-10-23T06:46:06.1065258Z 642 โ <View
2026-10-23T06:46:06.1065330Z 643 โ key="review-error"
2026-10-23T06:46:06.1065396Z 644 โ className={cn(
2026-10-23T06:46:06.1065474Z 645 โ "bg-card px-4 py-3",
2026-10-23T06:46:06.1065629Z 646 โ Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
2026-10-23T06:46:06.1065689Z 647 โ )}
2026-10-23T06:46:06.1065748Z 648 โ >
2026-10-23T06:46:06.1065917Z 649 โ <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
2026-10-23T06:46:06.1066079Z 650 โ <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
2026-10-23T06:46:06.1066140Z 651 โ </View>,
2026-10-23T06:46:06.1066197Z 652 โ );
2026-10-23T06:46:06.1066249Z 653 โ }
2026-10-23T06:46:06.1066302Z 654 โ
2026-10-23T06:46:06.1066374Z 655 โ if (parsedDiffNotice) {
2026-10-23T06:46:06.1066537Z 656 โ children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
2026-10-23T06:46:06.1066590Z 657 โ }
2026-10-23T06:46:06.1066642Z 658 โ
2026-10-23T06:46:06.1066720Z 659 โ if (children.length === 0) {
2026-10-23T06:46:06.1066783Z 660 โ return null;
2026-10-23T06:46:06.1066837Z 661 โ }
2026-10-23T06:46:06.1066889Z 662 โ
2026-10-23T06:46:06.1067019Z 663 โ return <>{children}</>;
2026-10-23T06:46:06.1067102Z 664 โ })();
2026-10-23T06:46:06.1067173Z 665 โ const headerSubtitle = [
2026-10-23T06:46:06.1067254Z 666 โ headerDiffSummary.additions,
2026-10-23T06:46:06.1067333Z 667 โ headerDiffSummary.deletions,
2026-10-23T06:46:06.1067412Z 668 โ pendingReviewCommentCount > 0
2026-10-23T06:46:06.1067587Z 669 โ ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
2026-10-23T06:46:06.1067648Z 670 โ : null,
2026-10-23T06:46:06.1067701Z 671 โ ]
2026-10-23T06:46:06.1067764Z 672 โ .filter(Boolean)
2026-10-23T06:46:06.1067828Z 673 โ .join(" ยท ");
2026-10-23T06:46:06.1067963Z 674 โ const headerTitleText = selectedSection?.title ?? "Review changes";
2026-10-23T06:46:06.1068015Z 675 โ
2026-10-23T06:46:06.1068074Z 676 โ return (
2026-10-23T06:46:06.1068129Z 677 โ <>
2026-10-23T06:46:06.1068199Z 678 โ <ReviewHeader
2026-10-23T06:46:06.1068287Z 679 โ environmentId={environmentId}
2026-10-23T06:46:06.1068356Z 680 โ threadId={threadId}
2026-10-23T06:46:06.1068450Z 681 โ title={headerTitleText}
2026-10-23T06:46:06.1068528Z 682 โ subtitle={headerSubtitle}
2026-10-23T06:46:06.1068625Z 683 โ androidSubtitle={androidHeaderSubtitle}
2026-10-23T06:46:06.1068699Z 684 โ iconColor={headerIcon}
2026-10-23T06:46:06.1068794Z 685 โ selectedThreadCwd={selectedThreadCwd}
2026-10-23T06:46:06.1068871Z 686 โ sectionMenu={sectionMenu}
2026-10-23T06:46:06.1068959Z 687 โ selectedSection={selectedSection}
2026-10-23T06:46:06.1069058Z 688 โ showSectionToolbar={showSectionToolbar}
2026-10-23T06:46:06.1069336Z 689 โ showChangedFilesToggle={showChangedFilesToggle}
2026-10-23T06:46:06.1069428Z 690 โ onRefresh={handlePullToRefresh}
2026-10-23T06:46:06.1069514Z 691 โ onSelectSection={selectSection}
2026-10-23T06:46:06.1069612Z 692 โ onReturnToThread={handleReturnToThread}
2026-10-23T06:46:06.1069669Z 693 โ />
2026-10-23T06:46:06.1069721Z 694 โ
2026-10-23T06:46:06.1069786Z 695 โ <ScreenContent>
2026-10-23T06:46:06.1069909Z 696 โ <View className="flex-1 bg-sheet android:bg-sheet-solid">
2026-10-23T06:46:06.1069990Z 697 โ {showConnectionNotice ? (
2026-10-23T06:46:06.1070131Z 698 โ <View className="flex-1" style={{ paddingTop: topContentInset }}>
2026-10-23T06:46:06.1070220Z 699 โ <EnvironmentConnectionNotice
2026-10-23T06:46:06.1070396Z 700 โ environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
2026-10-23T06:46:06.1070467Z 701 โ connection={
2026-10-23T06:46:06.1070578Z 702 โ environment.presentation?.connection ?? {
2026-10-23T06:46:06.1070661Z 703 โ phase: "available",
2026-10-23T06:46:06.1070735Z 704 โ error: null,
2026-10-23T06:46:06.1070811Z 705 โ traceId: null,
2026-10-23T06:46:06.1070875Z 706 โ }
2026-10-23T06:46:06.1070935Z 707 โ }
2026-10-23T06:46:06.1071015Z 708 โ resourceName="review"
2026-10-23T06:46:06.1071112Z 709 โ onRetry={handleRetryEnvironment}
2026-10-23T06:46:06.1071172Z 710 โ />
2026-10-23T06:46:06.1071233Z 711 โ </View>
2026-10-23T06:46:06.1071391Z 712 โ ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
2026-10-23T06:46:06.1071452Z 713 โ <View
2026-10-23T06:46:06.1071528Z 714 โ className="flex-1"
2026-10-23T06:46:06.1071669Z 715 โ style={{
2026-10-23T06:46:06.1071825Z 716 โ backgroundColor: nativeBridge.theme.background,
2026-10-23T06:46:06.1071886Z 717 โ }}
2026-10-23T06:46:06.1071944Z 718 โ >
2026-10-23T06:46:06.1072006Z 719 โ <View
2026-10-23T06:46:06.1072092Z 720 โ className="min-w-0 flex-1"
2026-10-23T06:46:06.1072231Z 721 โ style={listHeader ? { paddingTop: topContentInset } : undefined}
2026-10-23T06:46:06.1072292Z 722 โ >
2026-10-23T06:46:06.1072362Z 723 โ {listHeader}
2026-10-23T06:46:06.1072483Z 724 โ <View className="min-w-0 flex-1" collapsable={false}>
2026-10-23T06:46:06.1072566Z 725 โ <NativeReviewDiffView
2026-10-23T06:46:06.1072673Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1072852Z ยท โฐโโ This component is created during render
2026-10-23T06:46:06.1072936Z 726 โ collapsable={false}
2026-10-23T06:46:06.1072989Z โฐโโโโ
2026-10-23T06:46:06.1073240Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-23T06:46:06.1073565Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-23T06:46:06.1073568Z
2026-10-23T06:46:06.1073833Z โ eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
2026-10-23T06:46:06.1073990Z โญโ[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
2026-10-23T06:46:06.1074046Z 1619 โ
2026-10-23T06:46:06.1074262Z 1620 โ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
2026-10-23T06:46:06.1074385Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1074590Z ยท โฐโโ 'promptResponseHasMissingXAiStopReason' is declared here
2026-10-23T06:46:06.1074668Z 1621 โ const meta = response._meta;
2026-10-23T06:46:06.1074719Z โฐโโโโ
2026-10-23T06:46:06.1074825Z help: Consider removing this declaration.
2026-10-23T06:46:06.1074828Z
2026-10-23T06:46:06.1075024Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T06:46:06.1075177Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
2026-10-23T06:46:06.1075290Z 222 โ ? snippetTokens.map((line, lineIndex) => (
2026-10-23T06:46:06.1075387Z 223 โ <NativeText key={lineIndex}>
2026-10-23T06:46:06.1075496Z ยท โโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1075591Z 224 โ {lineIndex > 0 ? "\n" : ""}
2026-10-23T06:46:06.1075642Z โฐโโโโ
2026-10-23T06:46:06.1075791Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T06:46:06.1075794Z
2026-10-23T06:46:06.1075988Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T06:46:06.1076140Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
2026-10-23T06:46:06.1076216Z 226 โ <NativeText
2026-10-23T06:46:06.1076299Z 227 โ key={tokenIndex}
2026-10-23T06:46:06.1076460Z ยท โโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1076565Z 228 โ style={{
2026-10-23T06:46:06.1076616Z โฐโโโโ
2026-10-23T06:46:06.1076762Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T06:46:06.1076764Z
2026-10-23T06:46:06.1077025Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1077191Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:215:7]
2026-10-23T06:46:06.1077248Z 211 โ };
2026-10-23T06:46:06.1077313Z 212 โ useEffect(() => {
2026-10-23T06:46:06.1077386Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1077519Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1077701Z 213 โ const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-23T06:46:06.1077766Z 214 โ if (inserted) {
2026-10-23T06:46:06.1077842Z 215 โ setSelection((current) =>
2026-10-23T06:46:06.1077921Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1078094Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1078263Z 216 โ current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-23T06:46:06.1078315Z โฐโโโโ
2026-10-23T06:46:06.1078956Z 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-23T06:46:06.1079288Z 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-23T06:46:06.1079293Z
2026-10-23T06:46:06.1079554Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1079717Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:296:7]
2026-10-23T06:46:06.1079795Z 284 โ }, [hasWorkspaceSnapshot]);
2026-10-23T06:46:06.1079860Z 285 โ useEffect(() => {
2026-10-23T06:46:06.1079932Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1080062Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1080209Z 286 โ if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-23T06:46:06.1080419Z 287 โ const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-23T06:46:06.1080519Z 288 โ const now = Date.now();
2026-10-23T06:46:06.1080632Z 289 โ const lastRequest = workspaceRefreshKeyRef.current;
2026-10-23T06:46:06.1080690Z 290 โ if (
2026-10-23T06:46:06.1080767Z 291 โ lastRequest?.key === key &&
2026-10-23T06:46:06.1080909Z 292 โ now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-23T06:46:06.1080963Z 293 โ )
2026-10-23T06:46:06.1081024Z 294 โ return;
2026-10-23T06:46:06.1081204Z 295 โ if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-23T06:46:06.1081291Z 296 โ setWorkspaceRefreshRetry(null);
2026-10-23T06:46:06.1081385Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.1081563Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1081630Z 297 โ return;
2026-10-23T06:46:06.1081684Z โฐโโโโ
2026-10-23T06:46:06.1082288Z 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-23T06:46:06.1082612Z 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-23T06:46:06.1082615Z
2026-10-23T06:46:06.1082819Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1082983Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:326:5]
2026-10-23T06:46:06.1083043Z 325 โ }, [
2026-10-23T06:46:06.1083108Z 326 โ draftMessage,
2026-10-23T06:46:06.1083186Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1083333Z ยท โฐโโ Unnecessary dependency `draftMessage`
2026-10-23T06:46:06.1083397Z 327 โ environmentId,
2026-10-23T06:46:06.1083449Z โฐโโโโ
2026-10-23T06:46:06.1083746Z 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-23T06:46:06.1084060Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1084062Z
2026-10-23T06:46:06.1084326Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1084513Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-23T06:46:06.1084567Z 104 โ
2026-10-23T06:46:06.1084632Z 105 โ useEffect(() => {
2026-10-23T06:46:06.1084705Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1084834Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1084913Z 106 โ clearReviewCommentTarget();
2026-10-23T06:46:06.1085011Z 107 โ setPendingNativeCommentSelection(null);
2026-10-23T06:46:06.1085119Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1085294Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1085368Z 108 โ }, [selectedSection?.id]);
2026-10-23T06:46:06.1085419Z โฐโโโโ
2026-10-23T06:46:06.1086077Z 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-23T06:46:06.1086434Z 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-23T06:46:06.1086436Z
2026-10-23T06:46:06.1086694Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1086879Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-23T06:46:06.1086933Z 109 โ
2026-10-23T06:46:06.1087002Z 110 โ useEffect(() => {
2026-10-23T06:46:06.1087074Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1087204Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1087292Z 111 โ if (activeCommentTarget === null) {
2026-10-23T06:46:06.1087393Z 112 โ setPendingNativeCommentSelection(null);
2026-10-23T06:46:06.1087501Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1087679Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1087735Z 113 โ }
2026-10-23T06:46:06.1087788Z โฐโโโโ
2026-10-23T06:46:06.1088395Z 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-23T06:46:06.1088742Z 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-23T06:46:06.1088745Z
2026-10-23T06:46:06.1088949Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1089133Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-23T06:46:06.1089231Z 107 โ setPendingNativeCommentSelection(null);
2026-10-23T06:46:06.1089303Z 108 โ }, [selectedSection?.id]);
2026-10-23T06:46:06.1089390Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1089560Z ยท โฐโโ Unnecessary dependency `selectedSection?.id`
2026-10-23T06:46:06.1089616Z 109 โ
2026-10-23T06:46:06.1089666Z โฐโโโโ
2026-10-23T06:46:06.1089962Z 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-23T06:46:06.1090277Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1090280Z
2026-10-23T06:46:06.1090542Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1090674Z โญโ[packages/provider-grok/src/server/adapter.ts:408:7]
2026-10-23T06:46:06.1090726Z 407 โ
2026-10-23T06:46:06.1090797Z 408 โ const layer: Layer.Layer<
2026-10-23T06:46:06.1090919Z ยท โโโฌโโ
2026-10-23T06:46:06.1091076Z ยท โฐโโ 'layer' is declared here
2026-10-23T06:46:06.1091168Z 409 โ ProviderAdapter.ProviderAdapterV2,
2026-10-23T06:46:06.1091221Z โฐโโโโ
2026-10-23T06:46:06.1091325Z help: Consider removing this declaration.
2026-10-23T06:46:06.1091328Z
2026-10-23T06:46:06.1091805Z โ 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-23T06:46:06.1091983Z โญโ[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
2026-10-23T06:46:06.1092055Z 222 โ let idlePasses = 0;
2026-10-23T06:46:06.1092208Z 223 โ โญโโถ for (;;) {
2026-10-23T06:46:06.1092351Z 224 โ โ yield* Effect.promise(() => Promise.resolve());
2026-10-23T06:46:06.1092497Z 225 โ โ const pending = backgroundRuntime.pending.shift();
2026-10-23T06:46:06.1092594Z 226 โ โ if (!pending) {
2026-10-23T06:46:06.1092690Z 227 โ โ idlePasses++;
2026-10-23T06:46:06.1092796Z 228 โ โ if (idlePasses >= 3) {
2026-10-23T06:46:06.1092881Z 229 โ โ return;
2026-10-23T06:46:06.1092961Z 230 โ โ }
2026-10-23T06:46:06.1093049Z 231 โ โ continue;
2026-10-23T06:46:06.1093126Z 232 โ โ }
2026-10-23T06:46:06.1093219Z 233 โ โ idlePasses = 0;
2026-10-23T06:46:06.1093341Z 234 โ โ const exit = yield* Effect.exit(
2026-10-23T06:46:06.1093559Z 235 โ โ pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-23T06:46:06.1093636Z 236 โ โ );
2026-10-23T06:46:06.1093742Z 237 โ โ yield* Effect.sync(() => {
2026-10-23T06:46:06.1093848Z 238 โ โ pending.resolve(exit);
2026-10-23T06:46:06.1093924Z 239 โ โ });
2026-10-23T06:46:06.1094053Z 240 โ โฐโโถ }
2026-10-23T06:46:06.1094110Z 241 โ },
2026-10-23T06:46:06.1094163Z โฐโโโโ
2026-10-23T06:46:06.1094165Z
2026-10-23T06:46:06.1094456Z โ eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1094606Z โญโ[apps/server/src/orchestration-v2/Orchestrator.ts:12316:7]
2026-10-23T06:46:06.1094660Z 12315 โ
2026-10-23T06:46:06.1094803Z 12316 โ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-23T06:46:06.1094890Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1095041Z ยท โฐโโ 'layerUnavailable' is declared here
2026-10-23T06:46:06.1095108Z 12317 โ OrchestratorV2,
2026-10-23T06:46:06.1095161Z โฐโโโโ
2026-10-23T06:46:06.1095266Z help: Consider removing this declaration.
2026-10-23T06:46:06.1095269Z
2026-10-23T06:46:06.1095529Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1095734Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:400:5]
2026-10-23T06:46:06.1095826Z 398 โ
2026-10-23T06:46:06.1095891Z 399 โ useEffect(() => {
2026-10-23T06:46:06.1095963Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1096092Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1096185Z 400 โ setInspectorSelection((current) => {
2026-10-23T06:46:06.1096272Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.1096446Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1096547Z 401 โ if (props.renderInspector === undefined) {
2026-10-23T06:46:06.1096600Z โฐโโโโ
2026-10-23T06:46:06.1097211Z 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-23T06:46:06.1097540Z 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-23T06:46:06.1097543Z
2026-10-23T06:46:06.1097761Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-23T06:46:06.1097912Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:528:24]
2026-10-23T06:46:06.1098074Z 527 โ const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-23T06:46:06.1098248Z 528 โ โญโโถ const GitInspector = () => (
2026-10-23T06:46:06.1098351Z 529 โ โ <GitOverviewSheet
2026-10-23T06:46:06.1098503Z 530 โ โ headerInset={inspectorHeaderInset}
2026-10-23T06:46:06.1098610Z 531 โ โ presentation="inspector"
2026-10-23T06:46:06.1098792Z 532 โ โ route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-23T06:46:06.1098869Z 533 โ โ />
2026-10-23T06:46:06.1098999Z 534 โ โฐโโถ );
2026-10-23T06:46:06.1099079Z 535 โ const FilesInspector = () =>
2026-10-23T06:46:06.1099130Z โฐโโโโ
2026-10-23T06:46:06.1099353Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T06:46:06.1099356Z
2026-10-23T06:46:06.1099576Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-23T06:46:06.1099729Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:535:26]
2026-10-23T06:46:06.1099788Z 534 โ );
2026-10-23T06:46:06.1099954Z 535 โ โญโโถ const FilesInspector = () =>
2026-10-23T06:46:06.1100107Z 536 โ โ selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-23T06:46:06.1100213Z 537 โ โ <ThreadFileNavigatorPane
2026-10-23T06:46:06.1100321Z 538 โ โ cwd={selectedThreadCwd}
2026-10-23T06:46:06.1100461Z 539 โ โ environmentId={selectedThread.environmentId}
2026-10-23T06:46:06.1100584Z 540 โ โ headerInset={inspectorHeaderInset}
2026-10-23T06:46:06.1100796Z 541 โ โ projectName={selectedThreadProject?.title ?? "Files"}
2026-10-23T06:46:06.1100933Z 542 โ โ selectedPath={null}
2026-10-23T06:46:06.1101062Z 543 โ โ onSelectFile={handleSelectInspectorFile}
2026-10-23T06:46:06.1101141Z 544 โ โ />
2026-10-23T06:46:06.1101279Z 545 โ โฐโโถ ) : null;
2026-10-23T06:46:06.1101434Z 546 โ const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-23T06:46:06.1101486Z โฐโโโโ
2026-10-23T06:46:06.1101703Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T06:46:06.1101706Z
2026-10-23T06:46:06.1101851Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1102018Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-23T06:46:06.1102181Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T06:46:06.1102302Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T06:46:06.1102426Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.1102600Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1102722Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T06:46:06.1102773Z โฐโโโโ
2026-10-23T06:46:06.1103256Z 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-23T06:46:06.1103553Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1103557Z
2026-10-23T06:46:06.1103701Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1103860Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-23T06:46:06.1103914Z 125 โ
2026-10-23T06:46:06.1104024Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T06:46:06.1104110Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.1104261Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1104364Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T06:46:06.1104414Z โฐโโโโ
2026-10-23T06:46:06.1104940Z 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-23T06:46:06.1105268Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1105271Z
2026-10-23T06:46:06.1105414Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1105570Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-23T06:46:06.1105621Z 125 โ
2026-10-23T06:46:06.1105729Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T06:46:06.1105816Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1105970Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1106074Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T06:46:06.1106126Z โฐโโโโ
2026-10-23T06:46:06.1106594Z 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-23T06:46:06.1106885Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1106888Z
2026-10-23T06:46:06.1107031Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1107192Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-23T06:46:06.1107247Z 125 โ
2026-10-23T06:46:06.1107353Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T06:46:06.1107468Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1107635Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1107735Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T06:46:06.1107787Z โฐโโโโ
2026-10-23T06:46:06.1108254Z 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-23T06:46:06.1108573Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1108579Z
2026-10-23T06:46:06.1108723Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1108881Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-23T06:46:06.1108933Z 125 โ
2026-10-23T06:46:06.1109040Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T06:46:06.1109209Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1109375Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1109475Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T06:46:06.1109527Z โฐโโโโ
2026-10-23T06:46:06.1110056Z 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-23T06:46:06.1110389Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1110392Z
2026-10-23T06:46:06.1110535Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1110693Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-23T06:46:06.1110804Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T06:46:06.1110998Z 127 โ โญโโถ const recorder = createLazyVoiceRecorder({
2026-10-23T06:46:06.1111178Z 128 โ โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T06:46:06.1111307Z 129 โ โ onStatus: (status: RecordingStatus) => {
2026-10-23T06:46:06.1111461Z 130 โ โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T06:46:06.1111579Z 131 โ โ isFinished: status.isFinished,
2026-10-23T06:46:06.1111759Z 132 โ โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T06:46:06.1111865Z 133 โ โ error: status.error,
2026-10-23T06:46:06.1111963Z 134 โ โ url: status.url,
2026-10-23T06:46:06.1112043Z 135 โ โ });
2026-10-23T06:46:06.1112120Z 136 โ โ },
2026-10-23T06:46:06.1112324Z 137 โ โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T06:46:06.1112437Z 138 โ โ selectInput: (inputs) => {
2026-10-23T06:46:06.1112589Z 139 โ โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T06:46:06.1112736Z 140 โ โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T06:46:06.1112902Z 141 โ โ const known = microphoneOrder(preferences.value.microphones);
2026-10-23T06:46:06.1113043Z 142 โ โ const order = rememberMicrophones(known, inputs);
2026-10-23T06:46:06.1113145Z 143 โ โ if (order !== known) {
2026-10-23T06:46:06.1113282Z 144 โ โ registry.set(updateMobilePreferencesAtom, {
2026-10-23T06:46:06.1113404Z 145 โ โ transform: (current) => ({
2026-10-23T06:46:06.1113613Z 146 โ โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T06:46:06.1113701Z 147 โ โ }),
2026-10-23T06:46:06.1113782Z 148 โ โ });
2026-10-23T06:46:06.1113861Z 149 โ โ }
2026-10-23T06:46:06.1114000Z 150 โ โ return preferredMicrophoneInput(inputs, order);
2026-10-23T06:46:06.1114077Z 151 โ โ },
2026-10-23T06:46:06.1114208Z 152 โ โโโถ });
2026-10-23T06:46:06.1114447Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-23T06:46:06.1114670Z 153 โ recorderRef.current = recorder;
2026-10-23T06:46:06.1114779Z โฐโโโโ
2026-10-23T06:46:06.1115242Z 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-23T06:46:06.1115537Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1115540Z
2026-10-23T06:46:06.1115685Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1115844Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-23T06:46:06.1115902Z 152 โ });
2026-10-23T06:46:06.1115983Z 153 โ recorderRef.current = recorder;
2026-10-23T06:46:06.1116100Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-23T06:46:06.1116288Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T06:46:06.1116407Z ยท โฐโโ This value is a ref
2026-10-23T06:46:06.1116510Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-23T06:46:06.1116562Z โฐโโโโ
2026-10-23T06:46:06.1117030Z 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-23T06:46:06.1117321Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1117324Z
2026-10-23T06:46:06.1117473Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1117633Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-23T06:46:06.1117721Z 153 โ recorderRef.current = recorder;
2026-10-23T06:46:06.1117914Z 154 โ โญโโถ sessionRef.current = new VoiceInputSession({
2026-10-23T06:46:06.1118001Z 155 โ โ recorder,
2026-10-23T06:46:06.1118129Z 156 โ โ getTranscriber: getLocalVoiceTranscriber,
2026-10-23T06:46:06.1118247Z 157 โ โ requestPermission: async () => {
2026-10-23T06:46:06.1118454Z 158 โ โ const permission = await requestRecordingPermissionsAsync();
2026-10-23T06:46:06.1118650Z 159 โ โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T06:46:06.1118730Z 160 โ โ },
2026-10-23T06:46:06.1118873Z 161 โ โ configureRecording: configureVoiceRecordingAudio,
2026-10-23T06:46:06.1119009Z 162 โ โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T06:46:06.1119144Z 163 โ โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T06:46:06.1119254Z 164 โ โ onStateChange: (nextState) =>
2026-10-23T06:46:06.1119347Z 165 โ โ setState({
2026-10-23T06:46:06.1119449Z 166 โ โ state: nextState,
2026-10-23T06:46:06.1119587Z 167 โ โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T06:46:06.1119775Z 168 โ โ label: sessionRef.current?.label ?? null,
2026-10-23T06:46:06.1119894Z 169 โ โ }),
2026-10-23T06:46:06.1120022Z 170 โ โโโถ });
2026-10-23T06:46:06.1120220Z ยท โฐโโโโ Cannot access ref value during render
2026-10-23T06:46:06.1120276Z 171 โ }
2026-10-23T06:46:06.1120329Z โฐโโโโ
2026-10-23T06:46:06.1120795Z 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-23T06:46:06.1121091Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1121101Z
2026-10-23T06:46:06.1121245Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1121402Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-23T06:46:06.1121484Z 153 โ recorderRef.current = recorder;
2026-10-23T06:46:06.1121587Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-23T06:46:06.1121699Z ยท โโโโโโฌโโโโโโโโโฌโโโ
2026-10-23T06:46:06.1121882Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T06:46:06.1122000Z ยท โฐโโ This value is a ref
2026-10-23T06:46:06.1122064Z 155 โ recorder,
2026-10-23T06:46:06.1122116Z โฐโโโโ
2026-10-23T06:46:06.1122588Z 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-23T06:46:06.1122882Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1122885Z
2026-10-23T06:46:06.1123029Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1123189Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-23T06:46:06.1123276Z 184 โ return () => subscription.remove();
2026-10-23T06:46:06.1123340Z 185 โ }, [controller]);
2026-10-23T06:46:06.1123416Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.1123565Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1123621Z 186 โ
2026-10-23T06:46:06.1123692Z โฐโโโโ
2026-10-23T06:46:06.1124154Z 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-23T06:46:06.1124445Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1124448Z
2026-10-23T06:46:06.1124593Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1124749Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-23T06:46:06.1124888Z 184 โ return () => subscription.remove();
2026-10-23T06:46:06.1124990Z 185 โ }, [controller]);
2026-10-23T06:46:06.1125067Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1125208Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1125261Z 186 โ
2026-10-23T06:46:06.1125314Z โฐโโโโ
2026-10-23T06:46:06.1125780Z 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-23T06:46:06.1126069Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1126072Z
2026-10-23T06:46:06.1126218Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1126376Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-23T06:46:06.1126432Z 191 โ },
2026-10-23T06:46:06.1126504Z 192 โ [controller, recorder],
2026-10-23T06:46:06.1126577Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.1126721Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1126778Z 193 โ );
2026-10-23T06:46:06.1126829Z โฐโโโโ
2026-10-23T06:46:06.1127293Z 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-23T06:46:06.1127587Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1127592Z
2026-10-23T06:46:06.1127734Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1127890Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-23T06:46:06.1127982Z 174 โ const controller = session.controller;
2026-10-23T06:46:06.1128067Z 175 โ const recorder = recorderRef.current;
2026-10-23T06:46:06.1128172Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1128330Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1128383Z 176 โ
2026-10-23T06:46:06.1128459Z โฐโโโโ
2026-10-23T06:46:06.1128932Z 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-23T06:46:06.1129223Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1129225Z
2026-10-23T06:46:06.1129368Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1129522Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-23T06:46:06.1129578Z 191 โ },
2026-10-23T06:46:06.1129651Z 192 โ [controller, recorder],
2026-10-23T06:46:06.1129740Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.1129886Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1130003Z 193 โ );
2026-10-23T06:46:06.1130089Z โฐโโโโ
2026-10-23T06:46:06.1130555Z 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-23T06:46:06.1130844Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1130847Z
2026-10-23T06:46:06.1130988Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1131145Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-23T06:46:06.1131237Z 245 โ return () => clearInterval(intervalId);
2026-10-23T06:46:06.1131355Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T06:46:06.1131445Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.1131602Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1131655Z 247 โ
2026-10-23T06:46:06.1131707Z โฐโโโโ
2026-10-23T06:46:06.1132168Z 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-23T06:46:06.1132456Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1132459Z
2026-10-23T06:46:06.1132601Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1132761Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-23T06:46:06.1132854Z 245 โ return () => clearInterval(intervalId);
2026-10-23T06:46:06.1132962Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T06:46:06.1133094Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1133252Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1133305Z 247 โ
2026-10-23T06:46:06.1133355Z โฐโโโโ
2026-10-23T06:46:06.1133817Z 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-23T06:46:06.1134172Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1134204Z
2026-10-23T06:46:06.1134348Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1134505Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-23T06:46:06.1134572Z 260 โ setOwnerFocused,
2026-10-23T06:46:06.1134633Z 261 โ session,
2026-10-23T06:46:06.1134705Z ยท โโโโฌโโโ
2026-10-23T06:46:06.1134841Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1134901Z 262 โ stop,
2026-10-23T06:46:06.1134954Z โฐโโโโ
2026-10-23T06:46:06.1135424Z 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-23T06:46:06.1135715Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1135717Z
2026-10-23T06:46:06.1135858Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1136015Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-23T06:46:06.1136070Z 250 โ
2026-10-23T06:46:06.1136211Z 251 โ โญโโถ return {
2026-10-23T06:46:06.1136422Z 252 โ โ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-23T06:46:06.1136508Z 253 โ โ state,
2026-10-23T06:46:06.1136601Z 254 โ โ audioLevels,
2026-10-23T06:46:06.1136696Z 255 โ โ elapsedSeconds,
2026-10-23T06:46:06.1136825Z 256 โ โ isBusy: voiceInputBlocksSubmission(state),
2026-10-23T06:46:06.1136907Z 257 โ โ ownerKey,
2026-10-23T06:46:06.1136985Z 258 โ โ label,
2026-10-23T06:46:06.1137075Z 259 โ โ focusedOwners,
2026-10-23T06:46:06.1137168Z 260 โ โ setOwnerFocused,
2026-10-23T06:46:06.1137249Z 261 โ โ session,
2026-10-23T06:46:06.1137328Z 262 โ โ stop,
2026-10-23T06:46:06.1137408Z 263 โ โ cancel,
2026-10-23T06:46:06.1137542Z 264 โ โโโถ };
2026-10-23T06:46:06.1137744Z ยท โฐโโโโ Cannot access ref value during render
2026-10-23T06:46:06.1137799Z 265 โ }
2026-10-23T06:46:06.1137852Z โฐโโโโ
2026-10-23T06:46:06.1138317Z 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-23T06:46:06.1138631Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1138634Z
2026-10-23T06:46:06.1138792Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1139009Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T06:46:06.1139201Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T06:46:06.1139324Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T06:46:06.1139405Z ยท โโโโโโฌโโโโโ
2026-10-23T06:46:06.1139541Z ยท โฐโโ `audioLevels` originates here
2026-10-23T06:46:06.1139660Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T06:46:06.1139804Z 124 โ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-23T06:46:06.1139857Z 125 โ
2026-10-23T06:46:06.1139964Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T06:46:06.1140064Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T06:46:06.1140207Z 128 โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T06:46:06.1140305Z 129 โ onStatus: (status: RecordingStatus) => {
2026-10-23T06:46:06.1140426Z 130 โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T06:46:06.1140516Z 131 โ isFinished: status.isFinished,
2026-10-23T06:46:06.1140659Z 132 โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T06:46:06.1140733Z 133 โ error: status.error,
2026-10-23T06:46:06.1140801Z 134 โ url: status.url,
2026-10-23T06:46:06.1140860Z 135 โ });
2026-10-23T06:46:06.1140916Z 136 โ },
2026-10-23T06:46:06.1141080Z 137 โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T06:46:06.1141158Z 138 โ selectInput: (inputs) => {
2026-10-23T06:46:06.1141288Z 139 โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T06:46:06.1141402Z 140 โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T06:46:06.1141536Z 141 โ const known = microphoneOrder(preferences.value.microphones);
2026-10-23T06:46:06.1141645Z 142 โ const order = rememberMicrophones(known, inputs);
2026-10-23T06:46:06.1141717Z 143 โ if (order !== known) {
2026-10-23T06:46:06.1141822Z 144 โ registry.set(updateMobilePreferencesAtom, {
2026-10-23T06:46:06.1141905Z 145 โ transform: (current) => ({
2026-10-23T06:46:06.1142078Z 146 โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T06:46:06.1142141Z 147 โ }),
2026-10-23T06:46:06.1142201Z 148 โ });
2026-10-23T06:46:06.1142257Z 149 โ }
2026-10-23T06:46:06.1142367Z 150 โ return preferredMicrophoneInput(inputs, order);
2026-10-23T06:46:06.1142431Z 151 โ },
2026-10-23T06:46:06.1142488Z 152 โ });
2026-10-23T06:46:06.1142569Z 153 โ recorderRef.current = recorder;
2026-10-23T06:46:06.1142671Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-23T06:46:06.1142731Z 155 โ recorder,
2026-10-23T06:46:06.1142830Z 156 โ getTranscriber: getLocalVoiceTranscriber,
2026-10-23T06:46:06.1142914Z 157 โ requestPermission: async () => {
2026-10-23T06:46:06.1143046Z 158 โ const permission = await requestRecordingPermissionsAsync();
2026-10-23T06:46:06.1143203Z 159 โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T06:46:06.1143260Z 160 โ },
2026-10-23T06:46:06.1143373Z 161 โ configureRecording: configureVoiceRecordingAudio,
2026-10-23T06:46:06.1143479Z 162 โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T06:46:06.1143636Z 163 โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T06:46:06.1143764Z 164 โ onStateChange: (nextState) =>
2026-10-23T06:46:06.1143830Z 165 โ setState({
2026-10-23T06:46:06.1143900Z 166 โ state: nextState,
2026-10-23T06:46:06.1144005Z 167 โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T06:46:06.1144105Z 168 โ label: sessionRef.current?.label ?? null,
2026-10-23T06:46:06.1144165Z 169 โ }),
2026-10-23T06:46:06.1144220Z 170 โ });
2026-10-23T06:46:06.1144273Z 171 โ }
2026-10-23T06:46:06.1144325Z 172 โ
2026-10-23T06:46:06.1144411Z 173 โ const session = sessionRef.current;
2026-10-23T06:46:06.1144499Z 174 โ const controller = session.controller;
2026-10-23T06:46:06.1144583Z 175 โ const recorder = recorderRef.current;
2026-10-23T06:46:06.1144635Z 176 โ
2026-10-23T06:46:06.1144708Z 177 โ useEffect(() => {
2026-10-23T06:46:06.1144860Z 178 โ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-23T06:46:06.1144999Z 179 โ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-23T06:46:06.1145141Z 180 โ // real background state cancels preparation; recorder status handles
2026-10-23T06:46:06.1145247Z 181 โ // calls and route interruptions during capture.
2026-10-23T06:46:06.1145382Z 182 โ if (nextState === "background") controller.appMovedToBackground();
2026-10-23T06:46:06.1145437Z 183 โ });
2026-10-23T06:46:06.1145522Z 184 โ return () => subscription.remove();
2026-10-23T06:46:06.1145587Z 185 โ }, [controller]);
2026-10-23T06:46:06.1145639Z 186 โ
2026-10-23T06:46:06.1145698Z 187 โ useEffect(
2026-10-23T06:46:06.1145760Z 188 โ () => () => {
2026-10-23T06:46:06.1145832Z 189 โ controller.dispose();
2026-10-23T06:46:06.1145905Z 190 โ recorder.release();
2026-10-23T06:46:06.1145963Z 191 โ },
2026-10-23T06:46:06.1146035Z 192 โ [controller, recorder],
2026-10-23T06:46:06.1146090Z 193 โ );
2026-10-23T06:46:06.1146141Z 194 โ
2026-10-23T06:46:06.1146204Z 195 โ useEffect(() => {
2026-10-23T06:46:06.1146299Z 196 โ if (state.phase !== "recording") return;
2026-10-23T06:46:06.1146350Z 197 โ
2026-10-23T06:46:06.1146498Z 198 โ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-23T06:46:06.1146604Z 199 โ const activation = activateKeepAwakeAsync(tag);
2026-10-23T06:46:06.1146684Z 200 โ void activation.catch(() => {});
2026-10-23T06:46:06.1146751Z 201 โ return () => {
2026-10-23T06:46:06.1146900Z 202 โ // Release after activation settles, even if the recording ends immediately.
2026-10-23T06:46:06.1147046Z 203 โ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-23T06:46:06.1147104Z 204 โ };
2026-10-23T06:46:06.1147183Z 205 โ }, [keepAwakeId, state.phase]);
2026-10-23T06:46:06.1147234Z 206 โ
2026-10-23T06:46:06.1147297Z 207 โ useEffect(() => {
2026-10-23T06:46:06.1147431Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T06:46:06.1147482Z 209 โ
2026-10-23T06:46:06.1147604Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T06:46:06.1147758Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T06:46:06.1147861Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-23T06:46:06.1147938Z ยท โโโโโโฌโโโโโ
2026-10-23T06:46:06.1148078Z ยท โฐโโ `audioLevels` cannot be modified
2026-10-23T06:46:06.1148195Z 213 โ }
2026-10-23T06:46:06.1148283Z โฐโโโโ
2026-10-23T06:46:06.1148567Z 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-23T06:46:06.1148879Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1148882Z
2026-10-23T06:46:06.1149085Z โ react(immutability): Cannot modify local variables after render completes
2026-10-23T06:46:06.1149473Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T06:46:06.1149527Z 206 โ
2026-10-23T06:46:06.1149590Z 207 โ useEffect(() => {
2026-10-23T06:46:06.1149669Z ยท โโโโฌโโโ
2026-10-23T06:46:06.1149893Z ยท โฐโโ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-23T06:46:06.1150033Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T06:46:06.1150084Z 209 โ
2026-10-23T06:46:06.1150204Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T06:46:06.1150357Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T06:46:06.1150459Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-23T06:46:06.1150535Z ยท โโโโโโฌโโโโโ
2026-10-23T06:46:06.1150670Z ยท โฐโโ This modifies `audioLevels`
2026-10-23T06:46:06.1150725Z 213 โ }
2026-10-23T06:46:06.1150777Z โฐโโโโ
2026-10-23T06:46:06.1151123Z 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-23T06:46:06.1151433Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1151436Z
2026-10-23T06:46:06.1151912Z โ 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-23T06:46:06.1152086Z โญโ[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:566:7]
2026-10-23T06:46:06.1152189Z 565 โ let afterSequence = created[0]!.sequence;
2026-10-23T06:46:06.1152388Z 566 โ โญโโถ for (let index = 1; index <= 32; index += 1) {
2026-10-23T06:46:06.1152492Z 567 โ โ const nextEvent = {
2026-10-23T06:46:06.1152651Z 568 โ โ id: EventId.make(`event:foundation-stream-race:${index}`),
2026-10-23T06:46:06.1152785Z 569 โ โ type: "thread.metadata-updated" as const,
2026-10-23T06:46:06.1152875Z 570 โ โ threadId,
2026-10-23T06:46:06.1152981Z 571 โ โ providerInstanceId,
2026-10-23T06:46:06.1153081Z 572 โ โ occurredAt: now,
2026-10-23T06:46:06.1153230Z 573 โ โ payload: { ...thread, title: `Race update ${index}` },
2026-10-23T06:46:06.1153359Z 574 โ โ } satisfies OrchestrationV2DomainEvent;
2026-10-23T06:46:06.1153551Z 575 โ โ const reader = yield* eventSink
2026-10-23T06:46:06.1153712Z 576 โ โ .stream({ threadId, afterSequence })
2026-10-23T06:46:06.1153842Z 577 โ โ .pipe(Stream.runHead, Effect.forkChild);
2026-10-23T06:46:06.1153947Z 578 โ โ yield* Effect.yieldNow;
2026-10-23T06:46:06.1154110Z 579 โ โ const written = yield* eventSink.write({ events: [nextEvent] });
2026-10-23T06:46:06.1154239Z 580 โ โ const received = yield* Fiber.join(reader);
2026-10-23T06:46:06.1154354Z 581 โ โ if (Option.isNone(received)) {
2026-10-23T06:46:06.1154555Z 582 โ โ return yield* Effect.die("The event stream ended before delivering the live event.");
2026-10-23T06:46:06.1154634Z 583 โ โ }
2026-10-23T06:46:06.1154801Z 584 โ โ assert.equal(received.value.sequence, written[0]?.sequence);
2026-10-23T06:46:06.1154953Z 585 โ โ assert.equal(received.value.event.id, nextEvent.id);
2026-10-23T06:46:06.1155083Z 586 โ โ afterSequence = received.value.sequence;
2026-10-23T06:46:06.1155214Z 587 โ โฐโโถ }
2026-10-23T06:46:06.1155273Z 588 โ }),
2026-10-23T06:46:06.1155326Z โฐโโโโ
2026-10-23T06:46:06.1155328Z
2026-10-23T06:46:06.1155801Z โ 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-23T06:46:06.1155981Z โญโ[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:2327:9]
2026-10-23T06:46:06.1156064Z 2326 โ let settled = false;
2026-10-23T06:46:06.1156225Z 2327 โ โญโโถ while (!settled) {
2026-10-23T06:46:06.1156384Z 2328 โ โ settled = (yield* outbox.listByCommandId(commandId)).every(
2026-10-23T06:46:06.1156515Z 2329 โ โ (effect) => effect.status === "succeeded",
2026-10-23T06:46:06.1156598Z 2330 โ โ );
2026-10-23T06:46:06.1156723Z 2331 โ โ if (!settled) yield* Effect.yieldNow;
2026-10-23T06:46:06.1156860Z 2332 โ โฐโโถ }
2026-10-23T06:46:06.1156978Z 2333 โ }).pipe(Effect.provide(layerWorker), Effect.scoped);
2026-10-23T06:46:06.1157030Z โฐโโโโ
2026-10-23T06:46:06.1157033Z
2026-10-23T06:46:06.1157303Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1157468Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-23T06:46:06.1157532Z 259 โ .join("|");
2026-10-23T06:46:06.1157596Z 260 โ useEffect(() => {
2026-10-23T06:46:06.1157670Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1157801Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1157862Z 261 โ stop();
2026-10-23T06:46:06.1157930Z ยท โโโฌโ
2026-10-23T06:46:06.1158095Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1158163Z 262 โ }, [orderVersion]);
2026-10-23T06:46:06.1158216Z โฐโโโโ
2026-10-23T06:46:06.1158924Z 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-23T06:46:06.1159282Z 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-23T06:46:06.1159285Z
2026-10-23T06:46:06.1159503Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T06:46:06.1159667Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-23T06:46:06.1159732Z 260 โ useEffect(() => {
2026-10-23T06:46:06.1159792Z 261 โ stop();
2026-10-23T06:46:06.1159864Z ยท โโโฌโ
2026-10-23T06:46:06.1159992Z ยท โฐโโ Missing dependency `stop`
2026-10-23T06:46:06.1160057Z 262 โ }, [orderVersion]);
2026-10-23T06:46:06.1160138Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1160284Z ยท โฐโโ Unnecessary dependency `orderVersion`
2026-10-23T06:46:06.1160346Z 263 โ useEffect(
2026-10-23T06:46:06.1160398Z โฐโโโโ
2026-10-23T06:46:06.1160824Z 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-23T06:46:06.1161144Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1161150Z
2026-10-23T06:46:06.1161296Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1161456Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-23T06:46:06.1161533Z 95 โ const latest = useRef(props);
2026-10-23T06:46:06.1161603Z 96 โ latest.current = props;
2026-10-23T06:46:06.1161708Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-23T06:46:06.1161887Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T06:46:06.1161999Z ยท โฐโโ This value is a ref
2026-10-23T06:46:06.1162069Z 97 โ const gesture = useMemo(
2026-10-23T06:46:06.1162121Z โฐโโโโ
2026-10-23T06:46:06.1162597Z 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-23T06:46:06.1162893Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1162896Z
2026-10-23T06:46:06.1163039Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1163201Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-23T06:46:06.1163268Z 103 โ .runOnJS(true)
2026-10-23T06:46:06.1163369Z 104 โ .onStart(() => latest.current.onStart())
2026-10-23T06:46:06.1163486Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1163748Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-23T06:46:06.1163918Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1163970Z โฐโโโโ
2026-10-23T06:46:06.1164439Z 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-23T06:46:06.1164733Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1164735Z
2026-10-23T06:46:06.1164880Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1165045Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-23T06:46:06.1165148Z 104 โ .onStart(() => latest.current.onStart())
2026-10-23T06:46:06.1165277Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1165422Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1165635Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-23T06:46:06.1165760Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1165811Z โฐโโโโ
2026-10-23T06:46:06.1166285Z 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-23T06:46:06.1166581Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1166583Z
2026-10-23T06:46:06.1166730Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1166888Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-23T06:46:06.1167017Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1167141Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1167283Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1167557Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-23T06:46:06.1167738Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T06:46:06.1167789Z โฐโโโโ
2026-10-23T06:46:06.1168253Z 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-23T06:46:06.1168565Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1168568Z
2026-10-23T06:46:06.1168713Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1168871Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-23T06:46:06.1168998Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1169125Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T06:46:06.1169264Z ยท โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1169471Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-23T06:46:06.1169539Z 108 โ [props.disabled],
2026-10-23T06:46:06.1169590Z โฐโโโโ
2026-10-23T06:46:06.1170055Z 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-23T06:46:06.1170348Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1170354Z
2026-10-23T06:46:06.1170497Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1170656Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-23T06:46:06.1170770Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-23T06:46:06.1170876Z 249 โ latest.current = { rows, planners, moveThread };
2026-10-23T06:46:06.1170980Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-23T06:46:06.1171160Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T06:46:06.1171275Z ยท โฐโโ This value is a ref
2026-10-23T06:46:06.1171330Z 250 โ
2026-10-23T06:46:06.1171386Z โฐโโโโ
2026-10-23T06:46:06.1171853Z 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-23T06:46:06.1172144Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1172146Z
2026-10-23T06:46:06.1172291Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1172451Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-23T06:46:06.1172569Z 246 โ const [preview, setPreview] = useState<Drag | null>(null);
2026-10-23T06:46:06.1172743Z 247 โ const translateY = useRef(new Animated.Value(0)).current;
2026-10-23T06:46:06.1172903Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1173071Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1173181Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-23T06:46:06.1173233Z โฐโโโโ
2026-10-23T06:46:06.1173696Z 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-23T06:46:06.1173987Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1173990Z
2026-10-23T06:46:06.1174163Z โ react(purity): Cannot call impure function during render
2026-10-23T06:46:06.1174326Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-23T06:46:06.1174391Z 323 โ update(0);
2026-10-23T06:46:06.1174473Z 324 โ let last = performance.now();
2026-10-23T06:46:06.1174569Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.1174709Z ยท โฐโโ Cannot call impure function
2026-10-23T06:46:06.1174778Z 325 โ const tick = () => {
2026-10-23T06:46:06.1174829Z โฐโโโโ
2026-10-23T06:46:06.1175130Z 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-23T06:46:06.1175430Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T06:46:06.1175435Z
2026-10-23T06:46:06.1175623Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-23T06:46:06.1175781Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-23T06:46:06.1175841Z 98 โ () =>
2026-10-23T06:46:06.1175906Z 99 โ Gesture.Pan()
2026-10-23T06:46:06.1175982Z ยท โโฌโ
2026-10-23T06:46:06.1176113Z ยท โฐโโ `Pan` may be a component
2026-10-23T06:46:06.1176195Z 100 โ .enabled(!props.disabled)
2026-10-23T06:46:06.1176245Z โฐโโโโ
2026-10-23T06:46:06.1176527Z 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-23T06:46:06.1176980Z 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-23T06:46:06.1176982Z
2026-10-23T06:46:06.1177169Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-23T06:46:06.1177328Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-23T06:46:06.1177394Z 103 โ .runOnJS(true)
2026-10-23T06:46:06.1177497Z 104 โ .onStart(() => latest.current.onStart())
2026-10-23T06:46:06.1177585Z ยท โโโโฌโโ
2026-10-23T06:46:06.1178081Z ยท โฐโโ 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-23T06:46:06.1178246Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1178370Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-23T06:46:06.1178516Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-23T06:46:06.1178583Z 108 โ [props.disabled],
2026-10-23T06:46:06.1178665Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1178853Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-23T06:46:06.1178908Z 109 โ );
2026-10-23T06:46:06.1178960Z โฐโโโโ
2026-10-23T06:46:06.1179171Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-23T06:46:06.1179488Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1179491Z
2026-10-23T06:46:06.1179649Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1179822Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-23T06:46:06.1179878Z 90 โ }) {
2026-10-23T06:46:06.1179992Z 91 โ const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-23T06:46:06.1180071Z ยท โโโโโฌโโโ
2026-10-23T06:46:06.1180205Z ยท โฐโโ `rotation` originates here
2026-10-23T06:46:06.1180275Z 92 โ useLayoutEffect(() => {
2026-10-23T06:46:06.1180423Z 93 โ rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-23T06:46:06.1180497Z ยท โโโโโฌโโโ
2026-10-23T06:46:06.1180628Z ยท โฐโโ `rotation` cannot be modified
2026-10-23T06:46:06.1180705Z 94 โ }, [props.hidden, rotation]);
2026-10-23T06:46:06.1180756Z โฐโโโโ
2026-10-23T06:46:06.1181022Z 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-23T06:46:06.1181327Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1181330Z
2026-10-23T06:46:06.1181487Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1181662Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-23T06:46:06.1181760Z 266 โ const variant = props.variant ?? "plain";
2026-10-23T06:46:06.1181895Z 267 โ const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-23T06:46:06.1181983Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.1182130Z ยท โฐโโ `loadingVisibility` originates here
2026-10-23T06:46:06.1182199Z 268 โ useLayoutEffect(() => {
2026-10-23T06:46:06.1182358Z 269 โ loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-23T06:46:06.1182442Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T06:46:06.1182590Z ยท โฐโโ `loadingVisibility` cannot be modified
2026-10-23T06:46:06.1182682Z 270 โ }, [loadingVisibility, props.loading]);
2026-10-23T06:46:06.1182734Z โฐโโโโ
2026-10-23T06:46:06.1183055Z 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-23T06:46:06.1183394Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1183396Z
2026-10-23T06:46:06.1183550Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1183719Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-23T06:46:06.1183774Z 325 โ }) {
2026-10-23T06:46:06.1183937Z 326 โ const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-23T06:46:06.1184025Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1184182Z ยท โฐโโ `recordingVisibility` originates here
2026-10-23T06:46:06.1184255Z 327 โ useLayoutEffect(() => {
2026-10-23T06:46:06.1184443Z 328 โ recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-23T06:46:06.1184528Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T06:46:06.1184682Z ยท โฐโโ `recordingVisibility` cannot be modified
2026-10-23T06:46:06.1184772Z 329 โ }, [props.phase, recordingVisibility]);
2026-10-23T06:46:06.1184824Z โฐโโโโ
2026-10-23T06:46:06.1185083Z 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-23T06:46:06.1185388Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1185396Z
2026-10-23T06:46:06.1185594Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T06:46:06.1185739Z โญโ[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-23T06:46:06.1185827Z 35 โ <T3SourceTextRunNativeComponent
2026-10-23T06:46:06.1185891Z 36 โ key={index}
2026-10-23T06:46:06.1185970Z ยท โโโโโโโโโโโ
2026-10-23T06:46:06.1186044Z 37 โ style={flattenedStyle}
2026-10-23T06:46:06.1186096Z โฐโโโโ
2026-10-23T06:46:06.1186242Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T06:46:06.1186245Z
2026-10-23T06:46:06.1186401Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1186623Z โญโ[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-23T06:46:06.1186763Z 65 โ const [expanded, setExpanded] = useState(false);
2026-10-23T06:46:06.1186847Z 66 โ const progress = useSharedValue(0);
2026-10-23T06:46:06.1186920Z ยท โโโโโฌโโโ
2026-10-23T06:46:06.1187053Z ยท โฐโโ `progress` originates here
2026-10-23T06:46:06.1187119Z 67 โ useEffect(() => {
2026-10-23T06:46:06.1187243Z 68 โ progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-23T06:46:06.1187314Z ยท โโโโโฌโโโ
2026-10-23T06:46:06.1187446Z ยท โฐโโ `progress` cannot be modified
2026-10-23T06:46:06.1187516Z 69 โ }, [expanded, progress]);
2026-10-23T06:46:06.1187565Z โฐโโโโ
2026-10-23T06:46:06.1187835Z 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-23T06:46:06.1188142Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1188145Z
2026-10-23T06:46:06.1188290Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1188488Z โญโ[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-23T06:46:06.1188571Z 26 โ const latestInput = useRef(input);
2026-10-23T06:46:06.1188647Z 27 โ latestInput.current = input;
2026-10-23T06:46:06.1188760Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-23T06:46:06.1188943Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T06:46:06.1189065Z ยท โฐโโ This value is a ref
2026-10-23T06:46:06.1189183Z 28 โ const mounted = useRef(true);
2026-10-23T06:46:06.1189235Z โฐโโโโ
2026-10-23T06:46:06.1189707Z 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-23T06:46:06.1189998Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1190001Z
2026-10-23T06:46:06.1190187Z โ react(static-components): Cannot create components during render
2026-10-23T06:46:06.1190349Z โญโ[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
2026-10-23T06:46:06.1190442Z 196 โ const { onInput, onResize } = props;
2026-10-23T06:46:06.1190592Z 197 โ const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
2026-10-23T06:46:06.1190724Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1190914Z ยท โฐโโ The component is created during render here
2026-10-23T06:46:06.1191043Z 198 โ const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
2026-10-23T06:46:06.1191095Z 199 โ
2026-10-23T06:46:06.1191165Z 200 โ useEffect(() => {
2026-10-23T06:46:06.1191253Z 201 โ terminalDebugLog("native:surface", {
2026-10-23T06:46:06.1191338Z 202 โ terminalKey: props.terminalKey,
2026-10-23T06:46:06.1191414Z 203 โ native: hasNativeSurface,
2026-10-23T06:46:06.1191550Z 204 โ hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
2026-10-23T06:46:06.1191802Z 205 โ bufferLen: props.buffer.length,
2026-10-23T06:46:06.1191923Z 206 โ isRunning: props.isRunning,
2026-10-23T06:46:06.1191979Z 207 โ });
2026-10-23T06:46:06.1192139Z 208 โ }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
2026-10-23T06:46:06.1192227Z 209 โ const handleNativeInput = useCallback(
2026-10-23T06:46:06.1192343Z 210 โ (event: NativeSyntheticEvent<TerminalInputEvent>) => {
2026-10-23T06:46:06.1192439Z 211 โ if (!props.isRunning || props.readOnly) {
2026-10-23T06:46:06.1192500Z 212 โ return;
2026-10-23T06:46:06.1192556Z 213 โ }
2026-10-23T06:46:06.1192649Z 214 โ terminalDebugLog("native:onInput", {
2026-10-23T06:46:06.1192798Z 215 โ codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
2026-10-23T06:46:06.1192856Z 216 โ });
2026-10-23T06:46:06.1192949Z 217 โ onInput(event.nativeEvent.data);
2026-10-23T06:46:06.1193007Z 218 โ },
2026-10-23T06:46:06.1193105Z 219 โ [onInput, props.isRunning, props.readOnly],
2026-10-23T06:46:06.1193158Z 220 โ );
2026-10-23T06:46:06.1193249Z 221 โ const handleNativeResize = useCallback(
2026-10-23T06:46:06.1193364Z 222 โ (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
2026-10-23T06:46:06.1193426Z 223 โ onResize({
2026-10-23T06:46:06.1193511Z 224 โ cols: event.nativeEvent.cols,
2026-10-23T06:46:06.1193593Z 225 โ rows: event.nativeEvent.rows,
2026-10-23T06:46:06.1193649Z 226 โ });
2026-10-23T06:46:06.1193704Z 227 โ },
2026-10-23T06:46:06.1193765Z 228 โ [onResize],
2026-10-23T06:46:06.1193821Z 229 โ );
2026-10-23T06:46:06.1193872Z 230 โ
2026-10-23T06:46:06.1193956Z 231 โ if (NativeTerminalSurfaceView) {
2026-10-23T06:46:06.1194021Z 232 โ return (
2026-10-23T06:46:06.1194104Z 233 โ <View style={props.style}>
2026-10-23T06:46:06.1194183Z 234 โ <NativeTerminalSurfaceView
2026-10-23T06:46:06.1194289Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-23T06:46:06.1194448Z ยท โฐโโ This component is created during render
2026-10-23T06:46:06.1194544Z 235 โ appearanceScheme={themeAppearance}
2026-10-23T06:46:06.1194595Z โฐโโโโ
2026-10-23T06:46:06.1194847Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-23T06:46:06.1195165Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-23T06:46:06.1195168Z
2026-10-23T06:46:06.1195433Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1195594Z โญโ[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-23T06:46:06.1195762Z 112 โ const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-23T06:46:06.1195828Z 113 โ useEffect(() => {
2026-10-23T06:46:06.1195900Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1196030Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1196196Z 114 โ if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-23T06:46:06.1196258Z 115 โ return;
2026-10-23T06:46:06.1196313Z 116 โ }
2026-10-23T06:46:06.1196430Z 117 โ setEntry({ key: input.targetKey, location: candidate });
2026-10-23T06:46:06.1196562Z ยท โโโโโฌโโโ
2026-10-23T06:46:06.1196764Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1196888Z 118 โ }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-23T06:46:06.1196940Z โฐโโโโ
2026-10-23T06:46:06.1197550Z 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-23T06:46:06.1197875Z 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-23T06:46:06.1197878Z
2026-10-23T06:46:06.1198089Z โ eslint(no-unsafe-optional-chaining): Unsafe usage of optional chaining
2026-10-23T06:46:06.1198261Z โญโ[apps/server/src/orchestration-v2/ThreadLaunchService.test.ts:1783:8]
2026-10-23T06:46:06.1198329Z 1782 โ assert.equal(
2026-10-23T06:46:06.1198499Z 1783 โ (stored.context?.records[0] as { attachmentId: string }).attachmentId,
2026-10-23T06:46:06.1198603Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1198684Z 1784 โ stored.attachments[0]?.id,
2026-10-23T06:46:06.1198735Z โฐโโโโ
2026-10-23T06:46:06.1198907Z help: If this short-circuits with 'undefined' the evaluation will throw TypeError
2026-10-23T06:46:06.1198909Z
2026-10-23T06:46:06.1199170Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1199344Z โญโ[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:10566:7]
2026-10-23T06:46:06.1199402Z 10565 โ
2026-10-23T06:46:06.1199474Z 10566 โ const layer: Layer.Layer<
2026-10-23T06:46:06.1199547Z ยท โโโฌโโ
2026-10-23T06:46:06.1199675Z ยท โฐโโ 'layer' is declared here
2026-10-23T06:46:06.1199769Z 10567 โ ProviderAdapter.ProviderAdapterV2,
2026-10-23T06:46:06.1199822Z โฐโโโโ
2026-10-23T06:46:06.1199927Z help: Consider removing this declaration.
2026-10-23T06:46:06.1199929Z
2026-10-23T06:46:06.1200187Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1200358Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-23T06:46:06.1200416Z 638 โ
2026-10-23T06:46:06.1200485Z 639 โ useEffect(() => {
2026-10-23T06:46:06.1200557Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1200685Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1200795Z 640 โ if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-23T06:46:06.1201952Z 641 โ return;
2026-10-23T06:46:06.1202016Z 642 โ }
2026-10-23T06:46:06.1202090Z 643 โ setPendingLaunchEntry({
2026-10-23T06:46:06.1202179Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.1202357Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1202427Z 644 โ key: launchTargetKey,
2026-10-23T06:46:06.1202478Z โฐโโโโ
2026-10-23T06:46:06.1203158Z 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-23T06:46:06.1203521Z 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-23T06:46:06.1203524Z
2026-10-23T06:46:06.1203784Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1203956Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-23T06:46:06.1204008Z 648 โ
2026-10-23T06:46:06.1204074Z 649 โ useEffect(() => {
2026-10-23T06:46:06.1204144Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1204279Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1204396Z 650 โ if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-23T06:46:06.1204457Z 651 โ return;
2026-10-23T06:46:06.1204511Z 652 โ }
2026-10-23T06:46:06.1204591Z 653 โ setInitialAttachGridEntry({
2026-10-23T06:46:06.1204684Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-23T06:46:06.1204858Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1204929Z 654 โ key: launchTargetKey,
2026-10-23T06:46:06.1204980Z โฐโโโโ
2026-10-23T06:46:06.1205589Z 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-23T06:46:06.1205917Z 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-23T06:46:06.1205920Z
2026-10-23T06:46:06.1206177Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1206346Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-23T06:46:06.1206399Z 743 โ
2026-10-23T06:46:06.1206463Z 744 โ useEffect(() => {
2026-10-23T06:46:06.1206533Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1206662Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1206767Z 745 โ if (!routeEnvironmentId || !routeThreadId) {
2026-10-23T06:46:06.1206841Z 746 โ setLastGridSize({
2026-10-23T06:46:06.1206923Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1207093Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1207175Z 747 โ cols: DEFAULT_TERMINAL_COLS,
2026-10-23T06:46:06.1207225Z โฐโโโโ
2026-10-23T06:46:06.1207824Z 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-23T06:46:06.1208218Z 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-23T06:46:06.1208255Z
2026-10-23T06:46:06.1208488Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1208658Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-23T06:46:06.1208714Z 537 โ });
2026-10-23T06:46:06.1208838Z 538 โ }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-23T06:46:06.1208949Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T06:46:06.1209194Z ยท โฐโโ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-23T06:46:06.1209355Z 539 โ const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-23T06:46:06.1209407Z โฐโโโโ
2026-10-23T06:46:06.1209711Z 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-23T06:46:06.1210032Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1210034Z
2026-10-23T06:46:06.1210236Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1210403Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-23T06:46:06.1210500Z 708 โ sentInitialInputKeyRef.current = null;
2026-10-23T06:46:06.1210566Z 709 โ }, [terminalKey]);
2026-10-23T06:46:06.1210643Z ยท โโโโโโฌโโโโโ
2026-10-23T06:46:06.1210790Z ยท โฐโโ Unnecessary dependency `terminalKey`
2026-10-23T06:46:06.1210846Z 710 โ
2026-10-23T06:46:06.1210897Z โฐโโโโ
2026-10-23T06:46:06.1211188Z 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-23T06:46:06.1211499Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1211501Z
2026-10-23T06:46:06.1211702Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1211872Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-23T06:46:06.1211928Z 799 โ };
2026-10-23T06:46:06.1212166Z 800 โ }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-23T06:46:06.1212382Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโฌโโโโโ
2026-10-23T06:46:06.1212614Z ยท โ โฐโโ Unnecessary dependency `terminalKey`
2026-10-23T06:46:06.1212825Z ยท โฐโโ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-23T06:46:06.1212878Z 801 โ
2026-10-23T06:46:06.1212928Z โฐโโโโ
2026-10-23T06:46:06.1213218Z 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-23T06:46:06.1213537Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1213543Z
2026-10-23T06:46:06.1213687Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1213855Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-23T06:46:06.1213908Z 792 โ }
2026-10-23T06:46:06.1214014Z 793 โ const pasteSession = pasteSessionRef.current;
2026-10-23T06:46:06.1214126Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.1214289Z ยท โฐโโ Cannot access ref value during render
2026-10-23T06:46:06.1214341Z 794 โ
2026-10-23T06:46:06.1214392Z โฐโโโโ
2026-10-23T06:46:06.1214871Z 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-23T06:46:06.1215166Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1215168Z
2026-10-23T06:46:06.1215394Z โ unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-23T06:46:06.1215566Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:1998:15]
2026-10-23T06:46:06.1215634Z 1997 โ assert.equal(
2026-10-23T06:46:06.1215782Z 1998 โ items.filter((item) => item.type === "assistant_message").at(-1)?.text,
2026-10-23T06:46:06.1215861Z ยท โโโโโโ
2026-10-23T06:46:06.1215944Z 1999 โ "authoritative answer",
2026-10-23T06:46:06.1215998Z โฐโโโโ
2026-10-23T06:46:06.1216168Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-23T06:46:06.1216170Z
2026-10-23T06:46:06.1216646Z โ 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-23T06:46:06.1216815Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:3951:7]
2026-10-23T06:46:06.1216998Z 3950 โ const closeFiber = yield* Scope.close(sessionScope, Exit.void).pipe(Effect.forkScoped);
2026-10-23T06:46:06.1217206Z 3951 โ โญโโถ while (!responseLifecycle.includes("failed")) {
2026-10-23T06:46:06.1217371Z 3952 โ โ yield* Effect.yieldNow;
2026-10-23T06:46:06.1217538Z 3953 โ โฐโโถ }
2026-10-23T06:46:06.1217661Z 3954 โ const responseExit = yield* Fiber.join(responseFiber);
2026-10-23T06:46:06.1217713Z โฐโโโโ
2026-10-23T06:46:06.1217716Z
2026-10-23T06:46:06.1218187Z โ 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-23T06:46:06.1218354Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6062:9]
2026-10-23T06:46:06.1218471Z 6061 โ .pipe(Effect.forkScoped);
2026-10-23T06:46:06.1218663Z 6062 โ โญโโถ while (promptGates.length < 1) {
2026-10-23T06:46:06.1218777Z 6063 โ โ yield* Effect.yieldNow;
2026-10-23T06:46:06.1218911Z 6064 โ โฐโโถ }
2026-10-23T06:46:06.1219081Z 6065 โ assert.isDefined(sessionUpdateHandler, "session update handler must be wired");
2026-10-23T06:46:06.1219133Z โฐโโโโ
2026-10-23T06:46:06.1219135Z
2026-10-23T06:46:06.1219597Z โ 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-23T06:46:06.1219762Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6197:9]
2026-10-23T06:46:06.1219855Z 6196 โ .pipe(Effect.forkScoped);
2026-10-23T06:46:06.1220040Z 6197 โ โญโโถ while (promptGates.length < 2) {
2026-10-23T06:46:06.1220150Z 6198 โ โ yield* Effect.yieldNow;
2026-10-23T06:46:06.1220284Z 6199 โ โฐโโถ }
2026-10-23T06:46:06.1220449Z 6200 โ if (sessionUpdateHandler === undefined || capturedMutation.current === null) {
2026-10-23T06:46:06.1220500Z โฐโโโโ
2026-10-23T06:46:06.1220503Z
2026-10-23T06:46:06.1220699Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T06:46:06.1220857Z โญโ[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-23T06:46:06.1220924Z 71 โ <Pressable
2026-10-23T06:46:06.1220988Z 72 โ key={index}
2026-10-23T06:46:06.1221079Z ยท โโโโโโโโโโโ
2026-10-23T06:46:06.1221166Z 73 โ accessibilityRole="button"
2026-10-23T06:46:06.1221218Z โฐโโโโ
2026-10-23T06:46:06.1221364Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T06:46:06.1221366Z
2026-10-23T06:46:06.1221625Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1221796Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-23T06:46:06.1221849Z 76 โ
2026-10-23T06:46:06.1221914Z 77 โ useEffect(() => {
2026-10-23T06:46:06.1221985Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1222115Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1222304Z 78 โ const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-23T06:46:06.1222407Z 79 โ setHostInput(host);
2026-10-23T06:46:06.1222483Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1222653Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1222720Z 80 โ setCodeInput(code);
2026-10-23T06:46:06.1222771Z โฐโโโโ
2026-10-23T06:46:06.1223377Z 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-23T06:46:06.1223709Z 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-23T06:46:06.1223714Z
2026-10-23T06:46:06.1223973Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1224143Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-23T06:46:06.1224195Z 82 โ
2026-10-23T06:46:06.1224259Z 83 โ useEffect(() => {
2026-10-23T06:46:06.1224328Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1224456Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1224544Z 84 โ if (routePairingUrl.length === 0) {
2026-10-23T06:46:06.1224604Z 85 โ return;
2026-10-23T06:46:06.1224659Z 86 โ }
2026-10-23T06:46:06.1224710Z 87 โ
2026-10-23T06:46:06.1224825Z 88 โ const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-23T06:46:06.1224897Z 89 โ setHostInput(host);
2026-10-23T06:46:06.1224975Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1225144Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1225209Z 90 โ setCodeInput(code);
2026-10-23T06:46:06.1225261Z โฐโโโโ
2026-10-23T06:46:06.1225864Z 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-23T06:46:06.1226186Z 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-23T06:46:06.1226189Z
2026-10-23T06:46:06.1226449Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T06:46:06.1226622Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-23T06:46:06.1226674Z 92 โ
2026-10-23T06:46:06.1226738Z 93 โ useEffect(() => {
2026-10-23T06:46:06.1226807Z ยท โโโโโฌโโโโ
2026-10-23T06:46:06.1226934Z ยท โฐโโ This is the containing effect
2026-10-23T06:46:06.1227018Z 94 โ if (pairingConnectionError) {
2026-10-23T06:46:06.1227091Z 95 โ setIsSubmitting(false);
2026-10-23T06:46:06.1227173Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T06:46:06.1227344Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T06:46:06.1227457Z 96 โ }
2026-10-23T06:46:06.1227537Z โฐโโโโ
2026-10-23T06:46:06.1228136Z 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-23T06:46:06.1228485Z 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-23T06:46:06.1228488Z
2026-10-23T06:46:06.1228645Z โ react(immutability): This value cannot be modified
2026-10-23T06:46:06.1228803Z โญโ[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-23T06:46:06.1228904Z 53 โ function usePulseAnimation(pulse: boolean) {
2026-10-23T06:46:06.1228998Z 54 โ const pulseProgress = useSharedValue(0);
2026-10-23T06:46:06.1229078Z ยท โโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1229330Z ยท โฐโโ `pulseProgress` originates here
2026-10-23T06:46:06.1229383Z 55 โ
2026-10-23T06:46:06.1229445Z 56 โ useEffect(() => {
2026-10-23T06:46:06.1229508Z 57 โ if (pulse) {
2026-10-23T06:46:06.1229594Z 58 โ pulseProgress.value = withRepeat(
2026-10-23T06:46:06.1229674Z ยท โโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1229816Z ยท โฐโโ `pulseProgress` cannot be modified
2026-10-23T06:46:06.1229883Z 59 โ withTiming(1, {
2026-10-23T06:46:06.1229935Z โฐโโโโ
2026-10-23T06:46:06.1230207Z 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-23T06:46:06.1230517Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T06:46:06.1230520Z
2026-10-23T06:46:06.1230777Z โ eslint(no-unused-vars): Function 'layerClaudeAgentSdkReplayQueryRunner' is declared but never used.
2026-10-23T06:46:06.1230959Z โญโ[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts:960:10]
2026-10-23T06:46:06.1231012Z 959 โ
2026-10-23T06:46:06.1231121Z 960 โ function layerClaudeAgentSdkReplayQueryRunner(
2026-10-23T06:46:06.1231236Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1231435Z ยท โฐโโ 'layerClaudeAgentSdkReplayQueryRunner' is declared here
2026-10-23T06:46:06.1231545Z 961 โ transcript: ClaudeAgentSdkReplayTranscript,
2026-10-23T06:46:06.1231599Z โฐโโโโ
2026-10-23T06:46:06.1231703Z help: Consider removing this declaration.
2026-10-23T06:46:06.1231705Z
2026-10-23T06:46:06.1231907Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1232038Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:542:25]
2026-10-23T06:46:06.1232170Z 541 โ // range) the boundary string is identical and the chain would die.
2026-10-23T06:46:06.1232260Z 542 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-23T06:46:06.1232363Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1232529Z ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-23T06:46:06.1232749Z 543 โ const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-23T06:46:06.1232843Z โฐโโโโ
2026-10-23T06:46:06.1233141Z 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-23T06:46:06.1233456Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1233459Z
2026-10-23T06:46:06.1233628Z โ react(purity): Cannot call impure function during render
2026-10-23T06:46:06.1233757Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:533:53]
2026-10-23T06:46:06.1233843Z 532 โ if (Number.isNaN(wakeAtMs)) return;
2026-10-23T06:46:06.1234001Z 533 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-23T06:46:06.1234126Z ยท โโโโโโฌโโโโ
2026-10-23T06:46:06.1234296Z ยท โฐโโ Cannot call impure function
2026-10-23T06:46:06.1234374Z 534 โ const id = setTimeout(() => {
2026-10-23T06:46:06.1234425Z โฐโโโโ
2026-10-23T06:46:06.1234709Z help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T06:46:06.1235003Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T06:46:06.1235006Z
2026-10-23T06:46:06.1235206Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T06:46:06.1235373Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:215:7]
2026-10-23T06:46:06.1235431Z 214 โ }
2026-10-23T06:46:06.1235499Z 215 โ }, [wrappedRender]);
2026-10-23T06:46:06.1235577Z ยท โโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1235727Z ยท โฐโโ Unnecessary dependency `wrappedRender`
2026-10-23T06:46:06.1235781Z 216 โ
2026-10-23T06:46:06.1235832Z โฐโโโโ
2026-10-23T06:46:06.1236123Z 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-23T06:46:06.1236434Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T06:46:06.1236437Z
2026-10-23T06:46:06.1236742Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T06:46:06.1236940Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:817:35]
2026-10-23T06:46:06.1236997Z 816 โ >
2026-10-23T06:46:06.1237109Z 817 โ <AdaptiveWorkspaceContext value={contextValue}>
2026-10-23T06:46:06.1237225Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1237321Z 818 โ <NativeWorkspaceInspectorContext
2026-10-23T06:46:06.1237372Z โฐโโโโ
2026-10-23T06:46:06.1237595Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T06:46:06.1237734Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T06:46:06.1237736Z
2026-10-23T06:46:06.1237983Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T06:46:06.1238147Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:832:42]
2026-10-23T06:46:06.1238202Z 831 โ >
2026-10-23T06:46:06.1238328Z 832 โ <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-23T06:46:06.1238487Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1238588Z 833 โ <WindowHingeContext value={windowHinge}>
2026-10-23T06:46:06.1238638Z โฐโโโโ
2026-10-23T06:46:06.1238860Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T06:46:06.1238994Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T06:46:06.1238996Z
2026-10-23T06:46:06.1239340Z โ eslint(no-unused-vars): Variable 'layerCodexAppServerClientFactoryCommand' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1239505Z โญโ[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1444:7]
2026-10-23T06:46:06.1239559Z 1443 โ
2026-10-23T06:46:06.1239675Z 1444 โ const layerCodexAppServerClientFactoryCommand = (
2026-10-23T06:46:06.1239793Z ยท โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1240000Z ยท โฐโโ 'layerCodexAppServerClientFactoryCommand' is declared here
2026-10-23T06:46:06.1240119Z 1445 โ options: CodexClient.CodexAppServerClientOptions & {
2026-10-23T06:46:06.1240172Z โฐโโโโ
2026-10-23T06:46:06.1240276Z help: Consider removing this declaration.
2026-10-23T06:46:06.1240278Z
2026-10-23T06:46:06.1240542Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1240707Z โญโ[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1680:7]
2026-10-23T06:46:06.1240761Z 1679 โ
2026-10-23T06:46:06.1240832Z 1680 โ const layer: Layer.Layer<
2026-10-23T06:46:06.1240903Z ยท โโโฌโโ
2026-10-23T06:46:06.1241027Z ยท โฐโโ 'layer' is declared here
2026-10-23T06:46:06.1241121Z 1681 โ ProviderAdapter.ProviderAdapterV2,
2026-10-23T06:46:06.1241173Z โฐโโโโ
2026-10-23T06:46:06.1241275Z help: Consider removing this declaration.
2026-10-23T06:46:06.1241278Z
2026-10-23T06:46:06.1241603Z โ eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1241880Z โญโ[apps/server/src/orchestration-v2/EffectWorker.ts:914:7]
2026-10-23T06:46:06.1241933Z 913 โ
2026-10-23T06:46:06.1242121Z 914 โ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
2026-10-23T06:46:06.1242197Z ยท โโโโโโฌโโโโโ
2026-10-23T06:46:06.1242335Z ยท โฐโโ 'layerDaemon' is declared here
2026-10-23T06:46:06.1242421Z 915 โ runDaemon.pipe(Effect.forkScoped),
2026-10-23T06:46:06.1242472Z โฐโโโโ
2026-10-23T06:46:06.1242574Z help: Consider removing this declaration.
2026-10-23T06:46:06.1242576Z
2026-10-23T06:46:06.1243049Z โ 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-23T06:46:06.1243181Z โญโ[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-23T06:46:06.1243248Z 38 โ JSON.stringify(
2026-10-23T06:46:06.1243367Z 39 โ Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-23T06:46:06.1243462Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1243529Z 40 โ { name: "a" },
2026-10-23T06:46:06.1243580Z โฐโโโโ
2026-10-23T06:46:06.1243583Z
2026-10-23T06:46:06.1243769Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T06:46:06.1243940Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-23T06:46:06.1244020Z 554 โ assert.deepStrictEqual(
2026-10-23T06:46:06.1244193Z 555 โ (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-23T06:46:06.1244319Z ยท โฌ
2026-10-23T06:46:06.1244482Z ยท โฐโโ '_' is declared here
2026-10-23T06:46:06.1244544Z 556 โ [
2026-10-23T06:46:06.1244596Z โฐโโโโ
2026-10-23T06:46:06.1244697Z help: Consider removing this parameter.
2026-10-23T06:46:06.1244700Z
2026-10-23T06:46:06.1244883Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T06:46:06.1245058Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-23T06:46:06.1245141Z 1154 โ assert.deepStrictEqual(
2026-10-23T06:46:06.1245313Z 1155 โ (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-23T06:46:06.1245436Z ยท โฌ
2026-10-23T06:46:06.1245604Z ยท โฐโโ '_' is declared here
2026-10-23T06:46:06.1245667Z 1156 โ [
2026-10-23T06:46:06.1245719Z โฐโโโโ
2026-10-23T06:46:06.1245818Z help: Consider removing this parameter.
2026-10-23T06:46:06.1245823Z
2026-10-23T06:46:06.1246282Z โ 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-23T06:46:06.1246420Z โญโ[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-23T06:46:06.1246619Z 180 โ it("sends a message without the records the wire cannot carry", () => {
2026-10-23T06:46:06.1246840Z 181 โ const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-23T06:46:06.1246946Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T06:46:06.1247012Z 182 โ version: 1,
2026-10-23T06:46:06.1247063Z โฐโโโโ
2026-10-23T06:46:06.1247065Z
2026-10-23T06:46:06.1247323Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1247486Z โญโ[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:408:7]
2026-10-23T06:46:06.1247538Z 407 โ
2026-10-23T06:46:06.1247664Z 408 โ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-23T06:46:06.1247742Z ยท โโโฌโโ
2026-10-23T06:46:06.1247869Z ยท โฐโโ 'layer' is declared here
2026-10-23T06:46:06.1247920Z โฐโโโโ
2026-10-23T06:46:06.1248025Z help: Consider removing this declaration.
2026-10-23T06:46:06.1248027Z
2026-10-23T06:46:06.1248234Z โ eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-23T06:46:06.1248397Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-23T06:46:06.1248508Z 24 โ import * as Schema from "effect/Schema";
2026-10-23T06:46:06.1248627Z 25 โ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-23T06:46:06.1248710Z ยท โโโโโโฌโโโโโ
2026-10-23T06:46:06.1248854Z ยท โฐโโ 'HostProcess' is imported here
2026-10-23T06:46:06.1248907Z 26 โ
2026-10-23T06:46:06.1248963Z โฐโโโโ
2026-10-23T06:46:06.1249064Z help: Consider removing this import.
2026-10-23T06:46:06.1249067Z
2026-10-23T06:46:06.1249338Z โ eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1249502Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-23T06:46:06.1249585Z 123 โ const path = yield* Path.Path;
2026-10-23T06:46:06.1249702Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T06:46:06.1249783Z ยท โโโโโโโฌโโโโโ
2026-10-23T06:46:06.1249920Z ยท โฐโโ 'serverConfig' is declared here
2026-10-23T06:46:06.1250062Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T06:46:06.1250119Z โฐโโโโ
2026-10-23T06:46:06.1250225Z help: Consider removing this declaration.
2026-10-23T06:46:06.1250227Z
2026-10-23T06:46:06.1250501Z โ eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1250665Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-23T06:46:06.1250780Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T06:46:06.1250919Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T06:46:06.1251004Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T06:46:06.1251148Z ยท โฐโโ 'serverSettings' is declared here
2026-10-23T06:46:06.1251284Z 126 โ const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-23T06:46:06.1251395Z โฐโโโโ
2026-10-23T06:46:06.1251533Z help: Consider removing this declaration.
2026-10-23T06:46:06.1251535Z
2026-10-23T06:46:06.1251836Z โ eslint(no-unused-vars): Variable 'layerFromProviderAdapter' is declared but never used. Unused variables should start with a '_'.
2026-10-23T06:46:06.1251998Z โญโ[apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts:346:7]
2026-10-23T06:46:06.1252051Z 345 โ
2026-10-23T06:46:06.1252152Z 346 โ const layerFromProviderAdapter: Layer.Layer<
2026-10-23T06:46:06.1252248Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T06:46:06.1252413Z ยท โฐโโ 'layerFromProviderAdapter' is declared here
2026-10-23T06:46:06.1252492Z 347 โ ProviderAdapterRegistryV2,
2026-10-23T06:46:06.1252541Z โฐโโโโ
2026-10-23T06:46:06.1252650Z help: Consider removing this declaration.
2026-10-23T06:46:06.1252660Z
2026-10-23T06:46:06.1252825Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T06:46:06.1252945Z โญโ[apps/server/src/processRunner.test.ts:266:14]
2026-10-23T06:46:06.1252997Z 265 โ
2026-10-23T06:46:06.1253103Z 266 โ for (const {} of ["timeout", "success"] as const) {
2026-10-23T06:46:06.1253176Z ยท โโ
2026-10-23T06:46:06.1253231Z 267 โ }
2026-10-23T06:46:06.1253281Z โฐโโโโ
2026-10-23T06:46:06.1253513Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T06:46:06.1253515Z
2026-10-23T06:46:06.1253724Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-23T06:46:06.1253833Z โญโ[packages/contracts/src/rpc.ts:295:8]
2026-10-23T06:46:06.1253903Z 294 โ } from "./device.ts";
2026-10-23T06:46:06.1253995Z 295 โ import {} from "./previewAutomation.ts";
2026-10-23T06:46:06.1254063Z ยท โโ
2026-10-23T06:46:06.1254122Z 296 โ import {
2026-10-23T06:46:06.1254172Z โฐโโโโ
2026-10-23T06:46:06.1254254Z help: Remove empty braces
2026-10-23T06:46:06.1254256Z
2026-10-23T06:46:06.1254401Z โ react(refs): Cannot access refs during render
2026-10-23T06:46:06.1254519Z โญโ[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-23T06:46:06.1254699Z 53 โ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-23T06:46:06.1254875Z 54 โ โญโโถ children = cloneElement(child, {
2026-10-23T06:46:06.1254986Z 55 โ โ onTouchStart: (event) => {
2026-10-23T06:46:06.1255148Z 56 โ โ // Reset for a new touch, not onPressIn, which also fires when a
2026-10-23T06:46:06.1255307Z 57 โ โ // finger moves out of the row and back during the same gesture.
2026-10-23T06:46:06.1255432Z 58 โ โ menuPress.current.isPreparing = false;
2026-10-23T06:46:06.1255600Z 59 โ โ menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-23T06:46:06.1255711Z 60 โ โ pendingPress.current = null;
2026-10-23T06:46:06.1255832Z 61 โ โ child.props.onTouchStart?.(event);
2026-10-23T06:46:06.1255907Z 62 โ โ },
2026-10-23T06:46:06.1256067Z 63 โ โ onPress: (event) => {
2026-10-23T06:46:06.1256268Z 64 โ โ // Accessibility clicks have no touch identifier and must not inherit
2026-10-23T06:46:06.1256406Z 65 โ โ // cancellation from a previous physical gesture.
2026-10-23T06:46:06.1256573Z 66 โ โ const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-23T06:46:06.1256764Z 67 โ โ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-23T06:46:06.1256851Z 68 โ โ return;
2026-10-23T06:46:06.1256929Z 69 โ โ }
2026-10-23T06:46:06.1257067Z 70 โ โ if (isTouch && menuPress.current.isPreparing) {
2026-10-23T06:46:06.1257240Z 71 โ โ // A release can arrive between native menu preparation and display.
2026-10-23T06:46:06.1257414Z 72 โ โ // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-23T06:46:06.1257517Z 73 โ โ event.persist();
2026-10-23T06:46:06.1257677Z 74 โ โ pendingPress.current = () => child.props.onPress?.(event);
2026-10-23T06:46:06.1257763Z 75 โ โ return;
2026-10-23T06:46:06.1257839Z 76 โ โ }
2026-10-23T06:46:06.1257952Z 77 โ โ child.props.onPress?.(event);
2026-10-23T06:46:06.1258027Z 78 โ โ },
2026-10-23T06:46:06.1258157Z 79 โ โโโถ });
2026-10-23T06:46:06.1258426Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-23T06:46:06.1258534Z 80 โ menuProps.onMenuInteractionStart = () => {
2026-10-23T06:46:06.1258585Z โฐโโโโ
2026-10-23T06:46:06.1259059Z 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-23T06:46:06.1259356Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T06:46:06.1259359Z
2026-10-23T06:46:06.1259587Z โ eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-23T06:46:06.1259750Z โญโ[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1398:10]
2026-10-23T06:46:06.1259864Z 1397 โ
2026-10-23T06:46:06.1259985Z 1398 โ function assertUserMessagesExclude(
2026-10-23T06:46:06.1260089Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-23T06:46:06.1260260Z ยท โฐโโ 'assertUserMessagesExclude' is declared here
2026-10-23T06:46:06.1260369Z 1399 โ projection: OrchestrationV2ThreadProjection,
2026-10-23T06:46:06.1260423Z โฐโโโโ
2026-10-23T06:46:06.1260527Z help: Consider removing this declaration.
2026-10-23T06:46:06.1260530Z
2026-10-23T06:46:06.1260612Z Found 0 errors and 358 warnings in 5403 files (5.3s, 8 threads)
2026-10-23T06:46:06.1774076Z Post job cleanup.
2026-10-23T06:46:06.2415854Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T06:46:06.2493142Z Post job cleanup.
2026-10-23T06:46:06.3435206Z ##[start-action display=Cache full pnpm store;id=__4bff6844-d1d2-4deb-ab0c-1e9185498bca.__actions_cache]
2026-10-23T06:46:06.3775144Z Post job cleanup.
2026-10-23T06:46:06.4409573Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-00e587c1edf31fe669c96bc4768c0e07a969fff8e8228235fb75ec6c0abf4161, not saving cache.
2026-10-23T06:46:06.4444106Z ##[end-action id=__4bff6844-d1d2-4deb-ab0c-1e9185498bca.__actions_cache;outcome=success;conclusion=success;duration_ms=100]
2026-10-23T06:46:06.4446663Z ##[start-action display=Cache Vite+;id=__4bff6844-d1d2-4deb-ab0c-1e9185498bca.vp_cache]
2026-10-23T06:46:06.4474927Z Post job cleanup.
2026-10-23T06:46:06.5131684Z 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-23T06:46:06.5167643Z ##[end-action id=__4bff6844-d1d2-4deb-ab0c-1e9185498bca.vp_cache;outcome=success;conclusion=success;duration_ms=72]
2026-10-23T06:46:06.5207831Z Post job cleanup.
2026-10-23T06:46:06.5669752Z [command]/usr/local/bin/git version
2026-10-23T06:46:06.5701852Z git version 2.55.0
2026-10-23T06:46:06.5720004Z Temporarily overriding HOME='/home/runner/_work/_temp/f886f750-b917-4c6b-b978-dcb887ad53c5' before making global git config changes
2026-10-23T06:46:06.5720632Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T06:46:06.5722724Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T06:46:06.5750174Z Removing SSH command configuration
2026-10-23T06:46:06.5753145Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T06:46:06.5777934Z [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-23T06:46:06.5954325Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T06:46:06.5980585Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T06:46:06.6022472Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T06:46:06.6040563Z ##[group]Run '/job_completed.sh'
2026-10-23T06:46:06.6050119Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T06:46:06.6050301Z env:
2026-10-23T06:46:06.6050421Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 155
2026-10-23T06:46:06.6050576Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 367
2026-10-23T06:46:06.6050722Z BLACKSMITH_CHECK_RUN_ID: 120281317441
2026-10-23T06:46:06.6050871Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-23T06:46:06.6051017Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T06:46:06.6051158Z ##[endgroup]
2026-10-23T06:46:06.6135127Z Docker container cache not activated, skipping hash computation.
2026-10-23T06:46:06.6390669Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T06:46:06.6440213Z Cleaning up orphan processes