GitHub check
256 KB of 598 KB loaded Download the full log (598 KB)
342 KB of earlier output not loaded
148704Z 233 โ useAssetUrl,
2026-10-23T23:34:17.9148783Z 234 โ useAssetUrlState,
2026-10-23T23:34:17.9148879Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9149047Z ยท โฐโโ 'useAssetUrlState' is imported here
2026-10-23T23:34:17.9149131Z 235 โ useRefreshAssetUrl,
2026-10-23T23:34:17.9149189Z โฐโโโโ
2026-10-23T23:34:17.9149303Z help: Consider removing this import.
2026-10-23T23:34:17.9149306Z
2026-10-23T23:34:17.9149545Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9149710Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2123:7]
2026-10-23T23:34:17.9149894Z 2122 โ setExpandedFile(null);
2026-10-23T23:34:17.9150184Z 2123 โ }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-23T23:34:17.9150503Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโฌโโโโโโ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9150935Z ยท โ โ โฐโโ Unnecessary dependency `props.contentPresentation.kind`
2026-10-23T23:34:17.9151166Z ยท โ โฐโโ Unnecessary dependency `props.threadId`
2026-10-23T23:34:17.9151364Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-23T23:34:17.9151536Z 2124 โ const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-23T23:34:17.9151613Z โฐโโโโ
2026-10-23T23:34:17.9151968Z 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-23T23:34:17.9152345Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9152348Z
2026-10-23T23:34:17.9152588Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9152756Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2590:7]
2026-10-23T23:34:17.9152878Z 2589 โ reportHeaderMaterialVisibility(false);
2026-10-23T23:34:17.9153011Z 2590 โ }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-23T23:34:17.9153123Z ยท โโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9153311Z ยท โฐโโ Unnecessary dependency `feedThreadKey`
2026-10-23T23:34:17.9153384Z 2591 โ
2026-10-23T23:34:17.9153443Z โฐโโโโ
2026-10-23T23:34:17.9153789Z 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-23T23:34:17.9154158Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9154161Z
2026-10-23T23:34:17.9154400Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9154571Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2606:7]
2026-10-23T23:34:17.9154643Z 2605 โ }
2026-10-23T23:34:17.9154812Z 2606 โ }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-23T23:34:17.9154913Z ยท โโโโโโโฌโโโโโ
2026-10-23T23:34:17.9155092Z ยท โฐโโ Unnecessary dependency `listMountKey`
2026-10-23T23:34:17.9155158Z 2607 โ
2026-10-23T23:34:17.9155225Z โฐโโโโ
2026-10-23T23:34:17.9155565Z 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-23T23:34:17.9155933Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9155936Z
2026-10-23T23:34:17.9156169Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9156415Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2763:7]
2026-10-23T23:34:17.9156570Z 2762 โ }
2026-10-23T23:34:17.9156810Z 2763 โ }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-23T23:34:17.9157049Z ยท โโโโโโโโฌโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9157385Z ยท โ โ โฐโโ Unnecessary dependency `expandedWorkRows`
2026-10-23T23:34:17.9157693Z ยท โ โฐโโ Unnecessary dependency `expandedWorkGroups`
2026-10-23T23:34:17.9157874Z ยท โฐโโ Unnecessary dependency `expandedTurnIds`
2026-10-23T23:34:17.9157950Z 2764 โ
2026-10-23T23:34:17.9158014Z โฐโโโโ
2026-10-23T23:34:17.9158362Z 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-23T23:34:17.9158735Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9158738Z
2026-10-23T23:34:17.9158965Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-23T23:34:17.9159124Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:605:9]
2026-10-23T23:34:17.9159203Z 604 โ };
2026-10-23T23:34:17.9159346Z 605 โ }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-23T23:34:17.9159588Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโฌโโโโโโ โโโโโโฌโโโโโ
2026-10-23T23:34:17.9159879Z ยท โ โ โฐโโ Unnecessary dependency `httpBaseUrl`
2026-10-23T23:34:17.9160120Z ยท โ โฐโโ Unnecessary dependency `attachment.id`
2026-10-23T23:34:17.9160326Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-23T23:34:17.9160440Z 606 โ );
2026-10-23T23:34:17.9160508Z โฐโโโโ
2026-10-23T23:34:17.9160878Z 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-23T23:34:17.9161352Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9161411Z
2026-10-23T23:34:17.9161654Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9161866Z โญโ[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-23T23:34:17.9161975Z 26 โ const latestInput = useRef(input);
2026-10-23T23:34:17.9162092Z 27 โ latestInput.current = input;
2026-10-23T23:34:17.9162242Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-23T23:34:17.9162543Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T23:34:17.9162689Z ยท โฐโโ This value is a ref
2026-10-23T23:34:17.9162782Z 28 โ const mounted = useRef(true);
2026-10-23T23:34:17.9162859Z โฐโโโโ
2026-10-23T23:34:17.9163425Z 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-23T23:34:17.9163770Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9163773Z
2026-10-23T23:34:17.9164323Z โ 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-23T23:34:17.9164508Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:169:7]
2026-10-23T23:34:17.9164590Z 168 โ });
2026-10-23T23:34:17.9164838Z 169 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-23T23:34:17.9165069Z 170 โ โ if ((yield* SubscriptionRef.get(shellState)).status === "synchronizing") break;
2026-10-23T23:34:17.9165193Z 171 โ โ yield* Effect.yieldNow;
2026-10-23T23:34:17.9165354Z 172 โ โฐโโถ }
2026-10-23T23:34:17.9165420Z 173 โ
2026-10-23T23:34:17.9165486Z โฐโโโโ
2026-10-23T23:34:17.9165489Z
2026-10-23T23:34:17.9166026Z โ 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-23T23:34:17.9166212Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:178:7]
2026-10-23T23:34:17.9166352Z 177 โ yield* Deferred.succeed(releaseSave, undefined);
2026-10-23T23:34:17.9166587Z 178 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-23T23:34:17.9166743Z 179 โ โ if ((yield* Ref.get(saved)).length > 0) break;
2026-10-23T23:34:17.9166880Z 180 โ โ yield* Effect.yieldNow;
2026-10-23T23:34:17.9167042Z 181 โ โฐโโถ }
2026-10-23T23:34:17.9167114Z 182 โ
2026-10-23T23:34:17.9167175Z โฐโโโโ
2026-10-23T23:34:17.9167182Z
2026-10-23T23:34:17.9167830Z โ 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-23T23:34:17.9168117Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:307:7]
2026-10-23T23:34:17.9168277Z 306 โ yield* Deferred.succeed(releaseUnenrichedSave, undefined);
2026-10-23T23:34:17.9168514Z 307 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-23T23:34:17.9168656Z 308 โ โ const values = yield* Ref.get(saved);
2026-10-23T23:34:17.9168974Z 309 โ โ if (values.length > 0 && values.at(-1)?.projects[0]?.repositoryIdentity != null) {
2026-10-23T23:34:17.9169098Z 310 โ โ break;
2026-10-23T23:34:17.9169201Z 311 โ โ }
2026-10-23T23:34:17.9169332Z 312 โ โ yield* Effect.yieldNow;
2026-10-23T23:34:17.9169511Z 313 โ โฐโโถ }
2026-10-23T23:34:17.9169586Z 314 โ
2026-10-23T23:34:17.9169658Z โฐโโโโ
2026-10-23T23:34:17.9169671Z
2026-10-23T23:34:17.9169915Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9170099Z โญโ[apps/mobile/src/state/use-thread-outbox-drain.ts:1315:5]
2026-10-23T23:34:17.9170211Z 1314 โ queuedMessagesByThreadKey,
2026-10-23T23:34:17.9170298Z 1315 โ retryTick,
2026-10-23T23:34:17.9170425Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9170616Z ยท โฐโโ Unnecessary dependency `retryTick`
2026-10-23T23:34:17.9170720Z 1316 โ restoreQueuedMessage,
2026-10-23T23:34:17.9170809Z โฐโโโโ
2026-10-23T23:34:17.9171158Z 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-23T23:34:17.9171537Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9171540Z
2026-10-23T23:34:17.9171723Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9171928Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-23T23:34:17.9172120Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T23:34:17.9172265Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T23:34:17.9172424Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T23:34:17.9172636Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9172780Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T23:34:17.9172840Z โฐโโโโ
2026-10-23T23:34:17.9173392Z 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-23T23:34:17.9173745Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9173748Z
2026-10-23T23:34:17.9174017Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9174321Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-23T23:34:17.9174384Z 125 โ
2026-10-23T23:34:17.9174522Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:17.9174635Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-23T23:34:17.9174823Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9174950Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:17.9175051Z โฐโโโโ
2026-10-23T23:34:17.9175649Z 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-23T23:34:17.9176006Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9176012Z
2026-10-23T23:34:17.9176289Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9176519Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-23T23:34:17.9176590Z 125 โ
2026-10-23T23:34:17.9176724Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:17.9176836Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9177014Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9177142Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:17.9177209Z โฐโโโโ
2026-10-23T23:34:17.9177774Z 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-23T23:34:17.9178121Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9178125Z
2026-10-23T23:34:17.9178300Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9178490Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-23T23:34:17.9178553Z 125 โ
2026-10-23T23:34:17.9178679Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:17.9178820Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9179027Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9179150Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:17.9179214Z โฐโโโโ
2026-10-23T23:34:17.9179766Z 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-23T23:34:17.9180111Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9180114Z
2026-10-23T23:34:17.9180287Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9180667Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-23T23:34:17.9180840Z 125 โ
2026-10-23T23:34:17.9180998Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:17.9181149Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9181360Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9181651Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:17.9181746Z โฐโโโโ
2026-10-23T23:34:17.9182301Z 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-23T23:34:17.9182657Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9182664Z
2026-10-23T23:34:17.9182838Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9183019Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-23T23:34:17.9183480Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:17.9183712Z 127 โ โญโโถ const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:17.9183923Z 128 โ โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T23:34:17.9184079Z 129 โ โ onStatus: (status: RecordingStatus) => {
2026-10-23T23:34:17.9184263Z 130 โ โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T23:34:17.9184418Z 131 โ โ isFinished: status.isFinished,
2026-10-23T23:34:17.9184634Z 132 โ โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T23:34:17.9184764Z 133 โ โ error: status.error,
2026-10-23T23:34:17.9184878Z 134 โ โ url: status.url,
2026-10-23T23:34:17.9184981Z 135 โ โ });
2026-10-23T23:34:17.9185077Z 136 โ โ },
2026-10-23T23:34:17.9185311Z 137 โ โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T23:34:17.9185435Z 138 โ โ selectInput: (inputs) => {
2026-10-23T23:34:17.9185631Z 139 โ โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T23:34:17.9185820Z 140 โ โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T23:34:17.9186026Z 141 โ โ const known = microphoneOrder(preferences.value.microphones);
2026-10-23T23:34:17.9186191Z 142 โ โ const order = rememberMicrophones(known, inputs);
2026-10-23T23:34:17.9186319Z 143 โ โ if (order !== known) {
2026-10-23T23:34:17.9186491Z 144 โ โ registry.set(updateMobilePreferencesAtom, {
2026-10-23T23:34:17.9186631Z 145 โ โ transform: (current) => ({
2026-10-23T23:34:17.9186874Z 146 โ โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T23:34:17.9186980Z 147 โ โ }),
2026-10-23T23:34:17.9187080Z 148 โ โ });
2026-10-23T23:34:17.9187340Z 149 โ โ }
2026-10-23T23:34:17.9187617Z 150 โ โ return preferredMicrophoneInput(inputs, order);
2026-10-23T23:34:17.9187717Z 151 โ โ },
2026-10-23T23:34:17.9187880Z 152 โ โโโถ });
2026-10-23T23:34:17.9188172Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-23T23:34:17.9188333Z 153 โ recorderRef.current = recorder;
2026-10-23T23:34:17.9188416Z โฐโโโโ
2026-10-23T23:34:17.9188983Z 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-23T23:34:17.9189336Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9189339Z
2026-10-23T23:34:17.9189514Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9189702Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-23T23:34:17.9189781Z 152 โ });
2026-10-23T23:34:17.9189889Z 153 โ recorderRef.current = recorder;
2026-10-23T23:34:17.9190030Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-23T23:34:17.9190249Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T23:34:17.9190437Z ยท โฐโโ This value is a ref
2026-10-23T23:34:17.9190580Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:17.9190658Z โฐโโโโ
2026-10-23T23:34:17.9191212Z 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-23T23:34:17.9191564Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9191567Z
2026-10-23T23:34:17.9191741Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9191932Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-23T23:34:17.9192045Z 153 โ recorderRef.current = recorder;
2026-10-23T23:34:17.9192276Z 154 โ โญโโถ sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:17.9192384Z 155 โ โ recorder,
2026-10-23T23:34:17.9192549Z 156 โ โ getTranscriber: getLocalVoiceTranscriber,
2026-10-23T23:34:17.9192689Z 157 โ โ requestPermission: async () => {
2026-10-23T23:34:17.9192885Z 158 โ โ const permission = await requestRecordingPermissionsAsync();
2026-10-23T23:34:17.9193118Z 159 โ โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T23:34:17.9193215Z 160 โ โ },
2026-10-23T23:34:17.9193389Z 161 โ โ configureRecording: configureVoiceRecordingAudio,
2026-10-23T23:34:17.9193642Z 162 โ โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T23:34:17.9193926Z 163 โ โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T23:34:17.9194067Z 164 โ โ onStateChange: (nextState) =>
2026-10-23T23:34:17.9194183Z 165 โ โ setState({
2026-10-23T23:34:17.9194311Z 166 โ โ state: nextState,
2026-10-23T23:34:17.9194483Z 167 โ โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T23:34:17.9194740Z 168 โ โ label: sessionRef.current?.label ?? null,
2026-10-23T23:34:17.9194845Z 169 โ โ }),
2026-10-23T23:34:17.9195004Z 170 โ โโโถ });
2026-10-23T23:34:17.9195243Z ยท โฐโโโโ Cannot access ref value during render
2026-10-23T23:34:17.9195315Z 171 โ }
2026-10-23T23:34:17.9195381Z โฐโโโโ
2026-10-23T23:34:17.9195930Z 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-23T23:34:17.9196270Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9196273Z
2026-10-23T23:34:17.9196445Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9196637Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-23T23:34:17.9196748Z 153 โ recorderRef.current = recorder;
2026-10-23T23:34:17.9196877Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:17.9197021Z ยท โโโโโโฌโโโโโโโโโฌโโโ
2026-10-23T23:34:17.9197250Z ยท โ โฐโโ Cannot update ref value during render
2026-10-23T23:34:17.9197394Z ยท โฐโโ This value is a ref
2026-10-23T23:34:17.9197485Z 155 โ recorder,
2026-10-23T23:34:17.9197549Z โฐโโโโ
2026-10-23T23:34:17.9198100Z 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-23T23:34:17.9198593Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9198715Z
2026-10-23T23:34:17.9198948Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9199143Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-23T23:34:17.9199262Z 184 โ return () => subscription.remove();
2026-10-23T23:34:17.9199347Z 185 โ }, [controller]);
2026-10-23T23:34:17.9199448Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9199699Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9199771Z 186 โ
2026-10-23T23:34:17.9199837Z โฐโโโโ
2026-10-23T23:34:17.9200443Z 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-23T23:34:17.9200800Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9200803Z
2026-10-23T23:34:17.9200975Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9201182Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-23T23:34:17.9201334Z 184 โ return () => subscription.remove();
2026-10-23T23:34:17.9201425Z 185 โ }, [controller]);
2026-10-23T23:34:17.9201526Z ยท โโโโโโโฌโโโโโ
2026-10-23T23:34:17.9201702Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9201768Z 186 โ
2026-10-23T23:34:17.9201846Z โฐโโโโ
2026-10-23T23:34:17.9209777Z 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-23T23:34:17.9210170Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9210174Z
2026-10-23T23:34:17.9210404Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9210612Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-23T23:34:17.9210679Z 191 โ },
2026-10-23T23:34:17.9210775Z 192 โ [controller, recorder],
2026-10-23T23:34:17.9210882Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9211071Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9211137Z 193 โ );
2026-10-23T23:34:17.9211208Z โฐโโโโ
2026-10-23T23:34:17.9211762Z 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-23T23:34:17.9212110Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9212113Z
2026-10-23T23:34:17.9212288Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9212629Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-23T23:34:17.9212848Z 174 โ const controller = session.controller;
2026-10-23T23:34:17.9213024Z 175 โ const recorder = recorderRef.current;
2026-10-23T23:34:17.9213171Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9213364Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9213444Z 176 โ
2026-10-23T23:34:17.9213519Z โฐโโโโ
2026-10-23T23:34:17.9214151Z 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-23T23:34:17.9214494Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9214500Z
2026-10-23T23:34:17.9214671Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9214861Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-23T23:34:17.9214932Z 191 โ },
2026-10-23T23:34:17.9215013Z 192 โ [controller, recorder],
2026-10-23T23:34:17.9215124Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T23:34:17.9215310Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9215383Z 193 โ );
2026-10-23T23:34:17.9215441Z โฐโโโโ
2026-10-23T23:34:17.9215993Z 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-23T23:34:17.9216530Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9216537Z
2026-10-23T23:34:17.9216808Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9217003Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-23T23:34:17.9217115Z 245 โ return () => clearInterval(intervalId);
2026-10-23T23:34:17.9217256Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T23:34:17.9217374Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9217565Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9217630Z 247 โ
2026-10-23T23:34:17.9217698Z โฐโโโโ
2026-10-23T23:34:17.9218254Z 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-23T23:34:17.9218602Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9218604Z
2026-10-23T23:34:17.9218780Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9218960Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-23T23:34:17.9219079Z 245 โ return () => clearInterval(intervalId);
2026-10-23T23:34:17.9219213Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-23T23:34:17.9219517Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9219848Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9219927Z 247 โ
2026-10-23T23:34:17.9219989Z โฐโโโโ
2026-10-23T23:34:17.9220664Z 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-23T23:34:17.9221017Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9221024Z
2026-10-23T23:34:17.9221191Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9221381Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-23T23:34:17.9221472Z 260 โ setOwnerFocused,
2026-10-23T23:34:17.9221783Z 261 โ session,
2026-10-23T23:34:17.9221883Z ยท โโโโฌโโโ
2026-10-23T23:34:17.9222051Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9222124Z 262 โ stop,
2026-10-23T23:34:17.9222182Z โฐโโโโ
2026-10-23T23:34:17.9222715Z 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-23T23:34:17.9223058Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9223064Z
2026-10-23T23:34:17.9223232Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9223419Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-23T23:34:17.9223480Z 250 โ
2026-10-23T23:34:17.9223649Z 251 โ โญโโถ return {
2026-10-23T23:34:17.9223897Z 252 โ โ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-23T23:34:17.9223997Z 253 โ โ state,
2026-10-23T23:34:17.9224099Z 254 โ โ audioLevels,
2026-10-23T23:34:17.9224215Z 255 โ โ elapsedSeconds,
2026-10-23T23:34:17.9224371Z 256 โ โ isBusy: voiceInputBlocksSubmission(state),
2026-10-23T23:34:17.9224483Z 257 โ โ ownerKey,
2026-10-23T23:34:17.9224575Z 258 โ โ label,
2026-10-23T23:34:17.9224692Z 259 โ โ focusedOwners,
2026-10-23T23:34:17.9224807Z 260 โ โ setOwnerFocused,
2026-10-23T23:34:17.9224910Z 261 โ โ session,
2026-10-23T23:34:17.9224999Z 262 โ โ stop,
2026-10-23T23:34:17.9225094Z 263 โ โ cancel,
2026-10-23T23:34:17.9225249Z 264 โ โโโถ };
2026-10-23T23:34:17.9225483Z ยท โฐโโโโ Cannot access ref value during render
2026-10-23T23:34:17.9225545Z 265 โ }
2026-10-23T23:34:17.9225607Z โฐโโโโ
2026-10-23T23:34:17.9226321Z 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-23T23:34:17.9226806Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9226809Z
2026-10-23T23:34:17.9226996Z โ react(immutability): This value cannot be modified
2026-10-23T23:34:17.9227178Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T23:34:17.9227447Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-23T23:34:17.9227596Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-23T23:34:17.9227698Z ยท โโโโโโฌโโโโโ
2026-10-23T23:34:17.9227856Z ยท โฐโโ `audioLevels` originates here
2026-10-23T23:34:17.9228000Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-23T23:34:17.9228181Z 124 โ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-23T23:34:17.9228248Z 125 โ
2026-10-23T23:34:17.9228370Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-23T23:34:17.9228494Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-23T23:34:17.9228673Z 128 โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-23T23:34:17.9228788Z 129 โ onStatus: (status: RecordingStatus) => {
2026-10-23T23:34:17.9228925Z 130 โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-23T23:34:17.9229035Z 131 โ isFinished: status.isFinished,
2026-10-23T23:34:17.9229214Z 132 โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-23T23:34:17.9229311Z 133 โ error: status.error,
2026-10-23T23:34:17.9229387Z 134 โ url: status.url,
2026-10-23T23:34:17.9229466Z 135 โ });
2026-10-23T23:34:17.9229543Z 136 โ },
2026-10-23T23:34:17.9229740Z 137 โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-23T23:34:17.9229832Z 138 โ selectInput: (inputs) => {
2026-10-23T23:34:17.9229983Z 139 โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-23T23:34:17.9230123Z 140 โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-23T23:34:17.9230280Z 141 โ const known = microphoneOrder(preferences.value.microphones);
2026-10-23T23:34:17.9230446Z 142 โ const order = rememberMicrophones(known, inputs);
2026-10-23T23:34:17.9230554Z 143 โ if (order !== known) {
2026-10-23T23:34:17.9230680Z 144 โ registry.set(updateMobilePreferencesAtom, {
2026-10-23T23:34:17.9230782Z 145 โ transform: (current) => ({
2026-10-23T23:34:17.9230980Z 146 โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-23T23:34:17.9231065Z 147 โ }),
2026-10-23T23:34:17.9231142Z 148 โ });
2026-10-23T23:34:17.9231212Z 149 โ }
2026-10-23T23:34:17.9231335Z 150 โ return preferredMicrophoneInput(inputs, order);
2026-10-23T23:34:17.9231403Z 151 โ },
2026-10-23T23:34:17.9231468Z 152 โ });
2026-10-23T23:34:17.9231563Z 153 โ recorderRef.current = recorder;
2026-10-23T23:34:17.9231684Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-23T23:34:17.9231765Z 155 โ recorder,
2026-10-23T23:34:17.9231975Z 156 โ getTranscriber: getLocalVoiceTranscriber,
2026-10-23T23:34:17.9232173Z 157 โ requestPermission: async () => {
2026-10-23T23:34:17.9232343Z 158 โ const permission = await requestRecordingPermissionsAsync();
2026-10-23T23:34:17.9232529Z 159 โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-23T23:34:17.9232607Z 160 โ },
2026-10-23T23:34:17.9232730Z 161 โ configureRecording: configureVoiceRecordingAudio,
2026-10-23T23:34:17.9232886Z 162 โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-23T23:34:17.9233061Z 163 โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-23T23:34:17.9233158Z 164 โ onStateChange: (nextState) =>
2026-10-23T23:34:17.9233232Z 165 โ setState({
2026-10-23T23:34:17.9233320Z 166 โ state: nextState,
2026-10-23T23:34:17.9233456Z 167 โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-23T23:34:17.9233585Z 168 โ label: sessionRef.current?.label ?? null,
2026-10-23T23:34:17.9233653Z 169 โ }),
2026-10-23T23:34:17.9233725Z 170 โ });
2026-10-23T23:34:17.9233789Z 171 โ }
2026-10-23T23:34:17.9233854Z 172 โ
2026-10-23T23:34:17.9233950Z 173 โ const session = sessionRef.current;
2026-10-23T23:34:17.9234060Z 174 โ const controller = session.controller;
2026-10-23T23:34:17.9234162Z 175 โ const recorder = recorderRef.current;
2026-10-23T23:34:17.9234232Z 176 โ
2026-10-23T23:34:17.9234309Z 177 โ useEffect(() => {
2026-10-23T23:34:17.9234484Z 178 โ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-23T23:34:17.9234655Z 179 โ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-23T23:34:17.9234825Z 180 โ // real background state cancels preparation; recorder status handles
2026-10-23T23:34:17.9234945Z 181 โ // calls and route interruptions during capture.
2026-10-23T23:34:17.9235108Z 182 โ if (nextState === "background") controller.appMovedToBackground();
2026-10-23T23:34:17.9235182Z 183 โ });
2026-10-23T23:34:17.9235287Z 184 โ return () => subscription.remove();
2026-10-23T23:34:17.9235362Z 185 โ }, [controller]);
2026-10-23T23:34:17.9235427Z 186 โ
2026-10-23T23:34:17.9235503Z 187 โ useEffect(
2026-10-23T23:34:17.9235575Z 188 โ () => () => {
2026-10-23T23:34:17.9235668Z 189 โ controller.dispose();
2026-10-23T23:34:17.9235756Z 190 โ recorder.release();
2026-10-23T23:34:17.9235826Z 191 โ },
2026-10-23T23:34:17.9235909Z 192 โ [controller, recorder],
2026-10-23T23:34:17.9235979Z 193 โ );
2026-10-23T23:34:17.9236049Z 194 โ
2026-10-23T23:34:17.9236132Z 195 โ useEffect(() => {
2026-10-23T23:34:17.9236247Z 196 โ if (state.phase !== "recording") return;
2026-10-23T23:34:17.9236326Z 197 โ
2026-10-23T23:34:17.9236503Z 198 โ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-23T23:34:17.9236628Z 199 โ const activation = activateKeepAwakeAsync(tag);
2026-10-23T23:34:17.9236724Z 200 โ void activation.catch(() => {});
2026-10-23T23:34:17.9236803Z 201 โ return () => {
2026-10-23T23:34:17.9236982Z 202 โ // Release after activation settles, even if the recording ends immediately.
2026-10-23T23:34:17.9237148Z 203 โ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-23T23:34:17.9237209Z 204 โ };
2026-10-23T23:34:17.9237304Z 205 โ }, [keepAwakeId, state.phase]);
2026-10-23T23:34:17.9237371Z 206 โ
2026-10-23T23:34:17.9237443Z 207 โ useEffect(() => {
2026-10-23T23:34:17.9237702Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T23:34:17.9237844Z 209 โ
2026-10-23T23:34:17.9238035Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T23:34:17.9238216Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T23:34:17.9238343Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-23T23:34:17.9238440Z ยท โโโโโโฌโโโโโ
2026-10-23T23:34:17.9238664Z ยท โฐโโ `audioLevels` cannot be modified
2026-10-23T23:34:17.9238768Z 213 โ }
2026-10-23T23:34:17.9238834Z โฐโโโโ
2026-10-23T23:34:17.9239161Z 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-23T23:34:17.9239540Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:17.9239548Z
2026-10-23T23:34:17.9239797Z โ react(immutability): Cannot modify local variables after render completes
2026-10-23T23:34:17.9239978Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-23T23:34:17.9240043Z 206 โ
2026-10-23T23:34:17.9240121Z 207 โ useEffect(() => {
2026-10-23T23:34:17.9240216Z ยท โโโโฌโโโ
2026-10-23T23:34:17.9240521Z ยท โฐโโ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-23T23:34:17.9240690Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-23T23:34:17.9240758Z 209 โ
2026-10-23T23:34:17.9240908Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-23T23:34:17.9241099Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-23T23:34:17.9241224Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-23T23:34:17.9241317Z ยท โโโโโโฌโโโโโ
2026-10-23T23:34:17.9241474Z ยท โฐโโ This modifies `audioLevels`
2026-10-23T23:34:17.9241539Z 213 โ }
2026-10-23T23:34:17.9241604Z โฐโโโโ
2026-10-23T23:34:17.9242012Z 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-23T23:34:17.9242370Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:17.9242466Z
2026-10-23T23:34:17.9242739Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9242927Z โญโ[apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts:277:39]
2026-10-23T23:34:17.9242995Z 276 โ
2026-10-23T23:34:17.9243219Z 277 โ โญโโถ return createElement(RawNativeView, {
2026-10-23T23:34:17.9243353Z 278 โ โ ...nativeProps,
2026-10-23T23:34:17.9243580Z 279 โ โ refreshEnabled: props.onPullToRefresh !== undefined,
2026-10-23T23:34:17.9243692Z 280 โ โ ref: nativeRef,
2026-10-23T23:34:17.9243850Z 281 โ โโโถ });
2026-10-23T23:34:17.9244144Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-23T23:34:17.9244212Z 282 โ }
2026-10-23T23:34:17.9244282Z โฐโโโโ
2026-10-23T23:34:17.9244826Z 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-23T23:34:17.9245167Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9245170Z
2026-10-23T23:34:17.9245472Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9245660Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:361:7]
2026-10-23T23:34:17.9245838Z 355 โ }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
2026-10-23T23:34:17.9245942Z 356 โ useEffect(() => {
2026-10-23T23:34:17.9246032Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9246189Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9246308Z 357 โ if (!isReturningToProjectPicker) {
2026-10-23T23:34:17.9246390Z 358 โ return;
2026-10-23T23:34:17.9246454Z 359 โ }
2026-10-23T23:34:17.9246570Z 360 โ if (requestedInitialProjectAvailable) {
2026-10-23T23:34:17.9246680Z 361 โ setIsReturningToProjectPicker(false);
2026-10-23T23:34:17.9246804Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9247010Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9247097Z 362 โ return;
2026-10-23T23:34:17.9247162Z โฐโโโโ
2026-10-23T23:34:17.9247858Z 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-23T23:34:17.9248239Z 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-23T23:34:17.9248242Z
2026-10-23T23:34:17.9248544Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9248722Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:504:9]
2026-10-23T23:34:17.9248878Z 447 โ
2026-10-23T23:34:17.9249029Z 448 โ useEffect(() => {
2026-10-23T23:34:17.9249139Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9249296Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9249421Z 449 โ if (props.pendingTaskId || props.draftId) {
2026-10-23T23:34:17.9249494Z 450 โ return;
2026-10-23T23:34:17.9249555Z 451 โ }
2026-10-23T23:34:17.9249730Z 452 โ if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
2026-10-23T23:34:17.9249969Z 453 โ lastInitialProjectRefRef.current = props.initialProjectRef;
2026-10-23T23:34:17.9250099Z 454 โ appliedInitialProjectKeyRef.current = null;
2026-10-23T23:34:17.9250163Z 455 โ }
2026-10-23T23:34:17.9250366Z 456 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-23T23:34:17.9250536Z 457 โ const initialProjectId = props.initialProjectRef?.projectId;
2026-10-23T23:34:17.9250669Z 458 โ if (initialEnvironmentId && initialProjectId) {
2026-10-23T23:34:17.9250756Z 459 โ const directProject =
2026-10-23T23:34:17.9250841Z 460 โ projects.find(
2026-10-23T23:34:17.9250925Z 461 โ (project) =>
2026-10-23T23:34:17.9251137Z 462 โ project.environmentId === initialEnvironmentId && project.id === initialProjectId,
2026-10-23T23:34:17.9251211Z 463 โ ) ?? null;
2026-10-23T23:34:17.9251280Z 464 โ
2026-10-23T23:34:17.9251370Z 465 โ if (directProject) {
2026-10-23T23:34:17.9251540Z 466 โ // Apply the route's project once. Re-applying on every change would
2026-10-23T23:34:17.9251700Z 467 โ // instantly revert environment/project switches made in the picker.
2026-10-23T23:34:17.9251900Z 468 โ const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
2026-10-23T23:34:17.9252065Z 469 โ if (appliedInitialProjectKeyRef.current === directProjectKey) {
2026-10-23T23:34:17.9252143Z 470 โ return;
2026-10-23T23:34:17.9252208Z 471 โ }
2026-10-23T23:34:17.9252329Z 472 โ if (props.initialProjectRef?.branch) {
2026-10-23T23:34:17.9252410Z 473 โ if (
2026-10-23T23:34:17.9252584Z 474 โ selectedProject?.environmentId !== directProject.environmentId ||
2026-10-23T23:34:17.9252709Z 475 โ selectedProject.id !== directProject.id
2026-10-23T23:34:17.9252785Z 476 โ ) {
2026-10-23T23:34:17.9252894Z 477 โ setProject(directProject);
2026-10-23T23:34:17.9252969Z 478 โ return;
2026-10-23T23:34:17.9253037Z 479 โ }
2026-10-23T23:34:17.9253145Z 480 โ if (!flow.draftKey) return;
2026-10-23T23:34:17.9253320Z 481 โ // The route completes checkout before mounting this composer. Local
2026-10-23T23:34:17.9253501Z 482 โ // mode reuses an existing worktree; worktree mode would create another.
2026-10-23T23:34:17.9253631Z 483 โ updateComposerDraftSettings(flow.draftKey, {
2026-10-23T23:34:17.9253729Z 484 โ workspaceSelection: {
2026-10-23T23:34:17.9253812Z 485 โ mode: "local",
2026-10-23T23:34:17.9253938Z 486 โ branch: props.initialProjectRef.branch,
2026-10-23T23:34:17.9254113Z 487 โ worktreePath: props.initialProjectRef.worktreePath ?? null,
2026-10-23T23:34:17.9254219Z 488 โ startFromOrigin: false,
2026-10-23T23:34:17.9254305Z 489 โ },
2026-10-23T23:34:17.9254375Z 490 โ });
2026-10-23T23:34:17.9254452Z 491 โ }
2026-10-23T23:34:17.9254617Z 492 โ appliedInitialProjectKeyRef.current = directProjectKey;
2026-10-23T23:34:17.9254786Z 493 โ if (
2026-10-23T23:34:17.9255075Z 494 โ selectedProject?.environmentId === directProject.environmentId &&
2026-10-23T23:34:17.9255188Z 495 โ selectedProject.id === directProject.id
2026-10-23T23:34:17.9255262Z 496 โ ) {
2026-10-23T23:34:17.9255337Z 497 โ return;
2026-10-23T23:34:17.9255401Z 498 โ }
2026-10-23T23:34:17.9255497Z 499 โ setProject(directProject);
2026-10-23T23:34:17.9255575Z 500 โ return;
2026-10-23T23:34:17.9255651Z 501 โ }
2026-10-23T23:34:17.9255749Z 502 โ
2026-10-23T23:34:17.9255881Z 503 โ if (projects.length > 0) {
2026-10-23T23:34:17.9256000Z 504 โ setIsReturningToProjectPicker(true);
2026-10-23T23:34:17.9256195Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9256485Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9256564Z 505 โ }
2026-10-23T23:34:17.9256631Z โฐโโโโ
2026-10-23T23:34:17.9257337Z 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-23T23:34:17.9257729Z 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-23T23:34:17.9257732Z
2026-10-23T23:34:17.9258042Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9258236Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:604:5]
2026-10-23T23:34:17.9258304Z 545 โ
2026-10-23T23:34:17.9258382Z 546 โ useEffect(() => {
2026-10-23T23:34:17.9258465Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9258621Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9258739Z 547 โ const shareId = props.incomingShareId;
2026-10-23T23:34:17.9258836Z 548 โ const draftKey = flow.draftKey;
2026-10-23T23:34:17.9258956Z 549 โ const destinationProject = selectedProject;
2026-10-23T23:34:17.9259124Z 550 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-23T23:34:17.9259278Z 551 โ const initialProjectId = props.initialProjectRef?.projectId;
2026-10-23T23:34:17.9259386Z 552 โ const selectedProjectMatchesRoute =
2026-10-23T23:34:17.9259474Z 553 โ !initialEnvironmentId ||
2026-10-23T23:34:17.9259565Z 554 โ !initialProjectId ||
2026-10-23T23:34:17.9259724Z 555 โ (destinationProject?.environmentId === initialEnvironmentId &&
2026-10-23T23:34:17.9259852Z 556 โ destinationProject.id === initialProjectId);
2026-10-23T23:34:17.9259920Z 557 โ if (
2026-10-23T23:34:17.9260004Z 558 โ !shareId ||
2026-10-23T23:34:17.9260083Z 559 โ !draftKey ||
2026-10-23T23:34:17.9260170Z 560 โ !destinationProject ||
2026-10-23T23:34:17.9260273Z 561 โ !selectedProjectMatchesRoute ||
2026-10-23T23:34:17.9260440Z 562 โ cancelledIncomingShareId === shareId
2026-10-23T23:34:17.9260514Z 563 โ ) {
2026-10-23T23:34:17.9260586Z 564 โ return;
2026-10-23T23:34:17.9260660Z 565 โ }
2026-10-23T23:34:17.9260778Z 566 โ const importKey = `${shareId}:${draftKey}`;
2026-10-23T23:34:17.9260852Z 567 โ if (
2026-10-23T23:34:17.9261111Z 568 โ startedShareImportKeyRef.current === importKey ||
2026-10-23T23:34:17.9261397Z 569 โ cancellingShareImportKeyRef.current === importKey
2026-10-23T23:34:17.9261643Z 570 โ ) {
2026-10-23T23:34:17.9261749Z 571 โ return;
2026-10-23T23:34:17.9261816Z 572 โ }
2026-10-23T23:34:17.9261880Z 573 โ
2026-10-23T23:34:17.9261966Z 574 โ if (!incomingShare) {
2026-10-23T23:34:17.9262304Z 575 โ if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
2026-10-23T23:34:17.9262486Z 576 โ alertedUnavailableIncomingShareIdRef.current = shareId;
2026-10-23T23:34:17.9262570Z 577 โ Dialog.alert(
2026-10-23T23:34:17.9262674Z 578 โ "Shared content unavailable",
2026-10-23T23:34:17.9262888Z 579 โ "The shared content is no longer in the inbox. You can continue editing this task draft.",
2026-10-23T23:34:17.9262965Z 580 โ );
2026-10-23T23:34:17.9263042Z 581 โ }
2026-10-23T23:34:17.9263112Z 582 โ return;
2026-10-23T23:34:17.9263178Z 583 โ }
2026-10-23T23:34:17.9263237Z 584 โ
2026-10-23T23:34:17.9263307Z 585 โ if (
2026-10-23T23:34:17.9263503Z 586 โ incomingShare.attachments.some((attachment) => attachment.type === "file") &&
2026-10-23T23:34:17.9263619Z 587 โ selectedEnvironmentServerConfig === null
2026-10-23T23:34:17.9263689Z 588 โ ) {
2026-10-23T23:34:17.9263763Z 589 โ return;
2026-10-23T23:34:17.9263830Z 590 โ }
2026-10-23T23:34:17.9263888Z 591 โ
2026-10-23T23:34:17.9264053Z 592 โ if (alertedUnavailableIncomingShareIdRef.current === shareId) {
2026-10-23T23:34:17.9264205Z 593 โ alertedUnavailableIncomingShareIdRef.current = null;
2026-10-23T23:34:17.9264276Z 594 โ }
2026-10-23T23:34:17.9264410Z 595 โ startedShareImportKeyRef.current = importKey;
2026-10-23T23:34:17.9264499Z 596 โ const draftBackup =
2026-10-23T23:34:17.9264724Z 597 โ shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
2026-10-23T23:34:17.9264888Z 598 โ shareImportDraftBackupRef.current.set(importKey, draftBackup);
2026-10-23T23:34:17.9264991Z 599 โ const importToken = Symbol(importKey);
2026-10-23T23:34:17.9265092Z 600 โ let didReserveShare = false;
2026-10-23T23:34:17.9265186Z 601 โ let didConsumeShare = false;
2026-10-23T23:34:17.9265287Z 602 โ let needsDraftRestore = false;
2026-10-23T23:34:17.9265418Z 603 โ activeShareImportTokenRef.current = importToken;
2026-10-23T23:34:17.9265522Z 604 โ setImportingShareKey(importKey);
2026-10-23T23:34:17.9265634Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9265861Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9265945Z 605 โ void (async () => {
2026-10-23T23:34:17.9266014Z โฐโโโโ
2026-10-23T23:34:17.9266720Z 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-23T23:34:17.9267113Z 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-23T23:34:17.9267117Z
2026-10-23T23:34:17.9267367Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9267718Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:524:5]
2026-10-23T23:34:17.9267912Z 523 โ props.initialProjectRef,
2026-10-23T23:34:17.9268028Z 524 โ props.incomingShareId,
2026-10-23T23:34:17.9268139Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T23:34:17.9268341Z ยท โฐโโ Unnecessary dependency `props.incomingShareId`
2026-10-23T23:34:17.9268431Z 525 โ props.pendingTaskId,
2026-10-23T23:34:17.9268495Z โฐโโโโ
2026-10-23T23:34:17.9268935Z 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-23T23:34:17.9269307Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9269310Z
2026-10-23T23:34:17.9269575Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:17.9269764Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:543:5]
2026-10-23T23:34:17.9269906Z 542 โ loadedBranchesProjectKeyRef.current = projectKey;
2026-10-23T23:34:17.9269985Z 543 โ flow.loadBranches();
2026-10-23T23:34:17.9270069Z ยท โโโฌโ
2026-10-23T23:34:17.9270224Z ยท โฐโโ Missing dependency `flow`
2026-10-23T23:34:17.9270379Z 544 โ }, [flow.loadBranches, selectedProject]);
2026-10-23T23:34:17.9270483Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T23:34:17.9270737Z ยท โฐโโ Overly precise dependency `flow.loadBranches`, use `flow` instead
2026-10-23T23:34:17.9270808Z 545 โ
2026-10-23T23:34:17.9270883Z โฐโโโโ
2026-10-23T23:34:17.9271391Z 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-23T23:34:17.9271765Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9271768Z
2026-10-23T23:34:17.9272007Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9272193Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:766:5]
2026-10-23T23:34:17.9272281Z 765 โ flow.draftKey,
2026-10-23T23:34:17.9272370Z 766 โ hasImportedIncomingShare,
2026-10-23T23:34:17.9272503Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T23:34:17.9272722Z ยท โฐโโ Unnecessary dependency `hasImportedIncomingShare`
2026-10-23T23:34:17.9272811Z 767 โ incomingShare,
2026-10-23T23:34:17.9272908Z 768 โ isIncomingShareInboxLoading,
2026-10-23T23:34:17.9273033Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-23T23:34:17.9273256Z ยท โฐโโ Unnecessary dependency `isIncomingShareInboxLoading`
2026-10-23T23:34:17.9273352Z 769 โ isIncomingShareUnavailable,
2026-10-23T23:34:17.9273436Z 770 โ props.incomingShareId,
2026-10-23T23:34:17.9273551Z 771 โ props.initialProjectRef?.environmentId,
2026-10-23T23:34:17.9273659Z 772 โ props.initialProjectRef?.projectId,
2026-10-23T23:34:17.9273752Z 773 โ releaseShareReservation,
2026-10-23T23:34:17.9273826Z 774 โ reserveShare,
2026-10-23T23:34:17.9274042Z 775 โ selectedEnvironmentServerConfig,
2026-10-23T23:34:17.9274223Z 776 โ selectedProject,
2026-10-23T23:34:17.9274327Z 777 โ shareImportAttempt,
2026-10-23T23:34:17.9274430Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-23T23:34:17.9274631Z ยท โฐโโ Unnecessary dependency `shareImportAttempt`
2026-10-23T23:34:17.9274704Z 778 โ ]);
2026-10-23T23:34:17.9274775Z โฐโโโโ
2026-10-23T23:34:17.9275207Z 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-23T23:34:17.9275578Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9275581Z
2026-10-23T23:34:17.9276127Z โ 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-23T23:34:17.9276284Z โญโ[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-23T23:34:17.9276489Z 1740 โ const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-23T23:34:17.9276711Z 1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-23T23:34:17.9276858Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9276992Z 1742 โ const scriptsJson = yield* Schema.encodeEffect(
2026-10-23T23:34:17.9277058Z โฐโโโโ
2026-10-23T23:34:17.9277061Z
2026-10-23T23:34:17.9277593Z โ 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-23T23:34:17.9277751Z โญโ[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-23T23:34:17.9277979Z 1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-23T23:34:17.9278111Z 1742 โ const scriptsJson = yield* Schema.encodeEffect(
2026-10-23T23:34:17.9278248Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9278396Z 1743 โ Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-23T23:34:17.9278468Z โฐโโโโ
2026-10-23T23:34:17.9278470Z
2026-10-23T23:34:17.9278747Z โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T23:34:17.9279009Z โญโ[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-23T23:34:17.9279216Z 1021 โ instanceId,
2026-10-23T23:34:17.9279401Z 1022 โ { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-23T23:34:17.9279597Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9279683Z 1023 โ ]),
2026-10-23T23:34:17.9279747Z โฐโโโโ
2026-10-23T23:34:17.9280159Z 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-23T23:34:17.9280163Z
2026-10-23T23:34:17.9280526Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9280726Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:400:5]
2026-10-23T23:34:17.9280796Z 398 โ
2026-10-23T23:34:17.9280891Z 399 โ useEffect(() => {
2026-10-23T23:34:17.9280982Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9281152Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9281262Z 400 โ setInspectorSelection((current) => {
2026-10-23T23:34:17.9281371Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T23:34:17.9281579Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9281708Z 401 โ if (props.renderInspector === undefined) {
2026-10-23T23:34:17.9281768Z โฐโโโโ
2026-10-23T23:34:17.9282499Z 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-23T23:34:17.9282900Z 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-23T23:34:17.9282904Z
2026-10-23T23:34:17.9283166Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-23T23:34:17.9283352Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:528:24]
2026-10-23T23:34:17.9283540Z 527 โ const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-23T23:34:17.9283751Z 528 โ โญโโถ const GitInspector = () => (
2026-10-23T23:34:17.9283877Z 529 โ โ <GitOverviewSheet
2026-10-23T23:34:17.9284029Z 530 โ โ headerInset={inspectorHeaderInset}
2026-10-23T23:34:17.9284153Z 531 โ โ presentation="inspector"
2026-10-23T23:34:17.9284377Z 532 โ โ route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-23T23:34:17.9284480Z 533 โ โ />
2026-10-23T23:34:17.9284636Z 534 โ โฐโโถ );
2026-10-23T23:34:17.9284732Z 535 โ const FilesInspector = () =>
2026-10-23T23:34:17.9284800Z โฐโโโโ
2026-10-23T23:34:17.9285073Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T23:34:17.9285076Z
2026-10-23T23:34:17.9285425Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-23T23:34:17.9285771Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:535:26]
2026-10-23T23:34:17.9285846Z 534 โ );
2026-10-23T23:34:17.9286050Z 535 โ โญโโถ const FilesInspector = () =>
2026-10-23T23:34:17.9286238Z 536 โ โ selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-23T23:34:17.9286411Z 537 โ โ <ThreadFileNavigatorPane
2026-10-23T23:34:17.9286577Z 538 โ โ cwd={selectedThreadCwd}
2026-10-23T23:34:17.9286753Z 539 โ โ environmentId={selectedThread.environmentId}
2026-10-23T23:34:17.9286905Z 540 โ โ headerInset={inspectorHeaderInset}
2026-10-23T23:34:17.9287096Z 541 โ โ projectName={selectedThreadProject?.title ?? "Files"}
2026-10-23T23:34:17.9287219Z 542 โ โ selectedPath={null}
2026-10-23T23:34:17.9287379Z 543 โ โ onSelectFile={handleSelectInspectorFile}
2026-10-23T23:34:17.9287477Z 544 โ โ />
2026-10-23T23:34:17.9287656Z 545 โ โฐโโถ ) : null;
2026-10-23T23:34:17.9287837Z 546 โ const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-23T23:34:17.9287910Z โฐโโโโ
2026-10-23T23:34:17.9288179Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-23T23:34:17.9288184Z
2026-10-23T23:34:17.9288437Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9288582Z โญโ[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-23T23:34:17.9288697Z 28 โ getPendingThreadOrder();
2026-10-23T23:34:17.9288821Z 29 โ }, [nowMinute, snoozeWakeTick]);
2026-10-23T23:34:17.9288982Z ยท โโโโโฌโโโโ โโโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9289213Z ยท โ โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-23T23:34:17.9289388Z ยท โฐโโ Unnecessary dependency `nowMinute`
2026-10-23T23:34:17.9289475Z 30 โ return pending;
2026-10-23T23:34:17.9289548Z โฐโโโโ
2026-10-23T23:34:17.9289892Z 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-23T23:34:17.9290281Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9290288Z
2026-10-23T23:34:17.9290687Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T23:34:17.9290879Z โญโ[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-23T23:34:17.9290955Z 162 โ keys,
2026-10-23T23:34:17.9291044Z 163 โ overridingProjects = [],
2026-10-23T23:34:17.9291146Z ยท โโ
2026-10-23T23:34:17.9291231Z 164 โ onClearOverrides,
2026-10-23T23:34:17.9291298Z โฐโโโโ
2026-10-23T23:34:17.9291674Z help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-23T23:34:17.9291678Z
2026-10-23T23:34:17.9291985Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:17.9292259Z โญโ[apps/server/src/process/externalLauncher.test.ts:186:12]
2026-10-23T23:34:17.9292330Z 185 โ
2026-10-23T23:34:17.9292453Z 186 โ for (const {} of ["darwin", "linux"] as const) {
2026-10-23T23:34:17.9292544Z ยท โโ
2026-10-23T23:34:17.9292612Z 187 โ }
2026-10-23T23:34:17.9292677Z โฐโโโโ
2026-10-23T23:34:17.9293027Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:17.9293031Z
2026-10-23T23:34:17.9293234Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:17.9293405Z โญโ[apps/server/src/process/externalLauncher.test.ts:189:12]
2026-10-23T23:34:17.9293480Z 188 โ
2026-10-23T23:34:17.9293559Z 189 โ for (const {} of [
2026-10-23T23:34:17.9293649Z ยท โโ
2026-10-23T23:34:17.9293768Z 190 โ { kind: "browser", folderVerb: "none" },
2026-10-23T23:34:17.9293831Z โฐโโโโ
2026-10-23T23:34:17.9294100Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:17.9294103Z
2026-10-23T23:34:17.9294310Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:17.9294479Z โญโ[apps/server/src/process/externalLauncher.test.ts:311:12]
2026-10-23T23:34:17.9294549Z 310 โ
2026-10-23T23:34:17.9294707Z 311 โ for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
2026-10-23T23:34:17.9294801Z ยท โโ
2026-10-23T23:34:17.9294879Z 312 โ }
2026-10-23T23:34:17.9294954Z โฐโโโโ
2026-10-23T23:34:17.9295220Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:17.9295223Z
2026-10-23T23:34:17.9295428Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:17.9295599Z โญโ[apps/server/src/process/externalLauncher.test.ts:314:12]
2026-10-23T23:34:17.9295667Z 313 โ
2026-10-23T23:34:17.9295742Z 314 โ for (const {} of [
2026-10-23T23:34:17.9295828Z ยท โโ
2026-10-23T23:34:17.9295901Z 315 โ {
2026-10-23T23:34:17.9295972Z โฐโโโโ
2026-10-23T23:34:17.9296342Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:17.9296349Z
2026-10-23T23:34:17.9296643Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-23T23:34:17.9296857Z โญโ[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-23T23:34:17.9296946Z 14 โ } from "@t3tools/contracts";
2026-10-23T23:34:17.9297056Z 15 โ import type {} from "@t3tools/contracts";
2026-10-23T23:34:17.9297156Z ยท โโ
2026-10-23T23:34:17.9297377Z 16 โ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-23T23:34:17.9297445Z โฐโโโโ
2026-10-23T23:34:17.9297544Z help: Remove empty braces
2026-10-23T23:34:17.9297547Z
2026-10-23T23:34:17.9298235Z โ 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-23T23:34:17.9298552Z โญโ[apps/server/src/usage/UsageService.test.ts:2383:7]
2026-10-23T23:34:17.9298700Z 2382 โ let orphanedAt: number | undefined;
2026-10-23T23:34:17.9298999Z 2383 โ โญโโถ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-23T23:34:17.9299159Z 2384 โ โ const tasks: Array<() => void> = [];
2026-10-23T23:34:17.9299420Z 2385 โ โ const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-23T23:34:17.9299588Z 2386 โ โ scheduleTask: (task) => tasks.push(task),
2026-10-23T23:34:17.9299719Z 2387 โ โ flush: () => {
2026-10-23T23:34:17.9299873Z 2388 โ โ let task: (() => void) | undefined;
2026-10-23T23:34:17.9300075Z 2389 โ โ while ((task = tasks.shift()) !== undefined) task();
2026-10-23T23:34:17.9300188Z 2390 โ โ },
2026-10-23T23:34:17.9300292Z 2391 โ โ };
2026-10-23T23:34:17.9300421Z 2392 โ โ
2026-10-23T23:34:17.9300635Z 2393 โ โ let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-23T23:34:17.9300769Z 2394 โ โ let requestChecks = 0;
2026-10-23T23:34:17.9300930Z 2395 โ โ const scheduler: Scheduler.Scheduler = {
2026-10-23T23:34:17.9301062Z 2396 โ โ executionMode: "async",
2026-10-23T23:34:17.9301209Z 2397 โ โ makeDispatcher: () => dispatcher,
2026-10-23T23:34:17.9301350Z 2398 โ โ shouldYield: (fiber) => {
2026-10-23T23:34:17.9301654Z 2399 โ โ if (fiber !== requestFiber) return false;
2026-10-23T23:34:17.9301804Z 2400 โ โ requestChecks += 1;
2026-10-23T23:34:17.9301993Z 2401 โ โ if (requestChecks !== interruptAt) return false;
2026-10-23T23:34:17.9302141Z 2402 โ โ fiber.interruptUnsafe();
2026-10-23T23:34:17.9302265Z 2403 โ โ return true;
2026-10-23T23:34:17.9302371Z 2404 โ โ },
2026-10-23T23:34:17.9302470Z 2405 โ โ };
2026-10-23T23:34:17.9302554Z 2406 โ โ
2026-10-23T23:34:17.9302709Z 2407 โ โ const input: UsageSummaryInput = {
2026-10-23T23:34:17.9302827Z 2408 โ โ ...WINDOW,
2026-10-23T23:34:17.9302988Z 2409 โ โ sinceDay: UsageDay.make("2026-09-01"),
2026-10-23T23:34:17.9303238Z 2410 โ โ untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-23T23:34:17.9303343Z 2411 โ โ };
2026-10-23T23:34:17.9303489Z 2412 โ โ const first = yield* service
2026-10-23T23:34:17.9303614Z 2413 โ โ .readSummary(input)
2026-10-23T23:34:17.9303730Z 2414 โ โ .pipe(
2026-10-23T23:34:17.9303854Z 2415 โ โ Effect.exit,
2026-10-23T23:34:17.9304048Z 2416 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-23T23:34:17.9304174Z 2417 โ โ Effect.forkChild,
2026-10-23T23:34:17.9304492Z 2418 โ โ );
2026-10-23T23:34:17.9304774Z 2419 โ โ requestFiber = first;
2026-10-23T23:34:17.9304909Z 2420 โ โ yield* Effect.yieldNow;
2026-10-23T23:34:17.9305032Z 2421 โ โ dispatcher.flush();
2026-10-23T23:34:17.9305123Z 2422 โ โ
2026-10-23T23:34:17.9305316Z 2423 โ โ const second = yield* service.readSummary(input).pipe(
2026-10-23T23:34:17.9305483Z 2424 โ โ Effect.match({
2026-10-23T23:34:17.9305663Z 2425 โ โ onFailure: (error) => error.reason,
2026-10-23T23:34:17.9305826Z 2426 โ โ onSuccess: () => "success" as const,
2026-10-23T23:34:17.9305937Z 2427 โ โ }),
2026-10-23T23:34:17.9306141Z 2428 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-23T23:34:17.9306271Z 2429 โ โ Effect.forkChild,
2026-10-23T23:34:17.9306382Z 2430 โ โ );
2026-10-23T23:34:17.9306512Z 2431 โ โ yield* Effect.yieldNow;
2026-10-23T23:34:17.9306643Z 2432 โ โ dispatcher.flush();
2026-10-23T23:34:17.9306798Z 2433 โ โ const secondExit = second.pollUnsafe();
2026-10-23T23:34:17.9306946Z 2434 โ โ if (secondExit === undefined) {
2026-10-23T23:34:17.9307086Z 2435 โ โ second.interruptUnsafe();
2026-10-23T23:34:17.9307225Z 2436 โ โ orphanedAt = interruptAt;
2026-10-23T23:34:17.9307329Z 2437 โ โ break;
2026-10-23T23:34:17.9307435Z 2438 โ โ }
2026-10-23T23:34:17.9307586Z 2439 โ โ if (Exit.isFailure(secondExit)) {
2026-10-23T23:34:17.9307778Z 2440 โ โ assert.fail("the matching request fiber was interrupted");
2026-10-23T23:34:17.9307872Z 2441 โ โ }
2026-10-23T23:34:17.9308063Z 2442 โ โ assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-23T23:34:17.9308230Z 2443 โ โฐโโถ }
2026-10-23T23:34:17.9308307Z 2444 โ
2026-10-23T23:34:17.9308370Z โฐโโโโ
2026-10-23T23:34:17.9308374Z
2026-10-23T23:34:17.9308702Z โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9308858Z โญโ[apps/server/src/usage/UsageService.ts:169:7]
2026-10-23T23:34:17.9308936Z 168 โ
2026-10-23T23:34:17.9309032Z 169 โ const layerTest = Layer.succeed(
2026-10-23T23:34:17.9309133Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9309298Z ยท โฐโโ 'layerTest' is declared here
2026-10-23T23:34:17.9309379Z 170 โ UsageService,
2026-10-23T23:34:17.9309439Z โฐโโโโ
2026-10-23T23:34:17.9309573Z help: Consider removing this declaration.
2026-10-23T23:34:17.9309576Z
2026-10-23T23:34:17.9309888Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9310045Z โญโ[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-23T23:34:17.9310170Z 83 โ const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-23T23:34:17.9310425Z 84 โ useEffect(() => {
2026-10-23T23:34:17.9310618Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9310803Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9310908Z 85 โ if (!actionState.isRunning) return;
2026-10-23T23:34:17.9310995Z 86 โ setNowMs(Date.now());
2026-10-23T23:34:17.9311085Z ยท โโโโโฌโโโ
2026-10-23T23:34:17.9311291Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9311521Z 87 โ const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-23T23:34:17.9311592Z โฐโโโโ
2026-10-23T23:34:17.9312316Z 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-23T23:34:17.9312719Z 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-23T23:34:17.9312722Z
2026-10-23T23:34:17.9312970Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9313125Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:542:25]
2026-10-23T23:34:17.9313294Z 541 โ // range) the boundary string is identical and the chain would die.
2026-10-23T23:34:17.9313417Z 542 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-23T23:34:17.9313547Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9313807Z ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-23T23:34:17.9313981Z 543 โ const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-23T23:34:17.9314047Z โฐโโโโ
2026-10-23T23:34:17.9314406Z 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-23T23:34:17.9314785Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9314788Z
2026-10-23T23:34:17.9314990Z โ react(purity): Cannot call impure function during render
2026-10-23T23:34:17.9315147Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:533:53]
2026-10-23T23:34:17.9315256Z 532 โ if (Number.isNaN(wakeAtMs)) return;
2026-10-23T23:34:17.9315544Z 533 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-23T23:34:17.9315809Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9316018Z ยท โฐโโ Cannot call impure function
2026-10-23T23:34:17.9316117Z 534 โ const id = setTimeout(() => {
2026-10-23T23:34:17.9316184Z โฐโโโโ
2026-10-23T23:34:17.9316607Z help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:17.9316960Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:17.9316963Z
2026-10-23T23:34:17.9317186Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:17.9317337Z โญโ[apps/server/src/processRunner.test.ts:266:14]
2026-10-23T23:34:17.9317412Z 265 โ
2026-10-23T23:34:17.9317538Z 266 โ for (const {} of ["timeout", "success"] as const) {
2026-10-23T23:34:17.9317636Z ยท โโ
2026-10-23T23:34:17.9317719Z 267 โ }
2026-10-23T23:34:17.9317785Z โฐโโโโ
2026-10-23T23:34:17.9318067Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:17.9318070Z
2026-10-23T23:34:17.9318255Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9318441Z โญโ[apps/mobile/src/features/home/thread-swipe-actions.tsx:494:27]
2026-10-23T23:34:17.9318521Z 493 โ >
2026-10-23T23:34:17.9318623Z 494 โ {props.children(close)}
2026-10-23T23:34:17.9318741Z ยท โโโฌโโ
2026-10-23T23:34:17.9318936Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9319036Z 495 โ </ReanimatedSwipeable>
2026-10-23T23:34:17.9319096Z โฐโโโโ
2026-10-23T23:34:17.9319659Z 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-23T23:34:17.9320009Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9320013Z
2026-10-23T23:34:17.9320333Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9320585Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-23T23:34:17.9320648Z 118 โ
2026-10-23T23:34:17.9320739Z 119 โ useEffect(() => {
2026-10-23T23:34:17.9320834Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9320984Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9321089Z 120 โ if (orientationSettled) return;
2026-10-23T23:34:17.9321229Z 121 โ const orientation = getNativeShowcaseOrientation();
2026-10-23T23:34:17.9321325Z 122 โ if (orientation === null) {
2026-10-23T23:34:17.9321421Z 123 โ setOrientationSettled(true);
2026-10-23T23:34:17.9321538Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T23:34:17.9321849Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9322031Z 124 โ return;
2026-10-23T23:34:17.9322115Z โฐโโโโ
2026-10-23T23:34:17.9322862Z 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-23T23:34:17.9323296Z 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-23T23:34:17.9323299Z
2026-10-23T23:34:17.9323613Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9323823Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:304:7]
2026-10-23T23:34:17.9323888Z 292 โ
2026-10-23T23:34:17.9323973Z 293 โ useEffect(() => {
2026-10-23T23:34:17.9324062Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9324219Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9324291Z 294 โ if (
2026-10-23T23:34:17.9324378Z 295 โ scene === null ||
2026-10-23T23:34:17.9324479Z 296 โ requestedScene === null ||
2026-10-23T23:34:17.9324573Z 297 โ scene !== requestedScene ||
2026-10-23T23:34:17.9324649Z 298 โ !hasFixture ||
2026-10-23T23:34:17.9324743Z 299 โ !orientationSettled ||
2026-10-23T23:34:17.9324827Z 300 โ !themeApplied ||
2026-10-23T23:34:17.9324980Z 301 โ (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-23T23:34:17.9325142Z 302 โ !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-23T23:34:17.9325218Z 303 โ ) {
2026-10-23T23:34:17.9325307Z 304 โ setReadyScene(null);
2026-10-23T23:34:17.9325405Z ยท โโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9325607Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9325690Z 305 โ return;
2026-10-23T23:34:17.9325764Z โฐโโโโ
2026-10-23T23:34:17.9326472Z 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-23T23:34:17.9326856Z 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-23T23:34:17.9326870Z
2026-10-23T23:34:17.9327188Z โ eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9327393Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-23T23:34:17.9327486Z 127 โ let cancelled = false;
2026-10-23T23:34:17.9327593Z 128 โ let lastOutcome: string | null = null;
2026-10-23T23:34:17.9327685Z ยท โโโโโโฌโโโโโ
2026-10-23T23:34:17.9327855Z ยท โฐโโ 'lastOutcome' is declared here
2026-10-23T23:34:17.9328070Z 129 โ void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-23T23:34:17.9328262Z โฐโโโโ
2026-10-23T23:34:17.9328495Z help: Consider removing this declaration.
2026-10-23T23:34:17.9328498Z
2026-10-23T23:34:17.9328743Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:17.9328924Z โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-23T23:34:17.9329057Z 266 โ {record.elements?.map((element, index) => (
2026-10-23T23:34:17.9329306Z 267 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-23T23:34:17.9329538Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9329640Z 268 โ <ContextField
2026-10-23T23:34:17.9329711Z โฐโโโโ
2026-10-23T23:34:17.9329891Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:17.9329897Z
2026-10-23T23:34:17.9330145Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9330309Z โญโ[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-23T23:34:17.9330433Z 81 โ },
2026-10-23T23:34:17.9330537Z 82 โ [draftKey],
2026-10-23T23:34:17.9330634Z ยท โโโโโฌโโโ
2026-10-23T23:34:17.9330806Z ยท โฐโโ Unnecessary dependency `draftKey`
2026-10-23T23:34:17.9330881Z 83 โ );
2026-10-23T23:34:17.9330947Z โฐโโโโ
2026-10-23T23:34:17.9331312Z 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-23T23:34:17.9331704Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9331711Z
2026-10-23T23:34:17.9332023Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9332191Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-23T23:34:17.9332259Z 57 โ
2026-10-23T23:34:17.9332351Z 58 โ useEffect(() => {
2026-10-23T23:34:17.9332446Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9332608Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9332724Z 59 โ const controller = new AbortController();
2026-10-23T23:34:17.9332814Z 60 โ setLoadState("pending");
2026-10-23T23:34:17.9332910Z ยท โโโโโโโฌโโโโโ
2026-10-23T23:34:17.9333121Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9333318Z 61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-23T23:34:17.9333387Z โฐโโโโ
2026-10-23T23:34:17.9334100Z 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-23T23:34:17.9334487Z 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-23T23:34:17.9334490Z
2026-10-23T23:34:17.9334846Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9335099Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-23T23:34:17.9335205Z 70 โ return () => controller.abort();
2026-10-23T23:34:17.9335326Z 71 โ }, [player, props.playRequested, attempt]);
2026-10-23T23:34:17.9335536Z ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
2026-10-23T23:34:17.9335839Z ยท โ โ โฐโโ Unnecessary dependency `attempt`
2026-10-23T23:34:17.9336130Z ยท โ โฐโโ Unnecessary dependency `props.playRequested`
2026-10-23T23:34:17.9336411Z ยท โฐโโ Unnecessary dependency `player_0`
2026-10-23T23:34:17.9336506Z 72 โ
2026-10-23T23:34:17.9336580Z โฐโโโโ
2026-10-23T23:34:17.9336940Z 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-23T23:34:17.9337325Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9337328Z
2026-10-23T23:34:17.9337663Z โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9337828Z โญโ[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-23T23:34:17.9337891Z 339 โ
2026-10-23T23:34:17.9338040Z 340 โ const layerTest = AnalyticsService.layerTest;
2026-10-23T23:34:17.9338143Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9338314Z ยท โฐโโ 'layerTest' is declared here
2026-10-23T23:34:17.9338383Z โฐโโโโ
2026-10-23T23:34:17.9338518Z help: Consider removing this declaration.
2026-10-23T23:34:17.9338521Z
2026-10-23T23:34:17.9338726Z โ eslint(no-control-regex): Unexpected control character
2026-10-23T23:34:17.9338959Z โญโ[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-23T23:34:17.9339123Z 219 โ <Text selectable className="font-mono text-sm text-foreground">
2026-10-23T23:34:17.9339318Z 220 โ {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-23T23:34:17.9339455Z ยท โโโฌโ
2026-10-23T23:34:17.9339672Z ยท โฐโโ 'U+001B' is a control character.
2026-10-23T23:34:17.9339754Z 221 โ </Text>
2026-10-23T23:34:17.9339831Z โฐโโโโ
2026-10-23T23:34:17.9340116Z help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-23T23:34:17.9340119Z
2026-10-23T23:34:17.9340506Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9340684Z โญโ[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-23T23:34:17.9340765Z 61 โ }, []);
2026-10-23T23:34:17.9340849Z 62 โ useEffect(() => {
2026-10-23T23:34:17.9340936Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9341090Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9341385Z 63 โ if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-23T23:34:17.9341801Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9342067Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9342177Z 64 โ }, [playbackUrl, resolvedUrl]);
2026-10-23T23:34:17.9342245Z โฐโโโโ
2026-10-23T23:34:17.9343050Z 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-23T23:34:17.9343453Z 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-23T23:34:17.9343460Z
2026-10-23T23:34:17.9343768Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9343994Z โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-23T23:34:17.9344057Z 117 โ
2026-10-23T23:34:17.9344144Z 118 โ useEffect(() => {
2026-10-23T23:34:17.9344231Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9344382Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9344483Z 119 โ void refreshNotifications();
2026-10-23T23:34:17.9344598Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9344820Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9344996Z 120 โ const subscription = AppState.addEventListener("change", (state) => {
2026-10-23T23:34:17.9345055Z โฐโโโโ
2026-10-23T23:34:17.9345759Z 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-23T23:34:17.9346145Z 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-23T23:34:17.9346149Z
2026-10-23T23:34:17.9346458Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9346878Z โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-23T23:34:17.9347084Z 125 โ
2026-10-23T23:34:17.9347179Z 126 โ useEffect(() => {
2026-10-23T23:34:17.9347269Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9347427Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9347515Z 127 โ if (!isLoaded) {
2026-10-23T23:34:17.9347631Z 128 โ setLiveActivityStatus("checking");
2026-10-23T23:34:17.9347762Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-23T23:34:17.9348031Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9348110Z 129 โ return;
2026-10-23T23:34:17.9348177Z โฐโโโโ
2026-10-23T23:34:17.9348884Z 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-23T23:34:17.9349275Z 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-23T23:34:17.9349278Z
2026-10-23T23:34:17.9349579Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9349738Z โญโ[apps/mobile/src/components/ProjectFavicon.tsx:158:5]
2026-10-23T23:34:17.9349976Z 153 โ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-23T23:34:17.9350067Z 154 โ useLayoutEffect(() => {
2026-10-23T23:34:17.9350164Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9350326Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9350488Z 155 โ if (faviconRequest === null) return;
2026-10-23T23:34:17.9350564Z 156 โ
2026-10-23T23:34:17.9350717Z 157 โ const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-23T23:34:17.9350833Z 158 โ setActiveFaviconRequest(faviconRequest);
2026-10-23T23:34:17.9350949Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T23:34:17.9351160Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9351241Z 159 โ return endRequest;
2026-10-23T23:34:17.9351309Z โฐโโโโ
2026-10-23T23:34:17.9352023Z 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-23T23:34:17.9352407Z 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-23T23:34:17.9352410Z
2026-10-23T23:34:17.9352853Z โ 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-23T23:34:17.9353007Z โญโ[apps/server/src/auth/RpcAuthorization.ts:237:17]
2026-10-23T23:34:17.9353175Z 236 โ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-23T23:34:17.9353440Z 237 โ const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-23T23:34:17.9353678Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9353852Z 238 โ const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-23T23:34:17.9353913Z โฐโโโโ
2026-10-23T23:34:17.9353916Z
2026-10-23T23:34:17.9354414Z โ 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-23T23:34:17.9354584Z โญโ[apps/server/src/auth/RpcAuthorization.ts:256:26]
2026-10-23T23:34:17.9354710Z 255 โ if (method === WS_METHODS.assetsCreateUrl) {
2026-10-23T23:34:17.9354893Z 256 โ const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-23T23:34:17.9355046Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9355136Z 257 โ return [
2026-10-23T23:34:17.9355203Z โฐโโโโ
2026-10-23T23:34:17.9355206Z
2026-10-23T23:34:17.9355506Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9355674Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-23T23:34:17.9355814Z 66 โ const { id: attachmentId, fileUri } = attachment;
2026-10-23T23:34:17.9355903Z 67 โ useEffect(() => {
2026-10-23T23:34:17.9355995Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9356154Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9356234Z 68 โ setUri(null);
2026-10-23T23:34:17.9356321Z ยท โโโโฌโโ
2026-10-23T23:34:17.9356524Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9356608Z 69 โ setError(null);
2026-10-23T23:34:17.9356679Z โฐโโโโ
2026-10-23T23:34:17.9357388Z 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-23T23:34:17.9357774Z 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-23T23:34:17.9357779Z
2026-10-23T23:34:17.9358034Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9358209Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-23T23:34:17.9358287Z 90 โ };
2026-10-23T23:34:17.9358384Z 91 โ }, [attachmentId, fileUri]);
2026-10-23T23:34:17.9358521Z ยท โโโโโโโฌโโโโโ โโโโฌโโโ
2026-10-23T23:34:17.9358743Z ยท โ โฐโโ Unnecessary dependency `fileUri`
2026-10-23T23:34:17.9358930Z ยท โฐโโ Unnecessary dependency `attachmentId`
2026-10-23T23:34:17.9359095Z 92 โ const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-23T23:34:17.9359157Z โฐโโโโ
2026-10-23T23:34:17.9359507Z 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-23T23:34:17.9359983Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9360041Z
2026-10-23T23:34:17.9360397Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:17.9360579Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-23T23:34:17.9360659Z 212 โ useEffect(() => {
2026-10-23T23:34:17.9360809Z 213 โ if (!isFocused && hasSource) props.onRequestClose();
2026-10-23T23:34:17.9360992Z ยท โโโฌโโ
2026-10-23T23:34:17.9361202Z ยท โฐโโ Missing dependency `props`
2026-10-23T23:34:17.9361327Z 214 โ }, [isFocused, hasSource, props.onRequestClose]);
2026-10-23T23:34:17.9361463Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9361742Z ยท โฐโโ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-23T23:34:17.9361844Z 215 โ const { source } = props;
2026-10-23T23:34:17.9361911Z โฐโโโโ
2026-10-23T23:34:17.9362427Z 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-23T23:34:17.9362812Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9362815Z
2026-10-23T23:34:17.9363058Z โ eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-23T23:34:17.9363198Z โญโ[apps/server/src/auth/http.ts:28:10]
2026-10-23T23:34:17.9363306Z 27 โ import * as Schema from "effect/Schema";
2026-10-23T23:34:17.9363426Z 28 โ import { identity } from "effect/Function";
2026-10-23T23:34:17.9363526Z ยท โโโโโฌโโโ
2026-10-23T23:34:17.9363693Z ยท โฐโโ 'identity' is imported here
2026-10-23T23:34:17.9363791Z 29 โ import * as Layer from "effect/Layer";
2026-10-23T23:34:17.9363860Z โฐโโโโ
2026-10-23T23:34:17.9363983Z help: Consider removing this import.
2026-10-23T23:34:17.9363986Z
2026-10-23T23:34:17.9364296Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9364465Z โญโ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-23T23:34:17.9364538Z 150 โ
2026-10-23T23:34:17.9364636Z 151 โ useEffect(() => {
2026-10-23T23:34:17.9364733Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9364885Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9364994Z 152 โ if (!controlledSelectedPath) {
2026-10-23T23:34:17.9365074Z 153 โ return;
2026-10-23T23:34:17.9365149Z 154 โ }
2026-10-23T23:34:17.9365249Z 155 โ setExpandedPaths((current) => {
2026-10-23T23:34:17.9365356Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9365569Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9365718Z 156 โ const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-23T23:34:17.9365779Z โฐโโโโ
2026-10-23T23:34:17.9366604Z 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-23T23:34:17.9367101Z 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-23T23:34:17.9367105Z
2026-10-23T23:34:17.9367340Z โ eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-23T23:34:17.9367462Z โญโ[apps/server/src/ws.ts:10:13]
2026-10-23T23:34:17.9367625Z 9 โ import * as Effect from "effect/Effect";
2026-10-23T23:34:17.9367740Z 10 โ import * as Fiber from "effect/Fiber";
2026-10-23T23:34:17.9367834Z ยท โโโฌโโ
2026-10-23T23:34:17.9367999Z ยท โฐโโ 'Fiber' is imported here
2026-10-23T23:34:17.9368121Z 11 โ import * as FileSystem from "effect/FileSystem";
2026-10-23T23:34:17.9368192Z โฐโโโโ
2026-10-23T23:34:17.9368311Z help: Consider removing this import.
2026-10-23T23:34:17.9368314Z
2026-10-23T23:34:17.9368553Z โ eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-23T23:34:17.9368664Z โญโ[apps/server/src/ws.ts:17:13]
2026-10-23T23:34:17.9368763Z 16 โ import * as Ref from "effect/Ref";
2026-10-23T23:34:17.9368876Z 17 โ import * as Schedule from "effect/Schedule";
2026-10-23T23:34:17.9368977Z ยท โโโโโฌโโโ
2026-10-23T23:34:17.9369138Z ยท โฐโโ 'Schedule' is imported here
2026-10-23T23:34:17.9369252Z 18 โ import * as Schema from "effect/Schema";
2026-10-23T23:34:17.9369323Z โฐโโโโ
2026-10-23T23:34:17.9369449Z help: Consider removing this import.
2026-10-23T23:34:17.9369452Z
2026-10-23T23:34:17.9369803Z โ eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9369927Z โญโ[apps/server/src/ws.ts:1285:13]
2026-10-23T23:34:17.9370120Z 1284 โ const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-23T23:34:17.9370404Z 1285 โ const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-23T23:34:17.9370543Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T23:34:17.9370771Z ยท โฐโโ 'projectSetupScriptRunner' is declared here
2026-10-23T23:34:17.9371129Z 1286 โ const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-23T23:34:17.9371373Z โฐโโโโ
2026-10-23T23:34:17.9371524Z help: Consider removing this declaration.
2026-10-23T23:34:17.9371527Z
2026-10-23T23:34:17.9371719Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9371909Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-23T23:34:17.9372203Z 151 โ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-23T23:34:17.9372324Z 152 โ {props.children(open)}
2026-10-23T23:34:17.9372450Z ยท โโโฌโ
2026-10-23T23:34:17.9372659Z ยท โฐโโ Cannot access ref value during render
2026-10-23T23:34:17.9372764Z 153 โ </View>
2026-10-23T23:34:17.9372828Z โฐโโโโ
2026-10-23T23:34:17.9373399Z 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-23T23:34:17.9373748Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9373751Z
2026-10-23T23:34:17.9374004Z โ react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-23T23:34:17.9374195Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-23T23:34:17.9374297Z 139 โ if (action.id !== undefined) {
2026-10-23T23:34:17.9374415Z 140 โ props.onPressAction?.({
2026-10-23T23:34:17.9374512Z ยท โโโฌโโ
2026-10-23T23:34:17.9374682Z ยท โฐโโ Missing dependency `props`
2026-10-23T23:34:17.9374792Z 141 โ nativeEvent: { event: action.id },
2026-10-23T23:34:17.9374974Z 142 โ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-23T23:34:17.9375044Z 143 โ }
2026-10-23T23:34:17.9375122Z 144 โ },
2026-10-23T23:34:17.9375221Z 145 โ [close, props.onPressAction],
2026-10-23T23:34:17.9375346Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9375612Z ยท โฐโโ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-23T23:34:17.9375684Z 146 โ );
2026-10-23T23:34:17.9375746Z โฐโโโโ
2026-10-23T23:34:17.9376331Z 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-23T23:34:17.9376714Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9376719Z
2026-10-23T23:34:17.9376967Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9377162Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-23T23:34:17.9377279Z 256 โ return () => cancelAnimationFrame(frame);
2026-10-23T23:34:17.9377374Z 257 โ }, [props.path, targetIndex]);
2026-10-23T23:34:17.9377474Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9377747Z ยท โฐโโ Unnecessary dependency `props.path`
2026-10-23T23:34:17.9377860Z 258 โ
2026-10-23T23:34:17.9377975Z โฐโโโโ
2026-10-23T23:34:17.9378337Z 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-23T23:34:17.9378766Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9378770Z
2026-10-23T23:34:17.9379016Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:17.9379196Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-23T23:34:17.9379291Z 292 โ <SourceText
2026-10-23T23:34:17.9379415Z 293 โ key={`${index}:${tokenIndex}`}
2026-10-23T23:34:17.9379556Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9379649Z 294 โ style={{
2026-10-23T23:34:17.9379719Z โฐโโโโ
2026-10-23T23:34:17.9379896Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:17.9379899Z
2026-10-23T23:34:17.9380126Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:17.9380299Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-23T23:34:17.9380434Z 308 โ return (
2026-10-23T23:34:17.9380542Z 309 โ <SourceText key={index}>
2026-10-23T23:34:17.9380668Z ยท โโโโโโโโโโโ
2026-10-23T23:34:17.9380751Z 310 โ {body}
2026-10-23T23:34:17.9380829Z โฐโโโโ
2026-10-23T23:34:17.9381005Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:17.9381008Z
2026-10-23T23:34:17.9381705Z โ 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-23T23:34:17.9381920Z โญโ[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
2026-10-23T23:34:17.9382009Z 222 โ let idlePasses = 0;
2026-10-23T23:34:17.9382185Z 223 โ โญโโถ for (;;) {
2026-10-23T23:34:17.9382351Z 224 โ โ yield* Effect.promise(() => Promise.resolve());
2026-10-23T23:34:17.9382528Z 225 โ โ const pending = backgroundRuntime.pending.shift();
2026-10-23T23:34:17.9382653Z 226 โ โ if (!pending) {
2026-10-23T23:34:17.9382768Z 227 โ โ idlePasses++;
2026-10-23T23:34:17.9382898Z 228 โ โ if (idlePasses >= 3) {
2026-10-23T23:34:17.9382997Z 229 โ โ return;
2026-10-23T23:34:17.9383104Z 230 โ โ }
2026-10-23T23:34:17.9383219Z 231 โ โ continue;
2026-10-23T23:34:17.9383311Z 232 โ โ }
2026-10-23T23:34:17.9383421Z 233 โ โ idlePasses = 0;
2026-10-23T23:34:17.9383566Z 234 โ โ const exit = yield* Effect.exit(
2026-10-23T23:34:17.9383962Z 235 โ โ pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-23T23:34:17.9384226Z 236 โ โ );
2026-10-23T23:34:17.9384361Z 237 โ โ yield* Effect.sync(() => {
2026-10-23T23:34:17.9384492Z 238 โ โ pending.resolve(exit);
2026-10-23T23:34:17.9384591Z 239 โ โ });
2026-10-23T23:34:17.9384748Z 240 โ โฐโโถ }
2026-10-23T23:34:17.9384815Z 241 โ },
2026-10-23T23:34:17.9384916Z โฐโโโโ
2026-10-23T23:34:17.9384921Z
2026-10-23T23:34:17.9385214Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9385407Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:215:7]
2026-10-23T23:34:17.9385474Z 214 โ }
2026-10-23T23:34:17.9385570Z 215 โ }, [wrappedRender]);
2026-10-23T23:34:17.9385676Z ยท โโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9385859Z ยท โฐโโ Unnecessary dependency `wrappedRender`
2026-10-23T23:34:17.9385921Z 216 โ
2026-10-23T23:34:17.9385986Z โฐโโโโ
2026-10-23T23:34:17.9386341Z 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-23T23:34:17.9386709Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9386714Z
2026-10-23T23:34:17.9387000Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:17.9387195Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:817:35]
2026-10-23T23:34:17.9387268Z 816 โ >
2026-10-23T23:34:17.9387400Z 817 โ <AdaptiveWorkspaceContext value={contextValue}>
2026-10-23T23:34:17.9387542Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9387655Z 818 โ <NativeWorkspaceInspectorContext
2026-10-23T23:34:17.9387724Z โฐโโโโ
2026-10-23T23:34:17.9387988Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:17.9388161Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:17.9388164Z
2026-10-23T23:34:17.9388444Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:17.9388643Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:832:42]
2026-10-23T23:34:17.9388714Z 831 โ >
2026-10-23T23:34:17.9388865Z 832 โ <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-23T23:34:17.9389003Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9389124Z 833 โ <WindowHingeContext value={windowHinge}>
2026-10-23T23:34:17.9389186Z โฐโโโโ
2026-10-23T23:34:17.9389447Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:17.9389606Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:17.9389615Z
2026-10-23T23:34:17.9389853Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T23:34:17.9390154Z โญโ[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-23T23:34:17.9390329Z 3 โ AuthProvidersManageScope,
2026-10-23T23:34:17.9390471Z 4 โ type AuthSessionState,
2026-10-23T23:34:17.9390567Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9390747Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-23T23:34:17.9390833Z 5 โ type EnvironmentId,
2026-10-23T23:34:17.9390897Z โฐโโโโ
2026-10-23T23:34:17.9391047Z help: Consider removing this import.
2026-10-23T23:34:17.9391051Z
2026-10-23T23:34:17.9391616Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) 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-23T23:34:17.9391810Z โญโ[apps/server/src/provider/acp/AntigravityProtocol.ts:263:20]
2026-10-23T23:34:17.9391919Z 262 โ ...(update._meta !== undefined
2026-10-23T23:34:17.9392118Z 263 โ ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
2026-10-23T23:34:17.9392243Z ยท โโโโโโโโโ
2026-10-23T23:34:17.9392326Z 264 โ : {}),
2026-10-23T23:34:17.9392394Z โฐโโโโ
2026-10-23T23:34:17.9392396Z
2026-10-23T23:34:17.9392642Z โ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-23T23:34:17.9392810Z โญโ[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-23T23:34:17.9392886Z 78 โ
2026-10-23T23:34:17.9393054Z 79 โ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-23T23:34:17.9393161Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9393356Z ยท โฐโโ 'describeSchedule' is declared here
2026-10-23T23:34:17.9393492Z 80 โ if (schedule.type === "webhook") return "On webhook";
2026-10-23T23:34:17.9393564Z โฐโโโโ
2026-10-23T23:34:17.9393684Z help: Consider removing this declaration.
2026-10-23T23:34:17.9393688Z
2026-10-23T23:34:17.9393874Z โ react(immutability): This value cannot be modified
2026-10-23T23:34:17.9394072Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-23T23:34:17.9394139Z 35 โ
2026-10-23T23:34:17.9394300Z 36 โ const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-23T23:34:17.9394407Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T23:34:17.9394583Z ยท โฐโโ `inspectorProgress` originates here
2026-10-23T23:34:17.9394702Z 37 โ const { renderedInspectorWidth } = props;
2026-10-23T23:34:17.9394858Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-23T23:34:17.9394921Z 39 โ
2026-10-23T23:34:17.9395018Z 40 โ const onClosed = props.onClosed;
2026-10-23T23:34:17.9395101Z 41 โ useEffect(() => {
2026-10-23T23:34:17.9395205Z 42 โ inspectorProgress.value = withTiming(
2026-10-23T23:34:17.9395304Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-23T23:34:17.9395479Z ยท โฐโโ `inspectorProgress` cannot be modified
2026-10-23T23:34:17.9395573Z 43 โ inspectorVisible ? 1 : 0,
2026-10-23T23:34:17.9395632Z โฐโโโโ
2026-10-23T23:34:17.9395947Z 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-23T23:34:17.9396400Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:17.9396449Z
2026-10-23T23:34:17.9396688Z โ react(immutability): This value cannot be modified
2026-10-23T23:34:17.9396878Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-23T23:34:17.9396985Z 37 โ const { renderedInspectorWidth } = props;
2026-10-23T23:34:17.9397140Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-23T23:34:17.9397262Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9397524Z ยท โฐโโ `renderedContentWidth` originates here
2026-10-23T23:34:17.9397589Z 39 โ
2026-10-23T23:34:17.9397686Z 40 โ const onClosed = props.onClosed;
2026-10-23T23:34:17.9397778Z 41 โ useEffect(() => {
2026-10-23T23:34:17.9397884Z 42 โ inspectorProgress.value = withTiming(
2026-10-23T23:34:17.9397980Z 43 โ inspectorVisible ? 1 : 0,
2026-10-23T23:34:17.9398070Z 44 โ WORKSPACE_PANE_TIMING,
2026-10-23T23:34:17.9398155Z 45 โ (finished) => {
2026-10-23T23:34:17.9398318Z 46 โ if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-23T23:34:17.9398411Z 47 โ runOnJS(onClosed)();
2026-10-23T23:34:17.9398489Z 48 โ }
2026-10-23T23:34:17.9398564Z 49 โ },
2026-10-23T23:34:17.9398628Z 50 โ );
2026-10-23T23:34:17.9398786Z 51 โ const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-23T23:34:17.9398883Z 52 โ renderedInspectorWidth.set(
2026-10-23T23:34:17.9399059Z 53 โ resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-23T23:34:17.9399128Z 54 โ );
2026-10-23T23:34:17.9399201Z 55 โ }, [
2026-10-23T23:34:17.9399287Z 56 โ inspectorProgress,
2026-10-23T23:34:17.9399368Z 57 โ inspectorVisible,
2026-10-23T23:34:17.9399441Z 58 โ inspectorWidth,
2026-10-23T23:34:17.9399517Z 59 โ onClosed,
2026-10-23T23:34:17.9399610Z 60 โ renderedInspectorWidth,
2026-10-23T23:34:17.9399680Z 61 โ resizing,
2026-10-23T23:34:17.9399748Z 62 โ ]);
2026-10-23T23:34:17.9399814Z 63 โ
2026-10-23T23:34:17.9399895Z 64 โ useEffect(() => {
2026-10-23T23:34:17.9400002Z 65 โ const targetWidth = inspectorWidth ?? 0;
2026-10-23T23:34:17.9400115Z 66 โ if (!inspectorVisible || resizing) {
2026-10-23T23:34:17.9400243Z 67 โ renderedContentWidth.value = targetWidth;
2026-10-23T23:34:17.9400406Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9400736Z ยท โฐโโ `renderedContentWidth` cannot be modified
2026-10-23T23:34:17.9400894Z 68 โ return;
2026-10-23T23:34:17.9400995Z โฐโโโโ
2026-10-23T23:34:17.9401312Z 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-23T23:34:17.9401729Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:17.9401740Z
2026-10-23T23:34:17.9402303Z โ 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-23T23:34:17.9402531Z โญโ[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-23T23:34:17.9402624Z 520 โ })).delivery;
2026-10-23T23:34:17.9402864Z 521 โ โญโโถ while (delivery.outcome === "accepted") {
2026-10-23T23:34:17.9402998Z 522 โ โ yield* Effect.yieldNow;
2026-10-23T23:34:17.9403174Z 523 โ โ delivery = (yield* service.getWebhookDelivery({
2026-10-23T23:34:17.9403300Z 524 โ โ id: task.id,
2026-10-23T23:34:17.9403440Z 525 โ โ deliveryId: deliveryId!,
2026-10-23T23:34:17.9403554Z 526 โ โ })).delivery;
2026-10-23T23:34:17.9403722Z 527 โ โฐโโถ }
2026-10-23T23:34:17.9403872Z 528 โ assert.equal(delivery.outcome, "dispatch_failed");
2026-10-23T23:34:17.9403942Z โฐโโโโ
2026-10-23T23:34:17.9403945Z
2026-10-23T23:34:17.9404157Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-23T23:34:17.9404384Z โญโ[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-23T23:34:17.9404467Z 115 โ return [...commands];
2026-10-23T23:34:17.9404629Z 116 โ }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-23T23:34:17.9404766Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9404983Z ยท โฐโโ Unnecessary dependency `registrationVersion`
2026-10-23T23:34:17.9405048Z 117 โ
2026-10-23T23:34:17.9405114Z โฐโโโโ
2026-10-23T23:34:17.9405496Z 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-23T23:34:17.9405869Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9405872Z
2026-10-23T23:34:17.9406122Z โ typescript(no-extraneous-class): Unexpected class with only a constructor.
2026-10-23T23:34:17.9406273Z โญโ[apps/desktop/src/preview/Manager.test.ts:158:18]
2026-10-23T23:34:17.9406401Z 157 โ BrowserWindow: browserWindowConstructor,
2026-10-23T23:34:17.9406588Z 158 โ โญโโถ ClipboardItem: class {
2026-10-23T23:34:17.9406757Z 159 โ โ constructor(data: Record<string, unknown>) {
2026-10-23T23:34:17.9406991Z 160 โ โ clipboardItemConstructor(data);
2026-10-23T23:34:17.9407209Z 161 โ โ }
2026-10-23T23:34:17.9407360Z 162 โ โฐโโถ },
2026-10-23T23:34:17.9407446Z 163 โ clipboard: {
2026-10-23T23:34:17.9407515Z โฐโโโโ
2026-10-23T23:34:17.9407723Z help: Try replacing this class with a standalone function or deleting it entirely
2026-10-23T23:34:17.9407727Z
2026-10-23T23:34:17.9407906Z โ react(refs): Cannot access refs during render
2026-10-23T23:34:17.9414987Z โญโ[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-23T23:34:17.9415262Z 53 โ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-23T23:34:17.9415494Z 54 โ โญโโถ children = cloneElement(child, {
2026-10-23T23:34:17.9415629Z 55 โ โ onTouchStart: (event) => {
2026-10-23T23:34:17.9415826Z 56 โ โ // Reset for a new touch, not onPressIn, which also fires when a
2026-10-23T23:34:17.9416017Z 57 โ โ // finger moves out of the row and back during the same gesture.
2026-10-23T23:34:17.9416275Z 58 โ โ menuPress.current.isPreparing = false;
2026-10-23T23:34:17.9416556Z 59 โ โ menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-23T23:34:17.9416706Z 60 โ โ pendingPress.current = null;
2026-10-23T23:34:17.9416852Z 61 โ โ child.props.onTouchStart?.(event);
2026-10-23T23:34:17.9416951Z 62 โ โ },
2026-10-23T23:34:17.9417084Z 63 โ โ onPress: (event) => {
2026-10-23T23:34:17.9417298Z 64 โ โ // Accessibility clicks have no touch identifier and must not inherit
2026-10-23T23:34:17.9417469Z 65 โ โ // cancellation from a previous physical gesture.
2026-10-23T23:34:17.9417672Z 66 โ โ const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-23T23:34:17.9417901Z 67 โ โ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-23T23:34:17.9418002Z 68 โ โ return;
2026-10-23T23:34:17.9418096Z 69 โ โ }
2026-10-23T23:34:17.9418267Z 70 โ โ if (isTouch && menuPress.current.isPreparing) {
2026-10-23T23:34:17.9418479Z 71 โ โ // A release can arrive between native menu preparation and display.
2026-10-23T23:34:17.9418680Z 72 โ โ // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-23T23:34:17.9418801Z 73 โ โ event.persist();
2026-10-23T23:34:17.9418996Z 74 โ โ pendingPress.current = () => child.props.onPress?.(event);
2026-10-23T23:34:17.9419097Z 75 โ โ return;
2026-10-23T23:34:17.9419186Z 76 โ โ }
2026-10-23T23:34:17.9419323Z 77 โ โ child.props.onPress?.(event);
2026-10-23T23:34:17.9419422Z 78 โ โ },
2026-10-23T23:34:17.9419579Z 79 โ โโโถ });
2026-10-23T23:34:17.9420026Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-23T23:34:17.9420288Z 80 โ menuProps.onMenuInteractionStart = () => {
2026-10-23T23:34:17.9420448Z โฐโโโโ
2026-10-23T23:34:17.9421058Z 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-23T23:34:17.9421465Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T23:34:17.9421475Z
2026-10-23T23:34:17.9422000Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T23:34:17.9422185Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:773:7]
2026-10-23T23:34:17.9422310Z 772 โ if (settingsSheetPresentation.isActive) {
2026-10-23T23:34:17.9422463Z 773 โ settingsRoutePresentation.present(settingsRouteSession);
2026-10-23T23:34:17.9422575Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-23T23:34:17.9422782Z ยท โฐโโ Missing dependency `settingsRoutePresentation`
2026-10-23T23:34:17.9422856Z 774 โ }
2026-10-23T23:34:17.9423095Z 775 โ }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-23T23:34:17.9423223Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9423553Z ยท โฐโโ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-23T23:34:17.9423623Z 776 โ
2026-10-23T23:34:17.9423699Z โฐโโโโ
2026-10-23T23:34:17.9424183Z 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-23T23:34:17.9424546Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9424549Z
2026-10-23T23:34:17.9424733Z โ react(immutability): This value cannot be modified
2026-10-23T23:34:17.9424899Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:391:5]
2026-10-23T23:34:17.9425087Z 387 โ typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-23T23:34:17.9425242Z 388 โ const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-23T23:34:17.9425368Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9425553Z ยท โฐโโ `animatedBorderRadius` originates here
2026-10-23T23:34:17.9425739Z 389 โ const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-23T23:34:17.9425820Z 390 โ useLayoutEffect(() => {
2026-10-23T23:34:17.9425940Z 391 โ animatedBorderRadius.value = shouldAnimate
2026-10-23T23:34:17.9426045Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9426227Z ยท โฐโโ `animatedBorderRadius` cannot be modified
2026-10-23T23:34:17.9426328Z 392 โ ? withTiming(targetBorderRadius, {
2026-10-23T23:34:17.9426395Z โฐโโโโ
2026-10-23T23:34:17.9426870Z 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-23T23:34:17.9427393Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T23:34:17.9427396Z
2026-10-23T23:34:17.9427613Z โ eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-23T23:34:17.9427804Z โญโ[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-23T23:34:17.9427950Z 14 โ import * as Layer from "effect/Layer";
2026-10-23T23:34:17.9428061Z 15 โ import type * as Scope from "effect/Scope";
2026-10-23T23:34:17.9428162Z ยท โโโฌโโ
2026-10-23T23:34:17.9428314Z ยท โฐโโ 'Scope' is imported here
2026-10-23T23:34:17.9428421Z 16 โ import * as Stream from "effect/Stream";
2026-10-23T23:34:17.9428492Z โฐโโโโ
2026-10-23T23:34:17.9428613Z help: Consider removing this import.
2026-10-23T23:34:17.9428616Z
2026-10-23T23:34:17.9428896Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:17.9429081Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-23T23:34:17.9429156Z 289 โ return (
2026-10-23T23:34:17.9429317Z 290 โ <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-23T23:34:17.9429455Z ยท โโโโโโโโโโโโโ
2026-10-23T23:34:17.9429543Z 291 โ {props.children}
2026-10-23T23:34:17.9429609Z โฐโโโโ
2026-10-23T23:34:17.9429871Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:17.9430041Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:17.9430047Z
2026-10-23T23:34:17.9430332Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:17.9430588Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-23T23:34:17.9430668Z 653 โ return (
2026-10-23T23:34:17.9430805Z 654 โ <ThreadSettingsSessionContext.Provider value={value}>
2026-10-23T23:34:17.9430941Z ยท โโโโโโโโโโโโโ
2026-10-23T23:34:17.9431025Z 655 โ {props.children}
2026-10-23T23:34:17.9431089Z โฐโโโโ
2026-10-23T23:34:17.9431338Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:17.9431505Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:17.9431511Z
2026-10-23T23:34:17.9431784Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T23:34:17.9431967Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-23T23:34:17.9432042Z 1461 โ return (
2026-10-23T23:34:17.9432228Z 1462 โ <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-23T23:34:17.9432384Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9432504Z 1463 โ <ThreadSettingsPickerStack.Navigator
2026-10-23T23:34:17.9432570Z โฐโโโโ
2026-10-23T23:34:17.9432901Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T23:34:17.9433179Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T23:34:17.9433182Z
2026-10-23T23:34:17.9433402Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-23T23:34:17.9433584Z โญโ[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-23T23:34:17.9433829Z 601 โ const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-23T23:34:17.9433986Z 602 โ const gesture = Gesture.Pan()
2026-10-23T23:34:17.9434139Z ยท โโฌโ
2026-10-23T23:34:17.9434380Z ยท โฐโโ `Pan` may be a component
2026-10-23T23:34:17.9434504Z 603 โ .enabled(!props.disabled)
2026-10-23T23:34:17.9434600Z โฐโโโโ
2026-10-23T23:34:17.9434978Z 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-23T23:34:17.9435508Z 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-23T23:34:17.9435512Z
2026-10-23T23:34:17.9435817Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9436003Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:285:5]
2026-10-23T23:34:17.9436146Z 283 โ const [snoozeWakeTick, bumpSnoozeWakeTick] = useState(0);
2026-10-23T23:34:17.9436225Z 284 โ useEffect(() => {
2026-10-23T23:34:17.9436315Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9436465Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9436571Z 285 โ setNow(new Date().toISOString());
2026-10-23T23:34:17.9436659Z ยท โโโโฌโโ
2026-10-23T23:34:17.9436860Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9437019Z 286 โ const id = setInterval(() => setNow(new Date().toISOString()), 60_000);
2026-10-23T23:34:17.9437088Z โฐโโโโ
2026-10-23T23:34:17.9437795Z 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-23T23:34:17.9438183Z 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-23T23:34:17.9438188Z
2026-10-23T23:34:17.9438427Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9438618Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:365:25]
2026-10-23T23:34:17.9438784Z 364 โ // range) the boundary string is identical and the chain would die.
2026-10-23T23:34:17.9438898Z 365 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-23T23:34:17.9439020Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9439210Z ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-23T23:34:17.9439454Z 366 โ const listItems = ((): readonly SidebarListItem[] => {
2026-10-23T23:34:17.9439584Z โฐโโโโ
2026-10-23T23:34:17.9439928Z 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-23T23:34:17.9440288Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9440294Z
2026-10-23T23:34:17.9440566Z โ react(purity): Cannot call impure function during render
2026-10-23T23:34:17.9440763Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:356:53]
2026-10-23T23:34:17.9440878Z 355 โ if (Number.isNaN(wakeAtMs)) return;
2026-10-23T23:34:17.9441078Z 356 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-23T23:34:17.9441222Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9441425Z ยท โฐโโ Cannot call impure function
2026-10-23T23:34:17.9441534Z 357 โ const id = setTimeout(() => {
2026-10-23T23:34:17.9441606Z โฐโโโโ
2026-10-23T23:34:17.9441933Z help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:17.9442278Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:17.9442281Z
2026-10-23T23:34:17.9442591Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9442776Z โญโ[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-23T23:34:17.9442964Z 28 โ const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-23T23:34:17.9443038Z 29 โ useEffect(() => {
2026-10-23T23:34:17.9443135Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9443293Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9443444Z 30 โ if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-23T23:34:17.9443566Z ยท โโโโฌโโโ
2026-10-23T23:34:17.9443793Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9443883Z 31 โ }, [key, live, snapshot]);
2026-10-23T23:34:17.9443948Z โฐโโโโ
2026-10-23T23:34:17.9444715Z 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-23T23:34:17.9445154Z 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-23T23:34:17.9445157Z
2026-10-23T23:34:17.9445488Z โ eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-23T23:34:17.9445648Z โญโ[apps/server/src/provider/AntigravityAuth.ts:285:20]
2026-10-23T23:34:17.9445728Z 284 โ },
2026-10-23T23:34:17.9445827Z 285 โ (effect, flow, stopSessions) =>
2026-10-23T23:34:17.9445940Z ยท โโโโโโโฌโโโโโ
2026-10-23T23:34:17.9446113Z ยท โฐโโ 'stopSessions' is declared here
2026-10-23T23:34:17.9446195Z 286 โ effect.pipe(
2026-10-23T23:34:17.9446254Z โฐโโโโ
2026-10-23T23:34:17.9446379Z help: Consider removing this parameter.
2026-10-23T23:34:17.9446382Z
2026-10-23T23:34:17.9446679Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9446899Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-23T23:34:17.9446958Z 104 โ
2026-10-23T23:34:17.9447037Z 105 โ useEffect(() => {
2026-10-23T23:34:17.9447125Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9447286Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9447379Z 106 โ clearReviewCommentTarget();
2026-10-23T23:34:17.9447503Z 107 โ setPendingNativeCommentSelection(null);
2026-10-23T23:34:17.9447635Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9447841Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9447927Z 108 โ }, [selectedSection?.id]);
2026-10-23T23:34:17.9447994Z โฐโโโโ
2026-10-23T23:34:17.9448697Z 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-23T23:34:17.9449084Z 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-23T23:34:17.9449087Z
2026-10-23T23:34:17.9449391Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9449605Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-23T23:34:17.9449679Z 109 โ
2026-10-23T23:34:17.9449764Z 110 โ useEffect(() => {
2026-10-23T23:34:17.9449857Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9450009Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9450117Z 111 โ if (activeCommentTarget === null) {
2026-10-23T23:34:17.9450384Z 112 โ setPendingNativeCommentSelection(null);
2026-10-23T23:34:17.9450587Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9450796Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9450866Z 113 โ }
2026-10-23T23:34:17.9450931Z โฐโโโโ
2026-10-23T23:34:17.9451623Z 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-23T23:34:17.9451993Z 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-23T23:34:17.9452002Z
2026-10-23T23:34:17.9452244Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9452472Z โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-23T23:34:17.9452600Z 107 โ setPendingNativeCommentSelection(null);
2026-10-23T23:34:17.9452696Z 108 โ }, [selectedSection?.id]);
2026-10-23T23:34:17.9452802Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9453004Z ยท โฐโโ Unnecessary dependency `selectedSection?.id`
2026-10-23T23:34:17.9453079Z 109 โ
2026-10-23T23:34:17.9453152Z โฐโโโโ
2026-10-23T23:34:17.9453500Z 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-23T23:34:17.9453889Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9453895Z
2026-10-23T23:34:17.9454099Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T23:34:17.9454278Z โญโ[apps/server/src/provider/Drivers/CodexDriver.test.ts:466:14]
2026-10-23T23:34:17.9454336Z 465 โ
2026-10-23T23:34:17.9454469Z 466 โ for (const {} of ["direct", "wrapper"] as const) {
2026-10-23T23:34:17.9454562Z ยท โโ
2026-10-23T23:34:17.9454631Z 467 โ }
2026-10-23T23:34:17.9454693Z โฐโโโโ
2026-10-23T23:34:17.9454971Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T23:34:17.9454974Z
2026-10-23T23:34:17.9455226Z โ eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-23T23:34:17.9455346Z โญโ[apps/web/src/types.ts:22:3]
2026-10-23T23:34:17.9455431Z 21 โ EnvironmentThreadShell,
2026-10-23T23:34:17.9455515Z 22 โ ThreadRunSummary,
2026-10-23T23:34:17.9455613Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9455790Z ยท โฐโโ 'ThreadRunSummary' is imported here
2026-10-23T23:34:17.9455869Z 23 โ ThreadRuntimeSummary,
2026-10-23T23:34:17.9455937Z โฐโโโโ
2026-10-23T23:34:17.9456061Z help: Consider removing this import.
2026-10-23T23:34:17.9456064Z
2026-10-23T23:34:17.9456451Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9456758Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:60:5]
2026-10-23T23:34:17.9456879Z 55 โ
2026-10-23T23:34:17.9456961Z 56 โ useEffect(() => {
2026-10-23T23:34:17.9457050Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9457203Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9457288Z 57 โ scheduler.reset();
2026-10-23T23:34:17.9457413Z 58 โ highlightedRowIdsRef.current = new Set();
2026-10-23T23:34:17.9457525Z 59 โ visibleChunkIndexRef.current = 0;
2026-10-23T23:34:17.9457659Z 60 โ setVisibleRange({ firstRowIndex: 0, lastRowIndex: 80 });
2026-10-23T23:34:17.9457761Z ยท โโโโโโโโฌโโโโโโโ
2026-10-23T23:34:17.9457963Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9458102Z 61 โ setTokensPatchJson(createEmptyTokenPatch(resetKey));
2026-10-23T23:34:17.9458171Z โฐโโโโ
2026-10-23T23:34:17.9458874Z 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-23T23:34:17.9459251Z 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-23T23:34:17.9459254Z
2026-10-23T23:34:17.9459494Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9459710Z โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
2026-10-23T23:34:17.9459805Z 62 โ return () => scheduler.cancel();
2026-10-23T23:34:17.9459933Z 63 โ }, [enabled, resetKey, rows.length, scheduler]);
2026-10-23T23:34:17.9460091Z ยท โโโโฌโโโ โโโโโโฌโโโโโ
2026-10-23T23:34:17.9460332Z ยท โ โฐโโ Unnecessary dependency `rows.length`
2026-10-23T23:34:17.9460589Z ยท โฐโโ Unnecessary dependency `enabled`
2026-10-23T23:34:17.9460656Z 64 โ
2026-10-23T23:34:17.9460726Z โฐโโโโ
2026-10-23T23:34:17.9461075Z 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-23T23:34:17.9461439Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9461449Z
2026-10-23T23:34:17.9461788Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:17.9461973Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
2026-10-23T23:34:17.9462108Z 222 โ ? snippetTokens.map((line, lineIndex) => (
2026-10-23T23:34:17.9462228Z 223 โ <NativeText key={lineIndex}>
2026-10-23T23:34:17.9462352Z ยท โโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9462475Z 224 โ {lineIndex > 0 ? "\n" : ""}
2026-10-23T23:34:17.9462548Z โฐโโโโ
2026-10-23T23:34:17.9462729Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:17.9462733Z
2026-10-23T23:34:17.9463113Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:17.9463365Z โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
2026-10-23T23:34:17.9463460Z 226 โ <NativeText
2026-10-23T23:34:17.9463565Z 227 โ key={tokenIndex}
2026-10-23T23:34:17.9463686Z ยท โโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9463778Z 228 โ style={{
2026-10-23T23:34:17.9463843Z โฐโโโโ
2026-10-23T23:34:17.9464016Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:17.9464019Z
2026-10-23T23:34:17.9464317Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T23:34:17.9464519Z โญโ[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
2026-10-23T23:34:17.9464605Z 100 โ
2026-10-23T23:34:17.9464696Z 101 โ useEffect(() => {
2026-10-23T23:34:17.9464783Z ยท โโโโโฌโโโโ
2026-10-23T23:34:17.9464947Z ยท โฐโโ This is the containing effect
2026-10-23T23:34:17.9465078Z 102 โ if (!target || selectedLines.length === 0) {
2026-10-23T23:34:17.9465195Z 103 โ setHighlightedLinesById({});
2026-10-23T23:34:17.9465304Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T23:34:17.9465519Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-23T23:34:17.9465602Z 104 โ return;
2026-10-23T23:34:17.9465671Z โฐโโโโ
2026-10-23T23:34:17.9466382Z 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-23T23:34:17.9466764Z 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-23T23:34:17.9466767Z
2026-10-23T23:34:17.9467012Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T23:34:17.9467185Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
2026-10-23T23:34:17.9467296Z 453 โ showAuxiliaryPane("inspector");
2026-10-23T23:34:17.9467425Z 454 โ }, [environmentId, showAuxiliaryPane, threadId]);
2026-10-23T23:34:17.9467605Z ยท โโโโโโโฌโโโโโโ โโโโโฌโโโ
2026-10-23T23:34:17.9467963Z ยท โ โฐโโ Unnecessary dependency `threadId`
2026-10-23T23:34:17.9468238Z ยท โฐโโ Unnecessary dependency `environmentId`
2026-10-23T23:34:17.9468321Z 455 โ const {
2026-10-23T23:34:17.9468386Z โฐโโโโ
2026-10-23T23:34:17.9468746Z 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-23T23:34:17.9469119Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T23:34:17.9469122Z
2026-10-23T23:34:17.9469357Z โ react(static-components): Cannot create components during render
2026-10-23T23:34:17.9469535Z โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:725:20]
2026-10-23T23:34:17.9469615Z 492 โ // same check.
2026-10-23T23:34:17.9469774Z 493 โ const NativeReviewDiffView = resolveNativeReviewDiffView();
2026-10-23T23:34:17.9469919Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-23T23:34:17.9470143Z ยท โฐโโ The component is created during render here
2026-10-23T23:34:17.9470321Z 494 โ const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
2026-10-23T23:34:17.9470536Z 495 โ const showcasedReviewDrawRef = useRef<string | null>(null);
2026-10-23T23:34:17.9470715Z 496 โ const [isPullRefreshing, setIsPullRefreshing] = useState(false);
2026-10-23T23:34:17.9470832Z 497 โ const handlePullToRefresh = async () => {
2026-10-23T23:34:17.9470928Z 498 โ setIsPullRefreshing(true);
2026-10-23T23:34:17.9471044Z 499 โ await refreshSelectedSection();
2026-10-23T23:34:17.9471144Z 500 โ setIsPullRefreshing(false);
2026-10-23T23:34:17.9471216Z 501 โ };
2026-10-23T23:34:17.9471391Z 502 โ const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
2026-10-23T23:34:17.9471570Z 503 โ const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
2026-10-23T23:34:17.9471706Z 504 โ const fileVisibility = useReviewFileVisibility({
2026-10-23T23:34:17.9471819Z 505 โ threadKey: reviewCache.threadKey,
2026-10-23T23:34:17.9471928Z 506 โ sectionId: selectedSection?.id ?? null,
2026-10-23T23:34:17.9472012Z 507 โ files: reviewFiles,
2026-10-23T23:34:17.9472141Z 508 โ cachedExpandedFileIds: selectedSection?.id
2026-10-23T23:34:17.9472304Z 509 โ ? reviewCache.expandedFileIdsBySection[selectedSection.id]
2026-10-23T23:34:17.9472379Z 510 โ : undefined,
2026-10-23T23:34:17.9472502Z 511 โ cachedViewedFileIds: selectedSection?.id
2026-10-23T23:34:17.9472656Z 512 โ ? reviewCache.viewedFileIdsBySection[selectedSection.id]
2026-10-23T23:34:17.9472733Z 513 โ : undefined,
2026-10-23T23:34:17.9472795Z 514 โ });
2026-10-23T23:34:17.9473029Z 515 โ const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
2026-10-23T23:34:17.9473184Z 516 โ const commentSelection = useReviewCommentSelectionController({
2026-10-23T23:34:17.9473262Z 517 โ environmentId,
2026-10-23T23:34:17.9473336Z 518 โ threadId,
2026-10-23T23:34:17.9473419Z 519 โ selectedSection,
2026-10-23T23:34:17.9473510Z 520 โ nativeReviewDiffData,
2026-10-23T23:34:17.9473573Z 521 โ });
2026-10-23T23:34:17.9473705Z 522 โ const nativeBridge = useNativeReviewDiffBridge({
2026-10-23T23:34:17.9473963Z 523 โ threadKey: reviewCache.threadKey,
2026-10-23T23:34:17.9474134Z 524 โ sectionId: selectedSection?.id ?? null,
2026-10-23T23:34:17.9474224Z 525 โ diff: selectedSection?.diff,
2026-10-23T23:34:17.9474332Z 526 โ data: nativeReviewDiffData,
2026-10-23T23:34:17.9474418Z 527 โ collapsedFileIds,
2026-10-23T23:34:17.9474498Z 528 โ viewedFileIds,
2026-10-23T23:34:17.9474627Z 529 โ selectedRowIds: commentSelection.selectedRowIds,
2026-10-23T23:34:17.9474750Z 530 โ canHighlight: parsedDiff.kind === "files",
2026-10-23T23:34:17.9474821Z 531 โ });
2026-10-23T23:34:17.9474919Z 532 โ const showcaseReviewKey =
2026-10-23T23:34:17.9475080Z 533 โ SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
2026-10-23T23:34:17.9475332Z 534 โ ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
2026-10-23T23:34:17.9475412Z 535 โ : null;
2026-10-23T23:34:17.9475623Z 536 โ const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
2026-10-23T23:34:17.9475719Z 537 โ nativeBridge.onDebug(event);
2026-10-23T23:34:17.9475795Z 538 โ if (
2026-10-23T23:34:17.9475896Z 539 โ showcaseReviewKey === null ||
2026-10-23T23:34:17.9476052Z 540 โ showcasedReviewDrawRef.current === showcaseReviewKey ||
2026-10-23T23:34:17.9476181Z 541 โ !isNativeReviewDiffDrawEvent(event.nativeEvent)
2026-10-23T23:34:17.9476262Z 542 โ ) {
2026-10-23T23:34:17.9476339Z 543 โ return;
2026-10-23T23:34:17.9476411Z 544 โ }
2026-10-23T23:34:17.9476541Z 545 โ showcasedReviewDrawRef.current = showcaseReviewKey;
2026-10-23T23:34:17.9476741Z 546 โ reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
2026-10-23T23:34:17.9476810Z 547 โ };
2026-10-23T23:34:17.9476871Z 548 โ
2026-10-23T23:34:17.9477029Z 549 โ const handleSelectFile = async (fileId: string | null) => {
2026-10-23T23:34:17.9477133Z 550 โ loadVisibleFile(fileId, true);
2026-10-23T23:34:17.9477252Z 551 โ commentSelection.clearSelection();
2026-10-23T23:34:17.9477398Z 552 โ if (fileId !== null && collapsedFileIds.includes(fileId)) {
2026-10-23T23:34:17.9477498Z 553 โ toggleExpandedFile(fileId);
2026-10-23T23:34:17.9477567Z 554 โ }
2026-10-23T23:34:17.9477702Z 555 โ const nativeView = nativeReviewDiffViewRef.current;
2026-10-23T23:34:17.9477786Z 556 โ if (!nativeView) return;
2026-10-23T23:34:17.9477901Z 557 โ const result = await settlePromise(() =>
2026-10-23T23:34:17.9478113Z 558 โ fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
2026-10-23T23:34:17.9478197Z 559 โ );
2026-10-23T23:34:17.9478307Z 560 โ if (AsyncResult.isFailure(result)) {
2026-10-23T23:34:17.9478532Z 561 โ console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
2026-10-23T23:34:17.9478606Z 562 โ }
2026-10-23T23:34:17.9478678Z 563 โ };
2026-10-23T23:34:17.9478775Z 564 โ const handleVisibleFileChange = (
2026-10-23T23:34:17.9478941Z 565 โ event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
2026-10-23T23:34:17.9479017Z 566 โ ) => {
2026-10-23T23:34:17.9479161Z 567 โ loadVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-23T23:34:17.9479363Z 568 โ reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-23T23:34:17.9479442Z 569 โ };
2026-10-23T23:34:17.9479542Z 570 โ const renderInspector = () => (
2026-10-23T23:34:17.9479633Z 571 โ <ReviewFileNavigator
2026-10-23T23:34:17.9479729Z 572 โ ref={reviewFileNavigatorRef}
2026-10-23T23:34:17.9479937Z 573 โ files={nativeReviewDiffData.files}
2026-10-23T23:34:17.9480103Z 574 โ headerInset={insets.top}
2026-10-23T23:34:17.9480222Z 575 โ sectionId={selectedSection?.id ?? null}
2026-10-23T23:34:17.9480384Z 576 โ onSelectFile={(fileId) => void handleSelectFile(fileId)}
2026-10-23T23:34:17.9480459Z 577 โ />
2026-10-23T23:34:17.9480528Z 578 โ );
2026-10-23T23:34:17.9480598Z 579 โ
2026-10-23T23:34:17.9480829Z 580 โ const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
2026-10-23T23:34:17.9480944Z 581 โ const { fileId } = event.nativeEvent;
2026-10-23T23:34:17.9481025Z 582 โ if (fileId) {
2026-10-23T23:34:17.9481121Z 583 โ loadVisibleFile(fileId, true);
2026-10-23T23:34:17.9481218Z 584 โ toggleExpandedFile(fileId);
2026-10-23T23:34:17.9481288Z 585 โ }
2026-10-23T23:34:17.9481361Z 586 โ };
2026-10-23T23:34:17.9481422Z 587 โ
2026-10-23T23:34:17.9481534Z 588 โ const handleNativeToggleViewedFile = (
2026-10-23T23:34:17.9481678Z 589 โ event: NativeSyntheticEvent<{ readonly fileId?: string }>,
2026-10-23T23:34:17.9481751Z 590 โ ) => {
2026-10-23T23:34:17.9481852Z 591 โ const { fileId } = event.nativeEvent;
2026-10-23T23:34:17.9481930Z 592 โ if (fileId) {
2026-10-23T23:34:17.9482026Z 593 โ toggleViewedFile(fileId);
2026-10-23T23:34:17.9482097Z 594 โ }
2026-10-23T23:34:17.9482160Z 595 โ };
2026-10-23T23:34:17.9482230Z 596 โ
2026-10-23T23:34:17.9482324Z 597 โ const parsedDiffNotice =
2026-10-23T23:34:17.9482510Z 598 โ parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
2026-10-23T23:34:17.9482655Z 599 โ const hasCachedSelectedDiff = selectedSection?.diff != null;
2026-10-23T23:34:17.9482853Z 600 โ const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
2026-10-23T23:34:17.9483005Z 601 โ const sectionMenu = buildReviewSectionMenu(reviewSections);
2026-10-23T23:34:17.9483204Z 602 โ const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
2026-10-23T23:34:17.9483333Z 603 โ hasEnvironmentPresentation: environment.isReady,
2026-10-23T23:34:17.9483462Z 604 โ isEnvironmentConnected: isEnvironmentReady,
2026-10-23T23:34:17.9483552Z 605 โ hasCachedSelectedDiff,
2026-10-23T23:34:17.9483635Z 606 โ hasAnyCachedDiff,
2026-10-23T23:34:17.9483703Z 607 โ });
2026-10-23T23:34:17.9483815Z 608 โ const handleRetryEnvironment = () => {
2026-10-23T23:34:17.9483929Z 609 โ void retryEnvironment(environmentId);
2026-10-23T23:34:17.9483993Z 610 โ };
2026-10-23T23:34:17.9484108Z 611 โ const handleReturnToThread = () => {
2026-10-23T23:34:17.9484223Z 612 โ if (navigation.canGoBack()) {
2026-10-23T23:34:17.9484320Z 613 โ navigation.goBack();
2026-10-23T23:34:17.9484395Z 614 โ return;
2026-10-23T23:34:17.9484469Z 615 โ }
2026-10-23T23:34:17.9484574Z 616 โ navigation.navigate("Thread", {
2026-10-23T23:34:17.9484690Z 617 โ environmentId: String(environmentId),
2026-10-23T23:34:17.9484782Z 618 โ threadId: String(threadId),
2026-10-23T23:34:17.9484864Z 619 โ });
2026-10-23T23:34:17.9484942Z 620 โ };
2026-10-23T23:34:17.9485051Z 621 โ const androidHeaderSubtitle = [
2026-10-23T23:34:17.9485138Z 622 โ selectedSection?.title,
2026-10-23T23:34:17.9485240Z 623 โ headerDiffSummary.additions,
2026-10-23T23:34:17.9485343Z 624 โ headerDiffSummary.deletions,
2026-10-23T23:34:17.9485413Z 625 โ ]
2026-10-23T23:34:17.9485536Z 626 โ .filter((part): part is string => Boolean(part))
2026-10-23T23:34:17.9485719Z 627 โ .join(" ยท ");
2026-10-23T23:34:17.9485849Z 628 โ
2026-10-23T23:34:17.9485943Z 629 โ const showChangedFilesPane =
2026-10-23T23:34:17.9486042Z 630 โ !showConnectionNotice &&
2026-10-23T23:34:17.9486143Z 631 โ selectedSection !== null &&
2026-10-23T23:34:17.9486240Z 632 โ parsedDiff.kind === "files" &&
2026-10-23T23:34:17.9486331Z 633 โ NativeReviewDiffView !== null;
2026-10-23T23:34:17.9486542Z 634 โ useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
2026-10-23T23:34:17.9486755Z 635 โ const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
2026-10-23T23:34:17.9486825Z 636 โ
2026-10-23T23:34:17.9486915Z 637 โ const listHeader = (() => {
2026-10-23T23:34:17.9487022Z 638 โ const children: ReactElement[] = [];
2026-10-23T23:34:17.9487091Z 639 โ
2026-10-23T23:34:17.9487184Z 640 โ if (error) {
2026-10-23T23:34:17.9487265Z 641 โ children.push(
2026-10-23T23:34:17.9487355Z 642 โ <View
2026-10-23T23:34:17.9487449Z 643 โ key="review-error"
2026-10-23T23:34:17.9487537Z 644 โ className={cn(
2026-10-23T23:34:17.9487635Z 645 โ "bg-card px-4 py-3",
2026-10-23T23:34:17.9487827Z 646 โ Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
2026-10-23T23:34:17.9487906Z 647 โ )}
2026-10-23T23:34:17.9487974Z 648 โ >
2026-10-23T23:34:17.9488174Z 649 โ <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
2026-10-23T23:34:17.9488368Z 650 โ <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
2026-10-23T23:34:17.9488446Z 651 โ </View>,
2026-10-23T23:34:17.9488514Z 652 โ );
2026-10-23T23:34:17.9488595Z 653 โ }
2026-10-23T23:34:17.9488663Z 654 โ
2026-10-23T23:34:17.9488754Z 655 โ if (parsedDiffNotice) {
2026-10-23T23:34:17.9488943Z 656 โ children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
2026-10-23T23:34:17.9489016Z 657 โ }
2026-10-23T23:34:17.9489083Z 658 โ
2026-10-23T23:34:17.9489182Z 659 โ if (children.length === 0) {
2026-10-23T23:34:17.9489256Z 660 โ return null;
2026-10-23T23:34:17.9489321Z 661 โ }
2026-10-23T23:34:17.9489384Z 662 โ
2026-10-23T23:34:17.9489471Z 663 โ return <>{children}</>;
2026-10-23T23:34:17.9489535Z 664 โ })();
2026-10-23T23:34:17.9489626Z 665 โ const headerSubtitle = [
2026-10-23T23:34:17.9489728Z 666 โ headerDiffSummary.additions,
2026-10-23T23:34:17.9489819Z 667 โ headerDiffSummary.deletions,
2026-10-23T23:34:17.9489929Z 668 โ pendingReviewCommentCount > 0
2026-10-23T23:34:17.9490151Z 669 โ ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
2026-10-23T23:34:17.9490233Z 670 โ : null,
2026-10-23T23:34:17.9490294Z 671 โ ]
2026-10-23T23:34:17.9490408Z 672 โ .filter(Boolean)
2026-10-23T23:34:17.9490503Z 673 โ .join(" ยท ");
2026-10-23T23:34:17.9490666Z 674 โ const headerTitleText = selectedSection?.title ?? "Review changes";
2026-10-23T23:34:17.9490729Z 675 โ
2026-10-23T23:34:17.9490807Z 676 โ return (
2026-10-23T23:34:17.9490879Z 677 โ <>
2026-10-23T23:34:17.9490964Z 678 โ <ReviewHeader
2026-10-23T23:34:17.9491060Z 679 โ environmentId={environmentId}
2026-10-23T23:34:17.9491153Z 680 โ threadId={threadId}
2026-10-23T23:34:17.9491249Z 681 โ title={headerTitleText}
2026-10-23T23:34:17.9491351Z 682 โ subtitle={headerSubtitle}
2026-10-23T23:34:17.9491558Z 683 โ androidSubtitle={androidHeaderSubtitle}
2026-10-23T23:34:17.9491695Z 684 โ iconColor={headerIcon}
2026-10-23T23:34:17.9491809Z 685 โ selectedThreadCwd={selectedThreadCwd}
2026-10-23T23:34:17.9491907Z 686 โ sectionMenu={sectionMenu}
2026-10-23T23:34:17.9492010Z 687 โ selectedSection={selectedSection}
2026-10-23T23:34:17.9492134Z 688 โ showSectionToolbar={showSectionToolbar}
2026-10-23T23:34:17.9492270Z 689 โ showChangedFilesToggle={showChangedFilesToggle}
2026-10-23T23:34:17.9492376Z 690 โ onRefresh={handlePullToRefresh}
2026-10-23T23:34:17.9492476Z 691 โ onSelectSection={selectSection}
2026-10-23T23:34:17.9492607Z 692 โ onReturnToThread={handleReturnToThread}
2026-10-23T23:34:17.9492688Z 693 โ />
2026-10-23T23:34:17.9492754Z 694 โ
2026-10-23T23:34:17.9492846Z 695 โ <ScreenContent>
2026-10-23T23:34:17.9493007Z 696 โ <View className="flex-1 bg-sheet android:bg-sheet-solid">
2026-10-23T23:34:17.9493108Z 697 โ {showConnectionNotice ? (
2026-10-23T23:34:17.9493276Z 698 โ <View className="flex-1" style={{ paddingTop: topContentInset }}>
2026-10-23T23:34:17.9493386Z 699 โ <EnvironmentConnectionNotice
2026-10-23T23:34:17.9493594Z 700 โ environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
2026-10-23T23:34:17.9493679Z 701 โ connection={
2026-10-23T23:34:17.9493802Z 702 โ environment.presentation?.connection ?? {
2026-10-23T23:34:17.9493906Z 703 โ phase: "available",
2026-10-23T23:34:17.9493998Z 704 โ error: null,
2026-10-23T23:34:17.9494089Z 705 โ traceId: null,
2026-10-23T23:34:17.9494163Z 706 โ }
2026-10-23T23:34:17.9494252Z 707 โ }
2026-10-23T23:34:17.9494350Z 708 โ resourceName="review"
2026-10-23T23:34:17.9494471Z 709 โ onRetry={handleRetryEnvironment}
2026-10-23T23:34:17.9494540Z 710 โ />
2026-10-23T23:34:17.9494622Z 711 โ </View>
2026-10-23T23:34:17.9494811Z 712 โ ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
2026-10-23T23:34:17.9494886Z 713 โ <View
2026-10-23T23:34:17.9494972Z 714 โ className="flex-1"
2026-10-23T23:34:17.9495050Z 715 โ style={{
2026-10-23T23:34:17.9495191Z 716 โ backgroundColor: nativeBridge.theme.background,
2026-10-23T23:34:17.9495269Z 717 โ }}
2026-10-23T23:34:17.9495335Z 718 โ >
2026-10-23T23:34:17.9495412Z 719 โ <View
2026-10-23T23:34:17.9495524Z 720 โ className="min-w-0 flex-1"
2026-10-23T23:34:17.9495697Z 721 โ style={listHeader ? { paddingTop: topContentInset } : undefined}
2026-10-23T23:34:17.9495768Z 722 โ >
2026-10-23T23:34:17.9495856Z 723 โ {listHeader}
2026-10-23T23:34:17.9496002Z 724 โ <View className="min-w-0 flex-1" collapsable={false}>
2026-10-23T23:34:17.9496102Z 725 โ <NativeReviewDiffView
2026-10-23T23:34:17.9496233Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9496442Z ยท โฐโโ This component is created during render
2026-10-23T23:34:17.9496543Z 726 โ collapsable={false}
2026-10-23T23:34:17.9496605Z โฐโโโโ
2026-10-23T23:34:17.9496987Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-23T23:34:17.9497421Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-23T23:34:17.9497424Z
2026-10-23T23:34:17.9497735Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9497933Z โญโ[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:413:7]
2026-10-23T23:34:17.9497996Z 412 โ
2026-10-23T23:34:17.9498146Z 413 โ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-23T23:34:17.9498235Z ยท โโโฌโโ
2026-10-23T23:34:17.9498388Z ยท โฐโโ 'layer' is declared here
2026-10-23T23:34:17.9498448Z โฐโโโโ
2026-10-23T23:34:17.9498587Z help: Consider removing this declaration.
2026-10-23T23:34:17.9498593Z
2026-10-23T23:34:17.9499138Z โ t3code(no-inline-schema-compile): Hoist Schema.encodeUnknownSync(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-23T23:34:17.9499305Z โญโ[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-23T23:34:17.9499467Z 180 โ it("sends a message without the records the wire cannot carry", () => {
2026-10-23T23:34:17.9499678Z 181 โ const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-23T23:34:17.9499808Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9499893Z 182 โ version: 1,
2026-10-23T23:34:17.9499965Z โฐโโโโ
2026-10-23T23:34:17.9499968Z
2026-10-23T23:34:17.9500213Z โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-23T23:34:17.9500439Z โญโ[apps/web/src/contextMenuFallback.test.ts:38:9]
2026-10-23T23:34:17.9500527Z 37 โ get isConnected() {
2026-10-23T23:34:17.9500643Z 38 โ let current: FakeElement | null = this;
2026-10-23T23:34:17.9500728Z ยท โโโโโโโ
2026-10-23T23:34:17.9500821Z 39 โ while (current?.parent) {
2026-10-23T23:34:17.9500890Z โฐโโโโ
2026-10-23T23:34:17.9501212Z help: Assigning a variable to this instead of properly using arrow lambdas may be a symptom of pre-ES2015 practices or not managing scope well.
2026-10-23T23:34:17.9501215Z
2026-10-23T23:34:17.9501438Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T23:34:17.9501701Z โญโ[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-23T23:34:17.9501813Z 35 โ <T3SourceTextRunNativeComponent
2026-10-23T23:34:17.9501893Z 36 โ key={index}
2026-10-23T23:34:17.9501981Z ยท โโโโโโโโโโโ
2026-10-23T23:34:17.9502074Z 37 โ style={flattenedStyle}
2026-10-23T23:34:17.9502142Z โฐโโโโ
2026-10-23T23:34:17.9502323Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T23:34:17.9502327Z
2026-10-23T23:34:17.9502760Z โ 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-23T23:34:17.9502899Z โญโ[packages/contracts/src/auth.test.ts:17:12]
2026-10-23T23:34:17.9503207Z 16 โ it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-23T23:34:17.9503475Z 17 โ expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-23T23:34:17.9503591Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9503674Z 18 โ "review:write",
2026-10-23T23:34:17.9503740Z โฐโโโโ
2026-10-23T23:34:17.9503743Z
2026-10-23T23:34:17.9504168Z โ 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-23T23:34:17.9504304Z โญโ[packages/contracts/src/auth.test.ts:20:18]
2026-10-23T23:34:17.9504368Z 19 โ ]);
2026-10-23T23:34:17.9504566Z 20 โ expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-23T23:34:17.9504694Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9504860Z 21 โ expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-23T23:34:17.9504922Z โฐโโโโ
2026-10-23T23:34:17.9504926Z
2026-10-23T23:34:17.9505351Z โ 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-23T23:34:17.9505484Z โญโ[packages/contracts/src/auth.test.ts:58:21]
2026-10-23T23:34:17.9505689Z 57 โ it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-23T23:34:17.9505831Z 58 โ const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-23T23:34:17.9505963Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9506050Z 59 โ authenticated: true,
2026-10-23T23:34:17.9506116Z โฐโโโโ
2026-10-23T23:34:17.9506119Z
2026-10-23T23:34:17.9506334Z โ unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-23T23:34:17.9506482Z โญโ[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-23T23:34:17.9506633Z 193 โ const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-23T23:34:17.9506749Z 194 โ const codes = new Array<number>(count);
2026-10-23T23:34:17.9506877Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9507010Z 195 โ for (let index = 0; index < count; index += 1) {
2026-10-23T23:34:17.9507082Z โฐโโโโ
2026-10-23T23:34:17.9507598Z help: It's not clear whether the argument is meant to be the length of the array or the only element. If the argument is the array's length, consider using `Array.from({ length: n })`. If the argument is the only element, use `[element]`.
2026-10-23T23:34:17.9507602Z
2026-10-23T23:34:17.9507955Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-23T23:34:17.9508153Z โญโ[packages/contracts/src/rpc.ts:297:8]
2026-10-23T23:34:17.9508240Z 296 โ } from "./device.ts";
2026-10-23T23:34:17.9508353Z 297 โ import {} from "./previewAutomation.ts";
2026-10-23T23:34:17.9508443Z ยท โโ
2026-10-23T23:34:17.9508509Z 298 โ import {
2026-10-23T23:34:17.9508579Z โฐโโโโ
2026-10-23T23:34:17.9508681Z help: Remove empty braces
2026-10-23T23:34:17.9508684Z
2026-10-23T23:34:17.9508968Z โ unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-23T23:34:17.9509126Z โญโ[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-23T23:34:17.9509278Z 984 โ const changedBeforeDecline = draftChangedSinceSend();
2026-10-23T23:34:17.9509568Z 985 โ โญโโถ const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-23T23:34:17.9509716Z 986 โ โ (approval) => approval.requestId,
2026-10-23T23:34:17.9509873Z 987 โ โฐโโถ );
2026-10-23T23:34:17.9510041Z 988 โ const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-23T23:34:17.9510112Z โฐโโโโ
2026-10-23T23:34:17.9510209Z help: Switch to `Set`
2026-10-23T23:34:17.9510212Z
2026-10-23T23:34:17.9510457Z โ react(purity): Cannot call impure function during render
2026-10-23T23:34:17.9510624Z โญโ[apps/web/src/components/CommandPalette.tsx:1996:20]
2026-10-23T23:34:17.9510773Z 1995 โ title: inferProjectTitleFromPath(destinationPath),
2026-10-23T23:34:17.9510891Z 1996 โ createdAt: new Date().toISOString(),
2026-10-23T23:34:17.9510999Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9511175Z ยท โฐโโ Cannot call impure function
2026-10-23T23:34:17.9511306Z 1997 โ remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-23T23:34:17.9511377Z โฐโโโโ
2026-10-23T23:34:17.9511702Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:17.9512057Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:17.9512060Z
2026-10-23T23:34:17.9512405Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T23:34:17.9512611Z โญโ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:473:19]
2026-10-23T23:34:17.9512687Z 472 โ onFilters,
2026-10-23T23:34:17.9512767Z 473 โ authorOptions = [],
2026-10-23T23:34:17.9512864Z ยท โโ
2026-10-23T23:34:17.9512953Z 474 โ labelOptions = [],
2026-10-23T23:34:17.9513021Z โฐโโโโ
2026-10-23T23:34:17.9513389Z help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-23T23:34:17.9513393Z
2026-10-23T23:34:17.9513723Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T23:34:17.9513998Z โญโ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:474:18]
2026-10-23T23:34:17.9514125Z 473 โ authorOptions = [],
2026-10-23T23:34:17.9514237Z 474 โ labelOptions = [],
2026-10-23T23:34:17.9514415Z ยท โโ
2026-10-23T23:34:17.9514546Z 475 โ optionScope,
2026-10-23T23:34:17.9514627Z โฐโโโโ
2026-10-23T23:34:17.9515008Z help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-23T23:34:17.9515023Z
2026-10-23T23:34:17.9515601Z โ t3code(no-inline-schema-compile): Hoist Schema.encodeUnknownSync(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-23T23:34:17.9515849Z โญโ[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-23T23:34:17.9515980Z 38 โ JSON.stringify(
2026-10-23T23:34:17.9516196Z 39 โ Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-23T23:34:17.9516362Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9516482Z 40 โ { name: "a" },
2026-10-23T23:34:17.9516585Z โฐโโโโ
2026-10-23T23:34:17.9516590Z
2026-10-23T23:34:17.9516942Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:17.9517262Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-23T23:34:17.9517412Z 554 โ assert.deepStrictEqual(
2026-10-23T23:34:17.9517711Z 555 โ (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-23T23:34:17.9517947Z ยท โฌ
2026-10-23T23:34:17.9518254Z ยท โฐโโ '_' is declared here
2026-10-23T23:34:17.9518376Z 556 โ [
2026-10-23T23:34:17.9518474Z โฐโโโโ
2026-10-23T23:34:17.9518677Z help: Consider removing this parameter.
2026-10-23T23:34:17.9518682Z
2026-10-23T23:34:17.9519023Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:17.9519368Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-23T23:34:17.9519532Z 1154 โ assert.deepStrictEqual(
2026-10-23T23:34:17.9519854Z 1155 โ (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-23T23:34:17.9520101Z ยท โฌ
2026-10-23T23:34:17.9520491Z ยท โฐโโ '_' is declared here
2026-10-23T23:34:17.9520620Z 1156 โ [
2026-10-23T23:34:17.9520725Z โฐโโโโ
2026-10-23T23:34:17.9520907Z help: Consider removing this parameter.
2026-10-23T23:34:17.9520917Z
2026-10-23T23:34:17.9521304Z โ eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-23T23:34:17.9521628Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-23T23:34:17.9521810Z 24 โ import * as Schema from "effect/Schema";
2026-10-23T23:34:17.9522041Z 25 โ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-23T23:34:17.9522193Z ยท โโโโโโฌโโโโโ
2026-10-23T23:34:17.9522750Z ยท โฐโโ 'HostProcess' is imported here
2026-10-23T23:34:17.9522983Z 26 โ
2026-10-23T23:34:17.9523107Z โฐโโโโ
2026-10-23T23:34:17.9523285Z help: Consider removing this import.
2026-10-23T23:34:17.9523290Z
2026-10-23T23:34:17.9523856Z โ eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9524187Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-23T23:34:17.9524334Z 123 โ const path = yield* Path.Path;
2026-10-23T23:34:17.9524545Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T23:34:17.9524699Z ยท โโโโโโโฌโโโโโ
2026-10-23T23:34:17.9524978Z ยท โฐโโ 'serverConfig' is declared here
2026-10-23T23:34:17.9525254Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T23:34:17.9525344Z โฐโโโโ
2026-10-23T23:34:17.9525552Z help: Consider removing this declaration.
2026-10-23T23:34:17.9525556Z
2026-10-23T23:34:17.9526089Z โ eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9526408Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-23T23:34:17.9526625Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T23:34:17.9526892Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T23:34:17.9527050Z ยท โโโโโโโโฌโโโโโโ
2026-10-23T23:34:17.9527343Z ยท โฐโโ 'serverSettings' is declared here
2026-10-23T23:34:17.9527620Z 126 โ const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-23T23:34:17.9527731Z โฐโโโโ
2026-10-23T23:34:17.9527938Z help: Consider removing this declaration.
2026-10-23T23:34:17.9527943Z
2026-10-23T23:34:17.9528312Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T23:34:17.9528530Z โญโ[packages/shared/src/qrCode.ts:458:44]
2026-10-23T23:34:17.9528656Z 457 โ ): Array<byte> {
2026-10-23T23:34:17.9528869Z 458 โ let result: Array<byte> = divisor.map((_) => 0);
2026-10-23T23:34:17.9529074Z ยท โฌ
2026-10-23T23:34:17.9529368Z ยท โฐโโ '_' is declared here
2026-10-23T23:34:17.9529522Z 459 โ for (const b of data) {
2026-10-23T23:34:17.9529630Z โฐโโโโ
2026-10-23T23:34:17.9529831Z help: Consider removing this parameter.
2026-10-23T23:34:17.9529836Z
2026-10-23T23:34:17.9530163Z โ react(purity): Cannot call impure function during render
2026-10-23T23:34:17.9530498Z โญโ[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-23T23:34:17.9530726Z 177 โ if (snoozeClockState.shell !== activeThreadShell) {
2026-10-23T23:34:17.9531058Z 178 โ setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-23T23:34:17.9531309Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9531654Z ยท โฐโโ Cannot call impure function
2026-10-23T23:34:17.9531938Z 179 โ }
2026-10-23T23:34:17.9532125Z โฐโโโโ
2026-10-23T23:34:17.9532695Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T23:34:17.9533278Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T23:34:17.9533284Z
2026-10-23T23:34:17.9533790Z โ unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-23T23:34:17.9534098Z โญโ[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-23T23:34:17.9534412Z 11 โ addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-23T23:34:17.9534574Z 12 โ this.onmessage = listener;
2026-10-23T23:34:17.9534733Z ยท โโโโโโโโโ
2026-10-23T23:34:17.9534852Z 13 โ }
2026-10-23T23:34:17.9534953Z โฐโโโโ
2026-10-23T23:34:17.9535550Z help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-23T23:34:17.9535554Z
2026-10-23T23:34:17.9535929Z โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-23T23:34:17.9536186Z โญโ[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-23T23:34:17.9536312Z 15 โ constructor() {
2026-10-23T23:34:17.9536427Z 16 โ source = this;
2026-10-23T23:34:17.9536549Z ยท โโโโโโ
2026-10-23T23:34:17.9536649Z 17 โ }
2026-10-23T23:34:17.9536752Z โฐโโโโ
2026-10-23T23:34:17.9537269Z help: Assigning a variable to this instead of properly using arrow lambdas may be a symptom of pre-ES2015 practices or not managing scope well.
2026-10-23T23:34:17.9537280Z
2026-10-23T23:34:17.9537772Z โ eslint(no-unused-vars): Variable 'claudeCaps' is declared but never used. Unused variables should start with a '_'.
2026-10-23T23:34:17.9537970Z โญโ[packages/shared/src/model.test.ts:36:7]
2026-10-23T23:34:17.9538071Z 35 โ
2026-10-23T23:34:17.9538312Z 36 โ const claudeCaps: ModelCapabilities = createModelCapabilities({
2026-10-23T23:34:17.9538439Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9538692Z ยท โฐโโ 'claudeCaps' is declared here
2026-10-23T23:34:17.9538818Z 37 โ optionDescriptors: [
2026-10-23T23:34:17.9538919Z โฐโโโโ
2026-10-23T23:34:17.9539112Z help: Consider removing this declaration.
2026-10-23T23:34:17.9539121Z
2026-10-23T23:34:17.9539513Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T23:34:17.9539775Z โญโ[packages/shared/src/composerContextLegacySend.ts:19:45]
2026-10-23T23:34:17.9540006Z 18 โ const occurrences = collectComposerContextReferences(text);
2026-10-23T23:34:17.9540200Z 19 โ for (const occurrence of [...occurrences].reverse()) {
2026-10-23T23:34:17.9540470Z ยท โโโโโโโ
2026-10-23T23:34:17.9540678Z 20 โ const record = recordsById.get(occurrence.contextId);
2026-10-23T23:34:17.9540774Z โฐโโโโ
2026-10-23T23:34:17.9541250Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T23:34:17.9541263Z
2026-10-23T23:34:17.9542571Z โ 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-23T23:34:17.9542908Z โญโ[packages/shared/src/atomicWrite.test.ts:139:5]
2026-10-23T23:34:17.9543052Z 138 โ Effect.gen(function* () {
2026-10-23T23:34:17.9543607Z 139 โ โญโโถ while (fiber.pollUnsafe() === undefined) {
2026-10-23T23:34:17.9544013Z 140 โ โ yield* TestClock.adjust("100 millis");
2026-10-23T23:34:17.9544614Z 141 โ โ // oxlint-disable-next-line t3code/no-real-time-wait-in-tests -- a macrotask boundary so the real stat I/O can finish; time moves only via TestClock
2026-10-23T23:34:17.9544987Z 142 โ โ yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
2026-10-23T23:34:17.9545298Z 143 โ โฐโโถ }
2026-10-23T23:34:17.9545463Z 144 โ return yield* Fiber.join(fiber);
2026-10-23T23:34:17.9545569Z โฐโโโโ
2026-10-23T23:34:17.9545574Z
2026-10-23T23:34:17.9546048Z โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T23:34:17.9546331Z โญโ[packages/shared/src/serverSettings.ts:346:9]
2026-10-23T23:34:17.9546524Z 345 โ const entry: ProjectSettingsOverrides = {
2026-10-23T23:34:17.9546812Z 346 โ ...(entries.get(projectId) ?? currentEntries[projectId] ?? {}),
2026-10-23T23:34:17.9547104Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9547289Z 347 โ };
2026-10-23T23:34:17.9547395Z โฐโโโโ
2026-10-23T23:34:17.9547941Z 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-23T23:34:17.9547947Z
2026-10-23T23:34:17.9548359Z โ oxc(no-accumulating-spread): Do not spread accumulators in Array.prototype.reduce()
2026-10-23T23:34:17.9548580Z โญโ[packages/shared/src/serverSettings.ts:448:24]
2026-10-23T23:34:17.9548703Z 447 โ const favorites =
2026-10-23T23:34:17.9548920Z 448 โ setModelFavorites?.reduce((current, change) => {
2026-10-23T23:34:17.9549107Z ยท โโโโฌโโ
2026-10-23T23:34:17.9549332Z ยท โฐโโ For this reduce
2026-10-23T23:34:17.9549518Z 449 โ const exists = current.some(
2026-10-23T23:34:17.9549863Z 450 โ (favorite) => favorite.provider === change.provider && favorite.model === change.model,
2026-10-23T23:34:17.9549971Z 451 โ );
2026-10-23T23:34:17.9550103Z 452 โ return change.favorite
2026-10-23T23:34:17.9550220Z 453 โ ? exists
2026-10-23T23:34:17.9550457Z 454 โ ? current
2026-10-23T23:34:17.9550704Z 455 โ : [...current, { provider: change.provider, model: change.model }]
2026-10-23T23:34:17.9550892Z ยท โโโโโโฌโโโโ
2026-10-23T23:34:17.9551141Z ยท โฐโโ From this spread
2026-10-23T23:34:17.9551263Z 456 โ : current.filter(
2026-10-23T23:34:17.9551362Z โฐโโโโ
2026-10-23T23:34:17.9551734Z help: Consider using `Object.assign()` or `Array.prototype.push()` to mutate the accumulator instead.
2026-10-23T23:34:17.9552265Z note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-23T23:34:17.9552338Z
2026-10-23T23:34:17.9552739Z โ oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-23T23:34:17.9552959Z โญโ[packages/shared/src/serverSettings.ts:466:3]
2026-10-23T23:34:17.9553073Z 464 โ null;
2026-10-23T23:34:17.9553287Z 465 โ let nextModelPreferences = initialModelPreferences;
2026-10-23T23:34:17.9553443Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-23T23:34:17.9553720Z ยท โฐโโ From this accumulator
2026-10-23T23:34:17.9553925Z 466 โ for (const change of setModelsHidden ?? []) {
2026-10-23T23:34:17.9554049Z ยท โโฌโ
2026-10-23T23:34:17.9554237Z ยท โฐโโ For this loop
2026-10-23T23:34:17.9554496Z 467 โ const preferences = nextModelPreferences?.[change.provider] ?? {
2026-10-23T23:34:17.9554659Z 468 โ hiddenModels: [],
2026-10-23T23:34:17.9554806Z 469 โ modelOrder: [],
2026-10-23T23:34:17.9554904Z 470 โ };
2026-10-23T23:34:17.9555233Z 471 โ const hiddenModels = preferences.hiddenModels.filter((model) => model !== change.model);
2026-10-23T23:34:17.9555458Z 472 โ if (change.hidden) hiddenModels.push(change.model);
2026-10-23T23:34:17.9555617Z 473 โ nextModelPreferences = {
2026-10-23T23:34:17.9555750Z 474 โ ...nextModelPreferences,
2026-10-23T23:34:17.9555928Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-23T23:34:17.9556210Z ยท โฐโโ From this spread
2026-10-23T23:34:17.9556410Z 475 โ [change.provider]: { ...preferences, hiddenModels },
2026-10-23T23:34:17.9556510Z โฐโโโโ
2026-10-23T23:34:17.9556856Z help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-23T23:34:17.9557156Z note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-23T23:34:17.9557160Z
2026-10-23T23:34:17.9557642Z โ eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
2026-10-23T23:34:17.9557925Z โญโ[packages/shared/src/serverSettings.test.ts:35:7]
2026-10-23T23:34:17.9558325Z 34 โ const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
2026-10-23T23:34:17.9558512Z 35 โ instanceId === configured ? true : false,
2026-10-23T23:34:17.9558774Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-23T23:34:17.9558879Z 36 โ );
2026-10-23T23:34:17.9558979Z โฐโโโโ
2026-10-23T23:34:17.9559337Z help: Remove this ternary operator
2026-10-23T23:34:17.9559397Z
2026-10-23T23:34:17.9559549Z Found 0 errors and 362 warnings in 5402 files (10.3s, 8 threads)
2026-10-23T23:34:18.0553442Z Post job cleanup.
2026-10-23T23:34:18.1576204Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T23:34:18.1695337Z Post job cleanup.
2026-10-23T23:34:18.1710626Z ##[start-action display=Cache full pnpm store;id=__7c134bdb-fe29-4dbf-9c1c-47b5b34377cb.__actions_cache]
2026-10-23T23:34:18.2167897Z Post job cleanup.
2026-10-23T23:34:18.3080111Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-23T23:34:18.3137333Z ##[end-action id=__7c134bdb-fe29-4dbf-9c1c-47b5b34377cb.__actions_cache;outcome=success;conclusion=success;duration_ms=142]
2026-10-23T23:34:18.3140394Z ##[start-action display=Cache Vite+;id=__7c134bdb-fe29-4dbf-9c1c-47b5b34377cb.vp_cache]
2026-10-23T23:34:18.3174635Z Post job cleanup.
2026-10-23T23:34:18.4102431Z 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-23T23:34:18.4143325Z ##[end-action id=__7c134bdb-fe29-4dbf-9c1c-47b5b34377cb.vp_cache;outcome=success;conclusion=success;duration_ms=100]
2026-10-23T23:34:18.4197091Z Post job cleanup.
2026-10-23T23:34:18.4775607Z [command]/usr/local/bin/git version
2026-10-23T23:34:18.4819613Z git version 2.55.0
2026-10-23T23:34:18.4845305Z Temporarily overriding HOME='/home/runner/_work/_temp/fe62f529-ec85-4043-b9dc-1a8ff2de0ea4' before making global git config changes
2026-10-23T23:34:18.4845908Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T23:34:18.4849971Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T23:34:18.4889316Z Removing SSH command configuration
2026-10-23T23:34:18.4895603Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T23:34:18.4938547Z [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-23T23:34:18.5129773Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T23:34:18.5167974Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T23:34:18.5246676Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T23:34:18.5270308Z ##[group]Run '/job_completed.sh'
2026-10-23T23:34:18.5279859Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T23:34:18.5280075Z env:
2026-10-23T23:34:18.5280256Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 192
2026-10-23T23:34:18.5280524Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 391
2026-10-23T23:34:18.5280824Z BLACKSMITH_CHECK_RUN_ID: 120709611033
2026-10-23T23:34:18.5280990Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-23T23:34:18.5281171Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T23:34:18.5281331Z ##[endgroup]
2026-10-23T23:34:18.5419113Z Docker container cache not activated, skipping hash computation.
2026-10-23T23:34:18.6130113Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T23:34:18.6233738Z Cleaning up orphan processes