GitHub check
256 KB of 598 KB loaded Download the full log (598 KB)
342 KB of earlier output not loaded
6Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:616:9]
2026-10-24T04:18:54.1926923Z 615 โ };
2026-10-24T04:18:54.1927037Z 616 โ }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-24T04:18:54.1927223Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโฌโโโโโโ โโโโโโฌโโโโโ
2026-10-24T04:18:54.1927453Z ยท โ โ โฐโโ Unnecessary dependency `httpBaseUrl`
2026-10-24T04:18:54.1927643Z ยท โ โฐโโ Unnecessary dependency `attachment.id`
2026-10-24T04:18:54.1927863Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-24T04:18:54.1927973Z 617 โ );
2026-10-24T04:18:54.1928025Z โฐโโโโ
2026-10-24T04:18:54.1928331Z 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-24T04:18:54.1928638Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1928640Z
2026-10-24T04:18:54.1928945Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T04:18:54.1929101Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-24T04:18:54.1929164Z 289 โ return (
2026-10-24T04:18:54.1929302Z 290 โ <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-24T04:18:54.1929424Z ยท โโโโโโโโโโโโโ
2026-10-24T04:18:54.1929494Z 291 โ {props.children}
2026-10-24T04:18:54.1929547Z โฐโโโโ
2026-10-24T04:18:54.1929765Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T04:18:54.1929900Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T04:18:54.1929906Z
2026-10-24T04:18:54.1930139Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T04:18:54.1930292Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-24T04:18:54.1930352Z 653 โ return (
2026-10-24T04:18:54.1930476Z 654 โ <ThreadSettingsSessionContext.Provider value={value}>
2026-10-24T04:18:54.1930590Z ยท โโโโโโโโโโโโโ
2026-10-24T04:18:54.1930659Z 655 โ {props.children}
2026-10-24T04:18:54.1930711Z โฐโโโโ
2026-10-24T04:18:54.1930927Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T04:18:54.1931058Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T04:18:54.1931061Z
2026-10-24T04:18:54.1931290Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T04:18:54.1931445Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-24T04:18:54.1931505Z 1461 โ return (
2026-10-24T04:18:54.1931713Z 1462 โ <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-24T04:18:54.1931952Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1932051Z 1463 โ <ThreadSettingsPickerStack.Navigator
2026-10-24T04:18:54.1932103Z โฐโโโโ
2026-10-24T04:18:54.1932314Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T04:18:54.1932453Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T04:18:54.1932455Z
2026-10-24T04:18:54.1932675Z โ react(purity): Cannot call impure function during render
2026-10-24T04:18:54.1932820Z โญโ[apps/web/src/components/CustomSnoozeDialog.tsx:140:58]
2026-10-24T04:18:54.1932955Z 139 โ {...(weekStartsOn === undefined ? {} : { weekStartsOn })}
2026-10-24T04:18:54.1933106Z 140 โ disabled={{ before: new Date(new Date().setHours(0, 0, 0, 0)) }}
2026-10-24T04:18:54.1933227Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.1933394Z ยท โฐโโ Cannot call impure function
2026-10-24T04:18:54.1933498Z 141 โ onSelect={(selected) => {
2026-10-24T04:18:54.1933549Z โฐโโโโ
2026-10-24T04:18:54.1933823Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T04:18:54.1934150Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T04:18:54.1934157Z
2026-10-24T04:18:54.1934350Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.1934515Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T04:18:54.1934602Z 86 โ
2026-10-24T04:18:54.1934724Z 87 โ const cardCoverage = props.cardCoverage;
2026-10-24T04:18:54.1934892Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.1935038Z ยท โฐโโ `cardCoverage` originates here
2026-10-24T04:18:54.1935154Z 88 โ const barHeightRef = useRef(0);
2026-10-24T04:18:54.1935265Z 89 โ const cardHeightRef = useRef(0);
2026-10-24T04:18:54.1935382Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T04:18:54.1935492Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T04:18:54.1935594Z 92 โ if (!cardCoverage) {
2026-10-24T04:18:54.1935691Z 93 โ return;
2026-10-24T04:18:54.1935774Z 94 โ }
2026-10-24T04:18:54.1935945Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T04:18:54.1936071Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T04:18:54.1936161Z 97 โ return;
2026-10-24T04:18:54.1936241Z 98 โ }
2026-10-24T04:18:54.1936325Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T04:18:54.1936571Z 100 โ cardCoverage.value = coverage;
2026-10-24T04:18:54.1936717Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.1936886Z ยท โฐโโ `cardCoverage` cannot be modified
2026-10-24T04:18:54.1936958Z 101 โ return;
2026-10-24T04:18:54.1937042Z โฐโโโโ
2026-10-24T04:18:54.1937441Z 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-24T04:18:54.1937869Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1937872Z
2026-10-24T04:18:54.1938035Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.1938218Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T04:18:54.1938386Z 89 โ const cardHeightRef = useRef(0);
2026-10-24T04:18:54.1938550Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T04:18:54.1938637Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.1938799Z ยท โฐโโ `cardHeight` originates here
2026-10-24T04:18:54.1938920Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T04:18:54.1939028Z 92 โ if (!cardCoverage) {
2026-10-24T04:18:54.1939102Z 93 โ return;
2026-10-24T04:18:54.1939249Z 94 โ }
2026-10-24T04:18:54.1939423Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T04:18:54.1939554Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T04:18:54.1939623Z 97 โ return;
2026-10-24T04:18:54.1939707Z 98 โ }
2026-10-24T04:18:54.1939817Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T04:18:54.1939930Z 100 โ cardCoverage.value = coverage;
2026-10-24T04:18:54.1940007Z 101 โ return;
2026-10-24T04:18:54.1940089Z 102 โ }
2026-10-24T04:18:54.1940218Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-24T04:18:54.1940331Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T04:18:54.1940437Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-24T04:18:54.1940533Z 106 โ });
2026-10-24T04:18:54.1940635Z 107 โ }, [cardCoverage]);
2026-10-24T04:18:54.1940752Z 108 โ const handleBarLayout = useCallback(
2026-10-24T04:18:54.1940835Z 109 โ (event: LayoutChangeEvent) => {
2026-10-24T04:18:54.1941008Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T04:18:54.1941102Z 111 โ notifyCoverage();
2026-10-24T04:18:54.1941252Z 112 โ },
2026-10-24T04:18:54.1941331Z 113 โ [notifyCoverage],
2026-10-24T04:18:54.1941419Z 114 โ );
2026-10-24T04:18:54.1941537Z 115 โ const handleCardLayout = useCallback(
2026-10-24T04:18:54.1941649Z 116 โ (event: LayoutChangeEvent) => {
2026-10-24T04:18:54.1941784Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T04:18:54.1941916Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T04:18:54.1942040Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.1942211Z ยท โฐโโ `cardHeight` cannot be modified
2026-10-24T04:18:54.1942290Z 119 โ notifyCoverage();
2026-10-24T04:18:54.1942368Z โฐโโโโ
2026-10-24T04:18:54.1942658Z 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-24T04:18:54.1942994Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1942997Z
2026-10-24T04:18:54.1943218Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T04:18:54.1943381Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T04:18:54.1943541Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T04:18:54.1943746Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T04:18:54.1943947Z ยท โโโโฌโโโ
2026-10-24T04:18:54.1944228Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T04:18:54.1944353Z 92 โ if (!cardCoverage) {
2026-10-24T04:18:54.1944483Z 93 โ return;
2026-10-24T04:18:54.1944573Z 94 โ }
2026-10-24T04:18:54.1944733Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T04:18:54.1944847Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T04:18:54.1944931Z 97 โ return;
2026-10-24T04:18:54.1945028Z 98 โ }
2026-10-24T04:18:54.1945122Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T04:18:54.1945231Z 100 โ cardCoverage.value = coverage;
2026-10-24T04:18:54.1945341Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.1945504Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T04:18:54.1945582Z 101 โ return;
2026-10-24T04:18:54.1945661Z โฐโโโโ
2026-10-24T04:18:54.1946021Z 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-24T04:18:54.1946346Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1946349Z
2026-10-24T04:18:54.1946654Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T04:18:54.1946822Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T04:18:54.1946932Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T04:18:54.1947045Z 100 โ cardCoverage.value = coverage;
2026-10-24T04:18:54.1947157Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.1947307Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T04:18:54.1947395Z 101 โ return;
2026-10-24T04:18:54.1947480Z 102 โ }
2026-10-24T04:18:54.1947610Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-24T04:18:54.1947729Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T04:18:54.1947849Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-24T04:18:54.1947936Z 106 โ });
2026-10-24T04:18:54.1948031Z 107 โ }, [cardCoverage]);
2026-10-24T04:18:54.1948124Z 108 โ const handleBarLayout = useCallback(
2026-10-24T04:18:54.1948252Z 109 โ (event: LayoutChangeEvent) => {
2026-10-24T04:18:54.1948384Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1948638Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T04:18:54.1948770Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T04:18:54.1948863Z โฐโโโโ
2026-10-24T04:18:54.1949289Z 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-24T04:18:54.1949616Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1949619Z
2026-10-24T04:18:54.1949878Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T04:18:54.1950109Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T04:18:54.1950244Z 115 โ const handleCardLayout = useCallback(
2026-10-24T04:18:54.1950348Z 116 โ (event: LayoutChangeEvent) => {
2026-10-24T04:18:54.1950481Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1950761Z ยท โฐโโ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-24T04:18:54.1950928Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T04:18:54.1951082Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T04:18:54.1951182Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.1951324Z ยท โฐโโ This modifies `cardHeight`
2026-10-24T04:18:54.1951415Z 119 โ notifyCoverage();
2026-10-24T04:18:54.1951515Z โฐโโโโ
2026-10-24T04:18:54.1951860Z 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-24T04:18:54.1952162Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1952180Z
2026-10-24T04:18:54.1952421Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T04:18:54.1952644Z โญโ[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-24T04:18:54.1952731Z 52 โ
2026-10-24T04:18:54.1952827Z 53 โ for (const {} of [
2026-10-24T04:18:54.1952914Z ยท โโ
2026-10-24T04:18:54.1953002Z 54 โ { healthy: true },
2026-10-24T04:18:54.1953099Z โฐโโโโ
2026-10-24T04:18:54.1953346Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T04:18:54.1953349Z
2026-10-24T04:18:54.1953557Z โ eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-24T04:18:54.1953679Z โญโ[apps/web/src/types.ts:22:3]
2026-10-24T04:18:54.1953777Z 21 โ EnvironmentThreadShell,
2026-10-24T04:18:54.1953876Z 22 โ ThreadRunSummary,
2026-10-24T04:18:54.1953964Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.1954177Z ยท โฐโโ 'ThreadRunSummary' is imported here
2026-10-24T04:18:54.1954274Z 23 โ ThreadRuntimeSummary,
2026-10-24T04:18:54.1954377Z โฐโโโโ
2026-10-24T04:18:54.1954484Z help: Consider removing this import.
2026-10-24T04:18:54.1954487Z
2026-10-24T04:18:54.1954709Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.1954936Z โญโ[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T04:18:54.1955020Z 81 โ },
2026-10-24T04:18:54.1955101Z 82 โ [draftKey],
2026-10-24T04:18:54.1955197Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.1955359Z ยท โฐโโ Unnecessary dependency `draftKey`
2026-10-24T04:18:54.1955433Z 83 โ );
2026-10-24T04:18:54.1955503Z โฐโโโโ
2026-10-24T04:18:54.1955876Z 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-24T04:18:54.1956273Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1956276Z
2026-10-24T04:18:54.1956553Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.1956721Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-24T04:18:54.1956903Z 66 โ const { id: attachmentId, fileUri } = attachment;
2026-10-24T04:18:54.1956998Z 67 โ useEffect(() => {
2026-10-24T04:18:54.1957093Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.1957239Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.1957323Z 68 โ setUri(null);
2026-10-24T04:18:54.1957435Z ยท โโโโฌโโ
2026-10-24T04:18:54.1957689Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.1957781Z 69 โ setError(null);
2026-10-24T04:18:54.1957837Z โฐโโโโ
2026-10-24T04:18:54.1958462Z 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-24T04:18:54.1958798Z 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-24T04:18:54.1958801Z
2026-10-24T04:18:54.1959027Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.1959179Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-24T04:18:54.1959256Z 90 โ };
2026-10-24T04:18:54.1959368Z 91 โ }, [attachmentId, fileUri]);
2026-10-24T04:18:54.1959509Z ยท โโโโโโโฌโโโโโ โโโโฌโโโ
2026-10-24T04:18:54.1959711Z ยท โ โฐโโ Unnecessary dependency `fileUri`
2026-10-24T04:18:54.1959856Z ยท โฐโโ Unnecessary dependency `attachmentId`
2026-10-24T04:18:54.1960034Z 92 โ const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-24T04:18:54.1960113Z โฐโโโโ
2026-10-24T04:18:54.1960478Z 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-24T04:18:54.1960860Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1960863Z
2026-10-24T04:18:54.1961088Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T04:18:54.1961385Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-24T04:18:54.1961478Z 212 โ useEffect(() => {
2026-10-24T04:18:54.1961620Z 213 โ if (!isFocused && hasSource) props.onRequestClose();
2026-10-24T04:18:54.1961721Z ยท โโโฌโโ
2026-10-24T04:18:54.1961908Z ยท โฐโโ Missing dependency `props`
2026-10-24T04:18:54.1962044Z 214 โ }, [isFocused, hasSource, props.onRequestClose]);
2026-10-24T04:18:54.1962189Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.1962427Z ยท โฐโโ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-24T04:18:54.1962520Z 215 โ const { source } = props;
2026-10-24T04:18:54.1962604Z โฐโโโโ
2026-10-24T04:18:54.1963039Z 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-24T04:18:54.1963363Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1963365Z
2026-10-24T04:18:54.1963560Z โ react(purity): Cannot call impure function during render
2026-10-24T04:18:54.1963724Z โญโ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:372:47]
2026-10-24T04:18:54.1963886Z 371 โ const { open, onOpenChange, onSnooze, timestampFormat } = props;
2026-10-24T04:18:54.1964081Z 372 โ const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
2026-10-24T04:18:54.1964241Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.1964416Z ยท โฐโโ Cannot call impure function
2026-10-24T04:18:54.1964577Z 373 โ return (
2026-10-24T04:18:54.1964661Z โฐโโโโ
2026-10-24T04:18:54.1964962Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T04:18:54.1965251Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T04:18:54.1965279Z
2026-10-24T04:18:54.1965457Z โ react(purity): Cannot call impure function during render
2026-10-24T04:18:54.1965633Z โญโ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:853:39]
2026-10-24T04:18:54.1965754Z 852 โ if (snoozeGateClock.thread !== thread) {
2026-10-24T04:18:54.1965900Z 853 โ setSnoozeGateClock({ thread, now: new Date().toISOString() });
2026-10-24T04:18:54.1966024Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.1966213Z ยท โฐโโ Cannot call impure function
2026-10-24T04:18:54.1966294Z 854 โ }
2026-10-24T04:18:54.1966429Z โฐโโโโ
2026-10-24T04:18:54.1966764Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T04:18:54.1967095Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T04:18:54.1967097Z
2026-10-24T04:18:54.1967330Z โ unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-24T04:18:54.1967511Z โญโ[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-24T04:18:54.1967726Z 193 โ const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-24T04:18:54.1967836Z 194 โ const codes = new Array<number>(count);
2026-10-24T04:18:54.1967981Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1968113Z 195 โ for (let index = 0; index < count; index += 1) {
2026-10-24T04:18:54.1968196Z โฐโโโโ
2026-10-24T04:18:54.1968601Z 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-24T04:18:54.1968604Z
2026-10-24T04:18:54.1968872Z โ unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T04:18:54.1969031Z โญโ[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-24T04:18:54.1969176Z 984 โ const changedBeforeDecline = draftChangedSinceSend();
2026-10-24T04:18:54.1969441Z 985 โ โญโโถ const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-24T04:18:54.1969583Z 986 โ โ (approval) => approval.requestId,
2026-10-24T04:18:54.1969746Z 987 โ โฐโโถ );
2026-10-24T04:18:54.1969909Z 988 โ const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-24T04:18:54.1969991Z โฐโโโโ
2026-10-24T04:18:54.1970074Z help: Switch to `Set`
2026-10-24T04:18:54.1970077Z
2026-10-24T04:18:54.1970275Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.1970459Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-24T04:18:54.1970608Z 35 โ
2026-10-24T04:18:54.1970753Z 36 โ const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-24T04:18:54.1970879Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.1971062Z ยท โฐโโ `inspectorProgress` originates here
2026-10-24T04:18:54.1971187Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T04:18:54.1971325Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T04:18:54.1971397Z 39 โ
2026-10-24T04:18:54.1971520Z 40 โ const onClosed = props.onClosed;
2026-10-24T04:18:54.1971613Z 41 โ useEffect(() => {
2026-10-24T04:18:54.1971717Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T04:18:54.1971827Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.1972002Z ยท โฐโโ `inspectorProgress` cannot be modified
2026-10-24T04:18:54.1972116Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T04:18:54.1972184Z โฐโโโโ
2026-10-24T04:18:54.1972530Z 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-24T04:18:54.1972916Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1976559Z
2026-10-24T04:18:54.1976743Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.1976900Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-24T04:18:54.1976991Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T04:18:54.1977117Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T04:18:54.1977207Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.1977368Z ยท โฐโโ `renderedContentWidth` originates here
2026-10-24T04:18:54.1977424Z 39 โ
2026-10-24T04:18:54.1977503Z 40 โ const onClosed = props.onClosed;
2026-10-24T04:18:54.1977564Z 41 โ useEffect(() => {
2026-10-24T04:18:54.1977650Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T04:18:54.1977723Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T04:18:54.1977792Z 44 โ WORKSPACE_PANE_TIMING,
2026-10-24T04:18:54.1977854Z 45 โ (finished) => {
2026-10-24T04:18:54.1977990Z 46 โ if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-24T04:18:54.1978062Z 47 โ runOnJS(onClosed)();
2026-10-24T04:18:54.1978116Z 48 โ }
2026-10-24T04:18:54.1978168Z 49 โ },
2026-10-24T04:18:54.1978220Z 50 โ );
2026-10-24T04:18:54.1978346Z 51 โ const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-24T04:18:54.1978430Z 52 โ renderedInspectorWidth.set(
2026-10-24T04:18:54.1978572Z 53 โ resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-24T04:18:54.1978625Z 54 โ );
2026-10-24T04:18:54.1978677Z 55 โ }, [
2026-10-24T04:18:54.1978742Z 56 โ inspectorProgress,
2026-10-24T04:18:54.1978805Z 57 โ inspectorVisible,
2026-10-24T04:18:54.1978868Z 58 โ inspectorWidth,
2026-10-24T04:18:54.1978926Z 59 โ onClosed,
2026-10-24T04:18:54.1978993Z 60 โ renderedInspectorWidth,
2026-10-24T04:18:54.1979050Z 61 โ resizing,
2026-10-24T04:18:54.1979102Z 62 โ ]);
2026-10-24T04:18:54.1979151Z 63 โ
2026-10-24T04:18:54.1979209Z 64 โ useEffect(() => {
2026-10-24T04:18:54.1979299Z 65 โ const targetWidth = inspectorWidth ?? 0;
2026-10-24T04:18:54.1979381Z 66 โ if (!inspectorVisible || resizing) {
2026-10-24T04:18:54.1979481Z 67 โ renderedContentWidth.value = targetWidth;
2026-10-24T04:18:54.1979570Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.1979725Z ยท โฐโโ `renderedContentWidth` cannot be modified
2026-10-24T04:18:54.1979782Z 68 โ return;
2026-10-24T04:18:54.1979830Z โฐโโโโ
2026-10-24T04:18:54.1980087Z 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-24T04:18:54.1980382Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.1980385Z
2026-10-24T04:18:54.1980573Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T04:18:54.1980820Z โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-24T04:18:54.1981012Z 266 โ {record.elements?.map((element, index) => (
2026-10-24T04:18:54.1981173Z 267 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T04:18:54.1981325Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1981399Z 268 โ <ContextField
2026-10-24T04:18:54.1981447Z โฐโโโโ
2026-10-24T04:18:54.1981602Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T04:18:54.1981606Z
2026-10-24T04:18:54.1981856Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.1982010Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:215:7]
2026-10-24T04:18:54.1982061Z 214 โ }
2026-10-24T04:18:54.1982134Z 215 โ }, [wrappedRender]);
2026-10-24T04:18:54.1982214Z ยท โโโโโโโฌโโโโโโ
2026-10-24T04:18:54.1982357Z ยท โฐโโ Unnecessary dependency `wrappedRender`
2026-10-24T04:18:54.1982406Z 216 โ
2026-10-24T04:18:54.1982454Z โฐโโโโ
2026-10-24T04:18:54.1982738Z 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-24T04:18:54.1983036Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1983038Z
2026-10-24T04:18:54.1983270Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T04:18:54.1983429Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:817:35]
2026-10-24T04:18:54.1983487Z 816 โ >
2026-10-24T04:18:54.1983598Z 817 โ <AdaptiveWorkspaceContext value={contextValue}>
2026-10-24T04:18:54.1983709Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1983798Z 818 โ <NativeWorkspaceInspectorContext
2026-10-24T04:18:54.1983849Z โฐโโโโ
2026-10-24T04:18:54.1984104Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T04:18:54.1984239Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T04:18:54.1984241Z
2026-10-24T04:18:54.1984466Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T04:18:54.1984625Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:832:42]
2026-10-24T04:18:54.1984681Z 831 โ >
2026-10-24T04:18:54.1984803Z 832 โ <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-24T04:18:54.1984920Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1985017Z 833 โ <WindowHingeContext value={windowHinge}>
2026-10-24T04:18:54.1985069Z โฐโโโโ
2026-10-24T04:18:54.1985280Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T04:18:54.1985409Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T04:18:54.1985414Z
2026-10-24T04:18:54.1985663Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.1985845Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T04:18:54.1986003Z 57 โ
2026-10-24T04:18:54.1986067Z 58 โ useEffect(() => {
2026-10-24T04:18:54.1986134Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.1986259Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.1986349Z 59 โ const controller = new AbortController();
2026-10-24T04:18:54.1986420Z 60 โ setLoadState("pending");
2026-10-24T04:18:54.1986492Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.1986705Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.1986875Z 61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T04:18:54.1986924Z โฐโโโโ
2026-10-24T04:18:54.1987506Z 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-24T04:18:54.1987819Z 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-24T04:18:54.1987822Z
2026-10-24T04:18:54.1988013Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.1988142Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T04:18:54.1988221Z 70 โ return () => controller.abort();
2026-10-24T04:18:54.1988311Z 71 โ }, [player, props.playRequested, attempt]);
2026-10-24T04:18:54.1988482Z ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
2026-10-24T04:18:54.1988705Z ยท โ โ โฐโโ Unnecessary dependency `attempt`
2026-10-24T04:18:54.1988896Z ยท โ โฐโโ Unnecessary dependency `props.playRequested`
2026-10-24T04:18:54.1989027Z ยท โฐโโ Unnecessary dependency `player_0`
2026-10-24T04:18:54.1989077Z 72 โ
2026-10-24T04:18:54.1989126Z โฐโโโโ
2026-10-24T04:18:54.1989409Z 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-24T04:18:54.1989756Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1989800Z
2026-10-24T04:18:54.1989952Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.1990098Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T04:18:54.1990273Z 151 โ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T04:18:54.1990350Z 152 โ {props.children(open)}
2026-10-24T04:18:54.1990435Z ยท โโโฌโ
2026-10-24T04:18:54.1990661Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.1990725Z 153 โ </View>
2026-10-24T04:18:54.1990776Z โฐโโโโ
2026-10-24T04:18:54.1991229Z 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-24T04:18:54.1991513Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.1991516Z
2026-10-24T04:18:54.1991705Z โ react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T04:18:54.1991850Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T04:18:54.1991927Z 139 โ if (action.id !== undefined) {
2026-10-24T04:18:54.1992005Z 140 โ props.onPressAction?.({
2026-10-24T04:18:54.1992074Z ยท โโโฌโโ
2026-10-24T04:18:54.1992203Z ยท โฐโโ Missing dependency `props`
2026-10-24T04:18:54.1992293Z 141 โ nativeEvent: { event: action.id },
2026-10-24T04:18:54.1992433Z 142 โ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T04:18:54.1992486Z 143 โ }
2026-10-24T04:18:54.1992541Z 144 โ },
2026-10-24T04:18:54.1992618Z 145 โ [close, props.onPressAction],
2026-10-24T04:18:54.1992712Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.1992915Z ยท โฐโโ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T04:18:54.1992968Z 146 โ );
2026-10-24T04:18:54.1993016Z โฐโโโโ
2026-10-24T04:18:54.1993480Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI. Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T04:18:54.1993781Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.1993783Z
2026-10-24T04:18:54.1994065Z โ eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
2026-10-24T04:18:54.1994215Z โญโ[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
2026-10-24T04:18:54.1994266Z 1619 โ
2026-10-24T04:18:54.1994470Z 1620 โ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
2026-10-24T04:18:54.1994584Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.1994827Z ยท โฐโโ 'promptResponseHasMissingXAiStopReason' is declared here
2026-10-24T04:18:54.1994960Z 1621 โ const meta = response._meta;
2026-10-24T04:18:54.1995012Z โฐโโโโ
2026-10-24T04:18:54.1995114Z help: Consider removing this declaration.
2026-10-24T04:18:54.1995117Z
2026-10-24T04:18:54.1995569Z โ 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-24T04:18:54.1995800Z โญโ[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
2026-10-24T04:18:54.1995876Z 222 โ let idlePasses = 0;
2026-10-24T04:18:54.1996015Z 223 โ โญโโถ for (;;) {
2026-10-24T04:18:54.1996151Z 224 โ โ yield* Effect.promise(() => Promise.resolve());
2026-10-24T04:18:54.1996294Z 225 โ โ const pending = backgroundRuntime.pending.shift();
2026-10-24T04:18:54.1996384Z 226 โ โ if (!pending) {
2026-10-24T04:18:54.1996476Z 227 โ โ idlePasses++;
2026-10-24T04:18:54.1996578Z 228 โ โ if (idlePasses >= 3) {
2026-10-24T04:18:54.1996661Z 229 โ โ return;
2026-10-24T04:18:54.1996735Z 230 โ โ }
2026-10-24T04:18:54.1996819Z 231 โ โ continue;
2026-10-24T04:18:54.1996892Z 232 โ โ }
2026-10-24T04:18:54.1996982Z 233 โ โ idlePasses = 0;
2026-10-24T04:18:54.1997098Z 234 โ โ const exit = yield* Effect.exit(
2026-10-24T04:18:54.1997306Z 235 โ โ pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-24T04:18:54.1997381Z 236 โ โ );
2026-10-24T04:18:54.1997486Z 237 โ โ yield* Effect.sync(() => {
2026-10-24T04:18:54.1997585Z 238 โ โ pending.resolve(exit);
2026-10-24T04:18:54.1997660Z 239 โ โ });
2026-10-24T04:18:54.1997785Z 240 โ โฐโโถ }
2026-10-24T04:18:54.1997840Z 241 โ },
2026-10-24T04:18:54.1997889Z โฐโโโโ
2026-10-24T04:18:54.1997891Z
2026-10-24T04:18:54.1998142Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.1998273Z โญโ[packages/provider-grok/src/server/adapter.ts:408:7]
2026-10-24T04:18:54.1998327Z 407 โ
2026-10-24T04:18:54.1998393Z 408 โ const layer: Layer.Layer<
2026-10-24T04:18:54.1998462Z ยท โโโฌโโ
2026-10-24T04:18:54.1998580Z ยท โฐโโ 'layer' is declared here
2026-10-24T04:18:54.1998667Z 409 โ ProviderAdapter.ProviderAdapterV2,
2026-10-24T04:18:54.1998716Z โฐโโโโ
2026-10-24T04:18:54.1998815Z help: Consider removing this declaration.
2026-10-24T04:18:54.1998817Z
2026-10-24T04:18:54.1999065Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.1999229Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-24T04:18:54.1999279Z 638 โ
2026-10-24T04:18:54.1999396Z 639 โ useEffect(() => {
2026-10-24T04:18:54.1999524Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.1999651Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.1999757Z 640 โ if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-24T04:18:54.1999817Z 641 โ return;
2026-10-24T04:18:54.1999870Z 642 โ }
2026-10-24T04:18:54.1999942Z 643 โ setPendingLaunchEntry({
2026-10-24T04:18:54.2000027Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T04:18:54.2000240Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2000330Z 644 โ key: launchTargetKey,
2026-10-24T04:18:54.2000380Z โฐโโโโ
2026-10-24T04:18:54.2000963Z 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-24T04:18:54.2001276Z 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-24T04:18:54.2001279Z
2026-10-24T04:18:54.2001526Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2001687Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-24T04:18:54.2001739Z 648 โ
2026-10-24T04:18:54.2001800Z 649 โ useEffect(() => {
2026-10-24T04:18:54.2001868Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2001995Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2002109Z 650 โ if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-24T04:18:54.2002168Z 651 โ return;
2026-10-24T04:18:54.2002222Z 652 โ }
2026-10-24T04:18:54.2002300Z 653 โ setInitialAttachGridEntry({
2026-10-24T04:18:54.2002388Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T04:18:54.2002554Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2002624Z 654 โ key: launchTargetKey,
2026-10-24T04:18:54.2002673Z โฐโโโโ
2026-10-24T04:18:54.2003263Z 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-24T04:18:54.2003574Z 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-24T04:18:54.2003576Z
2026-10-24T04:18:54.2003821Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2003981Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-24T04:18:54.2004053Z 743 โ
2026-10-24T04:18:54.2004116Z 744 โ useEffect(() => {
2026-10-24T04:18:54.2004206Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2004328Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2004475Z 745 โ if (!routeEnvironmentId || !routeThreadId) {
2026-10-24T04:18:54.2004598Z 746 โ setLastGridSize({
2026-10-24T04:18:54.2004679Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2004842Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2004921Z 747 โ cols: DEFAULT_TERMINAL_COLS,
2026-10-24T04:18:54.2004969Z โฐโโโโ
2026-10-24T04:18:54.2005629Z 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-24T04:18:54.2005942Z 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-24T04:18:54.2005947Z
2026-10-24T04:18:54.2006141Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2006305Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-24T04:18:54.2006357Z 537 โ });
2026-10-24T04:18:54.2006476Z 538 โ }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-24T04:18:54.2006582Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T04:18:54.2006817Z ยท โฐโโ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-24T04:18:54.2006975Z 539 โ const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-24T04:18:54.2007022Z โฐโโโโ
2026-10-24T04:18:54.2007311Z 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-24T04:18:54.2007611Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2007613Z
2026-10-24T04:18:54.2007805Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2007964Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-24T04:18:54.2008057Z 708 โ sentInitialInputKeyRef.current = null;
2026-10-24T04:18:54.2008122Z 709 โ }, [terminalKey]);
2026-10-24T04:18:54.2008197Z ยท โโโโโโฌโโโโโ
2026-10-24T04:18:54.2008339Z ยท โฐโโ Unnecessary dependency `terminalKey`
2026-10-24T04:18:54.2008393Z 710 โ
2026-10-24T04:18:54.2008441Z โฐโโโโ
2026-10-24T04:18:54.2008721Z 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-24T04:18:54.2009017Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2009021Z
2026-10-24T04:18:54.2009210Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2009370Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-24T04:18:54.2009424Z 799 โ };
2026-10-24T04:18:54.2009596Z 800 โ }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-24T04:18:54.2009815Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโฌโโโโโ
2026-10-24T04:18:54.2010096Z ยท โ โฐโโ Unnecessary dependency `terminalKey`
2026-10-24T04:18:54.2010296Z ยท โฐโโ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-24T04:18:54.2010348Z 801 โ
2026-10-24T04:18:54.2010395Z โฐโโโโ
2026-10-24T04:18:54.2010749Z 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-24T04:18:54.2011052Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2011058Z
2026-10-24T04:18:54.2011198Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2011360Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-24T04:18:54.2011412Z 792 โ }
2026-10-24T04:18:54.2011515Z 793 โ const pasteSession = pasteSessionRef.current;
2026-10-24T04:18:54.2011624Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T04:18:54.2011783Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2011832Z 794 โ
2026-10-24T04:18:54.2011881Z โฐโโโโ
2026-10-24T04:18:54.2012342Z 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-24T04:18:54.2012626Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2012628Z
2026-10-24T04:18:54.2012817Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T04:18:54.2012968Z โญโ[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-24T04:18:54.2013033Z 71 โ <Pressable
2026-10-24T04:18:54.2013099Z 72 โ key={index}
2026-10-24T04:18:54.2013183Z ยท โโโโโโโโโโโ
2026-10-24T04:18:54.2013264Z 73 โ accessibilityRole="button"
2026-10-24T04:18:54.2013314Z โฐโโโโ
2026-10-24T04:18:54.2013511Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T04:18:54.2013550Z
2026-10-24T04:18:54.2013729Z โ react(purity): Cannot call impure function during render
2026-10-24T04:18:54.2013855Z โญโ[apps/web/src/components/CommandPalette.tsx:1996:20]
2026-10-24T04:18:54.2013971Z 1995 โ title: inferProjectTitleFromPath(destinationPath),
2026-10-24T04:18:54.2014093Z 1996 โ createdAt: new Date().toISOString(),
2026-10-24T04:18:54.2014181Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2014376Z ยท โฐโโ Cannot call impure function
2026-10-24T04:18:54.2014493Z 1997 โ remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-24T04:18:54.2014544Z โฐโโโโ
2026-10-24T04:18:54.2014820Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T04:18:54.2015107Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T04:18:54.2015110Z
2026-10-24T04:18:54.2015359Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2015528Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:60:5]
2026-10-24T04:18:54.2015579Z 55 โ
2026-10-24T04:18:54.2015641Z 56 โ useEffect(() => {
2026-10-24T04:18:54.2015711Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2015834Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2015903Z 57 โ scheduler.reset();
2026-10-24T04:18:54.2015999Z 58 โ highlightedRowIdsRef.current = new Set();
2026-10-24T04:18:54.2016083Z 59 โ visibleChunkIndexRef.current = 0;
2026-10-24T04:18:54.2016197Z 60 โ setVisibleRange({ firstRowIndex: 0, lastRowIndex: 80 });
2026-10-24T04:18:54.2016276Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2016437Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2016707Z 61 โ setTokensPatchJson(createEmptyTokenPatch(resetKey));
2026-10-24T04:18:54.2016762Z โฐโโโโ
2026-10-24T04:18:54.2017344Z 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-24T04:18:54.2017657Z 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-24T04:18:54.2017660Z
2026-10-24T04:18:54.2017853Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2018020Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
2026-10-24T04:18:54.2018098Z 62 โ return () => scheduler.cancel();
2026-10-24T04:18:54.2018198Z 63 โ }, [enabled, resetKey, rows.length, scheduler]);
2026-10-24T04:18:54.2018319Z ยท โโโโฌโโโ โโโโโโฌโโโโโ
2026-10-24T04:18:54.2018504Z ยท โ โฐโโ Unnecessary dependency `rows.length`
2026-10-24T04:18:54.2018707Z ยท โฐโโ Unnecessary dependency `enabled`
2026-10-24T04:18:54.2018822Z 64 โ
2026-10-24T04:18:54.2018869Z โฐโโโโ
2026-10-24T04:18:54.2019152Z 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-24T04:18:54.2019458Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2019461Z
2026-10-24T04:18:54.2019706Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T04:18:54.2019863Z โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-24T04:18:54.2019960Z 99 โ const startEditor = startScheduledTaskEditor;
2026-10-24T04:18:54.2020142Z 100 โ const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-24T04:18:54.2020284Z ยท โโโโโโฌโโโโโ
2026-10-24T04:18:54.2020479Z ยท โฐโโ Unnecessary dependency `startEditor`
2026-10-24T04:18:54.2020555Z 101 โ const readEditor = useCallback(
2026-10-24T04:18:54.2020605Z โฐโโโโ
2026-10-24T04:18:54.2020907Z 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-24T04:18:54.2021214Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2021219Z
2026-10-24T04:18:54.2021392Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T04:18:54.2021544Z โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-24T04:18:54.2021607Z 120 โ setEditor,
2026-10-24T04:18:54.2021669Z 121 โ startEditor,
2026-10-24T04:18:54.2021745Z ยท โโโโโโฌโโโโโ
2026-10-24T04:18:54.2021882Z ยท โฐโโ Unnecessary dependency `startEditor`
2026-10-24T04:18:54.2021943Z 122 โ hasChanges,
2026-10-24T04:18:54.2021991Z โฐโโโโ
2026-10-24T04:18:54.2022290Z 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-24T04:18:54.2022593Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2022600Z
2026-10-24T04:18:54.2022747Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.2022909Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-24T04:18:54.2022962Z 90 โ }) {
2026-10-24T04:18:54.2023069Z 91 โ const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-24T04:18:54.2023141Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.2023269Z ยท โฐโโ `rotation` originates here
2026-10-24T04:18:54.2023336Z 92 โ useLayoutEffect(() => {
2026-10-24T04:18:54.2023471Z 93 โ rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-24T04:18:54.2023592Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.2023776Z ยท โฐโโ `rotation` cannot be modified
2026-10-24T04:18:54.2023850Z 94 โ }, [props.hidden, rotation]);
2026-10-24T04:18:54.2023898Z โฐโโโโ
2026-10-24T04:18:54.2024195Z 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-24T04:18:54.2024568Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2024570Z
2026-10-24T04:18:54.2024722Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.2024886Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-24T04:18:54.2024980Z 266 โ const variant = props.variant ?? "plain";
2026-10-24T04:18:54.2025112Z 267 โ const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-24T04:18:54.2025198Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.2025341Z ยท โฐโโ `loadingVisibility` originates here
2026-10-24T04:18:54.2025407Z 268 โ useLayoutEffect(() => {
2026-10-24T04:18:54.2025562Z 269 โ loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-24T04:18:54.2025640Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.2025782Z ยท โฐโโ `loadingVisibility` cannot be modified
2026-10-24T04:18:54.2025869Z 270 โ }, [loadingVisibility, props.loading]);
2026-10-24T04:18:54.2025917Z โฐโโโโ
2026-10-24T04:18:54.2026178Z 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-24T04:18:54.2026473Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2026475Z
2026-10-24T04:18:54.2026623Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.2026785Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-24T04:18:54.2026838Z 325 โ }) {
2026-10-24T04:18:54.2026991Z 326 โ const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-24T04:18:54.2027077Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2027223Z ยท โฐโโ `recordingVisibility` originates here
2026-10-24T04:18:54.2027296Z 327 โ useLayoutEffect(() => {
2026-10-24T04:18:54.2027480Z 328 โ recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-24T04:18:54.2027563Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2027708Z ยท โฐโโ `recordingVisibility` cannot be modified
2026-10-24T04:18:54.2027796Z 329 โ }, [props.phase, recordingVisibility]);
2026-10-24T04:18:54.2027846Z โฐโโโโ
2026-10-24T04:18:54.2028099Z 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-24T04:18:54.2028390Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2028393Z
2026-10-24T04:18:54.2028586Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2028804Z โญโ[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-24T04:18:54.2028885Z 26 โ const latestInput = useRef(input);
2026-10-24T04:18:54.2028958Z 27 โ latestInput.current = input;
2026-10-24T04:18:54.2029067Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T04:18:54.2029244Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T04:18:54.2029387Z ยท โฐโโ This value is a ref
2026-10-24T04:18:54.2029495Z 28 โ const mounted = useRef(true);
2026-10-24T04:18:54.2029544Z โฐโโโโ
2026-10-24T04:18:54.2030002Z 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-24T04:18:54.2030290Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2030293Z
2026-10-24T04:18:54.2030443Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.2030600Z โญโ[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-24T04:18:54.2030700Z 65 โ const [expanded, setExpanded] = useState(false);
2026-10-24T04:18:54.2030783Z 66 โ const progress = useSharedValue(0);
2026-10-24T04:18:54.2030855Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.2030979Z ยท โฐโโ `progress` originates here
2026-10-24T04:18:54.2031047Z 67 โ useEffect(() => {
2026-10-24T04:18:54.2031168Z 68 โ progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-24T04:18:54.2031236Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.2031364Z ยท โฐโโ `progress` cannot be modified
2026-10-24T04:18:54.2031432Z 69 โ }, [expanded, progress]);
2026-10-24T04:18:54.2031481Z โฐโโโโ
2026-10-24T04:18:54.2031734Z 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-24T04:18:54.2032026Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2032030Z
2026-10-24T04:18:54.2032173Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2032330Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-24T04:18:54.2032483Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T04:18:54.2032603Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T04:18:54.2032718Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T04:18:54.2032884Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2032999Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T04:18:54.2033050Z โฐโโโโ
2026-10-24T04:18:54.2033549Z 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-24T04:18:54.2033886Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2033888Z
2026-10-24T04:18:54.2034056Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2034209Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-24T04:18:54.2034260Z 125 โ
2026-10-24T04:18:54.2034378Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T04:18:54.2034513Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.2034668Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2034772Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T04:18:54.2034823Z โฐโโโโ
2026-10-24T04:18:54.2035267Z 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-24T04:18:54.2035545Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2035548Z
2026-10-24T04:18:54.2035685Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2035835Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-24T04:18:54.2035886Z 125 โ
2026-10-24T04:18:54.2035989Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T04:18:54.2036077Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2036219Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2036316Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T04:18:54.2036366Z โฐโโโโ
2026-10-24T04:18:54.2036814Z 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-24T04:18:54.2037093Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2037095Z
2026-10-24T04:18:54.2037232Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2037437Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-24T04:18:54.2037540Z 125 โ
2026-10-24T04:18:54.2037643Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T04:18:54.2037753Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2037916Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2038013Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T04:18:54.2038062Z โฐโโโโ
2026-10-24T04:18:54.2038590Z 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-24T04:18:54.2038874Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2038878Z
2026-10-24T04:18:54.2039016Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2039167Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-24T04:18:54.2039216Z 125 โ
2026-10-24T04:18:54.2039317Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T04:18:54.2039426Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2039586Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2039682Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T04:18:54.2039730Z โฐโโโโ
2026-10-24T04:18:54.2040185Z 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-24T04:18:54.2040466Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2040468Z
2026-10-24T04:18:54.2040606Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2040759Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T04:18:54.2040864Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T04:18:54.2041055Z 127 โ โญโโถ const recorder = createLazyVoiceRecorder({
2026-10-24T04:18:54.2041226Z 128 โ โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T04:18:54.2041386Z 129 โ โ onStatus: (status: RecordingStatus) => {
2026-10-24T04:18:54.2041603Z 130 โ โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T04:18:54.2041776Z 131 โ โ isFinished: status.isFinished,
2026-10-24T04:18:54.2042045Z 132 โ โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T04:18:54.2042188Z 133 โ โ error: status.error,
2026-10-24T04:18:54.2042281Z 134 โ โ url: status.url,
2026-10-24T04:18:54.2042360Z 135 โ โ });
2026-10-24T04:18:54.2042435Z 136 โ โ },
2026-10-24T04:18:54.2042683Z 137 โ โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T04:18:54.2042885Z 138 โ โ selectInput: (inputs) => {
2026-10-24T04:18:54.2043034Z 139 โ โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T04:18:54.2043175Z 140 โ โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T04:18:54.2043333Z 141 โ โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T04:18:54.2043502Z 142 โ โ const order = rememberMicrophones(known, inputs);
2026-10-24T04:18:54.2043659Z 143 โ โ if (order !== known) {
2026-10-24T04:18:54.2043804Z 144 โ โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T04:18:54.2043921Z 145 โ โ transform: (current) => ({
2026-10-24T04:18:54.2044151Z 146 โ โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T04:18:54.2044235Z 147 โ โ }),
2026-10-24T04:18:54.2044313Z 148 โ โ });
2026-10-24T04:18:54.2044389Z 149 โ โ }
2026-10-24T04:18:54.2044524Z 150 โ โ return preferredMicrophoneInput(inputs, order);
2026-10-24T04:18:54.2044596Z 151 โ โ },
2026-10-24T04:18:54.2044723Z 152 โ โโโถ });
2026-10-24T04:18:54.2044960Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T04:18:54.2045045Z 153 โ recorderRef.current = recorder;
2026-10-24T04:18:54.2045094Z โฐโโโโ
2026-10-24T04:18:54.2045544Z 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-24T04:18:54.2045823Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2045826Z
2026-10-24T04:18:54.2045964Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2046116Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T04:18:54.2046170Z 152 โ });
2026-10-24T04:18:54.2046252Z 153 โ recorderRef.current = recorder;
2026-10-24T04:18:54.2046363Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T04:18:54.2046540Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T04:18:54.2046650Z ยท โฐโโ This value is a ref
2026-10-24T04:18:54.2046755Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T04:18:54.2046804Z โฐโโโโ
2026-10-24T04:18:54.2047250Z 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-24T04:18:54.2047577Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2047639Z
2026-10-24T04:18:54.2047790Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2047943Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T04:18:54.2048025Z 153 โ recorderRef.current = recorder;
2026-10-24T04:18:54.2048211Z 154 โ โญโโถ sessionRef.current = new VoiceInputSession({
2026-10-24T04:18:54.2048292Z 155 โ โ recorder,
2026-10-24T04:18:54.2048485Z 156 โ โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T04:18:54.2048598Z 157 โ โ requestPermission: async () => {
2026-10-24T04:18:54.2048762Z 158 โ โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T04:18:54.2048947Z 159 โ โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T04:18:54.2049022Z 160 โ โ },
2026-10-24T04:18:54.2049158Z 161 โ โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T04:18:54.2049289Z 162 โ โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T04:18:54.2049417Z 163 โ โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T04:18:54.2049526Z 164 โ โ onStateChange: (nextState) =>
2026-10-24T04:18:54.2049613Z 165 โ โ setState({
2026-10-24T04:18:54.2049711Z 166 โ โ state: nextState,
2026-10-24T04:18:54.2049846Z 167 โ โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T04:18:54.2049973Z 168 โ โ label: sessionRef.current?.label ?? null,
2026-10-24T04:18:54.2050050Z 169 โ โ }),
2026-10-24T04:18:54.2050174Z 170 โ โโโถ });
2026-10-24T04:18:54.2050362Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T04:18:54.2050417Z 171 โ }
2026-10-24T04:18:54.2050468Z โฐโโโโ
2026-10-24T04:18:54.2050915Z 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-24T04:18:54.2051198Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2051204Z
2026-10-24T04:18:54.2051341Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2051495Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T04:18:54.2051575Z 153 โ recorderRef.current = recorder;
2026-10-24T04:18:54.2051675Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T04:18:54.2051780Z ยท โโโโโโฌโโโโโโโโโฌโโโ
2026-10-24T04:18:54.2051955Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T04:18:54.2052065Z ยท โฐโโ This value is a ref
2026-10-24T04:18:54.2052128Z 155 โ recorder,
2026-10-24T04:18:54.2052230Z โฐโโโโ
2026-10-24T04:18:54.2052740Z 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-24T04:18:54.2053023Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2053025Z
2026-10-24T04:18:54.2053231Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2053383Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T04:18:54.2053465Z 184 โ return () => subscription.remove();
2026-10-24T04:18:54.2053528Z 185 โ }, [controller]);
2026-10-24T04:18:54.2053606Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2053746Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2053796Z 186 โ
2026-10-24T04:18:54.2053846Z โฐโโโโ
2026-10-24T04:18:54.2054335Z 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-24T04:18:54.2054614Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2054617Z
2026-10-24T04:18:54.2054752Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2054907Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T04:18:54.2054992Z 184 โ return () => subscription.remove();
2026-10-24T04:18:54.2055056Z 185 โ }, [controller]);
2026-10-24T04:18:54.2055129Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.2055266Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2055317Z 186 โ
2026-10-24T04:18:54.2055364Z โฐโโโโ
2026-10-24T04:18:54.2055809Z 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-24T04:18:54.2056085Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2056087Z
2026-10-24T04:18:54.2056228Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2056382Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T04:18:54.2056437Z 191 โ },
2026-10-24T04:18:54.2056580Z 192 โ [controller, recorder],
2026-10-24T04:18:54.2056682Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2056820Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2056875Z 193 โ );
2026-10-24T04:18:54.2056922Z โฐโโโโ
2026-10-24T04:18:54.2057367Z 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-24T04:18:54.2057711Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2057760Z
2026-10-24T04:18:54.2057950Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2058101Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T04:18:54.2058188Z 174 โ const controller = session.controller;
2026-10-24T04:18:54.2058272Z 175 โ const recorder = recorderRef.current;
2026-10-24T04:18:54.2058373Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2058532Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2058613Z 176 โ
2026-10-24T04:18:54.2058693Z โฐโโโโ
2026-10-24T04:18:54.2059191Z 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-24T04:18:54.2059473Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2059475Z
2026-10-24T04:18:54.2059611Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2059761Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T04:18:54.2059813Z 191 โ },
2026-10-24T04:18:54.2059881Z 192 โ [controller, recorder],
2026-10-24T04:18:54.2059967Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T04:18:54.2060114Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2060173Z 193 โ );
2026-10-24T04:18:54.2060221Z โฐโโโโ
2026-10-24T04:18:54.2060665Z 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-24T04:18:54.2060942Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2060944Z
2026-10-24T04:18:54.2061080Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2061232Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T04:18:54.2061322Z 245 โ return () => clearInterval(intervalId);
2026-10-24T04:18:54.2061430Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T04:18:54.2061516Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2061665Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2061716Z 247 โ
2026-10-24T04:18:54.2061766Z โฐโโโโ
2026-10-24T04:18:54.2062211Z 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-24T04:18:54.2062490Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2062493Z
2026-10-24T04:18:54.2062677Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2062945Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T04:18:54.2063030Z 245 โ return () => clearInterval(intervalId);
2026-10-24T04:18:54.2063136Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T04:18:54.2063262Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2063418Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2063468Z 247 โ
2026-10-24T04:18:54.2063535Z โฐโโโโ
2026-10-24T04:18:54.2064068Z 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-24T04:18:54.2064374Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2064377Z
2026-10-24T04:18:54.2064514Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2064663Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T04:18:54.2064729Z 260 โ setOwnerFocused,
2026-10-24T04:18:54.2064788Z 261 โ session,
2026-10-24T04:18:54.2064857Z ยท โโโโฌโโโ
2026-10-24T04:18:54.2064990Z ยท โฐโโ Cannot access ref value during render
2026-10-24T04:18:54.2065047Z 262 โ stop,
2026-10-24T04:18:54.2065096Z โฐโโโโ
2026-10-24T04:18:54.2065548Z 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-24T04:18:54.2065826Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2065828Z
2026-10-24T04:18:54.2065965Z โ react(refs): Cannot access refs during render
2026-10-24T04:18:54.2066116Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T04:18:54.2066169Z 250 โ
2026-10-24T04:18:54.2066304Z 251 โ โญโโถ return {
2026-10-24T04:18:54.2066552Z 252 โ โ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T04:18:54.2066687Z 253 โ โ state,
2026-10-24T04:18:54.2066772Z 254 โ โ audioLevels,
2026-10-24T04:18:54.2066860Z 255 โ โ elapsedSeconds,
2026-10-24T04:18:54.2066985Z 256 โ โ isBusy: voiceInputBlocksSubmission(state),
2026-10-24T04:18:54.2067066Z 257 โ โ ownerKey,
2026-10-24T04:18:54.2067142Z 258 โ โ label,
2026-10-24T04:18:54.2067227Z 259 โ โ focusedOwners,
2026-10-24T04:18:54.2067323Z 260 โ โ setOwnerFocused,
2026-10-24T04:18:54.2067418Z 261 โ โ session,
2026-10-24T04:18:54.2067537Z 262 โ โ stop,
2026-10-24T04:18:54.2067616Z 263 โ โ cancel,
2026-10-24T04:18:54.2067746Z 264 โ โโโถ };
2026-10-24T04:18:54.2067943Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T04:18:54.2067995Z 265 โ }
2026-10-24T04:18:54.2068044Z โฐโโโโ
2026-10-24T04:18:54.2068490Z 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-24T04:18:54.2068768Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T04:18:54.2068771Z
2026-10-24T04:18:54.2068926Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.2069079Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T04:18:54.2069231Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T04:18:54.2069349Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T04:18:54.2069428Z ยท โโโโโโฌโโโโโ
2026-10-24T04:18:54.2069558Z ยท โฐโโ `audioLevels` originates here
2026-10-24T04:18:54.2069670Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T04:18:54.2069809Z 124 โ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T04:18:54.2069859Z 125 โ
2026-10-24T04:18:54.2069962Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T04:18:54.2070063Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T04:18:54.2070200Z 128 โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T04:18:54.2070291Z 129 โ onStatus: (status: RecordingStatus) => {
2026-10-24T04:18:54.2070406Z 130 โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T04:18:54.2070487Z 131 โ isFinished: status.isFinished,
2026-10-24T04:18:54.2070625Z 132 โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T04:18:54.2070697Z 133 โ error: status.error,
2026-10-24T04:18:54.2070762Z 134 โ url: status.url,
2026-10-24T04:18:54.2070818Z 135 โ });
2026-10-24T04:18:54.2070875Z 136 โ },
2026-10-24T04:18:54.2071034Z 137 โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T04:18:54.2071108Z 138 โ selectInput: (inputs) => {
2026-10-24T04:18:54.2071274Z 139 โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T04:18:54.2071443Z 140 โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T04:18:54.2071570Z 141 โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T04:18:54.2071675Z 142 โ const order = rememberMicrophones(known, inputs);
2026-10-24T04:18:54.2071743Z 143 โ if (order !== known) {
2026-10-24T04:18:54.2071846Z 144 โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T04:18:54.2071927Z 145 โ transform: (current) => ({
2026-10-24T04:18:54.2072161Z 146 โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T04:18:54.2072224Z 147 โ }),
2026-10-24T04:18:54.2072284Z 148 โ });
2026-10-24T04:18:54.2072340Z 149 โ }
2026-10-24T04:18:54.2072450Z 150 โ return preferredMicrophoneInput(inputs, order);
2026-10-24T04:18:54.2072506Z 151 โ },
2026-10-24T04:18:54.2072559Z 152 โ });
2026-10-24T04:18:54.2072638Z 153 โ recorderRef.current = recorder;
2026-10-24T04:18:54.2072735Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T04:18:54.2072793Z 155 โ recorder,
2026-10-24T04:18:54.2072889Z 156 โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T04:18:54.2072972Z 157 โ requestPermission: async () => {
2026-10-24T04:18:54.2073097Z 158 โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T04:18:54.2073248Z 159 โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T04:18:54.2073303Z 160 โ },
2026-10-24T04:18:54.2073409Z 161 โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T04:18:54.2073514Z 162 โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T04:18:54.2073615Z 163 โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T04:18:54.2073692Z 164 โ onStateChange: (nextState) =>
2026-10-24T04:18:54.2073755Z 165 โ setState({
2026-10-24T04:18:54.2073821Z 166 โ state: nextState,
2026-10-24T04:18:54.2073924Z 167 โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T04:18:54.2074051Z 168 โ label: sessionRef.current?.label ?? null,
2026-10-24T04:18:54.2074109Z 169 โ }),
2026-10-24T04:18:54.2074161Z 170 โ });
2026-10-24T04:18:54.2074212Z 171 โ }
2026-10-24T04:18:54.2074263Z 172 โ
2026-10-24T04:18:54.2074346Z 173 โ const session = sessionRef.current;
2026-10-24T04:18:54.2074430Z 174 โ const controller = session.controller;
2026-10-24T04:18:54.2074514Z 175 โ const recorder = recorderRef.current;
2026-10-24T04:18:54.2074570Z 176 โ
2026-10-24T04:18:54.2074635Z 177 โ useEffect(() => {
2026-10-24T04:18:54.2074779Z 178 โ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T04:18:54.2074917Z 179 โ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T04:18:54.2075050Z 180 โ // real background state cancels preparation; recorder status handles
2026-10-24T04:18:54.2075150Z 181 โ // calls and route interruptions during capture.
2026-10-24T04:18:54.2075279Z 182 โ if (nextState === "background") controller.appMovedToBackground();
2026-10-24T04:18:54.2075332Z 183 โ });
2026-10-24T04:18:54.2075415Z 184 โ return () => subscription.remove();
2026-10-24T04:18:54.2075477Z 185 โ }, [controller]);
2026-10-24T04:18:54.2075527Z 186 โ
2026-10-24T04:18:54.2075585Z 187 โ useEffect(
2026-10-24T04:18:54.2075696Z 188 โ () => () => {
2026-10-24T04:18:54.2075825Z 189 โ controller.dispose();
2026-10-24T04:18:54.2075893Z 190 โ recorder.release();
2026-10-24T04:18:54.2075946Z 191 โ },
2026-10-24T04:18:54.2076015Z 192 โ [controller, recorder],
2026-10-24T04:18:54.2076065Z 193 โ );
2026-10-24T04:18:54.2076116Z 194 โ
2026-10-24T04:18:54.2076178Z 195 โ useEffect(() => {
2026-10-24T04:18:54.2076267Z 196 โ if (state.phase !== "recording") return;
2026-10-24T04:18:54.2076315Z 197 โ
2026-10-24T04:18:54.2076462Z 198 โ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T04:18:54.2076587Z 199 โ const activation = activateKeepAwakeAsync(tag);
2026-10-24T04:18:54.2076710Z 200 โ void activation.catch(() => {});
2026-10-24T04:18:54.2076771Z 201 โ return () => {
2026-10-24T04:18:54.2076922Z 202 โ // Release after activation settles, even if the recording ends immediately.
2026-10-24T04:18:54.2077059Z 203 โ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T04:18:54.2077112Z 204 โ };
2026-10-24T04:18:54.2077188Z 205 โ }, [keepAwakeId, state.phase]);
2026-10-24T04:18:54.2077237Z 206 โ
2026-10-24T04:18:54.2077297Z 207 โ useEffect(() => {
2026-10-24T04:18:54.2077425Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T04:18:54.2077474Z 209 โ
2026-10-24T04:18:54.2077589Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T04:18:54.2077737Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T04:18:54.2077837Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T04:18:54.2077910Z ยท โโโโโโฌโโโโโ
2026-10-24T04:18:54.2078067Z ยท โฐโโ `audioLevels` cannot be modified
2026-10-24T04:18:54.2078123Z 213 โ }
2026-10-24T04:18:54.2078170Z โฐโโโโ
2026-10-24T04:18:54.2078428Z 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-24T04:18:54.2078726Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2078728Z
2026-10-24T04:18:54.2078921Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T04:18:54.2079074Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T04:18:54.2079123Z 206 โ
2026-10-24T04:18:54.2079184Z 207 โ useEffect(() => {
2026-10-24T04:18:54.2079262Z ยท โโโโฌโโโ
2026-10-24T04:18:54.2079476Z ยท โฐโโ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T04:18:54.2079605Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T04:18:54.2079655Z 209 โ
2026-10-24T04:18:54.2079770Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T04:18:54.2079919Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T04:18:54.2080016Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T04:18:54.2080091Z ยท โโโโโโฌโโโโโ
2026-10-24T04:18:54.2080220Z ยท โฐโโ This modifies `audioLevels`
2026-10-24T04:18:54.2080275Z 213 โ }
2026-10-24T04:18:54.2080325Z โฐโโโโ
2026-10-24T04:18:54.2080709Z 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-24T04:18:54.2081069Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2081072Z
2026-10-24T04:18:54.2081538Z โ 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-24T04:18:54.2081754Z โญโ[packages/client-runtime/src/connection/supervisor.test.ts:135:3]
2026-10-24T04:18:54.2081863Z 134 โ let lastState = yield* SubscriptionRef.get(state);
2026-10-24T04:18:54.2082071Z 135 โ โญโโถ for (let iteration = 0; iteration < 100; iteration += 1) {
2026-10-24T04:18:54.2082204Z 136 โ โ lastState = yield* SubscriptionRef.get(state);
2026-10-24T04:18:54.2082309Z 137 โ โ if (predicate(lastState)) {
2026-10-24T04:18:54.2082399Z 138 โ โ return lastState;
2026-10-24T04:18:54.2082471Z 139 โ โ }
2026-10-24T04:18:54.2082571Z 140 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2082691Z 141 โ โฐโโถ }
2026-10-24T04:18:54.2082762Z 142 โ return yield* Effect.die(
2026-10-24T04:18:54.2082812Z โฐโโโโ
2026-10-24T04:18:54.2082814Z
2026-10-24T04:18:54.2083021Z โ eslint(no-unused-vars): Function 'nonEmptyString' is declared but never used.
2026-10-24T04:18:54.2083165Z โญโ[packages/client-runtime/src/work-log/presentation.ts:234:10]
2026-10-24T04:18:54.2083215Z 233 โ
2026-10-24T04:18:54.2083326Z 234 โ function nonEmptyString(value: unknown): string | null {
2026-10-24T04:18:54.2083409Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T04:18:54.2083549Z ยท โฐโโ 'nonEmptyString' is declared here
2026-10-24T04:18:54.2083686Z 235 โ return typeof value === "string" && value.trim().length > 0 ? value : null;
2026-10-24T04:18:54.2083735Z โฐโโโโ
2026-10-24T04:18:54.2083836Z help: Consider removing this declaration.
2026-10-24T04:18:54.2083839Z
2026-10-24T04:18:54.2084115Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2084270Z โญโ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-24T04:18:54.2084322Z 150 โ
2026-10-24T04:18:54.2084385Z 151 โ useEffect(() => {
2026-10-24T04:18:54.2084454Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2084575Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2084658Z 152 โ if (!controlledSelectedPath) {
2026-10-24T04:18:54.2084717Z 153 โ return;
2026-10-24T04:18:54.2084771Z 154 โ }
2026-10-24T04:18:54.2084851Z 155 โ setExpandedPaths((current) => {
2026-10-24T04:18:54.2084928Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2085091Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2085210Z 156 โ const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-24T04:18:54.2085310Z โฐโโโโ
2026-10-24T04:18:54.2085951Z 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-24T04:18:54.2086338Z 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-24T04:18:54.2086340Z
2026-10-24T04:18:54.2086522Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2086689Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-24T04:18:54.2086766Z 554 โ assert.deepStrictEqual(
2026-10-24T04:18:54.2086932Z 555 โ (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T04:18:54.2087052Z ยท โฌ
2026-10-24T04:18:54.2087208Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2087266Z 556 โ [
2026-10-24T04:18:54.2087315Z โฐโโโโ
2026-10-24T04:18:54.2087415Z help: Consider removing this parameter.
2026-10-24T04:18:54.2087417Z
2026-10-24T04:18:54.2087596Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2087764Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-24T04:18:54.2087843Z 1154 โ assert.deepStrictEqual(
2026-10-24T04:18:54.2088007Z 1155 โ (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T04:18:54.2088128Z ยท โฌ
2026-10-24T04:18:54.2088283Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2088343Z 1156 โ [
2026-10-24T04:18:54.2088394Z โฐโโโโ
2026-10-24T04:18:54.2088493Z help: Consider removing this parameter.
2026-10-24T04:18:54.2088496Z
2026-10-24T04:18:54.2088768Z โ eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.2088907Z โญโ[apps/server/src/orchestration-v2/Orchestrator.ts:12366:7]
2026-10-24T04:18:54.2088962Z 12365 โ
2026-10-24T04:18:54.2089105Z 12366 โ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-24T04:18:54.2089190Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2089330Z ยท โฐโโ 'layerUnavailable' is declared here
2026-10-24T04:18:54.2089396Z 12367 โ OrchestratorV2,
2026-10-24T04:18:54.2089447Z โฐโโโโ
2026-10-24T04:18:54.2089550Z help: Consider removing this declaration.
2026-10-24T04:18:54.2089552Z
2026-10-24T04:18:54.2089745Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2089885Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-24T04:18:54.2089979Z 256 โ return () => cancelAnimationFrame(frame);
2026-10-24T04:18:54.2090057Z 257 โ }, [props.path, targetIndex]);
2026-10-24T04:18:54.2090186Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2090381Z ยท โฐโโ Unnecessary dependency `props.path`
2026-10-24T04:18:54.2090432Z 258 โ
2026-10-24T04:18:54.2090482Z โฐโโโโ
2026-10-24T04:18:54.2090765Z 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-24T04:18:54.2091120Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2091123Z
2026-10-24T04:18:54.2091329Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T04:18:54.2091473Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-24T04:18:54.2091547Z 292 โ <SourceText
2026-10-24T04:18:54.2091643Z 293 โ key={`${index}:${tokenIndex}`}
2026-10-24T04:18:54.2091758Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2091828Z 294 โ style={{
2026-10-24T04:18:54.2091877Z โฐโโโโ
2026-10-24T04:18:54.2092018Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T04:18:54.2092020Z
2026-10-24T04:18:54.2092205Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T04:18:54.2092346Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-24T04:18:54.2092408Z 308 โ return (
2026-10-24T04:18:54.2092488Z 309 โ <SourceText key={index}>
2026-10-24T04:18:54.2092591Z ยท โโโโโโโโโโโ
2026-10-24T04:18:54.2092656Z 310 โ {body}
2026-10-24T04:18:54.2092705Z โฐโโโโ
2026-10-24T04:18:54.2092843Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T04:18:54.2092846Z
2026-10-24T04:18:54.2093019Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T04:18:54.2093196Z โญโ[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-24T04:18:54.2093263Z 115 โ return [...commands];
2026-10-24T04:18:54.2093389Z 116 โ }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-24T04:18:54.2093497Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2093728Z ยท โฐโโ Unnecessary dependency `registrationVersion`
2026-10-24T04:18:54.2093831Z 117 โ
2026-10-24T04:18:54.2093879Z โฐโโโโ
2026-10-24T04:18:54.2094223Z 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-24T04:18:54.2094534Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2094537Z
2026-10-24T04:18:54.2095057Z โ 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-24T04:18:54.2095185Z โญโ[packages/client-runtime/src/rpc/client.test.ts:131:9]
2026-10-24T04:18:54.2095247Z 130 โ ) {
2026-10-24T04:18:54.2095453Z 131 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2095573Z 132 โ โ if (subscriptions.length >= count) {
2026-10-24T04:18:54.2095660Z 133 โ โ return;
2026-10-24T04:18:54.2095737Z 134 โ โ }
2026-10-24T04:18:54.2095841Z 135 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2095969Z 136 โ โฐโโถ }
2026-10-24T04:18:54.2096129Z 137 โ return yield* Effect.die(new Error(`Expected ${count} durable subscriptions.`));
2026-10-24T04:18:54.2096178Z โฐโโโโ
2026-10-24T04:18:54.2096180Z
2026-10-24T04:18:54.2096778Z โ 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-24T04:18:54.2096909Z โญโ[packages/client-runtime/src/rpc/client.test.ts:252:7]
2026-10-24T04:18:54.2097068Z 251 โ yield* SubscriptionRef.set(activeSession, Option.some(session(firstClient)));
2026-10-24T04:18:54.2097311Z 252 โ โญโโถ for (let attempt = 0; attempt < 100 && subscriptions.length < 1; attempt += 1) {
2026-10-24T04:18:54.2097411Z 253 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2097538Z 254 โ โฐโโถ }
2026-10-24T04:18:54.2097656Z 255 โ yield* SubscriptionRef.set(activeSession, Option.none());
2026-10-24T04:18:54.2097711Z โฐโโโโ
2026-10-24T04:18:54.2097716Z
2026-10-24T04:18:54.2098156Z โ 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-24T04:18:54.2098284Z โญโ[packages/client-runtime/src/rpc/client.test.ts:258:7]
2026-10-24T04:18:54.2098337Z 257 โ
2026-10-24T04:18:54.2098576Z 258 โ โญโโถ for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-24T04:18:54.2098678Z 259 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2098802Z 260 โ โฐโโถ }
2026-10-24T04:18:54.2098967Z 261 โ yield* Fiber.interrupt(subscriptionFiber);
2026-10-24T04:18:54.2099076Z โฐโโโโ
2026-10-24T04:18:54.2099079Z
2026-10-24T04:18:54.2099518Z โ 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-24T04:18:54.2099641Z โญโ[packages/client-runtime/src/rpc/client.test.ts:322:7]
2026-10-24T04:18:54.2099702Z 321 โ );
2026-10-24T04:18:54.2100019Z 322 โ โญโโถ for (let attempt = 0; attempt < 100 && observedFailures.length < 1; attempt += 1) {
2026-10-24T04:18:54.2100123Z 323 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2100246Z 324 โ โฐโโถ }
2026-10-24T04:18:54.2100308Z 325 โ
2026-10-24T04:18:54.2100359Z โฐโโโโ
2026-10-24T04:18:54.2100362Z
2026-10-24T04:18:54.2100804Z โ 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-24T04:18:54.2100928Z โญโ[packages/client-runtime/src/rpc/client.test.ts:330:7]
2026-10-24T04:18:54.2101084Z 329 โ yield* SubscriptionRef.set(activeSession, Option.some(session(secondClient)));
2026-10-24T04:18:54.2101325Z 330 โ โญโโถ for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-24T04:18:54.2101424Z 331 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2101553Z 332 โ โฐโโถ }
2026-10-24T04:18:54.2101654Z 333 โ yield* Fiber.interrupt(subscriptionFiber);
2026-10-24T04:18:54.2101705Z โฐโโโโ
2026-10-24T04:18:54.2101708Z
2026-10-24T04:18:54.2101976Z โ eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-24T04:18:54.2102100Z โญโ[packages/provider-cursor/src/server/auth.ts:249:20]
2026-10-24T04:18:54.2102152Z 248 โ },
2026-10-24T04:18:54.2102232Z 249 โ (effect, flow, stopSessions) =>
2026-10-24T04:18:54.2102324Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.2102468Z ยท โฐโโ 'stopSessions' is declared here
2026-10-24T04:18:54.2102530Z 250 โ effect.pipe(
2026-10-24T04:18:54.2102580Z โฐโโโโ
2026-10-24T04:18:54.2102685Z help: Consider removing this parameter.
2026-10-24T04:18:54.2102690Z
2026-10-24T04:18:54.2103128Z โ 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-24T04:18:54.2103257Z โญโ[packages/client-runtime/src/rpc/session.test.ts:226:3]
2026-10-24T04:18:54.2103310Z 225 โ ) {
2026-10-24T04:18:54.2103504Z 226 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2103612Z 227 โ โ const socket = sockets[index];
2026-10-24T04:18:54.2103697Z 228 โ โ if (socket) {
2026-10-24T04:18:54.2103835Z 229 โ โ return socket;
2026-10-24T04:18:54.2103963Z 230 โ โ }
2026-10-24T04:18:54.2104076Z 231 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2104220Z 232 โ โฐโโถ }
2026-10-24T04:18:54.2104387Z 233 โ return yield* Effect.die(new Error("Expected the RPC protocol to create a websocket."));
2026-10-24T04:18:54.2104437Z โฐโโโโ
2026-10-24T04:18:54.2104439Z
2026-10-24T04:18:54.2104952Z โ 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-24T04:18:54.2105083Z โญโ[packages/client-runtime/src/rpc/session.test.ts:240:3]
2026-10-24T04:18:54.2105135Z 239 โ ) {
2026-10-24T04:18:54.2105331Z 240 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2105539Z 241 โ โ const request = socket.sent.map((message) => decodeJson(message)).filter(isRpcRequest)[index];
2026-10-24T04:18:54.2105626Z 242 โ โ if (request) {
2026-10-24T04:18:54.2105718Z 243 โ โ return request;
2026-10-24T04:18:54.2105788Z 244 โ โ }
2026-10-24T04:18:54.2105888Z 245 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2106007Z 246 โ โฐโโถ }
2026-10-24T04:18:54.2106168Z 247 โ return yield* Effect.die(new Error("Expected the RPC protocol to send a request."));
2026-10-24T04:18:54.2106215Z โฐโโโโ
2026-10-24T04:18:54.2106218Z
2026-10-24T04:18:54.2106497Z โ eslint(no-unused-vars): Variable 'legacyCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.2106655Z โญโ[packages/provider-cursor/src/server/credentialStore.test.ts:15:7]
2026-10-24T04:18:54.2106709Z 14 โ
2026-10-24T04:18:54.2106778Z 15 โ const legacyCredentials = {
2026-10-24T04:18:54.2106860Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.2107004Z ยท โฐโโ 'legacyCredentials' is declared here
2026-10-24T04:18:54.2107071Z 16 โ version: 1 as const,
2026-10-24T04:18:54.2107118Z โฐโโโโ
2026-10-24T04:18:54.2107218Z help: Consider removing this declaration.
2026-10-24T04:18:54.2107220Z
2026-10-24T04:18:54.2107401Z โ oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-24T04:18:54.2107526Z โญโ[packages/client-runtime/src/state/shell.ts:189:5]
2026-10-24T04:18:54.2107632Z 186 โ let waiting = yield* Ref.get(awaitingCompletion);
2026-10-24T04:18:54.2107698Z 187 โ let next = initial;
2026-10-24T04:18:54.2107766Z ยท โโโฌโ
2026-10-24T04:18:54.2107882Z ยท โฐโโ From this accumulator
2026-10-24T04:18:54.2107958Z 188 โ let receivedSnapshot = false;
2026-10-24T04:18:54.2108031Z 189 โ for (const item of items) {
2026-10-24T04:18:54.2108097Z ยท โโฌโ
2026-10-24T04:18:54.2108199Z ยท โฐโโ For this loop
2026-10-24T04:18:54.2108283Z 190 โ if (item.kind === "synchronized") {
2026-10-24T04:18:54.2108348Z 191 โ waiting = false;
2026-10-24T04:18:54.2108437Z 192 โ if (Option.isSome(next.snapshot)) {
2026-10-24T04:18:54.2108606Z 193 โ next = { ...next, status: "live", error: Option.none() };
2026-10-24T04:18:54.2108745Z ยท โโโโฌโโโ
2026-10-24T04:18:54.2108872Z ยท โฐโโ From this spread
2026-10-24T04:18:54.2108929Z 194 โ }
2026-10-24T04:18:54.2108979Z โฐโโโโ
2026-10-24T04:18:54.2109128Z help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-24T04:18:54.2109280Z note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T04:18:54.2109283Z
2026-10-24T04:18:54.2109564Z โ eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-24T04:18:54.2109735Z โญโ[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1398:10]
2026-10-24T04:18:54.2109790Z 1397 โ
2026-10-24T04:18:54.2109878Z 1398 โ function assertUserMessagesExclude(
2026-10-24T04:18:54.2109977Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T04:18:54.2110139Z ยท โฐโโ 'assertUserMessagesExclude' is declared here
2026-10-24T04:18:54.2110242Z 1399 โ projection: OrchestrationV2ThreadProjection,
2026-10-24T04:18:54.2110296Z โฐโโโโ
2026-10-24T04:18:54.2110396Z help: Consider removing this declaration.
2026-10-24T04:18:54.2110398Z
2026-10-24T04:18:54.2110548Z โ eslint(no-new): Do not use 'new' for side effects.
2026-10-24T04:18:54.2110669Z โญโ[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-24T04:18:54.2110778Z 167 โ // @ts-expect-error a declaration constructed directly
2026-10-24T04:18:54.2110875Z 168 โ new McpToolAccess.Declaration(unchecked);
2026-10-24T04:18:54.2110970Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2111091Z 169 โ // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-24T04:18:54.2111143Z โฐโโโโ
2026-10-24T04:18:54.2111296Z help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-24T04:18:54.2111298Z
2026-10-24T04:18:54.2111492Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T04:18:54.2111618Z โญโ[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-24T04:18:54.2111690Z 2 โ AuthDiagnosticsReadScope,
2026-10-24T04:18:54.2111757Z 3 โ type AuthSessionState,
2026-10-24T04:18:54.2111837Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2111982Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T04:18:54.2112052Z 4 โ sessionGrantsScope,
2026-10-24T04:18:54.2112104Z โฐโโโโ
2026-10-24T04:18:54.2112199Z help: Consider removing this import.
2026-10-24T04:18:54.2112202Z
2026-10-24T04:18:54.2112480Z โ eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.2112601Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-24T04:18:54.2112654Z 217 โ
2026-10-24T04:18:54.2112799Z 218 โ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-24T04:18:54.2112883Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T04:18:54.2113034Z ยท โฐโโ 'revokeActiveMcpThread' is declared here
2026-10-24T04:18:54.2113263Z 219 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-24T04:18:54.2113368Z โฐโโโโ
2026-10-24T04:18:54.2113469Z help: Consider removing this declaration.
2026-10-24T04:18:54.2113471Z
2026-10-24T04:18:54.2113769Z โ eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.2113889Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-24T04:18:54.2113939Z 220 โ
2026-10-24T04:18:54.2114246Z 221 โ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-24T04:18:54.2114395Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2114617Z ยท โฐโโ 'revokeAllActiveMcpCredentials' is declared here
2026-10-24T04:18:54.2114821Z 222 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-24T04:18:54.2114891Z โฐโโโโ
2026-10-24T04:18:54.2115017Z help: Consider removing this declaration.
2026-10-24T04:18:54.2115020Z
2026-10-24T04:18:54.2115269Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T04:18:54.2115426Z โญโ[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-24T04:18:54.2115516Z 2 โ AuthFilesystemReadScope,
2026-10-24T04:18:54.2115598Z 3 โ type AuthSessionState,
2026-10-24T04:18:54.2115703Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2115878Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T04:18:54.2115970Z 4 โ type FilesystemBrowseEntry,
2026-10-24T04:18:54.2116028Z โฐโโโโ
2026-10-24T04:18:54.2116156Z help: Consider removing this import.
2026-10-24T04:18:54.2116164Z
2026-10-24T04:18:54.2116388Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2116558Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-24T04:18:54.2116753Z 120 โ const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-24T04:18:54.2116864Z 121 โ const dispatch = vi.fn((_: unknown) =>
2026-10-24T04:18:54.2116965Z ยท โฌ
2026-10-24T04:18:54.2117127Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2117249Z 122 โ (options.dispatchGate ?? Effect.void).pipe(
2026-10-24T04:18:54.2117311Z โฐโโโโ
2026-10-24T04:18:54.2117438Z help: Consider removing this parameter.
2026-10-24T04:18:54.2117441Z
2026-10-24T04:18:54.2117750Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2117954Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-24T04:18:54.2118024Z 133 โ );
2026-10-24T04:18:54.2118154Z 134 โ const listLocalBranchNames = vi.fn((_: string) =>
2026-10-24T04:18:54.2118271Z ยท โฌ
2026-10-24T04:18:54.2118438Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2118523Z 135 โ Effect.succeed(
2026-10-24T04:18:54.2118589Z โฐโโโโ
2026-10-24T04:18:54.2118713Z help: Consider removing this parameter.
2026-10-24T04:18:54.2118715Z
2026-10-24T04:18:54.2118934Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2119102Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-24T04:18:54.2119174Z 177 โ });
2026-10-24T04:18:54.2119294Z 178 โ const sendToThread = vi.fn((_: unknown) => {
2026-10-24T04:18:54.2119397Z ยท โฌ
2026-10-24T04:18:54.2119560Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2119681Z 179 โ switch (options.continuation ?? "queued") {
2026-10-24T04:18:54.2119744Z โฐโโโโ
2026-10-24T04:18:54.2119863Z help: Consider removing this parameter.
2026-10-24T04:18:54.2119871Z
2026-10-24T04:18:54.2120088Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2120249Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-24T04:18:54.2120312Z 202 โ );
2026-10-24T04:18:54.2120408Z 203 โ const removeWorktree = vi.fn((_: unknown) =>
2026-10-24T04:18:54.2120492Z ยท โฌ
2026-10-24T04:18:54.2120620Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2120697Z 204 โ options.removeWorktreeFails
2026-10-24T04:18:54.2120746Z โฐโโโโ
2026-10-24T04:18:54.2120838Z help: Consider removing this parameter.
2026-10-24T04:18:54.2120841Z
2026-10-24T04:18:54.2121013Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2121139Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-24T04:18:54.2121191Z 207 โ );
2026-10-24T04:18:54.2121286Z 208 โ const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-24T04:18:54.2121381Z ยท โฌ
2026-10-24T04:18:54.2121514Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2121597Z 209 โ options.deleteLocalBranchFails
2026-10-24T04:18:54.2121645Z โฐโโโโ
2026-10-24T04:18:54.2121741Z help: Consider removing this parameter.
2026-10-24T04:18:54.2121744Z
2026-10-24T04:18:54.2121914Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2122041Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-24T04:18:54.2122092Z 212 โ );
2026-10-24T04:18:54.2122202Z 213 โ const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-24T04:18:54.2122297Z ยท โฌ
2026-10-24T04:18:54.2122482Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2122602Z 214 โ options.fetchWorktreeBaseFails
2026-10-24T04:18:54.2122650Z โฐโโโโ
2026-10-24T04:18:54.2122746Z help: Consider removing this parameter.
2026-10-24T04:18:54.2122748Z
2026-10-24T04:18:54.2122920Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2123046Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-24T04:18:54.2123097Z 253 โ );
2026-10-24T04:18:54.2123184Z 254 โ const localStatus = vi.fn((_: unknown) =>
2026-10-24T04:18:54.2123269Z ยท โฌ
2026-10-24T04:18:54.2123394Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2123460Z 255 โ Effect.succeed({
2026-10-24T04:18:54.2123515Z โฐโโโโ
2026-10-24T04:18:54.2123612Z help: Consider removing this parameter.
2026-10-24T04:18:54.2123614Z
2026-10-24T04:18:54.2123785Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T04:18:54.2123916Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-24T04:18:54.2123968Z 263 โ );
2026-10-24T04:18:54.2124204Z 264 โ const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-24T04:18:54.2124306Z ยท โฌ
2026-10-24T04:18:54.2124437Z ยท โฐโโ '_' is declared here
2026-10-24T04:18:54.2124578Z 265 โ const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-24T04:18:54.2124631Z โฐโโโโ
2026-10-24T04:18:54.2124734Z help: Consider removing this parameter.
2026-10-24T04:18:54.2124741Z
2026-10-24T04:18:54.2124939Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T04:18:54.2125101Z โญโ[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-24T04:18:54.2125172Z 14 โ } from "@t3tools/contracts";
2026-10-24T04:18:54.2125257Z 15 โ import type {} from "@t3tools/contracts";
2026-10-24T04:18:54.2125327Z ยท โโ
2026-10-24T04:18:54.2125502Z 16 โ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-24T04:18:54.2125554Z โฐโโโโ
2026-10-24T04:18:54.2125630Z help: Remove empty braces
2026-10-24T04:18:54.2125633Z
2026-10-24T04:18:54.2125886Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2126066Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-24T04:18:54.2126117Z 104 โ
2026-10-24T04:18:54.2126179Z 105 โ useEffect(() => {
2026-10-24T04:18:54.2126247Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2126371Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2126447Z 106 โ clearReviewCommentTarget();
2026-10-24T04:18:54.2126539Z 107 โ setPendingNativeCommentSelection(null);
2026-10-24T04:18:54.2126642Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2126811Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2126882Z 108 โ }, [selectedSection?.id]);
2026-10-24T04:18:54.2126930Z โฐโโโโ
2026-10-24T04:18:54.2127589Z 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-24T04:18:54.2127961Z 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-24T04:18:54.2127964Z
2026-10-24T04:18:54.2128211Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2128443Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-24T04:18:54.2128503Z 109 โ
2026-10-24T04:18:54.2128573Z 110 โ useEffect(() => {
2026-10-24T04:18:54.2128642Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2128765Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2128848Z 111 โ if (activeCommentTarget === null) {
2026-10-24T04:18:54.2128946Z 112 โ setPendingNativeCommentSelection(null);
2026-10-24T04:18:54.2129049Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2129220Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2129271Z 113 โ }
2026-10-24T04:18:54.2129320Z โฐโโโโ
2026-10-24T04:18:54.2129903Z 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-24T04:18:54.2130216Z 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-24T04:18:54.2130218Z
2026-10-24T04:18:54.2130411Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2130586Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-24T04:18:54.2130680Z 107 โ setPendingNativeCommentSelection(null);
2026-10-24T04:18:54.2130750Z 108 โ }, [selectedSection?.id]);
2026-10-24T04:18:54.2130831Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2130987Z ยท โฐโโ Unnecessary dependency `selectedSection?.id`
2026-10-24T04:18:54.2131041Z 109 โ
2026-10-24T04:18:54.2131089Z โฐโโโโ
2026-10-24T04:18:54.2131368Z 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-24T04:18:54.2131666Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2131669Z
2026-10-24T04:18:54.2131856Z โ eslint(no-unused-vars): Type 'EnvironmentId' is imported but never used.
2026-10-24T04:18:54.2131988Z โญโ[packages/client-runtime/src/state/sharedSettings.ts:2:3]
2026-10-24T04:18:54.2132048Z 1 โ import type {
2026-10-24T04:18:54.2132109Z 2 โ EnvironmentId,
2026-10-24T04:18:54.2132179Z ยท โโโโโโโฌโโโโโโ
2026-10-24T04:18:54.2132444Z ยท โฐโโ 'EnvironmentId' is imported here
2026-10-24T04:18:54.2132572Z 3 โ ExecutionEnvironmentCapabilities,
2026-10-24T04:18:54.2132621Z โฐโโโโ
2026-10-24T04:18:54.2132714Z help: Consider removing this import.
2026-10-24T04:18:54.2132716Z
2026-10-24T04:18:54.2133207Z โ 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-24T04:18:54.2133366Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:169:7]
2026-10-24T04:18:54.2133425Z 168 โ });
2026-10-24T04:18:54.2133610Z 169 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-24T04:18:54.2133799Z 170 โ โ if ((yield* SubscriptionRef.get(shellState)).status === "synchronizing") break;
2026-10-24T04:18:54.2133904Z 171 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2134065Z 172 โ โฐโโถ }
2026-10-24T04:18:54.2134117Z 173 โ
2026-10-24T04:18:54.2134167Z โฐโโโโ
2026-10-24T04:18:54.2134169Z
2026-10-24T04:18:54.2134613Z โ 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-24T04:18:54.2134752Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:178:7]
2026-10-24T04:18:54.2134855Z 177 โ yield* Deferred.succeed(releaseSave, undefined);
2026-10-24T04:18:54.2135042Z 178 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-24T04:18:54.2135171Z 179 โ โ if ((yield* Ref.get(saved)).length > 0) break;
2026-10-24T04:18:54.2135272Z 180 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2135396Z 181 โ โฐโโถ }
2026-10-24T04:18:54.2135447Z 182 โ
2026-10-24T04:18:54.2135495Z โฐโโโโ
2026-10-24T04:18:54.2135498Z
2026-10-24T04:18:54.2135934Z โ 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-24T04:18:54.2136079Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:307:7]
2026-10-24T04:18:54.2136201Z 306 โ yield* Deferred.succeed(releaseUnenrichedSave, undefined);
2026-10-24T04:18:54.2136381Z 307 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-24T04:18:54.2136552Z 308 โ โ const values = yield* Ref.get(saved);
2026-10-24T04:18:54.2136745Z 309 โ โ if (values.length > 0 && values.at(-1)?.projects[0]?.repositoryIdentity != null) {
2026-10-24T04:18:54.2136827Z 310 โ โ break;
2026-10-24T04:18:54.2136901Z 311 โ โ }
2026-10-24T04:18:54.2137002Z 312 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2137125Z 313 โ โฐโโถ }
2026-10-24T04:18:54.2137310Z 314 โ
2026-10-24T04:18:54.2137444Z โฐโโโโ
2026-10-24T04:18:54.2137446Z
2026-10-24T04:18:54.2137607Z โ eslint(no-empty-pattern): Empty array binding pattern
2026-10-24T04:18:54.2139444Z โญโ[apps/server/src/pullRequest/PullRequestService.test.ts:1526:12]
2026-10-24T04:18:54.2139510Z 1525 โ
2026-10-24T04:18:54.2139574Z 1526 โ for (const [] of [
2026-10-24T04:18:54.2139646Z ยท โโ
2026-10-24T04:18:54.2139715Z 1527 โ ["github", "github.com"],
2026-10-24T04:18:54.2139766Z โฐโโโโ
2026-10-24T04:18:54.2140036Z help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-24T04:18:54.2140039Z
2026-10-24T04:18:54.2140299Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2140463Z โญโ[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
2026-10-24T04:18:54.2140513Z 100 โ
2026-10-24T04:18:54.2140575Z 101 โ useEffect(() => {
2026-10-24T04:18:54.2140643Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2140768Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2140866Z 102 โ if (!target || selectedLines.length === 0) {
2026-10-24T04:18:54.2140945Z 103 โ setHighlightedLinesById({});
2026-10-24T04:18:54.2141033Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T04:18:54.2141199Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2141258Z 104 โ return;
2026-10-24T04:18:54.2141305Z โฐโโโโ
2026-10-24T04:18:54.2141890Z 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-24T04:18:54.2142204Z 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-24T04:18:54.2142207Z
2026-10-24T04:18:54.2142403Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2142531Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
2026-10-24T04:18:54.2142610Z 453 โ showAuxiliaryPane("inspector");
2026-10-24T04:18:54.2142791Z 454 โ }, [environmentId, showAuxiliaryPane, threadId]);
2026-10-24T04:18:54.2143004Z ยท โโโโโโโฌโโโโโโ โโโโโฌโโโ
2026-10-24T04:18:54.2143192Z ยท โ โฐโโ Unnecessary dependency `threadId`
2026-10-24T04:18:54.2143334Z ยท โฐโโ Unnecessary dependency `environmentId`
2026-10-24T04:18:54.2143392Z 455 โ const {
2026-10-24T04:18:54.2143440Z โฐโโโโ
2026-10-24T04:18:54.2143800Z 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-24T04:18:54.2144138Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2144142Z
2026-10-24T04:18:54.2144322Z โ react(static-components): Cannot create components during render
2026-10-24T04:18:54.2144456Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:725:20]
2026-10-24T04:18:54.2144516Z 492 โ // same check.
2026-10-24T04:18:54.2144637Z 493 โ const NativeReviewDiffView = resolveNativeReviewDiffView();
2026-10-24T04:18:54.2144750Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-24T04:18:54.2144922Z ยท โฐโโ The component is created during render here
2026-10-24T04:18:54.2145066Z 494 โ const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
2026-10-24T04:18:54.2145182Z 495 โ const showcasedReviewDrawRef = useRef<string | null>(null);
2026-10-24T04:18:54.2145311Z 496 โ const [isPullRefreshing, setIsPullRefreshing] = useState(false);
2026-10-24T04:18:54.2145402Z 497 โ const handlePullToRefresh = async () => {
2026-10-24T04:18:54.2145476Z 498 โ setIsPullRefreshing(true);
2026-10-24T04:18:54.2145555Z 499 โ await refreshSelectedSection();
2026-10-24T04:18:54.2145627Z 500 โ setIsPullRefreshing(false);
2026-10-24T04:18:54.2145678Z 501 โ };
2026-10-24T04:18:54.2145814Z 502 โ const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
2026-10-24T04:18:54.2145951Z 503 โ const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
2026-10-24T04:18:54.2146052Z 504 โ const fileVisibility = useReviewFileVisibility({
2026-10-24T04:18:54.2146133Z 505 โ threadKey: reviewCache.threadKey,
2026-10-24T04:18:54.2146219Z 506 โ sectionId: selectedSection?.id ?? null,
2026-10-24T04:18:54.2146283Z 507 โ files: reviewFiles,
2026-10-24T04:18:54.2146381Z 508 โ cachedExpandedFileIds: selectedSection?.id
2026-10-24T04:18:54.2146511Z 509 โ ? reviewCache.expandedFileIdsBySection[selectedSection.id]
2026-10-24T04:18:54.2146571Z 510 โ : undefined,
2026-10-24T04:18:54.2146663Z 511 โ cachedViewedFileIds: selectedSection?.id
2026-10-24T04:18:54.2146779Z 512 โ ? reviewCache.viewedFileIdsBySection[selectedSection.id]
2026-10-24T04:18:54.2146838Z 513 โ : undefined,
2026-10-24T04:18:54.2146890Z 514 โ });
2026-10-24T04:18:54.2147071Z 515 โ const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
2026-10-24T04:18:54.2147195Z 516 โ const commentSelection = useReviewCommentSelectionController({
2026-10-24T04:18:54.2147254Z 517 โ environmentId,
2026-10-24T04:18:54.2147312Z 518 โ threadId,
2026-10-24T04:18:54.2147373Z 519 โ selectedSection,
2026-10-24T04:18:54.2147439Z 520 โ nativeReviewDiffData,
2026-10-24T04:18:54.2147544Z 521 โ });
2026-10-24T04:18:54.2147706Z 522 โ const nativeBridge = useNativeReviewDiffBridge({
2026-10-24T04:18:54.2147788Z 523 โ threadKey: reviewCache.threadKey,
2026-10-24T04:18:54.2147873Z 524 โ sectionId: selectedSection?.id ?? null,
2026-10-24T04:18:54.2147945Z 525 โ diff: selectedSection?.diff,
2026-10-24T04:18:54.2148018Z 526 โ data: nativeReviewDiffData,
2026-10-24T04:18:54.2148081Z 527 โ collapsedFileIds,
2026-10-24T04:18:54.2148141Z 528 โ viewedFileIds,
2026-10-24T04:18:54.2148245Z 529 โ selectedRowIds: commentSelection.selectedRowIds,
2026-10-24T04:18:54.2148344Z 530 โ canHighlight: parsedDiff.kind === "files",
2026-10-24T04:18:54.2148410Z 531 โ });
2026-10-24T04:18:54.2148524Z 532 โ const showcaseReviewKey =
2026-10-24T04:18:54.2148661Z 533 โ SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
2026-10-24T04:18:54.2148863Z 534 โ ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
2026-10-24T04:18:54.2148924Z 535 โ : null;
2026-10-24T04:18:54.2149084Z 536 โ const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
2026-10-24T04:18:54.2149158Z 537 โ nativeBridge.onDebug(event);
2026-10-24T04:18:54.2149211Z 538 โ if (
2026-10-24T04:18:54.2149286Z 539 โ showcaseReviewKey === null ||
2026-10-24T04:18:54.2149401Z 540 โ showcasedReviewDrawRef.current === showcaseReviewKey ||
2026-10-24T04:18:54.2149505Z 541 โ !isNativeReviewDiffDrawEvent(event.nativeEvent)
2026-10-24T04:18:54.2149557Z 542 โ ) {
2026-10-24T04:18:54.2149613Z 543 โ return;
2026-10-24T04:18:54.2149664Z 544 โ }
2026-10-24T04:18:54.2149770Z 545 โ showcasedReviewDrawRef.current = showcaseReviewKey;
2026-10-24T04:18:54.2149929Z 546 โ reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
2026-10-24T04:18:54.2149982Z 547 โ };
2026-10-24T04:18:54.2150031Z 548 โ
2026-10-24T04:18:54.2150142Z 549 โ const handleSelectFile = async (fileId: string | null) => {
2026-10-24T04:18:54.2150217Z 550 โ loadVisibleFile(fileId, true);
2026-10-24T04:18:54.2150302Z 551 โ commentSelection.clearSelection();
2026-10-24T04:18:54.2150418Z 552 โ if (fileId !== null && collapsedFileIds.includes(fileId)) {
2026-10-24T04:18:54.2150493Z 553 โ toggleExpandedFile(fileId);
2026-10-24T04:18:54.2150543Z 554 โ }
2026-10-24T04:18:54.2150649Z 555 โ const nativeView = nativeReviewDiffViewRef.current;
2026-10-24T04:18:54.2150717Z 556 โ if (!nativeView) return;
2026-10-24T04:18:54.2150807Z 557 โ const result = await settlePromise(() =>
2026-10-24T04:18:54.2150977Z 558 โ fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
2026-10-24T04:18:54.2151033Z 559 โ );
2026-10-24T04:18:54.2151116Z 560 โ if (AsyncResult.isFailure(result)) {
2026-10-24T04:18:54.2151288Z 561 โ console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
2026-10-24T04:18:54.2151338Z 562 โ }
2026-10-24T04:18:54.2151388Z 563 โ };
2026-10-24T04:18:54.2151466Z 564 โ const handleVisibleFileChange = (
2026-10-24T04:18:54.2151591Z 565 โ event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
2026-10-24T04:18:54.2151643Z 566 โ ) => {
2026-10-24T04:18:54.2151747Z 567 โ loadVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-24T04:18:54.2151908Z 568 โ reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-24T04:18:54.2151958Z 569 โ };
2026-10-24T04:18:54.2152086Z 570 โ const renderInspector = () => (
2026-10-24T04:18:54.2152209Z 571 โ <ReviewFileNavigator
2026-10-24T04:18:54.2152286Z 572 โ ref={reviewFileNavigatorRef}
2026-10-24T04:18:54.2152370Z 573 โ files={nativeReviewDiffData.files}
2026-10-24T04:18:54.2152441Z 574 โ headerInset={insets.top}
2026-10-24T04:18:54.2152533Z 575 โ sectionId={selectedSection?.id ?? null}
2026-10-24T04:18:54.2152645Z 576 โ onSelectFile={(fileId) => void handleSelectFile(fileId)}
2026-10-24T04:18:54.2152697Z 577 โ />
2026-10-24T04:18:54.2152745Z 578 โ );
2026-10-24T04:18:54.2152795Z 579 โ
2026-10-24T04:18:54.2153027Z 580 โ const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
2026-10-24T04:18:54.2153128Z 581 โ const { fileId } = event.nativeEvent;
2026-10-24T04:18:54.2153188Z 582 โ if (fileId) {
2026-10-24T04:18:54.2153271Z 583 โ loadVisibleFile(fileId, true);
2026-10-24T04:18:54.2153348Z 584 โ toggleExpandedFile(fileId);
2026-10-24T04:18:54.2153397Z 585 โ }
2026-10-24T04:18:54.2153449Z 586 โ };
2026-10-24T04:18:54.2153498Z 587 โ
2026-10-24T04:18:54.2153583Z 588 โ const handleNativeToggleViewedFile = (
2026-10-24T04:18:54.2153695Z 589 โ event: NativeSyntheticEvent<{ readonly fileId?: string }>,
2026-10-24T04:18:54.2153748Z 590 โ ) => {
2026-10-24T04:18:54.2153829Z 591 โ const { fileId } = event.nativeEvent;
2026-10-24T04:18:54.2153889Z 592 โ if (fileId) {
2026-10-24T04:18:54.2153962Z 593 โ toggleViewedFile(fileId);
2026-10-24T04:18:54.2154012Z 594 โ }
2026-10-24T04:18:54.2154094Z 595 โ };
2026-10-24T04:18:54.2154150Z 596 โ
2026-10-24T04:18:54.2154220Z 597 โ const parsedDiffNotice =
2026-10-24T04:18:54.2154381Z 598 โ parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
2026-10-24T04:18:54.2154499Z 599 โ const hasCachedSelectedDiff = selectedSection?.diff != null;
2026-10-24T04:18:54.2154648Z 600 โ const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
2026-10-24T04:18:54.2154763Z 601 โ const sectionMenu = buildReviewSectionMenu(reviewSections);
2026-10-24T04:18:54.2154914Z 602 โ const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
2026-10-24T04:18:54.2155019Z 603 โ hasEnvironmentPresentation: environment.isReady,
2026-10-24T04:18:54.2155115Z 604 โ isEnvironmentConnected: isEnvironmentReady,
2026-10-24T04:18:54.2155182Z 605 โ hasCachedSelectedDiff,
2026-10-24T04:18:54.2155245Z 606 โ hasAnyCachedDiff,
2026-10-24T04:18:54.2155296Z 607 โ });
2026-10-24T04:18:54.2155378Z 608 โ const handleRetryEnvironment = () => {
2026-10-24T04:18:54.2155467Z 609 โ void retryEnvironment(environmentId);
2026-10-24T04:18:54.2155521Z 610 โ };
2026-10-24T04:18:54.2155601Z 611 โ const handleReturnToThread = () => {
2026-10-24T04:18:54.2155675Z 612 โ if (navigation.canGoBack()) {
2026-10-24T04:18:54.2155741Z 613 โ navigation.goBack();
2026-10-24T04:18:54.2155799Z 614 โ return;
2026-10-24T04:18:54.2155851Z 615 โ }
2026-10-24T04:18:54.2155927Z 616 โ navigation.navigate("Thread", {
2026-10-24T04:18:54.2156013Z 617 โ environmentId: String(environmentId),
2026-10-24T04:18:54.2156087Z 618 โ threadId: String(threadId),
2026-10-24T04:18:54.2156140Z 619 โ });
2026-10-24T04:18:54.2156190Z 620 โ };
2026-10-24T04:18:54.2156265Z 621 โ const androidHeaderSubtitle = [
2026-10-24T04:18:54.2156333Z 622 โ selectedSection?.title,
2026-10-24T04:18:54.2156408Z 623 โ headerDiffSummary.additions,
2026-10-24T04:18:54.2156536Z 624 โ headerDiffSummary.deletions,
2026-10-24T04:18:54.2156647Z 625 โ ]
2026-10-24T04:18:54.2156749Z 626 โ .filter((part): part is string => Boolean(part))
2026-10-24T04:18:54.2156808Z 627 โ .join(" ยท ");
2026-10-24T04:18:54.2156857Z 628 โ
2026-10-24T04:18:54.2156932Z 629 โ const showChangedFilesPane =
2026-10-24T04:18:54.2157000Z 630 โ !showConnectionNotice &&
2026-10-24T04:18:54.2157070Z 631 โ selectedSection !== null &&
2026-10-24T04:18:54.2157147Z 632 โ parsedDiff.kind === "files" &&
2026-10-24T04:18:54.2157222Z 633 โ NativeReviewDiffView !== null;
2026-10-24T04:18:54.2157408Z 634 โ useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
2026-10-24T04:18:54.2157623Z 635 โ const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
2026-10-24T04:18:54.2157673Z 636 โ
2026-10-24T04:18:54.2157749Z 637 โ const listHeader = (() => {
2026-10-24T04:18:54.2157834Z 638 โ const children: ReactElement[] = [];
2026-10-24T04:18:54.2157882Z 639 โ
2026-10-24T04:18:54.2157941Z 640 โ if (error) {
2026-10-24T04:18:54.2158006Z 641 โ children.push(
2026-10-24T04:18:54.2158063Z 642 โ <View
2026-10-24T04:18:54.2158129Z 643 โ key="review-error"
2026-10-24T04:18:54.2158191Z 644 โ className={cn(
2026-10-24T04:18:54.2158270Z 645 โ "bg-card px-4 py-3",
2026-10-24T04:18:54.2158417Z 646 โ Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
2026-10-24T04:18:54.2158474Z 647 โ )}
2026-10-24T04:18:54.2158527Z 648 โ >
2026-10-24T04:18:54.2158684Z 649 โ <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
2026-10-24T04:18:54.2158840Z 650 โ <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
2026-10-24T04:18:54.2158901Z 651 โ </View>,
2026-10-24T04:18:54.2158954Z 652 โ );
2026-10-24T04:18:54.2159005Z 653 โ }
2026-10-24T04:18:54.2159053Z 654 โ
2026-10-24T04:18:54.2159122Z 655 โ if (parsedDiffNotice) {
2026-10-24T04:18:54.2159274Z 656 โ children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
2026-10-24T04:18:54.2159324Z 657 โ }
2026-10-24T04:18:54.2159372Z 658 โ
2026-10-24T04:18:54.2159444Z 659 โ if (children.length === 0) {
2026-10-24T04:18:54.2159505Z 660 โ return null;
2026-10-24T04:18:54.2159556Z 661 โ }
2026-10-24T04:18:54.2159604Z 662 โ
2026-10-24T04:18:54.2159670Z 663 โ return <>{children}</>;
2026-10-24T04:18:54.2159721Z 664 โ })();
2026-10-24T04:18:54.2159786Z 665 โ const headerSubtitle = [
2026-10-24T04:18:54.2159867Z 666 โ headerDiffSummary.additions,
2026-10-24T04:18:54.2159944Z 667 โ headerDiffSummary.deletions,
2026-10-24T04:18:54.2160021Z 668 โ pendingReviewCommentCount > 0
2026-10-24T04:18:54.2160184Z 669 โ ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
2026-10-24T04:18:54.2160241Z 670 โ : null,
2026-10-24T04:18:54.2160291Z 671 โ ]
2026-10-24T04:18:54.2160352Z 672 โ .filter(Boolean)
2026-10-24T04:18:54.2160410Z 673 โ .join(" ยท ");
2026-10-24T04:18:54.2160538Z 674 โ const headerTitleText = selectedSection?.title ?? "Review changes";
2026-10-24T04:18:54.2160587Z 675 โ
2026-10-24T04:18:54.2160644Z 676 โ return (
2026-10-24T04:18:54.2160694Z 677 โ <>
2026-10-24T04:18:54.2160754Z 678 โ <ReviewHeader
2026-10-24T04:18:54.2160833Z 679 โ environmentId={environmentId}
2026-10-24T04:18:54.2160957Z 680 โ threadId={threadId}
2026-10-24T04:18:54.2161087Z 681 โ title={headerTitleText}
2026-10-24T04:18:54.2161160Z 682 โ subtitle={headerSubtitle}
2026-10-24T04:18:54.2161255Z 683 โ androidSubtitle={androidHeaderSubtitle}
2026-10-24T04:18:54.2161325Z 684 โ iconColor={headerIcon}
2026-10-24T04:18:54.2161412Z 685 โ selectedThreadCwd={selectedThreadCwd}
2026-10-24T04:18:54.2161484Z 686 โ sectionMenu={sectionMenu}
2026-10-24T04:18:54.2161566Z 687 โ selectedSection={selectedSection}
2026-10-24T04:18:54.2161657Z 688 โ showSectionToolbar={showSectionToolbar}
2026-10-24T04:18:54.2161815Z 689 โ showChangedFilesToggle={showChangedFilesToggle}
2026-10-24T04:18:54.2161913Z 690 โ onRefresh={handlePullToRefresh}
2026-10-24T04:18:54.2161991Z 691 โ onSelectSection={selectSection}
2026-10-24T04:18:54.2162087Z 692 โ onReturnToThread={handleReturnToThread}
2026-10-24T04:18:54.2162143Z 693 โ />
2026-10-24T04:18:54.2162191Z 694 โ
2026-10-24T04:18:54.2162253Z 695 โ <ScreenContent>
2026-10-24T04:18:54.2162367Z 696 โ <View className="flex-1 bg-sheet android:bg-sheet-solid">
2026-10-24T04:18:54.2162443Z 697 โ {showConnectionNotice ? (
2026-10-24T04:18:54.2162582Z 698 โ <View className="flex-1" style={{ paddingTop: topContentInset }}>
2026-10-24T04:18:54.2162669Z 699 โ <EnvironmentConnectionNotice
2026-10-24T04:18:54.2162836Z 700 โ environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
2026-10-24T04:18:54.2162902Z 701 โ connection={
2026-10-24T04:18:54.2163003Z 702 โ environment.presentation?.connection ?? {
2026-10-24T04:18:54.2163080Z 703 โ phase: "available",
2026-10-24T04:18:54.2163152Z 704 โ error: null,
2026-10-24T04:18:54.2163226Z 705 โ traceId: null,
2026-10-24T04:18:54.2163285Z 706 โ }
2026-10-24T04:18:54.2163342Z 707 โ }
2026-10-24T04:18:54.2163418Z 708 โ resourceName="review"
2026-10-24T04:18:54.2163510Z 709 โ onRetry={handleRetryEnvironment}
2026-10-24T04:18:54.2163567Z 710 โ />
2026-10-24T04:18:54.2163626Z 711 โ </View>
2026-10-24T04:18:54.2163776Z 712 โ ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
2026-10-24T04:18:54.2163834Z 713 โ <View
2026-10-24T04:18:54.2163904Z 714 โ className="flex-1"
2026-10-24T04:18:54.2163964Z 715 โ style={{
2026-10-24T04:18:54.2164093Z 716 โ backgroundColor: nativeBridge.theme.background,
2026-10-24T04:18:54.2164184Z 717 โ }}
2026-10-24T04:18:54.2164243Z 718 โ >
2026-10-24T04:18:54.2164300Z 719 โ <View
2026-10-24T04:18:54.2164384Z 720 โ className="min-w-0 flex-1"
2026-10-24T04:18:54.2164516Z 721 โ style={listHeader ? { paddingTop: topContentInset } : undefined}
2026-10-24T04:18:54.2164572Z 722 โ >
2026-10-24T04:18:54.2164636Z 723 โ {listHeader}
2026-10-24T04:18:54.2164753Z 724 โ <View className="min-w-0 flex-1" collapsable={false}>
2026-10-24T04:18:54.2164832Z 725 โ <NativeReviewDiffView
2026-10-24T04:18:54.2164933Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2165094Z ยท โฐโโ This component is created during render
2026-10-24T04:18:54.2165223Z 726 โ collapsable={false}
2026-10-24T04:18:54.2165333Z โฐโโโโ
2026-10-24T04:18:54.2165575Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-24T04:18:54.2165884Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T04:18:54.2165887Z
2026-10-24T04:18:54.2166089Z โ eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-24T04:18:54.2166271Z โญโ[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-24T04:18:54.2166383Z 3 โ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-24T04:18:54.2166460Z 4 โ import * as Arr from "effect/Array";
2026-10-24T04:18:54.2166527Z ยท โโฌโ
2026-10-24T04:18:54.2166651Z ยท โฐโโ 'Arr' is imported here
2026-10-24T04:18:54.2166732Z 5 โ import * as Order from "effect/Order";
2026-10-24T04:18:54.2166781Z โฐโโโโ
2026-10-24T04:18:54.2166875Z help: Consider removing this import.
2026-10-24T04:18:54.2166878Z
2026-10-24T04:18:54.2167061Z โ eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-24T04:18:54.2167186Z โญโ[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-24T04:18:54.2167262Z 4 โ import * as Arr from "effect/Array";
2026-10-24T04:18:54.2167338Z 5 โ import * as Order from "effect/Order";
2026-10-24T04:18:54.2167410Z ยท โโโฌโโ
2026-10-24T04:18:54.2167532Z ยท โฐโโ 'Order' is imported here
2026-10-24T04:18:54.2167582Z 6 โ
2026-10-24T04:18:54.2167635Z โฐโโโโ
2026-10-24T04:18:54.2167733Z help: Consider removing this import.
2026-10-24T04:18:54.2167735Z
2026-10-24T04:18:54.2168187Z โ 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-24T04:18:54.2168337Z โญโ[packages/client-runtime/src/state/threads-sync.test.ts:1680:7]
2026-10-24T04:18:54.2168423Z 1679 โ yield* harness.replaceSession;
2026-10-24T04:18:54.2168625Z 1680 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2168770Z 1681 โ โ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) {
2026-10-24T04:18:54.2168859Z 1682 โ โ break;
2026-10-24T04:18:54.2168936Z 1683 โ โ }
2026-10-24T04:18:54.2169037Z 1684 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2169163Z 1685 โ โฐโโถ }
2026-10-24T04:18:54.2169234Z 1686 โ yield* Queue.offer(
2026-10-24T04:18:54.2169284Z โฐโโโโ
2026-10-24T04:18:54.2169286Z
2026-10-24T04:18:54.2169728Z โ 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-24T04:18:54.2169876Z โญโ[packages/client-runtime/src/state/threads-sync.test.ts:1789:7]
2026-10-24T04:18:54.2169961Z 1788 โ yield* harness.replaceSession;
2026-10-24T04:18:54.2170206Z 1789 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2170417Z 1790 โ โ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) break;
2026-10-24T04:18:54.2170518Z 1791 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2170644Z 1792 โ โฐโโถ }
2026-10-24T04:18:54.2170767Z 1793 โ expect(yield* Ref.get(harness.subscriptionCount)).toBe(2);
2026-10-24T04:18:54.2170816Z โฐโโโโ
2026-10-24T04:18:54.2170820Z
2026-10-24T04:18:54.2171344Z โ 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-24T04:18:54.2171479Z โญโ[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-24T04:18:54.2171607Z 180 โ it("sends a message without the records the wire cannot carry", () => {
2026-10-24T04:18:54.2171782Z 181 โ const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-24T04:18:54.2171884Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2171945Z 182 โ version: 1,
2026-10-24T04:18:54.2171993Z โฐโโโโ
2026-10-24T04:18:54.2171996Z
2026-10-24T04:18:54.2172155Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T04:18:54.2172269Z โญโ[apps/server/src/processRunner.test.ts:266:14]
2026-10-24T04:18:54.2172319Z 265 โ
2026-10-24T04:18:54.2172422Z 266 โ for (const {} of ["timeout", "success"] as const) {
2026-10-24T04:18:54.2172498Z ยท โโ
2026-10-24T04:18:54.2172551Z 267 โ }
2026-10-24T04:18:54.2172600Z โฐโโโโ
2026-10-24T04:18:54.2172822Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T04:18:54.2172825Z
2026-10-24T04:18:54.2173008Z โ eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-24T04:18:54.2173098Z โญโ[apps/server/src/ws.ts:10:13]
2026-10-24T04:18:54.2173182Z 9 โ import * as Effect from "effect/Effect";
2026-10-24T04:18:54.2173264Z 10 โ import * as Fiber from "effect/Fiber";
2026-10-24T04:18:54.2173335Z ยท โโโฌโโ
2026-10-24T04:18:54.2173458Z ยท โฐโโ 'Fiber' is imported here
2026-10-24T04:18:54.2173563Z 11 โ import * as FileSystem from "effect/FileSystem";
2026-10-24T04:18:54.2173615Z โฐโโโโ
2026-10-24T04:18:54.2173708Z help: Consider removing this import.
2026-10-24T04:18:54.2173711Z
2026-10-24T04:18:54.2173899Z โ eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-24T04:18:54.2173989Z โญโ[apps/server/src/ws.ts:17:13]
2026-10-24T04:18:54.2174086Z 16 โ import * as Ref from "effect/Ref";
2026-10-24T04:18:54.2174200Z 17 โ import * as Schedule from "effect/Schedule";
2026-10-24T04:18:54.2174273Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.2174402Z ยท โฐโโ 'Schedule' is imported here
2026-10-24T04:18:54.2174484Z 18 โ import * as Schema from "effect/Schema";
2026-10-24T04:18:54.2174532Z โฐโโโโ
2026-10-24T04:18:54.2174622Z help: Consider removing this import.
2026-10-24T04:18:54.2174673Z
2026-10-24T04:18:54.2175033Z โ eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.2175129Z โญโ[apps/server/src/ws.ts:1285:13]
2026-10-24T04:18:54.2175277Z 1284 โ const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-24T04:18:54.2175474Z 1285 โ const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-24T04:18:54.2175616Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T04:18:54.2175806Z ยท โฐโโ 'projectSetupScriptRunner' is declared here
2026-10-24T04:18:54.2175968Z 1286 โ const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-24T04:18:54.2176018Z โฐโโโโ
2026-10-24T04:18:54.2176122Z help: Consider removing this declaration.
2026-10-24T04:18:54.2176128Z
2026-10-24T04:18:54.2176781Z โ 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-24T04:18:54.2176976Z โญโ[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-24T04:18:54.2177041Z 38 โ JSON.stringify(
2026-10-24T04:18:54.2177154Z 39 โ Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-24T04:18:54.2177246Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2177311Z 40 โ { name: "a" },
2026-10-24T04:18:54.2177359Z โฐโโโโ
2026-10-24T04:18:54.2177361Z
2026-10-24T04:18:54.2177582Z โ unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T04:18:54.2177724Z โญโ[packages/client-runtime/src/operations/projects.ts:228:51]
2026-10-24T04:18:54.2177783Z 227 โ ): string {
2026-10-24T04:18:54.2177933Z 228 โ const folderName = workspaceRoot.split(/[\\/]/).filter(Boolean).at(-1) ?? "";
2026-10-24T04:18:54.2178039Z ยท โโโโโโ
2026-10-24T04:18:54.2178166Z 229 โ return target.owner ? `${target.owner}/${folderName}` : folderName;
2026-10-24T04:18:54.2178215Z โฐโโโโ
2026-10-24T04:18:54.2178378Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T04:18:54.2178381Z
2026-10-24T04:18:54.2178566Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T04:18:54.2178780Z โญโ[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-24T04:18:54.2178932Z 35 โ <T3SourceTextRunNativeComponent
2026-10-24T04:18:54.2178995Z 36 โ key={index}
2026-10-24T04:18:54.2179069Z ยท โโโโโโโโโโโ
2026-10-24T04:18:54.2179141Z 37 โ style={flattenedStyle}
2026-10-24T04:18:54.2179190Z โฐโโโโ
2026-10-24T04:18:54.2179330Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T04:18:54.2179332Z
2026-10-24T04:18:54.2179855Z โ 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-24T04:18:54.2179997Z โญโ[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-24T04:18:54.2180130Z 132 โ const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-24T04:18:54.2180270Z 133 โ โญโโถ for (
2026-10-24T04:18:54.2180369Z 134 โ โ let attempt = 0;
2026-10-24T04:18:54.2180529Z 135 โ โ attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-24T04:18:54.2180624Z 136 โ โ attempt += 1
2026-10-24T04:18:54.2180702Z 137 โ โ ) {
2026-10-24T04:18:54.2180808Z 138 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2180938Z 139 โ โฐโโถ }
2026-10-24T04:18:54.2181059Z 140 โ expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-24T04:18:54.2181107Z โฐโโโโ
2026-10-24T04:18:54.2181116Z
2026-10-24T04:18:54.2181459Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T04:18:54.2181588Z โญโ[apps/server/src/vcs/GitVcsDriverCore.test.ts:1786:34]
2026-10-24T04:18:54.2181715Z 1785 โ const stat = branch.files!.find((file) => file.path === path)!;
2026-10-24T04:18:54.2181857Z 1786 โ const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
2026-10-24T04:18:54.2181968Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2182028Z 1787 โ cwd,
2026-10-24T04:18:54.2182078Z โฐโโโโ
2026-10-24T04:18:54.2182080Z
2026-10-24T04:18:54.2182529Z โ 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-24T04:18:54.2182683Z โญโ[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
2026-10-24T04:18:54.2182737Z 27 โ ) {
2026-10-24T04:18:54.2182927Z 28 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2183063Z 29 โ โ const available = yield* service.peek(workspaceRoot);
2026-10-24T04:18:54.2183183Z 30 โ โ if (predicate(available)) return available;
2026-10-24T04:18:54.2183281Z 31 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2183396Z 32 โ โฐโโถ }
2026-10-24T04:18:54.2183622Z 33 โ return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
2026-10-24T04:18:54.2183721Z โฐโโโโ
2026-10-24T04:18:54.2183724Z
2026-10-24T04:18:54.2183884Z โ react(purity): Cannot call impure function during render
2026-10-24T04:18:54.2184000Z โญโ[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-24T04:18:54.2184138Z 820 โ const resolved = resolveThreadTarget(target);
2026-10-24T04:18:54.2184292Z 821 โ if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-24T04:18:54.2184457Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2184641Z ยท โฐโโ Cannot call impure function
2026-10-24T04:18:54.2184718Z 822 โ return AsyncResult.failure(
2026-10-24T04:18:54.2184767Z โฐโโโโ
2026-10-24T04:18:54.2185043Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T04:18:54.2185330Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T04:18:54.2185333Z
2026-10-24T04:18:54.2185492Z โ react(purity): Cannot call impure function during render
2026-10-24T04:18:54.2185608Z โญโ[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-24T04:18:54.2185677Z 708 โ const wokeAt = resolved
2026-10-24T04:18:54.2185806Z 709 โ ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-24T04:18:54.2185913Z ยท โโโโโโฌโโโโ
2026-10-24T04:18:54.2186069Z ยท โฐโโ Cannot call impure function
2026-10-24T04:18:54.2186130Z 710 โ : null;
2026-10-24T04:18:54.2186179Z โฐโโโโ
2026-10-24T04:18:54.2186441Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T04:18:54.2186723Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T04:18:54.2186725Z
2026-10-24T04:18:54.2186952Z โ unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
2026-10-24T04:18:54.2187071Z โญโ[apps/server/src/vcs/GitVcsDriverCore.ts:509:11]
2026-10-24T04:18:54.2187172Z 508 โ GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
2026-10-24T04:18:54.2187305Z 509 โ (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
2026-10-24T04:18:54.2187387Z ยท โโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2187441Z 510 โ )
2026-10-24T04:18:54.2187489Z โฐโโโโ
2026-10-24T04:18:54.2187636Z help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
2026-10-24T04:18:54.2187639Z
2026-10-24T04:18:54.2187894Z โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T04:18:54.2188005Z โญโ[apps/server/src/usage/UsageService.ts:169:7]
2026-10-24T04:18:54.2188055Z 168 โ
2026-10-24T04:18:54.2188129Z 169 โ const layerTest = Layer.succeed(
2026-10-24T04:18:54.2188200Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2188376Z ยท โฐโโ 'layerTest' is declared here
2026-10-24T04:18:54.2188493Z 170 โ UsageService,
2026-10-24T04:18:54.2188541Z โฐโโโโ
2026-10-24T04:18:54.2188643Z help: Consider removing this declaration.
2026-10-24T04:18:54.2188646Z
2026-10-24T04:18:54.2189093Z โ 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-24T04:18:54.2189289Z โญโ[apps/server/src/project/ProjectService.test.ts:94:3]
2026-10-24T04:18:54.2189343Z 93 โ ) {
2026-10-24T04:18:54.2189534Z 94 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T04:18:54.2189704Z 95 โ โ const project = Option.getOrThrow(yield* service.getById(projectId));
2026-10-24T04:18:54.2189822Z 96 โ โ if (predicate(project)) return project;
2026-10-24T04:18:54.2189918Z 97 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2190034Z 98 โ โฐโโถ }
2026-10-24T04:18:54.2190178Z 99 โ return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
2026-10-24T04:18:54.2190226Z โฐโโโโ
2026-10-24T04:18:54.2190228Z
2026-10-24T04:18:54.2190669Z โ 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-24T04:18:54.2190790Z โญโ[apps/server/src/usage/UsageService.test.ts:2383:7]
2026-10-24T04:18:54.2190887Z 2382 โ let orphanedAt: number | undefined;
2026-10-24T04:18:54.2191109Z 2383 โ โญโโถ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-24T04:18:54.2191226Z 2384 โ โ const tasks: Array<() => void> = [];
2026-10-24T04:18:54.2191370Z 2385 โ โ const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-24T04:18:54.2191494Z 2386 โ โ scheduleTask: (task) => tasks.push(task),
2026-10-24T04:18:54.2191589Z 2387 โ โ flush: () => {
2026-10-24T04:18:54.2191708Z 2388 โ โ let task: (() => void) | undefined;
2026-10-24T04:18:54.2191848Z 2389 โ โ while ((task = tasks.shift()) !== undefined) task();
2026-10-24T04:18:54.2191931Z 2390 โ โ },
2026-10-24T04:18:54.2192014Z 2391 โ โ };
2026-10-24T04:18:54.2192082Z 2392 โ โ
2026-10-24T04:18:54.2192236Z 2393 โ โ let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-24T04:18:54.2192335Z 2394 โ โ let requestChecks = 0;
2026-10-24T04:18:54.2192459Z 2395 โ โ const scheduler: Scheduler.Scheduler = {
2026-10-24T04:18:54.2192565Z 2396 โ โ executionMode: "async",
2026-10-24T04:18:54.2192682Z 2397 โ โ makeDispatcher: () => dispatcher,
2026-10-24T04:18:54.2192788Z 2398 โ โ shouldYield: (fiber) => {
2026-10-24T04:18:54.2192917Z 2399 โ โ if (fiber !== requestFiber) return false;
2026-10-24T04:18:54.2193067Z 2400 โ โ requestChecks += 1;
2026-10-24T04:18:54.2193264Z 2401 โ โ if (requestChecks !== interruptAt) return false;
2026-10-24T04:18:54.2193374Z 2402 โ โ fiber.interruptUnsafe();
2026-10-24T04:18:54.2193467Z 2403 โ โ return true;
2026-10-24T04:18:54.2193545Z 2404 โ โ },
2026-10-24T04:18:54.2193624Z 2405 โ โ };
2026-10-24T04:18:54.2193690Z 2406 โ โ
2026-10-24T04:18:54.2193813Z 2407 โ โ const input: UsageSummaryInput = {
2026-10-24T04:18:54.2193916Z 2408 โ โ ...WINDOW,
2026-10-24T04:18:54.2194102Z 2409 โ โ sinceDay: UsageDay.make("2026-09-01"),
2026-10-24T04:18:54.2194331Z 2410 โ โ untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-24T04:18:54.2194412Z 2411 โ โ };
2026-10-24T04:18:54.2194521Z 2412 โ โ const first = yield* service
2026-10-24T04:18:54.2194623Z 2413 โ โ .readSummary(input)
2026-10-24T04:18:54.2194706Z 2414 โ โ .pipe(
2026-10-24T04:18:54.2194800Z 2415 โ โ Effect.exit,
2026-10-24T04:18:54.2194952Z 2416 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-24T04:18:54.2195052Z 2417 โ โ Effect.forkChild,
2026-10-24T04:18:54.2195128Z 2418 โ โ );
2026-10-24T04:18:54.2195226Z 2419 โ โ requestFiber = first;
2026-10-24T04:18:54.2195331Z 2420 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2195433Z 2421 โ โ dispatcher.flush();
2026-10-24T04:18:54.2195499Z 2422 โ โ
2026-10-24T04:18:54.2195645Z 2423 โ โ const second = yield* service.readSummary(input).pipe(
2026-10-24T04:18:54.2195739Z 2424 โ โ Effect.match({
2026-10-24T04:18:54.2195857Z 2425 โ โ onFailure: (error) => error.reason,
2026-10-24T04:18:54.2195974Z 2426 โ โ onSuccess: () => "success" as const,
2026-10-24T04:18:54.2196055Z 2427 โ โ }),
2026-10-24T04:18:54.2196203Z 2428 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-24T04:18:54.2196305Z 2429 โ โ Effect.forkChild,
2026-10-24T04:18:54.2196385Z 2430 โ โ );
2026-10-24T04:18:54.2196487Z 2431 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2196584Z 2432 โ โ dispatcher.flush();
2026-10-24T04:18:54.2196707Z 2433 โ โ const secondExit = second.pollUnsafe();
2026-10-24T04:18:54.2196820Z 2434 โ โ if (secondExit === undefined) {
2026-10-24T04:18:54.2196930Z 2435 โ โ second.interruptUnsafe();
2026-10-24T04:18:54.2197037Z 2436 โ โ orphanedAt = interruptAt;
2026-10-24T04:18:54.2197121Z 2437 โ โ break;
2026-10-24T04:18:54.2197197Z 2438 โ โ }
2026-10-24T04:18:54.2197360Z 2439 โ โ if (Exit.isFailure(secondExit)) {
2026-10-24T04:18:54.2197573Z 2440 โ โ assert.fail("the matching request fiber was interrupted");
2026-10-24T04:18:54.2197648Z 2441 โ โ }
2026-10-24T04:18:54.2197792Z 2442 โ โ assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-24T04:18:54.2197921Z 2443 โ โฐโโถ }
2026-10-24T04:18:54.2197974Z 2444 โ
2026-10-24T04:18:54.2198023Z โฐโโโโ
2026-10-24T04:18:54.2198026Z
2026-10-24T04:18:54.2198345Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2198511Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-24T04:18:54.2198561Z 76 โ
2026-10-24T04:18:54.2198628Z 77 โ useEffect(() => {
2026-10-24T04:18:54.2198701Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2198823Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2198945Z 78 โ const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-24T04:18:54.2199010Z 79 โ setHostInput(host);
2026-10-24T04:18:54.2199080Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.2199239Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2199303Z 80 โ setCodeInput(code);
2026-10-24T04:18:54.2199351Z โฐโโโโ
2026-10-24T04:18:54.2199943Z 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-24T04:18:54.2200259Z 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-24T04:18:54.2200261Z
2026-10-24T04:18:54.2200510Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2200674Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-24T04:18:54.2200723Z 82 โ
2026-10-24T04:18:54.2200784Z 83 โ useEffect(() => {
2026-10-24T04:18:54.2200850Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2200972Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2201058Z 84 โ if (routePairingUrl.length === 0) {
2026-10-24T04:18:54.2201163Z 85 โ return;
2026-10-24T04:18:54.2201268Z 86 โ }
2026-10-24T04:18:54.2201317Z 87 โ
2026-10-24T04:18:54.2201428Z 88 โ const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-24T04:18:54.2201490Z 89 โ setHostInput(host);
2026-10-24T04:18:54.2201562Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.2201721Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2201783Z 90 โ setCodeInput(code);
2026-10-24T04:18:54.2201831Z โฐโโโโ
2026-10-24T04:18:54.2202499Z 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-24T04:18:54.2202819Z 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-24T04:18:54.2202821Z
2026-10-24T04:18:54.2203071Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2203233Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-24T04:18:54.2203281Z 92 โ
2026-10-24T04:18:54.2203342Z 93 โ useEffect(() => {
2026-10-24T04:18:54.2203408Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2203531Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2203609Z 94 โ if (pairingConnectionError) {
2026-10-24T04:18:54.2203678Z 95 โ setIsSubmitting(false);
2026-10-24T04:18:54.2203759Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2203924Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2203976Z 96 โ }
2026-10-24T04:18:54.2204041Z โฐโโโโ
2026-10-24T04:18:54.2204639Z 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-24T04:18:54.2204948Z 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-24T04:18:54.2204951Z
2026-10-24T04:18:54.2205204Z โ unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-24T04:18:54.2205342Z โญโ[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-24T04:18:54.2205490Z 11 โ addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-24T04:18:54.2205566Z 12 โ this.onmessage = listener;
2026-10-24T04:18:54.2205641Z ยท โโโโโโโโโ
2026-10-24T04:18:54.2205694Z 13 โ }
2026-10-24T04:18:54.2205743Z โฐโโโโ
2026-10-24T04:18:54.2206049Z help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-24T04:18:54.2206051Z
2026-10-24T04:18:54.2206249Z โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T04:18:54.2206430Z โญโ[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-24T04:18:54.2206609Z 15 โ constructor() {
2026-10-24T04:18:54.2206672Z 16 โ source = this;
2026-10-24T04:18:54.2206741Z ยท โโโโโโ
2026-10-24T04:18:54.2206792Z 17 โ }
2026-10-24T04:18:54.2206840Z โฐโโโโ
2026-10-24T04:18:54.2207102Z 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-24T04:18:54.2207105Z
2026-10-24T04:18:54.2207268Z โ react(immutability): This value cannot be modified
2026-10-24T04:18:54.2207486Z โญโ[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-24T04:18:54.2207580Z 53 โ function usePulseAnimation(pulse: boolean) {
2026-10-24T04:18:54.2207674Z 54 โ const pulseProgress = useSharedValue(0);
2026-10-24T04:18:54.2207754Z ยท โโโโโโโฌโโโโโโ
2026-10-24T04:18:54.2207887Z ยท โฐโโ `pulseProgress` originates here
2026-10-24T04:18:54.2207938Z 55 โ
2026-10-24T04:18:54.2208000Z 56 โ useEffect(() => {
2026-10-24T04:18:54.2208061Z 57 โ if (pulse) {
2026-10-24T04:18:54.2208143Z 58 โ pulseProgress.value = withRepeat(
2026-10-24T04:18:54.2208219Z ยท โโโโโโโฌโโโโโโ
2026-10-24T04:18:54.2208356Z ยท โฐโโ `pulseProgress` cannot be modified
2026-10-24T04:18:54.2208419Z 59 โ withTiming(1, {
2026-10-24T04:18:54.2208467Z โฐโโโโ
2026-10-24T04:18:54.2208727Z 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-24T04:18:54.2209028Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T04:18:54.2209033Z
2026-10-24T04:18:54.2209467Z โ 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-24T04:18:54.2209589Z โญโ[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-24T04:18:54.2209752Z 1740 โ const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-24T04:18:54.2209929Z 1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T04:18:54.2210044Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2210151Z 1742 โ const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T04:18:54.2210200Z โฐโโโโ
2026-10-24T04:18:54.2210202Z
2026-10-24T04:18:54.2210630Z โ 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-24T04:18:54.2210747Z โญโ[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-24T04:18:54.2210924Z 1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T04:18:54.2211027Z 1742 โ const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T04:18:54.2211137Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T04:18:54.2211306Z 1743 โ Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-24T04:18:54.2211408Z โฐโโโโ
2026-10-24T04:18:54.2211411Z
2026-10-24T04:18:54.2211862Z โ 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-24T04:18:54.2212043Z โญโ[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T04:18:54.2212114Z 520 โ })).delivery;
2026-10-24T04:18:54.2212371Z 521 โ โญโโถ while (delivery.outcome === "accepted") {
2026-10-24T04:18:54.2212480Z 522 โ โ yield* Effect.yieldNow;
2026-10-24T04:18:54.2212619Z 523 โ โ delivery = (yield* service.getWebhookDelivery({
2026-10-24T04:18:54.2212719Z 524 โ โ id: task.id,
2026-10-24T04:18:54.2212833Z 525 โ โ deliveryId: deliveryId!,
2026-10-24T04:18:54.2212926Z 526 โ โ })).delivery;
2026-10-24T04:18:54.2213058Z 527 โ โฐโโถ }
2026-10-24T04:18:54.2213168Z 528 โ assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T04:18:54.2213218Z โฐโโโโ
2026-10-24T04:18:54.2213220Z
2026-10-24T04:18:54.2213471Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2213625Z โญโ[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-24T04:18:54.2213793Z 112 โ const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-24T04:18:54.2213859Z 113 โ useEffect(() => {
2026-10-24T04:18:54.2213928Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2214086Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2214241Z 114 โ if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-24T04:18:54.2214300Z 115 โ return;
2026-10-24T04:18:54.2214353Z 116 โ }
2026-10-24T04:18:54.2214468Z 117 โ setEntry({ key: input.targetKey, location: candidate });
2026-10-24T04:18:54.2214535Z ยท โโโโโฌโโโ
2026-10-24T04:18:54.2214697Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2214814Z 118 โ }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-24T04:18:54.2214863Z โฐโโโโ
2026-10-24T04:18:54.2215444Z 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-24T04:18:54.2215761Z 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-24T04:18:54.2215764Z
2026-10-24T04:18:54.2215965Z โ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-24T04:18:54.2216084Z โญโ[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-24T04:18:54.2216134Z 78 โ
2026-10-24T04:18:54.2216311Z 79 โ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-24T04:18:54.2216450Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2216752Z ยท โฐโโ 'describeSchedule' is declared here
2026-10-24T04:18:54.2216855Z 80 โ if (schedule.type === "webhook") return "On webhook";
2026-10-24T04:18:54.2216902Z โฐโโโโ
2026-10-24T04:18:54.2217001Z help: Consider removing this declaration.
2026-10-24T04:18:54.2217004Z
2026-10-24T04:18:54.2217304Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T04:18:54.2217468Z โญโ[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-24T04:18:54.2217537Z 3 โ AuthProvidersManageScope,
2026-10-24T04:18:54.2217604Z 4 โ type AuthSessionState,
2026-10-24T04:18:54.2217684Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2217830Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T04:18:54.2217897Z 5 โ type EnvironmentId,
2026-10-24T04:18:54.2217946Z โฐโโโโ
2026-10-24T04:18:54.2218041Z help: Consider removing this import.
2026-10-24T04:18:54.2218043Z
2026-10-24T04:18:54.2218204Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T04:18:54.2218337Z โญโ[apps/server/src/process/externalLauncher.test.ts:186:12]
2026-10-24T04:18:54.2218388Z 185 โ
2026-10-24T04:18:54.2218487Z 186 โ for (const {} of ["darwin", "linux"] as const) {
2026-10-24T04:18:54.2218556Z ยท โโ
2026-10-24T04:18:54.2218605Z 187 โ }
2026-10-24T04:18:54.2218654Z โฐโโโโ
2026-10-24T04:18:54.2218881Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T04:18:54.2218885Z
2026-10-24T04:18:54.2219044Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T04:18:54.2219175Z โญโ[apps/server/src/process/externalLauncher.test.ts:189:12]
2026-10-24T04:18:54.2219225Z 188 โ
2026-10-24T04:18:54.2219287Z 189 โ for (const {} of [
2026-10-24T04:18:54.2219353Z ยท โโ
2026-10-24T04:18:54.2219439Z 190 โ { kind: "browser", folderVerb: "none" },
2026-10-24T04:18:54.2219489Z โฐโโโโ
2026-10-24T04:18:54.2219706Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T04:18:54.2219709Z
2026-10-24T04:18:54.2219865Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T04:18:54.2220000Z โญโ[apps/server/src/process/externalLauncher.test.ts:311:12]
2026-10-24T04:18:54.2220054Z 310 โ
2026-10-24T04:18:54.2220178Z 311 โ for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
2026-10-24T04:18:54.2220243Z ยท โโ
2026-10-24T04:18:54.2220293Z 312 โ }
2026-10-24T04:18:54.2220341Z โฐโโโโ
2026-10-24T04:18:54.2220559Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T04:18:54.2220561Z
2026-10-24T04:18:54.2220718Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T04:18:54.2220847Z โญโ[apps/server/src/process/externalLauncher.test.ts:314:12]
2026-10-24T04:18:54.2220897Z 313 โ
2026-10-24T04:18:54.2220958Z 314 โ for (const {} of [
2026-10-24T04:18:54.2221094Z ยท โโ
2026-10-24T04:18:54.2221212Z 315 โ {
2026-10-24T04:18:54.2221261Z โฐโโโโ
2026-10-24T04:18:54.2221478Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T04:18:54.2221480Z
2026-10-24T04:18:54.2221753Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T04:18:54.2221907Z โญโ[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T04:18:54.2221990Z 162 โ keys,
2026-10-24T04:18:54.2222099Z 163 โ overridingProjects = [],
2026-10-24T04:18:54.2222179Z ยท โโ
2026-10-24T04:18:54.2222242Z 164 โ onClearOverrides,
2026-10-24T04:18:54.2222290Z โฐโโโโ
2026-10-24T04:18:54.2222602Z 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-24T04:18:54.2222607Z
2026-10-24T04:18:54.2222857Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2223011Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-24T04:18:54.2223118Z 37 โ const [initialized, setInitialized] = useState(false);
2026-10-24T04:18:54.2223184Z 38 โ useLayoutEffect(() => {
2026-10-24T04:18:54.2223259Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2223385Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2223441Z 39 โ reset();
2026-10-24T04:18:54.2223506Z 40 โ setInitialized(true);
2026-10-24T04:18:54.2223586Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T04:18:54.2223749Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2223808Z 41 โ }, [reset]);
2026-10-24T04:18:54.2223856Z โฐโโโโ
2026-10-24T04:18:54.2224471Z 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-24T04:18:54.2224784Z 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-24T04:18:54.2224787Z
2026-10-24T04:18:54.2225039Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2225194Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-24T04:18:54.2225244Z 88 โ
2026-10-24T04:18:54.2225305Z 89 โ useEffect(() => {
2026-10-24T04:18:54.2225371Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2225494Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2225648Z 90 โ if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-24T04:18:54.2225747Z 91 โ const branchName = initialProjectRef.branch;
2026-10-24T04:18:54.2225810Z 92 โ let active = true;
2026-10-24T04:18:54.2225903Z 93 โ setPendingCheckouts((count) => count + 1);
2026-10-24T04:18:54.2225983Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T04:18:54.2226204Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2226411Z 94 โ // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-24T04:18:54.2226460Z โฐโโโโ
2026-10-24T04:18:54.2227052Z 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-24T04:18:54.2227422Z 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-24T04:18:54.2227425Z
2026-10-24T04:18:54.2227675Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2227825Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-24T04:18:54.2227876Z 55 โ
2026-10-24T04:18:54.2227936Z 56 โ useEffect(() => {
2026-10-24T04:18:54.2228004Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2228125Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2228191Z 57 โ setDecodedSize(null);
2026-10-24T04:18:54.2228264Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T04:18:54.2228424Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2228489Z 58 โ }, [props.sourceKey]);
2026-10-24T04:18:54.2228538Z โฐโโโโ
2026-10-24T04:18:54.2229121Z 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-24T04:18:54.2229434Z 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-24T04:18:54.2229436Z
2026-10-24T04:18:54.2229684Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T04:18:54.2229829Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-24T04:18:54.2229879Z 59 โ
2026-10-24T04:18:54.2229940Z 60 โ useEffect(() => {
2026-10-24T04:18:54.2230006Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2230179Z ยท โฐโโ This is the containing effect
2026-10-24T04:18:54.2230299Z 61 โ setFailedUri(null);
2026-10-24T04:18:54.2230372Z ยท โโโโโโโฌโโโโโ
2026-10-24T04:18:54.2230531Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T04:18:54.2230592Z 62 โ }, [props.uri]);
2026-10-24T04:18:54.2230640Z โฐโโโโ
2026-10-24T04:18:54.2231292Z 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-24T04:18:54.2231607Z 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-24T04:18:54.2231612Z
2026-10-24T04:18:54.2231818Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T04:18:54.2231961Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-24T04:18:54.2232081Z 6 โ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-24T04:18:54.2232253Z 7 โ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-24T04:18:54.2232338Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T04:18:54.2232479Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-24T04:18:54.2232530Z 8 โ
2026-10-24T04:18:54.2232579Z โฐโโโโ
2026-10-24T04:18:54.2232674Z help: Consider removing this import.
2026-10-24T04:18:54.2232676Z
2026-10-24T04:18:54.2232873Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2233022Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-24T04:18:54.2233088Z 57 โ setDecodedSize(null);
2026-10-24T04:18:54.2233154Z 58 โ }, [props.sourceKey]);
2026-10-24T04:18:54.2233230Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T04:18:54.2233378Z ยท โฐโโ Unnecessary dependency `props.sourceKey`
2026-10-24T04:18:54.2233427Z 59 โ
2026-10-24T04:18:54.2233475Z โฐโโโโ
2026-10-24T04:18:54.2233758Z 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-24T04:18:54.2234080Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2234085Z
2026-10-24T04:18:54.2234310Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T04:18:54.2234455Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-24T04:18:54.2234520Z 61 โ setFailedUri(null);
2026-10-24T04:18:54.2234580Z 62 โ }, [props.uri]);
2026-10-24T04:18:54.2234650Z ยท โโโโโฌโโโโ
2026-10-24T04:18:54.2234785Z ยท โฐโโ Unnecessary dependency `props.uri`
2026-10-24T04:18:54.2234834Z 63 โ
2026-10-24T04:18:54.2234881Z โฐโโโโ
2026-10-24T04:18:54.2235162Z 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-24T04:18:54.2235509Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T04:18:54.2235551Z
2026-10-24T04:18:54.2235651Z Found 0 errors and 362 warnings in 5408 files (4.9s, 8 threads)
2026-10-24T04:18:54.2676882Z Post job cleanup.
2026-10-24T04:18:54.3291584Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T04:18:54.3353354Z Post job cleanup.
2026-10-24T04:18:54.3374245Z ##[start-action display=Cache full pnpm store;id=__00596d12-3713-4e5a-9881-655c91b4006e.__actions_cache]
2026-10-24T04:18:54.3665325Z Post job cleanup.
2026-10-24T04:18:54.4282748Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-24T04:18:54.4310548Z ##[end-action id=__00596d12-3713-4e5a-9881-655c91b4006e.__actions_cache;outcome=success;conclusion=success;duration_ms=93]
2026-10-24T04:18:54.4312195Z ##[start-action display=Cache Vite+;id=__00596d12-3713-4e5a-9881-655c91b4006e.vp_cache]
2026-10-24T04:18:54.4331280Z Post job cleanup.
2026-10-24T04:18:54.4889178Z 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-24T04:18:54.4918058Z ##[end-action id=__00596d12-3713-4e5a-9881-655c91b4006e.vp_cache;outcome=success;conclusion=success;duration_ms=60]
2026-10-24T04:18:54.4952969Z Post job cleanup.
2026-10-24T04:18:54.5320019Z [command]/usr/local/bin/git version
2026-10-24T04:18:54.5346912Z git version 2.55.0
2026-10-24T04:18:54.5362381Z Temporarily overriding HOME='/home/runner/_work/_temp/3bb558c1-f77e-40c2-9d0d-70fd4e244d3f' before making global git config changes
2026-10-24T04:18:54.5362727Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T04:18:54.5365108Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T04:18:54.5385185Z Removing SSH command configuration
2026-10-24T04:18:54.5387886Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T04:18:54.5408493Z [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-24T04:18:54.5519326Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T04:18:54.5539131Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T04:18:54.5569662Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T04:18:54.5585577Z ##[group]Run '/job_completed.sh'
2026-10-24T04:18:54.5592403Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T04:18:54.5592596Z env:
2026-10-24T04:18:54.5592710Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 156
2026-10-24T04:18:54.5592871Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 354
2026-10-24T04:18:54.5593010Z BLACKSMITH_CHECK_RUN_ID: 120776724055
2026-10-24T04:18:54.5593144Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T04:18:54.5593280Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T04:18:54.5593406Z ##[endgroup]
2026-10-24T04:18:54.5663111Z Docker container cache not activated, skipping hash computation.
2026-10-24T04:18:54.5901570Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T04:18:54.5940310Z Cleaning up orphan processes