GitHub check
256 KB of 604 KB loaded Download the full log (604 KB)
348 KB of earlier output not loaded
691250Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T11:06:37.7691365Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7691533Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7691632Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T11:06:37.7691683Z โฐโโโโ
2026-10-24T11:06:37.7692202Z 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-24T11:06:37.7692527Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7692529Z
2026-10-24T11:06:37.7692672Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7692830Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T11:06:37.7692940Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T11:06:37.7693135Z 127 โ โญโโถ const recorder = createLazyVoiceRecorder({
2026-10-24T11:06:37.7693310Z 128 โ โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T11:06:37.7693442Z 129 โ โ onStatus: (status: RecordingStatus) => {
2026-10-24T11:06:37.7693599Z 130 โ โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T11:06:37.7693717Z 131 โ โ isFinished: status.isFinished,
2026-10-24T11:06:37.7693895Z 132 โ โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T11:06:37.7693999Z 133 โ โ error: status.error,
2026-10-24T11:06:37.7694096Z 134 โ โ url: status.url,
2026-10-24T11:06:37.7694178Z 135 โ โ });
2026-10-24T11:06:37.7694255Z 136 โ โ },
2026-10-24T11:06:37.7694454Z 137 โ โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T11:06:37.7694568Z 138 โ โ selectInput: (inputs) => {
2026-10-24T11:06:37.7694727Z 139 โ โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T11:06:37.7694872Z 140 โ โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T11:06:37.7695040Z 141 โ โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T11:06:37.7695180Z 142 โ โ const order = rememberMicrophones(known, inputs);
2026-10-24T11:06:37.7695282Z 143 โ โ if (order !== known) {
2026-10-24T11:06:37.7695421Z 144 โ โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T11:06:37.7695537Z 145 โ โ transform: (current) => ({
2026-10-24T11:06:37.7695748Z 146 โ โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T11:06:37.7695835Z 147 โ โ }),
2026-10-24T11:06:37.7695917Z 148 โ โ });
2026-10-24T11:06:37.7695996Z 149 โ โ }
2026-10-24T11:06:37.7696136Z 150 โ โ return preferredMicrophoneInput(inputs, order);
2026-10-24T11:06:37.7696212Z 151 โ โ },
2026-10-24T11:06:37.7696346Z 152 โ โโโถ });
2026-10-24T11:06:37.7696585Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7696674Z 153 โ recorderRef.current = recorder;
2026-10-24T11:06:37.7696727Z โฐโโโโ
2026-10-24T11:06:37.7697249Z 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-24T11:06:37.7697571Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7697573Z
2026-10-24T11:06:37.7697719Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7697881Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T11:06:37.7697938Z 152 โ });
2026-10-24T11:06:37.7698019Z 153 โ recorderRef.current = recorder;
2026-10-24T11:06:37.7698134Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T11:06:37.7698353Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T11:06:37.7698474Z ยท โฐโโ This value is a ref
2026-10-24T11:06:37.7698580Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T11:06:37.7698633Z โฐโโโโ
2026-10-24T11:06:37.7699099Z 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-24T11:06:37.7699389Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7699393Z
2026-10-24T11:06:37.7699535Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7699699Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T11:06:37.7699791Z 153 โ recorderRef.current = recorder;
2026-10-24T11:06:37.7699989Z 154 โ โญโโถ sessionRef.current = new VoiceInputSession({
2026-10-24T11:06:37.7700073Z 155 โ โ recorder,
2026-10-24T11:06:37.7700203Z 156 โ โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T11:06:37.7700321Z 157 โ โ requestPermission: async () => {
2026-10-24T11:06:37.7700486Z 158 โ โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T11:06:37.7700677Z 159 โ โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T11:06:37.7700763Z 160 โ โ },
2026-10-24T11:06:37.7700909Z 161 โ โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T11:06:37.7701045Z 162 โ โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T11:06:37.7701179Z 163 โ โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T11:06:37.7701293Z 164 โ โ onStateChange: (nextState) =>
2026-10-24T11:06:37.7701387Z 165 โ โ setState({
2026-10-24T11:06:37.7701491Z 166 โ โ state: nextState,
2026-10-24T11:06:37.7701627Z 167 โ โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T11:06:37.7701757Z 168 โ โ label: sessionRef.current?.label ?? null,
2026-10-24T11:06:37.7701839Z 169 โ โ }),
2026-10-24T11:06:37.7702025Z 170 โ โโโถ });
2026-10-24T11:06:37.7702252Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T11:06:37.7702310Z 171 โ }
2026-10-24T11:06:37.7702364Z โฐโโโโ
2026-10-24T11:06:37.7702840Z 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-24T11:06:37.7703256Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7703259Z
2026-10-24T11:06:37.7703408Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7703571Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T11:06:37.7703655Z 153 โ recorderRef.current = recorder;
2026-10-24T11:06:37.7703759Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T11:06:37.7703872Z ยท โโโโโโฌโโโโโโโโโฌโโโ
2026-10-24T11:06:37.7704056Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T11:06:37.7704173Z ยท โฐโโ This value is a ref
2026-10-24T11:06:37.7704238Z 155 โ recorder,
2026-10-24T11:06:37.7704291Z โฐโโโโ
2026-10-24T11:06:37.7704768Z 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-24T11:06:37.7705064Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7705067Z
2026-10-24T11:06:37.7705212Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7705371Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T11:06:37.7705457Z 184 โ return () => subscription.remove();
2026-10-24T11:06:37.7705524Z 185 โ }, [controller]);
2026-10-24T11:06:37.7705604Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7705750Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7705803Z 186 โ
2026-10-24T11:06:37.7705856Z โฐโโโโ
2026-10-24T11:06:37.7706329Z 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-24T11:06:37.7706623Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7706625Z
2026-10-24T11:06:37.7706768Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7706926Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T11:06:37.7707013Z 184 โ return () => subscription.remove();
2026-10-24T11:06:37.7707077Z 185 โ }, [controller]);
2026-10-24T11:06:37.7707153Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7707369Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7707470Z 186 โ
2026-10-24T11:06:37.7707522Z โฐโโโโ
2026-10-24T11:06:37.7707990Z 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-24T11:06:37.7708306Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7708308Z
2026-10-24T11:06:37.7708451Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7708609Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T11:06:37.7708670Z 191 โ },
2026-10-24T11:06:37.7708744Z 192 โ [controller, recorder],
2026-10-24T11:06:37.7708821Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7708965Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7709021Z 193 โ );
2026-10-24T11:06:37.7709071Z โฐโโโโ
2026-10-24T11:06:37.7709535Z 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-24T11:06:37.7709827Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7709829Z
2026-10-24T11:06:37.7709976Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7710140Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T11:06:37.7710231Z 174 โ const controller = session.controller;
2026-10-24T11:06:37.7710319Z 175 โ const recorder = recorderRef.current;
2026-10-24T11:06:37.7710424Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7710584Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7710636Z 176 โ
2026-10-24T11:06:37.7710688Z โฐโโโโ
2026-10-24T11:06:37.7711155Z 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-24T11:06:37.7711453Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7711458Z
2026-10-24T11:06:37.7711600Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7711762Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T11:06:37.7711819Z 191 โ },
2026-10-24T11:06:37.7711890Z 192 โ [controller, recorder],
2026-10-24T11:06:37.7711979Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7712128Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7712184Z 193 โ );
2026-10-24T11:06:37.7712236Z โฐโโโโ
2026-10-24T11:06:37.7712771Z 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-24T11:06:37.7713101Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7713104Z
2026-10-24T11:06:37.7713245Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7713402Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T11:06:37.7713495Z 245 โ return () => clearInterval(intervalId);
2026-10-24T11:06:37.7713605Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T11:06:37.7713694Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7713854Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7713912Z 247 โ
2026-10-24T11:06:37.7713963Z โฐโโโโ
2026-10-24T11:06:37.7714434Z 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-24T11:06:37.7714726Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7714729Z
2026-10-24T11:06:37.7714871Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7715029Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T11:06:37.7715124Z 245 โ return () => clearInterval(intervalId);
2026-10-24T11:06:37.7715237Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T11:06:37.7715371Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7715532Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7715583Z 247 โ
2026-10-24T11:06:37.7715635Z โฐโโโโ
2026-10-24T11:06:37.7716103Z 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-24T11:06:37.7716394Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7716466Z
2026-10-24T11:06:37.7716648Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7716804Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T11:06:37.7716872Z 260 โ setOwnerFocused,
2026-10-24T11:06:37.7716934Z 261 โ session,
2026-10-24T11:06:37.7717006Z ยท โโโโฌโโโ
2026-10-24T11:06:37.7717144Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7717204Z 262 โ stop,
2026-10-24T11:06:37.7717256Z โฐโโโโ
2026-10-24T11:06:37.7717727Z 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-24T11:06:37.7718021Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7718027Z
2026-10-24T11:06:37.7718169Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7718350Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T11:06:37.7718405Z 250 โ
2026-10-24T11:06:37.7718545Z 251 โ โญโโถ return {
2026-10-24T11:06:37.7718757Z 252 โ โ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T11:06:37.7718838Z 253 โ โ state,
2026-10-24T11:06:37.7718928Z 254 โ โ audioLevels,
2026-10-24T11:06:37.7719025Z 255 โ โ elapsedSeconds,
2026-10-24T11:06:37.7719159Z 256 โ โ isBusy: voiceInputBlocksSubmission(state),
2026-10-24T11:06:37.7719240Z 257 โ โ ownerKey,
2026-10-24T11:06:37.7719318Z 258 โ โ label,
2026-10-24T11:06:37.7719409Z 259 โ โ focusedOwners,
2026-10-24T11:06:37.7719504Z 260 โ โ setOwnerFocused,
2026-10-24T11:06:37.7719586Z 261 โ โ session,
2026-10-24T11:06:37.7719664Z 262 โ โ stop,
2026-10-24T11:06:37.7719742Z 263 โ โ cancel,
2026-10-24T11:06:37.7719873Z 264 โ โโโถ };
2026-10-24T11:06:37.7720079Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T11:06:37.7720138Z 265 โ }
2026-10-24T11:06:37.7720189Z โฐโโโโ
2026-10-24T11:06:37.7720663Z 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-24T11:06:37.7720957Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7720960Z
2026-10-24T11:06:37.7721117Z โ react(immutability): This value cannot be modified
2026-10-24T11:06:37.7721277Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T11:06:37.7721495Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T11:06:37.7721654Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T11:06:37.7721736Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7721873Z ยท โฐโโ `audioLevels` originates here
2026-10-24T11:06:37.7721992Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T11:06:37.7722138Z 124 โ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T11:06:37.7722191Z 125 โ
2026-10-24T11:06:37.7722298Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T11:06:37.7722398Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T11:06:37.7722540Z 128 โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T11:06:37.7722635Z 129 โ onStatus: (status: RecordingStatus) => {
2026-10-24T11:06:37.7722763Z 130 โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T11:06:37.7722852Z 131 โ isFinished: status.isFinished,
2026-10-24T11:06:37.7722997Z 132 โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T11:06:37.7723071Z 133 โ error: status.error,
2026-10-24T11:06:37.7723139Z 134 โ url: status.url,
2026-10-24T11:06:37.7723199Z 135 โ });
2026-10-24T11:06:37.7723257Z 136 โ },
2026-10-24T11:06:37.7723424Z 137 โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T11:06:37.7723504Z 138 โ selectInput: (inputs) => {
2026-10-24T11:06:37.7723627Z 139 โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T11:06:37.7723739Z 140 โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T11:06:37.7723877Z 141 โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T11:06:37.7723988Z 142 โ const order = rememberMicrophones(known, inputs);
2026-10-24T11:06:37.7724060Z 143 โ if (order !== known) {
2026-10-24T11:06:37.7724168Z 144 โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T11:06:37.7724251Z 145 โ transform: (current) => ({
2026-10-24T11:06:37.7724425Z 146 โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T11:06:37.7724487Z 147 โ }),
2026-10-24T11:06:37.7724548Z 148 โ });
2026-10-24T11:06:37.7724607Z 149 โ }
2026-10-24T11:06:37.7724717Z 150 โ return preferredMicrophoneInput(inputs, order);
2026-10-24T11:06:37.7724774Z 151 โ },
2026-10-24T11:06:37.7724833Z 152 โ });
2026-10-24T11:06:37.7724916Z 153 โ recorderRef.current = recorder;
2026-10-24T11:06:37.7725024Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T11:06:37.7725088Z 155 โ recorder,
2026-10-24T11:06:37.7725187Z 156 โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T11:06:37.7725271Z 157 โ requestPermission: async () => {
2026-10-24T11:06:37.7725404Z 158 โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T11:06:37.7725559Z 159 โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T11:06:37.7725617Z 160 โ },
2026-10-24T11:06:37.7725727Z 161 โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T11:06:37.7725832Z 162 โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T11:06:37.7725936Z 163 โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T11:06:37.7726016Z 164 โ onStateChange: (nextState) =>
2026-10-24T11:06:37.7726143Z 165 โ setState({
2026-10-24T11:06:37.7726248Z 166 โ state: nextState,
2026-10-24T11:06:37.7726356Z 167 โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T11:06:37.7726455Z 168 โ label: sessionRef.current?.label ?? null,
2026-10-24T11:06:37.7726514Z 169 โ }),
2026-10-24T11:06:37.7726570Z 170 โ });
2026-10-24T11:06:37.7726624Z 171 โ }
2026-10-24T11:06:37.7726677Z 172 โ
2026-10-24T11:06:37.7726762Z 173 โ const session = sessionRef.current;
2026-10-24T11:06:37.7726849Z 174 โ const controller = session.controller;
2026-10-24T11:06:37.7726934Z 175 โ const recorder = recorderRef.current;
2026-10-24T11:06:37.7726987Z 176 โ
2026-10-24T11:06:37.7727053Z 177 โ useEffect(() => {
2026-10-24T11:06:37.7727200Z 178 โ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T11:06:37.7727348Z 179 โ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T11:06:37.7727491Z 180 โ // real background state cancels preparation; recorder status handles
2026-10-24T11:06:37.7727596Z 181 โ // calls and route interruptions during capture.
2026-10-24T11:06:37.7727731Z 182 โ if (nextState === "background") controller.appMovedToBackground();
2026-10-24T11:06:37.7727789Z 183 โ });
2026-10-24T11:06:37.7727878Z 184 โ return () => subscription.remove();
2026-10-24T11:06:37.7727947Z 185 โ }, [controller]);
2026-10-24T11:06:37.7728000Z 186 โ
2026-10-24T11:06:37.7728064Z 187 โ useEffect(
2026-10-24T11:06:37.7728130Z 188 โ () => () => {
2026-10-24T11:06:37.7728203Z 189 โ controller.dispose();
2026-10-24T11:06:37.7728297Z 190 โ recorder.release();
2026-10-24T11:06:37.7728356Z 191 โ },
2026-10-24T11:06:37.7728436Z 192 โ [controller, recorder],
2026-10-24T11:06:37.7728496Z 193 โ );
2026-10-24T11:06:37.7728553Z 194 โ
2026-10-24T11:06:37.7728620Z 195 โ useEffect(() => {
2026-10-24T11:06:37.7728720Z 196 โ if (state.phase !== "recording") return;
2026-10-24T11:06:37.7728773Z 197 โ
2026-10-24T11:06:37.7728925Z 198 โ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T11:06:37.7729033Z 199 โ const activation = activateKeepAwakeAsync(tag);
2026-10-24T11:06:37.7729120Z 200 โ void activation.catch(() => {});
2026-10-24T11:06:37.7729185Z 201 โ return () => {
2026-10-24T11:06:37.7729339Z 202 โ // Release after activation settles, even if the recording ends immediately.
2026-10-24T11:06:37.7729482Z 203 โ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T11:06:37.7729541Z 204 โ };
2026-10-24T11:06:37.7729627Z 205 โ }, [keepAwakeId, state.phase]);
2026-10-24T11:06:37.7729686Z 206 โ
2026-10-24T11:06:37.7729754Z 207 โ useEffect(() => {
2026-10-24T11:06:37.7729892Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T11:06:37.7729946Z 209 โ
2026-10-24T11:06:37.7730072Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T11:06:37.7730232Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T11:06:37.7730338Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T11:06:37.7730418Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7730566Z ยท โฐโโ `audioLevels` cannot be modified
2026-10-24T11:06:37.7730626Z 213 โ }
2026-10-24T11:06:37.7730680Z โฐโโโโ
2026-10-24T11:06:37.7731022Z 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-24T11:06:37.7731375Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7731377Z
2026-10-24T11:06:37.7731583Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T11:06:37.7731748Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T11:06:37.7731801Z 206 โ
2026-10-24T11:06:37.7731871Z 207 โ useEffect(() => {
2026-10-24T11:06:37.7731955Z ยท โโโโฌโโโ
2026-10-24T11:06:37.7732180Z ยท โฐโโ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T11:06:37.7732323Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T11:06:37.7732384Z 209 โ
2026-10-24T11:06:37.7732511Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T11:06:37.7732670Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T11:06:37.7732774Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T11:06:37.7732856Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7732997Z ยท โฐโโ This modifies `audioLevels`
2026-10-24T11:06:37.7733084Z 213 โ }
2026-10-24T11:06:37.7733153Z โฐโโโโ
2026-10-24T11:06:37.7733565Z 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-24T11:06:37.7733926Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7733932Z
2026-10-24T11:06:37.7734171Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7734350Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:155:7]
2026-10-24T11:06:37.7734432Z 154 โ }
2026-10-24T11:06:37.7734563Z 155 โ }, [wrappedRender]);
2026-10-24T11:06:37.7734682Z ยท โโโโโโโฌโโโโโโ
2026-10-24T11:06:37.7734848Z ยท โฐโโ Unnecessary dependency `wrappedRender`
2026-10-24T11:06:37.7734937Z 156 โ
2026-10-24T11:06:37.7735028Z โฐโโโโ
2026-10-24T11:06:37.7735376Z 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-24T11:06:37.7735724Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7735727Z
2026-10-24T11:06:37.7735987Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T11:06:37.7736181Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:800:42]
2026-10-24T11:06:37.7736291Z 799 โ >
2026-10-24T11:06:37.7736454Z 800 โ <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-24T11:06:37.7736593Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7736733Z 801 โ <WindowHingeContext value={windowHinge}>
2026-10-24T11:06:37.7736891Z โฐโโโโ
2026-10-24T11:06:37.7737198Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T11:06:37.7737355Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T11:06:37.7737376Z
2026-10-24T11:06:37.7737554Z โ react(immutability): This value cannot be modified
2026-10-24T11:06:37.7737742Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-24T11:06:37.7737849Z 35 โ
2026-10-24T11:06:37.7738022Z 36 โ const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-24T11:06:37.7738127Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T11:06:37.7738334Z ยท โฐโโ `inspectorProgress` originates here
2026-10-24T11:06:37.7738476Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T11:06:37.7738653Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T11:06:37.7738721Z 39 โ
2026-10-24T11:06:37.7738843Z 40 โ const onClosed = props.onClosed;
2026-10-24T11:06:37.7738937Z 41 โ useEffect(() => {
2026-10-24T11:06:37.7739080Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T11:06:37.7739179Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T11:06:37.7739364Z ยท โฐโโ `inspectorProgress` cannot be modified
2026-10-24T11:06:37.7739582Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T11:06:37.7739673Z โฐโโโโ
2026-10-24T11:06:37.7739966Z 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-24T11:06:37.7740317Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7740324Z
2026-10-24T11:06:37.7740515Z โ react(immutability): This value cannot be modified
2026-10-24T11:06:37.7740701Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-24T11:06:37.7740845Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T11:06:37.7740994Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T11:06:37.7741123Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7741313Z ยท โฐโโ `renderedContentWidth` originates here
2026-10-24T11:06:37.7741402Z 39 โ
2026-10-24T11:06:37.7741507Z 40 โ const onClosed = props.onClosed;
2026-10-24T11:06:37.7741616Z 41 โ useEffect(() => {
2026-10-24T11:06:37.7741746Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T11:06:37.7741849Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T11:06:37.7742298Z 44 โ WORKSPACE_PANE_TIMING,
2026-10-24T11:06:37.7742399Z 45 โ (finished) => {
2026-10-24T11:06:37.7742577Z 46 โ if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-24T11:06:37.7742697Z 47 โ runOnJS(onClosed)();
2026-10-24T11:06:37.7742769Z 48 โ }
2026-10-24T11:06:37.7742863Z 49 โ },
2026-10-24T11:06:37.7742944Z 50 โ );
2026-10-24T11:06:37.7743208Z 51 โ const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-24T11:06:37.7743305Z 52 โ renderedInspectorWidth.set(
2026-10-24T11:06:37.7743486Z 53 โ resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-24T11:06:37.7743655Z 54 โ );
2026-10-24T11:06:37.7743792Z 55 โ }, [
2026-10-24T11:06:37.7743885Z 56 โ inspectorProgress,
2026-10-24T11:06:37.7743985Z 57 โ inspectorVisible,
2026-10-24T11:06:37.7744080Z 58 โ inspectorWidth,
2026-10-24T11:06:37.7744163Z 59 โ onClosed,
2026-10-24T11:06:37.7744274Z 60 โ renderedInspectorWidth,
2026-10-24T11:06:37.7744483Z 61 โ resizing,
2026-10-24T11:06:37.7744573Z 62 โ ]);
2026-10-24T11:06:37.7744649Z 63 โ
2026-10-24T11:06:37.7744737Z 64 โ useEffect(() => {
2026-10-24T11:06:37.7744883Z 65 โ const targetWidth = inspectorWidth ?? 0;
2026-10-24T11:06:37.7745001Z 66 โ if (!inspectorVisible || resizing) {
2026-10-24T11:06:37.7745116Z 67 โ renderedContentWidth.value = targetWidth;
2026-10-24T11:06:37.7745245Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7745453Z ยท โฐโโ `renderedContentWidth` cannot be modified
2026-10-24T11:06:37.7745558Z 68 โ return;
2026-10-24T11:06:37.7745626Z โฐโโโโ
2026-10-24T11:06:37.7745931Z 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-24T11:06:37.7746263Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7746266Z
2026-10-24T11:06:37.7746503Z โ eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-24T11:06:37.7746676Z โญโ[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-24T11:06:37.7746782Z 14 โ import * as Layer from "effect/Layer";
2026-10-24T11:06:37.7746908Z 15 โ import type * as Scope from "effect/Scope";
2026-10-24T11:06:37.7747032Z ยท โโโฌโโ
2026-10-24T11:06:37.7747307Z ยท โฐโโ 'Scope' is imported here
2026-10-24T11:06:37.7747416Z 16 โ import * as Stream from "effect/Stream";
2026-10-24T11:06:37.7747501Z โฐโโโโ
2026-10-24T11:06:37.7747635Z help: Consider removing this import.
2026-10-24T11:06:37.7747638Z
2026-10-24T11:06:37.7747861Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T11:06:37.7747998Z โญโ[apps/server/src/processRunner.test.ts:266:14]
2026-10-24T11:06:37.7748089Z 265 โ
2026-10-24T11:06:37.7748230Z 266 โ for (const {} of ["timeout", "success"] as const) {
2026-10-24T11:06:37.7748378Z ยท โโ
2026-10-24T11:06:37.7748458Z 267 โ }
2026-10-24T11:06:37.7748549Z โฐโโโโ
2026-10-24T11:06:37.7748875Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T11:06:37.7748915Z
2026-10-24T11:06:37.7749172Z โ eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
2026-10-24T11:06:37.7749346Z โญโ[apps/server/src/checkpointing/Utils.ts:12:10]
2026-10-24T11:06:37.7749416Z 11 โ
2026-10-24T11:06:37.7749545Z 12 โ function resolveThreadWorkspaceCwd(input: {
2026-10-24T11:06:37.7749683Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T11:06:37.7749999Z ยท โฐโโ 'resolveThreadWorkspaceCwd' is declared here
2026-10-24T11:06:37.7750091Z 13 โ readonly thread: {
2026-10-24T11:06:37.7750179Z โฐโโโโ
2026-10-24T11:06:37.7750317Z help: Consider removing this declaration.
2026-10-24T11:06:37.7750327Z
2026-10-24T11:06:37.7750566Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7750710Z โญโ[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-24T11:06:37.7750829Z 28 โ getPendingThreadOrder();
2026-10-24T11:06:37.7750942Z 29 โ }, [nowMinute, snoozeWakeTick]);
2026-10-24T11:06:37.7751105Z ยท โโโโโฌโโโโ โโโโโโโโฌโโโโโโ
2026-10-24T11:06:37.7751308Z ยท โ โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-24T11:06:37.7751504Z ยท โฐโโ Unnecessary dependency `nowMinute`
2026-10-24T11:06:37.7751605Z 30 โ return pending;
2026-10-24T11:06:37.7751694Z โฐโโโโ
2026-10-24T11:06:37.7752017Z 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-24T11:06:37.7752379Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7752381Z
2026-10-24T11:06:37.7752617Z โ eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-24T11:06:37.7752746Z โญโ[apps/server/src/ws.ts:10:13]
2026-10-24T11:06:37.7752969Z 9 โ import * as Effect from "effect/Effect";
2026-10-24T11:06:37.7753060Z 10 โ import * as Fiber from "effect/Fiber";
2026-10-24T11:06:37.7753192Z ยท โโโฌโโ
2026-10-24T11:06:37.7753356Z ยท โฐโโ 'Fiber' is imported here
2026-10-24T11:06:37.7753500Z 11 โ import * as FileSystem from "effect/FileSystem";
2026-10-24T11:06:37.7753572Z โฐโโโโ
2026-10-24T11:06:37.7753709Z help: Consider removing this import.
2026-10-24T11:06:37.7753711Z
2026-10-24T11:06:37.7753954Z โ eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-24T11:06:37.7754086Z โญโ[apps/server/src/ws.ts:17:13]
2026-10-24T11:06:37.7754182Z 16 โ import * as Ref from "effect/Ref";
2026-10-24T11:06:37.7754302Z 17 โ import * as Schedule from "effect/Schedule";
2026-10-24T11:06:37.7754434Z ยท โโโโโฌโโโ
2026-10-24T11:06:37.7754602Z ยท โฐโโ 'Schedule' is imported here
2026-10-24T11:06:37.7754708Z 18 โ import * as Schema from "effect/Schema";
2026-10-24T11:06:37.7754795Z โฐโโโโ
2026-10-24T11:06:37.7754992Z help: Consider removing this import.
2026-10-24T11:06:37.7755027Z
2026-10-24T11:06:37.7755376Z โ eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7755609Z โญโ[apps/server/src/ws.ts:1285:13]
2026-10-24T11:06:37.7755783Z 1284 โ const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-24T11:06:37.7756008Z 1285 โ const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-24T11:06:37.7756172Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7756377Z ยท โฐโโ 'projectSetupScriptRunner' is declared here
2026-10-24T11:06:37.7756565Z 1286 โ const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-24T11:06:37.7756658Z โฐโโโโ
2026-10-24T11:06:37.7756806Z help: Consider removing this declaration.
2026-10-24T11:06:37.7756809Z
2026-10-24T11:06:37.7757100Z โ unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
2026-10-24T11:06:37.7757244Z โญโ[apps/server/src/vcs/GitVcsDriverCore.ts:509:11]
2026-10-24T11:06:37.7757380Z 508 โ GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
2026-10-24T11:06:37.7757545Z 509 โ (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
2026-10-24T11:06:37.7757693Z ยท โโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7757783Z 510 โ )
2026-10-24T11:06:37.7757852Z โฐโโโโ
2026-10-24T11:06:37.7758041Z help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
2026-10-24T11:06:37.7758045Z
2026-10-24T11:06:37.7758385Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7758561Z โญโ[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-24T11:06:37.7758785Z 83 โ const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-24T11:06:37.7758884Z 84 โ useEffect(() => {
2026-10-24T11:06:37.7758986Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7759169Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7759273Z 85 โ if (!actionState.isRunning) return;
2026-10-24T11:06:37.7759377Z 86 โ setNowMs(Date.now());
2026-10-24T11:06:37.7759489Z ยท โโโโโฌโโโ
2026-10-24T11:06:37.7759692Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7759849Z 87 โ const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-24T11:06:37.7759938Z โฐโโโโ
2026-10-24T11:06:37.7760576Z 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-24T11:06:37.7760936Z 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-24T11:06:37.7760939Z
2026-10-24T11:06:37.7761357Z โ 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-24T11:06:37.7761569Z โญโ[apps/server/src/vcs/GitVcsDriverCore.test.ts:1786:34]
2026-10-24T11:06:37.7761776Z 1785 โ const stat = branch.files!.find((file) => file.path === path)!;
2026-10-24T11:06:37.7761958Z 1786 โ const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
2026-10-24T11:06:37.7762114Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7762322Z 1787 โ cwd,
2026-10-24T11:06:37.7762397Z โฐโโโโ
2026-10-24T11:06:37.7762400Z
2026-10-24T11:06:37.7762601Z โ eslint(no-empty-pattern): Empty array binding pattern
2026-10-24T11:06:37.7762785Z โญโ[apps/server/src/pullRequest/PullRequestService.test.ts:1526:12]
2026-10-24T11:06:37.7762900Z 1525 โ
2026-10-24T11:06:37.7762986Z 1526 โ for (const [] of [
2026-10-24T11:06:37.7763094Z ยท โโ
2026-10-24T11:06:37.7763209Z 1527 โ ["github", "github.com"],
2026-10-24T11:06:37.7763303Z โฐโโโโ
2026-10-24T11:06:37.7763607Z help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-24T11:06:37.7763610Z
2026-10-24T11:06:37.7763933Z โ eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-24T11:06:37.7764098Z โญโ[apps/server/src/provider/AntigravityAuth.ts:285:20]
2026-10-24T11:06:37.7764182Z 284 โ },
2026-10-24T11:06:37.7764293Z 285 โ (effect, flow, stopSessions) =>
2026-10-24T11:06:37.7764436Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7764624Z ยท โฐโโ 'stopSessions' is declared here
2026-10-24T11:06:37.7764729Z 286 โ effect.pipe(
2026-10-24T11:06:37.7764792Z โฐโโโโ
2026-10-24T11:06:37.7765061Z help: Consider removing this parameter.
2026-10-24T11:06:37.7765064Z
2026-10-24T11:06:37.7765242Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7765394Z โญโ[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-24T11:06:37.7765589Z 53 โ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-24T11:06:37.7765806Z 54 โ โญโโถ children = cloneElement(child, {
2026-10-24T11:06:37.7765961Z 55 โ โ onTouchStart: (event) => {
2026-10-24T11:06:37.7766153Z 56 โ โ // Reset for a new touch, not onPressIn, which also fires when a
2026-10-24T11:06:37.7766354Z 57 โ โ // finger moves out of the row and back during the same gesture.
2026-10-24T11:06:37.7766491Z 58 โ โ menuPress.current.isPreparing = false;
2026-10-24T11:06:37.7766717Z 59 โ โ menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-24T11:06:37.7766863Z 60 โ โ pendingPress.current = null;
2026-10-24T11:06:37.7767018Z 61 โ โ child.props.onTouchStart?.(event);
2026-10-24T11:06:37.7767111Z 62 โ โ },
2026-10-24T11:06:37.7767255Z 63 โ โ onPress: (event) => {
2026-10-24T11:06:37.7767468Z 64 โ โ // Accessibility clicks have no touch identifier and must not inherit
2026-10-24T11:06:37.7767640Z 65 โ โ // cancellation from a previous physical gesture.
2026-10-24T11:06:37.7767887Z 66 โ โ const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-24T11:06:37.7768261Z 67 โ โ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-24T11:06:37.7768426Z 68 โ โ return;
2026-10-24T11:06:37.7768540Z 69 โ โ }
2026-10-24T11:06:37.7768721Z 70 โ โ if (isTouch && menuPress.current.isPreparing) {
2026-10-24T11:06:37.7768913Z 71 โ โ // A release can arrive between native menu preparation and display.
2026-10-24T11:06:37.7769120Z 72 โ โ // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-24T11:06:37.7769262Z 73 โ โ event.persist();
2026-10-24T11:06:37.7769467Z 74 โ โ pendingPress.current = () => child.props.onPress?.(event);
2026-10-24T11:06:37.7769574Z 75 โ โ return;
2026-10-24T11:06:37.7769679Z 76 โ โ }
2026-10-24T11:06:37.7769849Z 77 โ โ child.props.onPress?.(event);
2026-10-24T11:06:37.7769965Z 78 โ โ },
2026-10-24T11:06:37.7770113Z 79 โ โโโถ });
2026-10-24T11:06:37.7770385Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7770528Z 80 โ menuProps.onMenuInteractionStart = () => {
2026-10-24T11:06:37.7770625Z โฐโโโโ
2026-10-24T11:06:37.7771145Z 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-24T11:06:37.7771557Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7771560Z
2026-10-24T11:06:37.7771800Z โ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-24T11:06:37.7771980Z โญโ[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-24T11:06:37.7772072Z 78 โ
2026-10-24T11:06:37.7772224Z 79 โ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-24T11:06:37.7772347Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T11:06:37.7772538Z ยท โฐโโ 'describeSchedule' is declared here
2026-10-24T11:06:37.7772695Z 80 โ if (schedule.type === "webhook") return "On webhook";
2026-10-24T11:06:37.7772782Z โฐโโโโ
2026-10-24T11:06:37.7772904Z help: Consider removing this declaration.
2026-10-24T11:06:37.7772906Z
2026-10-24T11:06:37.7776494Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7776676Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T11:06:37.7776861Z 151 โ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T11:06:37.7776944Z 152 โ {props.children(open)}
2026-10-24T11:06:37.7777037Z ยท โโโฌโ
2026-10-24T11:06:37.7777199Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7777347Z 153 โ </View>
2026-10-24T11:06:37.7777445Z โฐโโโโ
2026-10-24T11:06:37.7777919Z 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-24T11:06:37.7778214Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7778219Z
2026-10-24T11:06:37.7778457Z โ react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T11:06:37.7778612Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T11:06:37.7778695Z 139 โ if (action.id !== undefined) {
2026-10-24T11:06:37.7778780Z 140 โ props.onPressAction?.({
2026-10-24T11:06:37.7778859Z ยท โโโฌโโ
2026-10-24T11:06:37.7778995Z ยท โฐโโ Missing dependency `props`
2026-10-24T11:06:37.7779091Z 141 โ nativeEvent: { event: action.id },
2026-10-24T11:06:37.7779241Z 142 โ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T11:06:37.7779298Z 143 โ }
2026-10-24T11:06:37.7779355Z 144 โ },
2026-10-24T11:06:37.7779439Z 145 โ [close, props.onPressAction],
2026-10-24T11:06:37.7779534Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7779755Z ยท โฐโโ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T11:06:37.7779812Z 146 โ );
2026-10-24T11:06:37.7779865Z โฐโโโโ
2026-10-24T11:06:37.7780362Z 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-24T11:06:37.7780685Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7780688Z
2026-10-24T11:06:37.7781166Z โ 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-24T11:06:37.7781355Z โญโ[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T11:06:37.7781432Z 520 โ })).delivery;
2026-10-24T11:06:37.7781635Z 521 โ โญโโถ while (delivery.outcome === "accepted") {
2026-10-24T11:06:37.7781751Z 522 โ โ yield* Effect.yieldNow;
2026-10-24T11:06:37.7781901Z 523 โ โ delivery = (yield* service.getWebhookDelivery({
2026-10-24T11:06:37.7782004Z 524 โ โ id: task.id,
2026-10-24T11:06:37.7782123Z 525 โ โ deliveryId: deliveryId!,
2026-10-24T11:06:37.7782222Z 526 โ โ })).delivery;
2026-10-24T11:06:37.7782365Z 527 โ โฐโโถ }
2026-10-24T11:06:37.7782482Z 528 โ assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T11:06:37.7782536Z โฐโโโโ
2026-10-24T11:06:37.7782607Z
2026-10-24T11:06:37.7782826Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T11:06:37.7782991Z โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-24T11:06:37.7783098Z 99 โ const startEditor = startScheduledTaskEditor;
2026-10-24T11:06:37.7783369Z 100 โ const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-24T11:06:37.7783518Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7783726Z ยท โฐโโ Unnecessary dependency `startEditor`
2026-10-24T11:06:37.7783808Z 101 โ const readEditor = useCallback(
2026-10-24T11:06:37.7783862Z โฐโโโโ
2026-10-24T11:06:37.7784189Z 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-24T11:06:37.7784509Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7784512Z
2026-10-24T11:06:37.7784698Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T11:06:37.7784861Z โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-24T11:06:37.7784925Z 120 โ setEditor,
2026-10-24T11:06:37.7784990Z 121 โ startEditor,
2026-10-24T11:06:37.7785070Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7785222Z ยท โฐโโ Unnecessary dependency `startEditor`
2026-10-24T11:06:37.7785291Z 122 โ hasChanges,
2026-10-24T11:06:37.7785343Z โฐโโโโ
2026-10-24T11:06:37.7785662Z 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-24T11:06:37.7785975Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7785977Z
2026-10-24T11:06:37.7786201Z โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T11:06:37.7786341Z โญโ[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-24T11:06:37.7786409Z 1021 โ instanceId,
2026-10-24T11:06:37.7786634Z 1022 โ { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-24T11:06:37.7786823Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7786887Z 1023 โ ]),
2026-10-24T11:06:37.7786940Z โฐโโโโ
2026-10-24T11:06:37.7787209Z help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T11:06:37.7787212Z
2026-10-24T11:06:37.7787473Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7787665Z โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-24T11:06:37.7787719Z 117 โ
2026-10-24T11:06:37.7787785Z 118 โ useEffect(() => {
2026-10-24T11:06:37.7787860Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7788001Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7788086Z 119 โ void refreshNotifications();
2026-10-24T11:06:37.7788179Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7788401Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7788547Z 120 โ const subscription = AppState.addEventListener("change", (state) => {
2026-10-24T11:06:37.7788598Z โฐโโโโ
2026-10-24T11:06:37.7789210Z 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-24T11:06:37.7789543Z 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-24T11:06:37.7789549Z
2026-10-24T11:06:37.7789808Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7789998Z โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-24T11:06:37.7790051Z 125 โ
2026-10-24T11:06:37.7790117Z 126 โ useEffect(() => {
2026-10-24T11:06:37.7790191Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7790322Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7790388Z 127 โ if (!isLoaded) {
2026-10-24T11:06:37.7790481Z 128 โ setLiveActivityStatus("checking");
2026-10-24T11:06:37.7790577Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7790756Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7790818Z 129 โ return;
2026-10-24T11:06:37.7790871Z โฐโโโโ
2026-10-24T11:06:37.7791478Z 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-24T11:06:37.7791806Z 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-24T11:06:37.7791808Z
2026-10-24T11:06:37.7792088Z โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T11:06:37.7792260Z โญโ[apps/mobile/src/state/use-model-option-memory.ts:21:7]
2026-10-24T11:06:37.7792327Z 20 โ [instanceId]: {
2026-10-24T11:06:37.7792408Z 21 โ ...(state[instanceId] ?? {}),
2026-10-24T11:06:37.7792513Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7792581Z 22 โ [model]: options,
2026-10-24T11:06:37.7792634Z โฐโโโโ
2026-10-24T11:06:37.7792902Z help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-24T11:06:37.7792905Z
2026-10-24T11:06:37.7793164Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7793305Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T11:06:37.7793363Z 57 โ
2026-10-24T11:06:37.7793426Z 58 โ useEffect(() => {
2026-10-24T11:06:37.7793498Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7793626Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7793724Z 59 โ const controller = new AbortController();
2026-10-24T11:06:37.7793798Z 60 โ setLoadState("pending");
2026-10-24T11:06:37.7793877Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7794045Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7794208Z 61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T11:06:37.7794261Z โฐโโโโ
2026-10-24T11:06:37.7794878Z 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-24T11:06:37.7795205Z 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-24T11:06:37.7795208Z
2026-10-24T11:06:37.7795409Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7795546Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T11:06:37.7795629Z 70 โ return () => controller.abort();
2026-10-24T11:06:37.7795726Z 71 โ }, [player, props.playRequested, attempt]);
2026-10-24T11:06:37.7795906Z ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
2026-10-24T11:06:37.7796139Z ยท โ โ โฐโโ Unnecessary dependency `attempt`
2026-10-24T11:06:37.7796342Z ยท โ โฐโโ Unnecessary dependency `props.playRequested`
2026-10-24T11:06:37.7796483Z ยท โฐโโ Unnecessary dependency `player_0`
2026-10-24T11:06:37.7796536Z 72 โ
2026-10-24T11:06:37.7796589Z โฐโโโโ
2026-10-24T11:06:37.7796886Z 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-24T11:06:37.7797255Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7797289Z
2026-10-24T11:06:37.7797550Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7797682Z โญโ[apps/mobile/src/components/ProjectFavicon.tsx:172:5]
2026-10-24T11:06:37.7797878Z 167 โ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-24T11:06:37.7797950Z 168 โ useLayoutEffect(() => {
2026-10-24T11:06:37.7798031Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T11:06:37.7798164Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7798252Z 169 โ if (faviconRequest === null) return;
2026-10-24T11:06:37.7798334Z 170 โ
2026-10-24T11:06:37.7798467Z 171 โ const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-24T11:06:37.7798569Z 172 โ setActiveFaviconRequest(faviconRequest);
2026-10-24T11:06:37.7798665Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7798840Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7798908Z 173 โ return endRequest;
2026-10-24T11:06:37.7798959Z โฐโโโโ
2026-10-24T11:06:37.7799568Z 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-24T11:06:37.7799891Z 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-24T11:06:37.7799898Z
2026-10-24T11:06:37.7800097Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T11:06:37.7800247Z โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-24T11:06:37.7800356Z 266 โ {record.elements?.map((element, index) => (
2026-10-24T11:06:37.7800524Z 267 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T11:06:37.7800684Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7800762Z 268 โ <ContextField
2026-10-24T11:06:37.7800813Z โฐโโโโ
2026-10-24T11:06:37.7800963Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T11:06:37.7800966Z
2026-10-24T11:06:37.7801318Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T11:06:37.7801443Z โญโ[packages/effect-acp/src/schema.test.ts:18:12]
2026-10-24T11:06:37.7801607Z 17 โ const command = { name: "plan", description: "Make a plan", input: { hint: "Task" } };
2026-10-24T11:06:37.7801730Z 18 โ expect(Schema.is(V1.AvailableCommand)(command)).toBe(true);
2026-10-24T11:06:37.7801809Z ยท โโโโโโโโโ
2026-10-24T11:06:37.7801871Z 19 โ expect(
2026-10-24T11:06:37.7801923Z โฐโโโโ
2026-10-24T11:06:37.7801926Z
2026-10-24T11:06:37.7802260Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T11:06:37.7802442Z โญโ[packages/effect-acp/src/schema.test.ts:20:7]
2026-10-24T11:06:37.7802548Z 19 โ expect(
2026-10-24T11:06:37.7802718Z 20 โ Schema.is(V2.AvailableCommand)({ ...command, input: { type: "text", hint: "Task" } }),
2026-10-24T11:06:37.7802793Z ยท โโโโโโโโโ
2026-10-24T11:06:37.7802857Z 21 โ ).toBe(true);
2026-10-24T11:06:37.7802909Z โฐโโโโ
2026-10-24T11:06:37.7802911Z
2026-10-24T11:06:37.7803114Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7803256Z โญโ[apps/mobile/src/state/use-thread-outbox-drain.ts:1315:5]
2026-10-24T11:06:37.7803338Z 1314 โ queuedMessagesByThreadKey,
2026-10-24T11:06:37.7803402Z 1315 โ retryTick,
2026-10-24T11:06:37.7803476Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7803627Z ยท โฐโโ Unnecessary dependency `retryTick`
2026-10-24T11:06:37.7803703Z 1316 โ restoreQueuedMessage,
2026-10-24T11:06:37.7803758Z โฐโโโโ
2026-10-24T11:06:37.7804059Z 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-24T11:06:37.7804373Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7804376Z
2026-10-24T11:06:37.7804845Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) 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-24T11:06:37.7804970Z โญโ[packages/effect-acp/src/errors.test.ts:129:28]
2026-10-24T11:06:37.7805071Z 128 โ const secret = "acp-summary-secret";
2026-10-24T11:06:37.7805186Z 129 โ const cause = yield* Schema.decodeUnknownEffect(
2026-10-24T11:06:37.7805304Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7805374Z 130 โ Schema.Struct({
2026-10-24T11:06:37.7805427Z โฐโโโโ
2026-10-24T11:06:37.7805430Z
2026-10-24T11:06:37.7805631Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7805759Z โญโ[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T11:06:37.7805816Z 81 โ },
2026-10-24T11:06:37.7805880Z 82 โ [draftKey],
2026-10-24T11:06:37.7805952Z ยท โโโโโฌโโโ
2026-10-24T11:06:37.7806091Z ยท โฐโโ Unnecessary dependency `draftKey`
2026-10-24T11:06:37.7806202Z 83 โ );
2026-10-24T11:06:37.7806289Z โฐโโโโ
2026-10-24T11:06:37.7806586Z 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-24T11:06:37.7806898Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7806901Z
2026-10-24T11:06:37.7807278Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T11:06:37.7807397Z โญโ[packages/effect-acp/src/client.ts:1269:11]
2026-10-24T11:06:37.7807551Z 1268 โ extNotificationHandlers.set(CLIENT_METHODS.mcp_message, (params) =>
2026-10-24T11:06:37.7807728Z 1269 โ Schema.decodeUnknownEffect(AcpSchemaV2.MessageMcpNotification)(params).pipe(
2026-10-24T11:06:37.7807838Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7807988Z 1270 โ Effect.mapError(() => AcpError.AcpRequestError.invalidParams()),
2026-10-24T11:06:37.7808042Z โฐโโโโ
2026-10-24T11:06:37.7808045Z
2026-10-24T11:06:37.7808252Z โ eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-24T11:06:37.7808442Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-24T11:06:37.7808531Z 24 โ import * as Schema from "effect/Schema";
2026-10-24T11:06:37.7808651Z 25 โ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-24T11:06:37.7808734Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7808883Z ยท โฐโโ 'HostProcess' is imported here
2026-10-24T11:06:37.7808942Z 26 โ
2026-10-24T11:06:37.7808995Z โฐโโโโ
2026-10-24T11:06:37.7809095Z help: Consider removing this import.
2026-10-24T11:06:37.7809098Z
2026-10-24T11:06:37.7809373Z โ eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7809542Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-24T11:06:37.7809626Z 123 โ const path = yield* Path.Path;
2026-10-24T11:06:37.7809745Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T11:06:37.7809826Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7809967Z ยท โฐโโ 'serverConfig' is declared here
2026-10-24T11:06:37.7810118Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T11:06:37.7810174Z โฐโโโโ
2026-10-24T11:06:37.7810279Z help: Consider removing this declaration.
2026-10-24T11:06:37.7810282Z
2026-10-24T11:06:37.7810560Z โ eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7810726Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-24T11:06:37.7810842Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T11:06:37.7810982Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T11:06:37.7811069Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T11:06:37.7811214Z ยท โฐโโ 'serverSettings' is declared here
2026-10-24T11:06:37.7811501Z 126 โ const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-24T11:06:37.7811588Z โฐโโโโ
2026-10-24T11:06:37.7811691Z help: Consider removing this declaration.
2026-10-24T11:06:37.7811694Z
2026-10-24T11:06:37.7811955Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7812116Z โญโ[apps/mobile/src/features/threads/new-task-flow-provider.tsx:444:5]
2026-10-24T11:06:37.7812178Z 434 โ : null;
2026-10-24T11:06:37.7812244Z 435 โ useEffect(() => {
2026-10-24T11:06:37.7812318Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7812449Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7812509Z 436 โ if (
2026-10-24T11:06:37.7812585Z 437 โ props.active === false ||
2026-10-24T11:06:37.7812668Z 438 โ activeDraftKey !== null ||
2026-10-24T11:06:37.7812754Z 439 โ editingPendingTask !== null ||
2026-10-24T11:06:37.7812830Z 440 โ selectedProject === null
2026-10-24T11:06:37.7812887Z 441 โ ) {
2026-10-24T11:06:37.7812948Z 442 โ return;
2026-10-24T11:06:37.7813004Z 443 โ }
2026-10-24T11:06:37.7813074Z 444 โ setActiveDraftKey(
2026-10-24T11:06:37.7813157Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T11:06:37.7813330Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7813403Z 445 โ createNewTaskDraft({
2026-10-24T11:06:37.7813455Z โฐโโโโ
2026-10-24T11:06:37.7814070Z 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-24T11:06:37.7814398Z 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-24T11:06:37.7814401Z
2026-10-24T11:06:37.7814647Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T11:06:37.7814813Z โญโ[apps/mobile/src/features/threads/new-task-flow-provider.tsx:1244:36]
2026-10-24T11:06:37.7814919Z 1243 โ <ActiveNewTaskContext value={activeNewTask}>
2026-10-24T11:06:37.7815116Z 1244 โ <NewTaskFlowContext.Provider value={value}>{props.children}</NewTaskFlowContext.Provider>
2026-10-24T11:06:37.7815234Z ยท โโโโโโโโโโโโโ
2026-10-24T11:06:37.7815313Z 1245 โ </ActiveNewTaskContext>
2026-10-24T11:06:37.7815364Z โฐโโโโ
2026-10-24T11:06:37.7815591Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T11:06:37.7815732Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T11:06:37.7815735Z
2026-10-24T11:06:37.7816184Z โ 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-24T11:06:37.7816312Z โญโ[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-24T11:06:37.7816483Z 1740 โ const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-24T11:06:37.7816726Z 1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T11:06:37.7816878Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7816987Z 1742 โ const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T11:06:37.7817041Z โฐโโโโ
2026-10-24T11:06:37.7817044Z
2026-10-24T11:06:37.7817492Z โ 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-24T11:06:37.7817614Z โญโ[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-24T11:06:37.7817799Z 1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-24T11:06:37.7817912Z 1742 โ const scriptsJson = yield* Schema.encodeEffect(
2026-10-24T11:06:37.7818031Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7818150Z 1743 โ Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-24T11:06:37.7818202Z โฐโโโโ
2026-10-24T11:06:37.7818205Z
2026-10-24T11:06:37.7818427Z โ eslint(no-unused-vars): Identifier 'Image' is imported but never used.
2026-10-24T11:06:37.7818570Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
2026-10-24T11:06:37.7818706Z 16 โ import type { NativeSyntheticEvent, ViewProps } from "react-native";
2026-10-24T11:06:37.7818821Z 17 โ import { Image, Platform, StyleSheet } from "react-native";
2026-10-24T11:06:37.7818893Z ยท โโโฌโโ
2026-10-24T11:06:37.7819021Z ยท โฐโโ 'Image' is imported here
2026-10-24T11:06:37.7819081Z 18 โ
2026-10-24T11:06:37.7819136Z โฐโโโโ
2026-10-24T11:06:37.7819236Z help: Consider removing this import.
2026-10-24T11:06:37.7819238Z
2026-10-24T11:06:37.7819443Z โ react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T11:06:37.7819589Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:229:6]
2026-10-24T11:06:37.7819753Z 225 โ nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T11:06:37.7819845Z 226 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7819937Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7820416Z ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7820493Z 227 โ mostRecentEventCount,
2026-10-24T11:06:37.7820550Z 228 โ );
2026-10-24T11:06:37.7820671Z 229 โ }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T11:06:37.7820819Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7821022Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7821106Z 230 โ const assumedValue = props.value;
2026-10-24T11:06:37.7821159Z โฐโโโโ
2026-10-24T11:06:37.7821327Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T11:06:37.7821701Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7821736Z
2026-10-24T11:06:37.7821951Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T11:06:37.7822094Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:237:7]
2026-10-24T11:06:37.7822238Z 236 โ nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T11:06:37.7822329Z 237 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7822422Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7822892Z ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7822965Z 238 โ controlledEventCount,
2026-10-24T11:06:37.7823036Z 239 โ assumedValue,
2026-10-24T11:06:37.7823095Z 240 โ );
2026-10-24T11:06:37.7823311Z 241 โ }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T11:06:37.7823449Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7823660Z ยท โฐโโ Unnecessary dependency `controlledDocumentJson`
2026-10-24T11:06:37.7823751Z 242 โ const acceptNativeEvent = useCallback(
2026-10-24T11:06:37.7823803Z โฐโโโโ
2026-10-24T11:06:37.7824227Z 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-24T11:06:37.7824545Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7824550Z
2026-10-24T11:06:37.7824696Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7824842Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T11:06:37.7824966Z 161 โ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T11:06:37.7825078Z 162 โ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T11:06:37.7825198Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T11:06:37.7825368Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7825425Z 163 โ });
2026-10-24T11:06:37.7825477Z โฐโโโโ
2026-10-24T11:06:37.7826018Z 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-24T11:06:37.7826350Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7826353Z
2026-10-24T11:06:37.7826499Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7826644Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T11:06:37.7826766Z 161 โ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T11:06:37.7826877Z 162 โ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T11:06:37.7826997Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T11:06:37.7827209Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7827265Z 163 โ });
2026-10-24T11:06:37.7827320Z โฐโโโโ
2026-10-24T11:06:37.7827790Z 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-24T11:06:37.7828083Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7828085Z
2026-10-24T11:06:37.7828236Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7828407Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:164:23]
2026-10-24T11:06:37.7828464Z 163 โ });
2026-10-24T11:06:37.7828554Z 164 โ confirmedTokensRef.current = tokens;
2026-10-24T11:06:37.7828680Z ยท โโโโโโโโโโฌโโโโโโโโโโโโโฌโโโ
2026-10-24T11:06:37.7828872Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T11:06:37.7828994Z ยท โฐโโ This value is a ref
2026-10-24T11:06:37.7829068Z 165 โ return JSON.stringify(
2026-10-24T11:06:37.7829120Z โฐโโโโ
2026-10-24T11:06:37.7829596Z 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-24T11:06:37.7829888Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7829891Z
2026-10-24T11:06:37.7830035Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7830179Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:206:5]
2026-10-24T11:06:37.7830251Z 205 โ mostRecentEventCount,
2026-10-24T11:06:37.7830337Z 206 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7830444Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7830635Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7830691Z 207 โ );
2026-10-24T11:06:37.7830799Z โฐโโโโ
2026-10-24T11:06:37.7831298Z 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-24T11:06:37.7831591Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7831594Z
2026-10-24T11:06:37.7831738Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7831880Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:212:5]
2026-10-24T11:06:37.7831950Z 211 โ mostRecentEventCount,
2026-10-24T11:06:37.7832037Z 212 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7832144Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7832335Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7832389Z 213 โ );
2026-10-24T11:06:37.7832441Z โฐโโโโ
2026-10-24T11:06:37.7832909Z 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-24T11:06:37.7833200Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7833203Z
2026-10-24T11:06:37.7833390Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T11:06:37.7833536Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:197:6]
2026-10-24T11:06:37.7833664Z 161 โ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T11:06:37.7833777Z 162 โ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T11:06:37.7833887Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T11:06:37.7834355Z ยท โฐโโ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7834413Z 163 โ });
2026-10-24T11:06:37.7834505Z 164 โ confirmedTokensRef.current = tokens;
2026-10-24T11:06:37.7834577Z 165 โ return JSON.stringify(
2026-10-24T11:06:37.7834747Z 166 โ composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T11:06:37.7834818Z 167 โ const record =
2026-10-24T11:06:37.7834899Z 168 โ token.type === "context"
2026-10-24T11:06:37.7835064Z 169 โ ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T11:06:37.7835129Z 170 โ : undefined;
2026-10-24T11:06:37.7835238Z 171 โ const presentation = contextChipPresentation(
2026-10-24T11:06:37.7835348Z 172 โ token.type === "context" ? token.kind : token.type,
2026-10-24T11:06:37.7835411Z 173 โ record,
2026-10-24T11:06:37.7835469Z 174 โ );
2026-10-24T11:06:37.7835555Z 175 โ const icon = contextChipIcon(
2026-10-24T11:06:37.7835625Z 176 โ presentation,
2026-10-24T11:06:37.7835769Z 177 โ token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T11:06:37.7835885Z 178 โ );
2026-10-24T11:06:37.7835990Z 179 โ return {
2026-10-24T11:06:37.7836062Z 180 โ type: token.type,
2026-10-24T11:06:37.7836136Z 181 โ source: token.source,
2026-10-24T11:06:37.7836210Z 182 โ start: token.start,
2026-10-24T11:06:37.7836277Z 183 โ end: token.end,
2026-10-24T11:06:37.7836426Z 184 โ accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T11:06:37.7836487Z 185 โ label:
2026-10-24T11:06:37.7836567Z 186 โ token.type === "skill"
2026-10-24T11:06:37.7836676Z 187 โ ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T11:06:37.7836761Z 188 โ : token.type === "context"
2026-10-24T11:06:37.7836998Z 189 โ ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-24T11:06:37.7837087Z 190 โ : basename(token.value),
2026-10-24T11:06:37.7837234Z 191 โ detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T11:06:37.7837327Z 192 โ iconUri: contextChipIconUri(icon),
2026-10-24T11:06:37.7837414Z 193 โ tintsIcon: icon.kind === "chip",
2026-10-24T11:06:37.7837473Z 194 โ };
2026-10-24T11:06:37.7837530Z 195 โ }),
2026-10-24T11:06:37.7837586Z 196 โ );
2026-10-24T11:06:37.7837720Z 197 โ }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T11:06:37.7837876Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7838084Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7838230Z 198 โ // Every render resolves against the snapshot history, so a render whose
2026-10-24T11:06:37.7838321Z โฐโโโโ
2026-10-24T11:06:37.7838528Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T11:06:37.7838844Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7838847Z
2026-10-24T11:06:37.7839035Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T11:06:37.7839178Z โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:259:5]
2026-10-24T11:06:37.7839308Z 251 โ mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T11:06:37.7839411Z 252 โ nativeEventSnapshotsRef.current.push({
2026-10-24T11:06:37.7839509Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7839978Z ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7840069Z 253 โ eventCount: acknowledgedEventCount,
2026-10-24T11:06:37.7840131Z 254 โ value,
2026-10-24T11:06:37.7840210Z 255 โ selection: nextSelection,
2026-10-24T11:06:37.7840267Z 256 โ });
2026-10-24T11:06:37.7840351Z 257 โ return acknowledgedEventCount;
2026-10-24T11:06:37.7840407Z 258 โ },
2026-10-24T11:06:37.7840462Z 259 โ [],
2026-10-24T11:06:37.7840532Z ยท โโฌ
2026-10-24T11:06:37.7840713Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7840830Z 260 โ );
2026-10-24T11:06:37.7840915Z โฐโโโโ
2026-10-24T11:06:37.7841122Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T11:06:37.7841433Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7841436Z
2026-10-24T11:06:37.7841697Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7841868Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-24T11:06:37.7841921Z 638 โ
2026-10-24T11:06:37.7841986Z 639 โ useEffect(() => {
2026-10-24T11:06:37.7842059Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7842194Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7842307Z 640 โ if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-24T11:06:37.7842368Z 641 โ return;
2026-10-24T11:06:37.7842424Z 642 โ }
2026-10-24T11:06:37.7842499Z 643 โ setPendingLaunchEntry({
2026-10-24T11:06:37.7842588Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7842760Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7842831Z 644 โ key: launchTargetKey,
2026-10-24T11:06:37.7842882Z โฐโโโโ
2026-10-24T11:06:37.7843498Z 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-24T11:06:37.7843826Z 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-24T11:06:37.7843829Z
2026-10-24T11:06:37.7844089Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7844261Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-24T11:06:37.7844315Z 648 โ
2026-10-24T11:06:37.7844381Z 649 โ useEffect(() => {
2026-10-24T11:06:37.7844452Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7844582Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7844703Z 650 โ if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-24T11:06:37.7844766Z 651 โ return;
2026-10-24T11:06:37.7844820Z 652 โ }
2026-10-24T11:06:37.7844903Z 653 โ setInitialAttachGridEntry({
2026-10-24T11:06:37.7844998Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T11:06:37.7845174Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7845245Z 654 โ key: launchTargetKey,
2026-10-24T11:06:37.7845298Z โฐโโโโ
2026-10-24T11:06:37.7845903Z 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-24T11:06:37.7846290Z 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-24T11:06:37.7846324Z
2026-10-24T11:06:37.7846582Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7846750Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-24T11:06:37.7846804Z 743 โ
2026-10-24T11:06:37.7846869Z 744 โ useEffect(() => {
2026-10-24T11:06:37.7846939Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7847066Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7847169Z 745 โ if (!routeEnvironmentId || !routeThreadId) {
2026-10-24T11:06:37.7847238Z 746 โ setLastGridSize({
2026-10-24T11:06:37.7847326Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T11:06:37.7847498Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7847579Z 747 โ cols: DEFAULT_TERMINAL_COLS,
2026-10-24T11:06:37.7847631Z โฐโโโโ
2026-10-24T11:06:37.7848238Z 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-24T11:06:37.7848591Z 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-24T11:06:37.7848594Z
2026-10-24T11:06:37.7848801Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7848976Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-24T11:06:37.7849033Z 537 โ });
2026-10-24T11:06:37.7849156Z 538 โ }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-24T11:06:37.7849268Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7849517Z ยท โฐโโ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-24T11:06:37.7849681Z 539 โ const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-24T11:06:37.7849734Z โฐโโโโ
2026-10-24T11:06:37.7850030Z 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-24T11:06:37.7850400Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7850442Z
2026-10-24T11:06:37.7850644Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7850814Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-24T11:06:37.7850910Z 708 โ sentInitialInputKeyRef.current = null;
2026-10-24T11:06:37.7850976Z 709 โ }, [terminalKey]);
2026-10-24T11:06:37.7851053Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7851197Z ยท โฐโโ Unnecessary dependency `terminalKey`
2026-10-24T11:06:37.7851251Z 710 โ
2026-10-24T11:06:37.7851302Z โฐโโโโ
2026-10-24T11:06:37.7851600Z 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-24T11:06:37.7851915Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7851918Z
2026-10-24T11:06:37.7852119Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7852289Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-24T11:06:37.7852345Z 799 โ };
2026-10-24T11:06:37.7852527Z 800 โ }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-24T11:06:37.7852712Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโฌโโโโโ
2026-10-24T11:06:37.7852948Z ยท โ โฐโโ Unnecessary dependency `terminalKey`
2026-10-24T11:06:37.7853159Z ยท โฐโโ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-24T11:06:37.7853213Z 801 โ
2026-10-24T11:06:37.7853264Z โฐโโโโ
2026-10-24T11:06:37.7853559Z 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-24T11:06:37.7853870Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7853872Z
2026-10-24T11:06:37.7854023Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7854196Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-24T11:06:37.7854253Z 792 โ }
2026-10-24T11:06:37.7854360Z 793 โ const pasteSession = pasteSessionRef.current;
2026-10-24T11:06:37.7854473Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7854635Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7854689Z 794 โ
2026-10-24T11:06:37.7854739Z โฐโโโโ
2026-10-24T11:06:37.7855271Z 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-24T11:06:37.7855591Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7855593Z
2026-10-24T11:06:37.7855854Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7856020Z โญโ[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:413:7]
2026-10-24T11:06:37.7856072Z 412 โ
2026-10-24T11:06:37.7856198Z 413 โ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-24T11:06:37.7856269Z ยท โโโฌโโ
2026-10-24T11:06:37.7856395Z ยท โฐโโ 'layer' is declared here
2026-10-24T11:06:37.7856446Z โฐโโโโ
2026-10-24T11:06:37.7856557Z help: Consider removing this declaration.
2026-10-24T11:06:37.7856564Z
2026-10-24T11:06:37.7856832Z โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7856966Z โญโ[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-24T11:06:37.7857019Z 339 โ
2026-10-24T11:06:37.7857121Z 340 โ const layerTest = AnalyticsService.layerTest;
2026-10-24T11:06:37.7857198Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7857330Z ยท โฐโโ 'layerTest' is declared here
2026-10-24T11:06:37.7857381Z โฐโโโโ
2026-10-24T11:06:37.7857485Z help: Consider removing this declaration.
2026-10-24T11:06:37.7857487Z
2026-10-24T11:06:37.7857632Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7857756Z โญโ[apps/mobile/src/native/StackHeader.tsx:185:9]
2026-10-24T11:06:37.7857825Z 184 โ "options",
2026-10-24T11:06:37.7857920Z 185 โ latestOptionFunctionsRef.current,
2026-10-24T11:06:37.7858031Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7858226Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7858346Z 186 โ optionFunctionWrappersRef.current,
2026-10-24T11:06:37.7858398Z โฐโโโโ
2026-10-24T11:06:37.7858872Z 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-24T11:06:37.7859170Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7859175Z
2026-10-24T11:06:37.7859319Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7859437Z โญโ[apps/mobile/src/native/StackHeader.tsx:186:9]
2026-10-24T11:06:37.7859531Z 185 โ latestOptionFunctionsRef.current,
2026-10-24T11:06:37.7859626Z 186 โ optionFunctionWrappersRef.current,
2026-10-24T11:06:37.7859737Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7859929Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7860023Z 187 โ ) as NativeStackNavigationOptions)
2026-10-24T11:06:37.7860076Z โฐโโโโ
2026-10-24T11:06:37.7860604Z 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-24T11:06:37.7860928Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7860931Z
2026-10-24T11:06:37.7861132Z โ eslint(no-unsafe-optional-chaining): Unsafe usage of optional chaining
2026-10-24T11:06:37.7861302Z โญโ[apps/server/src/orchestration-v2/ThreadLaunchService.test.ts:1783:8]
2026-10-24T11:06:37.7861368Z 1782 โ assert.equal(
2026-10-24T11:06:37.7861516Z 1783 โ (stored.context?.records[0] as { attachmentId: string }).attachmentId,
2026-10-24T11:06:37.7861618Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7861704Z 1784 โ stored.attachments[0]?.id,
2026-10-24T11:06:37.7861761Z โฐโโโโ
2026-10-24T11:06:37.7861934Z help: If this short-circuits with 'undefined' the evaluation will throw TypeError
2026-10-24T11:06:37.7861937Z
2026-10-24T11:06:37.7862196Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7862359Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T11:06:37.7862423Z 259 โ .join("|");
2026-10-24T11:06:37.7862489Z 260 โ useEffect(() => {
2026-10-24T11:06:37.7862560Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7862690Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7862751Z 261 โ stop();
2026-10-24T11:06:37.7862826Z ยท โโโฌโ
2026-10-24T11:06:37.7862995Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7863062Z 262 โ }, [orderVersion]);
2026-10-24T11:06:37.7863114Z โฐโโโโ
2026-10-24T11:06:37.7863810Z 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-24T11:06:37.7864134Z 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-24T11:06:37.7864136Z
2026-10-24T11:06:37.7864357Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T11:06:37.7864522Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T11:06:37.7864586Z 260 โ useEffect(() => {
2026-10-24T11:06:37.7864648Z 261 โ stop();
2026-10-24T11:06:37.7864715Z ยท โโโฌโ
2026-10-24T11:06:37.7864842Z ยท โฐโโ Missing dependency `stop`
2026-10-24T11:06:37.7864909Z 262 โ }, [orderVersion]);
2026-10-24T11:06:37.7864990Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7865138Z ยท โฐโโ Unnecessary dependency `orderVersion`
2026-10-24T11:06:37.7865200Z 263 โ useEffect(
2026-10-24T11:06:37.7865254Z โฐโโโโ
2026-10-24T11:06:37.7865758Z 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-24T11:06:37.7866113Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7866117Z
2026-10-24T11:06:37.7866261Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7866422Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-24T11:06:37.7866499Z 95 โ const latest = useRef(props);
2026-10-24T11:06:37.7866569Z 96 โ latest.current = props;
2026-10-24T11:06:37.7866674Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T11:06:37.7866853Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T11:06:37.7866973Z ยท โฐโโ This value is a ref
2026-10-24T11:06:37.7867047Z 97 โ const gesture = useMemo(
2026-10-24T11:06:37.7867097Z โฐโโโโ
2026-10-24T11:06:37.7867568Z 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-24T11:06:37.7867861Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7867863Z
2026-10-24T11:06:37.7868008Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7868168Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-24T11:06:37.7868239Z 103 โ .runOnJS(true)
2026-10-24T11:06:37.7868370Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T11:06:37.7868489Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7868688Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7868824Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7868875Z โฐโโโโ
2026-10-24T11:06:37.7869346Z 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-24T11:06:37.7869690Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7869724Z
2026-10-24T11:06:37.7869867Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7870029Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-24T11:06:37.7870127Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T11:06:37.7870258Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7870402Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7870614Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7870741Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7870800Z โฐโโโโ
2026-10-24T11:06:37.7871272Z 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-24T11:06:37.7871561Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7871564Z
2026-10-24T11:06:37.7871707Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7871866Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-24T11:06:37.7871996Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7872122Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7872267Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7872474Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7872600Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T11:06:37.7872653Z โฐโโโโ
2026-10-24T11:06:37.7873121Z 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-24T11:06:37.7873413Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7873421Z
2026-10-24T11:06:37.7873567Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7873729Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-24T11:06:37.7873850Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7873972Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T11:06:37.7874111Z ยท โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7874318Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7874387Z 108 โ [props.disabled],
2026-10-24T11:06:37.7874438Z โฐโโโโ
2026-10-24T11:06:37.7874971Z 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-24T11:06:37.7875292Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7875295Z
2026-10-24T11:06:37.7875438Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7875598Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-24T11:06:37.7875711Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T11:06:37.7875817Z 249 โ latest.current = { rows, planners, moveThread };
2026-10-24T11:06:37.7875923Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T11:06:37.7876108Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T11:06:37.7876226Z ยท โฐโโ This value is a ref
2026-10-24T11:06:37.7876280Z 250 โ
2026-10-24T11:06:37.7876332Z โฐโโโโ
2026-10-24T11:06:37.7876803Z 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-24T11:06:37.7877094Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7877096Z
2026-10-24T11:06:37.7877239Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7877404Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-24T11:06:37.7877525Z 246 โ const [preview, setPreview] = useState<Drag | null>(null);
2026-10-24T11:06:37.7877639Z 247 โ const translateY = useRef(new Animated.Value(0)).current;
2026-10-24T11:06:37.7877766Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7877936Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7878048Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T11:06:37.7878100Z โฐโโโโ
2026-10-24T11:06:37.7878597Z 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-24T11:06:37.7878892Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7878894Z
2026-10-24T11:06:37.7879064Z โ react(purity): Cannot call impure function during render
2026-10-24T11:06:37.7879223Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-24T11:06:37.7879288Z 323 โ update(0);
2026-10-24T11:06:37.7879370Z 324 โ let last = performance.now();
2026-10-24T11:06:37.7879468Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T11:06:37.7879608Z ยท โฐโโ Cannot call impure function
2026-10-24T11:06:37.7879676Z 325 โ const tick = () => {
2026-10-24T11:06:37.7879728Z โฐโโโโ
2026-10-24T11:06:37.7880087Z help: `performance.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T11:06:37.7880420Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T11:06:37.7880423Z
2026-10-24T11:06:37.7880612Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T11:06:37.7880772Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-24T11:06:37.7880832Z 98 โ () =>
2026-10-24T11:06:37.7880898Z 99 โ Gesture.Pan()
2026-10-24T11:06:37.7880975Z ยท โโฌโ
2026-10-24T11:06:37.7881107Z ยท โฐโโ `Pan` may be a component
2026-10-24T11:06:37.7881193Z 100 โ .enabled(!props.disabled)
2026-10-24T11:06:37.7881248Z โฐโโโโ
2026-10-24T11:06:37.7881524Z help: Render `Pan` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T11:06:37.7881975Z note: `Pan` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T11:06:37.7881978Z
2026-10-24T11:06:37.7882165Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T11:06:37.7882326Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-24T11:06:37.7882393Z 103 โ .runOnJS(true)
2026-10-24T11:06:37.7882497Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T11:06:37.7882587Z ยท โโโโฌโโ
2026-10-24T11:06:37.7883026Z ยท โฐโโ Missing dependency `latest`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7883159Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7883282Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T11:06:37.7883404Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T11:06:37.7883472Z 108 โ [props.disabled],
2026-10-24T11:06:37.7883555Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T11:06:37.7883748Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7883807Z 109 โ );
2026-10-24T11:06:37.7883860Z โฐโโโโ
2026-10-24T11:06:37.7884067Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T11:06:37.7884379Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7884382Z
2026-10-24T11:06:37.7884538Z โ react(immutability): This value cannot be modified
2026-10-24T11:06:37.7884695Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T11:06:37.7884748Z 86 โ
2026-10-24T11:06:37.7884842Z 87 โ const cardCoverage = props.cardCoverage;
2026-10-24T11:06:37.7884979Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7885248Z ยท โฐโโ `cardCoverage` originates here
2026-10-24T11:06:37.7885329Z 88 โ const barHeightRef = useRef(0);
2026-10-24T11:06:37.7885409Z 89 โ const cardHeightRef = useRef(0);
2026-10-24T11:06:37.7885493Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T11:06:37.7885586Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T11:06:37.7885654Z 92 โ if (!cardCoverage) {
2026-10-24T11:06:37.7885716Z 93 โ return;
2026-10-24T11:06:37.7885770Z 94 โ }
2026-10-24T11:06:37.7885924Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T11:06:37.7886012Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T11:06:37.7886071Z 97 โ return;
2026-10-24T11:06:37.7886126Z 98 โ }
2026-10-24T11:06:37.7886214Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T11:06:37.7886300Z 100 โ cardCoverage.value = coverage;
2026-10-24T11:06:37.7886379Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7886522Z ยท โฐโโ `cardCoverage` cannot be modified
2026-10-24T11:06:37.7886583Z 101 โ return;
2026-10-24T11:06:37.7886635Z โฐโโโโ
2026-10-24T11:06:37.7886934Z 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-24T11:06:37.7887239Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7887241Z
2026-10-24T11:06:37.7887398Z โ react(immutability): This value cannot be modified
2026-10-24T11:06:37.7887558Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T11:06:37.7887643Z 89 โ const cardHeightRef = useRef(0);
2026-10-24T11:06:37.7887727Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T11:06:37.7887806Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7887940Z ยท โฐโโ `cardHeight` originates here
2026-10-24T11:06:37.7888037Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T11:06:37.7888105Z 92 โ if (!cardCoverage) {
2026-10-24T11:06:37.7888167Z 93 โ return;
2026-10-24T11:06:37.7888222Z 94 โ }
2026-10-24T11:06:37.7888396Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T11:06:37.7888484Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T11:06:37.7888543Z 97 โ return;
2026-10-24T11:06:37.7888602Z 98 โ }
2026-10-24T11:06:37.7888686Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T11:06:37.7888767Z 100 โ cardCoverage.value = coverage;
2026-10-24T11:06:37.7888830Z 101 โ return;
2026-10-24T11:06:37.7888885Z 102 โ }
2026-10-24T11:06:37.7888987Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-24T11:06:37.7889083Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T11:06:37.7889169Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-24T11:06:37.7889227Z 106 โ });
2026-10-24T11:06:37.7889294Z 107 โ }, [cardCoverage]);
2026-10-24T11:06:37.7889380Z 108 โ const handleBarLayout = useCallback(
2026-10-24T11:06:37.7889462Z 109 โ (event: LayoutChangeEvent) => {
2026-10-24T11:06:37.7889590Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T11:06:37.7889658Z 111 โ notifyCoverage();
2026-10-24T11:06:37.7889772Z 112 โ },
2026-10-24T11:06:37.7889880Z 113 โ [notifyCoverage],
2026-10-24T11:06:37.7889934Z 114 โ );
2026-10-24T11:06:37.7890020Z 115 โ const handleCardLayout = useCallback(
2026-10-24T11:06:37.7890101Z 116 โ (event: LayoutChangeEvent) => {
2026-10-24T11:06:37.7890229Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T11:06:37.7890343Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T11:06:37.7890420Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7890560Z ยท โฐโโ `cardHeight` cannot be modified
2026-10-24T11:06:37.7890628Z 119 โ notifyCoverage();
2026-10-24T11:06:37.7890680Z โฐโโโโ
2026-10-24T11:06:37.7890955Z 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-24T11:06:37.7891268Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7891271Z
2026-10-24T11:06:37.7891474Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T11:06:37.7891631Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T11:06:37.7891718Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T11:06:37.7891811Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T11:06:37.7891918Z ยท โโโโฌโโโ
2026-10-24T11:06:37.7892157Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T11:06:37.7892231Z 92 โ if (!cardCoverage) {
2026-10-24T11:06:37.7892294Z 93 โ return;
2026-10-24T11:06:37.7892349Z 94 โ }
2026-10-24T11:06:37.7892499Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T11:06:37.7892587Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T11:06:37.7892645Z 97 โ return;
2026-10-24T11:06:37.7892700Z 98 โ }
2026-10-24T11:06:37.7892780Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T11:06:37.7892862Z 100 โ cardCoverage.value = coverage;
2026-10-24T11:06:37.7892943Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7893080Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T11:06:37.7893140Z 101 โ return;
2026-10-24T11:06:37.7893193Z โฐโโโโ
2026-10-24T11:06:37.7893604Z 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-24T11:06:37.7893945Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7893948Z
2026-10-24T11:06:37.7894149Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T11:06:37.7894306Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T11:06:37.7894388Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T11:06:37.7894471Z 100 โ cardCoverage.value = coverage;
2026-10-24T11:06:37.7894549Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7894686Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T11:06:37.7894749Z 101 โ return;
2026-10-24T11:06:37.7894805Z 102 โ }
2026-10-24T11:06:37.7894907Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-24T11:06:37.7895003Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T11:06:37.7895087Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-24T11:06:37.7895144Z 106 โ });
2026-10-24T11:06:37.7895210Z 107 โ }, [cardCoverage]);
2026-10-24T11:06:37.7895296Z 108 โ const handleBarLayout = useCallback(
2026-10-24T11:06:37.7895375Z 109 โ (event: LayoutChangeEvent) => {
2026-10-24T11:06:37.7895482Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7895707Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T11:06:37.7895839Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T11:06:37.7895895Z โฐโโโโ
2026-10-24T11:06:37.7896235Z 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-24T11:06:37.7896542Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7896544Z
2026-10-24T11:06:37.7896744Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T11:06:37.7896901Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T11:06:37.7896987Z 115 โ const handleCardLayout = useCallback(
2026-10-24T11:06:37.7897069Z 116 โ (event: LayoutChangeEvent) => {
2026-10-24T11:06:37.7897178Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7897398Z ยท โฐโโ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-24T11:06:37.7897524Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T11:06:37.7897639Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T11:06:37.7897715Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7897845Z ยท โฐโโ This modifies `cardHeight`
2026-10-24T11:06:37.7897913Z 119 โ notifyCoverage();
2026-10-24T11:06:37.7897967Z โฐโโโโ
2026-10-24T11:06:37.7898327Z 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-24T11:06:37.7898686Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T11:06:37.7898723Z
2026-10-24T11:06:37.7899189Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) 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-24T11:06:37.7899317Z โญโ[packages/effect-acp/src/protocol.test.ts:500:31]
2026-10-24T11:06:37.7899371Z 499 โ
2026-10-24T11:06:37.7899487Z 500 โ const response = yield* Schema.decodeUnknownEffect(
2026-10-24T11:06:37.7899607Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7899716Z 501 โ Schema.fromJsonString(JsonRpcErrorResponse),
2026-10-24T11:06:37.7899769Z โฐโโโโ
2026-10-24T11:06:37.7899778Z
2026-10-24T11:06:37.7900043Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7900167Z โญโ[apps/server/src/serverRuntimeStartup.ts:728:7]
2026-10-24T11:06:37.7900220Z 727 โ
2026-10-24T11:06:37.7900302Z 728 โ const layer = layerWithOptions();
2026-10-24T11:06:37.7900374Z ยท โโโฌโโ
2026-10-24T11:06:37.7900497Z ยท โฐโโ 'layer' is declared here
2026-10-24T11:06:37.7900549Z โฐโโโโ
2026-10-24T11:06:37.7900654Z help: Consider removing this declaration.
2026-10-24T11:06:37.7900656Z
2026-10-24T11:06:37.7900948Z โ eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7901079Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-24T11:06:37.7901136Z 217 โ
2026-10-24T11:06:37.7901288Z 218 โ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-24T11:06:37.7901379Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7901537Z ยท โฐโโ 'revokeActiveMcpThread' is declared here
2026-10-24T11:06:37.7901726Z 219 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-24T11:06:37.7901779Z โฐโโโโ
2026-10-24T11:06:37.7901883Z help: Consider removing this declaration.
2026-10-24T11:06:37.7901886Z
2026-10-24T11:06:37.7902197Z โ eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7902326Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-24T11:06:37.7902382Z 220 โ
2026-10-24T11:06:37.7902516Z 221 โ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-24T11:06:37.7902619Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7902795Z ยท โฐโโ 'revokeAllActiveMcpCredentials' is declared here
2026-10-24T11:06:37.7902957Z 222 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-24T11:06:37.7903009Z โฐโโโโ
2026-10-24T11:06:37.7903113Z help: Consider removing this declaration.
2026-10-24T11:06:37.7903115Z
2026-10-24T11:06:37.7903431Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7903665Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:217:7]
2026-10-24T11:06:37.7903779Z 213 โ };
2026-10-24T11:06:37.7903847Z 214 โ useEffect(() => {
2026-10-24T11:06:37.7903918Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7904049Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7904222Z 215 โ const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-24T11:06:37.7904289Z 216 โ if (inserted) {
2026-10-24T11:06:37.7904366Z 217 โ setSelection((current) =>
2026-10-24T11:06:37.7904444Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7904616Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7904794Z 218 โ current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-24T11:06:37.7904849Z โฐโโโโ
2026-10-24T11:06:37.7905464Z 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-24T11:06:37.7905790Z 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-24T11:06:37.7905792Z
2026-10-24T11:06:37.7906052Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7906218Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:298:7]
2026-10-24T11:06:37.7906299Z 286 โ }, [hasWorkspaceSnapshot]);
2026-10-24T11:06:37.7906366Z 287 โ useEffect(() => {
2026-10-24T11:06:37.7906439Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7906568Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7906716Z 288 โ if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-24T11:06:37.7906866Z 289 โ const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-24T11:06:37.7906938Z 290 โ const now = Date.now();
2026-10-24T11:06:37.7907053Z 291 โ const lastRequest = workspaceRefreshKeyRef.current;
2026-10-24T11:06:37.7907110Z 292 โ if (
2026-10-24T11:06:37.7907191Z 293 โ lastRequest?.key === key &&
2026-10-24T11:06:37.7907331Z 294 โ now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-24T11:06:37.7907387Z 295 โ )
2026-10-24T11:06:37.7907454Z 296 โ return;
2026-10-24T11:06:37.7907633Z 297 โ if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-24T11:06:37.7907720Z 298 โ setWorkspaceRefreshRetry(null);
2026-10-24T11:06:37.7907817Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7907994Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7908056Z 299 โ return;
2026-10-24T11:06:37.7908109Z โฐโโโโ
2026-10-24T11:06:37.7908746Z 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-24T11:06:37.7909128Z 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-24T11:06:37.7909172Z
2026-10-24T11:06:37.7909374Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7909540Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:328:5]
2026-10-24T11:06:37.7909597Z 327 โ }, [
2026-10-24T11:06:37.7909663Z 328 โ draftMessage,
2026-10-24T11:06:37.7909740Z ยท โโโโโโโฌโโโโโ
2026-10-24T11:06:37.7909887Z ยท โฐโโ Unnecessary dependency `draftMessage`
2026-10-24T11:06:37.7909953Z 329 โ environmentId,
2026-10-24T11:06:37.7910007Z โฐโโโโ
2026-10-24T11:06:37.7910310Z 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-24T11:06:37.7910626Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7910629Z
2026-10-24T11:06:37.7910834Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T11:06:37.7911003Z โญโ[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-24T11:06:37.7911077Z 14 โ } from "@t3tools/contracts";
2026-10-24T11:06:37.7911167Z 15 โ import type {} from "@t3tools/contracts";
2026-10-24T11:06:37.7911239Z ยท โโ
2026-10-24T11:06:37.7911422Z 16 โ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-24T11:06:37.7911480Z โฐโโโโ
2026-10-24T11:06:37.7911566Z help: Remove empty braces
2026-10-24T11:06:37.7911569Z
2026-10-24T11:06:37.7911943Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T11:06:37.7912070Z โญโ[apps/server/src/auth/RpcAuthorization.ts:237:17]
2026-10-24T11:06:37.7912207Z 236 โ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-24T11:06:37.7912340Z 237 โ const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-24T11:06:37.7912448Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7912588Z 238 โ const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-24T11:06:37.7912641Z โฐโโโโ
2026-10-24T11:06:37.7912644Z
2026-10-24T11:06:37.7913067Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T11:06:37.7913227Z โญโ[apps/server/src/auth/RpcAuthorization.ts:256:26]
2026-10-24T11:06:37.7913328Z 255 โ if (method === WS_METHODS.assetsCreateUrl) {
2026-10-24T11:06:37.7913482Z 256 โ const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-24T11:06:37.7913596Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7913656Z 257 โ return [
2026-10-24T11:06:37.7913708Z โฐโโโโ
2026-10-24T11:06:37.7913711Z
2026-10-24T11:06:37.7913911Z โ eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-24T11:06:37.7914023Z โญโ[apps/server/src/auth/http.ts:28:10]
2026-10-24T11:06:37.7914113Z 27 โ import * as Schema from "effect/Schema";
2026-10-24T11:06:37.7914206Z 28 โ import { identity } from "effect/Function";
2026-10-24T11:06:37.7914282Z ยท โโโโโฌโโโ
2026-10-24T11:06:37.7914418Z ยท โฐโโ 'identity' is imported here
2026-10-24T11:06:37.7914503Z 29 โ import * as Layer from "effect/Layer";
2026-10-24T11:06:37.7914558Z โฐโโโโ
2026-10-24T11:06:37.7914655Z help: Consider removing this import.
2026-10-24T11:06:37.7914658Z
2026-10-24T11:06:37.7914863Z โ react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T11:06:37.7914999Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:231:6]
2026-10-24T11:06:37.7915163Z 227 โ nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T11:06:37.7915259Z 228 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7915357Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7915827Z ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7915901Z 229 โ mostRecentEventCount,
2026-10-24T11:06:37.7915958Z 230 โ );
2026-10-24T11:06:37.7916081Z 231 โ }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T11:06:37.7916217Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7916421Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7916512Z 232 โ const assumedValue = props.value;
2026-10-24T11:06:37.7916567Z โฐโโโโ
2026-10-24T11:06:37.7916735Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T11:06:37.7917050Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7917053Z
2026-10-24T11:06:37.7917272Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T11:06:37.7917409Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:239:7]
2026-10-24T11:06:37.7917556Z 238 โ nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T11:06:37.7917644Z 239 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7917790Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7918322Z ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7918398Z 240 โ controlledEventCount,
2026-10-24T11:06:37.7918462Z 241 โ assumedValue,
2026-10-24T11:06:37.7918518Z 242 โ );
2026-10-24T11:06:37.7918675Z 243 โ }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T11:06:37.7918815Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7919024Z ยท โฐโโ Unnecessary dependency `controlledDocumentJson`
2026-10-24T11:06:37.7919119Z 244 โ const acceptNativeEvent = useCallback(
2026-10-24T11:06:37.7919175Z โฐโโโโ
2026-10-24T11:06:37.7919599Z 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-24T11:06:37.7919915Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7919918Z
2026-10-24T11:06:37.7920064Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7920201Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T11:06:37.7920327Z 163 โ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T11:06:37.7920444Z 164 โ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T11:06:37.7920564Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T11:06:37.7920733Z ยท โฐโโ Cannot access ref value during render
2026-10-24T11:06:37.7920792Z 165 โ });
2026-10-24T11:06:37.7920845Z โฐโโโโ
2026-10-24T11:06:37.7921319Z 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-24T11:06:37.7921612Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7921615Z
2026-10-24T11:06:37.7921765Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7921908Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T11:06:37.7922031Z 163 โ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T11:06:37.7922142Z 164 โ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T11:06:37.7922263Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T11:06:37.7922470Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7922529Z 165 โ });
2026-10-24T11:06:37.7922580Z โฐโโโโ
2026-10-24T11:06:37.7923104Z 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-24T11:06:37.7923429Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7923431Z
2026-10-24T11:06:37.7923578Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7923715Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:166:23]
2026-10-24T11:06:37.7923771Z 165 โ });
2026-10-24T11:06:37.7923861Z 166 โ confirmedTokensRef.current = tokens;
2026-10-24T11:06:37.7923986Z ยท โโโโโโโโโโฌโโโโโโโโโโโโโฌโโโ
2026-10-24T11:06:37.7924177Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T11:06:37.7924298Z ยท โฐโโ This value is a ref
2026-10-24T11:06:37.7924375Z 167 โ return JSON.stringify(
2026-10-24T11:06:37.7924428Z โฐโโโโ
2026-10-24T11:06:37.7924898Z 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-24T11:06:37.7925188Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7925193Z
2026-10-24T11:06:37.7925336Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7925471Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:208:5]
2026-10-24T11:06:37.7925547Z 207 โ mostRecentEventCount,
2026-10-24T11:06:37.7925637Z 208 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7925741Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7925930Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7925986Z 209 โ );
2026-10-24T11:06:37.7926038Z โฐโโโโ
2026-10-24T11:06:37.7926512Z 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-24T11:06:37.7926807Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7926809Z
2026-10-24T11:06:37.7926957Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7927095Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:214:5]
2026-10-24T11:06:37.7927165Z 213 โ mostRecentEventCount,
2026-10-24T11:06:37.7927252Z 214 โ nativeEventSnapshotsRef.current,
2026-10-24T11:06:37.7927356Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7927544Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7927598Z 215 โ );
2026-10-24T11:06:37.7927651Z โฐโโโโ
2026-10-24T11:06:37.7928120Z 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-24T11:06:37.7928495Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7928529Z
2026-10-24T11:06:37.7928717Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T11:06:37.7928852Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:199:6]
2026-10-24T11:06:37.7928976Z 163 โ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T11:06:37.7929086Z 164 โ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T11:06:37.7929196Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T11:06:37.7929671Z ยท โฐโโ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7929732Z 165 โ });
2026-10-24T11:06:37.7929823Z 166 โ confirmedTokensRef.current = tokens;
2026-10-24T11:06:37.7929895Z 167 โ return JSON.stringify(
2026-10-24T11:06:37.7930061Z 168 โ composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T11:06:37.7930128Z 169 โ const record =
2026-10-24T11:06:37.7930209Z 170 โ token.type === "context"
2026-10-24T11:06:37.7930375Z 171 โ ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T11:06:37.7930441Z 172 โ : undefined;
2026-10-24T11:06:37.7930552Z 173 โ const presentation = contextChipPresentation(
2026-10-24T11:06:37.7930663Z 174 โ token.type === "context" ? token.kind : token.type,
2026-10-24T11:06:37.7930732Z 175 โ record,
2026-10-24T11:06:37.7930792Z 176 โ );
2026-10-24T11:06:37.7930880Z 177 โ const icon = contextChipIcon(
2026-10-24T11:06:37.7930948Z 178 โ presentation,
2026-10-24T11:06:37.7931094Z 179 โ token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T11:06:37.7931151Z 180 โ );
2026-10-24T11:06:37.7931214Z 181 โ return {
2026-10-24T11:06:37.7931286Z 182 โ type: token.type,
2026-10-24T11:06:37.7931363Z 183 โ source: token.source,
2026-10-24T11:06:37.7931436Z 184 โ start: token.start,
2026-10-24T11:06:37.7931504Z 185 โ end: token.end,
2026-10-24T11:06:37.7931653Z 186 โ accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T11:06:37.7931715Z 187 โ label:
2026-10-24T11:06:37.7931799Z 188 โ token.type === "skill"
2026-10-24T11:06:37.7931910Z 189 โ ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T11:06:37.7931994Z 190 โ : token.type === "context"
2026-10-24T11:06:37.7932230Z 191 โ ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-24T11:06:37.7932313Z 192 โ : basename(token.value),
2026-10-24T11:06:37.7932460Z 193 โ detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T11:06:37.7932555Z 194 โ iconUri: contextChipIconUri(icon),
2026-10-24T11:06:37.7932643Z 195 โ tintsIcon: icon.kind === "chip",
2026-10-24T11:06:37.7932701Z 196 โ };
2026-10-24T11:06:37.7932760Z 197 โ }),
2026-10-24T11:06:37.7932816Z 198 โ );
2026-10-24T11:06:37.7933007Z 199 โ }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T11:06:37.7933196Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7933403Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7933544Z 200 โ // Every render resolves against the snapshot history, so a render whose
2026-10-24T11:06:37.7933597Z โฐโโโโ
2026-10-24T11:06:37.7933803Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T11:06:37.7934119Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7934122Z
2026-10-24T11:06:37.7934317Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T11:06:37.7934461Z โญโ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:261:5]
2026-10-24T11:06:37.7934593Z 253 โ mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T11:06:37.7934694Z 254 โ nativeEventSnapshotsRef.current.push({
2026-10-24T11:06:37.7934787Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.7935251Z ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T11:06:37.7935344Z 255 โ eventCount: acknowledgedEventCount,
2026-10-24T11:06:37.7935406Z 256 โ value,
2026-10-24T11:06:37.7935485Z 257 โ selection: nextSelection,
2026-10-24T11:06:37.7935549Z 258 โ });
2026-10-24T11:06:37.7935638Z 259 โ return acknowledgedEventCount;
2026-10-24T11:06:37.7935692Z 260 โ },
2026-10-24T11:06:37.7935748Z 261 โ [],
2026-10-24T11:06:37.7935818Z ยท โโฌ
2026-10-24T11:06:37.7935999Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T11:06:37.7936055Z 262 โ );
2026-10-24T11:06:37.7936107Z โฐโโโโ
2026-10-24T11:06:37.7936314Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T11:06:37.7936627Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7936630Z
2026-10-24T11:06:37.7936940Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7937151Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-24T11:06:37.7937205Z 118 โ
2026-10-24T11:06:37.7937270Z 119 โ useEffect(() => {
2026-10-24T11:06:37.7937342Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7937474Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7937559Z 120 โ if (orientationSettled) return;
2026-10-24T11:06:37.7937672Z 121 โ const orientation = getNativeShowcaseOrientation();
2026-10-24T11:06:37.7937747Z 122 โ if (orientation === null) {
2026-10-24T11:06:37.7937829Z 123 โ setOrientationSettled(true);
2026-10-24T11:06:37.7937919Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T11:06:37.7938101Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7938167Z 124 โ return;
2026-10-24T11:06:37.7938220Z โฐโโโโ
2026-10-24T11:06:37.7938851Z 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-24T11:06:37.7939176Z 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-24T11:06:37.7939179Z
2026-10-24T11:06:37.7939437Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7939613Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:304:7]
2026-10-24T11:06:37.7939671Z 292 โ
2026-10-24T11:06:37.7939737Z 293 โ useEffect(() => {
2026-10-24T11:06:37.7939810Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7939938Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7939999Z 294 โ if (
2026-10-24T11:06:37.7940066Z 295 โ scene === null ||
2026-10-24T11:06:37.7940145Z 296 โ requestedScene === null ||
2026-10-24T11:06:37.7940222Z 297 โ scene !== requestedScene ||
2026-10-24T11:06:37.7940287Z 298 โ !hasFixture ||
2026-10-24T11:06:37.7940362Z 299 โ !orientationSettled ||
2026-10-24T11:06:37.7940429Z 300 โ !themeApplied ||
2026-10-24T11:06:37.7940545Z 301 โ (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-24T11:06:37.7940686Z 302 โ !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-24T11:06:37.7940745Z 303 โ ) {
2026-10-24T11:06:37.7940814Z 304 โ setReadyScene(null);
2026-10-24T11:06:37.7940895Z ยท โโโโโโโฌโโโโโโ
2026-10-24T11:06:37.7941067Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7941130Z 305 โ return;
2026-10-24T11:06:37.7941181Z โฐโโโโ
2026-10-24T11:06:37.7941786Z 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-24T11:06:37.7942168Z 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-24T11:06:37.7942204Z
2026-10-24T11:06:37.7942479Z โ eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-24T11:06:37.7942652Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-24T11:06:37.7942721Z 127 โ let cancelled = false;
2026-10-24T11:06:37.7942812Z 128 โ let lastOutcome: string | null = null;
2026-10-24T11:06:37.7942893Z ยท โโโโโโฌโโโโโ
2026-10-24T11:06:37.7943031Z ยท โฐโโ 'lastOutcome' is declared here
2026-10-24T11:06:37.7943398Z 129 โ void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-24T11:06:37.7943451Z โฐโโโโ
2026-10-24T11:06:37.7943563Z help: Consider removing this declaration.
2026-10-24T11:06:37.7943571Z
2026-10-24T11:06:37.7943757Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7943895Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-24T11:06:37.7944057Z 120 โ const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-24T11:06:37.7944145Z 121 โ const dispatch = vi.fn((_: unknown) =>
2026-10-24T11:06:37.7944231Z ยท โฌ
2026-10-24T11:06:37.7944362Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7944463Z 122 โ (options.dispatchGate ?? Effect.void).pipe(
2026-10-24T11:06:37.7944517Z โฐโโโโ
2026-10-24T11:06:37.7944620Z help: Consider removing this parameter.
2026-10-24T11:06:37.7944629Z
2026-10-24T11:06:37.7944818Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7944954Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-24T11:06:37.7945010Z 133 โ );
2026-10-24T11:06:37.7945117Z 134 โ const listLocalBranchNames = vi.fn((_: string) =>
2026-10-24T11:06:37.7945215Z ยท โฌ
2026-10-24T11:06:37.7945355Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7945423Z 135 โ Effect.succeed(
2026-10-24T11:06:37.7945476Z โฐโโโโ
2026-10-24T11:06:37.7945577Z help: Consider removing this parameter.
2026-10-24T11:06:37.7945580Z
2026-10-24T11:06:37.7945766Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7945904Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-24T11:06:37.7945961Z 177 โ });
2026-10-24T11:06:37.7946060Z 178 โ const sendToThread = vi.fn((_: unknown) => {
2026-10-24T11:06:37.7946147Z ยท โฌ
2026-10-24T11:06:37.7946281Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7946381Z 179 โ switch (options.continuation ?? "queued") {
2026-10-24T11:06:37.7946433Z โฐโโโโ
2026-10-24T11:06:37.7946531Z help: Consider removing this parameter.
2026-10-24T11:06:37.7946534Z
2026-10-24T11:06:37.7946718Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7946852Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-24T11:06:37.7946983Z 202 โ );
2026-10-24T11:06:37.7947123Z 203 โ const removeWorktree = vi.fn((_: unknown) =>
2026-10-24T11:06:37.7947214Z ยท โฌ
2026-10-24T11:06:37.7947351Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7947433Z 204 โ options.removeWorktreeFails
2026-10-24T11:06:37.7947484Z โฐโโโโ
2026-10-24T11:06:37.7947584Z help: Consider removing this parameter.
2026-10-24T11:06:37.7947587Z
2026-10-24T11:06:37.7948949Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7949098Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-24T11:06:37.7949155Z 207 โ );
2026-10-24T11:06:37.7949259Z 208 โ const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-24T11:06:37.7949363Z ยท โฌ
2026-10-24T11:06:37.7949512Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7949597Z 209 โ options.deleteLocalBranchFails
2026-10-24T11:06:37.7949650Z โฐโโโโ
2026-10-24T11:06:37.7949749Z help: Consider removing this parameter.
2026-10-24T11:06:37.7949752Z
2026-10-24T11:06:37.7949935Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7950069Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-24T11:06:37.7950126Z 212 โ );
2026-10-24T11:06:37.7950239Z 213 โ const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-24T11:06:37.7950340Z ยท โฌ
2026-10-24T11:06:37.7950488Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7950576Z 214 โ options.fetchWorktreeBaseFails
2026-10-24T11:06:37.7950629Z โฐโโโโ
2026-10-24T11:06:37.7950728Z help: Consider removing this parameter.
2026-10-24T11:06:37.7950730Z
2026-10-24T11:06:37.7950910Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7951046Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-24T11:06:37.7951102Z 253 โ );
2026-10-24T11:06:37.7951193Z 254 โ const localStatus = vi.fn((_: unknown) =>
2026-10-24T11:06:37.7951280Z ยท โฌ
2026-10-24T11:06:37.7951414Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7951488Z 255 โ Effect.succeed({
2026-10-24T11:06:37.7951543Z โฐโโโโ
2026-10-24T11:06:37.7951642Z help: Consider removing this parameter.
2026-10-24T11:06:37.7951644Z
2026-10-24T11:06:37.7951824Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T11:06:37.7951959Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-24T11:06:37.7952014Z 263 โ );
2026-10-24T11:06:37.7952163Z 264 โ const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-24T11:06:37.7952253Z ยท โฌ
2026-10-24T11:06:37.7952388Z ยท โฐโโ '_' is declared here
2026-10-24T11:06:37.7952536Z 265 โ const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-24T11:06:37.7952588Z โฐโโโโ
2026-10-24T11:06:37.7952756Z help: Consider removing this parameter.
2026-10-24T11:06:37.7952795Z
2026-10-24T11:06:37.7952962Z โ eslint(no-control-regex): Unexpected control character
2026-10-24T11:06:37.7953159Z โญโ[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-24T11:06:37.7953299Z 219 โ <Text selectable className="font-mono text-sm text-foreground">
2026-10-24T11:06:37.7953441Z 220 โ {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-24T11:06:37.7953550Z ยท โโโฌโ
2026-10-24T11:06:37.7953717Z ยท โฐโโ 'U+001B' is a control character.
2026-10-24T11:06:37.7953783Z 221 โ </Text>
2026-10-24T11:06:37.7953834Z โฐโโโโ
2026-10-24T11:06:37.7954073Z help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-24T11:06:37.7954081Z
2026-10-24T11:06:37.7954237Z โ eslint(no-new): Do not use 'new' for side effects.
2026-10-24T11:06:37.7954363Z โญโ[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-24T11:06:37.7954475Z 167 โ // @ts-expect-error a declaration constructed directly
2026-10-24T11:06:37.7954571Z 168 โ new McpToolAccess.Declaration(unchecked);
2026-10-24T11:06:37.7954668Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7954796Z 169 โ // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-24T11:06:37.7954847Z โฐโโโโ
2026-10-24T11:06:37.7955006Z help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-24T11:06:37.7955009Z
2026-10-24T11:06:37.7955162Z โ react(refs): Cannot access refs during render
2026-10-24T11:06:37.7955326Z โญโ[apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts:277:39]
2026-10-24T11:06:37.7955380Z 276 โ
2026-10-24T11:06:37.7955562Z 277 โ โญโโถ return createElement(RawNativeView, {
2026-10-24T11:06:37.7955655Z 278 โ โ ...nativeProps,
2026-10-24T11:06:37.7955802Z 279 โ โ refreshEnabled: props.onPullToRefresh !== undefined,
2026-10-24T11:06:37.7955892Z 280 โ โ ref: nativeRef,
2026-10-24T11:06:37.7956023Z 281 โ โโโถ });
2026-10-24T11:06:37.7956270Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T11:06:37.7956330Z 282 โ }
2026-10-24T11:06:37.7956381Z โฐโโโโ
2026-10-24T11:06:37.7956853Z 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-24T11:06:37.7957149Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T11:06:37.7957152Z
2026-10-24T11:06:37.7957353Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7957488Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
2026-10-24T11:06:37.7957626Z 453 โ showAuxiliaryPane("inspector");
2026-10-24T11:06:37.7957769Z 454 โ }, [environmentId, showAuxiliaryPane, threadId]);
2026-10-24T11:06:37.7957914Z ยท โโโโโโโฌโโโโโโ โโโโโฌโโโ
2026-10-24T11:06:37.7958114Z ยท โ โฐโโ Unnecessary dependency `threadId`
2026-10-24T11:06:37.7958264Z ยท โฐโโ Unnecessary dependency `environmentId`
2026-10-24T11:06:37.7958359Z 455 โ const {
2026-10-24T11:06:37.7958411Z โฐโโโโ
2026-10-24T11:06:37.7958706Z 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-24T11:06:37.7959025Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7959031Z
2026-10-24T11:06:37.7959217Z โ react(static-components): Cannot create components during render
2026-10-24T11:06:37.7959353Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:725:20]
2026-10-24T11:06:37.7959417Z 492 โ // same check.
2026-10-24T11:06:37.7959543Z 493 โ const NativeReviewDiffView = resolveNativeReviewDiffView();
2026-10-24T11:06:37.7959664Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-24T11:06:37.7959847Z ยท โฐโโ The component is created during render here
2026-10-24T11:06:37.7959998Z 494 โ const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
2026-10-24T11:06:37.7960125Z 495 โ const showcasedReviewDrawRef = useRef<string | null>(null);
2026-10-24T11:06:37.7960258Z 496 โ const [isPullRefreshing, setIsPullRefreshing] = useState(false);
2026-10-24T11:06:37.7960351Z 497 โ const handlePullToRefresh = async () => {
2026-10-24T11:06:37.7960429Z 498 โ setIsPullRefreshing(true);
2026-10-24T11:06:37.7960512Z 499 โ await refreshSelectedSection();
2026-10-24T11:06:37.7960587Z 500 โ setIsPullRefreshing(false);
2026-10-24T11:06:37.7960642Z 501 โ };
2026-10-24T11:06:37.7960785Z 502 โ const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
2026-10-24T11:06:37.7960927Z 503 โ const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
2026-10-24T11:06:37.7961032Z 504 โ const fileVisibility = useReviewFileVisibility({
2026-10-24T11:06:37.7961118Z 505 โ threadKey: reviewCache.threadKey,
2026-10-24T11:06:37.7961207Z 506 โ sectionId: selectedSection?.id ?? null,
2026-10-24T11:06:37.7961428Z 507 โ files: reviewFiles,
2026-10-24T11:06:37.7961580Z 508 โ cachedExpandedFileIds: selectedSection?.id
2026-10-24T11:06:37.7961712Z 509 โ ? reviewCache.expandedFileIdsBySection[selectedSection.id]
2026-10-24T11:06:37.7961776Z 510 โ : undefined,
2026-10-24T11:06:37.7961872Z 511 โ cachedViewedFileIds: selectedSection?.id
2026-10-24T11:06:37.7961995Z 512 โ ? reviewCache.viewedFileIdsBySection[selectedSection.id]
2026-10-24T11:06:37.7962059Z 513 โ : undefined,
2026-10-24T11:06:37.7962115Z 514 โ });
2026-10-24T11:06:37.7962306Z 515 โ const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
2026-10-24T11:06:37.7962436Z 516 โ const commentSelection = useReviewCommentSelectionController({
2026-10-24T11:06:37.7962499Z 517 โ environmentId,
2026-10-24T11:06:37.7962562Z 518 โ threadId,
2026-10-24T11:06:37.7962634Z 519 โ selectedSection,
2026-10-24T11:06:37.7962708Z 520 โ nativeReviewDiffData,
2026-10-24T11:06:37.7962762Z 521 โ });
2026-10-24T11:06:37.7962867Z 522 โ const nativeBridge = useNativeReviewDiffBridge({
2026-10-24T11:06:37.7962953Z 523 โ threadKey: reviewCache.threadKey,
2026-10-24T11:06:37.7963041Z 524 โ sectionId: selectedSection?.id ?? null,
2026-10-24T11:06:37.7963117Z 525 โ diff: selectedSection?.diff,
2026-10-24T11:06:37.7963193Z 526 โ data: nativeReviewDiffData,
2026-10-24T11:06:37.7963260Z 527 โ collapsedFileIds,
2026-10-24T11:06:37.7963323Z 528 โ viewedFileIds,
2026-10-24T11:06:37.7963434Z 529 โ selectedRowIds: commentSelection.selectedRowIds,
2026-10-24T11:06:37.7963530Z 530 โ canHighlight: parsedDiff.kind === "files",
2026-10-24T11:06:37.7963583Z 531 โ });
2026-10-24T11:06:37.7963657Z 532 โ const showcaseReviewKey =
2026-10-24T11:06:37.7963795Z 533 โ SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
2026-10-24T11:06:37.7964007Z 534 โ ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
2026-10-24T11:06:37.7964068Z 535 โ : null;
2026-10-24T11:06:37.7964235Z 536 โ const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
2026-10-24T11:06:37.7964314Z 537 โ nativeBridge.onDebug(event);
2026-10-24T11:06:37.7964371Z 538 โ if (
2026-10-24T11:06:37.7964450Z 539 โ showcaseReviewKey === null ||
2026-10-24T11:06:37.7964572Z 540 โ showcasedReviewDrawRef.current === showcaseReviewKey ||
2026-10-24T11:06:37.7964681Z 541 โ !isNativeReviewDiffDrawEvent(event.nativeEvent)
2026-10-24T11:06:37.7964738Z 542 โ ) {
2026-10-24T11:06:37.7964797Z 543 โ return;
2026-10-24T11:06:37.7964852Z 544 โ }
2026-10-24T11:06:37.7964969Z 545 โ showcasedReviewDrawRef.current = showcaseReviewKey;
2026-10-24T11:06:37.7965134Z 546 โ reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
2026-10-24T11:06:37.7965188Z 547 โ };
2026-10-24T11:06:37.7965241Z 548 โ
2026-10-24T11:06:37.7965358Z 549 โ const handleSelectFile = async (fileId: string | null) => {
2026-10-24T11:06:37.7965438Z 550 โ loadVisibleFile(fileId, true);
2026-10-24T11:06:37.7965525Z 551 โ commentSelection.clearSelection();
2026-10-24T11:06:37.7965646Z 552 โ if (fileId !== null && collapsedFileIds.includes(fileId)) {
2026-10-24T11:06:37.7965726Z 553 โ toggleExpandedFile(fileId);
2026-10-24T11:06:37.7965780Z 554 โ }
2026-10-24T11:06:37.7965891Z 555 โ const nativeView = nativeReviewDiffViewRef.current;
2026-10-24T11:06:37.7965962Z 556 โ if (!nativeView) return;
2026-10-24T11:06:37.7966111Z 557 โ const result = await settlePromise(() =>
2026-10-24T11:06:37.7966322Z 558 โ fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
2026-10-24T11:06:37.7966376Z 559 โ );
2026-10-24T11:06:37.7966465Z 560 โ if (AsyncResult.isFailure(result)) {
2026-10-24T11:06:37.7966646Z 561 โ console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
2026-10-24T11:06:37.7966699Z 562 โ }
2026-10-24T11:06:37.7966754Z 563 โ };
2026-10-24T11:06:37.7966837Z 564 โ const handleVisibleFileChange = (
2026-10-24T11:06:37.7966969Z 565 โ event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
2026-10-24T11:06:37.7967025Z 566 โ ) => {
2026-10-24T11:06:37.7967134Z 567 โ loadVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-24T11:06:37.7967309Z 568 โ reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-24T11:06:37.7967367Z 569 โ };
2026-10-24T11:06:37.7967445Z 570 โ const renderInspector = () => (
2026-10-24T11:06:37.7967515Z 571 โ <ReviewFileNavigator
2026-10-24T11:06:37.7967596Z 572 โ ref={reviewFileNavigatorRef}
2026-10-24T11:06:37.7967686Z 573 โ files={nativeReviewDiffData.files}
2026-10-24T11:06:37.7967760Z 574 โ headerInset={insets.top}
2026-10-24T11:06:37.7967853Z 575 โ sectionId={selectedSection?.id ?? null}
2026-10-24T11:06:37.7967971Z 576 โ onSelectFile={(fileId) => void handleSelectFile(fileId)}
2026-10-24T11:06:37.7968027Z 577 โ />
2026-10-24T11:06:37.7968079Z 578 โ );
2026-10-24T11:06:37.7968132Z 579 โ
2026-10-24T11:06:37.7968347Z 580 โ const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
2026-10-24T11:06:37.7968434Z 581 โ const { fileId } = event.nativeEvent;
2026-10-24T11:06:37.7968501Z 582 โ if (fileId) {
2026-10-24T11:06:37.7968586Z 583 โ loadVisibleFile(fileId, true);
2026-10-24T11:06:37.7968665Z 584 โ toggleExpandedFile(fileId);
2026-10-24T11:06:37.7968720Z 585 โ }
2026-10-24T11:06:37.7968773Z 586 โ };
2026-10-24T11:06:37.7968825Z 587 โ
2026-10-24T11:06:37.7968914Z 588 โ const handleNativeToggleViewedFile = (
2026-10-24T11:06:37.7969032Z 589 โ event: NativeSyntheticEvent<{ readonly fileId?: string }>,
2026-10-24T11:06:37.7969088Z 590 โ ) => {
2026-10-24T11:06:37.7969176Z 591 โ const { fileId } = event.nativeEvent;
2026-10-24T11:06:37.7969239Z 592 โ if (fileId) {
2026-10-24T11:06:37.7969314Z 593 โ toggleViewedFile(fileId);
2026-10-24T11:06:37.7969368Z 594 โ }
2026-10-24T11:06:37.7969422Z 595 โ };
2026-10-24T11:06:37.7969474Z 596 โ
2026-10-24T11:06:37.7969552Z 597 โ const parsedDiffNotice =
2026-10-24T11:06:37.7969717Z 598 โ parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
2026-10-24T11:06:37.7969839Z 599 โ const hasCachedSelectedDiff = selectedSection?.diff != null;
2026-10-24T11:06:37.7969996Z 600 โ const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
2026-10-24T11:06:37.7970115Z 601 โ const sectionMenu = buildReviewSectionMenu(reviewSections);
2026-10-24T11:06:37.7970274Z 602 โ const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
2026-10-24T11:06:37.7970384Z 603 โ hasEnvironmentPresentation: environment.isReady,
2026-10-24T11:06:37.7970484Z 604 โ isEnvironmentConnected: isEnvironmentReady,
2026-10-24T11:06:37.7970554Z 605 โ hasCachedSelectedDiff,
2026-10-24T11:06:37.7970621Z 606 โ hasAnyCachedDiff,
2026-10-24T11:06:37.7970676Z 607 โ });
2026-10-24T11:06:37.7970818Z 608 โ const handleRetryEnvironment = () => {
2026-10-24T11:06:37.7970942Z 609 โ void retryEnvironment(environmentId);
2026-10-24T11:06:37.7970996Z 610 โ };
2026-10-24T11:06:37.7971080Z 611 โ const handleReturnToThread = () => {
2026-10-24T11:06:37.7971159Z 612 โ if (navigation.canGoBack()) {
2026-10-24T11:06:37.7971228Z 613 โ navigation.goBack();
2026-10-24T11:06:37.7971290Z 614 โ return;
2026-10-24T11:06:37.7971344Z 615 โ }
2026-10-24T11:06:37.7971424Z 616 โ navigation.navigate("Thread", {
2026-10-24T11:06:37.7971514Z 617 โ environmentId: String(environmentId),
2026-10-24T11:06:37.7971591Z 618 โ threadId: String(threadId),
2026-10-24T11:06:37.7971647Z 619 โ });
2026-10-24T11:06:37.7971699Z 620 โ };
2026-10-24T11:06:37.7971778Z 621 โ const androidHeaderSubtitle = [
2026-10-24T11:06:37.7971856Z 622 โ selectedSection?.title,
2026-10-24T11:06:37.7971938Z 623 โ headerDiffSummary.additions,
2026-10-24T11:06:37.7972016Z 624 โ headerDiffSummary.deletions,
2026-10-24T11:06:37.7972070Z 625 โ ]
2026-10-24T11:06:37.7972176Z 626 โ .filter((part): part is string => Boolean(part))
2026-10-24T11:06:37.7972239Z 627 โ .join(" ยท ");
2026-10-24T11:06:37.7972291Z 628 โ
2026-10-24T11:06:37.7972369Z 629 โ const showChangedFilesPane =
2026-10-24T11:06:37.7972442Z 630 โ !showConnectionNotice &&
2026-10-24T11:06:37.7972517Z 631 โ selectedSection !== null &&
2026-10-24T11:06:37.7972596Z 632 โ parsedDiff.kind === "files" &&
2026-10-24T11:06:37.7972675Z 633 โ NativeReviewDiffView !== null;
2026-10-24T11:06:37.7972847Z 634 โ useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
2026-10-24T11:06:37.7973023Z 635 โ const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
2026-10-24T11:06:37.7973080Z 636 โ
2026-10-24T11:06:37.7973153Z 637 โ const listHeader = (() => {
2026-10-24T11:06:37.7973238Z 638 โ const children: ReactElement[] = [];
2026-10-24T11:06:37.7973290Z 639 โ
2026-10-24T11:06:37.7973353Z 640 โ if (error) {
2026-10-24T11:06:37.7973421Z 641 โ children.push(
2026-10-24T11:06:37.7973482Z 642 โ <View
2026-10-24T11:06:37.7973552Z 643 โ key="review-error"
2026-10-24T11:06:37.7973619Z 644 โ className={cn(
2026-10-24T11:06:37.7973697Z 645 โ "bg-card px-4 py-3",
2026-10-24T11:06:37.7973851Z 646 โ Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
2026-10-24T11:06:37.7973910Z 647 โ )}
2026-10-24T11:06:37.7973968Z 648 โ >
2026-10-24T11:06:37.7974137Z 649 โ <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
2026-10-24T11:06:37.7974298Z 650 โ <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
2026-10-24T11:06:37.7974358Z 651 โ </View>,
2026-10-24T11:06:37.7974415Z 652 โ );
2026-10-24T11:06:37.7974469Z 653 โ }
2026-10-24T11:06:37.7974520Z 654 โ
2026-10-24T11:06:37.7974591Z 655 โ if (parsedDiffNotice) {
2026-10-24T11:06:37.7974752Z 656 โ children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
2026-10-24T11:06:37.7974806Z 657 โ }
2026-10-24T11:06:37.7974857Z 658 โ
2026-10-24T11:06:37.7974934Z 659 โ if (children.length === 0) {
2026-10-24T11:06:37.7974998Z 660 โ return null;
2026-10-24T11:06:37.7975052Z 661 โ }
2026-10-24T11:06:37.7975103Z 662 โ
2026-10-24T11:06:37.7975175Z 663 โ return <>{children}</>;
2026-10-24T11:06:37.7975292Z 664 โ })();
2026-10-24T11:06:37.7975422Z 665 โ const headerSubtitle = [
2026-10-24T11:06:37.7975501Z 666 โ headerDiffSummary.additions,
2026-10-24T11:06:37.7975578Z 667 โ headerDiffSummary.deletions,
2026-10-24T11:06:37.7975659Z 668 โ pendingReviewCommentCount > 0
2026-10-24T11:06:37.7975833Z 669 โ ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
2026-10-24T11:06:37.7975893Z 670 โ : null,
2026-10-24T11:06:37.7975947Z 671 โ ]
2026-10-24T11:06:37.7976012Z 672 โ .filter(Boolean)
2026-10-24T11:06:37.7976075Z 673 โ .join(" ยท ");
2026-10-24T11:06:37.7976210Z 674 โ const headerTitleText = selectedSection?.title ?? "Review changes";
2026-10-24T11:06:37.7976262Z 675 โ
2026-10-24T11:06:37.7976321Z 676 โ return (
2026-10-24T11:06:37.7976376Z 677 โ <>
2026-10-24T11:06:37.7976441Z 678 โ <ReviewHeader
2026-10-24T11:06:37.7976531Z 679 โ environmentId={environmentId}
2026-10-24T11:06:37.7976605Z 680 โ threadId={threadId}
2026-10-24T11:06:37.7976679Z 681 โ title={headerTitleText}
2026-10-24T11:06:37.7976756Z 682 โ subtitle={headerSubtitle}
2026-10-24T11:06:37.7976854Z 683 โ androidSubtitle={androidHeaderSubtitle}
2026-10-24T11:06:37.7976927Z 684 โ iconColor={headerIcon}
2026-10-24T11:06:37.7977021Z 685 โ selectedThreadCwd={selectedThreadCwd}
2026-10-24T11:06:37.7977097Z 686 โ sectionMenu={sectionMenu}
2026-10-24T11:06:37.7977184Z 687 โ selectedSection={selectedSection}
2026-10-24T11:06:37.7977281Z 688 โ showSectionToolbar={showSectionToolbar}
2026-10-24T11:06:37.7977391Z 689 โ showChangedFilesToggle={showChangedFilesToggle}
2026-10-24T11:06:37.7977477Z 690 โ onRefresh={handlePullToRefresh}
2026-10-24T11:06:37.7977565Z 691 โ onSelectSection={selectSection}
2026-10-24T11:06:37.7977665Z 692 โ onReturnToThread={handleReturnToThread}
2026-10-24T11:06:37.7977720Z 693 โ />
2026-10-24T11:06:37.7977773Z 694 โ
2026-10-24T11:06:37.7977839Z 695 โ <ScreenContent>
2026-10-24T11:06:37.7977961Z 696 โ <View className="flex-1 bg-sheet android:bg-sheet-solid">
2026-10-24T11:06:37.7978041Z 697 โ {showConnectionNotice ? (
2026-10-24T11:06:37.7978180Z 698 โ <View className="flex-1" style={{ paddingTop: topContentInset }}>
2026-10-24T11:06:37.7978270Z 699 โ <EnvironmentConnectionNotice
2026-10-24T11:06:37.7978472Z 700 โ environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
2026-10-24T11:06:37.7978542Z 701 โ connection={
2026-10-24T11:06:37.7978649Z 702 โ environment.presentation?.connection ?? {
2026-10-24T11:06:37.7978738Z 703 โ phase: "available",
2026-10-24T11:06:37.7978814Z 704 โ error: null,
2026-10-24T11:06:37.7978889Z 705 โ traceId: null,
2026-10-24T11:06:37.7978953Z 706 โ }
2026-10-24T11:06:37.7979015Z 707 โ }
2026-10-24T11:06:37.7979095Z 708 โ resourceName="review"
2026-10-24T11:06:37.7979193Z 709 โ onRetry={handleRetryEnvironment}
2026-10-24T11:06:37.7979254Z 710 โ />
2026-10-24T11:06:37.7979317Z 711 โ </View>
2026-10-24T11:06:37.7979473Z 712 โ ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
2026-10-24T11:06:37.7979535Z 713 โ <View
2026-10-24T11:06:37.7979610Z 714 โ className="flex-1"
2026-10-24T11:06:37.7979676Z 715 โ style={{
2026-10-24T11:06:37.7979853Z 716 โ backgroundColor: nativeBridge.theme.background,
2026-10-24T11:06:37.7979947Z 717 โ }}
2026-10-24T11:06:37.7980007Z 718 โ >
2026-10-24T11:06:37.7980069Z 719 โ <View
2026-10-24T11:06:37.7980156Z 720 โ className="min-w-0 flex-1"
2026-10-24T11:06:37.7980295Z 721 โ style={listHeader ? { paddingTop: topContentInset } : undefined}
2026-10-24T11:06:37.7980356Z 722 โ >
2026-10-24T11:06:37.7980425Z 723 โ {listHeader}
2026-10-24T11:06:37.7980544Z 724 โ <View className="min-w-0 flex-1" collapsable={false}>
2026-10-24T11:06:37.7980627Z 725 โ <NativeReviewDiffView
2026-10-24T11:06:37.7980734Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7980911Z ยท โฐโโ This component is created during render
2026-10-24T11:06:37.7980996Z 726 โ collapsable={false}
2026-10-24T11:06:37.7981049Z โฐโโโโ
2026-10-24T11:06:37.7981300Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-24T11:06:37.7981622Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T11:06:37.7981625Z
2026-10-24T11:06:37.7981886Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7982029Z โญโ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-24T11:06:37.7982083Z 150 โ
2026-10-24T11:06:37.7982148Z 151 โ useEffect(() => {
2026-10-24T11:06:37.7982226Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7982361Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7982445Z 152 โ if (!controlledSelectedPath) {
2026-10-24T11:06:37.7982506Z 153 โ return;
2026-10-24T11:06:37.7982559Z 154 โ }
2026-10-24T11:06:37.7982642Z 155 โ setExpandedPaths((current) => {
2026-10-24T11:06:37.7982723Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T11:06:37.7982895Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7983017Z 156 โ const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-24T11:06:37.7983070Z โฐโโโโ
2026-10-24T11:06:37.7983786Z 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-24T11:06:37.7984115Z 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-24T11:06:37.7984118Z
2026-10-24T11:06:37.7984323Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7984470Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-24T11:06:37.7984568Z 256 โ return () => cancelAnimationFrame(frame);
2026-10-24T11:06:37.7984647Z 257 โ }, [props.path, targetIndex]);
2026-10-24T11:06:37.7984723Z ยท โโโโโโฌโโโโ
2026-10-24T11:06:37.7984945Z ยท โฐโโ Unnecessary dependency `props.path`
2026-10-24T11:06:37.7985040Z 258 โ
2026-10-24T11:06:37.7985093Z โฐโโโโ
2026-10-24T11:06:37.7985390Z 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-24T11:06:37.7985703Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7985707Z
2026-10-24T11:06:37.7985901Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T11:06:37.7986051Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-24T11:06:37.7986124Z 292 โ <SourceText
2026-10-24T11:06:37.7986229Z 293 โ key={`${index}:${tokenIndex}`}
2026-10-24T11:06:37.7986352Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7986424Z 294 โ style={{
2026-10-24T11:06:37.7986477Z โฐโโโโ
2026-10-24T11:06:37.7986626Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T11:06:37.7986628Z
2026-10-24T11:06:37.7986821Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T11:06:37.7986969Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-24T11:06:37.7987034Z 308 โ return (
2026-10-24T11:06:37.7987119Z 309 โ <SourceText key={index}>
2026-10-24T11:06:37.7987220Z ยท โโโโโโโโโโโ
2026-10-24T11:06:37.7987286Z 310 โ {body}
2026-10-24T11:06:37.7987338Z โฐโโโโ
2026-10-24T11:06:37.7987491Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T11:06:37.7987497Z
2026-10-24T11:06:37.7987683Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T11:06:37.7987801Z โญโ[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T11:06:37.7987859Z 7 โ () =>
2026-10-24T11:06:37.7987925Z 8 โ Gesture.Hover()
2026-10-24T11:06:37.7988001Z ยท โโโฌโโ
2026-10-24T11:06:37.7988136Z ยท โฐโโ `Hover` may be a component
2026-10-24T11:06:37.7988211Z 9 โ .manualActivation(true)
2026-10-24T11:06:37.7988264Z โฐโโโโ
2026-10-24T11:06:37.7988582Z help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T11:06:37.7989037Z note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T11:06:37.7989040Z
2026-10-24T11:06:37.7989299Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7989489Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-24T11:06:37.7989542Z 104 โ
2026-10-24T11:06:37.7989606Z 105 โ useEffect(() => {
2026-10-24T11:06:37.7989680Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7989810Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7989942Z 106 โ clearReviewCommentTarget();
2026-10-24T11:06:37.7990075Z 107 โ setPendingNativeCommentSelection(null);
2026-10-24T11:06:37.7990181Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7990360Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7990433Z 108 โ }, [selectedSection?.id]);
2026-10-24T11:06:37.7990485Z โฐโโโโ
2026-10-24T11:06:37.7991092Z 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-24T11:06:37.7991423Z 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-24T11:06:37.7991429Z
2026-10-24T11:06:37.7991686Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.7991874Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-24T11:06:37.7991927Z 109 โ
2026-10-24T11:06:37.7991992Z 110 โ useEffect(() => {
2026-10-24T11:06:37.7992065Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.7992193Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.7992281Z 111 โ if (activeCommentTarget === null) {
2026-10-24T11:06:37.7992382Z 112 โ setPendingNativeCommentSelection(null);
2026-10-24T11:06:37.7992490Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7992674Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.7992734Z 113 โ }
2026-10-24T11:06:37.7992786Z โฐโโโโ
2026-10-24T11:06:37.7993395Z 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-24T11:06:37.7993719Z 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-24T11:06:37.7993721Z
2026-10-24T11:06:37.7993922Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.7994161Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-24T11:06:37.7994292Z 107 โ setPendingNativeCommentSelection(null);
2026-10-24T11:06:37.7994365Z 108 โ }, [selectedSection?.id]);
2026-10-24T11:06:37.7994452Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T11:06:37.7994615Z ยท โฐโโ Unnecessary dependency `selectedSection?.id`
2026-10-24T11:06:37.7994668Z 109 โ
2026-10-24T11:06:37.7994720Z โฐโโโโ
2026-10-24T11:06:37.7995014Z 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-24T11:06:37.7995328Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.7995336Z
2026-10-24T11:06:37.7995533Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T11:06:37.7995684Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
2026-10-24T11:06:37.7995792Z 222 โ ? snippetTokens.map((line, lineIndex) => (
2026-10-24T11:06:37.7995886Z 223 โ <NativeText key={lineIndex}>
2026-10-24T11:06:37.7995996Z ยท โโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7996088Z 224 โ {lineIndex > 0 ? "\n" : ""}
2026-10-24T11:06:37.7996141Z โฐโโโโ
2026-10-24T11:06:37.7996286Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T11:06:37.7996289Z
2026-10-24T11:06:37.7996491Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T11:06:37.7996645Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
2026-10-24T11:06:37.7996722Z 226 โ <NativeText
2026-10-24T11:06:37.7996805Z 227 โ key={tokenIndex}
2026-10-24T11:06:37.7996909Z ยท โโโโโโโโโโโโโโโโ
2026-10-24T11:06:37.7996983Z 228 โ style={{
2026-10-24T11:06:37.7997036Z โฐโโโโ
2026-10-24T11:06:37.7997178Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T11:06:37.7997180Z
2026-10-24T11:06:37.7997393Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T11:06:37.7997517Z โญโ[apps/mobile/src/lib/markdownDocument.ts:259:28]
2026-10-24T11:06:37.7997617Z 258 โ visit(parser.parse(markdown), false, false);
2026-10-24T11:06:37.7997707Z 259 โ for (const edit of edits.reverse())
2026-10-24T11:06:37.7997805Z ยท โโโโโโโ
2026-10-24T11:06:37.7997969Z 260 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T11:06:37.7998022Z โฐโโโโ
2026-10-24T11:06:37.7998321Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T11:06:37.7998325Z
2026-10-24T11:06:37.7998535Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T11:06:37.7998659Z โญโ[apps/mobile/src/lib/markdownDocument.ts:290:28]
2026-10-24T11:06:37.7998739Z 289 โ visit(parser.parse(markdown));
2026-10-24T11:06:37.7998824Z 290 โ for (const edit of edits.reverse())
2026-10-24T11:06:37.7998977Z ยท โโโโโโโ
2026-10-24T11:06:37.7999174Z 291 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T11:06:37.7999226Z โฐโโโโ
2026-10-24T11:06:37.7999485Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T11:06:37.7999488Z
2026-10-24T11:06:37.7999696Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T11:06:37.7999817Z โญโ[apps/mobile/src/lib/markdownDocument.ts:344:38]
2026-10-24T11:06:37.7999896Z 343 โ visit(parser.parse(markdown));
2026-10-24T11:06:37.8000002Z 344 โ for (const lineStart of lineStarts.reverse()) {
2026-10-24T11:06:37.8000106Z ยท โโโโโโโ
2026-10-24T11:06:37.8000277Z 345 โ // The header row may be a lazy line without its container markers (`>` or list indent),
2026-10-24T11:06:37.8000332Z โฐโโโโ
2026-10-24T11:06:37.8000593Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T11:06:37.8000596Z
2026-10-24T11:06:37.8000854Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.8001029Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:60:5]
2026-10-24T11:06:37.8001084Z 55 โ
2026-10-24T11:06:37.8001150Z 56 โ useEffect(() => {
2026-10-24T11:06:37.8001223Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.8001352Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.8001425Z 57 โ scheduler.reset();
2026-10-24T11:06:37.8001530Z 58 โ highlightedRowIdsRef.current = new Set();
2026-10-24T11:06:37.8001616Z 59 โ visibleChunkIndexRef.current = 0;
2026-10-24T11:06:37.8001734Z 60 โ setVisibleRange({ firstRowIndex: 0, lastRowIndex: 80 });
2026-10-24T11:06:37.8001814Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T11:06:37.8001985Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.8002098Z 61 โ setTokensPatchJson(createEmptyTokenPatch(resetKey));
2026-10-24T11:06:37.8002151Z โฐโโโโ
2026-10-24T11:06:37.8002765Z 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-24T11:06:37.8003091Z 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-24T11:06:37.8003094Z
2026-10-24T11:06:37.8003297Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T11:06:37.8003473Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
2026-10-24T11:06:37.8003556Z 62 โ return () => scheduler.cancel();
2026-10-24T11:06:37.8003657Z 63 โ }, [enabled, resetKey, rows.length, scheduler]);
2026-10-24T11:06:37.8003785Z ยท โโโโฌโโโ โโโโโโฌโโโโโ
2026-10-24T11:06:37.8004032Z ยท โ โฐโโ Unnecessary dependency `rows.length`
2026-10-24T11:06:37.8004205Z ยท โฐโโ Unnecessary dependency `enabled`
2026-10-24T11:06:37.8004259Z 64 โ
2026-10-24T11:06:37.8004313Z โฐโโโโ
2026-10-24T11:06:37.8004607Z 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-24T11:06:37.8004919Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T11:06:37.8004922Z
2026-10-24T11:06:37.8005182Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T11:06:37.8005352Z โญโ[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
2026-10-24T11:06:37.8005411Z 100 โ
2026-10-24T11:06:37.8005478Z 101 โ useEffect(() => {
2026-10-24T11:06:37.8005550Z ยท โโโโโฌโโโโ
2026-10-24T11:06:37.8005681Z ยท โฐโโ This is the containing effect
2026-10-24T11:06:37.8005784Z 102 โ if (!target || selectedLines.length === 0) {
2026-10-24T11:06:37.8005867Z 103 โ setHighlightedLinesById({});
2026-10-24T11:06:37.8005960Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T11:06:37.8006136Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T11:06:37.8006199Z 104 โ return;
2026-10-24T11:06:37.8006250Z โฐโโโโ
2026-10-24T11:06:37.8006863Z 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-24T11:06:37.8007190Z 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-24T11:06:37.8007192Z
2026-10-24T11:06:37.8007403Z โ eslint(no-unused-vars): Identifier 'HookForwarder' is imported but never used.
2026-10-24T11:06:37.8007507Z โญโ[infra/relay/src/http/Api.ts:69:13]
2026-10-24T11:06:37.8007649Z 68 โ import * as EnvironmentLinks from "../environments/EnvironmentLinks.ts";
2026-10-24T11:06:37.8007766Z 69 โ import * as HookForwarder from "../hooks/HookForwarder.ts";
2026-10-24T11:06:37.8007853Z ยท โโโโโโโฌโโโโโโ
2026-10-24T11:06:37.8008003Z ยท โฐโโ 'HookForwarder' is imported here
2026-10-24T11:06:37.8008108Z 70 โ import * as HeldHooks from "../hooks/HeldHooks.ts";
2026-10-24T11:06:37.8008161Z โฐโโโโ
2026-10-24T11:06:37.8008259Z help: Consider removing this import.
2026-10-24T11:06:37.8008261Z
2026-10-24T11:06:37.8008381Z Found 0 errors and 367 warnings in 5430 files (5.2s, 8 threads)
2026-10-24T11:06:37.8477764Z Post job cleanup.
2026-10-24T11:06:37.9128685Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T11:06:37.9205322Z Post job cleanup.
2026-10-24T11:06:37.9218920Z ##[start-action display=Cache full pnpm store;id=__73693574-1795-4b11-8fc9-9394aed66614.__actions_cache]
2026-10-24T11:06:37.9721208Z Post job cleanup.
2026-10-24T11:06:38.0370305Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-8600a8d4a7fcc9519d421cef0c77201c793c5d8afbbef2897636b5b9305a9b7d, not saving cache.
2026-10-24T11:06:38.0410846Z ##[end-action id=__73693574-1795-4b11-8fc9-9394aed66614.__actions_cache;outcome=success;conclusion=success;duration_ms=119]
2026-10-24T11:06:38.0412667Z ##[start-action display=Cache Vite+;id=__73693574-1795-4b11-8fc9-9394aed66614.vp_cache]
2026-10-24T11:06:38.0440410Z Post job cleanup.
2026-10-24T11:06:38.1075850Z 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-24T11:06:38.1111209Z ##[end-action id=__73693574-1795-4b11-8fc9-9394aed66614.vp_cache;outcome=success;conclusion=success;duration_ms=69]
2026-10-24T11:06:38.1155288Z Post job cleanup.
2026-10-24T11:06:38.1621102Z [command]/usr/local/bin/git version
2026-10-24T11:06:38.1651110Z git version 2.55.0
2026-10-24T11:06:38.1671199Z Temporarily overriding HOME='/home/runner/_work/_temp/81b43f6e-e4e1-49b0-9348-2813b2fdd40f' before making global git config changes
2026-10-24T11:06:38.1671826Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T11:06:38.1674888Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T11:06:38.1705415Z Removing SSH command configuration
2026-10-24T11:06:38.1708952Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T11:06:38.1735207Z [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-24T11:06:38.1862920Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T11:06:38.1916032Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T11:06:38.1959985Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T11:06:38.1983032Z ##[group]Run '/job_completed.sh'
2026-10-24T11:06:38.1994905Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T11:06:38.1995094Z env:
2026-10-24T11:06:38.1995215Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 152
2026-10-24T11:06:38.1995368Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 359
2026-10-24T11:06:38.1995511Z BLACKSMITH_CHECK_RUN_ID: 120856234521
2026-10-24T11:06:38.1995659Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T11:06:38.1995803Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T11:06:38.1995943Z ##[endgroup]
2026-10-24T11:06:38.2079958Z Docker container cache not activated, skipping hash computation.
2026-10-24T11:06:38.2393159Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T11:06:38.2437033Z Cleaning up orphan processes