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