GitHub check

256 KB of 597 KB loaded Download the full log (597 KB)
341 KB of earlier output not loaded
ped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2704027Z
2026-10-24T05:19:51.2704323Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2704556Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:329:7]
2026-10-24T05:19:51.2704612Z  324 โ”‚   };
2026-10-24T05:19:51.2704678Z  325 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2704749Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2704874Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2704971Z  326 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-24T05:19:51.2705065Z  327 โ”‚       requestedSection.current = "overview";
2026-10-24T05:19:51.2705233Z  328 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T05:19:51.2705303Z  329 โ”‚       setSection("overview");
2026-10-24T05:19:51.2705384Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2705554Z      ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2705610Z  330 โ”‚     }
2026-10-24T05:19:51.2705658Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2706236Z   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-24T05:19:51.2706545Z   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-24T05:19:51.2706548Z
2026-10-24T05:19:51.2706753Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T05:19:51.2706922Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:331:6]
2026-10-24T05:19:51.2707016Z  326 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-24T05:19:51.2707109Z  327 โ”‚       requestedSection.current = "overview";
2026-10-24T05:19:51.2707190Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2707624Z      ยท               โ•ฐโ”€โ”€ Missing dependency `requestedSection`. 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-24T05:19:51.2707784Z  328 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T05:19:51.2707932Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2708419Z      ยท                โ”‚                          โ•ฐโ”€โ”€ Missing dependency `scrollOffsets`. 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-24T05:19:51.2708887Z      ยท                โ•ฐโ”€โ”€ Missing dependency `currentScrollOffset`. 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-24T05:19:51.2708961Z  329 โ”‚       setSection("overview");
2026-10-24T05:19:51.2709014Z  330 โ”‚     }
2026-10-24T05:19:51.2709104Z  331 โ”‚   }, [guidesEnabled, section, insets.top]);
2026-10-24T05:19:51.2709216Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2709451Z      ยท                        โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:19:51.2709595Z  332 โ”‚   const tabContent = activityContent;
2026-10-24T05:19:51.2709648Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2709817Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T05:19:51.2710124Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2710126Z
2026-10-24T05:19:51.2710324Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T05:19:51.2710489Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:868:6]
2026-10-24T05:19:51.2710547Z  851 โ”‚     if (
2026-10-24T05:19:51.2710667Z  852 โ”‚       lastSelection.current.path === route.params.path &&
2026-10-24T05:19:51.2710749Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2711171Z      ยท             โ•ฐโ”€โ”€ Missing dependency `lastSelection`. 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-24T05:19:51.2711298Z  853 โ”‚       lastSelection.current.id === route.params.fileSelectionId
2026-10-24T05:19:51.2711352Z  854 โ”‚     )
2026-10-24T05:19:51.2711413Z  855 โ”‚       return;
2026-10-24T05:19:51.2711584Z  856 โ”‚     lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
2026-10-24T05:19:51.2711719Z  857 โ”‚     if (route.params.focus) navigation.setParams({ focus: undefined });
2026-10-24T05:19:51.2711804Z  858 โ”‚     setJumpPath(route.params.path);
2026-10-24T05:19:51.2711875Z  859 โ”‚     setSelectedRowId(null);
2026-10-24T05:19:51.2711958Z  860 โ”‚     jumpStarted.current = false;
2026-10-24T05:19:51.2712104Z  861 โ”‚     const file = data.files.find((entry) => entry.path === route.params.path);
2026-10-24T05:19:51.2712195Z  862 โ”‚     if (!file || !nativeView.current) return;
2026-10-24T05:19:51.2712285Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2712708Z      ยท                        โ•ฐโ”€โ”€ Missing dependency `nativeView`. 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-24T05:19:51.2712832Z  863 โ”‚     setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
2026-10-24T05:19:51.2712909Z  864 โ”‚     jumpStarted.current = true;
2026-10-24T05:19:51.2713044Z  865 โ”‚     void nativeView.current.scrollToFile(file.id, false).catch(() => {
2026-10-24T05:19:51.2713179Z  866 โ”‚       jumpStarted.current = false;
2026-10-24T05:19:51.2713294Z  867 โ”‚     });
2026-10-24T05:19:51.2713488Z  868 โ”‚   }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
2026-10-24T05:19:51.2713691Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2713906Z      ยท                                                    โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:19:51.2714012Z  869 โ”‚   const appliedFilter = useRef(filter.hideTestFiles);
2026-10-24T05:19:51.2714066Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2714229Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T05:19:51.2714539Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2714545Z
2026-10-24T05:19:51.2714794Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2714952Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T05:19:51.2715015Z  259 โ”‚     .join("|");
2026-10-24T05:19:51.2715080Z  260 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2715148Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2715275Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2715336Z  261 โ”‚     stop();
2026-10-24T05:19:51.2715405Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-24T05:19:51.2715565Z      ยท       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2715635Z  262 โ”‚   }, [orderVersion]);
2026-10-24T05:19:51.2715691Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2716269Z   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-24T05:19:51.2716581Z   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-24T05:19:51.2716584Z
2026-10-24T05:19:51.2716791Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T05:19:51.2716948Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T05:19:51.2717016Z  260 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2717077Z  261 โ”‚     stop();
2026-10-24T05:19:51.2717144Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-24T05:19:51.2717269Z      ยท       โ•ฐโ”€โ”€ Missing dependency `stop`
2026-10-24T05:19:51.2717334Z  262 โ”‚   }, [orderVersion]);
2026-10-24T05:19:51.2717412Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2717555Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `orderVersion`
2026-10-24T05:19:51.2717617Z  263 โ”‚   useEffect(
2026-10-24T05:19:51.2717669Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2718078Z   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-24T05:19:51.2718428Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2718532Z
2026-10-24T05:19:51.2718736Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2718960Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-24T05:19:51.2719038Z  95 โ”‚   const latest = useRef(props);
2026-10-24T05:19:51.2719107Z  96 โ”‚   latest.current = props;
2026-10-24T05:19:51.2719211Z     ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2719386Z     ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:19:51.2719500Z     ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:19:51.2719566Z  97 โ”‚   const gesture = useMemo(
2026-10-24T05:19:51.2719617Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2720080Z   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-24T05:19:51.2720367Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2720370Z
2026-10-24T05:19:51.2720513Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2720667Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-24T05:19:51.2720733Z  103 โ”‚         .runOnJS(true)
2026-10-24T05:19:51.2720832Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-24T05:19:51.2720952Z      ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2721148Z      ยท                                 โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:19:51.2721280Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2721333Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2721785Z   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-24T05:19:51.2722064Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2722067Z
2026-10-24T05:19:51.2722211Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2722369Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-24T05:19:51.2722467Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-24T05:19:51.2722594Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2722732Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2722936Z      ยท                                             โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:19:51.2723058Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2723109Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2723626Z   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-24T05:19:51.2723985Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2723988Z
2026-10-24T05:19:51.2724128Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2724282Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-24T05:19:51.2724409Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2724528Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2724666Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2724870Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:19:51.2724995Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T05:19:51.2725045Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2725496Z   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-24T05:19:51.2725777Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2725779Z
2026-10-24T05:19:51.2725920Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2726081Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-24T05:19:51.2726202Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2726320Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T05:19:51.2726456Z      ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2726657Z      ยท                                            โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:19:51.2726726Z  108 โ”‚     [props.disabled],
2026-10-24T05:19:51.2726775Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2727225Z   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-24T05:19:51.2727518Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2727523Z
2026-10-24T05:19:51.2727663Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2727818Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-24T05:19:51.2727929Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-24T05:19:51.2728033Z  249 โ”‚   latest.current = { rows, planners, moveThread };
2026-10-24T05:19:51.2728136Z      ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2728311Z      ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:19:51.2728484Z      ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:19:51.2728619Z  250 โ”‚
2026-10-24T05:19:51.2728717Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2729169Z   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-24T05:19:51.2729448Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2729451Z
2026-10-24T05:19:51.2729590Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2729745Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-24T05:19:51.2729862Z  246 โ”‚   const [preview, setPreview] = useState<Drag | null>(null);
2026-10-24T05:19:51.2729977Z  247 โ”‚   const translateY = useRef(new Animated.Value(0)).current;
2026-10-24T05:19:51.2730104Z      ยท                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2730269Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2730379Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-24T05:19:51.2730429Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2730877Z   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-24T05:19:51.2731167Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2731172Z
2026-10-24T05:19:51.2731337Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2731492Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-24T05:19:51.2731555Z  323 โ”‚     update(0);
2026-10-24T05:19:51.2731636Z  324 โ”‚     let last = performance.now();
2026-10-24T05:19:51.2731733Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2731869Z      ยท                        โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2731935Z  325 โ”‚     const tick = () => {
2026-10-24T05:19:51.2731988Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2732281Z   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-24T05:19:51.2732621Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2732659Z
2026-10-24T05:19:51.2732843Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-24T05:19:51.2732995Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-24T05:19:51.2733055Z   98 โ”‚     () =>
2026-10-24T05:19:51.2733121Z   99 โ”‚       Gesture.Pan()
2026-10-24T05:19:51.2733195Z      ยท               โ”€โ”ฌโ”€
2026-10-24T05:19:51.2733321Z      ยท                โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-24T05:19:51.2733401Z  100 โ”‚         .enabled(!props.disabled)
2026-10-24T05:19:51.2733454Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2733728Z   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-24T05:19:51.2734158Z   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-24T05:19:51.2734162Z
2026-10-24T05:19:51.2734340Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T05:19:51.2734495Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-24T05:19:51.2734560Z  103 โ”‚         .runOnJS(true)
2026-10-24T05:19:51.2734658Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-24T05:19:51.2734743Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:19:51.2735166Z      ยท                           โ•ฐโ”€โ”€ 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-24T05:19:51.2735297Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2735418Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T05:19:51.2735537Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T05:19:51.2735604Z  108 โ”‚     [props.disabled],
2026-10-24T05:19:51.2735685Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2735867Z      ยท             โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T05:19:51.2735922Z  109 โ”‚   );
2026-10-24T05:19:51.2735975Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2736183Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T05:19:51.2736491Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2736494Z
2026-10-24T05:19:51.2736701Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T05:19:51.2736871Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:249:7]
2026-10-24T05:19:51.2736950Z  248 โ”‚       mountedRef.current = false;
2026-10-24T05:19:51.2737027Z  249 โ”‚       flow.setBranchQuery("");
2026-10-24T05:19:51.2737093Z      ยท       โ”€โ”€โ”ฌโ”€
2026-10-24T05:19:51.2737216Z      ยท         โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-24T05:19:51.2737317Z  250 โ”‚     };
2026-10-24T05:19:51.2737421Z  251 โ”‚   }, [flow.setBranchQuery]);
2026-10-24T05:19:51.2737506Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2737708Z      ยท                โ•ฐโ”€โ”€ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-24T05:19:51.2737761Z  252 โ”‚
2026-10-24T05:19:51.2737812Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2738215Z   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-24T05:19:51.2738520Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2738523Z
2026-10-24T05:19:51.2738835Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T05:19:51.2738990Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-24T05:19:51.2739049Z  289 โ”‚   return (
2026-10-24T05:19:51.2739181Z  290 โ”‚     <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-24T05:19:51.2739299Z      ยท                                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2739367Z  291 โ”‚       {props.children}
2026-10-24T05:19:51.2739416Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2739634Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T05:19:51.2739775Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T05:19:51.2739777Z
2026-10-24T05:19:51.2740019Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T05:19:51.2740173Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-24T05:19:51.2740232Z  653 โ”‚   return (
2026-10-24T05:19:51.2740349Z  654 โ”‚     <ThreadSettingsSessionContext.Provider value={value}>
2026-10-24T05:19:51.2740462Z      ยท                                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2740527Z  655 โ”‚       {props.children}
2026-10-24T05:19:51.2740576Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2740789Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T05:19:51.2740924Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T05:19:51.2740926Z
2026-10-24T05:19:51.2741160Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T05:19:51.2741317Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-24T05:19:51.2741376Z  1461 โ”‚   return (
2026-10-24T05:19:51.2741534Z  1462 โ”‚     <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-24T05:19:51.2741662Z       ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2741759Z  1463 โ”‚       <ThreadSettingsPickerStack.Navigator
2026-10-24T05:19:51.2741810Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2742024Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T05:19:51.2742155Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T05:19:51.2742158Z
2026-10-24T05:19:51.2742662Z   โš  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-24T05:19:51.2742835Z      โ•ญโ”€[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-24T05:19:51.2742962Z  132 โ”‚               const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-24T05:19:51.2743108Z  133 โ”‚ โ•ญโ”€โ–ถ           for (
2026-10-24T05:19:51.2743210Z  134 โ”‚ โ”‚               let attempt = 0;
2026-10-24T05:19:51.2743378Z  135 โ”‚ โ”‚               attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-24T05:19:51.2743473Z  136 โ”‚ โ”‚               attempt += 1
2026-10-24T05:19:51.2743561Z  137 โ”‚ โ”‚             ) {
2026-10-24T05:19:51.2743675Z  138 โ”‚ โ”‚               yield* Effect.yieldNow;
2026-10-24T05:19:51.2743808Z  139 โ”‚ โ•ฐโ”€โ–ถ           }
2026-10-24T05:19:51.2743927Z  140 โ”‚               expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-24T05:19:51.2743978Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2743980Z
2026-10-24T05:19:51.2744180Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2744336Z      โ•ญโ”€[apps/mobile/src/features/workspace/WorkspaceToolbar.ios.tsx:114:33]
2026-10-24T05:19:51.2744429Z  113 โ”‚     return () => cancelAnimationFrame(frame);
2026-10-24T05:19:51.2744527Z  114 โ”‚   }, [restoreSearch, tabActive, bottomSearch]);
2026-10-24T05:19:51.2744637Z      ยท                                 โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2744805Z      ยท                                       โ•ฐโ”€โ”€ Unnecessary dependency `bottomSearch`
2026-10-24T05:19:51.2744907Z  115 โ”‚   const composeButton = nativeToolbarCompose ? (
2026-10-24T05:19:51.2744958Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2745249Z   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-24T05:19:51.2745555Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2745557Z
2026-10-24T05:19:51.2745766Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:19:51.2745905Z     โ•ญโ”€[packages/shared/src/composerContextLegacySend.ts:19:45]
2026-10-24T05:19:51.2746038Z  18 โ”‚   const occurrences = collectComposerContextReferences(text);
2026-10-24T05:19:51.2746147Z  19 โ”‚   for (const occurrence of [...occurrences].reverse()) {
2026-10-24T05:19:51.2746257Z     ยท                                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2746365Z  20 โ”‚     const record = recordsById.get(occurrence.contextId);
2026-10-24T05:19:51.2746418Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2746674Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:19:51.2746676Z
2026-10-24T05:19:51.2746930Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2747065Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2139:5]
2026-10-24T05:19:51.2747192Z  2137 โ”‚   );
2026-10-24T05:19:51.2747293Z  2138 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2747367Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2747497Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2747572Z  2139 โ”‚     setExpandedVideo(null);
2026-10-24T05:19:51.2747654Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2747822Z       ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2747892Z  2140 โ”‚     setExpandedFile(null);
2026-10-24T05:19:51.2747944Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2748529Z   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-24T05:19:51.2748872Z   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-24T05:19:51.2748875Z
2026-10-24T05:19:51.2749098Z   โš  eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-24T05:19:51.2749226Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:66:10]
2026-10-24T05:19:51.2749359Z  65 โ”‚ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-24T05:19:51.2749493Z  66 โ”‚ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-24T05:19:51.2749587Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2749752Z     ยท                     โ•ฐโ”€โ”€ 'isMarkdownFileLinkLabel' is imported here
2026-10-24T05:19:51.2749908Z  67 โ”‚ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-24T05:19:51.2749961Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2750058Z   help: Consider removing this import.
2026-10-24T05:19:51.2750061Z
2026-10-24T05:19:51.2750260Z   โš  eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-24T05:19:51.2750384Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:92:3]
2026-10-24T05:19:51.2750440Z  91 โ”‚ import {
2026-10-24T05:19:51.2750503Z  92 โ”‚   createContext,
2026-10-24T05:19:51.2750577Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2750707Z     ยท         โ•ฐโ”€โ”€ 'createContext' is imported here
2026-10-24T05:19:51.2750765Z  93 โ”‚   memo,
2026-10-24T05:19:51.2750817Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2750916Z   help: Consider removing this import.
2026-10-24T05:19:51.2750923Z
2026-10-24T05:19:51.2751127Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T05:19:51.2751257Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:108:3]
2026-10-24T05:19:51.2751314Z  107 โ”‚ import {
2026-10-24T05:19:51.2751382Z  108 โ”‚   ActivityIndicator,
2026-10-24T05:19:51.2751461Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2751604Z      ยท           โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-24T05:19:51.2751660Z  109 โ”‚   Image,
2026-10-24T05:19:51.2751709Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2751803Z   help: Consider removing this import.
2026-10-24T05:19:51.2751806Z
2026-10-24T05:19:51.2752049Z   โš  eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-24T05:19:51.2752206Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:115:3]
2026-10-24T05:19:51.2752266Z  114 โ”‚   Pressable,
2026-10-24T05:19:51.2752325Z  115 โ”‚   ScrollView,
2026-10-24T05:19:51.2752397Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2752526Z      ยท        โ•ฐโ”€โ”€ 'ScrollView' is imported here
2026-10-24T05:19:51.2752586Z  116 โ”‚   StyleSheet,
2026-10-24T05:19:51.2752637Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2752729Z   help: Consider removing this import.
2026-10-24T05:19:51.2752732Z
2026-10-24T05:19:51.2752926Z   โš  eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-24T05:19:51.2753057Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:117:11]
2026-10-24T05:19:51.2753120Z  116 โ”‚   StyleSheet,
2026-10-24T05:19:51.2753189Z  117 โ”‚   Text as NativeText,
2026-10-24T05:19:51.2753266Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2753399Z      ยท                โ•ฐโ”€โ”€ 'NativeText' is imported here
2026-10-24T05:19:51.2753464Z  118 โ”‚   type ColorValue,
2026-10-24T05:19:51.2753514Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2753607Z   help: Consider removing this import.
2026-10-24T05:19:51.2753609Z
2026-10-24T05:19:51.2753818Z   โš  eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-24T05:19:51.2753946Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:140:10]
2026-10-24T05:19:51.2754078Z  139 โ”‚ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-24T05:19:51.2754207Z  140 โ”‚ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-24T05:19:51.2754297Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2754446Z      ยท                   โ•ฐโ”€โ”€ 'tryOpenExternalUrl' is imported here
2026-10-24T05:19:51.2754593Z  141 โ”‚ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-24T05:19:51.2754642Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2754736Z   help: Consider removing this import.
2026-10-24T05:19:51.2754738Z
2026-10-24T05:19:51.2754947Z   โš  eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-24T05:19:51.2755077Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:143:10]
2026-10-24T05:19:51.2755209Z  142 โ”‚ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-24T05:19:51.2755329Z  143 โ”‚ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-24T05:19:51.2755463Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2755640Z      ยท                   โ•ฐโ”€โ”€ 'faviconUrlForOrigin' is imported here
2026-10-24T05:19:51.2755697Z  144 โ”‚ import {
2026-10-24T05:19:51.2755750Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2755844Z   help: Consider removing this import.
2026-10-24T05:19:51.2755847Z
2026-10-24T05:19:51.2756051Z   โš  eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-24T05:19:51.2756179Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:157:10]
2026-10-24T05:19:51.2756323Z  156 โ”‚ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-24T05:19:51.2756453Z  157 โ”‚ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-24T05:19:51.2756544Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2756691Z      ยท                  โ•ฐโ”€โ”€ 'MediaVideoPlayer' is imported here
2026-10-24T05:19:51.2756825Z  158 โ”‚ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-24T05:19:51.2756876Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2756967Z   help: Consider removing this import.
2026-10-24T05:19:51.2756970Z
2026-10-24T05:19:51.2757184Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-24T05:19:51.2757312Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:161:3]
2026-10-24T05:19:51.2757391Z  160 โ”‚   attachmentVideoPreviewSource,
2026-10-24T05:19:51.2757460Z  161 โ”‚   mediaVideoPreviewUri,
2026-10-24T05:19:51.2757542Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2757697Z      ยท             โ•ฐโ”€โ”€ 'mediaVideoPreviewUri' is imported here
2026-10-24T05:19:51.2757770Z  162 โ”‚   mediaVideoThumbnailKey,
2026-10-24T05:19:51.2757819Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2757911Z   help: Consider removing this import.
2026-10-24T05:19:51.2757914Z
2026-10-24T05:19:51.2758128Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-24T05:19:51.2758255Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:162:3]
2026-10-24T05:19:51.2758322Z  161 โ”‚   mediaVideoPreviewUri,
2026-10-24T05:19:51.2758394Z  162 โ”‚   mediaVideoThumbnailKey,
2026-10-24T05:19:51.2758499Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2758752Z      ยท              โ•ฐโ”€โ”€ 'mediaVideoThumbnailKey' is imported here
2026-10-24T05:19:51.2758831Z  163 โ”‚   type MediaVideoPreviewSource,
2026-10-24T05:19:51.2758886Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2758982Z   help: Consider removing this import.
2026-10-24T05:19:51.2758984Z
2026-10-24T05:19:51.2759189Z   โš  eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-24T05:19:51.2759314Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:163:8]
2026-10-24T05:19:51.2759383Z  162 โ”‚   mediaVideoThumbnailKey,
2026-10-24T05:19:51.2759463Z  163 โ”‚   type MediaVideoPreviewSource,
2026-10-24T05:19:51.2759556Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2759712Z      ยท                   โ•ฐโ”€โ”€ 'MediaVideoPreviewSource' is imported here
2026-10-24T05:19:51.2759796Z  164 โ”‚ } from "../../lib/videoPreviewSource";
2026-10-24T05:19:51.2759844Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2759937Z   help: Consider removing this import.
2026-10-24T05:19:51.2760005Z
2026-10-24T05:19:51.2760235Z   โš  eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-24T05:19:51.2760364Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:171:15]
2026-10-24T05:19:51.2760538Z  170 โ”‚ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-24T05:19:51.2760675Z  171 โ”‚ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-24T05:19:51.2760760Z      ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2760905Z      ยท                      โ•ฐโ”€โ”€ 'ReviewDiffTheme' is imported here
2026-10-24T05:19:51.2760961Z  172 โ”‚ import {
2026-10-24T05:19:51.2761011Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2761101Z   help: Consider removing this import.
2026-10-24T05:19:51.2761104Z
2026-10-24T05:19:51.2761331Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-24T05:19:51.2761459Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:186:3]
2026-10-24T05:19:51.2761516Z  185 โ”‚ import {
2026-10-24T05:19:51.2761587Z  186 โ”‚   resolveMarkdownFontSizes,
2026-10-24T05:19:51.2761676Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2761830Z      ยท               โ•ฐโ”€โ”€ 'resolveMarkdownFontSizes' is imported here
2026-10-24T05:19:51.2761915Z  187 โ”‚   resolveNativeMarkdownTypography,
2026-10-24T05:19:51.2761964Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2762056Z   help: Consider removing this import.
2026-10-24T05:19:51.2762059Z
2026-10-24T05:19:51.2762275Z   โš  eslint(no-unused-vars): Identifier 'markdownLinkIconSource' is imported but never used.
2026-10-24T05:19:51.2762409Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:191:10]
2026-10-24T05:19:51.2762539Z  190 โ”‚ import { PierreEntryIcon } from "../../components/PierreEntryIcon";
2026-10-24T05:19:51.2762672Z  191 โ”‚ import { markdownLinkIconSource } from "../../lib/markdownLinkIcons";
2026-10-24T05:19:51.2762764Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2762922Z      ยท                     โ•ฐโ”€โ”€ 'markdownLinkIconSource' is imported here
2026-10-24T05:19:51.2762979Z  192 โ”‚ import {
2026-10-24T05:19:51.2763027Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2763120Z   help: Consider removing this import.
2026-10-24T05:19:51.2763123Z
2026-10-24T05:19:51.2763373Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-24T05:19:51.2763507Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:194:3]
2026-10-24T05:19:51.2763583Z  193 โ”‚   normalizeNativeMarkdownUrl,
2026-10-24T05:19:51.2763677Z  194 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-24T05:19:51.2763784Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2763974Z      ยท                     โ•ฐโ”€โ”€ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-24T05:19:51.2764044Z  195 โ”‚   resolveMarkdownLinkIcon,
2026-10-24T05:19:51.2764094Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2764185Z   help: Consider removing this import.
2026-10-24T05:19:51.2764187Z
2026-10-24T05:19:51.2764409Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownLinkIcon' is imported but never used.
2026-10-24T05:19:51.2764536Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:195:3]
2026-10-24T05:19:51.2764678Z  194 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-24T05:19:51.2764783Z  195 โ”‚   resolveMarkdownLinkIcon,
2026-10-24T05:19:51.2764870Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2765022Z      ยท              โ•ฐโ”€โ”€ 'resolveMarkdownLinkIcon' is imported here
2026-10-24T05:19:51.2765108Z  196 โ”‚   resolveMarkdownLinkPresentation,
2026-10-24T05:19:51.2765157Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2765248Z   help: Consider removing this import.
2026-10-24T05:19:51.2765250Z
2026-10-24T05:19:51.2765468Z   โš  eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-24T05:19:51.2765597Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:234:10]
2026-10-24T05:19:51.2765698Z  233 โ”‚ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-24T05:19:51.2765845Z  234 โ”‚ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-24T05:19:51.2765944Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2766108Z      ยท                      โ•ฐโ”€โ”€ 'useMarkdownCodeHighlight' is imported here
2026-10-24T05:19:51.2766170Z  235 โ”‚ import {
2026-10-24T05:19:51.2766223Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2766316Z   help: Consider removing this import.
2026-10-24T05:19:51.2766318Z
2026-10-24T05:19:51.2766523Z   โš  eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-24T05:19:51.2766652Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:238:3]
2026-10-24T05:19:51.2766716Z  237 โ”‚   useAssetUrl,
2026-10-24T05:19:51.2766782Z  238 โ”‚   useAssetUrlState,
2026-10-24T05:19:51.2766862Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2767008Z      ยท           โ•ฐโ”€โ”€ 'useAssetUrlState' is imported here
2026-10-24T05:19:51.2767082Z  239 โ”‚   useRefreshAssetUrl,
2026-10-24T05:19:51.2767132Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2767225Z   help: Consider removing this import.
2026-10-24T05:19:51.2767228Z
2026-10-24T05:19:51.2767424Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2767557Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2141:7]
2026-10-24T05:19:51.2767628Z  2140 โ”‚     setExpandedFile(null);
2026-10-24T05:19:51.2767784Z  2141 โ”‚   }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-24T05:19:51.2768007Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2768343Z       ยท                โ”‚                  โ”‚                       โ•ฐโ”€โ”€ Unnecessary dependency `props.contentPresentation.kind`
2026-10-24T05:19:51.2768584Z       ยท                โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `props.threadId`
2026-10-24T05:19:51.2768787Z       ยท                โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-24T05:19:51.2768928Z  2142 โ”‚   const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-24T05:19:51.2768980Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2769271Z   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-24T05:19:51.2769578Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2769584Z
2026-10-24T05:19:51.2769779Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2769912Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2609:7]
2026-10-24T05:19:51.2770009Z  2608 โ”‚     reportHeaderMaterialVisibility(false);
2026-10-24T05:19:51.2770122Z  2609 โ”‚   }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-24T05:19:51.2770202Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2770352Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `feedThreadKey`
2026-10-24T05:19:51.2770408Z  2610 โ”‚
2026-10-24T05:19:51.2770462Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2770749Z   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-24T05:19:51.2771055Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2771058Z
2026-10-24T05:19:51.2771252Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2771383Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2625:7]
2026-10-24T05:19:51.2771438Z  2624 โ”‚     }
2026-10-24T05:19:51.2771572Z  2625 โ”‚   }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-24T05:19:51.2771651Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2771796Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `listMountKey`
2026-10-24T05:19:51.2771848Z  2626 โ”‚
2026-10-24T05:19:51.2771907Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2772192Z   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-24T05:19:51.2772494Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2772497Z
2026-10-24T05:19:51.2772690Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2772820Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2782:7]
2026-10-24T05:19:51.2772877Z  2781 โ”‚     }
2026-10-24T05:19:51.2773056Z  2782 โ”‚   }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-24T05:19:51.2773307Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2773585Z       ยท              โ”‚                  โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkRows`
2026-10-24T05:19:51.2773786Z       ยท              โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkGroups`
2026-10-24T05:19:51.2773937Z       ยท              โ•ฐโ”€โ”€ Unnecessary dependency `expandedTurnIds`
2026-10-24T05:19:51.2773991Z  2783 โ”‚
2026-10-24T05:19:51.2774040Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2774325Z   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-24T05:19:51.2774634Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2774639Z
2026-10-24T05:19:51.2774818Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:19:51.2774951Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:613:9]
2026-10-24T05:19:51.2775007Z  612 โ”‚       };
2026-10-24T05:19:51.2775122Z  613 โ”‚     }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-24T05:19:51.2775309Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2775545Z      ยท                  โ”‚                 โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `httpBaseUrl`
2026-10-24T05:19:51.2775741Z      ยท                  โ”‚                 โ•ฐโ”€โ”€ Unnecessary dependency `attachment.id`
2026-10-24T05:19:51.2775908Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-24T05:19:51.2775963Z  614 โ”‚   );
2026-10-24T05:19:51.2776013Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2776318Z   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-24T05:19:51.2776621Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2776623Z
2026-10-24T05:19:51.2776819Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2776969Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-24T05:19:51.2777068Z  256 โ”‚     return () => cancelAnimationFrame(frame);
2026-10-24T05:19:51.2777146Z  257 โ”‚   }, [props.path, targetIndex]);
2026-10-24T05:19:51.2777223Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2777365Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `props.path`
2026-10-24T05:19:51.2777418Z  258 โ”‚
2026-10-24T05:19:51.2777468Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2777752Z   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-24T05:19:51.2778056Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2778058Z
2026-10-24T05:19:51.2778297Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2778476Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-24T05:19:51.2778550Z  292 โ”‚                     <SourceText
2026-10-24T05:19:51.2778683Z  293 โ”‚                       key={`${index}:${tokenIndex}`}
2026-10-24T05:19:51.2778802Z      ยท                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2778873Z  294 โ”‚                       style={{
2026-10-24T05:19:51.2778922Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2779067Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2779070Z
2026-10-24T05:19:51.2779258Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2779406Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-24T05:19:51.2779473Z  308 โ”‚             return (
2026-10-24T05:19:51.2779557Z  309 โ”‚               <SourceText key={index}>
2026-10-24T05:19:51.2779657Z      ยท                           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2779722Z  310 โ”‚                 {body}
2026-10-24T05:19:51.2779772Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2779914Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2779916Z
2026-10-24T05:19:51.2780126Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T05:19:51.2780266Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:773:7]
2026-10-24T05:19:51.2780367Z  772 โ”‚     if (settingsSheetPresentation.isActive) {
2026-10-24T05:19:51.2780496Z  773 โ”‚       settingsRoutePresentation.present(settingsRouteSession);
2026-10-24T05:19:51.2780596Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2780768Z      ยท                   โ•ฐโ”€โ”€ Missing dependency `settingsRoutePresentation`
2026-10-24T05:19:51.2780821Z  774 โ”‚     }
2026-10-24T05:19:51.2781024Z  775 โ”‚   }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-24T05:19:51.2781133Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2781410Z      ยท                       โ•ฐโ”€โ”€ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-24T05:19:51.2781461Z  776 โ”‚
2026-10-24T05:19:51.2781512Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2781930Z   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-24T05:19:51.2782236Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2782239Z
2026-10-24T05:19:51.2782392Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2782529Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:391:5]
2026-10-24T05:19:51.2782686Z  387 โ”‚     typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-24T05:19:51.2782821Z  388 โ”‚   const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-24T05:19:51.2782911Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2783061Z      ยท                   โ•ฐโ”€โ”€ `animatedBorderRadius` originates here
2026-10-24T05:19:51.2783276Z  389 โ”‚   const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-24T05:19:51.2783377Z  390 โ”‚   useLayoutEffect(() => {
2026-10-24T05:19:51.2783480Z  391 โ”‚     animatedBorderRadius.value = shouldAnimate
2026-10-24T05:19:51.2785870Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2786043Z      ยท               โ•ฐโ”€โ”€ `animatedBorderRadius` cannot be modified
2026-10-24T05:19:51.2786132Z  392 โ”‚       ? withTiming(targetBorderRadius, {
2026-10-24T05:19:51.2786186Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2786449Z   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-24T05:19:51.2786755Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2786761Z
2026-10-24T05:19:51.2787013Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2787172Z     โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-24T05:19:51.2787283Z  37 โ”‚   const [initialized, setInitialized] = useState(false);
2026-10-24T05:19:51.2787351Z  38 โ”‚   useLayoutEffect(() => {
2026-10-24T05:19:51.2787429Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2787557Z     ยท          โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2787618Z  39 โ”‚     reset();
2026-10-24T05:19:51.2787684Z  40 โ”‚     setInitialized(true);
2026-10-24T05:19:51.2787758Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2787931Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2787994Z  41 โ”‚   }, [reset]);
2026-10-24T05:19:51.2788044Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2788669Z   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-24T05:19:51.2788983Z   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-24T05:19:51.2788985Z
2026-10-24T05:19:51.2789238Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2789459Z     โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-24T05:19:51.2789541Z  88 โ”‚
2026-10-24T05:19:51.2789604Z  89 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2789673Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2789799Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2789957Z  90 โ”‚     if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-24T05:19:51.2790056Z  91 โ”‚     const branchName = initialProjectRef.branch;
2026-10-24T05:19:51.2790122Z  92 โ”‚     let active = true;
2026-10-24T05:19:51.2790216Z  93 โ”‚     setPendingCheckouts((count) => count + 1);
2026-10-24T05:19:51.2790298Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2790464Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2790622Z  94 โ”‚     // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-24T05:19:51.2790676Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2791258Z   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-24T05:19:51.2791568Z   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-24T05:19:51.2791571Z
2026-10-24T05:19:51.2791818Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2791962Z      โ•ญโ”€[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-24T05:19:51.2792017Z  150 โ”‚
2026-10-24T05:19:51.2792082Z  151 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2792151Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2792280Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2792364Z  152 โ”‚     if (!controlledSelectedPath) {
2026-10-24T05:19:51.2792424Z  153 โ”‚       return;
2026-10-24T05:19:51.2792477Z  154 โ”‚     }
2026-10-24T05:19:51.2792559Z  155 โ”‚     setExpandedPaths((current) => {
2026-10-24T05:19:51.2792641Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2792807Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2792928Z  156 โ”‚       const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-24T05:19:51.2792979Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2793568Z   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-24T05:19:51.2793879Z   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-24T05:19:51.2793882Z
2026-10-24T05:19:51.2794062Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T05:19:51.2794166Z      โ•ญโ”€[packages/shared/src/qrCode.ts:458:44]
2026-10-24T05:19:51.2794232Z  457 โ”‚   ): Array<byte> {
2026-10-24T05:19:51.2794338Z  458 โ”‚     let result: Array<byte> = divisor.map((_) => 0);
2026-10-24T05:19:51.2794483Z      ยท                                            โ”ฌ
2026-10-24T05:19:51.2794652Z      ยท                                            โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T05:19:51.2794724Z  459 โ”‚     for (const b of data) {
2026-10-24T05:19:51.2794775Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2794879Z   help: Consider removing this parameter.
2026-10-24T05:19:51.2794881Z
2026-10-24T05:19:51.2795056Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:19:51.2795237Z      โ•ญโ”€[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-24T05:19:51.2795306Z  115 โ”‚     return [...commands];
2026-10-24T05:19:51.2795437Z  116 โ”‚   }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-24T05:19:51.2795554Z      ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2795738Z      ยท                                           โ•ฐโ”€โ”€ Unnecessary dependency `registrationVersion`
2026-10-24T05:19:51.2795791Z  117 โ”‚
2026-10-24T05:19:51.2795845Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2796150Z   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-24T05:19:51.2796459Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2796462Z
2026-10-24T05:19:51.2796627Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2796781Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:697:76]
2026-10-24T05:19:51.2796960Z  696 โ”‚   const [snoozeGateClock, setSnoozeGateClock] = useState(() => ({ thread, now: Date.now() }));
2026-10-24T05:19:51.2797125Z  697 โ”‚   if (snoozeGateClock.thread !== thread) setSnoozeGateClock({ thread, now: Date.now() });
2026-10-24T05:19:51.2797259Z      ยท                                                                            โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2797442Z      ยท                                                                                 โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2797574Z  698 โ”‚   const snoozeGateNow = new Date(snoozeGateClock.now).toISOString();
2026-10-24T05:19:51.2797623Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2797901Z   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-24T05:19:51.2798194Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2798199Z
2026-10-24T05:19:51.2798359Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2798539Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:718:71]
2026-10-24T05:19:51.2798764Z  717 โ”‚   const snoozePresets = useMemo(
2026-10-24T05:19:51.2798950Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-24T05:19:51.2799080Z      ยท                                                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2799255Z      ยท                                                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2799440Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-24T05:19:51.2799540Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2799810Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:19:51.2800095Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2800097Z
2026-10-24T05:19:51.2800274Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:19:51.2800427Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:719:6]
2026-10-24T05:19:51.2800599Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-24T05:19:51.2800715Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-24T05:19:51.2800808Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2800980Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.snoozePresetMinute`
2026-10-24T05:19:51.2801036Z  720 โ”‚   );
2026-10-24T05:19:51.2801086Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2801390Z   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-24T05:19:51.2801693Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2801698Z
2026-10-24T05:19:51.2801870Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T05:19:51.2802027Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:765:7]
2026-10-24T05:19:51.2802097Z  764 โ”‚       thread.pinnedAt,
2026-10-24T05:19:51.2802158Z  765 โ”‚       variant,
2026-10-24T05:19:51.2802228Z      ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2802361Z      ยท          โ•ฐโ”€โ”€ Unnecessary dependency `variant`
2026-10-24T05:19:51.2802418Z  766 โ”‚     ],
2026-10-24T05:19:51.2802469Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2802770Z   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-24T05:19:51.2803071Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2803073Z
2026-10-24T05:19:51.2803268Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2803428Z       โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:1215:21]
2026-10-24T05:19:51.2803554Z  1214 โ”‚             {providerDrivers.slice(0, -1).map((driver, index) => (
2026-10-24T05:19:51.2803689Z  1215 โ”‚               <View key={`${driver}:${index}`} className="-mr-1 opacity-30">
2026-10-24T05:19:51.2803805Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2803915Z  1216 โ”‚                 <ProviderIcon provider={driver} size={12} />
2026-10-24T05:19:51.2803966Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2804111Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2804114Z
2026-10-24T05:19:51.2804604Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T05:19:51.2804766Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-24T05:19:51.2804974Z  1740 โ”‚       const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-24T05:19:51.2805156Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T05:19:51.2805267Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2805375Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T05:19:51.2805428Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2805431Z
2026-10-24T05:19:51.2805867Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T05:19:51.2805987Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-24T05:19:51.2806169Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T05:19:51.2806275Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T05:19:51.2806388Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2806503Z  1743 โ”‚         Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-24T05:19:51.2806556Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2806558Z
2026-10-24T05:19:51.2806781Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T05:19:51.2806900Z      โ•ญโ”€[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-24T05:19:51.2806962Z  730 โ”‚       );
2026-10-24T05:19:51.2807134Z  731 โ”‚       const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-24T05:19:51.2807230Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2807343Z  732 โ”‚       expect(snapshot?.history).toBe("aa๐Ÿ˜€\rEND");
2026-10-24T05:19:51.2807392Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2807561Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T05:19:51.2807563Z
2026-10-24T05:19:51.2807718Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2807874Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T05:19:51.2807927Z   86 โ”‚
2026-10-24T05:19:51.2808019Z   87 โ”‚   const cardCoverage = props.cardCoverage;
2026-10-24T05:19:51.2808099Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2808240Z      ยท               โ•ฐโ”€โ”€ `cardCoverage` originates here
2026-10-24T05:19:51.2808320Z   88 โ”‚   const barHeightRef = useRef(0);
2026-10-24T05:19:51.2808402Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-24T05:19:51.2808486Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-24T05:19:51.2808590Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-24T05:19:51.2808697Z   92 โ”‚     if (!cardCoverage) {
2026-10-24T05:19:51.2808759Z   93 โ”‚       return;
2026-10-24T05:19:51.2808814Z   94 โ”‚     }
2026-10-24T05:19:51.2808965Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T05:19:51.2809051Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-24T05:19:51.2809112Z   97 โ”‚       return;
2026-10-24T05:19:51.2809166Z   98 โ”‚     }
2026-10-24T05:19:51.2809297Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:19:51.2809448Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:19:51.2809527Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2809671Z      ยท             โ•ฐโ”€โ”€ `cardCoverage` cannot be modified
2026-10-24T05:19:51.2809729Z  101 โ”‚       return;
2026-10-24T05:19:51.2809780Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2810073Z   help: Do not mutate component props or hook arguments. If the value should change, update it where it is owned and pass an update callback, or use local state
2026-10-24T05:19:51.2810374Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2810377Z
2026-10-24T05:19:51.2810530Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2810683Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T05:19:51.2810765Z   89 โ”‚   const cardHeightRef = useRef(0);
2026-10-24T05:19:51.2810848Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-24T05:19:51.2810924Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2811054Z      ยท              โ•ฐโ”€โ”€ `cardHeight` originates here
2026-10-24T05:19:51.2811146Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-24T05:19:51.2811215Z   92 โ”‚     if (!cardCoverage) {
2026-10-24T05:19:51.2811273Z   93 โ”‚       return;
2026-10-24T05:19:51.2811324Z   94 โ”‚     }
2026-10-24T05:19:51.2811470Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T05:19:51.2811556Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-24T05:19:51.2811612Z   97 โ”‚       return;
2026-10-24T05:19:51.2811669Z   98 โ”‚     }
2026-10-24T05:19:51.2811750Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:19:51.2811829Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:19:51.2811885Z  101 โ”‚       return;
2026-10-24T05:19:51.2811940Z  102 โ”‚     }
2026-10-24T05:19:51.2812038Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-24T05:19:51.2812133Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T05:19:51.2812215Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-24T05:19:51.2812271Z  106 โ”‚     });
2026-10-24T05:19:51.2812338Z  107 โ”‚   }, [cardCoverage]);
2026-10-24T05:19:51.2812421Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-24T05:19:51.2812499Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:19:51.2812625Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:19:51.2812692Z  111 โ”‚       notifyCoverage();
2026-10-24T05:19:51.2812797Z  112 โ”‚     },
2026-10-24T05:19:51.2812893Z  113 โ”‚     [notifyCoverage],
2026-10-24T05:19:51.2812974Z  114 โ”‚   );
2026-10-24T05:19:51.2813059Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-24T05:19:51.2813138Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:19:51.2813260Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:19:51.2813372Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T05:19:51.2813447Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2813584Z      ยท            โ•ฐโ”€โ”€ `cardHeight` cannot be modified
2026-10-24T05:19:51.2813649Z  119 โ”‚       notifyCoverage();
2026-10-24T05:19:51.2813700Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2813959Z   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-24T05:19:51.2814260Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2814266Z
2026-10-24T05:19:51.2814460Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:19:51.2814612Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T05:19:51.2814697Z   90 โ”‚   const cardHeight = useSharedValue(0);
2026-10-24T05:19:51.2814790Z   91 โ”‚   const notifyCoverage = useCallback(() => {
2026-10-24T05:19:51.2814890Z      ยท                                      โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2815124Z      ยท                                         โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T05:19:51.2815197Z   92 โ”‚     if (!cardCoverage) {
2026-10-24T05:19:51.2815258Z   93 โ”‚       return;
2026-10-24T05:19:51.2815310Z   94 โ”‚     }
2026-10-24T05:19:51.2815456Z   95 โ”‚     const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T05:19:51.2815542Z   96 โ”‚     if (coverage === cardCoverage.value) {
2026-10-24T05:19:51.2815600Z   97 โ”‚       return;
2026-10-24T05:19:51.2815651Z   98 โ”‚     }
2026-10-24T05:19:51.2815730Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:19:51.2815811Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:19:51.2815888Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2816018Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-24T05:19:51.2816079Z  101 โ”‚       return;
2026-10-24T05:19:51.2816129Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2816463Z   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-24T05:19:51.2816762Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2816766Z
2026-10-24T05:19:51.2816958Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:19:51.2817111Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T05:19:51.2817191Z   99 โ”‚     if (cardCoverage.value === 0) {
2026-10-24T05:19:51.2817270Z  100 โ”‚       cardCoverage.value = coverage;
2026-10-24T05:19:51.2817343Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2817521Z      ยท             โ•ฐโ”€โ”€ This modifies `cardCoverage`
2026-10-24T05:19:51.2817667Z  101 โ”‚       return;
2026-10-24T05:19:51.2817719Z  102 โ”‚     }
2026-10-24T05:19:51.2817817Z  103 โ”‚     cardCoverage.value = withTiming(coverage, {
2026-10-24T05:19:51.2817910Z  104 โ”‚       duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T05:19:51.2817993Z  105 โ”‚       easing: Easing.out(Easing.cubic),
2026-10-24T05:19:51.2818046Z  106 โ”‚     });
2026-10-24T05:19:51.2818111Z  107 โ”‚   }, [cardCoverage]);
2026-10-24T05:19:51.2818194Z  108 โ”‚   const handleBarLayout = useCallback(
2026-10-24T05:19:51.2818272Z  109 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:19:51.2818375Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2818622Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T05:19:51.2818760Z  110 โ”‚       barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:19:51.2818816Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2819142Z   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-24T05:19:51.2819438Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2819441Z
2026-10-24T05:19:51.2819633Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:19:51.2819784Z      โ•ญโ”€[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T05:19:51.2819869Z  115 โ”‚   const handleCardLayout = useCallback(
2026-10-24T05:19:51.2819947Z  116 โ”‚     (event: LayoutChangeEvent) => {
2026-10-24T05:19:51.2820054Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2820275Z      ยท                    โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-24T05:19:51.2820401Z  117 โ”‚       cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T05:19:51.2820511Z  118 โ”‚       cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T05:19:51.2820585Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2820715Z      ยท            โ•ฐโ”€โ”€ This modifies `cardHeight`
2026-10-24T05:19:51.2820782Z  119 โ”‚       notifyCoverage();
2026-10-24T05:19:51.2820831Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2821156Z   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-24T05:19:51.2821457Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2821462Z
2026-10-24T05:19:51.2821918Z   โš  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-24T05:19:51.2822039Z      โ•ญโ”€[packages/shared/src/atomicWrite.test.ts:139:5]
2026-10-24T05:19:51.2822113Z  138 โ”‚       Effect.gen(function* () {
2026-10-24T05:19:51.2822305Z  139 โ”‚ โ•ญโ”€โ–ถ     while (fiber.pollUnsafe() === undefined) {
2026-10-24T05:19:51.2822429Z  140 โ”‚ โ”‚         yield* TestClock.adjust("100 millis");
2026-10-24T05:19:51.2822809Z  141 โ”‚ โ”‚         // oxlint-disable-next-line t3code/no-real-time-wait-in-tests -- a macrotask boundary so the real stat I/O can finish; time moves only via TestClock
2026-10-24T05:19:51.2823052Z  142 โ”‚ โ”‚         yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
2026-10-24T05:19:51.2823181Z  143 โ”‚ โ•ฐโ”€โ–ถ     }
2026-10-24T05:19:51.2823266Z  144 โ”‚         return yield* Fiber.join(fiber);
2026-10-24T05:19:51.2823317Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2823320Z
2026-10-24T05:19:51.2823572Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2823720Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-24T05:19:51.2823773Z  55 โ”‚
2026-10-24T05:19:51.2823837Z  56 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2823915Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2824042Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2824110Z  57 โ”‚     setDecodedSize(null);
2026-10-24T05:19:51.2824186Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2824351Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2824418Z  58 โ”‚   }, [props.sourceKey]);
2026-10-24T05:19:51.2824468Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2825053Z   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-24T05:19:51.2825372Z   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-24T05:19:51.2825377Z
2026-10-24T05:19:51.2825626Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2825774Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-24T05:19:51.2825825Z  59 โ”‚
2026-10-24T05:19:51.2825886Z  60 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2825954Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2826078Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2826142Z  61 โ”‚     setFailedUri(null);
2026-10-24T05:19:51.2826216Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2826393Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2826462Z  62 โ”‚   }, [props.uri]);
2026-10-24T05:19:51.2826512Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2827086Z   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-24T05:19:51.2827399Z   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-24T05:19:51.2827402Z
2026-10-24T05:19:51.2827610Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T05:19:51.2827806Z    โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-24T05:19:51.2827996Z  6 โ”‚ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-24T05:19:51.2828170Z  7 โ”‚ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-24T05:19:51.2828257Z    ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2828405Z    ยท                  โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-24T05:19:51.2828458Z  8 โ”‚
2026-10-24T05:19:51.2828508Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2828641Z   help: Consider removing this import.
2026-10-24T05:19:51.2828646Z
2026-10-24T05:19:51.2828845Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2828992Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-24T05:19:51.2829064Z  57 โ”‚     setDecodedSize(null);
2026-10-24T05:19:51.2829132Z  58 โ”‚   }, [props.sourceKey]);
2026-10-24T05:19:51.2829212Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2829360Z     ยท              โ•ฐโ”€โ”€ Unnecessary dependency `props.sourceKey`
2026-10-24T05:19:51.2829409Z  59 โ”‚
2026-10-24T05:19:51.2829458Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2829743Z   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-24T05:19:51.2830044Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2830047Z
2026-10-24T05:19:51.2830245Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2830391Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-24T05:19:51.2830456Z  61 โ”‚     setFailedUri(null);
2026-10-24T05:19:51.2830519Z  62 โ”‚   }, [props.uri]);
2026-10-24T05:19:51.2830589Z     ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2830725Z     ยท           โ•ฐโ”€โ”€ Unnecessary dependency `props.uri`
2026-10-24T05:19:51.2830775Z  63 โ”‚
2026-10-24T05:19:51.2830824Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2831106Z   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-24T05:19:51.2831409Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2831411Z
2026-10-24T05:19:51.2831638Z   โš  eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
2026-10-24T05:19:51.2831754Z     โ•ญโ”€[apps/server/src/checkpointing/Utils.ts:12:10]
2026-10-24T05:19:51.2831804Z  11 โ”‚
2026-10-24T05:19:51.2831897Z  12 โ”‚ function resolveThreadWorkspaceCwd(input: {
2026-10-24T05:19:51.2831995Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2832159Z     ยท                      โ•ฐโ”€โ”€ 'resolveThreadWorkspaceCwd' is declared here
2026-10-24T05:19:51.2832224Z  13 โ”‚   readonly thread: {
2026-10-24T05:19:51.2832273Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2832376Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2832379Z
2026-10-24T05:19:51.2832681Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2832886Z     โ•ญโ”€[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-24T05:19:51.2833043Z  28 โ”‚   const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-24T05:19:51.2833105Z  29 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2833174Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2833298Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2833417Z  30 โ”‚     if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-24T05:19:51.2833520Z     ยท                                        โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2833704Z     ยท                                           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2833773Z  31 โ”‚   }, [key, live, snapshot]);
2026-10-24T05:19:51.2833821Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2834406Z   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-24T05:19:51.2834720Z   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-24T05:19:51.2834722Z
2026-10-24T05:19:51.2835159Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T05:19:51.2835292Z       โ•ญโ”€[apps/server/src/assets/AssetAccess.test.ts:1043:32]
2026-10-24T05:19:51.2835431Z  1042 โ”‚         expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-24T05:19:51.2835615Z  1043 โ”‚         const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-24T05:19:51.2835726Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2835817Z  1044 โ”‚         expect(encoded).not.toContain(url);
2026-10-24T05:19:51.2835867Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2835870Z
2026-10-24T05:19:51.2836093Z   โš  eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
2026-10-24T05:19:51.2836215Z     โ•ญโ”€[packages/shared/src/serverSettings.test.ts:35:7]
2026-10-24T05:19:51.2836394Z  34 โ”‚     const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
2026-10-24T05:19:51.2836542Z  35 โ”‚       instanceId === configured ? true : false,
2026-10-24T05:19:51.2836717Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2836772Z  36 โ”‚     );
2026-10-24T05:19:51.2836822Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2836914Z   help: Remove this ternary operator
2026-10-24T05:19:51.2836921Z
2026-10-24T05:19:51.2837182Z   โš  eslint(no-unused-vars): Variable 'claudeCaps' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2837286Z     โ•ญโ”€[packages/shared/src/model.test.ts:36:7]
2026-10-24T05:19:51.2837338Z  35 โ”‚
2026-10-24T05:19:51.2837466Z  36 โ”‚ const claudeCaps: ModelCapabilities = createModelCapabilities({
2026-10-24T05:19:51.2837537Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2837669Z     ยท            โ•ฐโ”€โ”€ 'claudeCaps' is declared here
2026-10-24T05:19:51.2837743Z  37 โ”‚   optionDescriptors: [
2026-10-24T05:19:51.2837796Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2837896Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2837898Z
2026-10-24T05:19:51.2838050Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2838192Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-work-log.tsx:174:5]
2026-10-24T05:19:51.2838335Z  170 โ”‚   const expandedAngle = props.collapsedDirection === "right" ? 90 : 180;
2026-10-24T05:19:51.2838481Z  171 โ”‚   const rotation = useSharedValue(props.expanded ? expandedAngle : 0);
2026-10-24T05:19:51.2838632Z      ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2838822Z      ยท             โ•ฐโ”€โ”€ `rotation` originates here
2026-10-24T05:19:51.2838873Z  172 โ”‚
2026-10-24T05:19:51.2838940Z  173 โ”‚   useLayoutEffect(() => {
2026-10-24T05:19:51.2839078Z  174 โ”‚     rotation.value = withTiming(props.expanded ? expandedAngle : 0, {
2026-10-24T05:19:51.2839150Z      ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2839280Z      ยท         โ•ฐโ”€โ”€ `rotation` cannot be modified
2026-10-24T05:19:51.2839374Z  175 โ”‚       duration: THREAD_DISCLOSURE_TRANSITION_MS,
2026-10-24T05:19:51.2839426Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2839684Z   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-24T05:19:51.2839980Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2839983Z
2026-10-24T05:19:51.2840169Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2840320Z       โ•ญโ”€[apps/mobile/src/features/threads/thread-work-log.tsx:1246:23]
2026-10-24T05:19:51.2840386Z  1245 โ”‚                     <Text
2026-10-24T05:19:51.2840478Z  1246 โ”‚                       key={`${index}:${line}`}
2026-10-24T05:19:51.2840588Z       ยท                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2840662Z  1247 โ”‚                       selectable
2026-10-24T05:19:51.2840711Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2840854Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2840857Z
2026-10-24T05:19:51.2841050Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2841206Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:155:7]
2026-10-24T05:19:51.2841260Z  154 โ”‚     }
2026-10-24T05:19:51.2841394Z  155 โ”‚   }, [wrappedRender]);
2026-10-24T05:19:51.2841538Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2841683Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `wrappedRender`
2026-10-24T05:19:51.2841734Z  156 โ”‚
2026-10-24T05:19:51.2841784Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2842068Z   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-24T05:19:51.2842370Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2842373Z
2026-10-24T05:19:51.2842605Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T05:19:51.2842766Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:800:42]
2026-10-24T05:19:51.2842822Z  799 โ”‚     >
2026-10-24T05:19:51.2842945Z  800 โ”‚       <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-24T05:19:51.2843065Z      ยท                                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2843161Z  801 โ”‚         <WindowHingeContext value={windowHinge}>
2026-10-24T05:19:51.2843211Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2843426Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T05:19:51.2843562Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T05:19:51.2843564Z
2026-10-24T05:19:51.2843716Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2843876Z     โ•ญโ”€[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-24T05:19:51.2843928Z  35 โ”‚
2026-10-24T05:19:51.2844063Z  36 โ”‚   const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-24T05:19:51.2844148Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2844289Z     ยท                 โ•ฐโ”€โ”€ `inspectorProgress` originates here
2026-10-24T05:19:51.2844380Z  37 โ”‚   const { renderedInspectorWidth } = props;
2026-10-24T05:19:51.2844509Z  38 โ”‚   const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T05:19:51.2844558Z  39 โ”‚
2026-10-24T05:19:51.2844636Z  40 โ”‚   const onClosed = props.onClosed;
2026-10-24T05:19:51.2844697Z  41 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2844785Z  42 โ”‚     inspectorProgress.value = withTiming(
2026-10-24T05:19:51.2844865Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2845016Z     ยท             โ•ฐโ”€โ”€ `inspectorProgress` cannot be modified
2026-10-24T05:19:51.2845093Z  43 โ”‚       inspectorVisible ? 1 : 0,
2026-10-24T05:19:51.2845143Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2845400Z   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-24T05:19:51.2845695Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2845697Z
2026-10-24T05:19:51.2845847Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2845999Z     โ•ญโ”€[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-24T05:19:51.2846088Z  37 โ”‚   const { renderedInspectorWidth } = props;
2026-10-24T05:19:51.2846266Z  38 โ”‚   const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T05:19:51.2846417Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2846568Z     ยท                   โ•ฐโ”€โ”€ `renderedContentWidth` originates here
2026-10-24T05:19:51.2846618Z  39 โ”‚
2026-10-24T05:19:51.2846695Z  40 โ”‚   const onClosed = props.onClosed;
2026-10-24T05:19:51.2846758Z  41 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2846843Z  42 โ”‚     inspectorProgress.value = withTiming(
2026-10-24T05:19:51.2846915Z  43 โ”‚       inspectorVisible ? 1 : 0,
2026-10-24T05:19:51.2846983Z  44 โ”‚       WORKSPACE_PANE_TIMING,
2026-10-24T05:19:51.2847045Z  45 โ”‚       (finished) => {
2026-10-24T05:19:51.2847180Z  46 โ”‚         if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-24T05:19:51.2847250Z  47 โ”‚           runOnJS(onClosed)();
2026-10-24T05:19:51.2847307Z  48 โ”‚         }
2026-10-24T05:19:51.2847367Z  49 โ”‚       },
2026-10-24T05:19:51.2847422Z  50 โ”‚     );
2026-10-24T05:19:51.2847551Z  51 โ”‚     const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-24T05:19:51.2847626Z  52 โ”‚     renderedInspectorWidth.set(
2026-10-24T05:19:51.2847763Z  53 โ”‚       resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-24T05:19:51.2847815Z  54 โ”‚     );
2026-10-24T05:19:51.2847866Z  55 โ”‚   }, [
2026-10-24T05:19:51.2847932Z  56 โ”‚     inspectorProgress,
2026-10-24T05:19:51.2847995Z  57 โ”‚     inspectorVisible,
2026-10-24T05:19:51.2848057Z  58 โ”‚     inspectorWidth,
2026-10-24T05:19:51.2848115Z  59 โ”‚     onClosed,
2026-10-24T05:19:51.2848186Z  60 โ”‚     renderedInspectorWidth,
2026-10-24T05:19:51.2848244Z  61 โ”‚     resizing,
2026-10-24T05:19:51.2848297Z  62 โ”‚   ]);
2026-10-24T05:19:51.2848347Z  63 โ”‚
2026-10-24T05:19:51.2848414Z  64 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2848505Z  65 โ”‚     const targetWidth = inspectorWidth ?? 0;
2026-10-24T05:19:51.2848611Z  66 โ”‚     if (!inspectorVisible || resizing) {
2026-10-24T05:19:51.2848721Z  67 โ”‚       renderedContentWidth.value = targetWidth;
2026-10-24T05:19:51.2848807Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2848963Z     ยท                 โ•ฐโ”€โ”€ `renderedContentWidth` cannot be modified
2026-10-24T05:19:51.2849021Z  68 โ”‚       return;
2026-10-24T05:19:51.2849071Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2849325Z   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-24T05:19:51.2849620Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2849628Z
2026-10-24T05:19:51.2849904Z   โš  eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2850048Z        โ•ญโ”€[apps/server/src/orchestration-v2/Orchestrator.ts:12366:7]
2026-10-24T05:19:51.2850101Z  12365 โ”‚
2026-10-24T05:19:51.2850238Z  12366 โ”‚ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-24T05:19:51.2850325Z        ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2850471Z        ยท               โ•ฐโ”€โ”€ 'layerUnavailable' is declared here
2026-10-24T05:19:51.2850536Z  12367 โ”‚   OrchestratorV2,
2026-10-24T05:19:51.2850585Z        โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2850688Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2850691Z
2026-10-24T05:19:51.2850881Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2851106Z     โ•ญโ”€[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-24T05:19:51.2851186Z  26 โ”‚   const latestInput = useRef(input);
2026-10-24T05:19:51.2851260Z  27 โ”‚   latestInput.current = input;
2026-10-24T05:19:51.2851369Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2851549Z     ยท        โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:19:51.2851659Z     ยท        โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:19:51.2851733Z  28 โ”‚   const mounted = useRef(true);
2026-10-24T05:19:51.2851785Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2852249Z   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-24T05:19:51.2852535Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2852539Z
2026-10-24T05:19:51.2852814Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T05:19:51.2852966Z      โ•ญโ”€[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T05:19:51.2853022Z  162 โ”‚   keys,
2026-10-24T05:19:51.2853092Z  163 โ”‚   overridingProjects = [],
2026-10-24T05:19:51.2853172Z      ยท                        โ”€โ”€
2026-10-24T05:19:51.2853237Z  164 โ”‚   onClearOverrides,
2026-10-24T05:19:51.2853288Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2853602Z   help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T05:19:51.2853607Z
2026-10-24T05:19:51.2853746Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2853901Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-24T05:19:51.2854057Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T05:19:51.2854178Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T05:19:51.2854295Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2854467Z      ยท                                                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2854590Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T05:19:51.2854644Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2855098Z   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-24T05:19:51.2855386Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2855388Z
2026-10-24T05:19:51.2855528Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2855682Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-24T05:19:51.2855734Z  125 โ”‚
2026-10-24T05:19:51.2855893Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:19:51.2856045Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2856191Z      ยท                 โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2856291Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:19:51.2856340Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2856790Z   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-24T05:19:51.2857073Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2857076Z
2026-10-24T05:19:51.2857218Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2857373Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-24T05:19:51.2857423Z  125 โ”‚
2026-10-24T05:19:51.2857528Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:19:51.2857613Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2857754Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2857850Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:19:51.2857902Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2858353Z   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-24T05:19:51.2858683Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2858688Z
2026-10-24T05:19:51.2858826Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2858977Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-24T05:19:51.2859029Z  125 โ”‚
2026-10-24T05:19:51.2859131Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:19:51.2859243Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2859404Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2859500Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:19:51.2859550Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2860050Z   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-24T05:19:51.2860392Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2860395Z
2026-10-24T05:19:51.2860532Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2860684Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-24T05:19:51.2860735Z  125 โ”‚
2026-10-24T05:19:51.2860838Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:19:51.2860952Z      ยท                              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2861115Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2861212Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:19:51.2861260Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2861712Z   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-24T05:19:51.2861992Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2861994Z
2026-10-24T05:19:51.2862131Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2862286Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T05:19:51.2862395Z  126 โ”‚       if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:19:51.2862581Z  127 โ”‚ โ•ญโ”€โ–ถ     const recorder = createLazyVoiceRecorder({
2026-10-24T05:19:51.2862752Z  128 โ”‚ โ”‚         create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T05:19:51.2862875Z  129 โ”‚ โ”‚         onStatus: (status: RecordingStatus) => {
2026-10-24T05:19:51.2863025Z  130 โ”‚ โ”‚           sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T05:19:51.2863139Z  131 โ”‚ โ”‚             isFinished: status.isFinished,
2026-10-24T05:19:51.2863312Z  132 โ”‚ โ”‚             hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T05:19:51.2863419Z  133 โ”‚ โ”‚             error: status.error,
2026-10-24T05:19:51.2863517Z  134 โ”‚ โ”‚             url: status.url,
2026-10-24T05:19:51.2863594Z  135 โ”‚ โ”‚           });
2026-10-24T05:19:51.2863671Z  136 โ”‚ โ”‚         },
2026-10-24T05:19:51.2863864Z  137 โ”‚ โ”‚         // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T05:19:51.2863970Z  138 โ”‚ โ”‚         selectInput: (inputs) => {
2026-10-24T05:19:51.2864120Z  139 โ”‚ โ”‚           const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T05:19:51.2864265Z  140 โ”‚ โ”‚           if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T05:19:51.2864425Z  141 โ”‚ โ”‚           const known = microphoneOrder(preferences.value.microphones);
2026-10-24T05:19:51.2864607Z  142 โ”‚ โ”‚           const order = rememberMicrophones(known, inputs);
2026-10-24T05:19:51.2864770Z  143 โ”‚ โ”‚           if (order !== known) {
2026-10-24T05:19:51.2864905Z  144 โ”‚ โ”‚             registry.set(updateMobilePreferencesAtom, {
2026-10-24T05:19:51.2865018Z  145 โ”‚ โ”‚               transform: (current) => ({
2026-10-24T05:19:51.2865220Z  146 โ”‚ โ”‚                 microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T05:19:51.2865304Z  147 โ”‚ โ”‚               }),
2026-10-24T05:19:51.2865386Z  148 โ”‚ โ”‚             });
2026-10-24T05:19:51.2865463Z  149 โ”‚ โ”‚           }
2026-10-24T05:19:51.2865599Z  150 โ”‚ โ”‚           return preferredMicrophoneInput(inputs, order);
2026-10-24T05:19:51.2865678Z  151 โ”‚ โ”‚         },
2026-10-24T05:19:51.2865809Z  152 โ”‚ โ”œโ”€โ–ถ     });
2026-10-24T05:19:51.2866039Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T05:19:51.2866124Z  153 โ”‚         recorderRef.current = recorder;
2026-10-24T05:19:51.2866174Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2866626Z   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-24T05:19:51.2866909Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2866916Z
2026-10-24T05:19:51.2867058Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2867213Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T05:19:51.2867268Z  152 โ”‚     });
2026-10-24T05:19:51.2867349Z  153 โ”‚     recorderRef.current = recorder;
2026-10-24T05:19:51.2867459Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2867639Z      ยท          โ”‚         โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:19:51.2867753Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:19:51.2867854Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-24T05:19:51.2867904Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2868362Z   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-24T05:19:51.2868679Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2868682Z
2026-10-24T05:19:51.2868821Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2868975Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T05:19:51.2869060Z  153 โ”‚         recorderRef.current = recorder;
2026-10-24T05:19:51.2869246Z  154 โ”‚ โ•ญโ”€โ–ถ     sessionRef.current = new VoiceInputSession({
2026-10-24T05:19:51.2869328Z  155 โ”‚ โ”‚         recorder,
2026-10-24T05:19:51.2869501Z  156 โ”‚ โ”‚         getTranscriber: getLocalVoiceTranscriber,
2026-10-24T05:19:51.2869680Z  157 โ”‚ โ”‚         requestPermission: async () => {
2026-10-24T05:19:51.2869841Z  158 โ”‚ โ”‚           const permission = await requestRecordingPermissionsAsync();
2026-10-24T05:19:51.2870026Z  159 โ”‚ โ”‚           return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T05:19:51.2870102Z  160 โ”‚ โ”‚         },
2026-10-24T05:19:51.2870241Z  161 โ”‚ โ”‚         configureRecording: configureVoiceRecordingAudio,
2026-10-24T05:19:51.2870374Z  162 โ”‚ โ”‚         releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T05:19:51.2870506Z  163 โ”‚ โ”‚         deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T05:19:51.2870621Z  164 โ”‚ โ”‚         onStateChange: (nextState) =>
2026-10-24T05:19:51.2870712Z  165 โ”‚ โ”‚           setState({
2026-10-24T05:19:51.2870810Z  166 โ”‚ โ”‚             state: nextState,
2026-10-24T05:19:51.2870943Z  167 โ”‚ โ”‚             ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T05:19:51.2871067Z  168 โ”‚ โ”‚             label: sessionRef.current?.label ?? null,
2026-10-24T05:19:51.2871145Z  169 โ”‚ โ”‚           }),
2026-10-24T05:19:51.2871271Z  170 โ”‚ โ”œโ”€โ–ถ     });
2026-10-24T05:19:51.2871464Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2871518Z  171 โ”‚       }
2026-10-24T05:19:51.2871572Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2872028Z   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-24T05:19:51.2872313Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2872315Z
2026-10-24T05:19:51.2872453Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2872607Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T05:19:51.2872686Z  153 โ”‚     recorderRef.current = recorder;
2026-10-24T05:19:51.2872787Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-24T05:19:51.2872898Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2873078Z      ยท          โ”‚        โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T05:19:51.2873193Z      ยท          โ•ฐโ”€โ”€ This value is a ref
2026-10-24T05:19:51.2873256Z  155 โ”‚       recorder,
2026-10-24T05:19:51.2873306Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2873753Z   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-24T05:19:51.2874033Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2874035Z
2026-10-24T05:19:51.2874220Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2874444Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T05:19:51.2874528Z  184 โ”‚     return () => subscription.remove();
2026-10-24T05:19:51.2874593Z  185 โ”‚   }, [controller]);
2026-10-24T05:19:51.2874667Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2874808Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2874858Z  186 โ”‚
2026-10-24T05:19:51.2874908Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2875357Z   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-24T05:19:51.2875643Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2875648Z
2026-10-24T05:19:51.2875786Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2875937Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T05:19:51.2876020Z  184 โ”‚     return () => subscription.remove();
2026-10-24T05:19:51.2876084Z  185 โ”‚   }, [controller]);
2026-10-24T05:19:51.2876160Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2876296Z      ยท            โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2876350Z  186 โ”‚
2026-10-24T05:19:51.2876402Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2876856Z   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-24T05:19:51.2877138Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2877142Z
2026-10-24T05:19:51.2877278Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2877430Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T05:19:51.2877484Z  191 โ”‚     },
2026-10-24T05:19:51.2877554Z  192 โ”‚     [controller, recorder],
2026-10-24T05:19:51.2877626Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2877763Z      ยท           โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2877817Z  193 โ”‚   );
2026-10-24T05:19:51.2877867Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2878323Z   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-24T05:19:51.2878721Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2878724Z
2026-10-24T05:19:51.2878865Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2879016Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T05:19:51.2879103Z  174 โ”‚   const controller = session.controller;
2026-10-24T05:19:51.2879188Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-24T05:19:51.2879354Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2879623Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2879673Z  176 โ”‚
2026-10-24T05:19:51.2879725Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2880173Z   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-24T05:19:51.2880456Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2880458Z
2026-10-24T05:19:51.2880596Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2880753Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T05:19:51.2880811Z  191 โ”‚     },
2026-10-24T05:19:51.2880881Z  192 โ”‚     [controller, recorder],
2026-10-24T05:19:51.2880967Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2881110Z      ยท                โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2881167Z  193 โ”‚   );
2026-10-24T05:19:51.2881216Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2881665Z   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-24T05:19:51.2881945Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2881953Z
2026-10-24T05:19:51.2882091Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2882244Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T05:19:51.2882333Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-24T05:19:51.2882443Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T05:19:51.2882528Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2882677Z      ยท                         โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2882728Z  247 โ”‚
2026-10-24T05:19:51.2882777Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2883227Z   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-24T05:19:51.2883509Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2883512Z
2026-10-24T05:19:51.2883648Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2883800Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T05:19:51.2883886Z  245 โ”‚     return () => clearInterval(intervalId);
2026-10-24T05:19:51.2883993Z  246 โ”‚   }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T05:19:51.2884118Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2884273Z      ยท                              โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2884372Z  247 โ”‚
2026-10-24T05:19:51.2884485Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2884934Z   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-24T05:19:51.2885214Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2885217Z
2026-10-24T05:19:51.2885356Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2885506Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T05:19:51.2885572Z  260 โ”‚     setOwnerFocused,
2026-10-24T05:19:51.2885632Z  261 โ”‚     session,
2026-10-24T05:19:51.2885707Z      ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2885840Z      ยท        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2885897Z  262 โ”‚     stop,
2026-10-24T05:19:51.2885946Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2886393Z   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-24T05:19:51.2886672Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2886675Z
2026-10-24T05:19:51.2886812Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2886970Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T05:19:51.2887025Z  250 โ”‚
2026-10-24T05:19:51.2887162Z  251 โ”‚ โ•ญโ”€โ–ถ   return {
2026-10-24T05:19:51.2887365Z  252 โ”‚ โ”‚       isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T05:19:51.2887448Z  253 โ”‚ โ”‚       state,
2026-10-24T05:19:51.2887536Z  254 โ”‚ โ”‚       audioLevels,
2026-10-24T05:19:51.2887628Z  255 โ”‚ โ”‚       elapsedSeconds,
2026-10-24T05:19:51.2887752Z  256 โ”‚ โ”‚       isBusy: voiceInputBlocksSubmission(state),
2026-10-24T05:19:51.2887834Z  257 โ”‚ โ”‚       ownerKey,
2026-10-24T05:19:51.2887910Z  258 โ”‚ โ”‚       label,
2026-10-24T05:19:51.2887997Z  259 โ”‚ โ”‚       focusedOwners,
2026-10-24T05:19:51.2888135Z  260 โ”‚ โ”‚       setOwnerFocused,
2026-10-24T05:19:51.2888275Z  261 โ”‚ โ”‚       session,
2026-10-24T05:19:51.2888351Z  262 โ”‚ โ”‚       stop,
2026-10-24T05:19:51.2888428Z  263 โ”‚ โ”‚       cancel,
2026-10-24T05:19:51.2888583Z  264 โ”‚ โ”œโ”€โ–ถ   };
2026-10-24T05:19:51.2888777Z      ยท โ•ฐโ”€โ”€โ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2888831Z  265 โ”‚     }
2026-10-24T05:19:51.2888881Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2889329Z   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-24T05:19:51.2889617Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2889622Z
2026-10-24T05:19:51.2889775Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2889929Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T05:19:51.2890085Z  121 โ”‚   const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T05:19:51.2890204Z  122 โ”‚   const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T05:19:51.2890281Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2890412Z      ยท              โ•ฐโ”€โ”€ `audioLevels` originates here
2026-10-24T05:19:51.2890533Z  123 โ”‚   const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T05:19:51.2890676Z  124 โ”‚   const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T05:19:51.2890727Z  125 โ”‚
2026-10-24T05:19:51.2890830Z  126 โ”‚   if (!sessionRef.current || !recorderRef.current) {
2026-10-24T05:19:51.2890926Z  127 โ”‚     const recorder = createLazyVoiceRecorder({
2026-10-24T05:19:51.2891059Z  128 โ”‚       create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T05:19:51.2891151Z  129 โ”‚       onStatus: (status: RecordingStatus) => {
2026-10-24T05:19:51.2891269Z  130 โ”‚         sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T05:19:51.2891353Z  131 โ”‚           isFinished: status.isFinished,
2026-10-24T05:19:51.2891492Z  132 โ”‚           hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T05:19:51.2891564Z  133 โ”‚           error: status.error,
2026-10-24T05:19:51.2891640Z  134 โ”‚           url: status.url,
2026-10-24T05:19:51.2891699Z  135 โ”‚         });
2026-10-24T05:19:51.2891753Z  136 โ”‚       },
2026-10-24T05:19:51.2891915Z  137 โ”‚       // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T05:19:51.2891991Z  138 โ”‚       selectInput: (inputs) => {
2026-10-24T05:19:51.2892111Z  139 โ”‚         const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T05:19:51.2892222Z  140 โ”‚         if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T05:19:51.2892351Z  141 โ”‚         const known = microphoneOrder(preferences.value.microphones);
2026-10-24T05:19:51.2892456Z  142 โ”‚         const order = rememberMicrophones(known, inputs);
2026-10-24T05:19:51.2892526Z  143 โ”‚         if (order !== known) {
2026-10-24T05:19:51.2892629Z  144 โ”‚           registry.set(updateMobilePreferencesAtom, {
2026-10-24T05:19:51.2892709Z  145 โ”‚             transform: (current) => ({
2026-10-24T05:19:51.2892944Z  146 โ”‚               microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T05:19:51.2893066Z  147 โ”‚             }),
2026-10-24T05:19:51.2893128Z  148 โ”‚           });
2026-10-24T05:19:51.2893183Z  149 โ”‚         }
2026-10-24T05:19:51.2893289Z  150 โ”‚         return preferredMicrophoneInput(inputs, order);
2026-10-24T05:19:51.2893342Z  151 โ”‚       },
2026-10-24T05:19:51.2893397Z  152 โ”‚     });
2026-10-24T05:19:51.2893476Z  153 โ”‚     recorderRef.current = recorder;
2026-10-24T05:19:51.2893574Z  154 โ”‚     sessionRef.current = new VoiceInputSession({
2026-10-24T05:19:51.2893632Z  155 โ”‚       recorder,
2026-10-24T05:19:51.2893728Z  156 โ”‚       getTranscriber: getLocalVoiceTranscriber,
2026-10-24T05:19:51.2893812Z  157 โ”‚       requestPermission: async () => {
2026-10-24T05:19:51.2893944Z  158 โ”‚         const permission = await requestRecordingPermissionsAsync();
2026-10-24T05:19:51.2894097Z  159 โ”‚         return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T05:19:51.2894150Z  160 โ”‚       },
2026-10-24T05:19:51.2894257Z  161 โ”‚       configureRecording: configureVoiceRecordingAudio,
2026-10-24T05:19:51.2894361Z  162 โ”‚       releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T05:19:51.2894460Z  163 โ”‚       deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T05:19:51.2894538Z  164 โ”‚       onStateChange: (nextState) =>
2026-10-24T05:19:51.2894600Z  165 โ”‚         setState({
2026-10-24T05:19:51.2894667Z  166 โ”‚           state: nextState,
2026-10-24T05:19:51.2894767Z  167 โ”‚           ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T05:19:51.2894864Z  168 โ”‚           label: sessionRef.current?.label ?? null,
2026-10-24T05:19:51.2894921Z  169 โ”‚         }),
2026-10-24T05:19:51.2894974Z  170 โ”‚     });
2026-10-24T05:19:51.2895031Z  171 โ”‚   }
2026-10-24T05:19:51.2895083Z  172 โ”‚
2026-10-24T05:19:51.2895167Z  173 โ”‚   const session = sessionRef.current;
2026-10-24T05:19:51.2895251Z  174 โ”‚   const controller = session.controller;
2026-10-24T05:19:51.2895333Z  175 โ”‚   const recorder = recorderRef.current;
2026-10-24T05:19:51.2895384Z  176 โ”‚
2026-10-24T05:19:51.2895448Z  177 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2895594Z  178 โ”‚     const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T05:19:51.2895730Z  179 โ”‚       // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T05:19:51.2895866Z  180 โ”‚       // real background state cancels preparation; recorder status handles
2026-10-24T05:19:51.2895968Z  181 โ”‚       // calls and route interruptions during capture.
2026-10-24T05:19:51.2896097Z  182 โ”‚       if (nextState === "background") controller.appMovedToBackground();
2026-10-24T05:19:51.2896158Z  183 โ”‚     });
2026-10-24T05:19:51.2896242Z  184 โ”‚     return () => subscription.remove();
2026-10-24T05:19:51.2896305Z  185 โ”‚   }, [controller]);
2026-10-24T05:19:51.2896355Z  186 โ”‚
2026-10-24T05:19:51.2896413Z  187 โ”‚   useEffect(
2026-10-24T05:19:51.2896472Z  188 โ”‚     () => () => {
2026-10-24T05:19:51.2896544Z  189 โ”‚       controller.dispose();
2026-10-24T05:19:51.2896608Z  190 โ”‚       recorder.release();
2026-10-24T05:19:51.2896663Z  191 โ”‚     },
2026-10-24T05:19:51.2896731Z  192 โ”‚     [controller, recorder],
2026-10-24T05:19:51.2896782Z  193 โ”‚   );
2026-10-24T05:19:51.2896832Z  194 โ”‚
2026-10-24T05:19:51.2896893Z  195 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2896983Z  196 โ”‚     if (state.phase !== "recording") return;
2026-10-24T05:19:51.2897032Z  197 โ”‚
2026-10-24T05:19:51.2897229Z  198 โ”‚     const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T05:19:51.2897395Z  199 โ”‚     const activation = activateKeepAwakeAsync(tag);
2026-10-24T05:19:51.2897474Z  200 โ”‚     void activation.catch(() => {});
2026-10-24T05:19:51.2897536Z  201 โ”‚     return () => {
2026-10-24T05:19:51.2897682Z  202 โ”‚       // Release after activation settles, even if the recording ends immediately.
2026-10-24T05:19:51.2897818Z  203 โ”‚       void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T05:19:51.2897871Z  204 โ”‚     };
2026-10-24T05:19:51.2897947Z  205 โ”‚   }, [keepAwakeId, state.phase]);
2026-10-24T05:19:51.2898000Z  206 โ”‚
2026-10-24T05:19:51.2898061Z  207 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2898191Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T05:19:51.2898240Z  209 โ”‚
2026-10-24T05:19:51.2898358Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T05:19:51.2898514Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T05:19:51.2898628Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-24T05:19:51.2898735Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2898873Z      ยท            โ•ฐโ”€โ”€ `audioLevels` cannot be modified
2026-10-24T05:19:51.2898926Z  213 โ”‚     }
2026-10-24T05:19:51.2898977Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2899237Z   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-24T05:19:51.2899535Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2899538Z
2026-10-24T05:19:51.2899739Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T05:19:51.2899896Z      โ•ญโ”€[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T05:19:51.2899946Z  206 โ”‚
2026-10-24T05:19:51.2900009Z  207 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2900086Z      ยท             โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2900297Z      ยท                โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T05:19:51.2900430Z  208 โ”‚     if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T05:19:51.2900479Z  209 โ”‚
2026-10-24T05:19:51.2900597Z  210 โ”‚     if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T05:19:51.2900746Z  211 โ”‚       audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T05:19:51.2900851Z  212 โ”‚       audioLevels.value = audioLevelsRef.current;
2026-10-24T05:19:51.2900927Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2901056Z      ยท            โ•ฐโ”€โ”€ This modifies `audioLevels`
2026-10-24T05:19:51.2901109Z  213 โ”‚     }
2026-10-24T05:19:51.2901158Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2901487Z   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-24T05:19:51.2901784Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2901786Z
2026-10-24T05:19:51.2901940Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2902152Z     โ•ญโ”€[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-24T05:19:51.2902318Z  65 โ”‚   const [expanded, setExpanded] = useState(false);
2026-10-24T05:19:51.2902399Z  66 โ”‚   const progress = useSharedValue(0);
2026-10-24T05:19:51.2902471Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2902599Z     ยท             โ•ฐโ”€โ”€ `progress` originates here
2026-10-24T05:19:51.2902661Z  67 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2902783Z  68 โ”‚     progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-24T05:19:51.2902851Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2902980Z     ยท         โ•ฐโ”€โ”€ `progress` cannot be modified
2026-10-24T05:19:51.2903049Z  69 โ”‚   }, [expanded, progress]);
2026-10-24T05:19:51.2903099Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2903362Z   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-24T05:19:51.2903660Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2903663Z
2026-10-24T05:19:51.2903847Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-24T05:19:51.2903960Z    โ•ญโ”€[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T05:19:51.2904015Z  7 โ”‚     () =>
2026-10-24T05:19:51.2904079Z  8 โ”‚       Gesture.Hover()
2026-10-24T05:19:51.2904152Z    ยท               โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:19:51.2904284Z    ยท                 โ•ฐโ”€โ”€ `Hover` may be a component
2026-10-24T05:19:51.2904356Z  9 โ”‚         .manualActivation(true)
2026-10-24T05:19:51.2904407Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2904685Z   help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T05:19:51.2905124Z   note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T05:19:51.2905127Z
2026-10-24T05:19:51.2905280Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2905446Z     โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-24T05:19:51.2905499Z  90 โ”‚ }) {
2026-10-24T05:19:51.2905610Z  91 โ”‚   const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-24T05:19:51.2905681Z     ยท         โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2905813Z     ยท             โ•ฐโ”€โ”€ `rotation` originates here
2026-10-24T05:19:51.2905883Z  92 โ”‚   useLayoutEffect(() => {
2026-10-24T05:19:51.2906020Z  93 โ”‚     rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-24T05:19:51.2906088Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2906214Z     ยท         โ•ฐโ”€โ”€ `rotation` cannot be modified
2026-10-24T05:19:51.2906289Z  94 โ”‚   }, [props.hidden, rotation]);
2026-10-24T05:19:51.2906337Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2906592Z   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-24T05:19:51.2906886Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2906889Z
2026-10-24T05:19:51.2907097Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2907338Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-24T05:19:51.2907431Z  266 โ”‚   const variant = props.variant ?? "plain";
2026-10-24T05:19:51.2907561Z  267 โ”‚   const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-24T05:19:51.2907645Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2907865Z      ยท                 โ•ฐโ”€โ”€ `loadingVisibility` originates here
2026-10-24T05:19:51.2907932Z  268 โ”‚   useLayoutEffect(() => {
2026-10-24T05:19:51.2908085Z  269 โ”‚     loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-24T05:19:51.2908165Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2908316Z      ยท             โ•ฐโ”€โ”€ `loadingVisibility` cannot be modified
2026-10-24T05:19:51.2908405Z  270 โ”‚   }, [loadingVisibility, props.loading]);
2026-10-24T05:19:51.2908455Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2908758Z   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-24T05:19:51.2909053Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2909055Z
2026-10-24T05:19:51.2909204Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2909368Z      โ•ญโ”€[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-24T05:19:51.2909422Z  325 โ”‚ }) {
2026-10-24T05:19:51.2909581Z  326 โ”‚   const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-24T05:19:51.2909668Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2909816Z      ยท                  โ•ฐโ”€โ”€ `recordingVisibility` originates here
2026-10-24T05:19:51.2909883Z  327 โ”‚   useLayoutEffect(() => {
2026-10-24T05:19:51.2910065Z  328 โ”‚     recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-24T05:19:51.2910147Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2910295Z      ยท              โ•ฐโ”€โ”€ `recordingVisibility` cannot be modified
2026-10-24T05:19:51.2910381Z  329 โ”‚   }, [props.phase, recordingVisibility]);
2026-10-24T05:19:51.2910431Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2910684Z   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-24T05:19:51.2910984Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2910989Z
2026-10-24T05:19:51.2911241Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2911402Z      โ•ญโ”€[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:413:7]
2026-10-24T05:19:51.2911454Z  412 โ”‚
2026-10-24T05:19:51.2911578Z  413 โ”‚ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-24T05:19:51.2911645Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:19:51.2911765Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T05:19:51.2911815Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2911915Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2911970Z
2026-10-24T05:19:51.2912290Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2912442Z      โ•ญโ”€[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-24T05:19:51.2912609Z  112 โ”‚   const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-24T05:19:51.2912672Z  113 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2912740Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2912867Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2913026Z  114 โ”‚     if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-24T05:19:51.2913086Z  115 โ”‚       return;
2026-10-24T05:19:51.2913141Z  116 โ”‚     }
2026-10-24T05:19:51.2913263Z  117 โ”‚     setEntry({ key: input.targetKey, location: candidate });
2026-10-24T05:19:51.2913337Z      ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2913499Z      ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2913618Z  118 โ”‚   }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-24T05:19:51.2913669Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2914254Z   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-24T05:19:51.2914571Z   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-24T05:19:51.2914578Z
2026-10-24T05:19:51.2914770Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2914923Z     โ•ญโ”€[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-24T05:19:51.2914987Z  71 โ”‚             <Pressable
2026-10-24T05:19:51.2915052Z  72 โ”‚               key={index}
2026-10-24T05:19:51.2915135Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2915219Z  73 โ”‚               accessibilityRole="button"
2026-10-24T05:19:51.2915270Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2915412Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2915414Z
2026-10-24T05:19:51.2915663Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2915864Z      โ•ญโ”€[apps/mobile/src/features/threads/new-task-flow-provider.tsx:444:5]
2026-10-24T05:19:51.2915982Z  434 โ”‚       : null;
2026-10-24T05:19:51.2916046Z  435 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2916113Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2916237Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2916295Z  436 โ”‚     if (
2026-10-24T05:19:51.2916369Z  437 โ”‚       props.active === false ||
2026-10-24T05:19:51.2916442Z  438 โ”‚       activeDraftKey !== null ||
2026-10-24T05:19:51.2916521Z  439 โ”‚       editingPendingTask !== null ||
2026-10-24T05:19:51.2916594Z  440 โ”‚       selectedProject === null
2026-10-24T05:19:51.2916648Z  441 โ”‚     ) {
2026-10-24T05:19:51.2916705Z  442 โ”‚       return;
2026-10-24T05:19:51.2916758Z  443 โ”‚     }
2026-10-24T05:19:51.2916826Z  444 โ”‚     setActiveDraftKey(
2026-10-24T05:19:51.2916911Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2917078Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2917147Z  445 โ”‚       createNewTaskDraft({
2026-10-24T05:19:51.2917196Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2917771Z   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-24T05:19:51.2918082Z   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-24T05:19:51.2918086Z
2026-10-24T05:19:51.2918327Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T05:19:51.2918506Z       โ•ญโ”€[apps/mobile/src/features/threads/new-task-flow-provider.tsx:1244:36]
2026-10-24T05:19:51.2918727Z  1243 โ”‚     <ActiveNewTaskContext value={activeNewTask}>
2026-10-24T05:19:51.2918930Z  1244 โ”‚       <NewTaskFlowContext.Provider value={value}>{props.children}</NewTaskFlowContext.Provider>
2026-10-24T05:19:51.2919040Z       ยท                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2919113Z  1245 โ”‚     </ActiveNewTaskContext>
2026-10-24T05:19:51.2919167Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2919384Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T05:19:51.2919519Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T05:19:51.2919527Z
2026-10-24T05:19:51.2919703Z   โš  unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-24T05:19:51.2919822Z      โ•ญโ”€[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-24T05:19:51.2919944Z  193 โ”‚     const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-24T05:19:51.2920031Z  194 โ”‚     const codes = new Array<number>(count);
2026-10-24T05:19:51.2920136Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2920237Z  195 โ”‚     for (let index = 0; index < count; index += 1) {
2026-10-24T05:19:51.2920287Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2920692Z   help: It's not clear whether the argument is meant to be the length of the array or the only element. If the argument is the array's length, consider using `Array.from({ length: n })`. If the argument is the only element, use `[element]`.
2026-10-24T05:19:51.2920696Z
2026-10-24T05:19:51.2921015Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2921220Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-24T05:19:51.2921272Z  638 โ”‚
2026-10-24T05:19:51.2921335Z  639 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2921401Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2921528Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2921636Z  640 โ”‚     if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-24T05:19:51.2921695Z  641 โ”‚       return;
2026-10-24T05:19:51.2921747Z  642 โ”‚     }
2026-10-24T05:19:51.2921818Z  643 โ”‚     setPendingLaunchEntry({
2026-10-24T05:19:51.2921903Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2922075Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2922148Z  644 โ”‚       key: launchTargetKey,
2026-10-24T05:19:51.2922198Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2922772Z   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-24T05:19:51.2923085Z   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-24T05:19:51.2923087Z
2026-10-24T05:19:51.2923338Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2923503Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-24T05:19:51.2923554Z  648 โ”‚
2026-10-24T05:19:51.2923616Z  649 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2923683Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2923808Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2923921Z  650 โ”‚     if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-24T05:19:51.2923980Z  651 โ”‚       return;
2026-10-24T05:19:51.2924032Z  652 โ”‚     }
2026-10-24T05:19:51.2924109Z  653 โ”‚     setInitialAttachGridEntry({
2026-10-24T05:19:51.2924199Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2924368Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2924442Z  654 โ”‚       key: launchTargetKey,
2026-10-24T05:19:51.2924496Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2925073Z   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-24T05:19:51.2925385Z   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-24T05:19:51.2925387Z
2026-10-24T05:19:51.2925634Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2925797Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-24T05:19:51.2925902Z  743 โ”‚
2026-10-24T05:19:51.2925994Z  744 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2926062Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2926184Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2926283Z  745 โ”‚     if (!routeEnvironmentId || !routeThreadId) {
2026-10-24T05:19:51.2926350Z  746 โ”‚       setLastGridSize({
2026-10-24T05:19:51.2926430Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2926592Z      ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2926671Z  747 โ”‚         cols: DEFAULT_TERMINAL_COLS,
2026-10-24T05:19:51.2926721Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2927305Z   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-24T05:19:51.2927618Z   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-24T05:19:51.2927620Z
2026-10-24T05:19:51.2927815Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2927981Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-24T05:19:51.2928037Z  537 โ”‚     });
2026-10-24T05:19:51.2928157Z  538 โ”‚   }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-24T05:19:51.2928261Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2928507Z      ยท                                   โ•ฐโ”€โ”€ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-24T05:19:51.2928723Z  539 โ”‚   const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-24T05:19:51.2928773Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2929058Z   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-24T05:19:51.2929361Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2929364Z
2026-10-24T05:19:51.2929557Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2929723Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-24T05:19:51.2929819Z  708 โ”‚     sentInitialInputKeyRef.current = null;
2026-10-24T05:19:51.2929882Z  709 โ”‚   }, [terminalKey]);
2026-10-24T05:19:51.2929958Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2930097Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-24T05:19:51.2930149Z  710 โ”‚
2026-10-24T05:19:51.2930197Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2930480Z   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-24T05:19:51.2930783Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2930785Z
2026-10-24T05:19:51.2931025Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2931215Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-24T05:19:51.2931269Z  799 โ”‚     };
2026-10-24T05:19:51.2931443Z  800 โ”‚   }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-24T05:19:51.2931615Z      ยท                                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2931839Z      ยท                                                                โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-24T05:19:51.2932041Z      ยท                                                                โ•ฐโ”€โ”€ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-24T05:19:51.2932092Z  801 โ”‚
2026-10-24T05:19:51.2932149Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2932433Z   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-24T05:19:51.2932733Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2932737Z
2026-10-24T05:19:51.2932877Z   โš  react(refs): Cannot access refs during render
2026-10-24T05:19:51.2933041Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-24T05:19:51.2933094Z  792 โ”‚   }
2026-10-24T05:19:51.2933197Z  793 โ”‚   const pasteSession = pasteSessionRef.current;
2026-10-24T05:19:51.2933305Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2933467Z      ยท                                   โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T05:19:51.2933520Z  794 โ”‚
2026-10-24T05:19:51.2933568Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2934021Z   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-24T05:19:51.2934303Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T05:19:51.2934306Z
2026-10-24T05:19:51.2934669Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownOption(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T05:19:51.2934794Z      โ•ญโ”€[packages/shared/src/otelEnvironment.ts:146:14]
2026-10-24T05:19:51.2934851Z  145 โ”‚     name,
2026-10-24T05:19:51.2934989Z  146 โ”‚     (raw) => Schema.decodeUnknownOption(OtlpProtocol)(raw.toLowerCase()),
2026-10-24T05:19:51.2935092Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2935213Z  147 โ”‚     `${name} is not http/protobuf or http/json, ${NOT_EXPORTED}`,
2026-10-24T05:19:51.2935262Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2935265Z
2026-10-24T05:19:51.2935444Z   โš  react(static-components): Cannot create components during render
2026-10-24T05:19:51.2935600Z      โ•ญโ”€[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
2026-10-24T05:19:51.2935684Z  196 โ”‚   const { onInput, onResize } = props;
2026-10-24T05:19:51.2935831Z  197 โ”‚   const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
2026-10-24T05:19:51.2936004Z      ยท                                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2936215Z      ยท                                                     โ•ฐโ”€โ”€ The component is created during render here
2026-10-24T05:19:51.2936339Z  198 โ”‚   const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
2026-10-24T05:19:51.2936392Z  199 โ”‚
2026-10-24T05:19:51.2936454Z  200 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2936540Z  201 โ”‚     terminalDebugLog("native:surface", {
2026-10-24T05:19:51.2936623Z  202 โ”‚       terminalKey: props.terminalKey,
2026-10-24T05:19:51.2936698Z  203 โ”‚       native: hasNativeSurface,
2026-10-24T05:19:51.2936827Z  204 โ”‚       hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
2026-10-24T05:19:51.2936911Z  205 โ”‚       bufferLen: props.buffer.length,
2026-10-24T05:19:51.2936993Z  206 โ”‚       isRunning: props.isRunning,
2026-10-24T05:19:51.2937050Z  207 โ”‚     });
2026-10-24T05:19:51.2937204Z  208 โ”‚   }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
2026-10-24T05:19:51.2937289Z  209 โ”‚   const handleNativeInput = useCallback(
2026-10-24T05:19:51.2937401Z  210 โ”‚     (event: NativeSyntheticEvent<TerminalInputEvent>) => {
2026-10-24T05:19:51.2937495Z  211 โ”‚       if (!props.isRunning || props.readOnly) {
2026-10-24T05:19:51.2937554Z  212 โ”‚         return;
2026-10-24T05:19:51.2937608Z  213 โ”‚       }
2026-10-24T05:19:51.2937693Z  214 โ”‚       terminalDebugLog("native:onInput", {
2026-10-24T05:19:51.2937839Z  215 โ”‚         codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
2026-10-24T05:19:51.2937898Z  216 โ”‚       });
2026-10-24T05:19:51.2937980Z  217 โ”‚       onInput(event.nativeEvent.data);
2026-10-24T05:19:51.2938034Z  218 โ”‚     },
2026-10-24T05:19:51.2938132Z  219 โ”‚     [onInput, props.isRunning, props.readOnly],
2026-10-24T05:19:51.2938186Z  220 โ”‚   );
2026-10-24T05:19:51.2938272Z  221 โ”‚   const handleNativeResize = useCallback(
2026-10-24T05:19:51.2938384Z  222 โ”‚     (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
2026-10-24T05:19:51.2938447Z  223 โ”‚       onResize({
2026-10-24T05:19:51.2938527Z  224 โ”‚         cols: event.nativeEvent.cols,
2026-10-24T05:19:51.2938638Z  225 โ”‚         rows: event.nativeEvent.rows,
2026-10-24T05:19:51.2938694Z  226 โ”‚       });
2026-10-24T05:19:51.2938746Z  227 โ”‚     },
2026-10-24T05:19:51.2938806Z  228 โ”‚     [onResize],
2026-10-24T05:19:51.2938859Z  229 โ”‚   );
2026-10-24T05:19:51.2938909Z  230 โ”‚
2026-10-24T05:19:51.2938988Z  231 โ”‚   if (NativeTerminalSurfaceView) {
2026-10-24T05:19:51.2939045Z  232 โ”‚     return (
2026-10-24T05:19:51.2939121Z  233 โ”‚       <View style={props.style}>
2026-10-24T05:19:51.2939244Z  234 โ”‚         <NativeTerminalSurfaceView
2026-10-24T05:19:51.2939383Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2939543Z      ยท                      โ•ฐโ”€โ”€ This component is created during render
2026-10-24T05:19:51.2939637Z  235 โ”‚           appearanceScheme={themeAppearance}
2026-10-24T05:19:51.2939685Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2939928Z   help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-24T05:19:51.2940238Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T05:19:51.2940241Z
2026-10-24T05:19:51.2940442Z   โš  eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-24T05:19:51.2940605Z     โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-24T05:19:51.2940691Z  24 โ”‚ import * as Schema from "effect/Schema";
2026-10-24T05:19:51.2940805Z  25 โ”‚ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-24T05:19:51.2940884Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2941021Z     ยท                  โ•ฐโ”€โ”€ 'HostProcess' is imported here
2026-10-24T05:19:51.2941070Z  26 โ”‚
2026-10-24T05:19:51.2941122Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2941217Z   help: Consider removing this import.
2026-10-24T05:19:51.2941220Z
2026-10-24T05:19:51.2941486Z   โš  eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2941652Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-24T05:19:51.2941734Z  123 โ”‚     const path = yield* Path.Path;
2026-10-24T05:19:51.2941848Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T05:19:51.2941926Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2942061Z      ยท                 โ•ฐโ”€โ”€ 'serverConfig' is declared here
2026-10-24T05:19:51.2942200Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T05:19:51.2942250Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2942352Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2942354Z
2026-10-24T05:19:51.2942619Z   โš  eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2942779Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-24T05:19:51.2942895Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T05:19:51.2943034Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T05:19:51.2943115Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2943254Z      ยท                  โ•ฐโ”€โ”€ 'serverSettings' is declared here
2026-10-24T05:19:51.2943387Z  126 โ”‚     const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-24T05:19:51.2943438Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2943539Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2943541Z
2026-10-24T05:19:51.2945966Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2946220Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-24T05:19:51.2946305Z  118 โ”‚
2026-10-24T05:19:51.2946370Z  119 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2946442Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2946573Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2946654Z  120 โ”‚     if (orientationSettled) return;
2026-10-24T05:19:51.2946763Z  121 โ”‚     const orientation = getNativeShowcaseOrientation();
2026-10-24T05:19:51.2946835Z  122 โ”‚     if (orientation === null) {
2026-10-24T05:19:51.2946916Z  123 โ”‚       setOrientationSettled(true);
2026-10-24T05:19:51.2947003Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2947175Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2947237Z  124 โ”‚       return;
2026-10-24T05:19:51.2947287Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2947879Z   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-24T05:19:51.2948196Z   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-24T05:19:51.2948199Z
2026-10-24T05:19:51.2948449Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2948629Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:304:7]
2026-10-24T05:19:51.2948710Z  292 โ”‚
2026-10-24T05:19:51.2948773Z  293 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2948849Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2948976Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2949033Z  294 โ”‚     if (
2026-10-24T05:19:51.2949096Z  295 โ”‚       scene === null ||
2026-10-24T05:19:51.2949171Z  296 โ”‚       requestedScene === null ||
2026-10-24T05:19:51.2949246Z  297 โ”‚       scene !== requestedScene ||
2026-10-24T05:19:51.2949309Z  298 โ”‚       !hasFixture ||
2026-10-24T05:19:51.2949381Z  299 โ”‚       !orientationSettled ||
2026-10-24T05:19:51.2949447Z  300 โ”‚       !themeApplied ||
2026-10-24T05:19:51.2949562Z  301 โ”‚       (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-24T05:19:51.2949691Z  302 โ”‚       !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-24T05:19:51.2949745Z  303 โ”‚     ) {
2026-10-24T05:19:51.2949813Z  304 โ”‚       setReadyScene(null);
2026-10-24T05:19:51.2949898Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2950063Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2950125Z  305 โ”‚       return;
2026-10-24T05:19:51.2950176Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2950753Z   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-24T05:19:51.2951067Z   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-24T05:19:51.2951069Z
2026-10-24T05:19:51.2951378Z   โš  eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2951573Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-24T05:19:51.2951640Z  127 โ”‚     let cancelled = false;
2026-10-24T05:19:51.2951728Z  128 โ”‚     let lastOutcome: string | null = null;
2026-10-24T05:19:51.2951803Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2951937Z      ยท              โ•ฐโ”€โ”€ 'lastOutcome' is declared here
2026-10-24T05:19:51.2952110Z  129 โ”‚     void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-24T05:19:51.2952161Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2952263Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2952265Z
2026-10-24T05:19:51.2952470Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2952611Z       โ•ญโ”€[apps/mobile/src/state/use-thread-outbox-drain.ts:1315:5]
2026-10-24T05:19:51.2952691Z  1314 โ”‚     queuedMessagesByThreadKey,
2026-10-24T05:19:51.2952751Z  1315 โ”‚     retryTick,
2026-10-24T05:19:51.2952828Z       ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2952967Z       ยท         โ•ฐโ”€โ”€ Unnecessary dependency `retryTick`
2026-10-24T05:19:51.2953037Z  1316 โ”‚     restoreQueuedMessage,
2026-10-24T05:19:51.2953086Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2953372Z   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-24T05:19:51.2953682Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2953687Z
2026-10-24T05:19:51.2953901Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:19:51.2954032Z       โ•ญโ”€[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-24T05:19:51.2954096Z  1021 โ”‚             instanceId,
2026-10-24T05:19:51.2954235Z  1022 โ”‚             { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-24T05:19:51.2954370Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2954432Z  1023 โ”‚           ]),
2026-10-24T05:19:51.2954482Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2954740Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:19:51.2954743Z
2026-10-24T05:19:51.2954915Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2955039Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-24T05:19:51.2955140Z  820 โ”‚     const resolved = resolveThreadTarget(target);
2026-10-24T05:19:51.2955296Z  821 โ”‚     if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-24T05:19:51.2955413Z      ยท                                                        โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2955578Z      ยท                                                             โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2955655Z  822 โ”‚       return AsyncResult.failure(
2026-10-24T05:19:51.2955706Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2956025Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:19:51.2956340Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2956343Z
2026-10-24T05:19:51.2956503Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2956618Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-24T05:19:51.2956687Z  708 โ”‚     const wokeAt = resolved
2026-10-24T05:19:51.2956820Z  709 โ”‚       ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-24T05:19:51.2956929Z      ยท                                              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2957082Z      ยท                                                   โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2957144Z  710 โ”‚       : null;
2026-10-24T05:19:51.2957199Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2957469Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:19:51.2957752Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2957756Z
2026-10-24T05:19:51.2957969Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:19:51.2958089Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:346:9]
2026-10-24T05:19:51.2958190Z  345 โ”‚       const entry: ProjectSettingsOverrides = {
2026-10-24T05:19:51.2958317Z  346 โ”‚         ...(entries.get(projectId) ?? currentEntries[projectId] ?? {}),
2026-10-24T05:19:51.2958478Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2958538Z  347 โ”‚       };
2026-10-24T05:19:51.2958641Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2958929Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:19:51.2958932Z
2026-10-24T05:19:51.2959142Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in Array.prototype.reduce()
2026-10-24T05:19:51.2959259Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:448:24]
2026-10-24T05:19:51.2959325Z  447 โ”‚   const favorites =
2026-10-24T05:19:51.2959431Z  448 โ”‚     setModelFavorites?.reduce((current, change) => {
2026-10-24T05:19:51.2959515Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:19:51.2959699Z      ยท                           โ•ฐโ”€โ”€ For this reduce
2026-10-24T05:19:51.2959823Z  449 โ”‚       const exists = current.some(
2026-10-24T05:19:51.2959991Z  450 โ”‚         (favorite) => favorite.provider === change.provider && favorite.model === change.model,
2026-10-24T05:19:51.2960045Z  451 โ”‚       );
2026-10-24T05:19:51.2960115Z  452 โ”‚       return change.favorite
2026-10-24T05:19:51.2960175Z  453 โ”‚         ? exists
2026-10-24T05:19:51.2960235Z  454 โ”‚           ? current
2026-10-24T05:19:51.2960366Z  455 โ”‚           : [...current, { provider: change.provider, model: change.model }]
2026-10-24T05:19:51.2960449Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2960564Z      ยท                   โ•ฐโ”€โ”€ From this spread
2026-10-24T05:19:51.2960630Z  456 โ”‚         : current.filter(
2026-10-24T05:19:51.2960678Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2960886Z   help: Consider using `Object.assign()` or `Array.prototype.push()` to mutate the accumulator instead.
2026-10-24T05:19:51.2961040Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T05:19:51.2961043Z
2026-10-24T05:19:51.2961226Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-24T05:19:51.2961340Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:466:3]
2026-10-24T05:19:51.2961397Z  464 โ”‚     null;
2026-10-24T05:19:51.2961510Z  465 โ”‚   let nextModelPreferences = initialModelPreferences;
2026-10-24T05:19:51.2961595Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2961718Z      ยท                 โ•ฐโ”€โ”€ From this accumulator
2026-10-24T05:19:51.2961817Z  466 โ”‚   for (const change of setModelsHidden ?? []) {
2026-10-24T05:19:51.2961882Z      ยท   โ”€โ”ฌโ”€
2026-10-24T05:19:51.2961990Z      ยท    โ•ฐโ”€โ”€ For this loop
2026-10-24T05:19:51.2962125Z  467 โ”‚     const preferences = nextModelPreferences?.[change.provider] ?? {
2026-10-24T05:19:51.2962191Z  468 โ”‚       hiddenModels: [],
2026-10-24T05:19:51.2962257Z  469 โ”‚       modelOrder: [],
2026-10-24T05:19:51.2962311Z  470 โ”‚     };
2026-10-24T05:19:51.2962488Z  471 โ”‚     const hiddenModels = preferences.hiddenModels.filter((model) => model !== change.model);
2026-10-24T05:19:51.2962596Z  472 โ”‚     if (change.hidden) hiddenModels.push(change.model);
2026-10-24T05:19:51.2962667Z  473 โ”‚     nextModelPreferences = {
2026-10-24T05:19:51.2962741Z  474 โ”‚       ...nextModelPreferences,
2026-10-24T05:19:51.2962832Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2962952Z      ยท                  โ•ฐโ”€โ”€ From this spread
2026-10-24T05:19:51.2963067Z  475 โ”‚       [change.provider]: { ...preferences, hiddenModels },
2026-10-24T05:19:51.2963120Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2963270Z   help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-24T05:19:51.2963421Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T05:19:51.2963423Z
2026-10-24T05:19:51.2963620Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T05:19:51.2963732Z     โ•ญโ”€[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-24T05:19:51.2963803Z  28 โ”‚     getPendingThreadOrder();
2026-10-24T05:19:51.2963880Z  29 โ”‚   }, [nowMinute, snoozeWakeTick]);
2026-10-24T05:19:51.2964000Z     ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2964238Z     ยท           โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-24T05:19:51.2964403Z     ยท           โ•ฐโ”€โ”€ Unnecessary dependency `nowMinute`
2026-10-24T05:19:51.2964467Z  30 โ”‚   return pending;
2026-10-24T05:19:51.2964519Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2964803Z   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-24T05:19:51.2965106Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T05:19:51.2965110Z
2026-10-24T05:19:51.2965557Z   โš  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-24T05:19:51.2965696Z      โ•ญโ”€[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-24T05:19:51.2965831Z  180 โ”‚   it("sends a message without the records the wire cannot carry", () => {
2026-10-24T05:19:51.2966012Z  181 โ”‚     const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-24T05:19:51.2966114Z      ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2966178Z  182 โ”‚       version: 1,
2026-10-24T05:19:51.2966227Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2966229Z
2026-10-24T05:19:51.2966422Z   โš  eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-24T05:19:51.2966552Z     โ•ญโ”€[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-24T05:19:51.2966644Z  23 โ”‚ import * as Deferred from "effect/Deferred";
2026-10-24T05:19:51.2966733Z  24 โ”‚ import * as Duration from "effect/Duration";
2026-10-24T05:19:51.2966815Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2966946Z     ยท                 โ•ฐโ”€โ”€ 'Duration' is imported here
2026-10-24T05:19:51.2967033Z  25 โ”‚ import * as Effect from "effect/Effect";
2026-10-24T05:19:51.2967082Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2967179Z   help: Consider removing this import.
2026-10-24T05:19:51.2967181Z
2026-10-24T05:19:51.2967431Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T05:19:51.2967556Z     โ•ญโ”€[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-24T05:19:51.2967662Z  83 โ”‚   const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-24T05:19:51.2967725Z  84 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2967795Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2967924Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T05:19:51.2968009Z  85 โ”‚     if (!actionState.isRunning) return;
2026-10-24T05:19:51.2968077Z  86 โ”‚     setNowMs(Date.now());
2026-10-24T05:19:51.2968145Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T05:19:51.2968306Z     ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T05:19:51.2968428Z  87 โ”‚     const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-24T05:19:51.2968477Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2969094Z   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-24T05:19:51.2969478Z   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-24T05:19:51.2969510Z
2026-10-24T05:19:51.2969726Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:19:51.2969857Z     โ•ญโ”€[apps/mobile/src/state/use-model-option-memory.ts:21:7]
2026-10-24T05:19:51.2969919Z  20 โ”‚     [instanceId]: {
2026-10-24T05:19:51.2969994Z  21 โ”‚       ...(state[instanceId] ?? {}),
2026-10-24T05:19:51.2970092Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2970159Z  22 โ”‚       [model]: options,
2026-10-24T05:19:51.2970208Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2970463Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:19:51.2970473Z
2026-10-24T05:19:51.2970722Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T05:19:51.2970849Z       โ•ญโ”€[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-24T05:19:51.2970902Z  3404 โ”‚
2026-10-24T05:19:51.2971088Z  3405 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-24T05:19:51.2971156Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T05:19:51.2971278Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T05:19:51.2971343Z  3406 โ”‚   Layer.effect(
2026-10-24T05:19:51.2971395Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2971493Z   help: Consider removing this declaration.
2026-10-24T05:19:51.2971496Z
2026-10-24T05:19:51.2971861Z   โš  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-24T05:19:51.2971973Z     โ•ญโ”€[packages/contracts/src/auth.test.ts:17:12]
2026-10-24T05:19:51.2972128Z  16 โ”‚   it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-24T05:19:51.2972289Z  17 โ”‚     expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-24T05:19:51.2972387Z     ยท            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2972451Z  18 โ”‚       "review:write",
2026-10-24T05:19:51.2972500Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2972503Z
2026-10-24T05:19:51.2972856Z   โš  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-24T05:19:51.2972969Z     โ•ญโ”€[packages/contracts/src/auth.test.ts:20:18]
2026-10-24T05:19:51.2973028Z  19 โ”‚     ]);
2026-10-24T05:19:51.2973185Z  20 โ”‚     expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-24T05:19:51.2973286Z     ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2973412Z  21 โ”‚     expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-24T05:19:51.2973461Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2973463Z
2026-10-24T05:19:51.2973813Z   โš  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-24T05:19:51.2973920Z     โ•ญโ”€[packages/contracts/src/auth.test.ts:58:21]
2026-10-24T05:19:51.2974133Z  57 โ”‚   it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-24T05:19:51.2974284Z  58 โ”‚     const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-24T05:19:51.2974387Z     ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2974455Z  59 โ”‚       authenticated: true,
2026-10-24T05:19:51.2974502Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2974505Z
2026-10-24T05:19:51.2974705Z   โš  unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T05:19:51.2974808Z      โ•ญโ”€[packages/contracts/src/rpc.ts:297:8]
2026-10-24T05:19:51.2974873Z  296 โ”‚ } from "./device.ts";
2026-10-24T05:19:51.2974962Z  297 โ”‚ import {} from "./previewAutomation.ts";
2026-10-24T05:19:51.2975030Z      ยท        โ”€โ”€
2026-10-24T05:19:51.2975088Z  298 โ”‚ import {
2026-10-24T05:19:51.2975142Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2975225Z   help: Remove empty braces
2026-10-24T05:19:51.2975234Z
2026-10-24T05:19:51.2975444Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-24T05:19:51.2975544Z       โ•ญโ”€[apps/mobile/src/Stack.tsx:1079:21]
2026-10-24T05:19:51.2975607Z  1078 โ”‚     <Navigator
2026-10-24T05:19:51.2975734Z  1079 โ”‚       screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-24T05:19:51.2975870Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2975951Z  1080 โ”‚       screenOptions={({ route }) =>
2026-10-24T05:19:51.2976003Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2976352Z   help: Move this component definition out of the parent component `AdaptiveRootStack` and pass data as props. If you want to allow component creation in props, set `allowAsProps` option to true.
2026-10-24T05:19:51.2976355Z
2026-10-24T05:19:51.2976525Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2976655Z       โ•ญโ”€[apps/web/src/components/CommandPalette.tsx:1996:20]
2026-10-24T05:19:51.2976769Z  1995 โ”‚         title: inferProjectTitleFromPath(destinationPath),
2026-10-24T05:19:51.2976860Z  1996 โ”‚         createdAt: new Date().toISOString(),
2026-10-24T05:19:51.2976947Z       ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2977085Z       ยท                         โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2977188Z  1997 โ”‚         remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-24T05:19:51.2977237Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2977509Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:19:51.2977851Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2977936Z
2026-10-24T05:19:51.2978136Z   โš  typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T05:19:51.2978256Z     โ•ญโ”€[apps/web/src/contextMenuFallback.test.ts:38:9]
2026-10-24T05:19:51.2978320Z  37 โ”‚   get isConnected() {
2026-10-24T05:19:51.2978408Z  38 โ”‚     let current: FakeElement | null = this;
2026-10-24T05:19:51.2978478Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2978548Z  39 โ”‚     while (current?.parent) {
2026-10-24T05:19:51.2978630Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2978896Z   help: Assigning a variable to this instead of properly using arrow lambdas may be a symptom of pre-ES2015 practices or not managing scope well.
2026-10-24T05:19:51.2978899Z
2026-10-24T05:19:51.2979350Z   โš  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-24T05:19:51.2979475Z     โ•ญโ”€[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-24T05:19:51.2979539Z  38 โ”‚       JSON.stringify(
2026-10-24T05:19:51.2979653Z  39 โ”‚         Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-24T05:19:51.2979745Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2979809Z  40 โ”‚           { name: "a" },
2026-10-24T05:19:51.2979856Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2979860Z
2026-10-24T05:19:51.2980072Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:19:51.2980202Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:114:11]
2026-10-24T05:19:51.2980274Z  113 โ”‚         const declared = {
2026-10-24T05:19:51.2980367Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-24T05:19:51.2980474Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2980576Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-24T05:19:51.2980626Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2980882Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:19:51.2980885Z
2026-10-24T05:19:51.2981095Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:19:51.2981219Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:115:11]
2026-10-24T05:19:51.2981307Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-24T05:19:51.2981413Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-24T05:19:51.2981532Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2981625Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-24T05:19:51.2981679Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2981937Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:19:51.2981940Z
2026-10-24T05:19:51.2982148Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T05:19:51.2982270Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:116:11]
2026-10-24T05:19:51.2982368Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-24T05:19:51.2982461Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-24T05:19:51.2982624Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2982713Z  117 โ”‚         };
2026-10-24T05:19:51.2982763Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2983017Z   help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T05:19:51.2983019Z
2026-10-24T05:19:51.2983292Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T05:19:51.2983457Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:473:19]
2026-10-24T05:19:51.2983520Z  472 โ”‚   onFilters,
2026-10-24T05:19:51.2983585Z  473 โ”‚   authorOptions = [],
2026-10-24T05:19:51.2983662Z      ยท                   โ”€โ”€
2026-10-24T05:19:51.2983733Z  474 โ”‚   labelOptions = [],
2026-10-24T05:19:51.2983785Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2984093Z   help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T05:19:51.2984096Z
2026-10-24T05:19:51.2984366Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T05:19:51.2984528Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:474:18]
2026-10-24T05:19:51.2984593Z  473 โ”‚   authorOptions = [],
2026-10-24T05:19:51.2984655Z  474 โ”‚   labelOptions = [],
2026-10-24T05:19:51.2984729Z      ยท                  โ”€โ”€
2026-10-24T05:19:51.2984791Z  475 โ”‚   optionScope,
2026-10-24T05:19:51.2984839Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2985145Z   help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T05:19:51.2985150Z
2026-10-24T05:19:51.2985356Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:19:51.2985476Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:259:28]
2026-10-24T05:19:51.2985574Z  258 โ”‚   visit(parser.parse(markdown), false, false);
2026-10-24T05:19:51.2985655Z  259 โ”‚   for (const edit of edits.reverse())
2026-10-24T05:19:51.2985747Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2985906Z  260 โ”‚     markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T05:19:51.2985955Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2986211Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:19:51.2986217Z
2026-10-24T05:19:51.2986419Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:19:51.2986538Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:290:28]
2026-10-24T05:19:51.2986616Z  289 โ”‚   visit(parser.parse(markdown));
2026-10-24T05:19:51.2986696Z  290 โ”‚   for (const edit of edits.reverse())
2026-10-24T05:19:51.2986786Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2986944Z  291 โ”‚     markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T05:19:51.2986993Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2987242Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:19:51.2987245Z
2026-10-24T05:19:51.2987501Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T05:19:51.2987645Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:344:38]
2026-10-24T05:19:51.2987721Z  343 โ”‚   visit(parser.parse(markdown));
2026-10-24T05:19:51.2987822Z  344 โ”‚   for (const lineStart of lineStarts.reverse()) {
2026-10-24T05:19:51.2987921Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2988081Z  345 โ”‚     // The header row may be a lazy line without its container markers (`>` or list indent),
2026-10-24T05:19:51.2988130Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2988381Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T05:19:51.2988383Z
2026-10-24T05:19:51.2988603Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2988747Z     โ•ญโ”€[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-24T05:19:51.2988832Z  35 โ”‚       <T3SourceTextRunNativeComponent
2026-10-24T05:19:51.2988894Z  36 โ”‚         key={index}
2026-10-24T05:19:51.2988967Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2989039Z  37 โ”‚         style={flattenedStyle}
2026-10-24T05:19:51.2989088Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2989230Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2989233Z
2026-10-24T05:19:51.2989385Z   โš  react(immutability): This value cannot be modified
2026-10-24T05:19:51.2989536Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-24T05:19:51.2989630Z  53 โ”‚ function usePulseAnimation(pulse: boolean) {
2026-10-24T05:19:51.2989724Z  54 โ”‚   const pulseProgress = useSharedValue(0);
2026-10-24T05:19:51.2989806Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2989944Z     ยท               โ•ฐโ”€โ”€ `pulseProgress` originates here
2026-10-24T05:19:51.2989996Z  55 โ”‚
2026-10-24T05:19:51.2990059Z  56 โ”‚   useEffect(() => {
2026-10-24T05:19:51.2990118Z  57 โ”‚     if (pulse) {
2026-10-24T05:19:51.2990204Z  58 โ”‚       pulseProgress.value = withRepeat(
2026-10-24T05:19:51.2990279Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2990418Z     ยท             โ•ฐโ”€โ”€ `pulseProgress` cannot be modified
2026-10-24T05:19:51.2990483Z  59 โ”‚         withTiming(1, {
2026-10-24T05:19:51.2990533Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2990795Z   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-24T05:19:51.2991096Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T05:19:51.2991099Z
2026-10-24T05:19:51.2991295Z   โš  eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-24T05:19:51.2991382Z     โ•ญโ”€[apps/web/src/types.ts:22:3]
2026-10-24T05:19:51.2991451Z  21 โ”‚   EnvironmentThreadShell,
2026-10-24T05:19:51.2991513Z  22 โ”‚   ThreadRunSummary,
2026-10-24T05:19:51.2991588Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2991724Z     ยท           โ•ฐโ”€โ”€ 'ThreadRunSummary' is imported here
2026-10-24T05:19:51.2991789Z  23 โ”‚   ThreadRuntimeSummary,
2026-10-24T05:19:51.2991839Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2991984Z   help: Consider removing this import.
2026-10-24T05:19:51.2992014Z
2026-10-24T05:19:51.2992264Z   โš  unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-24T05:19:51.2992404Z     โ•ญโ”€[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-24T05:19:51.2992554Z  11 โ”‚       addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-24T05:19:51.2992630Z  12 โ”‚         this.onmessage = listener;
2026-10-24T05:19:51.2992705Z     ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2992758Z  13 โ”‚       }
2026-10-24T05:19:51.2992807Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2993116Z   help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-24T05:19:51.2993118Z
2026-10-24T05:19:51.2993319Z   โš  typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T05:19:51.2993458Z     โ•ญโ”€[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-24T05:19:51.2993522Z  15 โ”‚       constructor() {
2026-10-24T05:19:51.2993584Z  16 โ”‚         source = this;
2026-10-24T05:19:51.2993651Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2993705Z  17 โ”‚       }
2026-10-24T05:19:51.2993754Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2994016Z   help: Assigning a variable to this instead of properly using arrow lambdas may be a symptom of pre-ES2015 practices or not managing scope well.
2026-10-24T05:19:51.2994018Z
2026-10-24T05:19:51.2994243Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T05:19:51.2994405Z      โ•ญโ”€[apps/web/src/components/pullRequest/pullRequestList.logic.ts:265:9]
2026-10-24T05:19:51.2994466Z  264 โ”‚ ): boolean {
2026-10-24T05:19:51.2994612Z  265 โ”‚   const labels = entry.labels.map((label) => label.name.trim().toLowerCase());
2026-10-24T05:19:51.2994772Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2994913Z  266 โ”‚   const holds = (label: string) => labels.includes(label.trim().toLowerCase());
2026-10-24T05:19:51.2994963Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2995036Z   help: Switch to `Set`
2026-10-24T05:19:51.2995039Z
2026-10-24T05:19:51.2995236Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T05:19:51.2995393Z    โ•ญโ”€[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-24T05:19:51.2995465Z  3 โ”‚   AuthProvidersManageScope,
2026-10-24T05:19:51.2995581Z  4 โ”‚   type AuthSessionState,
2026-10-24T05:19:51.2995692Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2995831Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-24T05:19:51.2995895Z  5 โ”‚   type EnvironmentId,
2026-10-24T05:19:51.2995944Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2996039Z   help: Consider removing this import.
2026-10-24T05:19:51.2996042Z
2026-10-24T05:19:51.2996202Z   โš  react(purity): Cannot call impure function during render
2026-10-24T05:19:51.2996344Z      โ•ญโ”€[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-24T05:19:51.2996452Z  177 โ”‚   if (snoozeClockState.shell !== activeThreadShell) {
2026-10-24T05:19:51.2996610Z  178 โ”‚     setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-24T05:19:51.2996733Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2996902Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T05:19:51.2996959Z  179 โ”‚   }
2026-10-24T05:19:51.2997010Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2997279Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T05:19:51.2997566Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T05:19:51.2997568Z
2026-10-24T05:19:51.2997792Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T05:19:51.2997928Z      โ•ญโ”€[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-24T05:19:51.2998053Z  984 โ”‚           const changedBeforeDecline = draftChangedSinceSend();
2026-10-24T05:19:51.2998286Z  985 โ”‚ โ•ญโ”€โ–ถ       const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-24T05:19:51.2998404Z  986 โ”‚ โ”‚           (approval) => approval.requestId,
2026-10-24T05:19:51.2998545Z  987 โ”‚ โ•ฐโ”€โ–ถ       );
2026-10-24T05:19:51.2998748Z  988 โ”‚           const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-24T05:19:51.2998797Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2998872Z   help: Switch to `Set`
2026-10-24T05:19:51.2998874Z
2026-10-24T05:19:51.2999063Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.2999230Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:814:17]
2026-10-24T05:19:51.2999293Z  813 โ”‚               <div
2026-10-24T05:19:51.2999403Z  814 โ”‚                 key={`${index}:${check.name}:${check.url ?? ""}`}
2026-10-24T05:19:51.2999537Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2999698Z  815 โ”‚                 className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
2026-10-24T05:19:51.2999747Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.2999889Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.2999891Z
2026-10-24T05:19:51.3000078Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T05:19:51.3000243Z     โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx:88:15]
2026-10-24T05:19:51.3000363Z  87 โ”‚             <li
2026-10-24T05:19:51.3000490Z  88 โ”‚               key={`${index}:${check.name}`}
2026-10-24T05:19:51.3000597Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T05:19:51.3000740Z  89 โ”‚               className="col-span-full grid grid-cols-subgrid items-center text-xs"
2026-10-24T05:19:51.3000789Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T05:19:51.3000928Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T05:19:51.3000930Z
2026-10-24T05:19:51.3001011Z Found 0 errors and 362 warnings in 5420 files (5.0s, 8 threads)
2026-10-24T05:19:51.3448929Z Post job cleanup.
2026-10-24T05:19:51.4043711Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T05:19:51.4110535Z Post job cleanup.
2026-10-24T05:19:51.4123719Z ##[start-action display=Cache full pnpm store;id=__4bab7eaa-25e8-4ba3-879d-fdaafc70d17b.__actions_cache]
2026-10-24T05:19:51.4432654Z Post job cleanup.
2026-10-24T05:19:51.5091923Z [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /home/runner/_work/t3code/t3code --files-from manifest.txt --use-compress-program zstdmt
2026-10-24T05:19:55.0809439Z Failed to save: Unable to reserve cache with key pnpm-full-v1-Linux-X64-8600a8d4a7fcc9519d421cef0c77201c793c5d8afbbef2897636b5b9305a9b7d, another job may be creating this cache.
2026-10-24T05:19:55.1274346Z ##[end-action id=__4bab7eaa-25e8-4ba3-879d-fdaafc70d17b.__actions_cache;outcome=success;conclusion=success;duration_ms=3715]
2026-10-24T05:19:55.1276157Z ##[start-action display=Cache Vite+;id=__4bab7eaa-25e8-4ba3-879d-fdaafc70d17b.vp_cache]
2026-10-24T05:19:55.1307586Z Post job cleanup.
2026-10-24T05:19:55.1911877Z 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-24T05:19:55.1940800Z ##[end-action id=__4bab7eaa-25e8-4ba3-879d-fdaafc70d17b.vp_cache;outcome=success;conclusion=success;duration_ms=66]
2026-10-24T05:19:55.1980965Z Post job cleanup.
2026-10-24T05:19:55.2369128Z [command]/usr/local/bin/git version
2026-10-24T05:19:55.2396824Z git version 2.55.0
2026-10-24T05:19:55.2413067Z Temporarily overriding HOME='/home/runner/_work/_temp/40860b60-5ecf-4592-8c90-6e69550b84e1' before making global git config changes
2026-10-24T05:19:55.2413508Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T05:19:55.2415764Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T05:19:55.2439972Z Removing SSH command configuration
2026-10-24T05:19:55.2442997Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T05:19:55.2466570Z [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-24T05:19:55.2589602Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T05:19:55.2643766Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T05:19:55.2676323Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T05:19:55.2690007Z ##[group]Run '/job_completed.sh'
2026-10-24T05:19:55.2695804Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T05:19:55.2695971Z env:
2026-10-24T05:19:55.2696081Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 236
2026-10-24T05:19:55.2696227Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 360
2026-10-24T05:19:55.2696363Z   BLACKSMITH_CHECK_RUN_ID: 120788606571
2026-10-24T05:19:55.2696505Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T05:19:55.2696642Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T05:19:55.2696772Z ##[endgroup]
2026-10-24T05:19:55.2766002Z Docker container cache not activated, skipping hash computation.
2026-10-24T05:19:55.3018458Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T05:19:55.3059705Z Cleaning up orphan processes